Ce projet a été inspiré par r/Place. Il s'agit d'un canevas partagé en ligne sur lequel vous pouvez dessiner des pixels individuels.
Le projet est en ligne sur pl.g7kk.com.
Vous devez compiler place.go à l'aide du compilateur Go.
Exécutez, go build
:
cd ./place
go build cmd/place/place.go
sinon, utilisez go install
:
cd ./place
go install cmd/place/place.go
Exécutez place et définissez l'argument -root sur l'emplacement du répertoire web/root. Vous pouvez également configurer d'autres paramètres lorsque vous l'exécutez (voir ci-dessous).
place -root web/root -port :8080
-chaîne racine
Le répertoire avec les fichiers Web. (par défaut "./root")
-compte entier
Le nombre maximum de connexions. (par défaut 64)
-largeur entier
La largeur pour créer le canevas. (par défaut 1024)
-hauteur entier
La hauteur pour créer la toile. (par défaut 1024)
-charger la chaîne
Un png à charger comme canevas. (S'il n'est pas défini, cela crée une toile vierge)
-enregistrer la chaîne
Le nom pour enregistrer le canevas. (par défaut "./place.png")
-chaîne de journal
Le fichier journal dans lequel écrire. (S'il n'est pas défini, il se connectera à la ligne de commande)
-chaîne de port
Le port sur lequel le serveur écoute. (par défaut ":8080")
-intervalle entier
Enregistrez l'intervalle en secondes. (par défaut 180)
-wl (aucune valeur) Active la liste blanche
-whitelist chaîne Chemin d'accès à la liste blanche. (par défaut "liste blanche.csv")
-loadRecord chaîne Chemin de l'image d'enregistrement à charger. (Crée un enregistrement vide s'il n'est pas défini)
-saveRecord chaîne Chemin dans lequel enregistrer l'image d'enregistrement. (par défaut "enregistrement.png")
Vous pouvez éventuellement ajouter une liste blanche. Lorsque la liste blanche est activée, seuls les utilisateurs disposant d'une clé pourront dessiner sur le canevas. Le serveur conservera également une trace de qui a placé chaque pixel.
Pour utiliser une liste blanche, créez d'abord un document csv. Chaque utilisateur disposera d'une clé personnelle et d'un identifiant qui l'identifiera dans le dossier. La clé doit être une longue chaîne et l'ID doit être un entier compris entre [1,65535].
Je recommande d'utiliser des uuids pour les clés. Par exemple:
2237701c-7558-4424-95e1-beee4f6a406a,1
f9e41cf2-0e5d-43f2-bffd-5e2f1aab0a3b,2
4917ba68-41be-4956-93a7-0563257ff182,3
79df0674-f6d5-4556-baad-992e81f72bb2,65535
Les couleurs des pixels dans l'image d'enregistrement correspondent à l'ID dans la liste blanche.
Lorsque vous activez la liste blanche à l'aide de l'argument -wl, elle recherchera un fichier nommé "whitelist.csv" dans le répertoire de travail. Mais vous pouvez également tracer votre propre chemin :
place -wl -whitelist my_white_list.csv
Vous pouvez également charger une image d'enregistrement existante en utilisant -loadRecord, qui est similaire à -load pour charger le canevas.
place -load place.png -wl -loadRecord record.csv
Si vous n'incluez pas l'argument -wl, la liste blanche et l'enregistrement seront ignorés.
Je recommande de configurer certains scripts pour redémarrer facilement le serveur ou restaurer le canevas.
Ce script tue le serveur et le redémarre avec l'ancien canevas. Cela ne réinitialise pas le canevas.
Sur mon serveur, ce script est configuré comme une tâche cron à exécuter tous les soirs pour supprimer toutes les connexions Websocket persistantes.
cd ~ /go/src/place/web
pkill place
~ /go/bin/place -port :80 -load place.png & > place.log &
Ce script restaure le canevas vers une image précédemment enregistrée.
cd ~ /go/src/place/web
pkill place
cp place_rollback.png place.png
~ /go/bin/place -port :80 -load place.png & > place.log &