Files
vServer/Backend/WebServer/cmd_console.go
Falknat 7a87617282 Инициализация проекта
Стабильный рабочий проект.
2025-10-02 06:02:45 +07:00

196 lines
5.9 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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("")
}