Vérification du nombre de fichiers présents pour un utilisateur avant de lui permettre d'ajouter un fichier

This commit is contained in:
Maximilien LEDOUX 2022-03-12 18:04:14 +01:00
parent ea401d0631
commit 4b8367e641
6 changed files with 67 additions and 58 deletions

View File

@ -103,6 +103,7 @@ public class Context {
/** /**
* Clé AES de l'utilisateur * Clé AES de l'utilisateur
*
* @return Clé AES de l'utilisateur * @return Clé AES de l'utilisateur
*/ */
public String getAesKey() { public String getAesKey() {
@ -118,6 +119,7 @@ public class Context {
/** /**
* Permet d'ajouter des données pour la requête courrante * Permet d'ajouter des données pour la requête courrante
*
* @param key La clé permettant de retrouver la valeur * @param key La clé permettant de retrouver la valeur
* @param value La valeur associée à la clé * @param value La valeur associée à la clé
*/ */
@ -127,6 +129,7 @@ public class Context {
/** /**
* Permet d'ajouter des données pour la requête courrante * Permet d'ajouter des données pour la requête courrante
*
* @param key La clé permettant de retrouver la valeur * @param key La clé permettant de retrouver la valeur
* @param value La valeur associée à la clé * @param value La valeur associée à la clé
*/ */
@ -136,6 +139,7 @@ public class Context {
/** /**
* Permet de récupérer des données pour la requête courrante * Permet de récupérer des données pour la requête courrante
*
* @param key La clé permettant de retrouver la valeur * @param key La clé permettant de retrouver la valeur
* @return La valeur associée à la clé ou null * @return La valeur associée à la clé ou null
*/ */
@ -145,6 +149,7 @@ public class Context {
/** /**
* Permet de récupérer des données pour la requête courrante * Permet de récupérer des données pour la requête courrante
*
* @param key La clé permettant de retrouver la valeur * @param key La clé permettant de retrouver la valeur
* @return La valeur associée à la clé * @return La valeur associée à la clé
*/ */
@ -154,6 +159,7 @@ public class Context {
/** /**
* Permet d'ajouter un fichier à l'utilisateur * Permet d'ajouter un fichier à l'utilisateur
*
* @param fileName Nom du fichier hashé * @param fileName Nom du fichier hashé
* @param fileNameSalt Salt appliqué sur le nom du fichier * @param fileNameSalt Salt appliqué sur le nom du fichier
* @param size Taille du fichier * @param size Taille du fichier
@ -165,6 +171,10 @@ public class Context {
return this.repository.addFileFor(new File(fileName, fileNameSalt, size, iv, Set.of(domain)), getLogin()); return this.repository.addFileFor(new File(fileName, fileNameSalt, size, iv, Set.of(domain)), getLogin());
} }
public boolean canAddFile() {
return repository.canAddFile(login);
}
public String getDomain() { public String getDomain() {
return this.domain; return this.domain;
} }

View File

@ -54,6 +54,7 @@ public class SavefileRule extends ProtocolReader {
super.read(reader); super.read(reader);
System.out.printf("Sauvegarde du fichier : %s %d\n", filename, size); System.out.printf("Sauvegarde du fichier : %s %d\n", filename, size);
if (getContext().canAddFile()) {
try { try {
FileReceiver fileReceiver = new FileReceiver(storagePath); FileReceiver fileReceiver = new FileReceiver(storagePath);
@ -82,11 +83,15 @@ public class SavefileRule extends ProtocolReader {
this.setResultCommand(protocolRep.executeWriter(getContext(), SaveFileErrorRule.NAME), ResultCmdReceiver.CLIENT); this.setResultCommand(protocolRep.executeWriter(getContext(), SaveFileErrorRule.NAME), ResultCmdReceiver.CLIENT);
e.printStackTrace(); e.printStackTrace();
} }
} else {
this.setResultCommand(protocolRep.executeWriter(getContext(), SaveFileErrorRule.NAME), ResultCmdReceiver.CLIENT);
}
} }
} }
/** /**
* Cette méthode est appelée lors de l'exécution de la règle * Cette méthode est appelée lors de l'exécution de la règle
*
* @param data Paramètres pour créer la commande. * @param data Paramètres pour créer la commande.
*/ */
@Override @Override

View File

@ -83,6 +83,13 @@ public class AppData {
} }
} }
public boolean canAddFile(String login) {
if (this.users.containsKey(login)) {
return this.users.get(login).canAddFile();
}
return false;
}
public Iterator<User> usersIterator() { public Iterator<User> usersIterator() {
return users.values().iterator(); return users.values().iterator();
} }
@ -104,8 +111,7 @@ public class AppData {
if (!this.users.containsKey(userName)) { if (!this.users.containsKey(userName)) {
return false; return false;
} else { } else {
this.users.get(userName).addFile(file); return this.users.get(userName).addFile(file);
return true;
} }
} }
@ -155,6 +161,7 @@ public class AppData {
/** /**
* Méthode permettant de récupérer la clé AES d'un utilisateur * Méthode permettant de récupérer la clé AES d'un utilisateur
*
* @param login Login de l'utilisateur * @param login Login de l'utilisateur
* @return Clé AES * @return Clé AES
*/ */

View File

@ -55,6 +55,10 @@ public class Repository {
return false; return false;
} }
public boolean canAddFile(String login) {
return appData.canAddFile(login);
}
public boolean deleteFileOf(String fileName, String userName) { public boolean deleteFileOf(String fileName, String userName) {
if (appData.deleteFileOf(fileName, userName)) { if (appData.deleteFileOf(fileName, userName)) {
save(); save();
@ -117,6 +121,7 @@ public class Repository {
/** /**
* Méthode permettant de récupérer le chemin de sauvegarde des fichiers * Méthode permettant de récupérer le chemin de sauvegarde des fichiers
*
* @return Chemin de sauvegarde * @return Chemin de sauvegarde
*/ */
public String getStoragePath() { public String getStoragePath() {
@ -125,6 +130,7 @@ public class Repository {
/** /**
* Méthode permettant de récupérer la clé AES d'un utilisateur * Méthode permettant de récupérer la clé AES d'un utilisateur
*
* @param login Login de l'utilisateur * @param login Login de l'utilisateur
* @return Clé AES * @return Clé AES
*/ */
@ -133,5 +139,4 @@ public class Repository {
} }
} }

View File

@ -54,8 +54,16 @@ public class User {
* @param file The file to add. * @param file The file to add.
* @return False if a file with the same name already exists. Otherwise, adds the file and returns true. * @return False if a file with the same name already exists. Otherwise, adds the file and returns true.
*/ */
public void addFile(File file) { public boolean addFile(File file) {
if (canAddFile()) {
this.files.put(file.getName(), file); this.files.put(file.getName(), file);
return true;
}
return false;
}
public boolean canAddFile() {
return this.files.size() < 50;
} }
/** /**

View File

@ -1,27 +1 @@
{ {"unicast_port":8000,"multicast_ip":"226.66.66.1","multicast_port":15502,"network_interface":"My network interface","tls":true,"storagePath":"C:\\Users\\ledou\\Documents\\ffe","users":[{"name":"aaaaa","password":"5d628c274ebb008324f1e199d3bfff0a3fe839730a7f2355e82850d7acca5e5ca64db9071abf3d91034295695f84a617","aes_key":"qlTH6TijnfMRnrS0Qf+k6IPKGp5LoRMXGxCq16e+mF4=","passwordSalt":"Ns8Al6DpqPsIDlCSRBVTEg==","files":[{"name":"79ba59efe08f50e762b875c2f1c1f36d2bd13ba888c4b8cf548c63f69e742e709405d7cd0f2390090955f5a7c5d61c34","fileNameSalt":"l5Adt2RnYQqHXnDWUdUV7Q==","size":168,"iv":"bEXi5SyhMSkBjYVUU6qAag==","storage":["lightcontainerSB01"]}]}]}
"unicast_port": 8000,
"multicast_ip": "226.66.66.1",
"multicast_port": 15502,
"network_interface": "My network interface",
"tls": true,
"storagePath": "/home/benjamin/ffe",
"users": [
{
"name": "aaaaa",
"password": "5d628c274ebb008324f1e199d3bfff0a3fe839730a7f2355e82850d7acca5e5ca64db9071abf3d91034295695f84a617",
"aes_key": "qlTH6TijnfMRnrS0Qf+k6IPKGp5LoRMXGxCq16e+mF4=",
"passwordSalt": "Ns8Al6DpqPsIDlCSRBVTEg==",
"files": [
{
"name": "ebf1d834055adf836823c46d36334edf24f40245948cff0173f999392d8429536ccd57bf82090807a6b9cb4317b1bf64",
"fileNameSalt": "zXjO49TAftzugcnyaw3myQ==",
"size": 854,
"iv": "2DLTOZ4SX9MhTd6JdqFkuw==",
"storage": [
"lightcontainerSB01"
]
}
]
}
]
}