Browse Source

auto update script executed

Toby Chui 1 year ago
parent
commit
755b89d9af
5 changed files with 62 additions and 41 deletions
  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 noauth = flag.Bool("noauth", false, "Disable authentication for management interface")
 var showver = flag.Bool("version", false, "Show version of this server")
 var showver = flag.Bool("version", false, "Show version of this server")
 var allowSshLoopback = flag.Bool("sshlb", false, "Allow loopback web ssh connection (DANGER)")
 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 ztAuthToken = flag.String("ztauth", "", "ZeroTier authtoken for the local node")
 var ztAPIPort = flag.Int("ztport", 9993, "ZeroTier controller API port")
 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)")
 var acmeAutoRenewInterval = flag.Int("autorenew", 86400, "ACME auto TLS/SSL certificate renew check interval (seconds)")
@@ -96,9 +97,12 @@ func ShutdownSeq() {
 	netstatBuffers.Close()
 	netstatBuffers.Close()
 	fmt.Println("- Closing Statistic Collector")
 	fmt.Println("- Closing Statistic Collector")
 	statisticCollector.Close()
 	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()
 	mdnsScanner.Close()
 	fmt.Println("- Closing Certificates Auto Renewer")
 	fmt.Println("- Closing Certificates Auto Renewer")
 	acmeAutoRenewer.Close()
 	acmeAutoRenewer.Close()

+ 1 - 1
mod/mdns/mdns.go

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

+ 39 - 37
start.go

@@ -114,47 +114,49 @@ func startupSequence() {
 		This discover nearby ArozOS Nodes or other services
 		This discover nearby ArozOS Nodes or other services
 		that provide mDNS discovery with domain (e.g. Synology NAS)
 		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, "")
 				hosts := mdnsScanner.Scan(30, "")
 				previousmdnsScanResults = hosts
 				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
 		Global Area Network

+ 7 - 0
web/tools/mdns.html

@@ -96,6 +96,13 @@
                     $('<th>').text('Vendor')
                     $('<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
                 // Create table body
                 var tableBody = $('<tbody>');
                 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
 // Handle listing current registered mdns nodes
 func HandleMdnsListing(w http.ResponseWriter, r *http.Request) {
 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)
 	js, _ := json.Marshal(previousmdnsScanResults)
 	utils.SendJSONResponse(w, string(js))
 	utils.SendJSONResponse(w, string(js))
 }
 }
 
 
 func HandleMdnsScanning(w http.ResponseWriter, r *http.Request) {
 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")
 	domain, err := utils.PostPara(r, "domain")
 	var hosts []*mdns.NetworkHost
 	var hosts []*mdns.NetworkHost
 	if err != nil {
 	if err != nil {