Never been to CodeSnippets before?

Snippets is a public source code repository. Easily build up your personal collection of code snippets, categorize them with tags / keywords, and share them with the world (or not, you can keep them private!)

enablesocksproxy & disablesocksproxy

For how to set up ssh & sshd to get a local SOCKS proxy on Mac OS X see:
- Local SOCKS Proxy for Safari
- AppleScript to enable SOCKS proxy on Mac OS X


# systemsetup & networksetup (Mac OS X 10.4),
# http://codesnippets.joyent.com/posts/show/1691

ls -l /usr/sbin/{networksetup,systemsetup}

/usr/bin/sudo /bin/ln -is /System/Library/CoreServices/RemoteManagement/ARDAgent.app/Contents/Support/systemsetup-panther /usr/sbin/systemsetup

/usr/bin/sudo /bin/ln -is /System/Library/CoreServices/RemoteManagement/ARDAgent.app/Contents/Support/networksetup-panther /usr/sbin/networksetup


# Get network service information on Mac OS X,
# http://codesnippets.joyent.com/posts/show/1819

function network_service_name() {

   SERVICE_GUID="$(printf "open\nget State:/Network/Global/IPv4\nd.show" | \
      /usr/sbin/scutil | /usr/bin/awk '/PrimaryService/{print $3}')"

   SERVICE_NAME="$(printf "open\nget Setup:/Network/Service/${SERVICE_GUID}\nd.show" | \
      /usr/sbin/scutil | /usr/bin/awk -F': ' '/UserDefinedName/{print $2}')"

   echo "${SERVICE_NAME}"

   return 0

}


function enablesocksproxy() {
   /usr/sbin/systemsetup -setremotelogin on 2>/dev/null
   # off is for authentication
   /usr/bin/sudo /usr/sbin/networksetup -setsocksfirewallproxy "$(network_service_name)" 127.0.0.1 8080 off
   if [[ -z "$(/usr/bin/sudo /usr/sbin/networksetup -getinfo "$(network_service_name)" | /usr/bin/egrep -i 'IP address:')" ]]; then
      echo '... not connected to the internet ...'
      return 1
   fi
   /usr/bin/ssh -q -D 8080 -f -C -N -x NAME@IPADDRESS    # customize
   /usr/bin/sudo -k
   return 0
}


function disablesocksproxy() {
   /usr/bin/sudo /usr/sbin/systemsetup -f -setremotelogin off 2>/dev/null    # note position of -f
   /usr/bin/sudo /usr/sbin/networksetup -setsocksfirewallproxystate "$(network_service_name)" off
   /usr/bin/sudo -k
   return 0
}


systemsetup -getremotelogin

sudo networksetup -getinfo "$(network_service_name)"

sudo networksetup -getsocksfirewallproxy "$(network_service_name)"

disablesocksproxy

enablesocksproxy

Enable & disable the root user account on Mac OS X

See: Another way to enable and disable root

# enable root user account
/usr/sbin/dsenableroot

# disable root user account
/usr/sbin/dsenableroot -d