#!/bin/bash
+
+# THIS IS EXPERIMENTAL AND COULD BE INSECURE !!!!!!
+
# this is an example script of how you could manage your cookies..
# we use the cookies.txt format (See http://kb.mozillazine.org/Cookies.txt)
# This is one textfile with entries like this:
# http://kb.mozillazine.org/Cookies.txt
# don't always append cookies, sometimes we need to overwrite
-if [ -f /usr/share/uzbl/examples/configs/cookies ]
-then
- file=/usr/share/uzbl/examples/configs/cookies
-else
- file=./examples/configs/cookies #useful when developing
-fi
-
-#cookie_file=$XDG_DATA_HOME/uzbl/cookies.txt
-cookie_file=./examples/data/cookies.txt
-
+[ -f /usr/share/uzbl/examples/configs/cookies ] && file=/usr/share/uzbl/examples/configs/cookies
+[ -f $XDG_CONFIG_HOME/uzbl/cookies ] && file=$XDG_CONFIG_HOME/uzbl/cookies
+[ -f ./examples/configs/cookies ] && file=./examples/configs/cookies #useful when developing
+[ -z "$file" ] && exit 1
+
+[ -d /usr/share/uzbl/examples/data/cookies.d ] && cookie_dir=/usr/share/uzbl/examples/data/cookies.d
+[ -d $XDG_DATA_HOME/uzbl/cookies.d ] && cookie_dir=$XDG_DATA_HOME/uzbl/cookies.d
+[ -d ./examples/data/cookies.d ] && cookie_dir=./examples/data/cookies.d #useful when developing
+[ -z "$cookie_dir" ] && exit 1
+
+# if this variable is set, we will use it to inform you when and which cookies we store, and when/which we send.
+#notifier=
+#notifier=notify-send
+notify_wrapper () {
+ echo "$@" >> $HOME/cookielog
+}
+notifier=notify_wrapper
which zenity &>/dev/null || exit 2
# Example cookie:
field_value=
field_exp='end_session'
+function notify () {
+ [ -n "$notifier" ] && $notifier "$@"
+}
+
# FOR NOW LETS KEEP IT SIMPLE AND JUST ALWAYS PUT AND ALWAYS GET
function parse_cookie () {
# match cookies in cookies.txt againsh hostname and path
function get_cookie () {
path_esc=${path//\//\\/}
- cookie=`awk "/^[^\t]*$host\t[^\t]*\t$path_esc/" $cookie_file 2>/dev/null | tail -n 1`
+ search="^[^\t]*$host\t[^\t]*\t$path_esc"
+ cookie=`awk "/$search/" $cookie_dir/$host.cookie 2>/dev/null | tail -n 1`
if [ -z "$cookie" ]
then
+ notify "Get_cookie: search: $search in $cookie_dir/$host.cookie -> no result"
false
else
+ notify "Get_cookie: search: $search in $cookie_dir/$host.cookie -> result: $cookie"
read domain alow_read_other_subdomains path http_required expiration name value <<< "$cookie"
cookie="$name=$value"
- #echo "COOKIE $cookie" >> $HOME/cookielog
true
fi
}
-[ $action == PUT ] && parse_cookie && echo -e "$field_domain\tFALSE\t$field_path\tFALSE\t$field_exp\t$field_name\t$field_value" >> $cookie_file
+function save_cookie () {
+ if parse_cookie
+ then
+ data="$field_domain\tFALSE\t$field_path\tFALSE\t$field_exp\t$field_name\t$field_value"
+ notify "save_cookie: adding $data to $cookie_dir/$host.cookie"
+ echo -e "$data" >> $cookie_dir/$host.cookie
+ else
+ notify "not saving a cookie. since we don't have policies yet, parse_cookie must have returned false. this is a bug"
+ fi
+}
+
+[ $action == PUT ] && save_cookie
[ $action == GET ] && get_cookie && echo "$cookie"
exit
}
function fetch_cookie () {
- cookie=`cat $cookie_file/$host.cookie`
+ cookie=`cat $cookie_dir/$host.cookie`
}
function store_cookie () {
- echo $cookie > $cookie_file/$host.cookie
+ echo $cookie > $cookie_dir/$host.cookie
}
if match TRUSTED $host