فهرست منبع

auto update script executed

Toby Chui 1 سال پیش
والد
کامیت
755b89d9af
5فایلهای تغییر یافته به همراه62 افزوده شده و 41 حذف شده
  1. 7 3
      main.go
  2. 1 1
      mod/mdns/mdns.go
  3. 39 37
      start.go
  4. 7 0
      web/tools/mdns.html
  5. 8 0
      wrappers.go

+ 7 - 3
main.go

@@ -36,6 +36,7 @@ import (
 var noauth = flag.Bool("noauth", false, "Disable authentication for management interface")
 var showver = flag.Bool("version", false, "Show version of this server")
 var allowSshLoopback = flag.Bool("sshlb", false, "Allow loopback web ssh connection (DANGER)")
+var allowMdnsScanning = flag.Bool("mdns", true, "Enable mDNS scanner and transponder")
 var ztAuthToken = flag.String("ztauth", "", "ZeroTier authtoken for the local node")
 var ztAPIPort = flag.Int("ztport", 9993, "ZeroTier controller API port")
 var acmeAutoRenewInterval = flag.Int("autorenew", 86400, "ACME auto TLS/SSL certificate renew check interval (seconds)")
@@ -96,9 +97,12 @@ func ShutdownSeq() {
 	netstatBuffers.Close()
 	fmt.Println("- Closing Statistic Collector")
 	statisticCollector.Close()
-	fmt.Println("- Stopping mDNS Discoverer")
-	//Stop the mdns service
-	mdnsTickerStop <- true
+	if mdnsTickerStop != nil {
+		fmt.Println("- Stopping mDNS Discoverer")
+		// Stop the mdns service
+		mdnsTickerStop <- true
+	}
+
 	mdnsScanner.Close()
 	fmt.Println("- Closing Certificates Auto Renewer")
 	acmeAutoRenewer.Close()

+ 1 - 1
mod/mdns/mdns.go

@@ -226,7 +226,7 @@ func (m *MDNSHost) Scan(timeout int, domainFilter string) []*NetworkHost {
 	return discoveredHost
 }
 
-//Get all mac address of all interfaces
+// Get all mac address of all interfaces
 func getMacAddr() ([]string, error) {
 	ifas, err := net.Interfaces()
 	if err != nil {

+ 39 - 37
start.go

@@ -114,47 +114,49 @@ func startupSequence() {
 		This discover nearby ArozOS Nodes or other services
 		that provide mDNS discovery with domain (e.g. Synology NAS)
 	*/
-	portInt, err := strconv.Atoi(strings.Split(handler.Port, ":")[1])
-	if err != nil {
-		portInt = 8000
-	}
-	mdnsScanner, err = mdns.NewMDNS(mdns.NetworkHost{
-		HostName:     "zoraxy_" + nodeUUID,
-		Port:         portInt,
-		Domain:       "zoraxy.imuslab.com",
-		Model:        "Network Gateway",
-		UUID:         nodeUUID,
-		Vendor:       "imuslab.com",
-		BuildVersion: version,
-	}, "")
-	if err != nil {
-		log.Println("Unable to startup mDNS service.")
-		log.Fatal(err)
-	}
 
-	//Start initial scanning
-	go func() {
-		hosts := mdnsScanner.Scan(30, "")
-		previousmdnsScanResults = hosts
-		log.Println("mDNS Startup scan completed")
-	}()
-
-	//Create a ticker to update mDNS results every 5 minutes
-	ticker := time.NewTicker(15 * time.Minute)
-	stopChan := make(chan bool)
-	go func() {
-		for {
-			select {
-			case <-stopChan:
-				ticker.Stop()
-			case <-ticker.C:
+	if *allowMdnsScanning {
+		portInt, err := strconv.Atoi(strings.Split(handler.Port, ":")[1])
+		if err != nil {
+			portInt = 8000
+		}
+		mdnsScanner, err = mdns.NewMDNS(mdns.NetworkHost{
+			HostName:     "zoraxy_" + nodeUUID,
+			Port:         portInt,
+			Domain:       "zoraxy.arozos.com",
+			Model:        "Network Gateway",
+			UUID:         nodeUUID,
+			Vendor:       "imuslab.com",
+			BuildVersion: version,
+		}, "")
+		if err != nil {
+			log.Println("Unable to startup mDNS service. Disabling mDNS services")
+		} else {
+			//Start initial scanning
+			go func() {
 				hosts := mdnsScanner.Scan(30, "")
 				previousmdnsScanResults = hosts
-				log.Println("mDNS scan result updated")
-			}
+				log.Println("mDNS Startup scan completed")
+			}()
+
+			//Create a ticker to update mDNS results every 5 minutes
+			ticker := time.NewTicker(15 * time.Minute)
+			stopChan := make(chan bool)
+			go func() {
+				for {
+					select {
+					case <-stopChan:
+						ticker.Stop()
+					case <-ticker.C:
+						hosts := mdnsScanner.Scan(30, "")
+						previousmdnsScanResults = hosts
+						log.Println("mDNS scan result updated")
+					}
+				}
+			}()
+			mdnsTickerStop = stopChan
 		}
-	}()
-	mdnsTickerStop = stopChan
+	}
 
 	/*
 		Global Area Network

+ 7 - 0
web/tools/mdns.html

@@ -96,6 +96,13 @@
                     $('<th>').text('Vendor')
                     )
                 );
+
+                if (data.error != undefined){
+                    $('#mdns-hosts').html(`<table class="ui celled unstackable table"><tbody></tbody></table>`);
+                    $('#mdns-hosts').find("tbody").append(`<tr><td colspan="5"><i class="ui red circle times icon"></i> ${data.error}</td></tr>`);
+                    $("#discover").addClass("disabled");
+                    return;
+                }
                 
                 // Create table body
                 var tableBody = $('<tbody>');

+ 8 - 0
wrappers.go

@@ -156,11 +156,19 @@ func HandleUptimeMonitorListing(w http.ResponseWriter, r *http.Request) {
 
 // Handle listing current registered mdns nodes
 func HandleMdnsListing(w http.ResponseWriter, r *http.Request) {
+	if mdnsScanner == nil {
+		utils.SendErrorResponse(w, "mDNS scanner is disabled on this host")
+		return
+	}
 	js, _ := json.Marshal(previousmdnsScanResults)
 	utils.SendJSONResponse(w, string(js))
 }
 
 func HandleMdnsScanning(w http.ResponseWriter, r *http.Request) {
+	if mdnsScanner == nil {
+		utils.SendErrorResponse(w, "mDNS scanner is disabled on this host")
+		return
+	}
 	domain, err := utils.PostPara(r, "domain")
 	var hosts []*mdns.NetworkHost
 	if err != nil {