mirror of
				https://github.com/yggdrasil-network/yggdrasil-go.git
				synced 2025-11-04 03:05:07 +03:00 
			
		
		
		
	Add some more functions to JSON admin socket
This commit is contained in:
		
							parent
							
								
									9713e73969
								
							
						
					
					
						commit
						c3ca5c64b1
					
				
					 1 changed files with 41 additions and 22 deletions
				
			
		| 
						 | 
					@ -103,21 +103,37 @@ func (a *admin) init(c *Core, listenaddr string) {
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		return admin_info{"sessions": sessions}, nil
 | 
							return admin_info{"sessions": sessions}, nil
 | 
				
			||||||
	})
 | 
						})
 | 
				
			||||||
 | 
						a.addHandler("addPeer", []string{"uri"}, func(in admin_info) (admin_info, error) {
 | 
				
			||||||
 | 
							if a.addPeer(in["uri"].(string)) == nil {
 | 
				
			||||||
 | 
								return admin_info{
 | 
				
			||||||
 | 
									"peers_added": []string{
 | 
				
			||||||
 | 
										in["uri"].(string),
 | 
				
			||||||
 | 
									},
 | 
				
			||||||
 | 
								}, nil
 | 
				
			||||||
 | 
							} else {
 | 
				
			||||||
 | 
								return admin_info{
 | 
				
			||||||
 | 
									"peers_not_added": []string{
 | 
				
			||||||
 | 
										in["uri"].(string),
 | 
				
			||||||
 | 
									},
 | 
				
			||||||
 | 
								}, errors.New("Failed to add peer")
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						})
 | 
				
			||||||
 | 
						a.addHandler("removePeer", []string{"port"}, func(in admin_info) (admin_info, error) {
 | 
				
			||||||
 | 
							if a.removePeer(fmt.Sprint(in["port"])) == nil {
 | 
				
			||||||
 | 
								return admin_info{
 | 
				
			||||||
 | 
									"peers_removed": []string{
 | 
				
			||||||
 | 
										fmt.Sprint(in["port"]),
 | 
				
			||||||
 | 
									},
 | 
				
			||||||
 | 
								}, nil
 | 
				
			||||||
 | 
							} else {
 | 
				
			||||||
 | 
								return admin_info{
 | 
				
			||||||
 | 
									"peers_not_removed": []string{
 | 
				
			||||||
 | 
										fmt.Sprint(in["port"]),
 | 
				
			||||||
 | 
									},
 | 
				
			||||||
 | 
								}, errors.New("Failed to remove peer")
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						})
 | 
				
			||||||
	/*
 | 
						/*
 | 
				
			||||||
		a.addHandler("addPeer", []string{"<proto://address:port>"}, func(out *[]byte, saddr ...string) {
 | 
					 | 
				
			||||||
			if a.addPeer(saddr[0]) == nil {
 | 
					 | 
				
			||||||
				*out = []byte("Adding peer: " + saddr[0] + "\n")
 | 
					 | 
				
			||||||
			} else {
 | 
					 | 
				
			||||||
				*out = []byte("Failed to add peer: " + saddr[0] + "\n")
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
		})
 | 
					 | 
				
			||||||
		a.addHandler("removePeer", []string{"<port>"}, func(out *[]byte, sport ...string) {
 | 
					 | 
				
			||||||
			if a.removePeer(sport[0]) == nil {
 | 
					 | 
				
			||||||
				*out = []byte("Removing peer: " + sport[0] + "\n")
 | 
					 | 
				
			||||||
			} else {
 | 
					 | 
				
			||||||
				*out = []byte("Failed to remove peer: " + sport[0] + "\n")
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
		})
 | 
					 | 
				
			||||||
		a.addHandler("getTunTap", nil, func(out *[]byte, _ ...string) {
 | 
							a.addHandler("getTunTap", nil, func(out *[]byte, _ ...string) {
 | 
				
			||||||
			var info admin_nodeInfo
 | 
								var info admin_nodeInfo
 | 
				
			||||||
			defer func() {
 | 
								defer func() {
 | 
				
			||||||
| 
						 | 
					@ -218,6 +234,9 @@ func (a *admin) handleRequest(conn net.Conn) {
 | 
				
			||||||
			return
 | 
								return
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							send["request"] = recv
 | 
				
			||||||
 | 
							send["status"] = "error"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	handlers:
 | 
						handlers:
 | 
				
			||||||
		for _, handler := range a.handlers {
 | 
							for _, handler := range a.handlers {
 | 
				
			||||||
			if recv["request"] == handler.name {
 | 
								if recv["request"] == handler.name {
 | 
				
			||||||
| 
						 | 
					@ -232,8 +251,8 @@ func (a *admin) handleRequest(conn net.Conn) {
 | 
				
			||||||
					if _, ok := recv[arg]; !ok {
 | 
										if _, ok := recv[arg]; !ok {
 | 
				
			||||||
						fmt.Println("Missing required argument", arg)
 | 
											fmt.Println("Missing required argument", arg)
 | 
				
			||||||
						send = admin_info{
 | 
											send = admin_info{
 | 
				
			||||||
							"error":  "Missing field '" + arg + "'",
 | 
												"error":     "One or more expected fields missing",
 | 
				
			||||||
							"fields": handler.args,
 | 
												"expecting": handler.args,
 | 
				
			||||||
						}
 | 
											}
 | 
				
			||||||
						break handlers
 | 
											break handlers
 | 
				
			||||||
					}
 | 
										}
 | 
				
			||||||
| 
						 | 
					@ -243,14 +262,14 @@ func (a *admin) handleRequest(conn net.Conn) {
 | 
				
			||||||
				// the handler
 | 
									// the handler
 | 
				
			||||||
				response, err := handler.handler(recv)
 | 
									response, err := handler.handler(recv)
 | 
				
			||||||
				if err != nil {
 | 
									if err != nil {
 | 
				
			||||||
					send = admin_info{
 | 
										send["error"] = err.Error()
 | 
				
			||||||
						"request": recv["request"],
 | 
										if response != nil {
 | 
				
			||||||
						"error":   err.Error(),
 | 
											send["response"] = response
 | 
				
			||||||
					}
 | 
										}
 | 
				
			||||||
				} else {
 | 
									} else {
 | 
				
			||||||
					send = admin_info{
 | 
										send["status"] = "success"
 | 
				
			||||||
						"request":  recv["request"],
 | 
										if response != nil {
 | 
				
			||||||
						"response": response,
 | 
											send["response"] = response
 | 
				
			||||||
					}
 | 
										}
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
				break
 | 
									break
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue