Инициализация проекта

Стабильный рабочий проект.
This commit is contained in:
Falknat
2025-10-02 06:02:45 +07:00
commit 7a87617282
47 changed files with 6057 additions and 0 deletions

View File

@@ -0,0 +1,195 @@
package webserver
import (
"fmt"
"os"
"time"
admin "vServer/Backend/admin"
config "vServer/Backend/config"
tools "vServer/Backend/tools"
)
var Secure_post bool = false
func CommandListener() {
fmt.Println("Введите help для получения списка команд")
fmt.Println("")
for {
var cmd string
fmt.Print(tools.Color(" > ", tools.Оранжевый))
fmt.Scanln(&cmd)
switch cmd {
case "help":
fmt.Println(" ------------------------------------------")
fmt.Println(" 1: mysql_stop - Остановить MySQL")
fmt.Println(" 2: mysql_start - Запустить MySQL")
fmt.Println(" 3: mysql_pass - Сбросить пароль MySQL")
fmt.Println(" 4: clear - Очистить консоль")
fmt.Println(" 5: cert_reload - Перезагрузить SSL сертификаты")
fmt.Println(" 6: admin_toggle - Переключить режим админки (embed/файловая система)")
fmt.Println(" 7: config_reload - Перезагрузить конфигурацию")
fmt.Println(" 8: restart - Перезапустить сервер")
fmt.Println(" 9: php_console - Открыть PHP консоль")
fmt.Println(" 10: exit - выйти из программы")
fmt.Println(" ------------------------------------------")
fmt.Println("")
case "mysql_stop":
StopMySQLServer()
case "mysql_start":
StartMySQLServer(false)
case "mysql_pass":
ResetPasswordMySQL()
case "clear":
ClearConsole()
case "cert_reload":
ReloadCertificates()
case "admin_toggle":
AdminToggle()
case "config_reload":
ConfigReload()
case "restart":
RestartServer()
case "time_run":
fmt.Println(tools.ServerUptime("get"))
case "secure_post":
if Secure_post {
Secure_post = false
fmt.Println("Secure post is disabled")
} else {
Secure_post = true
fmt.Println("Secure post is enabled")
}
case "exit":
fmt.Println("Завершение...")
os.Exit(0)
default:
fmt.Println(" Неизвестная команда. Введите 'help' для получения списка команд")
fmt.Println("")
}
}
}
func RestartServer() {
fmt.Println("")
fmt.Println("⏹️ Перезагрузка сервера...")
// Останавливаем все сервисы
fmt.Println("⏹️ Останавливаем сервисы...")
fmt.Println("")
// Останавливаем HTTP/HTTPS серверы
StopHTTPServer()
StopHTTPSServer()
// Останавливаем MySQL
if mysql_status {
StopMySQLServer()
time.Sleep(1 * time.Second)
}
// Останавливаем PHP
PHP_Stop()
time.Sleep(1 * time.Second)
fmt.Println("")
fmt.Println("✅ Все сервисы остановлены")
// Перезагружаем конфигурацию
fmt.Println("📋 Перезагружаем конфигурацию...")
fmt.Println("")
config.LoadConfig()
// Запускаем сервисы заново
fmt.Println("🚀 Запускаем сервисы...")
fmt.Println("")
// Запускаем HTTP/HTTPS серверы
go StartHTTP()
time.Sleep(100 * time.Millisecond)
go StartHTTPS()
time.Sleep(100 * time.Millisecond)
// Запускаем PHP
PHP_Start()
time.Sleep(100 * time.Millisecond)
// Запускаем MySQL
StartMySQLServer(false)
time.Sleep(100 * time.Millisecond)
fmt.Println("✅ Сервер успешно перезагружен!")
fmt.Println("")
}
func ClearConsole() {
// Очищаем консоль, но сохраняем первые три строки
fmt.Print("\033[H\033[2J") // ANSI escape code для очистки экрана
println("")
println(tools.Color("vServer", tools.Жёлтый) + tools.Color(" 1.0.0", tools.Голубой))
println(tools.Color("Автор: ", tools.Зелёный) + tools.Color("Суманеев Роман (c) 2025", tools.Голубой))
println(tools.Color("Официальный сайт: ", tools.Зелёный) + tools.Color("https://voxsel.ru", tools.Голубой))
println("")
// Восстанавливаем первые три строки
fmt.Println("Введите help для получения списка команд")
fmt.Println("")
}
// Переключает режим админки между embed и файловой системой
func AdminToggle() {
fmt.Println("")
if admin.UseEmbedded {
// Переключаем на файловую систему
admin.UseEmbedded = false
fmt.Println("🔄 Режим изменен: Embedded → Файловая система")
fmt.Println("✅ Админка переключена на файловую систему")
fmt.Println("📁 Файлы будут загружаться с диска из Backend/admin/html/")
fmt.Println("💡 Теперь можно редактировать файлы и изменения будут видны сразу")
} else {
// Переключаем обратно на embedded
admin.UseEmbedded = true
fmt.Println("🔄 Режим изменен: Файловая система → Embedded")
fmt.Println("✅ Админка переключена на embedded режим")
fmt.Println("📦 Файлы загружаются из встроенных ресурсов")
fmt.Println("🚀 Быстрая загрузка, но изменения требуют перекомпиляции")
}
fmt.Println("")
}
// Перезагружает конфигурацию без перезапуска сервисов
func ConfigReload() {
fmt.Println("")
fmt.Println("📋 Перезагружаем конфигурацию...")
// Загружаем новую конфигурацию
config.LoadConfig()
fmt.Println("✅ Конфигурация успешно перезагружена!")
fmt.Println("💡 Изменения применятся к новым запросам")
fmt.Println("")
}