153 lines
5.1 KiB
Go
153 lines
5.1 KiB
Go
package server
|
|
|
|
import (
|
|
"io/fs"
|
|
"net/http"
|
|
|
|
"setec-manager/internal/handlers"
|
|
"setec-manager/web"
|
|
|
|
"github.com/go-chi/chi/v5"
|
|
)
|
|
|
|
func (s *Server) setupRoutes() {
|
|
h := handlers.New(s.Config, s.DB, s.HostingConfigs)
|
|
|
|
// Static assets (embedded)
|
|
staticFS, _ := fs.Sub(web.StaticFS, "static")
|
|
s.Router.Handle("/static/*", http.StripPrefix("/static/", http.FileServer(http.FS(staticFS))))
|
|
|
|
// Public routes
|
|
s.Router.Group(func(r chi.Router) {
|
|
r.Get("/login", s.handleLoginPage)
|
|
r.With(s.loginRateLimit).Post("/login", s.handleLogin)
|
|
r.Post("/logout", s.handleLogout)
|
|
})
|
|
|
|
// Authenticated routes
|
|
s.Router.Group(func(r chi.Router) {
|
|
r.Use(s.authRequired)
|
|
|
|
// Dashboard
|
|
r.Get("/", h.Dashboard)
|
|
r.Get("/api/system/info", h.SystemInfo)
|
|
|
|
// Auth status
|
|
r.Get("/api/auth/status", s.handleAuthStatus)
|
|
|
|
// Sites
|
|
r.Get("/sites", h.SiteList)
|
|
r.Get("/sites/new", h.SiteNewForm)
|
|
r.Post("/sites", h.SiteCreate)
|
|
r.Get("/sites/{id}", h.SiteDetail)
|
|
r.Put("/sites/{id}", h.SiteUpdate)
|
|
r.Delete("/sites/{id}", h.SiteDelete)
|
|
r.Post("/sites/{id}/deploy", h.SiteDeploy)
|
|
r.Post("/sites/{id}/restart", h.SiteRestart)
|
|
r.Post("/sites/{id}/stop", h.SiteStop)
|
|
r.Post("/sites/{id}/start", h.SiteStart)
|
|
r.Get("/sites/{id}/logs", h.SiteLogs)
|
|
r.Get("/sites/{id}/logs/stream", h.SiteLogStream)
|
|
|
|
// AUTARCH
|
|
r.Get("/autarch", h.AutarchStatus)
|
|
r.Post("/autarch/install", h.AutarchInstall)
|
|
r.Post("/autarch/update", h.AutarchUpdate)
|
|
r.Get("/autarch/status", h.AutarchStatusAPI)
|
|
r.Post("/autarch/start", h.AutarchStart)
|
|
r.Post("/autarch/stop", h.AutarchStop)
|
|
r.Post("/autarch/restart", h.AutarchRestart)
|
|
r.Get("/autarch/config", h.AutarchConfig)
|
|
r.Put("/autarch/config", h.AutarchConfigUpdate)
|
|
r.Post("/autarch/dns/build", h.AutarchDNSBuild)
|
|
|
|
// SSL
|
|
r.Get("/ssl", h.SSLOverview)
|
|
r.Post("/ssl/{domain}/issue", h.SSLIssue)
|
|
r.Post("/ssl/{domain}/renew", h.SSLRenew)
|
|
r.Get("/api/ssl/status", h.SSLStatus)
|
|
|
|
// Nginx
|
|
r.Get("/nginx", h.NginxStatus)
|
|
r.Post("/nginx/reload", h.NginxReload)
|
|
r.Post("/nginx/restart", h.NginxRestart)
|
|
r.Get("/nginx/config/{domain}", h.NginxConfigView)
|
|
r.Post("/nginx/test", h.NginxTest)
|
|
|
|
// Firewall
|
|
r.Get("/firewall", h.FirewallList)
|
|
r.Post("/firewall/rules", h.FirewallAddRule)
|
|
r.Delete("/firewall/rules/{id}", h.FirewallDeleteRule)
|
|
r.Post("/firewall/enable", h.FirewallEnable)
|
|
r.Post("/firewall/disable", h.FirewallDisable)
|
|
r.Get("/api/firewall/status", h.FirewallStatus)
|
|
|
|
// System users
|
|
r.Get("/users", h.UserList)
|
|
r.Post("/users", h.UserCreate)
|
|
r.Delete("/users/{id}", h.UserDelete)
|
|
|
|
// Panel users
|
|
r.Get("/panel/users", h.PanelUserList)
|
|
r.Post("/panel/users", h.PanelUserCreate)
|
|
r.Put("/panel/users/{id}", h.PanelUserUpdate)
|
|
r.Delete("/panel/users/{id}", h.PanelUserDelete)
|
|
|
|
// Backups
|
|
r.Get("/backups", h.BackupList)
|
|
r.Post("/backups/site/{id}", h.BackupSite)
|
|
r.Post("/backups/full", h.BackupFull)
|
|
r.Delete("/backups/{id}", h.BackupDelete)
|
|
r.Get("/backups/{id}/download", h.BackupDownload)
|
|
|
|
// Hosting Provider Management
|
|
r.Get("/hosting", h.HostingProviders)
|
|
r.Get("/hosting/{provider}", h.HostingProviderConfig)
|
|
r.Post("/hosting/{provider}/config", h.HostingProviderSave)
|
|
r.Post("/hosting/{provider}/test", h.HostingProviderTest)
|
|
// DNS
|
|
r.Get("/hosting/{provider}/dns/{domain}", h.HostingDNSList)
|
|
r.Put("/hosting/{provider}/dns/{domain}", h.HostingDNSUpdate)
|
|
r.Delete("/hosting/{provider}/dns/{domain}", h.HostingDNSDelete)
|
|
r.Post("/hosting/{provider}/dns/{domain}/reset", h.HostingDNSReset)
|
|
// Domains
|
|
r.Get("/hosting/{provider}/domains", h.HostingDomainsList)
|
|
r.Post("/hosting/{provider}/domains/check", h.HostingDomainsCheck)
|
|
r.Post("/hosting/{provider}/domains/purchase", h.HostingDomainsPurchase)
|
|
r.Put("/hosting/{provider}/domains/{domain}/nameservers", h.HostingDomainNameservers)
|
|
r.Put("/hosting/{provider}/domains/{domain}/lock", h.HostingDomainLock)
|
|
r.Put("/hosting/{provider}/domains/{domain}/privacy", h.HostingDomainPrivacy)
|
|
// VPS
|
|
r.Get("/hosting/{provider}/vms", h.HostingVMsList)
|
|
r.Get("/hosting/{provider}/vms/{id}", h.HostingVMGet)
|
|
r.Post("/hosting/{provider}/vms", h.HostingVMCreate)
|
|
r.Get("/hosting/{provider}/datacenters", h.HostingDataCenters)
|
|
// SSH Keys
|
|
r.Get("/hosting/{provider}/ssh-keys", h.HostingSSHKeys)
|
|
r.Post("/hosting/{provider}/ssh-keys", h.HostingSSHKeyAdd)
|
|
r.Delete("/hosting/{provider}/ssh-keys/{id}", h.HostingSSHKeyDelete)
|
|
// Billing
|
|
r.Get("/hosting/{provider}/subscriptions", h.HostingSubscriptions)
|
|
r.Get("/hosting/{provider}/catalog", h.HostingCatalog)
|
|
|
|
// Monitoring
|
|
r.Get("/monitor", h.MonitorPage)
|
|
r.Get("/api/monitor/cpu", h.MonitorCPU)
|
|
r.Get("/api/monitor/memory", h.MonitorMemory)
|
|
r.Get("/api/monitor/disk", h.MonitorDisk)
|
|
r.Get("/api/monitor/services", h.MonitorServices)
|
|
|
|
// Logs
|
|
r.Get("/logs", h.LogsPage)
|
|
r.Get("/api/logs/system", h.LogsSystem)
|
|
r.Get("/api/logs/nginx", h.LogsNginx)
|
|
r.Get("/api/logs/stream", h.LogsStream)
|
|
|
|
// Float Mode
|
|
r.Post("/float/register", h.FloatRegister)
|
|
r.Get("/float/sessions", h.FloatSessions)
|
|
r.Delete("/float/sessions/{id}", h.FloatDisconnect)
|
|
r.Get("/float/ws", s.FloatBridge.HandleWebSocket)
|
|
})
|
|
}
|