Initial commit

This commit is contained in:
ynn
2019-02-04 01:28:32 +01:00
commit 7c939d37af
7 changed files with 428 additions and 0 deletions

234
.gitignore vendored Normal file
View File

@@ -0,0 +1,234 @@
# Created by https://www.gitignore.io/api/osx,java,linux,maven,eclipse,intellij
# Edit at https://www.gitignore.io/?templates=osx,java,linux,maven,eclipse,intellij
### Eclipse ###
.metadata
bin/
tmp/
*.tmp
*.bak
*.swp
*~.nib
local.properties
.settings/
.loadpath
.recommenders
# External tool builders
.externalToolBuilders/
# Locally stored "Eclipse launch configurations"
*.launch
# PyDev specific (Python IDE for Eclipse)
*.pydevproject
# CDT-specific (C/C++ Development Tooling)
.cproject
# CDT- autotools
.autotools
# Java annotation processor (APT)
.factorypath
# PDT-specific (PHP Development Tools)
.buildpath
# sbteclipse plugin
.target
# Tern plugin
.tern-project
# TeXlipse plugin
.texlipse
# STS (Spring Tool Suite)
.springBeans
# Code Recommenders
.recommenders/
# Annotation Processing
.apt_generated/
# Scala IDE specific (Scala & Java development for Eclipse)
.cache-main
.scala_dependencies
.worksheet
### Eclipse Patch ###
# Eclipse Core
.project
# JDT-specific (Eclipse Java Development Tools)
.classpath
# Annotation Processing
.apt_generated
.sts4-cache/
### Intellij ###
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and WebStorm
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
# User-specific stuff
.idea/**/workspace.xml
.idea/**/tasks.xml
.idea/**/usage.statistics.xml
.idea/**/dictionaries
.idea/**/shelf
# Generated files
.idea/**/contentModel.xml
# Sensitive or high-churn files
.idea/**/dataSources/
.idea/**/dataSources.ids
.idea/**/dataSources.local.xml
.idea/**/sqlDataSources.xml
.idea/**/dynamic.xml
.idea/**/uiDesigner.xml
.idea/**/dbnavigator.xml
# Gradle
.idea/**/gradle.xml
.idea/**/libraries
# Gradle and Maven with auto-import
# When using Gradle or Maven with auto-import, you should exclude module files,
# since they will be recreated, and may cause churn. Uncomment if using
# auto-import.
# .idea/modules.xml
# .idea/*.iml
# .idea/modules
# CMake
cmake-build-*/
# Mongo Explorer plugin
.idea/**/mongoSettings.xml
# File-based project format
*.iws
# IntelliJ
out/
# mpeltonen/sbt-idea plugin
.idea_modules/
# JIRA plugin
atlassian-ide-plugin.xml
# Cursive Clojure plugin
.idea/replstate.xml
# Crashlytics plugin (for Android Studio and IntelliJ)
com_crashlytics_export_strings.xml
crashlytics.properties
crashlytics-build.properties
fabric.properties
# Editor-based Rest Client
.idea/httpRequests
# Android studio 3.1+ serialized cache file
.idea/caches/build_file_checksums.ser
### Intellij Patch ###
# Comment Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-215987721
# *.iml
# modules.xml
# .idea/misc.xml
# *.ipr
# Sonarlint plugin
.idea/sonarlint
### Java ###
# Compiled class file
*.class
# Log file
*.log
# BlueJ files
*.ctxt
# Mobile Tools for Java (J2ME)
.mtj.tmp/
# Package Files #
*.jar
*.war
*.nar
*.ear
*.zip
*.tar.gz
*.rar
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
hs_err_pid*
### Linux ###
*~
# temporary files which can be created if a process still has a handle open of a deleted file
.fuse_hidden*
# KDE directory preferences
.directory
# Linux trash folder which might appear on any partition or disk
.Trash-*
# .nfs files are created when an open file is removed but is still being accessed
.nfs*
### Maven ###
target/
pom.xml.tag
pom.xml.releaseBackup
pom.xml.versionsBackup
pom.xml.next
release.properties
dependency-reduced-pom.xml
buildNumber.properties
.mvn/timing.properties
.mvn/wrapper/maven-wrapper.jar
### OSX ###
# General
.DS_Store
.AppleDouble
.LSOverride
# Icon must end with two \r
Icon
# Thumbnails
._*
# Files that might appear in the root of a volume
.DocumentRevisions-V100
.fseventsd
.Spotlight-V100
.TemporaryItems
.Trashes
.VolumeIcon.icns
.com.apple.timemachine.donotpresent
# Directories potentially created on remote AFP share
.AppleDB
.AppleDesktop
Network Trash Folder
Temporary Items
.apdisk
# End of https://www.gitignore.io/api/osx,java,linux,maven,eclipse,intellij

74
README.md Normal file
View File

@@ -0,0 +1,74 @@
# Squelette du TP
## Utilisation
Pour utiliser ce tp vous devez :
1. le forker via le lien fork ci-dessus.
2. Votre repository doit être **privé**. Vous devez le partager avec votre encadrant de TP.
3. vous obtiendrez un nouveau lien : par exemple git@gitlab.istic.univ-rennes1.fr:monpseudo/....
4. Dans le **workspace d'eclipse** faites `git clone git@gitlab.istic.univ-rennes1.fr:monpseudo/...` avec l'url précédente.
5. Ouvrez le workspace dans eclipse.
6. Utilisez Import> "Existing Maven Projects".
7. Selectionnez le projet et validez.
Vous devriez avoir une version du projet dans votre propre compte gitlab.
Vous pouvez le partager avec votre binome et l'encadrant de TP.
## Rapport
Votre rapport doit être écrit ici en markdown.
Vous trouverez la syntaxe de markdown ici : https://docs.gitlab.com/ee/user/markdown.html
Placez vos images dans le répertoire images si nécessaire.
## Faire des diagrammes
En particulier vous pouvez utiliser [mermaid](https://mermaidjs.github.io/) :
```mermaid
sequenceDiagram
participant Alice
participant Bob
Alice->John: Hello John, how are you?
loop Healthcheck
John->John: Fight against hypochondria
end
Note right of John: Rational thoughts <br/>prevail...
John-->Alice: Great!
John->Bob: How about you?
Bob-->John: Jolly good!
```
## Insérer du code
Insérer du `code` :
```java
public interface ClientHandler {
public void handle();
}
```
et des résultats :
```bash
[yo@capybara dkgr]$ nc google.fr 80
PWET /
HTTP/1.0 400 Bad Request
Content-Type: text/html; charset=UTF-8
Referrer-Policy: no-referrer
Content-Length: 1555
Date: Mon, 21 Jan 2019 12:18:02 GMT
<!DOCTYPE html>
<html lang=en>
<meta charset=utf-8>
```

24
pom.xml Normal file
View File

@@ -0,0 +1,24 @@
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>fr.istic.pr</groupId>
<artifactId>pr.tp3.nio</artifactId>
<version>0.0.1-SNAPSHOT</version>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.6.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
</project>

View File

@@ -0,0 +1,26 @@
package fr.istic.chiffrement;
public class Client {
private static char[] PASSWORD = "654321".toCharArray();
public static void main(String[] args) throws Exception {
// Création d'un SSLContext comme pour le serveur
// avec les caractéristiques suivantes :
// + protocole utilisé : TLS
// + format de clef PKCS12
// + mot de passe store et clef : variable PASSWORD plus haut (ou null)
// + keystore : clientstore.keys
// ...
// ks.load(new FileInputStream("clientstore.keys"), null);
// ..
// Creation des printwriter et buffered reader puis :
// out.write("PING");
// out.flush();
// System.out.println(in.readLine());
}
}

View File

@@ -0,0 +1,45 @@
package fr.istic.chiffrement;
import java.net.ServerSocket;
public class Serveur {
static int PORT = 9999;
// NE FAITES PAS CA EN PROD :
private static char[] PASSWORD = "123456".toCharArray();
public static void main(String[] args) throws Exception {
long time = System.currentTimeMillis();
// Choisir l'un ou l'autre en fonction de la question :
ServerSocket server = creerSocketTLS(); // creerSocketClassique();
System.out.printf("temps écoulé : %d ms %n", System.currentTimeMillis() - time);
readPingSendPong(server);
}
public static ServerSocket creerSocketClassique() throws Exception {
// TODO : retourner une socket classique qui écoute sur le port 9999
return null;
}
/**
* Créer une ServerSocket TLS qui écoute sur le port 9999
*
* @return une socket classique
* @throws Exception
*/
public static ServerSocket creerSocketTLS() throws Exception {
// Créer une ServerSocket TLS qui écoute sur le port 9999, avec les
// caractéristiques suivantes :
// + protocole utilisé : TLS
// + format de clef PKCS12
// + mot de passe store et clef : variable PASSWORD plus haut.
// + keystore, serveurstore.keys
return null; // Retourner la socket correctement configurée
}
public static void readPingSendPong(ServerSocket server) throws Exception {
// accepter une connexion
// lire PING
// écrire PONG vers le client
}
}

View File

@@ -0,0 +1,17 @@
package fr.istic.chiffrement;
public class TestSite {
public static void main(String[] args) {
}
public static void connecteEtAffiche(String host, int port) {
// Creation de la socket
// Choix de la cipher suite si nécessaire (sinon laisser defaut).
// Connexion
// Affichage des infos demandées :
}
}

View File

@@ -0,0 +1,8 @@
package fr.istic.nio;
public class PingPong {
public static void main(String[] args) {
}
}