Skip to content

Instantly share code, notes, and snippets.

@indolering
Last active September 21, 2019 13:42
Show Gist options
  • Save indolering/5334360 to your computer and use it in GitHub Desktop.
Save indolering/5334360 to your computer and use it in GitHub Desktop.
Uses Private Internet Access REST API to set which port Transmission listens on, binds all Transmission traffic to the tun0 (typically OpenVPN) network interface, and then opens Transmission.
set user to "USERNAME"
set pass to "PASSWORD"
--set token automatically based on macaddress
set macAddHash to do shell script "/sbin/ifconfig en0 | /usr/bin/awk '/ether / {print $2}' | /usr/bin/tr -d ':' | md5 "
try
set vpn_ip to do shell script "ifconfig tun0 | grep inet | awk '{print $2}'"
--hack: must delete property before writing it but first run 'defaults delete' fails
do shell script "defaults write org.m0k.transmission BindAddressIPv4 " & vpn_ip & ""
do shell script "defaults delete org.m0k.transmission BindAddressIPv4"
do shell script "defaults write org.m0k.transmission BindAddressIPv4 " & vpn_ip & ""
set running_message to ""
set vpn_port to do shell script "curl -d \"user=" & user & "&pass=" & pass & "&client_id=" & macAddHash & "&local_ip=" & vpn_ip & "\" https://www.privateinternetaccess.com/vpninfo/port_forward_assignment | grep -oE \"[0-9]+\""
do shell script "defaults write org.m0k.transmission BindPort " & vpn_port & ""
do shell script "defaults delete org.m0k.transmission BindPort"
do shell script "defaults write org.m0k.transmission BindPort " & vpn_port & ""
set login_message to ""
tell application "Transmission" to activate
on error error_message number error_number
display alert ("Error") ¬
message error_message ¬
& (" Error number ") & error_number
end try
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment