196 lines
5.9 KiB
Go
196 lines
5.9 KiB
Go
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("")
|
||
}
|