summaryrefslogtreecommitdiff
path: root/day7/README.md
blob: 8bd962f30e570c2c06109f295a4c16bb178471bd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
# 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 (По умолчанию - выключен).
* `--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-шаблоны.