feat(sys): add self-check functionality for system settings and frpc binary
This commit is contained in:
@@ -0,0 +1,53 @@
|
||||
package sys
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
"fmt"
|
||||
"super-frpc/global"
|
||||
"super-frpc/utils"
|
||||
"super-frpc/postLog"
|
||||
)
|
||||
|
||||
func SelfCheckHandler(w http.ResponseWriter, r *http.Request) {
|
||||
userID, err := utils.Auth(w, r, http.MethodGet, "visitor", "superuser", "admin")
|
||||
if err != nil {
|
||||
utils.SendErrorResponse(w, http.StatusUnauthorized, "invalid token or timestamp")
|
||||
postLog.Warning(fmt.Sprintf("[SelfCheckHandler] Auth failed: %v, userID: %d", err, userID))
|
||||
return
|
||||
}
|
||||
err = SettingsSelfCheck()
|
||||
if err != nil {
|
||||
utils.SendErrorResponse(w, http.StatusInternalServerError, err.Error())
|
||||
return
|
||||
}
|
||||
err = FrpBinaryCheck()
|
||||
if err != nil {
|
||||
utils.SendErrorResponse(w, http.StatusInternalServerError, err.Error())
|
||||
return
|
||||
}
|
||||
utils.SendSuccessResponse(w, "Self check passed", nil)
|
||||
postLog.Info(fmt.Sprintf("[SelfCheckHandler] [%d] Self check passed", userID))
|
||||
}
|
||||
|
||||
func SettingsSelfCheck() error {
|
||||
if global.CurrentConfig.ListenAddr == "" {
|
||||
return fmt.Errorf("listenAddr is not set")
|
||||
}
|
||||
if global.CurrentConfig.ListenPort == "0" {
|
||||
return fmt.Errorf("listenPort is invalid")
|
||||
}
|
||||
if global.CurrentConfig.FrpcPath == "" {
|
||||
return fmt.Errorf("frpcPath is not set")
|
||||
}
|
||||
if global.CurrentConfig.InstancePath == "" {
|
||||
return fmt.Errorf("instancePath is not set")
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func FrpBinaryCheck() error {
|
||||
if !utils.IsFileExist(global.CurrentConfig.FrpcPath) {
|
||||
return fmt.Errorf("frpc binary is not exist")
|
||||
}
|
||||
return nil
|
||||
}
|
||||
Reference in New Issue
Block a user