# BrandNewServer ## Что это? Brand-new HTTP сервер для созданный для того, чтобы похвастаться перед одноклассниками. Да, я могу сделать кривой HTTP сервер! ## Как использовать? Есть два способа создать обработчик пути: 1. * Написать функцию. * Создать объект Route, который будет вызывать эту функцию по заданному пути. * Добавить этот объект в список _router_table (Находится в модуле router.py). 2. * Написать функцию. * Добавить к ней декоратор @route. Изнутри оба этих метода делают абсолютно одно и то же: второй способ сам создает объект Route и добавляет его в _router_table. Первый способ рекомендуется для увеличения читабельности кода и централизации настроек роутера. Второй способ подойдет для небольших проектов на 2-3 обработчика. Свои функции можно писать в любом файле (В модулях самого сервера всё-таки не рекомендуется, но никто не запрещает). В данном случае все обработчики находятся в модуле `backend.py` и использован первый способ задания путей (Они прописаны прямо в _router_table). ## Как запустить? Для запуска сервера введите в консоли `python3 main.py` Аргументы командной строки: * `--chunk-size %SIZE%`: Количество байт, которое сервер считывает из сокета за один раз (По умолчанию - 1024). * `--bg-color %COLOR%`: Устанавливает цвет фона страниц на сайте (По умолчанию - белый). * `--short-log`: Включает режим короткого лога (По умолчанию - выключен). * `--show-errors`: Включает режим показа всех ошибок (По умолчанию - выключен). * `--log %PATH%`: Путь до файла с логом (По умолчанию - logs/log.log). * `--cookies-db %PATH%`: Путь до файла хранения приходящих cookies (По умолчанию - db/cookies.db). * `--host %HOST%`: Адрес, на котором запустится сервер (По умолчанию - 0.0.0.0). * `--port %PORT%`: Порт, на котором запустится сервер (По умолчанию - 8888). В файле `config.py` записаны некоторые настройки, которые неудобно задавать через командную строку. Также тут можно хранить пользовательские переменные. * `TEXT_TEMPLATE_NAME`: (*Пользовательская переменная*) Название шаблона с обычной текстовой страницей. * `FORM_TEMPLATE_NAME`: (*Пользовательская переменная*) Название шаблона с формой страницей. * `CONFIG_DB_PATH`: Путь до файла с конфигурацией сервера. Перед запуском сервера необходимо предварительно создать следующие директории: * `db`: По умолчанию в этой директории создадутся базы данных сервера. * `logs`: По умолчанию в эту директорию будет записываться лог сервера. * `templates`: Для использования шаблонизатора сервер **должен** содержать в рабочей директории папку templates в которой будут находиться все html-шаблоны.