feat: add compatible Trojan manager image
This commit is contained in:
@@ -0,0 +1,18 @@
|
||||
package controller
|
||||
|
||||
import (
|
||||
"crypto/x509"
|
||||
"encoding/pem"
|
||||
"fmt"
|
||||
"os"
|
||||
"time"
|
||||
"trojan/managerconfig"
|
||||
)
|
||||
|
||||
func SystemConfig() *ResponseBody { c, err := managerconfig.Load(); r := &ResponseBody{Msg:"success", Data:c}; if err != nil { r.Msg=err.Error() }; return r }
|
||||
func ValidateSystemConfig(c managerconfig.Config) *ResponseBody { r:=&ResponseBody{Msg:"success"}; if err:=managerconfig.Validate(c); err != nil { r.Msg=err.Error() }; return r }
|
||||
func ApplySystemConfig(c managerconfig.Config) *ResponseBody { r:=ValidateSystemConfig(c); if r.Msg!="success" { return r }; if err:=managerconfig.Save(c); err!=nil { r.Msg=err.Error(); return r }; r.Data=map[string]bool{"restartRequired":true,"nginxReloadRequired":false,"containerRecreateRequired":false}; return r }
|
||||
func CertificateStatus() *ResponseBody {
|
||||
r:=&ResponseBody{Msg:"success"}; b,err:=os.ReadFile("/etc/trojan/certs/fullchain.pem"); if err!=nil { r.Msg=err.Error(); return r }; block,_:=pem.Decode(b); if block==nil { r.Msg="invalid certificate PEM"; return r }; cert,err:=x509.ParseCertificate(block.Bytes); if err!=nil { r.Msg=err.Error(); return r }
|
||||
r.Data=map[string]interface{}{"subject":cert.Subject.String(),"issuer":cert.Issuer.String(),"dnsNames":cert.DNSNames,"notBefore":cert.NotBefore,"notAfter":cert.NotAfter,"daysRemaining":int(time.Until(cert.NotAfter).Hours()/24),"serialNumber":fmt.Sprint(cert.SerialNumber)}; return r
|
||||
}
|
||||
@@ -20,7 +20,7 @@ import (
|
||||
func Start() *ResponseBody {
|
||||
responseBody := ResponseBody{Msg: "success"}
|
||||
defer TimeCost(time.Now(), &responseBody)
|
||||
trojan.Start()
|
||||
if err := trojan.Start(); err != nil { responseBody.Msg = err.Error() }
|
||||
return &responseBody
|
||||
}
|
||||
|
||||
@@ -28,7 +28,7 @@ func Start() *ResponseBody {
|
||||
func Stop() *ResponseBody {
|
||||
responseBody := ResponseBody{Msg: "success"}
|
||||
defer TimeCost(time.Now(), &responseBody)
|
||||
trojan.Stop()
|
||||
if err := trojan.Stop(); err != nil { responseBody.Msg = err.Error() }
|
||||
return &responseBody
|
||||
}
|
||||
|
||||
@@ -36,7 +36,7 @@ func Stop() *ResponseBody {
|
||||
func Restart() *ResponseBody {
|
||||
responseBody := ResponseBody{Msg: "success"}
|
||||
defer TimeCost(time.Now(), &responseBody)
|
||||
trojan.Restart()
|
||||
if err := trojan.Restart(); err != nil { responseBody.Msg = err.Error() }
|
||||
return &responseBody
|
||||
}
|
||||
|
||||
@@ -53,7 +53,7 @@ func SetLogLevel(level int) *ResponseBody {
|
||||
responseBody := ResponseBody{Msg: "success"}
|
||||
defer TimeCost(time.Now(), &responseBody)
|
||||
core.WriteLogLevel(level)
|
||||
trojan.Restart()
|
||||
if err := trojan.Restart(); err != nil { responseBody.Msg = err.Error() }
|
||||
return &responseBody
|
||||
}
|
||||
|
||||
|
||||
@@ -36,8 +36,8 @@ func UserList(requestUser string) *ResponseBody {
|
||||
}
|
||||
domain, port := trojan.GetDomainAndPort()
|
||||
responseBody.Data = map[string]interface{}{
|
||||
"domain": domain,
|
||||
"port": port,
|
||||
"domain": domain, "port": port, "publicPort": port,
|
||||
"listenPort": core.GetConfig().LocalPort,
|
||||
"userList": userList,
|
||||
}
|
||||
return &responseBody
|
||||
@@ -55,8 +55,8 @@ func PageUserList(curPage int, pageSize int) *ResponseBody {
|
||||
}
|
||||
domain, port := trojan.GetDomainAndPort()
|
||||
responseBody.Data = map[string]interface{}{
|
||||
"domain": domain,
|
||||
"port": port,
|
||||
"domain": domain, "port": port, "publicPort": port,
|
||||
"listenPort": core.GetConfig().LocalPort,
|
||||
"pageData": pageData,
|
||||
}
|
||||
return &responseBody
|
||||
|
||||
Reference in New Issue
Block a user