Инициализация проекта
Стабильный рабочий проект.
This commit is contained in:
1
WebServer/cert/no_cert/.gitkeep
Normal file
1
WebServer/cert/no_cert/.gitkeep
Normal file
@@ -0,0 +1 @@
|
||||
# Этот файл нужен для того, чтобы Git отслеживал пустую папку no_cert
|
19
WebServer/cert/no_cert/certificate.crt
Normal file
19
WebServer/cert/no_cert/certificate.crt
Normal file
@@ -0,0 +1,19 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIDCTCCAfGgAwIBAgIUY0VrW1J4hftsUqKJz2gj4UNxkJkwDQYJKoZIhvcNAQEL
|
||||
BQAwFDESMBAGA1UEAwwJbG9jYWxob3N0MB4XDTI1MDcwODIwMTA1M1oXDTI2MDcw
|
||||
ODIwMTA1M1owFDESMBAGA1UEAwwJbG9jYWxob3N0MIIBIjANBgkqhkiG9w0BAQEF
|
||||
AAOCAQ8AMIIBCgKCAQEAszgR6UgXAeV3gKR1fd8moc7NEc9cwkZgUnlDFTx4uBPu
|
||||
mknWk16B5qw3DjQOJcpnkyh0zNyc2fSAWx9+3pFB87UFILHL7/PUB9KJO/RwKVmm
|
||||
kqCgQMF/Ga7U3LjTnX/8i/4GLHseO18kknBA/HbrKoS2L8oa6y96sggPbS4/Jg/e
|
||||
7K+wGtm+++hoNPwfGAD/ajFYmqaa43kZeIQUbW+1RpiVfayOzd71/lg2MHXROejA
|
||||
0jyr3Vu1BdeFtcTlaBDAIvYm4V5Rg6REEM9XrQ4I9WNGA5aDvCVqP8TAJTdeloZB
|
||||
zWkKzGXpMu27QODPGY7YlNJED9ZYv3nnta/NGGWehQIDAQABo1MwUTAdBgNVHQ4E
|
||||
FgQUORzZyg2/CDSnl7voH7tePiufL9MwHwYDVR0jBBgwFoAUORzZyg2/CDSnl7vo
|
||||
H7tePiufL9MwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAQEARN6K
|
||||
Bthdsz088cabijgEZD4vQmlmYLWxdtTwq2hz5Ux44i5fcr840FJAtIospcO4obQb
|
||||
B1Rps+da9A3tr1yiYbpmYJ4AbogP+IrULkWNDsvNTsBBIQerNJ41WehL0l4YxB+P
|
||||
ty9pLXjYeFcAuyhTWt22GM25GhsV7WnxKqCOF28Q800LJk5aWuXyVVa5VrYKMDFQ
|
||||
n0LD3sYaY5Eo77x0/Lx0q1wulzTZmIPIHwGSCCxCoFoSk34L2iknx6V7sN8ZcEA6
|
||||
zNWGnBzZ9qdELrXtqr9X7neDH3Ip3rV1C6sDkyt8epB/Jvx+WyklqxS7zOzvZD2+
|
||||
wkoFk7e4NMpx8MHnzw==
|
||||
-----END CERTIFICATE-----
|
28
WebServer/cert/no_cert/private.key
Normal file
28
WebServer/cert/no_cert/private.key
Normal file
@@ -0,0 +1,28 @@
|
||||
-----BEGIN PRIVATE KEY-----
|
||||
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCzOBHpSBcB5XeA
|
||||
pHV93yahzs0Rz1zCRmBSeUMVPHi4E+6aSdaTXoHmrDcONA4lymeTKHTM3JzZ9IBb
|
||||
H37ekUHztQUgscvv89QH0ok79HApWaaSoKBAwX8ZrtTcuNOdf/yL/gYsex47XySS
|
||||
cED8dusqhLYvyhrrL3qyCA9tLj8mD97sr7Aa2b776Gg0/B8YAP9qMViapprjeRl4
|
||||
hBRtb7VGmJV9rI7N3vX+WDYwddE56MDSPKvdW7UF14W1xOVoEMAi9ibhXlGDpEQQ
|
||||
z1etDgj1Y0YDloO8JWo/xMAlN16WhkHNaQrMZeky7btA4M8ZjtiU0kQP1li/eee1
|
||||
r80YZZ6FAgMBAAECggEAAeDxlx9xVkzAfvG6ZZJkRkfzsF8bGtJACj1JLbzPiyZy
|
||||
Vt21SSAxfmiJvzVefJjtkwZWixs47bP5cHsZCl49cb+RCTGz8JT+wQI8/Aro7hYJ
|
||||
f/n9FBCzM2K4yoOJfFouHI2SJP85ZuftazeQBtV8S5rOihu1Qofh4mHhP4S/lreJ
|
||||
XvreyhW6BWdj+5mA3+KbFr0X6AEsO3vN3Bqc+a9zdUYnCVl3Uis6/1rg5swjTqgW
|
||||
oZLVB11fznIR9zGNRHIVcSgOsFy3JK837Z8xjZayXf3svS9ebfYe7Cd7tAz/3IVB
|
||||
0N0ASoI+AqoSBwr7f+CUJotFjKqiBpnSQQvn52CX9QKBgQDmfRBEaKbIThHDcULe
|
||||
pGzvmZxfFDB7Fg9HAUJKIy6oZwQn+ea2m6N/AJ9F6Ba1eBOcMMliBc/4JbPWujZ0
|
||||
teQw1C72ixiPq8ALRhp1h8woZpW/HDioZiABYHlHfxrVQHf/l+ExAuid6Mpti/dg
|
||||
J/IeJrLiVMTl+uch6JFce2SPqwKBgQDHDkZya5Quho70I66kLDnk1Vu4pnqB7u/X
|
||||
t4vqObMF5VB+GKOvV6mz4pD4mfa7UkR0ILgAXA25N2HCok3Ne6N43DFygnchFrtg
|
||||
WcC+FMSwOzlRk3vPqUlFvfqpoz270hlP86R8cDsk8Wu1oSiUQnHdaX5eZmmBNqgR
|
||||
H2lbo+YajwKBgQCes3ww7jHwd7jJbsIRVPvhGk7ONLOQ/MZ2KIrBS2pD7/Kvp+VQ
|
||||
1OeFeiMw2jZQqyYthHYVNVVWUnd6oWr/f4JokKDphyrZOfQYjyOGy4MqSkBPf5oP
|
||||
cYoWCJxZO055iVNWvPgEbDFJEVHYjeg94CNY2WKQbrfIdrMQ6Pa1zAyY0wKBgDvi
|
||||
8pTYAtPgjb+rwI4J9D0BZ7/s7iyLO0NWKFUGmPKsJARb21sUb6z7/AufHpkKzid1
|
||||
9IW/LC3OGK5a8Ddi/DKPZJ0D3V1qHmOFfTRywR4YI02Eppo6Xx4JYxGIWDlao1zn
|
||||
e1Qo29Jog7Q4USIRv3oSk/9IpnNGg1frcGIutDrHAoGBAMvcUxFvGGSETNxjnNzU
|
||||
5gSzmOjVxpd+OShqMR9sOq1H7vkZRBKMy7Y4z1LDfrmsrNE/C8vjzU2vrDcTqA1g
|
||||
hbFFC9jv1LglfIYdcmFCTiHb4Etb7BSu+EkoyPTKFnVSFP4tmIz42uiJEn3X8obr
|
||||
LCffIwNNqa5AbVUmC2vZRDDw
|
||||
-----END PRIVATE KEY-----
|
21
WebServer/config.json
Normal file
21
WebServer/config.json
Normal file
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"Site_www": [
|
||||
{
|
||||
"alias": ["localhost"],
|
||||
"host": "127.0.0.1",
|
||||
"name": "Локальный сайт",
|
||||
"status": "active",
|
||||
"root_file": "index.html",
|
||||
"root_file_routing": true
|
||||
}
|
||||
],
|
||||
|
||||
"Soft_Settings": {
|
||||
"mysql_host": "192.168.1.6",
|
||||
"mysql_port": 3306,
|
||||
"php_host": "localhost",
|
||||
"php_port": 8000,
|
||||
"admin_host": "localhost",
|
||||
"admin_port": "5555"
|
||||
}
|
||||
}
|
BIN
WebServer/soft/soft.rar
Normal file
BIN
WebServer/soft/soft.rar
Normal file
Binary file not shown.
1
WebServer/tools/error_page/index.html
Normal file
1
WebServer/tools/error_page/index.html
Normal file
@@ -0,0 +1 @@
|
||||
Ой, а тут ошибка
|
209
WebServer/www/127.0.0.1/public_www/index.html
Normal file
209
WebServer/www/127.0.0.1/public_www/index.html
Normal file
@@ -0,0 +1,209 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="ru">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>vServer - Добро пожаловать!</title>
|
||||
<style>
|
||||
* {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
body {
|
||||
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
|
||||
background: linear-gradient(135deg, #1a252f 0%, #2c3e50 50%, #34495e 100%);
|
||||
min-height: 100vh;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
color: #ffffff;
|
||||
}
|
||||
|
||||
.container {
|
||||
text-align: center;
|
||||
padding: 3rem;
|
||||
background: rgba(26, 37, 47, 0.95);
|
||||
border-radius: 16px;
|
||||
backdrop-filter: blur(15px);
|
||||
border: 1px solid rgba(52, 152, 219, 0.2);
|
||||
box-shadow: 0 20px 40px rgba(0, 0, 0, 0.4), 0 0 0 1px rgba(52, 152, 219, 0.1);
|
||||
max-width: 580px;
|
||||
animation: fadeIn 1s ease-in-out;
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.container::before {
|
||||
content: '';
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
height: 2px;
|
||||
background: linear-gradient(90deg, #3498db, #2ecc71, #e74c3c, #f39c12);
|
||||
background-size: 400% 400%;
|
||||
animation: gradientShift 4s ease infinite;
|
||||
}
|
||||
|
||||
@keyframes gradientShift {
|
||||
0%, 100% { background-position: 0% 50%; }
|
||||
50% { background-position: 100% 50%; }
|
||||
}
|
||||
|
||||
@keyframes fadeIn {
|
||||
from {
|
||||
opacity: 0;
|
||||
transform: translateY(30px);
|
||||
}
|
||||
to {
|
||||
opacity: 1;
|
||||
transform: translateY(0);
|
||||
}
|
||||
}
|
||||
|
||||
.logo {
|
||||
font-size: 3.8rem;
|
||||
font-weight: 700;
|
||||
margin-bottom: 1.5rem;
|
||||
background: linear-gradient(135deg, #3498db, #2ecc71);
|
||||
-webkit-background-clip: text;
|
||||
-webkit-text-fill-color: transparent;
|
||||
background-clip: text;
|
||||
letter-spacing: 3px;
|
||||
text-shadow: 0 4px 8px rgba(0, 0, 0, 0.3);
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.welcome-text {
|
||||
font-size: 1.9rem;
|
||||
margin-bottom: 1.5rem;
|
||||
font-weight: 400;
|
||||
color: #ecf0f1;
|
||||
text-shadow: 0 2px 4px rgba(0, 0, 0, 0.3);
|
||||
}
|
||||
|
||||
.description {
|
||||
font-size: 1.15rem;
|
||||
margin-bottom: 2.5rem;
|
||||
line-height: 1.8;
|
||||
color: #bdc3c7;
|
||||
font-weight: 300;
|
||||
}
|
||||
|
||||
.status {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
gap: 15px;
|
||||
background: linear-gradient(135deg, rgba(46, 204, 113, 0.15), rgba(39, 174, 96, 0.25));
|
||||
padding: 15px 30px;
|
||||
border-radius: 12px;
|
||||
border: 1px solid rgba(46, 204, 113, 0.4);
|
||||
margin-bottom: 1.5rem;
|
||||
box-shadow: 0 8px 16px rgba(46, 204, 113, 0.1);
|
||||
}
|
||||
|
||||
.status-dot {
|
||||
width: 14px;
|
||||
height: 14px;
|
||||
background: #2ecc71;
|
||||
border-radius: 50%;
|
||||
animation: pulse 2s infinite;
|
||||
box-shadow: 0 0 10px rgba(46, 204, 113, 0.5);
|
||||
}
|
||||
|
||||
@keyframes pulse {
|
||||
0% {
|
||||
box-shadow: 0 0 0 0 rgba(46, 204, 113, 0.7), 0 0 10px rgba(46, 204, 113, 0.5);
|
||||
}
|
||||
70% {
|
||||
box-shadow: 0 0 0 10px rgba(46, 204, 113, 0), 0 0 10px rgba(46, 204, 113, 0.5);
|
||||
}
|
||||
100% {
|
||||
box-shadow: 0 0 0 0 rgba(46, 204, 113, 0), 0 0 10px rgba(46, 204, 113, 0.5);
|
||||
}
|
||||
}
|
||||
|
||||
.status-text {
|
||||
color: #ecf0f1;
|
||||
font-weight: 600;
|
||||
font-size: 1.05rem;
|
||||
}
|
||||
|
||||
.footer {
|
||||
margin-top: 1.5rem;
|
||||
font-size: 0.95rem;
|
||||
opacity: 0.8;
|
||||
color: #95a5a6;
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
.footer a {
|
||||
color: #3498db;
|
||||
text-decoration: none;
|
||||
transition: color 0.3s ease;
|
||||
}
|
||||
|
||||
.footer a:hover {
|
||||
color: #2ecc71;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
.floating-particles {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
pointer-events: none;
|
||||
z-index: -1;
|
||||
}
|
||||
|
||||
.particle {
|
||||
position: absolute;
|
||||
background: rgba(52, 152, 219, 0.15);
|
||||
border-radius: 50%;
|
||||
animation: float 8s ease-in-out infinite;
|
||||
}
|
||||
|
||||
@keyframes float {
|
||||
0%, 100% {
|
||||
transform: translateY(0px) rotate(0deg);
|
||||
}
|
||||
50% {
|
||||
transform: translateY(-20px) rotate(180deg);
|
||||
}
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="floating-particles">
|
||||
<div class="particle" style="width: 18px; height: 18px; top: 15%; left: 10%; animation-delay: 0s;"></div>
|
||||
<div class="particle" style="width: 14px; height: 14px; top: 65%; left: 85%; animation-delay: 3s;"></div>
|
||||
<div class="particle" style="width: 10px; height: 10px; top: 85%; left: 20%; animation-delay: 6s;"></div>
|
||||
<div class="particle" style="width: 22px; height: 22px; top: 25%; left: 75%; animation-delay: 2s;"></div>
|
||||
<div class="particle" style="width: 12px; height: 12px; top: 75%; left: 50%; animation-delay: 4s;"></div>
|
||||
<div class="particle" style="width: 16px; height: 16px; top: 40%; left: 15%; animation-delay: 1s;"></div>
|
||||
</div>
|
||||
|
||||
<div class="container">
|
||||
<div class="logo">vServer</div>
|
||||
<div class="welcome-text">Добро пожаловать!</div>
|
||||
<div class="description">
|
||||
Ваш сервер успешно запущен и готов к работе.<br>
|
||||
|
||||
</div>
|
||||
<div class="status">
|
||||
<div class="status-dot"></div>
|
||||
<span class="status-text">Сервер работает</span>
|
||||
</div>
|
||||
|
||||
<div class="footer">
|
||||
Powered by vServer
|
||||
<br>
|
||||
Сайт разработчика: <a href="https://voxsel.ru" target="_blank">voxsel.ru</a>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
55
WebServer/www/127.0.0.1/vAccess.conf
Normal file
55
WebServer/www/127.0.0.1/vAccess.conf
Normal file
@@ -0,0 +1,55 @@
|
||||
# ========================================
|
||||
# vAccess Configuration File
|
||||
# Система контроля доступа для веб-сервера
|
||||
# ========================================
|
||||
#
|
||||
# ПРИНЦИП РАБОТЫ:
|
||||
# - Правила проверяются сверху вниз по порядку
|
||||
# - Первое подходящее правило срабатывает и завершает проверку
|
||||
# - Если ни одно правило не сработало - доступ разрешён
|
||||
# - Каждый комментарий (#) начинает новое правило
|
||||
#
|
||||
# ПОЛЯ ПРАВИЛ:
|
||||
# type: Allow (разрешить) | Disable (запретить) - ОБЯЗАТЕЛЬНОЕ
|
||||
# type_file: Расширения файлов через запятую (*.php, *.exe) - ОПЦИОНАЛЬНО
|
||||
# path_access: Пути через запятую (/admin/*, /api/*) - ОПЦИОНАЛЬНО
|
||||
# ip_list: IP адреса через запятую (192.168.1.1, 10.0.0.5) - ОПЦИОНАЛЬНО
|
||||
# ВАЖНО: Используется реальный IP соединения (не заголовки прокси!)
|
||||
# exceptions_dir: Пути-исключения через запятую (/bot/*, /public/*) - ОПЦИОНАЛЬНО
|
||||
# Правило НЕ применяется к этим путям
|
||||
# url_error: Куда перенаправить при блокировке - ОПЦИОНАЛЬНО
|
||||
# - 404 (стандартная ошибка)
|
||||
# - https://site.com (внешний редирект)
|
||||
# - /error.html (локальная страница)
|
||||
#
|
||||
# ПАТТЕРНЫ:
|
||||
# - *.ext = любой файл с расширением .ext
|
||||
# - no_extension = файлы без расширения (например: /api/users, /admin)
|
||||
# - /path/* = все файлы в папке /path/ и подпапках
|
||||
# - /file.php = конкретный файл
|
||||
#
|
||||
# ВАЖНО: Порядок правил имеет значение! Специфичные правила размещайте ВЫШЕ общих!
|
||||
# ========================================
|
||||
|
||||
# Правило 1: Запрещаем исполнение опасных файлов в uploads с кастомной страницей
|
||||
type: Disable
|
||||
type_file: *.php
|
||||
path_access: /uploads/*, /API/*, /app/*, /templates/*
|
||||
url_error: 404
|
||||
|
||||
# Пример 2: Разрешаем доступ к админке только с определённых IP
|
||||
# type: Allow
|
||||
# path_access: /admin/*
|
||||
# ip_list: 192.168.1.100, 10.0.0.5, 127.0.0.1
|
||||
# url_error: 404
|
||||
|
||||
# Пример 3: Блокируем определённые IP для всего сайта
|
||||
# type: Disable
|
||||
# ip_list: 192.168.1.50, 10.0.0.99
|
||||
# url_error: 404
|
||||
|
||||
# Пример 4: Разрешаем доступ только с определённых IP, но исключаем /bot/*
|
||||
# type: Allow
|
||||
# ip_list: 127.0.0.1, 192.168.0.1
|
||||
# exceptions_dir: /bot/*, /public/api/*
|
||||
# url_error: https://voxsel.ru
|
Reference in New Issue
Block a user