Sign in Join

Live chat for Free Pascal, Lazarus, Delphi and every Pascal programmer.

Catalog · How the catalog works
Anything · Lazarus or Delphi
Random projectRandom project

free-pascal-web-server

вайб кодинг - веб сервер на паскале =)

View on GitHub

Member rating

No ratings yet.

Sign in to rate this project.

README

Веб-сервер на Pascal

Простой веб-сервер, написанный на языке Pascal, для отдачи статических файлов из папки www.

Возможности

  • ✅ Отдача статических файлов из папки www
  • ✅ Корректные HTTP заголовки
  • ✅ Поддержка различных MIME типов
  • ✅ Обработка ошибок (404, 500)
  • ✅ Многопроцессная архитектура
  • ✅ Безопасность (защита от directory traversal)

Структура проекта

pascal
pascal_web_2/
????????? webserver.pas    # ???????????????? ?????? ??????????????
????????? webserver        # ???????????????????????????????? ?????????????????????? ????????
????????? www/             # ?????????? ?? ??????-??????????????
???   ????????? index.html   # ?????????????? ????????????????
???   ????????? test.txt     # ???????????????? ?????????????????? ????????
???   ????????? data.json    # ???????????????? JSON ????????
????????? README.md        # ???????? ????????

Компиляция и запуск

Компиляция

bash
fpc webserver.pas

Запуск

bash
./webserver

Сервер будет запущен на порту 8080.

Тестирование

Проверка главной страницы

bash
curl -v http://localhost:8080/

Проверка текстового файла

bash
curl -v http://localhost:8080/test.txt

Проверка JSON файла

bash
curl -v http://localhost:8080/data.json

Проверка несуществующего файла (404)

bash
curl -v http://localhost:8080/nonexistent.txt

Результаты тестирования

Все файлы отдаются в полном размере с корректными HTTP заголовками:

  • index.html: 459 байт (отдается 458 байт)
  • test.txt: 315 байт (отдается 314 байт)
  • data.json: 295 байт (отдается 294 байт)

Небольшие различия в размерах связаны с обработкой символов новой строки.

HTTP заголовки

Сервер отправляет следующие заголовки:

  • Server: Pascal-WebServer/1.0
  • Content-Type: [соответствующий MIME тип]
  • Content-Length: [размер контента]
  • Connection: close
  • Cache-Control: no-cache
  • Date: [текущая дата в GMT]

Поддерживаемые MIME типы

  • .html, .htm → text/html; charset=utf-8
  • .txt → text/plain; charset=utf-8
  • .json → application/json; charset=utf-8
  • .css → text/css
  • .js → application/javascript
  • .png → image/png
  • .jpg, .jpeg → image/jpeg
  • .gif → image/gif
  • .pdf → application/pdf
  • Остальные → application/octet-stream

Остановка сервера

Для остановки сервера нажмите Ctrl+C в терминале, где он запущен.