mirror of
https://github.com/3lswear/webserv.git
synced 2025-10-28 04:48:00 +03:00
fix: alg config valid
This commit is contained in:
164
second/index.html
Normal file
164
second/index.html
Normal file
@@ -0,0 +1,164 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="ru">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<title>Название сайта</title>
|
||||
</head>
|
||||
<body>
|
||||
<!--Создаём таблицу контейнер, которой задаём следующее
|
||||
оформление:
|
||||
border="1" - рамка вокруг контейнера. Увеличив число, можно увеличить толщину рамки.
|
||||
align="center" - размещаем контейнер по центру экрана.
|
||||
rules="rows" - убираем двойную рамку.
|
||||
style="width:60%;" - добавляем стилевое свойства, делающее
|
||||
контейнер и весь сайт "резиновым".
|
||||
Сделать полноценный адаптивный дизайн, этим способом невозможно.-->
|
||||
<table
|
||||
border="1"
|
||||
align="center"
|
||||
rules="rows"
|
||||
style="width:60%;">
|
||||
<!--Создаём строку-->
|
||||
<tr>
|
||||
<!--Создаём ячейку строки-->
|
||||
<td>
|
||||
|
||||
<!--ШАПКА САЙТА-->
|
||||
|
||||
<!--В ячейке строки создаём ещё одну таблицу для шапки сайта.
|
||||
Оформление:
|
||||
border="1" - двойная рамка толщиной в 1px
|
||||
background="images/168.png" - картинка в шапке сайта, если требуется.
|
||||
Адрес картинки вы должны вставить свой.
|
||||
bgcolor="#7FFFD4" - фоновый цвет в шапке, если нет картинки.
|
||||
cellpadding="10" - отступ содержимого от рамки не менее 10px.
|
||||
style="width:100%; border-radius:5px;" - добавляем "резиновость"
|
||||
и закругляем уголки рамки-->
|
||||
<table
|
||||
border="1"
|
||||
background="images/168.png"
|
||||
bgcolor="#7FFFD4"
|
||||
cellpadding="10"
|
||||
style="width:100%; border-radius:5px;">
|
||||
<!--Создаём строку таблицы-->
|
||||
<tr>
|
||||
<!--Создаём столбец таблицы-->
|
||||
<th>
|
||||
<!--Содержание ячейки столбца-->
|
||||
<h1>Название сайта (организации)</h1>
|
||||
<h3>Описание сайта</h3>
|
||||
<!--Закрываем таблицу-->
|
||||
</th>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<!--ОСНОВНОЙ КОНТЕНТ-->
|
||||
|
||||
<!--В этой же ячейке контейнера создаём ещё одну таблицу
|
||||
для основного контента.
|
||||
Оформление как и в предыдущей таблице-->
|
||||
|
||||
<table
|
||||
border="1"
|
||||
bgcolor="#e6e6fa"
|
||||
cellpadding="10"
|
||||
style="width:100%; border-radius:5px;">
|
||||
<!--Создаём строку-->
|
||||
<tr>
|
||||
<!--Создаём ячейку
|
||||
Оформление:
|
||||
rowspan="2" - объединяем две ячейки в одну.
|
||||
Число объединяемых ячеек по числу ячеек в сайдбаре.
|
||||
style="width:80%" - основной контент занимает 80% всей площади,
|
||||
оставшиеся 20% для сайдбара-->
|
||||
<td
|
||||
rowspan="2"
|
||||
style="width:80%">
|
||||
<h2>Страница</h2>
|
||||
<!--Начинаем абзац с красной строки-->
|
||||
<p style="text-indent:20px">
|
||||
Здравствуйте уважаемые будущие веб-мастера!
|
||||
Мне 55 лет и я рад приветствовать Вас на своём сайте.
|
||||
Этот сайт первый, который я разработал самостоятельно,
|
||||
а до этого умел только входить в интернет.</p>
|
||||
|
||||
<p style="text-indent:20px">Почему я решил его сделать?
|
||||
За те 3 месяца, пока разбирался в
|
||||
сайтостроении и создавал этот ресурс обнаружилось,
|
||||
что авторы руководств по созданию
|
||||
сайтов считают многие нюансы само собой разумеющимися
|
||||
и не обращают на них внимание
|
||||
А мне, учитывая возраст и «опыт», было не просто
|
||||
понять как раз эти нюансы, они отнимали больше всего
|
||||
времени.</p>
|
||||
<!--Закрываем ячейку-->
|
||||
</td>
|
||||
|
||||
<!--САЙДБАР-->
|
||||
|
||||
<!--Создаём ячейку сайдбара-->
|
||||
<td bgcolor="#e6e6fa">
|
||||
<h3>Меню</h3>
|
||||
<!--Абзац для ссылки на страницу сайта-->
|
||||
<p>
|
||||
<!--Ссылка на страницу сайта-->
|
||||
<a href="">
|
||||
<!--Картинка маркера перед названием страницы-->
|
||||
<img src="http://trueimages.ru/img/00/06/f4fffdb5.png">
|
||||
<!--Название страницы
|
||||
style="margin-left:5px;" - отступ названия от маркера-->
|
||||
<span style="margin-left:5px;">Страница</span></a>
|
||||
<!--Закрываем абзац-->
|
||||
</p>
|
||||
<p>
|
||||
<a href="">
|
||||
<img src="http://trueimages.ru/img/31/ab/4dcb087c2ae4305edcd15171696.jpg">
|
||||
<span style="margin-left:5px;">Страница 1</span;></a>
|
||||
</p>
|
||||
<p>
|
||||
<a href="">
|
||||
<img src="http://trueimages.ru/img/31/ab/4dcb087c2ae4305edcd15171696.jpg">
|
||||
<span style="margin-left:5px;">Страница 2</span></a>
|
||||
</p>
|
||||
<!--Закрываем строку Меню-->
|
||||
</td>
|
||||
</tr>
|
||||
<!--Создаём строку с дополнительной информацией-->
|
||||
<tr>
|
||||
<!--Ячейка с дополнительной информацией-->
|
||||
<td
|
||||
bgcolor="#e6e6fa"
|
||||
align="center">
|
||||
<h3>Общая информация</h3>
|
||||
<p>Текст общей информации или реклама</p>
|
||||
<!--Закрываем ячейку с общей информацией
|
||||
и таблицу основного контента-->
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<!--ПОДВАЛ-->
|
||||
|
||||
<!--Создаём таблицу подвала-->
|
||||
<table
|
||||
border="1"
|
||||
bgcolor="#7FFFD4"
|
||||
height="100"
|
||||
cellpadding="10"
|
||||
style="width:100%; border-radius:5px;">
|
||||
<!--Создаём строку.-->
|
||||
<tr>
|
||||
<!--Создаём столбец-->
|
||||
<th>
|
||||
<h3>Подвал</h3>
|
||||
<!--Закрываем таблицу подвала. При желании в подвале можно
|
||||
сделать несколько строк и столбцов-->
|
||||
</th>
|
||||
</tr>
|
||||
</table>
|
||||
<!--Закрываем таблицу контейнера-->
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
||||
@@ -316,33 +316,59 @@ void ServerConfig::fillFields(void)
|
||||
checkConfig();
|
||||
}
|
||||
|
||||
int ServerConfig::isFile(std::string path)
|
||||
{
|
||||
struct stat s;
|
||||
|
||||
if (stat(path.c_str(), &s) == 0)
|
||||
{
|
||||
if (s.st_mode & S_IFDIR)
|
||||
return (-1);
|
||||
else if (s.st_mode & S_IFREG)
|
||||
return (0);
|
||||
}
|
||||
else
|
||||
return (-1);
|
||||
return (-1);
|
||||
}
|
||||
|
||||
int ServerConfig::isDir(std::string path)
|
||||
{
|
||||
struct stat s;
|
||||
|
||||
if (stat(path.c_str(), &s) == 0)
|
||||
{
|
||||
if (s.st_mode & S_IFDIR)
|
||||
return (0);
|
||||
else if (s.st_mode & S_IFREG)
|
||||
return (-1);
|
||||
}
|
||||
else
|
||||
return (-1);
|
||||
return (-1);
|
||||
}
|
||||
|
||||
bool ServerConfig::checkFileAndDir(location *loc)
|
||||
{
|
||||
std::string root = loc->root;
|
||||
std::string upload_dir = loc->uploadDir;
|
||||
std::string directory_file = loc->directoryFile;
|
||||
DIR *dir;
|
||||
|
||||
if (!root.empty())
|
||||
{
|
||||
dir = opendir(root.c_str());
|
||||
if (dir == NULL)
|
||||
throw ConfigException("Directory " + root + " " + strerror(errno) + "!");
|
||||
closedir(dir);
|
||||
if (isDir(root) != 0)
|
||||
throw ConfigException("Directory " + root + " not found!");
|
||||
}
|
||||
if (!upload_dir.empty())
|
||||
{
|
||||
dir = opendir(upload_dir.c_str());
|
||||
if (dir == NULL)
|
||||
throw ConfigException("Directory " + upload_dir + " " + strerror(errno) + "!");
|
||||
closedir(dir);
|
||||
if (isDir(upload_dir) != 0)
|
||||
throw ConfigException("Directory " + upload_dir + " not found!");
|
||||
}
|
||||
if (!directory_file.empty())
|
||||
{
|
||||
directory_file = root + "/" + directory_file;
|
||||
std::ofstream file(directory_file.c_str(), std::ios::out | std::ios::binary);
|
||||
if (!file.is_open())
|
||||
throw ConfigException("File " + directory_file + " " + strerror(errno) + "!");
|
||||
file.close();
|
||||
if (isFile(directory_file) != 0)
|
||||
throw ConfigException("File " + directory_file + " not found!");
|
||||
}
|
||||
return (true);
|
||||
}
|
||||
|
||||
@@ -72,6 +72,9 @@ private:
|
||||
std::string getTypestr(toml_node::e_type);
|
||||
std::string getWrongTypeErrorMSG(std::string field, toml_node::e_type expected, toml_node::e_type received);
|
||||
bool checkFileAndDir(location *);
|
||||
int isFile(std::string path);
|
||||
int isDir(std::string path);
|
||||
|
||||
|
||||
public:
|
||||
void fillFields(void);
|
||||
|
||||
Reference in New Issue
Block a user