diff --git a/assets/lang/en.json b/assets/lang/en.json index 66fba05..9224f0b 100644 --- a/assets/lang/en.json +++ b/assets/lang/en.json @@ -65,5 +65,6 @@ "Param Error": "Param error", "Frp Client Error": "Frp client error", "Proxy Exist,": "Proxy name exist", - "Proxy Not Exist": "Proxy name not exist" + "Proxy Not Exist": "Proxy name not exist", + "Client Tips": "Client tips" } \ No newline at end of file diff --git a/assets/lang/zh.json b/assets/lang/zh.json index a984944..8af909d 100644 --- a/assets/lang/zh.json +++ b/assets/lang/zh.json @@ -65,5 +65,6 @@ "Param Error": "参数错误", "Frp Client Error": "Frp客户端错误", "Proxy Exist": "代理名称重复", - "Proxy Not Exist": "代理名称不存在" + "Proxy Not Exist": "代理名称不存在", + "Client Tips": "客户端提示" } \ No newline at end of file diff --git a/assets/static/css/index.css b/assets/static/css/index.css index a963809..bee4330 100644 --- a/assets/static/css/index.css +++ b/assets/static/css/index.css @@ -81,11 +81,11 @@ section { } .layui-form-label { - width: 100px; + width: 120px; } .layui-input-block { - margin-left: 130px; + margin-left: 150px; } .layui-btn-sm { diff --git a/assets/static/js/index-proxy-list.js b/assets/static/js/index-proxy-list.js index 37cad5a..9921ed7 100644 --- a/assets/static/js/index-proxy-list.js +++ b/assets/static/js/index-proxy-list.js @@ -46,6 +46,7 @@ var loadProxyInfo = (function ($) { temp.local_ip = temp.local_ip || '-'; temp.local_port = temp.local_port || '-'; temp.use_encryption = temp.use_encryption || false; + temp.use_compression = temp.use_compression || false; if (currentProxyType === 'http' || currentProxyType === 'https') { temp.custom_domains = temp.custom_domains || '-'; temp.subdomain = temp.subdomain || '-'; @@ -180,7 +181,7 @@ var loadProxyInfo = (function ($) { type: 1, title: false, skin: 'proxy-popup', - area: ['400px', '400px'], + area: ['450px', '400px'], content: content, btn: [i18n['Confirm'], i18n['Cancel']], btn1: function (index) { @@ -254,13 +255,15 @@ var loadProxyInfo = (function ($) { data: JSON.stringify(data), success: function (result) { if (result.success) { - reloadTable(); layui.layer.close(index); - layui.layer.msg(i18n['OperateSuccess'], function (index) { - layui.layer.close(index); - }); + reloadTable(); + layui.layer.msg(i18n['OperateSuccess']); } else { errorMsg(result); + if (result.code === 5) { + layui.layer.close(index); + reloadTable(); + } } }, complete: function () { @@ -278,10 +281,19 @@ var loadProxyInfo = (function ($) { layui.layer.msg(i18n['ShouldCheckProxy']); return; } + data.forEach(function (temp) { + for (var key in temp) { + if (typeof temp[key] === 'boolean') { + temp[key] = temp[key] + ''; + } + } + }); layui.layer.confirm(i18n['ConfirmRemoveProxy'], { title: i18n['OperationConfirm'], btn: [i18n['Confirm'], i18n['Cancel']] }, function (index) { + layui.layer.close(index); + var loading = layui.layer.load(); $.post({ url: '/remove', @@ -290,13 +302,15 @@ var loadProxyInfo = (function ($) { data: JSON.stringify(data), success: function (result) { if (result.success) { - reloadTable(); layui.layer.close(index); - layui.layer.msg(i18n['OperateSuccess'], function (index) { - layui.layer.close(index); - }); + reloadTable(); + layui.layer.msg(i18n['OperateSuccess']); } else { errorMsg(result); + if (result.code === 5) { + layui.layer.close(index); + reloadTable(); + } } }, complete: function () { @@ -327,7 +341,15 @@ var loadProxyInfo = (function ($) { reason = i18n['ProxyExist']; else if (result.code === 4) reason = i18n['ProxyNotExist']; - layui.layer.msg(i18n['OperateFailed'] + ',' + reason) + if (result.code === 5) { + layui.layer.alert(result.message, { + title: i18n['ClientTips'], + maxWidth: 350, + btn: [i18n['Confirm']] + }); + } else { + layui.layer.msg(i18n['OperateFailed'] + ',' + reason); + } } return loadProxyInfo; diff --git a/assets/static/js/index-proxy-overview.js b/assets/static/js/index-proxy-overview.js index 7440eac..2704a58 100644 --- a/assets/static/js/index-proxy-overview.js +++ b/assets/static/js/index-proxy-overview.js @@ -39,7 +39,7 @@ var loadOverview = (function ($) { var $section = $('#content > section'); var cols = [ {field: 'name', title: i18n['Name'], sort: true}, - {field: 'type', title: i18n['Type'], width: 100, sort: true}, + {field: 'type', title: i18n['Type'], width: 110, sort: true}, { field: 'local_addr', title: i18n['LocalAddress'], diff --git a/config/frpc-panel.toml b/config/frpc-panel.toml index 0fd31cf..34a39ee 100644 --- a/config/frpc-panel.toml +++ b/config/frpc-panel.toml @@ -3,8 +3,8 @@ # frps panel config info plugin_addr = "0.0.0.0" plugin_port = 7300 -#admin_user = "admin" -#admin_pwd = "admin" +admin_user = "admin" +admin_pwd = "admin" # specified login state keep time admin_keep_time = 0 diff --git a/pkg/server/controller/controller.go b/pkg/server/controller/controller.go index f433bd5..febe586 100644 --- a/pkg/server/controller/controller.go +++ b/pkg/server/controller/controller.go @@ -134,6 +134,7 @@ func (c *HandleController) MakeLangFunc() func(context *gin.Context) { "FrpClientError": ginI18n.MustGetMessage(context, "Frp Client Error"), "ProxyExist": ginI18n.MustGetMessage(context, "Proxy Exist"), "ProxyNotExist": ginI18n.MustGetMessage(context, "Proxy Not Exist"), + "ClientTips": ginI18n.MustGetMessage(context, "Client Tips"), }) } } @@ -179,6 +180,7 @@ func (c *HandleController) MakeAddProxyFunc() func(context *gin.Context) { } delete(proxy, NameKey) + delete(proxy, OldNameKey) clientProxies[name] = proxy res := c.UpdateFrpcConfig() @@ -380,6 +382,7 @@ func (c *HandleController) UpdateFrpcConfig() ProxyResponse { } c.parseResponse(&res, response) + if res.Success { c.ReloadFrpcConfig(&res) } diff --git a/pkg/server/controller/utils.go b/pkg/server/controller/utils.go index 3b50556..db1934a 100644 --- a/pkg/server/controller/utils.go +++ b/pkg/server/controller/utils.go @@ -80,31 +80,33 @@ func (c *HandleController) getClientResponse(request *http.Request, client *http return response, err } -func (c *HandleController) parseResponse(res *ProxyResponse, response *http.Response) string { +func (c *HandleController) parseResponse(res *ProxyResponse, response *http.Response) { res.Code = response.StatusCode body, err := io.ReadAll(response.Body) if err != nil { res.Success = false res.Message = err.Error() } else { + bodyString := string(body) url := response.Request.URL if res.Code == http.StatusOK { res.Success = true - res.Data = string(body) + res.Data = bodyString res.Message = fmt.Sprintf("Proxy to %s success", url) } else { res.Success = false if res.Code == http.StatusNotFound { res.Message = fmt.Sprintf("Proxy to %s error: url not found", url) + } else if res.Code == http.StatusBadRequest { + res.Code = ReloadFail + res.Message = bodyString } else { - res.Message = fmt.Sprintf("Proxy to %s error: %s", url, string(body)) + res.Message = fmt.Sprintf("Proxy to %s error: %s", url, bodyString) } } } log.Printf(res.Message) - - return string(body) } func (c *HandleController) parseConfigure(content, proxyType string) (interface{}, error) { diff --git a/pkg/server/controller/variables.go b/pkg/server/controller/variables.go index 9eeed9f..ed78441 100644 --- a/pkg/server/controller/variables.go +++ b/pkg/server/controller/variables.go @@ -10,6 +10,7 @@ const ( FrpClientError ProxyExist ProxyNotExist + ReloadFail ) const (