package main import ( "embed" "io/fs" "net/http" ) //go:embed web/* var webRootFS embed.FS type WebUI struct { fs fs.FS addr string mux *http.ServeMux } func NewWebUI(addr string) (*WebUI, error) { sub, err := fs.Sub(webRootFS, "web") if err != nil { return nil, err } mux := http.NewServeMux() fs := http.FileServer(http.FS(sub)) mux.Handle("/static/css/", fs) ////////////// 页面样式 mux.Handle("/static/js/", fs) ////////////// 页面脚本 ///////////////////////////////////////////////////// mux.HandleFunc("/login", loginHandler) //// 登录接口 mux.HandleFunc("/logout", logoutHandler) //// 注销接口 ///////////////////////////////////////////////////// mux.HandleFunc("/getIMEI", getIMEIHandler) // 唯一编号 ///////////////////////////////////////////////////// mux.HandleFunc("/api/net/interfaces", netInterfaces) mux.HandleFunc("/api/net/routes", netRoutes) mux.HandleFunc("/api/net/dns", netDNS) return &WebUI{fs: sub, addr: addr, mux: mux}, nil } func (ui *WebUI) Start() error { startSessionCleaner() // session过期自动回收 ui.mux.HandleFunc("/", ui.rootHandler) return http.ListenAndServe(ui.addr, ui.mux) }