67 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			67 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
| #!/bin/bash
 | |
| 
 | |
| # Mullvad_VPN_Check
 | |
| # A script that checks for a Mullvad VPN connection and if there isn't one, will send and alert
 | |
| 
 | |
| 
 | |
| # Set Discord webhook
 | |
| WEBHOOK_URL="DISCORD_WEBHOOK_URL"
 | |
| 
 | |
| # Function to run alert
 | |
| run_alert() {
 | |
| curl -H "Content-Type: application/json" -X POST --data @- "$WEBHOOK_URL" <<EOF
 | |
| {
 | |
|   "content": null,
 | |
|   "embeds": [
 | |
|     {
 | |
|       "title": "VPN Connectivity - WARNING",
 | |
|       "description": "\"$(hostname)\" is not going through a Mullvad VPN connection",
 | |
|       "color": 13238272,
 | |
|       "fields": [
 | |
|         {
 | |
|           "name": "Date and Time of Test:",
 | |
|           "value": "$(date +'%Y-%m-%d %H:%M:%S')"
 | |
|         },
 | |
|         {
 | |
|           "name": "Current ISP",
 | |
|           "value": "$ORG"
 | |
|         },
 | |
|         {
 | |
|           "name": "Current IP",
 | |
|           "value": "$IP"
 | |
|         }
 | |
|       ]
 | |
|     }
 | |
|   ],
 | |
|   "attachments": []
 | |
| }
 | |
| EOF
 | |
| }
 | |
| 
 | |
| # Function to check if "mullvad_exit_ip" is false
 | |
| check_mullvad_exit_ip() {
 | |
|     mullvad_exit_ip="$1"
 | |
|     if [ "$mullvad_exit_ip" = "false" ]; then
 | |
|         run_alert
 | |
|         echo "Alert sent!"
 | |
|     else
 | |
|         echo "VPN connection through Mullvad detected."
 | |
|         exit 1 # Exit with error code to indicate condition not met
 | |
|     fi
 | |
| }
 | |
| 
 | |
| # Fetch JSON data
 | |
| json=$(curl -s https://ipv4.am.i.mullvad.net/json)
 | |
| 
 | |
| # Get Reported IP
 | |
| IP=$(echo "$json" | grep -oE '"ip":\s*"[^"]+"' | grep -oE '[0-9.]+')
 | |
| # Get Reported ISP
 | |
| ORG=$(echo "$json" | grep -oP '(?<="organization":")[^"]+')
 | |
| 
 | |
| # Parse JSON and extract "mullvad_exit_ip"
 | |
| mullvad_exit_ip=$(jq -r '.mullvad_exit_ip' <<< "$json")
 | |
| 
 | |
| # Check if "mullvad_exit_ip" is false
 | |
| check_mullvad_exit_ip "$mullvad_exit_ip"
 | |
| 
 |