Browse Source

feat: 增加Agent代理服务-70%

tuonian 2 days ago
parent
commit
a65a3f1a47

+ 10 - 7
agent/handler.go

@@ -36,13 +36,16 @@ func OnServerConnected(c *Agent, data *models.AgentData) (interface{}, error) {
 		return nil, nil
 	}
 	nginx := &models.Nginx{
-		Name:     "Agent",
-		IsServer: false,
-		Proxy:    true,
-		IsLocal:  true,
-		Password: "",
-		Remark:   "agent",
-		IpAddr:   utils.GetNetIP(),
+		Name:      "Agent",
+		IsServer:  false,
+		Proxy:     true,
+		IsLocal:   true,
+		Password:  "",
+		Remark:    "agent",
+		IpAddr:    utils.GetNetIP(),
+		DataDir:   "/data/nginx",
+		NginxPath: "/usr/sbin/nginx",
+		NginxDir:  "/etc/nginx",
 	}
 	request := &models.AgentData{
 		Type: models.RegisterNginxType,

File diff suppressed because it is too large
+ 0 - 0
frontend/dist/assets/index-BDKWdQ_l.js


+ 1 - 1
frontend/dist/cdn/rich.js

@@ -1,2 +1,2 @@
-import{a as f,R as w,w as D}from"./react-all-18.2.0.js";import"./ace-builds-1.23.0.js";import{j as S}from"../assets/index-P4W_G7MK.js";var b=function(t){var e;return typeof t=="string"||!t||isNaN(t)?e=t:e="".concat(t,"px"),e};function j(r,t){return x(r)||E(r,t)||T(r,t)||I()}function I(){throw new TypeError(`Invalid attempt to destructure non-iterable instance.
+import{a as f,R as w,w as D}from"./react-all-18.2.0.js";import"./ace-builds-1.23.0.js";import{j as S}from"../assets/index-BDKWdQ_l.js";var b=function(t){var e;return typeof t=="string"||!t||isNaN(t)?e=t:e="".concat(t,"px"),e};function j(r,t){return x(r)||E(r,t)||T(r,t)||I()}function I(){throw new TypeError(`Invalid attempt to destructure non-iterable instance.
 In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function T(r,t){if(r){if(typeof r=="string")return O(r,t);var e=Object.prototype.toString.call(r).slice(8,-1);if(e==="Object"&&r.constructor&&(e=r.constructor.name),e==="Map"||e==="Set")return Array.from(r);if(e==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e))return O(r,t)}}function O(r,t){(t==null||t>r.length)&&(t=r.length);for(var e=0,o=new Array(t);e<t;e++)o[e]=r[e];return o}function E(r,t){var e=r==null?null:typeof Symbol<"u"&&r[Symbol.iterator]||r["@@iterator"];if(e!=null){var o,i,u,l,n=[],a=!0,s=!1;try{if(u=(e=e.call(r)).next,t!==0)for(;!(a=(o=u.call(e)).done)&&(n.push(o.value),n.length!==t);a=!0);}catch(c){s=!0,i=c}finally{try{if(!a&&e.return!=null&&(l=e.return(),Object(l)!==l))return}finally{if(s)throw i}}return n}}function x(r){if(Array.isArray(r))return r}var L=function(t,e){return!e||!t.saveAsObj?e:t.mode==="json"?JSON.parse(e):t.mode==="yaml"||t.mode==="yml"?S.load(e):e},M=function(t,e){return typeof e=="string"||!e?e:t.mode==="json"?JSON.stringify(e,null,2):t.mode==="yaml"||t.mode==="yml"?S.dump(e):e};const k=function(r){var t=r.value,e=r.className,o=e===void 0?"":e,i=r.column,u=r.onChange,l=r.readonly,n=i,a=n.mode;a==="yml"?a="yaml":a||(a="json");var s=f.useState(),c=j(s,2),A=c[0],y=c[1],C=f.useState(""),h=j(C,2),N=h[0],p=h[1],m=f.useRef(),R=function(v){y(v);try{var g=L(n,v);m.current=g,u==null||u(g),p("")}catch{p("has-err")}};return f.useEffect(function(){if(!(m.current&&t===m.current))try{y(M(n,t))}catch(d){console.warn("fromObjData: ",d)}},[t]),w.createElement(D,{mode:a,value:A,showPrintMargin:n.printMargin,showGutter:!n.hiddenLines,highlightActiveLine:!0,theme:"chrome",height:b(i.height||120),width:b(i.width)||"80%",onChange:R,readOnly:!!i.disabled||l,setOptions:n.options,className:"rich-input json-input ".concat(o," ").concat(N),placeholder:n.placeholder})};export{k as default,M as fromObjData,L as toObjData};

+ 1 - 1
frontend/dist/index.html

@@ -6,7 +6,7 @@
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
     <title>NginxUI</title>
     <script type="application/javascript" src="/nginx-ui/config.js"></script>
-    <script type="module" crossorigin src="/nginx-ui/assets/index-P4W_G7MK.js"></script>
+    <script type="module" crossorigin src="/nginx-ui/assets/index-BDKWdQ_l.js"></script>
     <link rel="modulepreload" crossorigin href="/nginx-ui/cdn/ace-builds-1.23.0.js">
     <link rel="modulepreload" crossorigin href="/nginx-ui/cdn/react-all-18.2.0.js">
     <link rel="stylesheet" crossorigin href="/nginx-ui/assets/index-CdH8Zg1S.css">

+ 4 - 0
frontend/src/models/nginx.ts

@@ -19,6 +19,10 @@ export type INginx = {
    */
   nginxPath?:string
   isLocal: boolean
+  /**
+   * Agent代理
+   */
+  proxy?:boolean
   ipAddr: string
   port: number
   user: string

+ 1 - 1
frontend/src/pages/nginx/components/StopStartButton.tsx

@@ -75,7 +75,7 @@ export const StopStartButton = () => {
 
     useEffect(()=>{
         fetchStatus()
-    },[])
+    },[nginx])
 
     if (!nginx){
         return null

+ 6 - 1
frontend/src/pages/nginx/list.tsx

@@ -121,7 +121,12 @@ export const NginxList = ()=>{
     {
       dataIndex: 'isLocal',
       title: '实例类型',
-      render: value => value ? '本地实例':<Tag color="orange">远程实例</Tag>
+      render: (value,record) => {
+        if (record.proxy){
+          return (<Tag color="blue">Agent</Tag>)
+        }
+        return value ? '本地实例':<Tag color="orange">远程实例</Tag>
+      }
     },
     {
       dataIndex: 'ipAddr',

+ 4 - 4
server/nginx/manager.go

@@ -20,16 +20,16 @@ func GetInstance(nginx *models.Nginx) *Instance {
 			return instance
 		}
 	}
-	if nginx.IsLocal {
+	if nginx.Proxy {
 		instance = &Instance{
-			&LocalInstance{
+			&AgentInstance{
 				nginx: nginx,
 			},
 			nginx,
 		}
-	} else if nginx.Proxy {
+	} else if nginx.IsLocal {
 		instance = &Instance{
-			&AgentInstance{
+			&LocalInstance{
 				nginx: nginx,
 			},
 			nginx,

Some files were not shown because too many files changed in this diff