mirror of
https://github.com/yhl452493373/frpc-panel.git
synced 2026-04-04 14:27:01 +08:00
137 lines
3.0 KiB
Go
137 lines
3.0 KiB
Go
package controller
|
|
|
|
import (
|
|
"regexp"
|
|
)
|
|
|
|
const (
|
|
Success int = iota
|
|
ParamError
|
|
UserExist
|
|
UserNotExist
|
|
SaveError
|
|
UserFormatError
|
|
TokenFormatError
|
|
CommentFormatError
|
|
PortsFormatError
|
|
DomainsFormatError
|
|
SubdomainsFormatError
|
|
FrpServerError
|
|
)
|
|
|
|
const (
|
|
TOKEN_ADD int = iota
|
|
TOKEN_UPDATE
|
|
TOKEN_REMOVE
|
|
TOKEN_ENABLE
|
|
TOKEN_DISABLE
|
|
)
|
|
|
|
const (
|
|
SessionName = "GOSESSION"
|
|
AuthName = "_PANEL_AUTH"
|
|
LoginUrl = "/login"
|
|
LoginSuccessUrl = "/"
|
|
LogoutUrl = "/logout"
|
|
LogoutSuccessUrl = "/login"
|
|
)
|
|
|
|
var (
|
|
userFormat = regexp.MustCompile("^\\w+$")
|
|
tokenFormat = regexp.MustCompile("^[\\w!@#$%^&*()]+$")
|
|
commentFormat = regexp.MustCompile("[\\n\\t\\r]")
|
|
portsFormatSingle = regexp.MustCompile("^\\s*\\d{1,5}\\s*$")
|
|
portsFormatRange = regexp.MustCompile("^\\s*\\d{1,5}\\s*-\\s*\\d{1,5}\\s*$")
|
|
domainFormat = regexp.MustCompile("^([a-zA-Z0-9]+(-[a-zA-Z0-9]+)*\\.)+[a-zA-Z]{2,}$")
|
|
subdomainFormat = regexp.MustCompile("^[a-zA-z0-9-]{1,20}$")
|
|
trimAllSpace = regexp.MustCompile("[\\n\\t\\r\\s]")
|
|
)
|
|
|
|
type Response struct {
|
|
Msg string `json:"msg"`
|
|
}
|
|
|
|
type HTTPError struct {
|
|
Code int
|
|
Err error
|
|
}
|
|
|
|
type Common struct {
|
|
Common CommonInfo
|
|
}
|
|
|
|
type CommonInfo struct {
|
|
PluginAddr string `toml:"plugin_addr"`
|
|
PluginPort int `toml:"plugin_port"`
|
|
AdminUser string `toml:"admin_user"`
|
|
AdminPwd string `toml:"admin_pwd"`
|
|
AdminKeepTime int `toml:"admin_keep_time"`
|
|
TlsMode bool `toml:"tls_mode"`
|
|
TlsCertFile string `toml:"tls_cert_file"`
|
|
TlsKeyFile string `toml:"tls_key_file"`
|
|
DashboardAddr string `toml:"dashboard_addr"`
|
|
DashboardPort int `toml:"dashboard_port"`
|
|
DashboardUser string `toml:"dashboard_user"`
|
|
DashboardPwd string `toml:"dashboard_pwd"`
|
|
DashboardTls bool
|
|
}
|
|
|
|
type Tokens struct {
|
|
Tokens map[string]TokenInfo `toml:"tokens"`
|
|
}
|
|
|
|
type TokenInfo struct {
|
|
User string `toml:"user" json:"user" form:"user"`
|
|
Token string `toml:"token" json:"token" form:"token"`
|
|
Comment string `toml:"comment" json:"comment" form:"comment"`
|
|
Ports []any `toml:"ports" json:"ports" from:"ports"`
|
|
Domains []string `toml:"domains" json:"domains" from:"domains"`
|
|
Subdomains []string `toml:"subdomains" json:"subdomains" from:"subdomains"`
|
|
Enable bool `toml:"enable" json:"enable" form:"enable"`
|
|
}
|
|
|
|
type TokenResponse struct {
|
|
Code int `json:"code"`
|
|
Msg string `json:"msg"`
|
|
Count int `json:"count"`
|
|
Data []TokenInfo `json:"data"`
|
|
}
|
|
|
|
type OperationResponse struct {
|
|
Success bool `json:"success"`
|
|
Code int `json:"code"`
|
|
Message string `json:"message"`
|
|
}
|
|
|
|
type ProxyResponse struct {
|
|
OperationResponse
|
|
Data any `json:"data"`
|
|
}
|
|
|
|
type TokenSearch struct {
|
|
TokenInfo
|
|
Page int `form:"page"`
|
|
Limit int `form:"limit"`
|
|
}
|
|
|
|
type TokenUpdate struct {
|
|
Before TokenInfo `json:"before"`
|
|
After TokenInfo `json:"after"`
|
|
}
|
|
|
|
type TokenRemove struct {
|
|
Users []TokenInfo `json:"users"`
|
|
}
|
|
|
|
type TokenDisable struct {
|
|
TokenRemove
|
|
}
|
|
|
|
type TokenEnable struct {
|
|
TokenDisable
|
|
}
|
|
|
|
func (e *HTTPError) Error() string {
|
|
return e.Err.Error()
|
|
}
|