fixed openwrt/windows scripts

This commit is contained in:
afeiszli 2021-11-22 07:54:01 -05:00
parent e02ace0698
commit bdd1c8fc38
4 changed files with 169 additions and 58 deletions

View file

@ -88,6 +88,17 @@ After installing Netmaker, check out the [Walkthrough](https://itnext.io/getting
- [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
[WireGuard](https://wireguard.com/) is a registered trademark of Jason A. Donenfeld.

View file

@ -11,57 +11,65 @@ new-module -name netclient-install -scriptblock {
Function Netclient-Install() {
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."
}
}

View file

@ -10,15 +10,30 @@ echo "checking dependencies..."
OS=$(uname)
if [ -f /etc/debian_version ]; then
dependencies="wireguard wireguard-tools"
update_cmd='apt update'
install_cmd='apt-get install -y'
elif [ -f /etc/alpine-release ]; then
dependencies="wireguard"
update_cmd='apk update'
install_cmd='apk --update add'
elif [ -f /etc/centos-release ]; then
dependencies="wireguard"
update_cmd='yum update'
install_cmd='yum install -y'
elif [ -f /etc/fedora-release ]; then
dependencies="wireguard"
update_cmd='dnf update'
install_cmd='dnf install -y'
elif [ "${OS}" = "FreeBSD" ]; then
dependencies="wireguard"
update_cmd='pkg update'
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
install_cmd=''
fi
@ -27,7 +42,7 @@ if [ -z "${install_cmd}" ]; then
echo "OS unsupported for automatic dependency install"
exit 1
fi
dependencies="wireguard"
set -- $dependencies
while [ -n "$1" ]; do
echo $1
@ -50,15 +65,23 @@ while [ -n "$1" ]; do
fi
fi
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
else
echo " " $1 is not installed. Attempting install.
${install_cmd} $1
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
elif [ -x "$(command -v $1)" ]; then
echo " " $1 is installed
@ -155,18 +178,23 @@ esac
echo "Binary = $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
echo "Downloading $dist $VERSION"
wget -nv -O netclient $url
wget $curl_opts -O netclient $url
else
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
chmod +x netclient
EXTRA_ARGS=""
if [ "${OS}" = "FreeBSD" ]; then
if [ "${OS}" = "FreeBSD" ] || [ "${OS}" = "OpenWRT" ]; then
EXTRA_ARGS="--daemon=off"
fi
@ -201,6 +229,58 @@ END_OF_FILE
sudo chmod +x /usr/local/etc/rc.d/netclient
sudo /usr/local/etc/rc.d/netclient enable
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
fi

View file

@ -28,7 +28,7 @@ fi
echo "checking dependencies..."
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/centos-release]="yum install -y"
osInfo[/etc/fedora-release]="dnf install -y"
@ -40,8 +40,20 @@ do
fi
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")
for dependency in ${dependencies[@]}; do
is_installed=$(dpkg-query -W --showformat='${Status}\n' ${dependency} | grep "install ok installed")