123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236 |
- REM setup proxy server for wget
- REM Barry Kauler, my first BaCon GTK program using HUG
- REM (c) Copyright Barry Kauler Nov 2010, license GPL v3 /usr/share/doc/legal
- REM 20110314 internationalization and dpi improvements in BaCon
- REM 20110416 label alignment improvements.
- REM 130204 include hug.bac, avoid needs recompiling when hug.so updated. (but much bigger!)
- REM 130209 change back to hug.so.
- OPTION INTERNATIONAL TRUE
- REM .po/.mo files have 'charset=UTF-8', so either set UTF-8 on in LANG variable, or do this...
- SETENVIRON "OUTPUT_CHARSET", "UTF-8"
- REM use shared /usr/lib/hug.so instead of including hug.bac...
- INCLUDE "/usr/share/BaCon/hug_imports.bac"
- REM INCLUDE "/usr/share/BaCon/hug.bac",ATTACH,BUTTON,CALLBACK,CHECK,DISABLE,DISPLAY,ENABLE,FOCUS,FONT,GET,GRAB$,HIDE,HUGENTRY,HUGOPTIONS,IMAGE,INIT,MARK,MSGDIALOG,PASSWORD,PROPERTY,QUIT,SET,SHOW,TEXT,WINDOW
- INIT
- REM fix window font layout regardless of dpi...
- REM 78 is the Xft.dpi in /root/.Xresources when I designed the layout...
- HUGOPTIONS("BASEXFTDPI 78")
- REM User may have GTK theme font size too big/small. set to required size...
- HUGOPTIONS("FONT DejaVu Sans 12")
- font_mono$="Monospace 13"
- REM read the previous setting...
- proxy_flag=0
- http_proxy$="http://foo.org:8080"
- ftp_proxy$="ftp://foo.org:8080"
- username$=""
- password$=""
- IF FILEEXISTS("/etc/profile.d/http_proxy") THEN
- REM env vars may have username/password in them, split up...
- http_proxy$=EXEC$("cat /etc/profile.d/http_proxy | cut -f 2 -d '=' | sed -e 's%//.*@%//%' | tr '\n' ' ' | tr -d ' '")
- username$=EXEC$("cat /etc/profile.d/http_proxy | cut -f 2 -d '=' | grep '@' | sed -e 's%^.*//%%' -e 's%@.*$%%' -e 's%:.*%%' | tr '\n' ' ' | tr -d ' '")
- password$=EXEC$("cat /etc/profile.d/http_proxy | cut -f 2 -d '=' | grep ':' | sed -e 's%^.*//%%' -e 's%@.*$%%' -e 's%^.*:%%' | tr '\n' ' ' | tr -d ' '")
- proxy_flag=1
- ENDIF
- IF FILEEXISTS("/etc/profile.d/ftp_proxy") THEN
- REM env vars may have username/password in them, split up...
- ftp_proxy$=EXEC$("cat /etc/profile.d/ftp_proxy | cut -f 2 -d '=' | sed -e 's%//.*@%//%' | tr '\n' ' ' | tr -d ' '")
- username$=EXEC$("cat /etc/profile.d/ftp_proxy | cut -f 2 -d '=' | grep '@' | sed -e 's%^.*//%%' -e 's%@.*$%%' -e 's%:.*%%' | tr '\n' ' ' | tr -d ' '")
- password$=EXEC$("cat /etc/profile.d/ftp_proxy | cut -f 2 -d '=' | grep ':' | sed -e 's%^.*//%%' -e 's%@.*$%%' -e 's%^.*:%%' | tr '\n' ' ' | tr -d ' '")
- proxy_flag=1
- ENDIF
- SUB check1_callback
- LOCAL status
- status=GET(check1)
- IF status = 1 THEN
- ENABLE(httpproxy)
- ENABLE(ftpproxy)
- ENABLE(username)
- ENABLE(password1)
- ENABLE(password2)
- ELSE
- DISABLE(httpproxy)
- DISABLE(ftpproxy)
- DISABLE(username)
- DISABLE(password1)
- DISABLE(password2)
- ENDIF
- ENDSUB
- REM update the environment variables...
- SUB ok_callback
- LOCAL pass1$,pass2$
- status2=GET(check1)
- IF status2 = 0 THEN
- SYSTEM "rm -f /etc/profile.d/http_proxy"
- SYSTEM "rm -f /etc/profile.d/ftp_proxy"
- HIDE(mainwin)
- SHOW(no_dlg1)
- GOTO label1
- ENDIF
- httpproxy$=GRAB$(httpproxy)
- ftpproxy$=GRAB$(ftpproxy)
- username$=GRAB$(username)
- pass1$=GRAB$(password1)
- pass2$=GRAB$(password2)
- IF pass1$ != pass2$ THEN
- SHOW(err_dlg1)
- ELSE
-
- IF httpproxy$ != "" THEN
- REM take off the http:// part...
- protocol1$=LEFT$(httpproxy$,5)
- IF protocol1$ = "http:" THEN
- protocol2$="http://"
- httpproxy1$=MID$(httpproxy$,8)
- ELSE
- IF protocol1$ = "https" THEN
- protocol2$="https://"
- httpproxy1$=MID$(httpproxy$,9)
- ELSE
- protocol2$="http://"
- httpproxy1$=httpproxy$
- ENDIF
- ENDIF
- IF username$ = "" THEN
- httpproxy2$=httpproxy1$
- ELSE
- IF pass1$ = "" THEN
- httpproxy2$=CONCAT$(username$,"@",httpproxy1$)
- ELSE
- httpproxy2$=CONCAT$(username$,":",pass1$,"@",httpproxy1$)
- ENDIF
- ENDIF
- http_proxy_profile$=CONCAT$("export http_proxy=",protocol2$,httpproxy2$)
- OPEN "/etc/profile.d/http_proxy" FOR WRITING AS handle
- WRITELN http_proxy_profile$ TO handle
- CLOSE FILE handle
- ENDIF
-
- REM exactly same thing for ftp...
- IF ftpproxy$ != "" THEN
- REM take off the ftp:// part...
- protocol1$=LEFT$(ftpproxy$,4)
- IF protocol1$ = "ftp:" THEN
- protocol2$="ftp://"
- ftpproxy1$=MID$(ftpproxy$,7)
- ELSE
- IF protocol1$ = "ftps" THEN
- protocol2$="ftps://"
- ftpproxy1$=MID$(ftpproxy$,8)
- ELSE
- protocol2$="ftp://"
- ftpproxy1$=ftpproxy$
- ENDIF
- ENDIF
- IF username$ = "" THEN
- ftpproxy2$=ftpproxy1$
- ELSE
- IF pass1$ = "" THEN
- ftpproxy2$=CONCAT$(username$,"@",ftpproxy1$)
- ELSE
- ftpproxy2$=CONCAT$(username$,":",pass1$,"@",ftpproxy1$)
- ENDIF
- ENDIF
- ftp_proxy_profile$=CONCAT$("export ftp_proxy=",protocol2$,ftpproxy2$)
- OPEN "/etc/profile.d/ftp_proxy" FOR WRITING AS handle
- WRITELN ftp_proxy_profile$ TO handle
- CLOSE FILE handle
- ENDIF
-
- HIDE(mainwin)
- SHOW(yes_dlg1)
- ENDIF
- LABEL label1
- ENDSUB
- REM callback when click close-button in info boxes...
- SUB close_dialog(NUMBER widget)
- HIDE(widget)
- FOCUS(password1)
- ENDSUB
- mainwin = WINDOW(INTL$("Proxy server setup"), 425, 285)
- image1=IMAGE("/usr/local/lib/X11/pixmaps/www48.png",48,48)
- ATTACH(mainwin,image1,10,10)
- label_hdr1=MARK(INTL$("If you connect to the Internet through a proxy"),370,15)
- ATTACH(mainwin,label_hdr1,58,10)
- label_hdr2=MARK(INTL$("server, tick the checkbox and fill in the fields"),370,15)
- ATTACH(mainwin,label_hdr2,58,25)
- label_hdr3=MARK(INTL$("(leave Username/Password blank if not needed)"),370,15)
- ATTACH(mainwin,label_hdr3,58,40)
- check1 = CHECK(INTL$("Enable Internet connection through proxy server"),350,20)
- ATTACH(mainwin,check1,20,70)
- label_http = MARK("HTTP:",100,20)
- REM param 0.0 means left-align label, 0.5 centre-align, 1.0 right-align...
- PROPERTY(label_http,"xalign",1.0)
- ATTACH(mainwin, label_http, 10, 100)
- httpproxy = ENTRY(http_proxy$,280,20)
- ATTACH(mainwin, httpproxy, 120, 100)
- FONT(httpproxy,font_mono$)
- label_ftp = MARK("FTP:",100,20)
- PROPERTY(label_ftp,"xalign",1.0)
- ATTACH(mainwin, label_ftp, 10, 130)
- ftpproxy = ENTRY(ftp_proxy$,280,20)
- ATTACH(mainwin, ftpproxy, 120, 130)
- FONT(ftpproxy,font_mono$)
- label_user=MARK(INTL$("Username:"),100,20)
- PROPERTY(label_user,"xalign",1.0)
- ATTACH(mainwin,label_user,10,160)
- username = ENTRY(username$,280,20)
- ATTACH(mainwin, username, 120, 160)
- FONT(username,font_mono$)
- label_pass=MARK(INTL$("Password:"),100,20)
- PROPERTY(label_pass,"xalign",1.0)
- ATTACH(mainwin,label_pass,10,190)
- password1=PASSWORD(150,20)
- ATTACH(mainwin,password1,120,190)
- TEXT(password1,password$)
- FONT(password1,font_mono$)
- label_pass2=MARK(INTL$("Enter password again:"),170,20)
- ATTACH(mainwin,label_pass2,10,220)
- password2=PASSWORD(150,20)
- ATTACH(mainwin,password2,180,220)
- TEXT(password2,password$)
- FONT(password2,font_mono$)
- ok_btn = BUTTON(INTL$("OKAY"), 65, 25)
- ATTACH(mainwin, ok_btn, 240, 250)
- cancel_btn = BUTTON(INTL$("Cancel"), 65, 25)
- ATTACH(mainwin, cancel_btn, 320, 250)
- REM define some info boxes...
- err_dlg1=MSGDIALOG(INTL$("Sorry, the password entries are not the same"),400,100,3,2)
- yes_dlg1=MSGDIALOG(INTL$("Great, you have modified the proxy server settings. Note, you can see the result in files /etc/profile.d/http_profile and /etc/profile.d/ftp_profile. However, MOST IMPORTANT, you must reboot for this to take effect"),500,160,0,1)
- no_dlg1=MSGDIALOG(INTL$("You have chosen NOT to use a proxy server. Note, if you previously did have a proxy server enabled, you MUST REBOOT for the change to take effect"),500,140,0,1)
- REM Define the callbacks
- CALLBACK(ok_btn,ok_callback)
- CALLBACK(cancel_btn,QUIT)
- CALLBACK(check1,check1_callback)
- CALLBACK(err_dlg1,close_dialog)
- CALLBACK(yes_dlg1,QUIT)
- CALLBACK(no_dlg1,QUIT)
- REM tick or untick the checkbox...
- SET(check1,1)
- SET(check1,proxy_flag)
- REM endless gtk loop...
- DISPLAY
|