fix: agent tasks cmd

This commit is contained in:
engigu
2025-12-30 21:09:36 +08:00
parent 7f83401b2e
commit 94c6e1b7fb
3 changed files with 24 additions and 0 deletions
+1
View File
@@ -490,6 +490,7 @@ func (a *Agent) doRequest(method, path string, body interface{}) (*http.Response
req.Header.Set("Authorization", "Bearer "+a.config.Token) req.Header.Set("Authorization", "Bearer "+a.config.Token)
req.Header.Set("Content-Type", "application/json") req.Header.Set("Content-Type", "application/json")
req.Header.Set("X-Machine-ID", a.machineID)
return a.client.Do(req) return a.client.Do(req)
} }
+14
View File
@@ -207,7 +207,21 @@ func (c *AgentController) GetTasks(ctx *gin.Context) {
return return
} }
// 先尝试通过 token 查找 Agent
agent := c.agentService.GetByToken(token) agent := c.agentService.GetByToken(token)
// 如果找不到,尝试验证令牌并通过 machine_id 查找
if agent == nil {
machineID := ctx.GetHeader("X-Machine-ID")
if machineID != "" {
// 验证令牌是否有效
if _, err := c.agentService.ValidateToken(token); err == nil {
// 令牌有效,尝试通过 machine_id 查找 Agent
agent = c.agentService.GetByMachineID(machineID)
}
}
}
if agent == nil { if agent == nil {
utils.Unauthorized(ctx, "无效的 Token") utils.Unauthorized(ctx, "无效的 Token")
return return
+9
View File
@@ -230,6 +230,15 @@ func (s *AgentService) GetByToken(token string) *models.Agent {
return &agent return &agent
} }
// GetByMachineID 根据 MachineID 获取 Agent
func (s *AgentService) GetByMachineID(machineID string) *models.Agent {
var agent models.Agent
if err := database.DB.Where("machine_id = ?", machineID).First(&agent).Error; err != nil {
return nil
}
return &agent
}
// List 获取 Agent 列表 // List 获取 Agent 列表
func (s *AgentService) List() []models.Agent { func (s *AgentService) List() []models.Agent {
var agents []models.Agent var agents []models.Agent