feat: add compatible Trojan manager image

This commit is contained in:
chermack
2026-07-26 05:01:15 +08:00
parent 059be96536
commit cb17d56cae
26 changed files with 320 additions and 41 deletions
+18
View File
@@ -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
}
+4 -4
View File
@@ -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
}
+4 -4
View File
@@ -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