Compare commits

...

24 Commits

Author SHA1 Message Date
a757d917b4 fix to get password macos seqoia 2024-10-11 08:52:42 +02:00
fd38c8b47d Errorlogging verbessert, Geänderte ServerCerts können aktualisiert werden 2024-06-27 15:37:22 +02:00
6aa1cfda8e funktion saveSettings verschoben 2023-06-19 14:40:39 +02:00
Thomas Schmauder
4dfd9e8ccf fixes, no passwort breach in Log 2023-05-12 17:47:14 +02:00
Thomas Schmauder
c4339873f5 Settings, ColorOutput, SavePassword 2023-05-12 17:04:06 +02:00
Thomas Schmauder
3af7e917e2 fix 2023-05-12 10:00:47 +02:00
49505ffa7e fixes 2023-05-11 14:02:24 +02:00
780622e6e9 Add Picture 2023-05-11 13:59:27 +02:00
06712dddc9 kleine Anpassungen mit dem PluginPfad 2023-05-11 13:23:39 +02:00
ccbc6a94da defaults write vereinheitlicht 2023-05-11 13:18:06 +02:00
Thomas Schmauder
b40a491e11 Neues Profil anlegen und mehr 2023-05-11 13:08:32 +02:00
6f2c85c982 PluginPath angepasst 2023-03-17 16:05:42 +01:00
4c2eacb8ca Path fix 2023-03-17 16:03:55 +01:00
03b4d45695 fix Typo 2023-03-17 15:58:48 +01:00
b437ec4f4e Add Installskript 2023-03-17 14:15:46 +01:00
b56dbd03ae init commit 2023-03-17 14:15:37 +01:00
e684a05392 Dialog Fix, Version 2023-03-15 13:07:44 +01:00
2c6221d182 Namen angepasst 2023-03-14 16:41:05 +01:00
f7714f24aa Nicht mehr benötigt 2023-03-14 12:35:57 +01:00
8280db2ba5 Nicht mehr benötigt 2023-03-14 12:35:09 +01:00
26daa798d9 kleinigkeiten gefixt 2023-03-14 12:32:07 +01:00
e570f401ca Korrekturen zu Swiftbar
- Anpassungen am Pfad und den Hinweisen zu SwiftBar
- Repo zu ITS geschoben.
2023-03-14 12:31:34 +01:00
Thomas Schmauder
b6240894a1 Fix Icons,Disconnect, Metadata 2023-03-10 01:16:31 +01:00
Thomas Schmauder
65cbe6cfb2 Zu SwiftBar gewechselt 2023-03-10 00:31:54 +01:00
7 changed files with 281 additions and 179 deletions

View File

@@ -1,2 +1,2 @@
#Name,E-Mail,Host,ServerFingerprint # Zeile muss gelöscht werden
#Name,E-Mail,Host,ServerFingerprint
bib,vorname.nachname@bib.de,vpn.bib.de,pin-sha265:asdasdasdasdasdasdasdasdasdasdadasd

View File

@@ -1,4 +1,4 @@
# OpenFortiVPN_macOS
# OpenConnect_macOS_Bar
Enthält Skripte, mit denen man unter macOS und evtl. unter Linux eine Verbindung zum VPN aufbauen kann.
@@ -6,6 +6,12 @@ Voraussetzung dafür sind die Tools openconnect und xbar
Diese lassen sich einfach über [Homebrew](https://brew.sh/) installieren.
## Installation des Tools (Skript)
```bash
/bin/bash -c "$(curl -fsSL https://git.bib.de/ITS/OpenConnect_macOS_Bar/raw/branch/main/install.sh)"
```
## Manuelle Installation in Einzelschritten
Zunächst Homebrew installieren, sofern noch nicht geschehen.
```zsh
@@ -13,19 +19,25 @@ Zunächst Homebrew installieren, sofern noch nicht geschehen.
```
Danach kann man simple die benötigten Tools installieren.
- [SwiftBar](https://github.com/swiftbar/SwiftBar)
- [OpenConnect](https://www.infradead.org/openconnect/)
```bash
brew update && brew install openconnect xbar
brew update && brew install openconnect swiftbar
```
---
Nach der Installation muss man eines der beiden Skripte unter dem folgenden Pfad ablegen und ausführbar machen.
Nach der Installation laden wir das Skript und machen es ausführbar.
```bash
cd /Users/$USER/Library/Application\ Support/xbar/plugins
wget https://git.bib.de/itssct/OpenFortiVPN_macOS/raw/branch/main/bibVPN.sh
# Ordner anlegen, falls noch nicht vorhanden und dann dorhin navigieren
mkdir -p "/Users/$USER/Library/SwiftBar/plugins" && cd $_
# Skript laden und ausführbar machen
wget https://git.bib.de/ITS/OpenConnect_macOS_Bar/raw/branch/main/bibVPN.sh
chmod +x bibVPN.sh
# PluginFolder für SwiftBar setzen
defaults write /Users/$USER/Library/Preferences/com.ameba.SwiftBar.plist PluginDirectory "/Users/$USER/Library/SwiftBar/plugins"
```
---
@@ -38,7 +50,12 @@ $USER ALL=(ALL) NOPASSWD: /usr/bin/killall -2 openconnect" | sudo tee /private/e
```
Anschließend xbar starten und die erscheinenden Fenster bestätigen. Danach sollte in der Menüleiste das Tool auftauchen.
Anschließend SwiftBar starten und die erscheinenden Fenster bestätigen.
Für den PluginOrdner bitte, dann im Userverzeichnis `Library/Application Support/SwiftBar/plugins`auswählen.
Danach sollte in der Menüleiste das Tool auftauchen.
```zsh
open /Applications/xbar.app
open /Applications/SwiftBar.app
```
Es sollte nun das Menüicon auftauchen.
![MenuBar Icon](menubar.png)

297
bibVPN.sh

File diff suppressed because one or more lines are too long

40
install.sh Normal file
View File

@@ -0,0 +1,40 @@
#!/bin/bash
# Author : Thomas Schmauder, bib e.V.
# Datum : 2023-03-16
# Funktion : Installiere alle benötigten Module, um das VPN über die Menübar in macOS zu steuern.
# Grund : Schlanke Alternative zum fetten FortiClient VPN Only
# Variables
PLUGINDIR='/Users/'$USER'/Library/SwiftBar/plugins'
# Farben definieren
noColor="\033[0m";
Purple='\033[0;35m'
# Installation
echo -e "${Purple}Checke, ob HomeBrew verfügbar ist${noColor}"
if ! which brew > /dev/null ; then
echo -e "${Purple}Homebrew nicht verfügbar. Installiere...${noColor}"
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
fi
echo -e "${Purple}Starte die Installation der benötigten Komponenten (SwiftBar & OpenConnect)${noColor}"
brew update && brew install openconnect swiftbar
# Konfiguration
echo -e "${Purple}Lade das Skript und stelle die Konfiguration für SwiftBar ein.${noColor}"
mkdir -p $PLUGINDIR && cd $PLUGINDIR
defaults write com.ameba.SwiftBar.plist PluginDirectory $PLUGINDIR
wget https://git.bib.de/ITS/OpenConnect_macOS_Bar/raw/branch/main/bibVPN.sh
chmod +x bibVPN.sh
# SecuritySettings
echo -e "${Purple}Setze die Security Einstellungen, damit man nicht immer nach dem Passwort gefragt wird.\nBitte dazu einmalig das Passwort für deinen Mac eingeben.${noColor}"
echo "$USER ALL=(ALL) NOPASSWD: $(which openconnect)
$USER ALL=(ALL) NOPASSWD: /usr/bin/killall -2 openconnect" | sudo tee /private/etc/sudoers.d/openconnect
# Erstmaliger Start vom Skript und SwiftBar
echo -e "${Purple}Starte nun das Skript erstmalig, um einen neuen Benutzer anzulegen.${noColor}"
$PLUGINDIR/bibVPN.sh newuser
open /Applications/SwiftBar.app

BIN
menubar.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

View File

@@ -1,20 +0,0 @@
<html>
<head>
</head>
<body>
<h3>22x22</h3>
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAABk0lEQVR4nOVSPUvDUBTtLro5C4Kjg4tOFlSE6tDmnEe3zvoThDq4ijiLP0HRwQ+saCexg0MnV5eiSxF1ENHclyHyQhKfJemHH+DHg0uSm3vPufecl8n8+aPJrADrmrwU0hXyQQNXAqx5wPSHgV/IYQFOBHjyi8VBDTQ06QcBNExOyEchz01tb1M7zrgAtzEguazJBYtgUQPl6DvYSqnJrsCfySEBLixwX4B7j5wXQEy4pCPkXUvNmUuOdCQQ8lQrNeECELIZTljxlJrxS6U+Ex45JeRh+K8Z1Co1JuRxe2nIbDiNGAk8YFaTK6n1QNl1HJqnuQCmt63xAmzYa2vgoNPGmtx/JxW5mV4M7Aq5akID20aWmLxQGNXAkgnzHuXNxJrcs/q20jcgKxGIJnf8fL7fJohAbAI/lxsItojIgaN2677JQ/qd5Om579sJBKjFMgC1OG/pn+RDWl8SQdXSsmoTxAAJPqT1/RMPJEH/Vh8+5YEk6d/iw4/y4OYLCK5TCz3HmbNI6j0Q1CNwD8h12/c7zivjlhKXJdZXHAAAAABJRU5ErkJggg==">
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAABsElEQVR4nOVSPYsTURRNv7jd1oLsIpJ7xmyjlQEVQa10f8T6E4Rssa2ohZl7Eyz8AYoWfmBErZbdwsJCFnbvnWyzrE0QTSEWSRV5ITO+iTOTxCD48eDCm8s957x7zpRK//yRCFU23BWjXVH02NBlwwEb3Q4tuPDLxM0IJ9jwWoy+1duVJTYcimHgyt1Hva+stO1mZyIPo9NnROlTQqjYYMV6/C1KN0RR8wS7YYRzU5HL3qnjrPQuIbNhfZGIroqh7yo0uiaGz/4MK23d26usTBYwvJEoOMsRXRdDZ/Tilhgu3vkQLLhqaPm8GF6MyDtutt4OVlnpVTF5hOoI1HcW8D5dEqPN3HlFrbFfXhvapeg5bGHwrNRMrW30fPLG9CyNwf2i4SeiuOWKFY+cLT/EATbcHJYCcd+9mJWexjhRPMwXUGolJEaPH+jJY76AJ54I1NvLi24LT/xlwQapP2cwyZ6Zcb9fQLHjebkT91P+Z+SQh8sSeBsTuLsv4BH8lEMe7j/JgLP8H8thrgw4w//xHP6gDJQ+zivAiqPcwdBwJRZhw/tpBdxsTC4WXJ4W93ec7wYyDjZFMTOrAAAAAElFTkSuQmCC">
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAABL0lEQVR4nOXSO0sDURAF4K9TGysRm4CghfjAFPoHtJYIVmqntQ/wnUJFsLASVIgYULTI75TALFzWTbJBBSUHBu69O+ccZs4yCJjBNu7wjibusYW57wiP4xxvGMUDWlEP8faKq+jtC1N4TgTXsZLcV1FL7s2YtBTGcJOQW3hBFR9RS/GW9lxioozBBaaxjEaQTzGPoahZnMS3RvRO4qyX+EyQPmIFC9jo0l8L8Vr8AK1ewe/kxj4uMfFRjrPbrfkQm1H7sZYMFaxFtc8Z5sIk4+11MzhNRA4wnDPIRFKDkTDIeG2NjmjlqixK837d4DpZQ/tctP+iHDrxvqCeCNRzBplAUQ6deAOSQaVg//kcvpVBpWD/+Rz+TgZPP2Dw2K2xmpjc9mHQ7s3EF/vg/QN8AlExZb3BQ3QEAAAAAElFTkSuQmCC">
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAABAklEQVR4nOWTCwvCMAyEPxSdbgqKQwXdfM1H//8flMIVSulmRQXRQFjX5e6SHIN/iBxYAUfgBlyAE7AEileIB0ANXIE+0ABG2ejOftup9qkYq1OjLIGZ9z7XnXu/aNLkzvce2IhgohXZnAYNGE0yTBGoNYElOQtcad89Za47oxpbO9JdZ+QC3bSCQs+2KEVeCmMeGb8Oxq4SJt4GmPWj4qVyE3STAQulPbsoIrjWqDySjfbtCzgSX6AnAYfrnNoEmRrJuI8L7L012HNs/zEf2nDRf8AR1IGAI4j50Ib7Ew+yyP5DH17yIIvsP/Thezxo3iDQdBVOPJHDEwK21pFbjh+KO6y4GSBX3BEAAAAAAElFTkSuQmCC">
<br>
<h3>20x20</h3>
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAABsElEQVR4nOVSPYsTURRNv7jd1oLsIpJ7xmyjlQEVQa10f8T6E4Rssa2ohZl7Eyz8AYoWfmBErZbdwsJCFnbvnWyzrE0QTSEWSRV5ITO+iTOTxCD48eDCm8s957x7zpRK//yRCFU23BWjXVH02NBlwwEb3Q4tuPDLxM0IJ9jwWoy+1duVJTYcimHgyt1Hva+stO1mZyIPo9NnROlTQqjYYMV6/C1KN0RR8wS7YYRzU5HL3qnjrPQuIbNhfZGIroqh7yo0uiaGz/4MK23d26usTBYwvJEoOMsRXRdDZ/Tilhgu3vkQLLhqaPm8GF6MyDtutt4OVlnpVTF5hOoI1HcW8D5dEqPN3HlFrbFfXhvapeg5bGHwrNRMrW30fPLG9CyNwf2i4SeiuOWKFY+cLT/EATbcHJYCcd+9mJWexjhRPMwXUGolJEaPH+jJY76AJ54I1NvLi24LT/xlwQapP2cwyZ6Zcb9fQLHjebkT91P+Z+SQh8sSeBsTuLsv4BH8lEMe7j/JgLP8H8thrgw4w//xHP6gDJQ+zivAiqPcwdBwJRZhw/tpBdxsTC4WXJ4W93ec7wYyDjZFMTOrAAAAAElFTkSuQmCC">
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAABk0lEQVR4nOVSPUvDUBTtLro5C4Kjg4tOFlSE6tDmnEe3zvoThDq4ijiLP0HRwQ+saCexg0MnV5eiSxF1ENHclyHyQhKfJemHH+DHg0uSm3vPufecl8n8+aPJrADrmrwU0hXyQQNXAqx5wPSHgV/IYQFOBHjyi8VBDTQ06QcBNExOyEchz01tb1M7zrgAtzEguazJBYtgUQPl6DvYSqnJrsCfySEBLixwX4B7j5wXQEy4pCPkXUvNmUuOdCQQ8lQrNeECELIZTljxlJrxS6U+Ex45JeRh+K8Z1Co1JuRxe2nIbDiNGAk8YFaTK6n1QNl1HJqnuQCmt63xAmzYa2vgoNPGmtx/JxW5mV4M7Aq5akID20aWmLxQGNXAkgnzHuXNxJrcs/q20jcgKxGIJnf8fL7fJohAbAI/lxsItojIgaN2677JQ/qd5Om579sJBKjFMgC1OG/pn+RDWl8SQdXSsmoTxAAJPqT1/RMPJEH/Vh8+5YEk6d/iw4/y4OYLCK5TCz3HmbNI6j0Q1CNwD8h12/c7zivjlhKXJdZXHAAAAABJRU5ErkJggg==">
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAABNUlEQVR4nOWRvUoDQRDHf62xsRSC1UEKbQKKqIXxEXwBMWAnWooP4Af4FZM0Kgg2dimiRVADWlxzryULszCMm3WPKCgZGG737v9xM3+YhKoD+8AjkANDoAfsAUvjCFeBNvABzAB9oJDuy7t34FawpWoeeFGCTWBT3d15W92HMmlSzQL3ilwAb8CarMj1OvBqMDfAXIpBB1gAGsBAyC3Z95T0InAp3waCrQHX34nXhZTLCpaBnQjeYTbkmQs3GvyBGfsiYeJzwzmMgU+BXelj8zcZsCXtzr4c5kzxjmIGLSVyAlSMgRfRBtMyheddxQwK06mVzPt1gzu1BncO7T+Uwyjel+oqga4x8AKhHEbxJiSDLLB/m8NYGWSB/dsc/k4Gzz9g8BQDriqThxIGDuvFV0rw/kF9AnXdefQgpRuFAAAAAElFTkSuQmCC">
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAABAklEQVR4nOWTCwvCMAyEPxSdbgqKQwXdfM1H//8flMIVSulmRQXRQFjX5e6SHIN/iBxYAUfgBlyAE7AEileIB0ANXIE+0ABG2ejOftup9qkYq1OjLIGZ9z7XnXu/aNLkzvce2IhgohXZnAYNGE0yTBGoNYElOQtcad89Za47oxpbO9JdZ+QC3bSCQs+2KEVeCmMeGb8Oxq4SJt4GmPWj4qVyE3STAQulPbsoIrjWqDySjfbtCzgSX6AnAYfrnNoEmRrJuI8L7L012HNs/zEf2nDRf8AR1IGAI4j50Ib7Ew+yyP5DH17yIIvsP/Thezxo3iDQdBVOPJHDEwK21pFbjh+KO6y4GSBX3BEAAAAAAElFTkSuQmCC">
<br>
<a target="_blank" href="https://icons8.com/icon/wsAFoZeqoMdd/tunnel">tunnel</a> icon by <a target="_blank" href="https://icons8.com">Icons8</a>
</body>
</html>

68
v1.sh
View File

@@ -1,68 +0,0 @@
#!/bin/bash
# Get current status of a VPN connection with options to connect/disconnect.
# Working with OpenConnect, but can work with any executable VPN. Commands
# that require admin permissions should be whitelisted with 'visudo', e.g.:
#
#joesmith ALL=(ALL) NOPASSWD: /usr/local/bin/openconnect
#joesmith ALL=(ALL) NOPASSWD: /usr/bin/killall -2 openconnect
# <xbar.title>VPN Status</xbar.title>
# <xbar.version>v1.0</xbar.version>
# <xbar.author>Jesse Jarzynka</xbar.author>
# <xbar.author.github>jessejoe</xbar.author.github>
# <xbar.desc>Displays status of a VPN interface with option to connect/disconnect.</xbar.desc>
# <xbar.image>http://i.imgur.com/RkmptwO.png</xbar.image>
VPN_EXECUTABLE=$(which openconnect)
VPN_EXECUTABLE_PARAMS="--servercert pin-sha256:NFR9+lG+7SvvEqnraijD1l5R1ShK9KKtwYjqedfx78U= --protocol=fortinet" # Optional
VPN_HOST="vpn.bib.de"
VPN_USERNAME="$2"
# A command that will result in your VPN password. Recommend using
# "security find-generic-password -g -a foo" where foo is an account
# in your OSX Keychain, to avoid passwords stored in plain text
GET_VPN_PASSWORD="security find-generic-password -g -a $VPN_USERNAME 2>&1 >/dev/null | cut -d'\"' -f2"
MEINE_MAIL="meine.mail@edu-up.de"
# Command to determine if VPN is connected or disconnected
VPN_CONNECTED="ifconfig | egrep -A1 'inet 172.[123][0-9]' |cut -d' ' -f2"
# Command to run to disconnect VPN
VPN_DISCONNECT_CMD="sudo killall -2 openconnect"
# Get IP of Current VPN Tunnel
IP=$(ifconfig | egrep -A1 'inet 172.[123][0-9]' |cut -d' ' -f2)
case "$1" in
connect)
VPN_PASSWORD=$(eval "$GET_VPN_PASSWORD")
# VPN connection command, should eventually result in $VPN_CONNECTED,
# may need to be modified for VPN clients other than openconnect
echo "$VPN_PASSWORD" | sudo "$VPN_EXECUTABLE" $VPN_EXECUTABLE_PARAMS --user "$VPN_USERNAME" --passwd-on-stdin "$VPN_HOST" &> /dev/null &
IP=$(ifconfig | egrep -A1 'inet 172.[123][0-9]' |cut -d' ' -f2)
while [ -z $IP ]; do sleep 0.5 ; IP=$(ifconfig | egrep -A1 'inet 172.[123][0-9]' |cut -d' ' -f2) ; done
msg='display notification "Erfolgreich verbunden \nConnected User: '$VPN_USERNAME'" with title "OpenFortiVPN" subtitle "Deine IP lautet: '$IP'" sound name "Brise"'
errmsg='display notification "Verbindungsversuch nicht erfolgreich" with title "OpenFortiVPN" subtitle "Schade" sound name "Brise"'
if [[ $IP =~ 172 ]] ; then osascript -e "$msg" ; else osascript -e "$errmsg" ; fi
# Wait for connection so menu item refreshes instantly
until eval "$VPN_CONNECTED"; do sleep 1; done
;;
disconnect)
eval "$VPN_DISCONNECT_CMD"
# Wait for disconnection so menu item refreshes instantly
until [ -z "$(eval "$VPN_CONNECTED")" ]; do sleep 1; done
osascript -e 'display notification "VPN Tunnel erfolgreich geschlossen" with title "OpenFortiVPN" subtitle "Mach Feierabend" sound name "Submarine"'
;;
esac
if [ -n "$(eval "$VPN_CONNECTED")" ]; then
echo "VPN ✔ | color=green"
echo '---'
echo "Disconnect VPN | bash='$0' param1=disconnect terminal=false refresh=true"
echo "User: $(ps -ef | grep -e '--user\ ' | cut -d' ' -f 33)"
echo "IP: $IP"
exit
else
echo "VPN ❌ | color=red"
echo '---'
echo "Connect VPN | bash='$0' param1=connect param2=$MEINE_MAIL terminal=false refresh=true"
exit
fi