Add API to register server (#472)

This commit is contained in:
Tao Chen
2024-11-06 23:38:15 +08:00
committed by GitHub
parent 3d6edd602c
commit f4b7483807
5 changed files with 190 additions and 0 deletions
+62
View File
@@ -25,6 +25,19 @@ type CommonResponse struct {
Message string `json:"message"`
}
type RegisterServer struct {
Name string
Tag string
Note string
HideForGuest string
}
type ServerRegisterResponse struct {
CommonResponse
Secret string `json:"secret"`
}
type CommonServerInfo struct {
ID uint64 `json:"id"`
Name string `json:"name"`
@@ -227,6 +240,55 @@ func (s *ServerAPIService) GetAllList() *ServerInfoResponse {
}
return res
}
func (s *ServerAPIService) Register(rs *RegisterServer) *ServerRegisterResponse {
var serverInfo model.Server
var err error
// Populate serverInfo fields
serverInfo.Name = rs.Name
serverInfo.Tag = rs.Tag
serverInfo.Note = rs.Note
serverInfo.HideForGuest = rs.HideForGuest == "on"
// Generate a random secret
serverInfo.Secret, err = utils.GenerateRandomString(18)
if err != nil {
return &ServerRegisterResponse{
CommonResponse: CommonResponse{
Code: 500,
Message: "Generate secret failed: " + err.Error(),
},
Secret: "",
}
}
// Attempt to save serverInfo in the database
err = DB.Create(&serverInfo).Error
if err != nil {
return &ServerRegisterResponse{
CommonResponse: CommonResponse{
Code: 500,
Message: "Database error: " + err.Error(),
},
Secret: "",
}
}
serverInfo.Host = &model.Host{}
serverInfo.State = &model.HostState{}
serverInfo.TaskCloseLock = new(sync.Mutex)
ServerLock.Lock()
SecretToID[serverInfo.Secret] = serverInfo.ID
ServerList[serverInfo.ID] = &serverInfo
ServerTagToIDList[serverInfo.Tag] = append(ServerTagToIDList[serverInfo.Tag], serverInfo.ID)
ServerLock.Unlock()
ReSortServer()
// Successful response
return &ServerRegisterResponse{
CommonResponse: CommonResponse{
Code: 200,
Message: "Server created successfully",
},
Secret: serverInfo.Secret,
}
}
func (m *MonitorAPIService) GetMonitorHistories(query map[string]any) *MonitorInfoResponse {
var (