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 096153a3d1 Merge pull request 'SPRINT 5' (#24) from react into master 6 days ago
.vscode Fixed debug config 3 months ago
config Go tests should work, I hope 4 months ago
controller Continued matchmaking 6 days ago
front@05b416d4d0 bumped up front version 1 week ago
model Continued matchmaking 6 days ago
static/pdf Removed static 3 weeks ago
view Merge branch 'react' of ssh://git.42l.fr:42084/Monique/hackeduc into react 1 week ago
.drone.yml Updated drone 3 weeks ago
.gitignore Switched to submodule 3 weeks ago
.gitmodules Switched to submodule 3 weeks ago
.golangci.yml Added more warnings to linter + all my homies use 4 spaces 2 months ago
README.md Added notifications 2 months ago
go.mod Added websocket and watermill, removed uuid 2 months ago
go.sum Added websocket and watermill, removed uuid 2 months ago
hackeduc_test.go fixed tests 1 week ago
main.go Fixed CORS 1 week 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.
  • gorilla-websocket comme librairie d'utilisation de websockets.
  • watermill comme librairie de gestion de modèle pub/sub.
  • 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  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.