mirror of
https://github.com/Buriburizaem0n/nezha_domains.git
synced 2026-02-04 04:30:05 +00:00
fix list apis (#453)
This commit is contained in:
@@ -7,12 +7,35 @@ import (
|
||||
"strings"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
"github.com/jinzhu/copier"
|
||||
"golang.org/x/net/idna"
|
||||
|
||||
"github.com/naiba/nezha/model"
|
||||
"github.com/naiba/nezha/service/singleton"
|
||||
)
|
||||
|
||||
// List DDNS Profiles
|
||||
// @Summary List DDNS profiles
|
||||
// @Schemes
|
||||
// @Description List DDNS profiles
|
||||
// @Security BearerAuth
|
||||
// @Tags auth required
|
||||
// @Produce json
|
||||
// @Success 200 {object} model.CommonResponse[[]*model.DDNSProfile]
|
||||
// @Router /ddns [get]
|
||||
func listDDNS(c *gin.Context) ([]*model.DDNSProfile, error) {
|
||||
var ddnsProfiles []*model.DDNSProfile
|
||||
|
||||
singleton.DDNSCacheLock.RLock()
|
||||
defer singleton.DDNSCacheLock.RUnlock()
|
||||
|
||||
if err := copier.Copy(&ddnsProfiles, &singleton.DDNSList); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return ddnsProfiles, nil
|
||||
}
|
||||
|
||||
// Add DDNS profile
|
||||
// @Summary Add DDNS profile
|
||||
// @Security BearerAuth
|
||||
@@ -66,7 +89,8 @@ func createDDNS(c *gin.Context) (uint64, error) {
|
||||
return 0, newGormError("%v", err)
|
||||
}
|
||||
|
||||
singleton.OnDDNSUpdate()
|
||||
singleton.OnDDNSUpdate(&p)
|
||||
singleton.UpdateDDNSList()
|
||||
|
||||
return p.ID, nil
|
||||
}
|
||||
@@ -136,7 +160,8 @@ func updateDDNS(c *gin.Context) (any, error) {
|
||||
return nil, newGormError("%v", err)
|
||||
}
|
||||
|
||||
singleton.OnDDNSUpdate()
|
||||
singleton.OnDDNSUpdate(&p)
|
||||
singleton.UpdateDDNSList()
|
||||
|
||||
return nil, nil
|
||||
}
|
||||
@@ -163,60 +188,12 @@ func batchDeleteDDNS(c *gin.Context) (any, error) {
|
||||
return nil, newGormError("%v", err)
|
||||
}
|
||||
|
||||
singleton.OnDDNSUpdate()
|
||||
singleton.OnDDNSDelete(ddnsConfigs)
|
||||
singleton.UpdateDDNSList()
|
||||
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
// List DDNS Profiles
|
||||
// @Summary List DDNS profiles
|
||||
// @Schemes
|
||||
// @Description List DDNS profiles
|
||||
// @Security BearerAuth
|
||||
// @Tags auth required
|
||||
// @param id query string false "Profile ID"
|
||||
// @Produce json
|
||||
// @Success 200 {object} model.CommonResponse[[]model.DDNSProfile]
|
||||
// @Router /ddns [get]
|
||||
func listDDNS(c *gin.Context) ([]model.DDNSProfile, error) {
|
||||
var idList []uint64
|
||||
idQuery := c.Query("id")
|
||||
|
||||
if idQuery != "" {
|
||||
idListStr := strings.Split(idQuery, ",")
|
||||
idList = make([]uint64, 0, len(idListStr))
|
||||
for _, v := range idListStr {
|
||||
id, err := strconv.ParseUint(v, 10, 64)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
idList = append(idList, id)
|
||||
}
|
||||
}
|
||||
|
||||
var ddnsProfiles []model.DDNSProfile
|
||||
|
||||
singleton.DDNSCacheLock.RLock()
|
||||
if len(idList) > 0 {
|
||||
ddnsProfiles = make([]model.DDNSProfile, 0, len(idList))
|
||||
for _, id := range idList {
|
||||
if profile, ok := singleton.DDNSCache[id]; ok {
|
||||
ddnsProfiles = append(ddnsProfiles, *profile)
|
||||
} else {
|
||||
return nil, fmt.Errorf("profile id %d not found", id)
|
||||
}
|
||||
}
|
||||
} else {
|
||||
ddnsProfiles = make([]model.DDNSProfile, 0, len(singleton.DDNSCache))
|
||||
for _, profile := range singleton.DDNSCache {
|
||||
ddnsProfiles = append(ddnsProfiles, *profile)
|
||||
}
|
||||
}
|
||||
|
||||
singleton.DDNSCacheLock.RUnlock()
|
||||
return ddnsProfiles, nil
|
||||
}
|
||||
|
||||
// List DDNS Providers
|
||||
// @Summary List DDNS providers
|
||||
// @Schemes
|
||||
|
||||
@@ -533,7 +533,7 @@ func (ma *memberAPI) addOrEditDDNS(c *gin.Context) {
|
||||
})
|
||||
return
|
||||
}
|
||||
singleton.OnDDNSUpdate()
|
||||
//singleton.OnDDNSUpdate()
|
||||
c.JSON(http.StatusOK, model.Response{
|
||||
Code: http.StatusOK,
|
||||
})
|
||||
|
||||
@@ -5,6 +5,7 @@ import (
|
||||
"strconv"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
"github.com/jinzhu/copier"
|
||||
"github.com/naiba/nezha/model"
|
||||
"github.com/naiba/nezha/service/singleton"
|
||||
"gorm.io/gorm"
|
||||
@@ -17,14 +18,15 @@ import (
|
||||
// @Description List notification
|
||||
// @Tags auth required
|
||||
// @Produce json
|
||||
// @Success 200 {object} model.CommonResponse[any]
|
||||
// @Success 200 {object} model.CommonResponse[[]*model.Notification]
|
||||
// @Router /notification [get]
|
||||
func listNotification(c *gin.Context) ([]model.Notification, error) {
|
||||
func listNotification(c *gin.Context) ([]*model.Notification, error) {
|
||||
singleton.NotificationsLock.RLock()
|
||||
defer singleton.NotificationsLock.RUnlock()
|
||||
notifications := make([]model.Notification, 0, len(singleton.NotificationMap))
|
||||
for _, n := range singleton.NotificationMap {
|
||||
notifications = append(notifications, *n)
|
||||
|
||||
var notifications []*model.Notification
|
||||
if err := copier.Copy(¬ifications, &singleton.NotificationListSorted); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return notifications, nil
|
||||
}
|
||||
@@ -73,6 +75,7 @@ func createNotification(c *gin.Context) (uint64, error) {
|
||||
}
|
||||
|
||||
singleton.OnRefreshOrAddNotification(&n)
|
||||
singleton.UpdateNotificationList()
|
||||
return n.ID, nil
|
||||
}
|
||||
|
||||
@@ -130,6 +133,7 @@ func updateNotification(c *gin.Context) (any, error) {
|
||||
}
|
||||
|
||||
singleton.OnRefreshOrAddNotification(&n)
|
||||
singleton.UpdateNotificationList()
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
@@ -166,5 +170,6 @@ func batchDeleteNotification(c *gin.Context) (any, error) {
|
||||
}
|
||||
|
||||
singleton.OnDeleteNotification(n)
|
||||
singleton.UpdateNotificationList()
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
@@ -5,6 +5,7 @@ import (
|
||||
"strconv"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
"github.com/jinzhu/copier"
|
||||
|
||||
"github.com/naiba/nezha/model"
|
||||
"github.com/naiba/nezha/pkg/utils"
|
||||
@@ -18,12 +19,17 @@ import (
|
||||
// @Description List server
|
||||
// @Tags auth required
|
||||
// @Produce json
|
||||
// @Success 200 {object} model.CommonResponse[any]
|
||||
// @Success 200 {object} model.CommonResponse[[]*model.Server]
|
||||
// @Router /server [get]
|
||||
func listServer(c *gin.Context) ([]*model.Server, error) {
|
||||
singleton.SortedServerLock.RLock()
|
||||
defer singleton.SortedServerLock.RUnlock()
|
||||
return singleton.SortedServerList, nil
|
||||
|
||||
var ssl []*model.Server
|
||||
if err := copier.Copy(&ssl, &singleton.SortedServerList); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return ssl, nil
|
||||
}
|
||||
|
||||
// Edit server
|
||||
|
||||
Reference in New Issue
Block a user