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 398c6c11e5 Merge pull request 'Sprint 3' (#23) from react into master 6 days ago
.vscode Fixed debug config 1 month ago
config Go tests should work, I hope 2 months ago
controller Please the gosec deities 2 weeks ago
model Added pubsub 3 weeks ago
static Last front fixes 1 month ago
view Lower complexity 2 weeks ago
.drone.yml I'm too poor for good servers 2 months ago
.gitignore Fixed notifications and added documentation 2 weeks ago
.golangci.yml Added more warnings to linter + all my homies use 4 spaces 2 weeks ago
README.md Added notifications 3 weeks ago
go.mod Added websocket and watermill, removed uuid 3 weeks ago
go.sum Added websocket and watermill, removed uuid 3 weeks ago
hackeduc_test.go Unique authentification form 3 weeks ago
main.go Finalized feedback 2 weeks 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 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.