diff --git a/client/CMakeLists.txt b/client/CMakeLists.txt index 67d18574..b56e87ed 100644 --- a/client/CMakeLists.txt +++ b/client/CMakeLists.txt @@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.23.0 FATAL_ERROR) set(PROJECT AmneziaVPN) project(${PROJECT} VERSION 2.0.10) -set(BUILD_ID 3) +set(BUILD_ID 2) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) if(${CMAKE_VERSION} VERSION_GREATER_EQUAL 3.17) diff --git a/client/deploy/data/macos/AmneziaVPN.plist b/client/deploy/data/macos/AmneziaVPN.plist new file mode 100644 index 00000000..8dabbc9e --- /dev/null +++ b/client/deploy/data/macos/AmneziaVPN.plist @@ -0,0 +1,26 @@ + + + + + Label + AmneziaVPN-service + ProgramArguments + + /Applications/AmneziaVPN.app/Contents/MacOS/AmneziaVPN-service + + KeepAlive + + Sockets + + Listeners + + SockServiceName + 5959 + SockType + stream + SockFamily + IPv4 + + + + diff --git a/client/deploy/data/macos/ck-client b/client/deploy/data/macos/ck-client new file mode 100755 index 00000000..5095a014 Binary files /dev/null and b/client/deploy/data/macos/ck-client differ diff --git a/client/deploy/data/macos/openvpn b/client/deploy/data/macos/openvpn new file mode 100755 index 00000000..f1c08e93 Binary files /dev/null and b/client/deploy/data/macos/openvpn differ diff --git a/client/deploy/data/macos/post_install.sh b/client/deploy/data/macos/post_install.sh new file mode 100755 index 00000000..acd3f93f --- /dev/null +++ b/client/deploy/data/macos/post_install.sh @@ -0,0 +1,35 @@ +#!/bin/bash + +APP_NAME=AmneziaVPN +PLIST_NAME=$APP_NAME.plist +LAUNCH_DAEMONS_PLIST_NAME=/Library/LaunchDaemons/$PLIST_NAME +LOG_FOLDER=/var/log/$APP_NAME +LOG_FILE="$LOG_FOLDER/post-install.log" +APP_PATH=/Applications/$APP_NAME.app + +if launchctl list "$APP_NAME-service" &> /dev/null; then + launchctl unload $LAUNCH_DAEMONS_PLIST_NAME + rm -f $LAUNCH_DAEMONS_PLIST_NAME +fi + +tar xzf $APP_PATH/$APP_NAME.tar.gz -C $APP_PATH +rm -f $APP_PATH/$APP_NAME.tar.gz +sudo chmod -R a-w $APP_PATH/ +sudo chown -R root $APP_PATH/ +sudo chgrp -R wheel $APP_PATH/ + +rm -rf $LOG_FOLDER +mkdir -p $LOG_FOLDER + +echo "`date` Script started" > $LOG_FILE + +killall -9 $APP_NAME-service 2>> $LOG_FILE + +mv -f $APP_PATH/$PLIST_NAME $LAUNCH_DAEMONS_PLIST_NAME 2>> $LOG_FILE +chown root:wheel $LAUNCH_DAEMONS_PLIST_NAME +launchctl load $LAUNCH_DAEMONS_PLIST_NAME + +echo "`date` Service status: $?" >> $LOG_FILE +echo "`date` Script finished" >> $LOG_FILE + +#rm -- "$0" diff --git a/client/deploy/data/macos/post_uninstall.sh b/client/deploy/data/macos/post_uninstall.sh new file mode 100755 index 00000000..6e8e9fa8 --- /dev/null +++ b/client/deploy/data/macos/post_uninstall.sh @@ -0,0 +1,14 @@ +#!/bin/bash + +APP_NAME=AmneziaVPN +PLIST_NAME=$APP_NAME.plist +LAUNCH_DAEMONS_PLIST_NAME=/Library/LaunchDaemons/$PLIST_NAME + +if launchctl list "$APP_NAME-service" &> /dev/null; then + launchctl unload $LAUNCH_DAEMONS_PLIST_NAME + rm -f $LAUNCH_DAEMONS_PLIST_NAME +fi + +rm -rf "$HOME/Library/Application Support/$APP_NAME" +rm -rf /var/log/$APP_NAME +rm -rf /Applications/$APP_NAME.app/Contents diff --git a/client/deploy/data/macos/ss-local b/client/deploy/data/macos/ss-local new file mode 100755 index 00000000..b1e501a3 Binary files /dev/null and b/client/deploy/data/macos/ss-local differ diff --git a/client/deploy/data/macos/ss-tunnel b/client/deploy/data/macos/ss-tunnel new file mode 100755 index 00000000..e5fc361c Binary files /dev/null and b/client/deploy/data/macos/ss-tunnel differ diff --git a/client/deploy/data/macos/update-resolv-conf.sh b/client/deploy/data/macos/update-resolv-conf.sh new file mode 100755 index 00000000..cba62f77 --- /dev/null +++ b/client/deploy/data/macos/update-resolv-conf.sh @@ -0,0 +1,74 @@ +#!/bin/bash + +# Mac name-resolution updater based on @cl's script here: +# https://blog.netnerds.net/2011/10/openvpn-update-client-dns-on-mac-os-x-using-from-the-command-line/ +# Openvpn envar parsing taken from the script in debian's openvpn package. +# Smushed together and improved by @andrewgdotcom. + +# Parses DHCP options from openvpn to update resolv.conf +# To use set as 'up' and 'down' script in your openvpn *.conf: +# up /etc/openvpn/update-resolv-conf +# down /etc/openvpn/update-resolv-conf + +[ "$script_type" ] || exit 0 +[ "$dev" ] || exit 0 + +PATH=$PATH:/usr/sbin/ +NMSRVRS=() +SRCHS=() + +# Get adapter list +IFS=$'\n' read -d '' -ra adapters < <(networksetup -listallnetworkservices |grep -v denotes) || true + +split_into_parts() +{ + part1="$1" + part2="$2" + part3="$3" +} + +update_all_dns() +{ + for adapter in "${adapters[@]}" + do + echo updating dns for $adapter + # set dns server to the vpn dns server + if [[ "${SRCHS[@]}" ]]; then + networksetup -setsearchdomains "$adapter" "${SRCHS[@]}" + fi + if [[ "${NMSRVRS[@]}" ]]; then + networksetup -setdnsservers "$adapter" "${NMSRVRS[@]}" + fi + done +} + +clear_all_dns() +{ + for adapter in "${adapters[@]}" + do + echo updating dns for $adapter + networksetup -setdnsservers "$adapter" empty + networksetup -setsearchdomains "$adapter" empty + done +} + +case "$script_type" in + up) + for optionvarname in ${!foreign_option_*} ; do + option="${!optionvarname}" + echo "$option" + split_into_parts $option + if [ "$part1" = "dhcp-option" ] ; then + if [ "$part2" = "DNS" ] ; then + NMSRVRS=(${NMSRVRS[@]} $part3) + elif [ "$part2" = "DOMAIN" ] ; then + SRCHS=(${SRCHS[@]} $part3) + fi + fi + done + update_all_dns + ;; + down) + clear_all_dns + ;; +esac