document alternative way for uri setting
[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=gvim
20 editor='urxvt -e vim'
21
22 config=$1; shift
23 pid=$1;    shift
24 xid=$1;    shift
25 fifo=$1;   shift
26 socket=$1; shift
27 url=$1;    shift
28 title=$1;  shift
29 action=$1
30
31 [ -d $keydir ] || mkdir $keydir || exit 1
32
33 if [ "$action" != 'edit' -a  "$action" != 'new' -a "$action" != 'load' ]
34 then
35         action=new
36         [[ -e $keydir/$domain ]] && action=load
37 elif [ "$action" == 'edit' ] && [[ ! -e $keydir/$domain ]]
38 then
39         action=new
40 fi
41 domain=$(echo $url | sed -re 's|(http\|https)+://([A-Za-z0-9\.]+)/.*|\2|')
42
43
44 #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
45  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
46
47
48 if [ "$action" = 'load' ]
49 then
50         [[ -e $keydir/$domain ]] || exit 2
51         gawk -F': ' '{ print "js document.getElementsByName(\"" $1 "\")[0].value = \"" $2 "\";"}' $keydir/$domain >> $fifo
52 else
53         if [ "$action" == 'new' ]
54         then
55                 curl "$url" | grep '<input' | sed -nre "$regex" > $keydir/$domain
56         fi
57         [[ -e $keydir/$domain ]] || exit 3 #this should never happen, but you never know.
58         $editor $keydir/$domain #TODO: if user aborts save in editor, the file is already overwritten
59 fi