138 lines
3.3 KiB
Go
138 lines
3.3 KiB
Go
package controllers
|
|
|
|
import (
|
|
"anytunnel/at-admin/app/modules/web/models"
|
|
"anytunnel/at-admin/app/utils"
|
|
"regexp"
|
|
"strings"
|
|
"time"
|
|
|
|
validation "github.com/go-ozzo/ozzo-validation"
|
|
)
|
|
|
|
type ServerController struct {
|
|
BaseController
|
|
}
|
|
|
|
func (this *ServerController) Reset() {
|
|
serverModel := models.Server{}
|
|
serverId := this.GetString("server_id")
|
|
err := serverModel.Offline(serverId)
|
|
if err != nil {
|
|
this.JsonError(err)
|
|
}
|
|
err = serverModel.Reset(serverId)
|
|
if err != nil {
|
|
this.JsonError(err)
|
|
}
|
|
this.JsonSuccess("")
|
|
|
|
}
|
|
func (this *ServerController) Delete() {
|
|
serverModel := models.Server{}
|
|
serverId := this.GetString("server_id")
|
|
hasTunnel, err := serverModel.HasTunnelRef(serverId)
|
|
if err != nil {
|
|
this.JsonError(err)
|
|
}
|
|
if hasTunnel {
|
|
this.JsonError("Tunnel引用,不能删除")
|
|
}
|
|
err = serverModel.Delete(serverId)
|
|
if err != nil {
|
|
this.JsonError(err)
|
|
}
|
|
this.JsonSuccess("")
|
|
|
|
}
|
|
func (this *ServerController) Add() {
|
|
serverModel := models.Server{}
|
|
if this.Ctx.Input.IsPost() {
|
|
_, data := this.getServerFromPost(false)
|
|
_, err := serverModel.Insert(data)
|
|
if err != nil {
|
|
this.JsonError(err)
|
|
}
|
|
this.JsonSuccess("")
|
|
} else {
|
|
this.Data["action"] = "add"
|
|
this.viewLayout("server/form", "form")
|
|
}
|
|
}
|
|
func (this *ServerController) Edit() {
|
|
serverModel := models.Server{}
|
|
serverId := this.GetString("server_id")
|
|
if this.Ctx.Input.IsPost() {
|
|
_, data := this.getServerFromPost(true)
|
|
_, err := serverModel.Update(serverId, data)
|
|
if err != nil {
|
|
this.JsonError(err)
|
|
}
|
|
this.JsonSuccess("")
|
|
} else {
|
|
server, err := serverModel.GetServerByServerId(serverId)
|
|
if err != nil {
|
|
this.JsonError(err, "")
|
|
}
|
|
if len(server) == 0 {
|
|
this.ViewError("Server不存在")
|
|
}
|
|
this.Data["server"] = server
|
|
this.Data["action"] = "edit"
|
|
this.viewLayout("server/form", "form")
|
|
}
|
|
|
|
}
|
|
func (this *ServerController) List() {
|
|
|
|
userID := strings.Trim(this.GetString("user_id"), " ")
|
|
page, err := this.GetInt("page", 1)
|
|
if err != nil {
|
|
page = 1
|
|
}
|
|
//每页的条数
|
|
pageSize := 10
|
|
limit := (page - 1) * pageSize
|
|
|
|
serverModel := models.Server{}
|
|
var servers = []map[string]string{}
|
|
var serverCount = 0
|
|
if userID == "" {
|
|
serverCount, err = serverModel.CountServers()
|
|
servers, err = serverModel.GetServersByLimit(limit, pageSize)
|
|
} else {
|
|
serverCount, err = serverModel.CountServersByUserID(userID)
|
|
servers, err = serverModel.GetServersByUserIDAndLimit(userID, limit, pageSize)
|
|
}
|
|
if err != nil {
|
|
this.ViewError(err.Error())
|
|
}
|
|
|
|
this.Data["userID"] = userID
|
|
this.Data["servers"] = servers
|
|
this.Data["page"] = utils.NewMisc().Page(serverCount, page, pageSize, "/web/server/list?page={page}&user_id="+userID)
|
|
this.viewLayoutTitle("Server列表", "server/list", "form")
|
|
}
|
|
|
|
func (this *ServerController) getServerFromPost(isUpdate bool) (serverId string, server map[string]interface{}) {
|
|
server = map[string]interface{}{
|
|
"name": this.GetString("name"),
|
|
// "user_id": this.GetString("user_id"),
|
|
"user_id": 0,
|
|
"is_delete": 0,
|
|
}
|
|
err := validation.Validate(server["name"],
|
|
validation.Required.Error("名称不能为空"),
|
|
validation.Match(regexp.MustCompile("^.{1,15}$")).Error("名称长度必须是1-15字符"))
|
|
if err != nil {
|
|
this.JsonError(err.Error())
|
|
}
|
|
if isUpdate {
|
|
server["update_time"] = time.Now().Unix()
|
|
} else {
|
|
server["token"] = utils.NewMisc().RandString(32)
|
|
server["create_time"] = time.Now().Unix()
|
|
}
|
|
return
|
|
}
|