Большое обновление GUI интерфейс
Большое обновление GUI интерфейс - Добавлен фраемворr Walles - Удалена консольная версия - Проработан интерфейс и дизайн - Добавлено кеширование для быстрой реакции. - Сделан .ps1 сборщик для удобной сборки проекта. - Обновлён Readme
This commit is contained in:
@@ -4,12 +4,34 @@ import (
|
||||
"net/http"
|
||||
"os"
|
||||
"strings"
|
||||
"sync"
|
||||
"vServer/Backend/config"
|
||||
tools "vServer/Backend/tools"
|
||||
)
|
||||
|
||||
var (
|
||||
siteStatusCache map[string]bool
|
||||
statusMutex sync.RWMutex
|
||||
)
|
||||
|
||||
func StartHandler() {
|
||||
http.HandleFunc("/", handler)
|
||||
updateSiteStatusCache()
|
||||
}
|
||||
|
||||
func updateSiteStatusCache() {
|
||||
statusMutex.Lock()
|
||||
defer statusMutex.Unlock()
|
||||
|
||||
siteStatusCache = make(map[string]bool)
|
||||
for _, site := range config.ConfigData.Site_www {
|
||||
siteStatusCache[site.Host] = site.Status == "active"
|
||||
}
|
||||
}
|
||||
|
||||
// UpdateSiteStatusCache - экспортируемая функция для обновления кэша
|
||||
func UpdateSiteStatusCache() {
|
||||
updateSiteStatusCache()
|
||||
}
|
||||
|
||||
// Проверка wildcard паттерна для alias
|
||||
@@ -175,6 +197,17 @@ func checkVAccessAndHandle(w http.ResponseWriter, r *http.Request, filePath stri
|
||||
return true
|
||||
}
|
||||
|
||||
// Проверяет включен ли сайт (оптимизировано через кэш)
|
||||
func isSiteActive(host string) bool {
|
||||
statusMutex.RLock()
|
||||
defer statusMutex.RUnlock()
|
||||
|
||||
if status, exists := siteStatusCache[host]; exists {
|
||||
return status
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
// Обработчик запросов
|
||||
func handler(w http.ResponseWriter, r *http.Request) {
|
||||
|
||||
@@ -187,6 +220,13 @@ func handler(w http.ResponseWriter, r *http.Request) {
|
||||
return // Если прокси обработал запрос, прерываем выполнение
|
||||
}
|
||||
|
||||
// Проверяем статус сайта
|
||||
if !isSiteActive(host) {
|
||||
http.ServeFile(w, r, "WebServer/tools/error_page/index.html")
|
||||
tools.Logs_file(2, "H503", "🚫 Сайт отключен: "+host, "logs_http.log", false)
|
||||
return
|
||||
}
|
||||
|
||||
// ЕДИНСТВЕННАЯ ПРОВЕРКА vAccess - простая проверка запрошенного пути
|
||||
if !checkVAccessAndHandle(w, r, r.URL.Path, host) {
|
||||
return
|
||||
|
||||
Reference in New Issue
Block a user