Disabling the Proxy on my Opera from BASH


Usually I dont blog other than OpenOffice.org but having this blog on an Opera community and this been a Opera hack, I think it deserved the attention.So I don’t know much of bash script and I am learning so doing a simple script that will allow me to get rid of some of Opera annoyances — or GUI annoyances really.The ProblemMy damn employer network force us to use a Proxy everytime we want to access he interweb. So every morning I come in the office I need to run Opera and quickly get the Alt-P keystroke go to Advanced > Network > Proxy Servers and check the HTTP/FTP/HTTPS checkbox to enable the proxy in all. This is quite irritating.The ResearchAsking on the forum I remember that most of this preferences are ASCII parameters in .ini files. So I asked on the forum looking for the right .ini until I found it under ~/.opera/opera6.iniDid a less opera6.ini |grep Proxy gave me what I was looking for:

[Proxy] Use WAIS=0 Use Automatic Proxy Configuration=0 HTTP server=internet.ps.net:80 HTTPS server=internet.ps.net:80 Gopher server WAIS server Automatic Proxy Configuration URL= No Proxy Servers= No Proxy Servers Check=0 FTP server=internet.ps.net:80 Use GOPHER=0 Enable HTTP 1.1 for proxy=0 Use HTTP=1 Use HTTPS=1 Use FTP=1

The last 3 is what I was looking for, so it seems the script should not need any complex XML parser/Regular expression script to a complish this. So instead I used vim command line interface with bash. I end up with vim + bash and some advanced flags will let me be able to perform:

  • Open the file
  • Position on the exact line
  • do a search and replace from 1 to 0 and viceversa
  • Save and Quit

VIM is a very popular editor so a friend suggest me this external flags, specifically the -c flag that stand for command.The SolutionI finally got something like this:

vim -c "601" -c "s/1/0/" ~/.opera/opera6.ini

This enabled me to do a search and replace the 0 by 1, but now I need the opposite but instead of having another 1 liner I tried to just use an if… else and have it run.The code end up like this:

if [ "$1" = "-e" ]; then         vi -c "610" -c "s/1/0/"            -c "611" -c "s/1/0/"            -c "612" -c "s/1/0/"            -c "wq" ~/.opera/opera6.ini;    else         vi -c "610" -c "s/0/1/"            -c "611" -c "s/0/1/"            -c "612" -c "s/0/1/"            -c "wq" ~/.opera/opera6.ini;    fi

I finally got this script stored on a command I called unproxy stored at /usr/local/bin with everything hardcoding and no ‘intelligence on the script’. Ths mean that it doesnt validate that there is indeed a proxy, it’s just a dumb command.using the iff I can switch it on or off depending on the flag I show it:

unproxy -e (-e for enable)