2026-04-06 00:20:51 -05:00

118 lines
3.0 KiB
Go

package connector
import (
"net/http"
"github.com/gin-gonic/gin"
)
func (tc *TsConnector) TcTargetsList(ctx *gin.Context) {
jsonTargets, err := tc.teamserver.TsTargetsList()
if err != nil {
ctx.JSON(http.StatusOK, gin.H{"message": err.Error(), "ok": false})
return
}
ctx.Data(http.StatusOK, "application/json; charset=utf-8", []byte(jsonTargets))
}
func (tc *TsConnector) TcTargetsAdd(ctx *gin.Context) {
var m map[string]interface{}
var targets []map[string]interface{}
if err := ctx.ShouldBindJSON(&m); err != nil {
ctx.JSON(http.StatusOK, gin.H{"message": "invalid JSON data", "ok": false})
return
}
arr, ok := m["targets"].([]interface{})
if !ok {
ctx.JSON(http.StatusOK, gin.H{"message": "invalid JSON structure", "ok": false})
return
}
for _, v := range arr {
if obj, ok := v.(map[string]interface{}); ok {
targets = append(targets, obj)
}
}
err := tc.teamserver.TsTargetsAdd(targets)
if err != nil {
ctx.JSON(http.StatusOK, gin.H{"message": err.Error(), "ok": false})
return
}
ctx.JSON(http.StatusOK, gin.H{"message": "", "ok": true})
}
type TargetEdit struct {
TargetId string `json:"t_target_id"`
Computer string `json:"t_computer"`
Domain string `json:"t_domain"`
Address string `json:"t_address"`
Os int `json:"t_os"`
OsDesk string `json:"t_os_desk"`
Tag string `json:"t_tag"`
Info string `json:"t_info"`
Alive bool `json:"t_alive"`
}
func (tc *TsConnector) TcTargetEdit(ctx *gin.Context) {
var targetEdit TargetEdit
err := ctx.ShouldBindJSON(&targetEdit)
if err != nil {
ctx.JSON(http.StatusOK, gin.H{"message": "invalid JSON data", "ok": false})
return
}
err = tc.teamserver.TsTargetsEdit(targetEdit.TargetId, targetEdit.Computer, targetEdit.Domain, targetEdit.Address, targetEdit.Os, targetEdit.OsDesk, targetEdit.Tag, targetEdit.Info, targetEdit.Alive)
if err != nil {
ctx.JSON(http.StatusOK, gin.H{"message": err.Error(), "ok": false})
return
}
ctx.JSON(http.StatusOK, gin.H{"message": "", "ok": true})
}
type TargetsTag struct {
TargetIdArray []string `json:"id_array"`
Tag string `json:"tag"`
}
func (tc *TsConnector) TcTargetSetTag(ctx *gin.Context) {
var (
targetsTag TargetsTag
err error
)
err = ctx.ShouldBindJSON(&targetsTag)
if err != nil {
ctx.JSON(http.StatusOK, gin.H{"message": "invalid JSON data", "ok": false})
return
}
err = tc.teamserver.TsTargetSetTag(targetsTag.TargetIdArray, targetsTag.Tag)
ctx.JSON(http.StatusOK, gin.H{"message": "", "ok": true})
}
type TargetRemove struct {
TargetsId []string `json:"target_id_array"`
}
func (tc *TsConnector) TcTargetRemove(ctx *gin.Context) {
var targetRemove TargetRemove
err := ctx.ShouldBindJSON(&targetRemove)
if err != nil {
ctx.JSON(http.StatusOK, gin.H{"message": "invalid JSON data", "ok": false})
return
}
err = tc.teamserver.TsTargetDelete(targetRemove.TargetsId)
if err != nil {
ctx.JSON(http.StatusOK, gin.H{"message": err.Error(), "ok": false})
return
}
ctx.JSON(http.StatusOK, gin.H{"message": "", "ok": true})
}