В этом проекте я помог мистеру Роджерсу восстановить его бизнес по продаже конфет через автоматы после того, как его сервер был украден, а предыдущий разработчик исчез. Я заново создал серверную часть, используя OpenAPI, и обеспечил её безопасность для обработки транзакций клиентов.
-
Генерация сервера по спецификации OpenAPI.
Я использовал OpenAPI для автоматической генерации серверной части. Это позволило быстро создать необходимые эндпоинты для взаимодействия с клиентами и автоматами по продаже конфет, что существенно упростило дальнейшую разработку. -
Настройка и защита сервера
Я настроил сервер для безопасного взаимодействия с клиентами. Были реализованы такие меры защиты, как TLS с проверкой клиентских и серверных сертификатов для безопасной передачи данных. Ключи и сертификаты были сгенерированы с помощью инструментаminica, а сервер настроен на работу через защищённое соединение. -
Интеграция и настройка Cowsay
Для придания проекту немного забавного стиля, я добавилCowsay— утилиту наCв код программы наGo, которая выводит текст в виде «говорящей» ASCII-коровы в ответе в полеthanksпри покупке конфет. Это помогло сделать вывод информации более визуально привлекательным и добавить элемент развлечения в проект. (По заданию ее написал племянник мистера Роджерса)
Благодаря выполненным задачам бизнес мистера Роджерса снова работает, а его серверная часть надёжно защищена и полностью функциональна.
- Доступ в интернет чтобы скачалась утилита
minica,docker-образы Docker- установленный
golang1.22
make -B- Скачается
minica, прокинутся сертификаты клиенту и серверу - Соберет в контейнер серверную часть, доступную на порте
3333 - Соберется в бинарник по пути
./bin/clientклиент
- Используя клиент
./bin/client -k AA -c 1 -m 50
| флаг | значение |
|---|---|
| -k | тип конфет (CE, AA, NT, DE, YR) |
| -c | количество конфет (целое значение больше нуля) |
| -m | количество передаваемых денег(целое значение больше нуля) |
- Используя cURL
Если у вас есть доступ к изменению файла/etc/hosts/то, используйте эту команду перед вызовомcURL
echo "127.0.0.1 candy.ltd" | sudo tee -a /etc/hostsтогда вы сможете использовать cURL для отправки запроса
curl -s --key certs/candy.ltd/key.pem --cert certs/candy.ltd/cert.pem --cacert certs/minica.pem \
-POST -H "Content-Type: application/json" -d '{"candyType": "NT", "candyCount": 2, "money": 34}' \
"https://candy.tld:3333/buy_candy"P.S
Не забудьте потом удалить маппинг 127.0.0.1 candy.ltd из /etc/hosts
Команды для генерации сервера
docker pull openapitools/openapi-generator-cli
docker run --rm -v ${PWD}:/local openapitools/openapi-generator-cli generate \
-i /local/scheme.yaml \
-g go-server \
-o /local/generated-go-server