Este proyecto se inspiró en r/Place. Es un lienzo compartido en línea donde puedes dibujar píxeles individuales.
El proyecto está en línea en pl.g7kk.com.
Debes compilar place.go usando el compilador Go.
Ejecutar go build
:
cd ./place
go build cmd/place/place.go
alternativamente, use go install
:
cd ./place
go install cmd/place/place.go
Ejecute place y establezca el argumento -root en la ubicación del directorio web/raíz. También puede configurar otras configuraciones cuando lo ejecute (ver más abajo).
place -root web/root -port :8080
-cadena raíz
El directorio con los archivos web. (predeterminado "./root")
-cuenta int
El número máximo de conexiones. (predeterminado 64)
-ancho entero
El ancho para crear el lienzo. (predeterminado 1024)
-altura interna
La altura para crear el lienzo. (predeterminado 1024)
-cargar cadena
Un png para cargar como lienzo. (Si no se configura, se crea un lienzo en blanco)
-guardar cadena
El nombre para guardar el lienzo. (predeterminado "./lugar.png")
-cadena de registro
El archivo de registro en el que escribir. (Si no se configura, se registrará en la línea de comando)
-cadena de puerto
El puerto en el que escucha el servidor. (predeterminado ":8080")
-sinterval int
Guarde el intervalo en segundos. (predeterminado 180)
-wl (sin valor) Habilita la lista blanca
-whitelist cadena Ruta a la lista blanca. (predeterminado "lista blanca.csv")
-loadRecord cadena Ruta de la imagen de registro a cargar. (Crea un registro en blanco si no está configurado)
-saveRecord cadena Ruta donde guardar la imagen del registro. (predeterminado "record.png")
Opcionalmente, puede agregar una lista blanca. Cuando la lista blanca está habilitada, solo los usuarios con una clave podrán dibujar en el lienzo. El servidor también mantendrá un registro de quién colocó cada píxel.
Para utilizar una lista blanca, primero cree un documento csv. Cada usuario dispondrá de una clave personal y un DNI que le identificará en el registro. La clave debe ser una cadena larga y el ID debe ser un número entero en el rango de [1,65535].
Recomiendo usar uuids para las claves. Por ejemplo:
2237701c-7558-4424-95e1-beee4f6a406a,1
f9e41cf2-0e5d-43f2-bffd-5e2f1aab0a3b,2
4917ba68-41be-4956-93a7-0563257ff182,3
79df0674-f6d5-4556-baad-992e81f72bb2,65535
Los colores de los píxeles de la imagen de registro corresponden al ID de la lista blanca.
Cuando habilita la lista blanca usando el argumento -wl, buscará un archivo llamado "whitelist.csv" en el directorio de trabajo. Pero también puedes establecer tu propio camino:
place -wl -whitelist my_white_list.csv
También puedes cargar una imagen de registro existente usando -loadRecord, que es similar a -load para cargar el lienzo.
place -load place.png -wl -loadRecord record.csv
Si no incluye el argumento -wl, se ignorarán la lista blanca y el registro.
Recomiendo configurar algunos scripts para reiniciar fácilmente el servidor o revertir el lienzo.
Este script mata el servidor y lo reinicia con el lienzo antiguo. Esto no restablece el lienzo.
En mi servidor tengo este script configurado como un trabajo cron para ejecutarse todas las noches y eliminar cualquier conexión websocket persistente.
cd ~ /go/src/place/web
pkill place
~ /go/bin/place -port :80 -load place.png & > place.log &
Este script revierte el lienzo a una imagen previamente guardada.
cd ~ /go/src/place/web
pkill place
cp place_rollback.png place.png
~ /go/bin/place -port :80 -load place.png & > place.log &