Browse Source

fixed openwrt/windows scripts

afeiszli 3 years ago
parent
commit
bdd1c8fc38
4 changed files with 169 additions and 58 deletions
  1. 11 0
      README.md
  2. 56 48
      scripts/netclient-install.ps1
  3. 89 9
      scripts/netclient-install.sh
  4. 13 1
      scripts/nm-quick.sh

+ 11 - 0
README.md

@@ -88,6 +88,17 @@ After installing Netmaker, check out the [Walkthrough](https://itnext.io/getting
 
 
 - [Learning Resources](https://gravitl.com/resources)
 - [Learning Resources](https://gravitl.com/resources)
 
 
+# Community Projects
+
+- [Netmaker + Traefik Proxy](https://github.com/bsherman/netmaker-traefik)
+
+- [OpenWRT Netclient Packager](https://github.com/sbilly/netmaker-openwrt)
+
+- [Golang GUI](https://github.com/mattkasun/netmaker-gui)
+
+- [CoreDNS Plugin](https://github.com/SekoiaLab/netmaker-coredns)
+
+
 ## Disclaimer
 ## Disclaimer
  [WireGuard](https://wireguard.com/) is a registered trademark of Jason A. Donenfeld.
  [WireGuard](https://wireguard.com/) is a registered trademark of Jason A. Donenfeld.
 
 

+ 56 - 48
scripts/netclient-install.ps1

@@ -11,57 +11,65 @@ new-module -name netclient-install -scriptblock {
     Function Netclient-Install() {
     Function Netclient-Install() {
         param ($version='latest', $token)
         param ($version='latest', $token)
 
 
+            if($token -eq $null -or $token -eq ""){
+                Quit "-token required"
+            }
 
 
-    if($token -eq $null -or $token -eq ""){
-        Quit "-token required"
-    }
+            $software = "WireGuard";
+            $installed = (Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* | Where { $_.DisplayName -eq $software }) -ne $null
 
 
-    $software = "WireGuard";
-    $installed = (Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* | Where { $_.DisplayName -eq $software }) -ne $null
+            If(-Not $installed) {
+                Write-Host "'$software' is NOT installed. installing...";
+                $url = "https://download.wireguard.com/windows-client/wireguard-installer.exe"
+                $outpath = "$env:userprofile\Downloads\wireguard-installer.exe"
+                Invoke-WebRequest -Uri $url -OutFile $outpath
+                $args = @("Comma","Separated","Arguments")
+                Start-Process -Filepath "$env:userprofile\Downloads\wireguard-installer.exe" -ArgumentList $args -Wait
+                $software = "WireGuard";
+                $installed = (Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* | Where { $_.DisplayName -eq $software }) -ne $null
+                If(-Not $installed) {
+                    Quit "Could not install WireGuard"
+                } else {
+                    Write-Host "'$software' is installed."
+                }
+            } else {
+                Write-Host "'$software' is installed."
+            }
+            $outpath = "";
+            if (Test-Path -Path "C:\ProgramData\Netclient\bin\netclient.exe") {
+                $outpath = "C:\ProgramData\Netclient\bin\netclient.exe";
+            } else {
+                $outpath = "$env:userprofile\Downloads\netclient.exe"
+                Write-Host "'netclient.exe' is NOT installed. installing...";
+                Write-Host "https://github.com/gravitl/netmaker/releases/download/$version/netclient.exe";
+                $url = "https://github.com/gravitl/netmaker/releases/download/$version/netclient.exe"
+                Invoke-WebRequest -Uri $url -OutFile $outpath
+                $loc = Get-Location
+                Copy-Item -Path "$env:userprofile\Downloads\netclient.exe" -Destination "$loc\netclient.exe"
+            }
+            $runNum = "one","two"
+            foreach ($run in $runNum) { 
 
 
-    If(-Not $installed) {
-        Write-Host "'$software' is NOT installed. installing...";
-        $url = "https://download.wireguard.com/windows-client/wireguard-installer.exe"
-        $outpath = "$env:userprofile\Downloads\wireguard-installer.exe"
-        Invoke-WebRequest -Uri $url -OutFile $outpath
-        $args = @("Comma","Separated","Arguments")
-        Start-Process -Filepath "$env:userprofile\Downloads\wireguard-installer.exe" -ArgumentList $args -Wait
-        $software = "WireGuard";
-        $installed = (Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* | Where { $_.DisplayName -eq $software }) -ne $null
-        If(-Not $installed) {
-            Quit "Could not install WireGuard"
-        } else {
-            Write-Host "'$software' is installed."
-        }
-    } else {
-        Write-Host "'$software' is installed."
-    }
-    $outpath = "";
-    if (Test-Path -Path "C:\ProgramData\Netclient\bin\netclient.exe") {
-        $outpath = "C:\ProgramData\Netclient\bin\netclient.exe";
-    } else {
-        $outpath = "$env:userprofile\Downloads\netclient.exe"
-        Write-Host "'netclient.exe' is NOT installed. installing...";
-        Write-Host "https://github.com/gravitl/netmaker/releases/download/$version/netclient.exe";
-        $url = "https://github.com/gravitl/netmaker/releases/download/$version/netclient.exe"
-        Invoke-WebRequest -Uri $url -OutFile $outpath
-        $loc = Get-Location
-        Copy-Item -Path "$env:userprofile\Downloads\netclient.exe" -Destination "$loc\netclient.exe"
-    }
-    $NetArgs = @("join","-t",$token)
-    Start-Process -Filepath $outpath -ArgumentList $NetArgs -Wait
-    Add-MpPreference -ExclusionPath "C:\ProgramData\Netclient"
+                $NetArgs = @("join","-t",$token)
+                Start-Process -Filepath $outpath -ArgumentList $NetArgs -Wait
+                Add-MpPreference -ExclusionPath "C:\ProgramData\Netclient"
 
 
-    if ((Get-Command "netclient.exe" -ErrorAction SilentlyContinue) -eq $null) { 
-        if (-not (Test-Path -Path "C:\ProgramData\Netclient\bin\netclient.exe")) {
-            New-Item -Path "C:\ProgramData\Netclient" -Name "bin" -ItemType "directory"
-            Move-Item -Path "$env:userprofile\Downloads\netclient.exe" -Destination "C:\ProgramData\Netclient\bin\netclient.exe"
-            $oldpath = (Get-ItemProperty -Path 'Registry::HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment' -Name PATH).path
-            $newpath = "$oldpath;C:\ProgramData\Netclient\bin"
-            Set-ItemProperty -Path 'Registry::HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment' -Name PATH -Value $newPath
-            $env:Path += ";C:\ProgramData\Netclient\bin"
-        }
-    }
-    Write-Host "'netclient' is installed."
+                if ((Get-Command "netclient.exe" -ErrorAction SilentlyContinue) -eq $null) { 
+                    if (-not (Test-Path -Path "C:\ProgramData\Netclient\bin\netclient.exe")) {
+                        New-Item -Path "C:\ProgramData\Netclient" -Name "bin" -ItemType "directory"
+                        Move-Item -Path "$env:userprofile\Downloads\netclient.exe" -Destination "C:\ProgramData\Netclient\bin\netclient.exe"
+                        $oldpath = (Get-ItemProperty -Path 'Registry::HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment' -Name PATH).path
+                        $newpath = "$oldpath;C:\ProgramData\Netclient\bin"
+                        Set-ItemProperty -Path 'Registry::HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment' -Name PATH -Value $newPath
+                        $env:Path += ";C:\ProgramData\Netclient\bin"
+                    }
+                }
+                if($run -eq "one"){
+                    Write-Host "re-running setup to confirm all components are installed."
+                    Start-Sleep -s 1
+                }
+            }
+        Write-Host "'netclient' is installed."
     }
     }
 }
 }
+

+ 89 - 9
scripts/netclient-install.sh

@@ -10,15 +10,30 @@ echo "checking dependencies..."
 OS=$(uname)
 OS=$(uname)
 
 
 if [ -f /etc/debian_version ]; then
 if [ -f /etc/debian_version ]; then
+	dependencies="wireguard wireguard-tools"
+	update_cmd='apt update'
 	install_cmd='apt-get install -y'
 	install_cmd='apt-get install -y'
 elif [ -f /etc/alpine-release ]; then
 elif [ -f /etc/alpine-release ]; then
+	dependencies="wireguard"
+	update_cmd='apk update'
 	install_cmd='apk --update add'
 	install_cmd='apk --update add'
 elif [ -f /etc/centos-release ]; then
 elif [ -f /etc/centos-release ]; then
+	dependencies="wireguard"
+	update_cmd='yum update'
 	install_cmd='yum install -y'
 	install_cmd='yum install -y'
 elif [ -f /etc/fedora-release ]; then
 elif [ -f /etc/fedora-release ]; then
+	dependencies="wireguard"
+	update_cmd='dnf update'
 	install_cmd='dnf install -y'
 	install_cmd='dnf install -y'
 elif [ "${OS}" = "FreeBSD" ]; then
 elif [ "${OS}" = "FreeBSD" ]; then
+	dependencies="wireguard"
+	update_cmd='pkg update'
 	install_cmd='pkg install -y'
 	install_cmd='pkg install -y'
+elif [ -f /etc/openwrt_release ]; then
+	dependencies="wireguard-tools"
+	OS="OpenWRT"
+	update_cmd='opkg update'	
+	install_cmd='opkg install'
 else
 else
 	install_cmd=''
 	install_cmd=''
 fi
 fi
@@ -27,7 +42,7 @@ if [ -z "${install_cmd}" ]; then
         echo "OS unsupported for automatic dependency install"
         echo "OS unsupported for automatic dependency install"
 	exit 1
 	exit 1
 fi
 fi
-dependencies="wireguard"
+
 set -- $dependencies
 set -- $dependencies
 while [ -n "$1" ]; do
 while [ -n "$1" ]; do
     echo $1
     echo $1
@@ -50,15 +65,23 @@ while [ -n "$1" ]; do
 			fi
 			fi
 		fi	
 		fi	
 	else
 	else
-		is_installed=$(dpkg-query -W --showformat='${Status}\n' $1 | grep "install ok installed")
-		if [ "${is_installed}" = "install ok installed" ]; then
+		if [ "${OS}" = "OpenWRT" ]; then
+			is_installed=$(opkg list-installed $1 | grep $1)
+		else
+			is_installed=$(dpkg-query -W --showformat='${Status}\n' $1 | grep "install ok installed")
+		fi
+		if [ "${is_installed}" != "" ]; then
 			echo "    " $1 is installed
 			echo "    " $1 is installed
 		else
 		else
 			echo "    " $1 is not installed. Attempting install.
 			echo "    " $1 is not installed. Attempting install.
 			${install_cmd} $1
 			${install_cmd} $1
 			sleep 5
 			sleep 5
-			is_installed=$(dpkg-query -W --showformat='${Status}\n' $1 | grep "install ok installed")
-				if [ "${is_installed}" = "install ok installed" ]; then
+			if [ "${OS}" = "OpenWRT" ]; then
+				is_installed=$(opkg list-installed $1 | grep $1)
+			else
+				is_installed=$(dpkg-query -W --showformat='${Status}\n' $1 | grep "install ok installed")
+			fi
+			if [ "${is_installed}" != "" ]; then
 				echo "    " $1 is installed
 				echo "    " $1 is installed
 			elif [ -x "$(command -v $1)" ]; then
 			elif [ -x "$(command -v $1)" ]; then
 				echo "    " $1 is installed
 				echo "    " $1 is installed
@@ -155,18 +178,23 @@ esac
 echo "Binary = $dist"
 echo "Binary = $dist"
 
 
 url="https://github.com/gravitl/netmaker/releases/download/$VERSION/$dist"
 url="https://github.com/gravitl/netmaker/releases/download/$VERSION/$dist"
+curl_opts='-nv'
+if [ "${OS}" = "OpenWRT" ]; then
+	curl_opts='-q'
+fi
+
 if curl --output /dev/null --silent --head --fail "$url"; then
 if curl --output /dev/null --silent --head --fail "$url"; then
 	echo "Downloading $dist $VERSION"
 	echo "Downloading $dist $VERSION"
-	wget -nv -O netclient $url
+	wget $curl_opts -O netclient $url
 else
 else
 	echo "Downloading $dist latest"
 	echo "Downloading $dist latest"
-	wget -nv -O netclient https://github.com/gravitl/netmaker/releases/download/latest/$dist
+	wget $curl_opts -O netclient https://github.com/gravitl/netmaker/releases/download/latest/$dist
 fi
 fi
 
 
 chmod +x netclient
 chmod +x netclient
 
 
 EXTRA_ARGS=""
 EXTRA_ARGS=""
-if [ "${OS}" = "FreeBSD" ]; then
+if [ "${OS}" = "FreeBSD" ] || [ "${OS}" = "OpenWRT" ]; then
 	EXTRA_ARGS="--daemon=off"
 	EXTRA_ARGS="--daemon=off"
 fi
 fi
 
 
@@ -201,6 +229,58 @@ END_OF_FILE
 	sudo chmod +x /usr/local/etc/rc.d/netclient
 	sudo chmod +x /usr/local/etc/rc.d/netclient
 	sudo /usr/local/etc/rc.d/netclient enable
 	sudo /usr/local/etc/rc.d/netclient enable
 	sudo /usr/local/etc/rc.d/netclient start
 	sudo /usr/local/etc/rc.d/netclient start
-else
+
+elif [ "${OS}" = "OpenWRT" ]; then
+	mv ./netclient /etc/netclient/netclient
+	cat << 'END_OF_FILE' > ./netclient.service.tmp
+#!/bin/sh /etc/rc.common
+
+EXTRA_COMMANDS="status"
+EXTRA_HELP="        status      Check service is running"
+START=99
+
+LOG_FILE="/tmp/netclient.logs"
+
+start() {
+  if [ ! -f "${LOG_FILE}" ];then
+      touch "${LOG_FILE}"
+  fi
+  local PID=$(ps|grep "netclient checkin -n all"|grep -v grep|awk '{print $1}')
+  if [ "${PID}" ];then
+    echo "service is running"
+    return
+  fi
+  bash -c "while [ 1 ]; do /etc/netclient/netclient checkin -n all >> ${LOG_FILE} 2>&1;sleep 15;\
+           if [ $(ls -l ${LOG_FILE}|awk '{print $5}') -gt 10240000 ];then tar zcf "${LOG_FILE}.tar" -C / "tmp/netclient.logs"  && > $LOG_FILE;fi;done &"
+  echo "start"
+}
+
+stop() {
+  pids=$(ps|grep "netclient checkin -n all"|grep -v grep|awk '{print $1}')
+  for i in "${pids[@]}"
+  do
+	if [ "${i}" ];then
+		kill "${i}"
+	fi
+  done
+  echo "stop"
+}
+
+status() {
+  local PID=$(ps|grep "netclient checkin -n all"|grep -v grep|awk '{print $1}')
+  if [ "${PID}" ];then
+    echo -e "netclient[${PID}] is running \n"
+  else
+    echo -e "netclient is not running \n"
+  fi
+}
+
+END_OF_FILE
+	mv ./netclient.service.tmp /etc/init.d/netclient
+	chmod +x /etc/init.d/netclient
+	/etc/init.d/netclient enable
+	/etc/init.d/netclient start
+else 
 	rm -f netclient
 	rm -f netclient
 fi
 fi
+

+ 13 - 1
scripts/nm-quick.sh

@@ -28,7 +28,7 @@ fi
 echo "checking dependencies..."
 echo "checking dependencies..."
 
 
 declare -A osInfo;
 declare -A osInfo;
-osInfo[/etc/debian_version]="apt-get install -y"
+osInfo[/etc/debian_version]="apt-get install -y"u
 osInfo[/etc/alpine-release]="apk --update add"
 osInfo[/etc/alpine-release]="apk --update add"
 osInfo[/etc/centos-release]="yum install -y"
 osInfo[/etc/centos-release]="yum install -y"
 osInfo[/etc/fedora-release]="dnf install -y"
 osInfo[/etc/fedora-release]="dnf install -y"
@@ -40,8 +40,20 @@ do
     fi
     fi
 done
 done
 
 
+if [ -f /etc/debian_version ]; then
+	apt update
+elif [ -f /etc/alpine-release ]; then
+  apk update
+elif [ -f /etc/centos-release ]; then
+	yum update
+elif [ -f /etc/fedora-release ]; then
+	dnf update
+fi
+
 dependencies=("docker.io" "docker-compose" "wireguard" "jq")
 dependencies=("docker.io" "docker-compose" "wireguard" "jq")
 
 
+
+
 for dependency in ${dependencies[@]}; do
 for dependency in ${dependencies[@]}; do
     is_installed=$(dpkg-query -W --showformat='${Status}\n' ${dependency} | grep "install ok installed")
     is_installed=$(dpkg-query -W --showformat='${Status}\n' ${dependency} | grep "install ok installed")