Позволяет с помощью CGI и apache2 выполнять такие действия, как:
- Получение параметров GET и POST запроса - httpPost(), httpGet()
- Получение и установка Cookie - getCookie(), setCookie()
- Отправка предварительно созданного файла в браузер (Дополнительно) - httpSendFile()
Предназначен для работы с NoSQL key=value базой данных
Хранение БД производится в файле, внутри программы - это std::set
Реализованные функции:
- Добавление записи - write()
- Удаление записи - erase()
- Просмотр списка записей - read_all()
- Просмотр одной записи - read_one()
- Разработать библиотеку, способную принимать данные методами GET/POST и работать с HTTP-Cookie.
- Написать CGI-программу, использующую разработанную библиотеку и реализующую работу с базой данных со следующими CGI-сценариями:
Добавление записи, удаление, просмотр списка, просмотр одной записи. Сохранить предыдущие введённые данные в форме добавления записи в Cookie.
- Записи в базе данных хранятся построчно в файле, а отдельные поля записи разделены символами-разделителями.
- Ограничения: Использование только стандартных библиотек. Использовать Boost и др. библиотеки не допускается. Можно: STL и C++17.
Написать метод rawURLDecode(), который декодирует строку в формате application/x-www-form-urlencoded в нормальное представление;
Вызывать данный метод для всех данных, для которых необходимо преобразование;
Пояснение: строка %D0%9F%D1%80%D0%B8%D0%B2%D0%B5%D1%82%2C%20%D0%BC%D0%B8%D1%80%21
Обозначает фразу «Привет, мир!»
Кириллица занимает 2 байта, символы «,», пробел, и «!» по 1-му байту.
В Класс HTTP добавлен метод rawURLDecode:
а так же некоторые служебные методы.
Дополнить библиотеку HTTP.h следующими методами:
std::string getHeader(std::string name);
// возвращает значение HTTP-заголовка “name”
std::string rawURLDecode(std::string name);// декодирует строку из 16-ричного представления в plain-text
UploadedFile getFile(std::string name);
// возвращает свойства файла “name”
int move_uploaded_file(UploadedFile tmpFile, std::string path);
// загружает файл “tmpFile” в директорию “path”- Написать скрипт, позволяющий загружать несколько файлов в отдельную директорию на сервере. Выбрать MIME-тип содержимого и максимальный размер.
- Создать скрипт для вывода файлов на экран с возможностью удаления любого файла.
- Предусмотреть защиту от взлома.
Изменения:
-
Определение типа в POST запросе и обработка
- Ключ сессии, сохраняемый в Cookie, именуется уникальным идентификатором через uuid().
- Значения сессии хранятся внутри сервера в NoSQL базе данных. В качестве таковой предлагается Redis
- Значения сериализуются с ключом сессии
Изменения:
Разработать сервер, который будет обрабатывать данные по протоколу HTTP.
Изменения:
- git clone
- Использовать команды описанные для каждой системы здесь
Требется установленный docker