You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Cléo Rebert 0d2f0e13a7 Merge pull request 'CI' (#18) from CI into master 3 days ago
.vscode Variable shadowing bruh 1 week ago
config Go tests should work, I hope 4 days ago
controller Go tests should work, I hope 4 days ago
model Go tests should work, I hope 4 days ago
static Front WIP 2 1 week ago
templates Fixed doctype 4 days ago
view Correct cookie refresh/suppressing 4 days ago
.drone.yml Small mistake 4 days ago
.gitignore Go tests should work, I hope 4 days ago
README.md Started writing tests 4 days ago
go.mod Added a dependency, removed one 1 week ago
go.sum Added a dependency, removed one 1 week ago
hackeduc_test.go Go tests should work, I hope 4 days ago
main.go Go tests should work, I hope 4 days ago

README.md

Hackeduc

GoDoc Build Status

Contribuer

L'ouverture de tickets en cas de bug est acceptée, mais aux vues de la licence actuelle du projet, nous ne pouvons accepter les demandes de pull request.

Stack serveur

  • go comme langage principal.
  • gorm comme librairie pour gérer l'ORM.
  • logrus comme librairie de gestion de log.
  • gorilla-mux comme librairie de gestion des routes.
  • google-uuid comme librairie de création d'identifiants uniques.
  • hermes comme librairie de templating des emails. ⚠️ Attention à l'importer avec /v2 à la fin de l'url, sinon ça ne compilera pas
  • aws-sdk-go comme librairie pour utiliser l'API d'amazon pour le mailing. C'est le SDK officiel
  • gotp comme librairie de validation pour le 2fa //TODO: L'implémenter moi même, comme je l'ai déjà fait avec totp-rs

N'hésitez pas à demander d'utiliser de nouvelles librairie qui vous faciliteront le travail de contribution. Rappelez vous cependant que nous essayons d'utiliser le moins possible de code en dehors de la librairie standard afin d'avoir le moins de dette technique possible envers telle ou telle librairie. Vous êtes encouragé·e à développer vos propres librairies si vous pensez que c'est pertinent, en respect avec les conventions établies et que la licence utilisée soit compatible avec le projet, où à proposer des librairies dont l'usage répandu.


Déployer

A l'intérieur du sous dossier config/ vous aurez besoin de fichiers de configuration qui contiendront les champs suivants.

config.json

La première partie regroupe les champs obigatoires, la deuxième partie les champs optionnels

{
	// Partie obligatoire
	"database_filename": "test.db",					// Le nom du fichier de base de données à utiliser. Il est recommandé de le changer lors de tests. Il se situera dans le sous dossier database/
	"hostname": "example.com",						// Le nom de domaine du site
	"mailer_config": "amazon_ses_production.json",				// Le nom du fichier de configuration amazon SES. Si vous utilisez différents comptes/IAM-users selon si vous faites des tests ou pas, vous devriez avoir différents fichiers de configuration. Il se situera dans le sous dossier config/
	"mailer": "no-reply@example.com", 				// L'adresse utilisée pour envoyer les mails
	"mailer_notification": "webmaster@example.com",	// L'adresse à laquelle les notifications d'état du serveur seront envoyées
	// Champs non obligatoires. Leur valeur par défaut est considérée comme sûre et ne devraient donc être modifiés que si vous êtes sûr⋅e de ce que vous faites ou que les commentaires suivant indiquent le contraire
	"mail_validation_length": 16,	// Taille d'un token de validation pour confirmer son email
	"password_minimum_length": 8,	// La taille minimum d'un mot de passe
	"totp_backup_length": 8,		// La taille du code de récupération utilisé par TOTP
	"totp_length": 20,				// La taille du secret utilisé par TOTP en octets
	"argon":						// Configuration de l'algorithme de hashage des mots de passe. Chaque sous champ est optionnel
	{
		"argon_time": 3,			// Le nombre d'itération de l'algoritme
		"argon_memory": 524288,		// 512*1024. Équivaut à 512MiB de mémoire. Devrait être modifié pour utiliser le plus de mémoire possible selon la machine
		"argon_threads": 8,			// Nombre de CPU à utiliser. La valeur par défaut est runtime.NumCPU() qui devrait renvoyer le nombre de coeurs logique du processeur. Si vous voulez configurer cette valeur, ou que la valeur par défaut échoue, commencez à 1 et incrémentez là de 1 en 1 jusqu'à obtenir la valeur maximum utilisable avant que le hashage n'échoue
		"argon_key_len": 32,		// La taille de clef à générer.
		"argon_salt_len": 16		// La taille du salage
	}
}

$mailer_config.json

Les champs non utilisés ne sont pas requis.

{
	"aws_region": "eu-west-2",							// Region aws
	"iam_username": "ses-smtp-user.XXXX",				// Actuellement non utilisé
	"iam_key": "XXXXXXXX",								// La clef de votre utilisateur racine/utilisateur IAM (Il est recommandé d'utiliser un utilisateur IAM avec uniquement les permissions nécéssaires pour envoyer des mails)
	"iam_secret": "XXXXXXXX",							// Le secret de votre utilisateur racine/utilisateur IAM
	"smtp_username": "XXXXXXXX",						// Actuellement non utilisé
	"smtp_password": "XXXXXXXX",						// Actuellement non utilisé
	"smtp_host": "email-smtp.eu-west-2.amazonaws.com",	// Actuellement non utilisé
	"smtp_port": "25"									// Actuellement non utilisé
}

License

Ne sachant pour l'instant pas sous quelle forme nous relâcherons la plateforme, elle n'est pour l'instant pas licenciée, et donc à considérer comme ne devant inclure que des librairies compatibles avec un logiciel propriétaire.

A l'heure actuelle (commit d9dd51a323) toutes les dépendances sont sous licence MIT, Apache-2, ou BSD-3, ce qui est compatible avec nos besoins de licenses.

Je vais contacter Ol pour voir s'il est possible de mettre en place un moyen contractuel de léguer les droits à hackeduc, ou 42, ou de passer en logiciel libre et open-source.