General code and comment cleanups in cookie_daemon.py
[uzbl-mobile] / examples / data / uzbl / scripts / formfiller.sh
1 #!/bin/bash
2
3 # simple html form (eg for logins) filler (and manager) for uzbl.
4 # uses settings files like: $keydir/<domain>
5 # files contain lines like: <fieldname>: <value>
6
7
8 # user arg 1:
9 # edit: force editing the file (falls back to new if not found)
10 # new:  start with a new file.
11 # load: try to load from file into form
12
13 # something else (or empty): if file not available: new, otherwise load.
14
15 keydir=${XDG_DATA_HOME:-$HOME/.local/share}/uzbl/forms
16 [ -d "`dirname $keydir`" ] || exit 1
17 [ -d "$keydir" ] || mkdir "$keydir"
18
19 editor=${VISUAL}
20 if [[ -z ${editor} ]]; then
21     #editor='gvim'
22     editor='urxvt -e vim'
23 fi
24
25 config=$1; shift
26 pid=$1;    shift
27 xid=$1;    shift
28 fifo=$1;   shift
29 socket=$1; shift
30 url=$1;    shift
31 title=$1;  shift
32 action=$1
33
34 [ -d $keydir ] || mkdir $keydir || exit 1
35
36 if [ "$action" != 'edit' -a  "$action" != 'new' -a "$action" != 'load' ]
37 then
38         action=new
39         [[ -e $keydir/$domain ]] && action=load
40 elif [ "$action" == 'edit' ] && [[ ! -e $keydir/$domain ]]
41 then
42         action=new
43 fi
44 domain=$(echo $url | sed -re 's|(http\|https)+://([A-Za-z0-9\.]+)/.*|\2|')
45
46
47 #regex='s|.*<input.*?name="([[:graph:]]+)".*?/>.*|\1: |p' # sscj's first version, does not work on http://wiki.archlinux.org/index.php?title=Special:UserLogin&returnto=Main_Page
48  regex='s|.*<input.*?name="([^"]*)".*|\1: |p' #works on arch wiki, but not on http://lists.uzbl.org/listinfo.cgi/uzbl-dev-uzbl.org TODO: improve
49
50
51 if [ "$action" = 'load' ]
52 then
53         [[ -e $keydir/$domain ]] || exit 2
54         gawk -F': ' '{ print "js document.getElementsByName(\"" $1 "\")[0].value = \"" $2 "\";"}' $keydir/$domain >> $fifo
55 else
56         if [ "$action" == 'new' ]
57         then
58                 curl "$url" | grep '<input' | sed -nre "$regex" > $keydir/$domain
59         fi
60         [[ -e $keydir/$domain ]] || exit 3 #this should never happen, but you never know.
61         $editor $keydir/$domain #TODO: if user aborts save in editor, the file is already overwritten
62 fi