118 lines
3.0 KiB
Go
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})
|
|
}
|