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