Этот проект был вдохновлен r/Place. Это общий онлайн-холст, на котором вы можете рисовать отдельные пиксели.
Проект доступен на сайте pl.g7kk.com.
Вам необходимо скомпилировать Place.go с помощью компилятора Go.
Запустите go build
:
cd ./place
go build cmd/place/place.go
в качестве альтернативы используйте go install
:
cd ./place
go install cmd/place/place.go
Запустите Place и задайте для аргумента -root местоположение веб-/корневого каталога. Вы также можете настроить другие параметры при запуске (см. ниже).
place -root web/root -port :8080
-корневая строка
Каталог с веб-файлами. (по умолчанию "./root")
-считать целое число
Максимальное количество подключений. (по умолчанию 64)
-ширина интервал
Ширина для создания холста. (по умолчанию 1024)
-высота целое
Высота для создания холста. (по умолчанию 1024)
-загрузить строку
PNG для загрузки в качестве холста. (Если не установлено, создается пустой холст)
-сохранить строку
Имя для сохранения холста. (по умолчанию "./place.png")
-строка журнала
Файл журнала, в который осуществляется запись. (Если не установлено, он будет записываться в командную строку)
-строка порта
Порт, который прослушивает сервер. (по умолчанию «:8080»)
-синтервал целое
Сохранить интервал в секундах. (по умолчанию 180)
-wl (нет значения) Включает белый список
-whitelist строка Путь к белому списку. (по умолчанию «whitelist.csv»)
-loadRecord string Путь к загружаемому изображению записи. (Создает пустую запись, если не установлено)
-saveRecord string Путь для сохранения изображения записи. (по умолчанию «запись.png»)
При желании вы можете добавить белый список. Если белый список включен, только пользователи с ключом смогут рисовать на холсте. Сервер также будет хранить запись о том, кто разместил каждый пиксель.
Чтобы использовать белый список, сначала создайте документ csv. У каждого пользователя будет личный ключ и идентификатор, который будет идентифицировать его в записи. Ключ должен представлять собой длинную строку, а идентификатор — целое число в диапазоне [1,65535].
Я рекомендую использовать uuids для ключей. Например:
2237701c-7558-4424-95e1-beee4f6a406a,1
f9e41cf2-0e5d-43f2-bffd-5e2f1aab0a3b,2
4917ba68-41be-4956-93a7-0563257ff182,3
79df0674-f6d5-4556-baad-992e81f72bb2,65535
Цвета пикселей в изображении записи соответствуют идентификатору в белом списке.
Когда вы включаете белый список с помощью аргумента -wl, он будет искать файл с именем «whitelist.csv» в рабочем каталоге. Но вы также можете установить свой собственный путь:
place -wl -whitelist my_white_list.csv
Вы также можете загрузить существующее изображение записи, используя -loadRecord, который аналогичен -load для загрузки холста.
place -load place.png -wl -loadRecord record.csv
Если вы не укажете аргумент -wl, белый список и запись будут игнорироваться.
Я рекомендую настроить несколько скриптов, чтобы легко перезапустить сервер или откатить холст.
Этот скрипт убивает сервер и перезапускает его со старым холстом. Это не сбрасывает холст.
На моем сервере этот сценарий настроен как задание cron, которое будет запускаться каждую ночь для удаления любых устаревших соединений с веб-сокетами.
cd ~ /go/src/place/web
pkill place
~ /go/bin/place -port :80 -load place.png & > place.log &
Этот скрипт откатывает холст к ранее сохраненному изображению.
cd ~ /go/src/place/web
pkill place
cp place_rollback.png place.png
~ /go/bin/place -port :80 -load place.png & > place.log &