Created
July 20, 2020 15:24
-
-
Save ismdeep/e3c4fb820206d796b3345550272f7d1c to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env python3 | |
import os | |
import sys | |
from prettytable import PrettyTable | |
from colorama import Fore, Back, Style | |
def show_help_msg(): | |
print('''Usage: proxy [on [pac]|off|status]''') | |
def parse_val(lines, left_keys): | |
for line in lines: | |
if line.find(left_keys) >= 0: | |
return line[line.find(left_keys) + len(left_keys):].strip() | |
return '' | |
def get_active_network_name_list(): | |
tmp_lines = os.popen('''current-network-name''').readlines() | |
network_name_list = [] | |
for tmp_line in tmp_lines: | |
network_name_list.append(tmp_line.strip()) | |
return network_name_list | |
def enable_proxy(pac_flag=False): | |
networks = get_active_network_name_list() | |
for network in networks: | |
if pac_flag: | |
os.system('''networksetup -setautoproxyurl "%s" "http://pac.local/pac/whitelist.pac"''' % network) | |
os.system('''networksetup -setautoproxystate "%s" on''' % network) | |
else: | |
os.system('''networksetup -setautoproxystate "%s" off''' % network) | |
os.system('''networksetup -setsocksfirewallproxy "%s" 127.0.0.1 1080''' % network) | |
print('%s %s' % (network, Fore.GREEN + 'Enabled' + Fore.RESET)) | |
def disable_proxy(): | |
networks = get_active_network_name_list() | |
for network in networks: | |
os.system('''networksetup -setautoproxystate "%s" off''' % network) | |
os.system('''networksetup -setsocksfirewallproxystate "%s" off''' % network) | |
print('%s %s' % (network, Fore.RED + 'Disabled' + Fore.RESET)) | |
def show_status(): | |
networks = get_active_network_name_list() | |
status_table = PrettyTable(field_names=['Service Name', 'Enabled', 'Server', 'Port', 'Pac Enabled']) | |
for network in networks: | |
lines = os.popen('''networksetup -getsocksfirewallproxy "%s"''' % network).readlines() | |
enabled = parse_val(lines, 'Enabled:') | |
if enabled == 'Yes': | |
enabled = Fore.GREEN + enabled + Fore.RESET | |
else: | |
enabled = Fore.RED + enabled + Fore.RESET | |
server = parse_val(lines, 'Server:') | |
port = parse_val(lines, 'Port:') | |
lines = os.popen('''networksetup -getautoproxyurl "%s"''' % network).readlines() | |
pac_enabled = parse_val(lines, 'Enabled:') | |
if pac_enabled == 'Yes': | |
pac_enabled = Fore.GREEN + pac_enabled + Fore.RESET | |
else: | |
pac_enabled = Fore.RED + pac_enabled + Fore.RESET | |
status_table.add_row([network, enabled, server, port, pac_enabled]) | |
print(status_table) | |
def main(): | |
if len(sys.argv) <= 1: | |
show_help_msg() | |
exit(-1) | |
if sys.argv[1] == 'status': | |
show_status() | |
exit(0) | |
if sys.argv[1] == 'on': | |
if len(sys.argv) == 2: | |
enable_proxy(False) | |
exit(0) | |
if sys.argv[2] == 'pac': | |
enable_proxy(True) | |
exit(0) | |
if sys.argv[1] == 'off': | |
disable_proxy() | |
exit(0) | |
show_help_msg() | |
exit(-1) | |
if __name__ == '__main__': | |
main() |
current-network-name
#!/bin/bash
while read -r line; do
sname=$(echo "$line" | awk -F "(, )|(: )|[)]" '{print $2}')
sdev=$(echo "$line" | awk -F "(, )|(: )|[)]" '{print $4}')
#echo "Current service: $sname, $sdev, $currentservice"
if [ -n "$sdev" ]; then
ifout="$(ifconfig "$sdev" 2>/dev/null)"
echo "$ifout" | grep 'status: active' > /dev/null 2>&1
rc="$?"
if [ "$rc" -eq 0 ]; then
currentservice="$sname"
currentdevice="$sdev"
currentmac=$(echo "$ifout" | awk '/ether/{print $2}')
# may have multiple active devices, so echo it here
echo "$currentservice"
fi
fi
done <<< "$(networksetup -listnetworkserviceorder | grep 'Hardware Port')"
if [ -z "$currentservice" ]; then
>&2 echo "Could not find current service"
exit 1
fi
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Usage
Show Proxy Status
Enable Proxy without Pac Mode
Enable Porxy with Pac Mode
Disable Porxy