mirror of
https://github.com/yhl452493373/frpc-panel.git
synced 2026-04-04 14:27:01 +08:00
Compare commits
1 Commits
1.0.0
...
e8d64b9db2
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e8d64b9db2 |
@@ -179,8 +179,6 @@ func (c *HandleController) MakeAddProxyFunc() func(context *gin.Context) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
delete(proxy, NameKey)
|
|
||||||
delete(proxy, OldNameKey)
|
|
||||||
clientProxies[name] = proxy
|
clientProxies[name] = proxy
|
||||||
|
|
||||||
res := c.UpdateFrpcConfig()
|
res := c.UpdateFrpcConfig()
|
||||||
@@ -249,8 +247,6 @@ func (c *HandleController) MakeUpdateProxyFunc() func(context *gin.Context) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
delete(proxy, NameKey)
|
|
||||||
delete(proxy, OldNameKey)
|
|
||||||
delete(clientProxies, oldName)
|
delete(clientProxies, oldName)
|
||||||
clientProxies[name] = proxy
|
clientProxies[name] = proxy
|
||||||
|
|
||||||
@@ -369,8 +365,9 @@ func (c *HandleController) MakeProxyFunc() func(context *gin.Context) {
|
|||||||
|
|
||||||
func (c *HandleController) UpdateFrpcConfig() ProxyResponse {
|
func (c *HandleController) UpdateFrpcConfig() ProxyResponse {
|
||||||
res := ProxyResponse{}
|
res := ProxyResponse{}
|
||||||
|
|
||||||
requestUrl := c.buildRequestUrl("/api/config")
|
requestUrl := c.buildRequestUrl("/api/config")
|
||||||
request, _ := http.NewRequest("PUT", requestUrl, bytes.NewReader(serializeSectionsToString()))
|
request, _ := http.NewRequest("PUT", requestUrl, bytes.NewReader(serializeSections()))
|
||||||
response, err := c.getClientResponse(request, c.buildClient())
|
response, err := c.getClientResponse(request, c.buildClient())
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ import (
|
|||||||
"io"
|
"io"
|
||||||
"log"
|
"log"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
"sort"
|
||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
)
|
)
|
||||||
@@ -16,17 +17,36 @@ func trimString(str string) string {
|
|||||||
return strings.TrimSpace(str)
|
return strings.TrimSpace(str)
|
||||||
}
|
}
|
||||||
|
|
||||||
func serializeSectionsToString() []byte {
|
func sortSectionKeys(object ini.Section) []string {
|
||||||
|
var keys []string
|
||||||
|
for key := range object {
|
||||||
|
keys = append(keys, key)
|
||||||
|
}
|
||||||
|
sort.Strings(keys)
|
||||||
|
return keys
|
||||||
|
}
|
||||||
|
|
||||||
|
func serializeSections() []byte {
|
||||||
var build strings.Builder
|
var build strings.Builder
|
||||||
build.WriteString("[common]\n")
|
build.WriteString("[common]\n")
|
||||||
for key, value := range clientCommon {
|
|
||||||
build.WriteString(fmt.Sprintf("%s = %s\n", key, value))
|
for _, key := range sortSectionKeys(clientCommon) {
|
||||||
|
build.WriteString(fmt.Sprintf("%s = %s\n", key, clientCommon[key]))
|
||||||
}
|
}
|
||||||
build.WriteString("\n")
|
build.WriteString("\n")
|
||||||
|
|
||||||
for name, section := range clientProxies {
|
sections := Sections{clientProxies}
|
||||||
|
|
||||||
|
for _, sectionInfo := range sections.sort() {
|
||||||
|
name := sectionInfo.Name
|
||||||
build.WriteString(fmt.Sprintf("[%s]\n", name))
|
build.WriteString(fmt.Sprintf("[%s]\n", name))
|
||||||
for key, value := range section {
|
section := sectionInfo.Section
|
||||||
|
|
||||||
|
for _, key := range sortSectionKeys(section) {
|
||||||
|
value := section[key]
|
||||||
|
if key == NameKey || key == OldNameKey || trimString(value) == "" {
|
||||||
|
continue
|
||||||
|
}
|
||||||
build.WriteString(fmt.Sprintf("%s = %s\n", key, value))
|
build.WriteString(fmt.Sprintf("%s = %s\n", key, value))
|
||||||
}
|
}
|
||||||
build.WriteString("\n")
|
build.WriteString("\n")
|
||||||
|
|||||||
@@ -2,6 +2,8 @@ package controller
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/vaughan0/go-ini"
|
"github.com/vaughan0/go-ini"
|
||||||
|
"sort"
|
||||||
|
"strings"
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
@@ -39,6 +41,10 @@ type HTTPError struct {
|
|||||||
Err error
|
Err error
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (e *HTTPError) Error() string {
|
||||||
|
return e.Err.Error()
|
||||||
|
}
|
||||||
|
|
||||||
type Common struct {
|
type Common struct {
|
||||||
Common CommonInfo
|
Common CommonInfo
|
||||||
}
|
}
|
||||||
@@ -74,6 +80,33 @@ type ClientProxies struct {
|
|||||||
Proxy ini.Section `json:"proxy"`
|
Proxy ini.Section `json:"proxy"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func (e *HTTPError) Error() string {
|
type SectionInfo struct {
|
||||||
return e.Err.Error()
|
Name string
|
||||||
|
Section ini.Section
|
||||||
|
}
|
||||||
|
|
||||||
|
type Sections struct {
|
||||||
|
sections map[string]ini.Section
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *Sections) sort() []SectionInfo {
|
||||||
|
sectionInfos := make([]SectionInfo, 0)
|
||||||
|
|
||||||
|
for key, value := range s.sections {
|
||||||
|
sectionInfos = append(sectionInfos, SectionInfo{Name: key, Section: value})
|
||||||
|
}
|
||||||
|
|
||||||
|
sort.Slice(sectionInfos, func(i, j int) bool {
|
||||||
|
typeCompare := strings.Compare(sectionInfos[i].Section["type"], sectionInfos[j].Section["type"])
|
||||||
|
if typeCompare == -1 {
|
||||||
|
return true
|
||||||
|
} else if typeCompare == 0 {
|
||||||
|
nameCompare := strings.Compare(sectionInfos[i].Name, sectionInfos[j].Name)
|
||||||
|
return nameCompare == -1
|
||||||
|
} else {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
return sectionInfos
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user