summaryrefslogtreecommitdiffstats
path: root/dev-shell
diff options
context:
space:
mode:
authorKaarle Ritvanen <kaarle.ritvanen@datakunkku.fi>2013-09-16 16:05:32 +0300
committerKaarle Ritvanen <kaarle.ritvanen@datakunkku.fi>2013-09-16 16:05:32 +0300
commit5467f2ddadeaaf74dfb2109d53c4d5be9f275f20 (patch)
treef649f50edfefb146f097fd8da39a13dd4e261b84 /dev-shell
parentdb136cebdda6f853fdc08a3b4beaeef310a11a22 (diff)
downloadaconf-5467f2ddadeaaf74dfb2109d53c4d5be9f275f20.tar.bz2
aconf-5467f2ddadeaaf74dfb2109d53c4d5be9f275f20.tar.xz
integration with 'lbu commit'
client must specifically request saving files if server's root file system is tmpfs web client does this automatically on commit
Diffstat (limited to 'dev-shell')
-rwxr-xr-xdev-shell59
1 files changed, 35 insertions, 24 deletions
diff --git a/dev-shell b/dev-shell
index 8bb75d1..dfe8db2 100755
--- a/dev-shell
+++ b/dev-shell
@@ -3,18 +3,14 @@
# Copyright (c) 2012-2013 Kaarle Ritvanen
# See LICENSE file for license details
-function parse_var {
- echo "$2" | sed "s/^$1: \\(.\\+\\)"$'\r'"\$/\\1/;ta;d;:a;q"
-}
-
function _acf_req {
local url=$ACF_URL$1
shift
local resp
resp=$(curl -s -w $'\n\nStatus: %{response_code}\r\n' \
- ${ACF_AUTH_TOKEN:+-H "X-ACF-Auth-Token: $ACF_AUTH_TOKEN"} \
- ${ACF_TXN_ID:+-H "X-ACF-Transaction-ID: $ACF_TXN_ID"} \
+ ${ACF_Auth_Token:+-H "X-ACF-Auth-Token: $ACF_Auth_Token"} \
+ ${ACF_Transaction_ID:+-H "X-ACF-Transaction-ID: $ACF_Transaction_ID"} \
"$@" $url)
local code=$?
@@ -23,9 +19,10 @@ function _acf_req {
return 1
fi
+ resp=$(echo "$resp" | sed $'s/\r//')
echo "$resp"
- local status=$(parse_var Status "$resp")
+ local status=$(echo "$resp" | sed 's/^Status: //;ta;d;:a;q')
[ "${status:0:1}" = 2 ] && return
echo "Request failed" >&2
@@ -34,31 +31,30 @@ function _acf_req {
function _acf_start_req {
local url=$1
- local hdr=X-ACF-$2
- local var=ACF_$3
- shift 3
-
- local current=${!var}
- local status=
+ shift
local resp
resp=$(_acf_req "$url" "$@" -D /proc/self/fd/1 -o /proc/self/fd/3)
[ $? -eq 0 ] || return
- local id=$(parse_var $hdr "$resp")
- eval export $var=$id
+ local txn_id=$ACF_Transaction_ID
+
+ while read line; do
+ eval export "$line"
+ done < <(echo "$resp" | \
+ sed 's/^X-\(ACF-[-A-Za-z]\+\): /\1=/;ta;d;:a;y/-/_/')
bash --rcfile "$ACF_QD_CLI"
[ $? -eq 254 ] || _acf_req $url -X DELETE
- eval $var=$current
+ ACF_Transaction_ID=$txn_id
}
-if [ "$ACF_AUTH_TOKEN" ]; then
+if [ "$ACF_Auth_Token" ]; then
- if [ "$ACF_TXN_ID" ]; then
+ if [ "$ACF_Transaction_ID" ]; then
cat >&2 <<EOF
-Transaction $ACF_TXN_ID started
+Transaction $ACF_Transaction_ID started
Type 'commit' to commit, 'exit' to abort
EOF
@@ -71,16 +67,31 @@ Available commands:
Delete object: delete <path>
Fetch metadata: meta <path>
Start transaction: start
+EOF
+ if [ $ACF_Save_Required = 1 ]; then
+ echo " Save changes persistently: save" >&2
+ fi
+cat >&2 <<EOF
Example: put /awall/zone/internet '{"iface": ["eth0"]}'
EOF
fi
- PS1="$ACF_USER@acf2-dev-shell${ACF_TXN_ID:+($ACF_TXN_ID)}> "
+ PS1="$ACF_USER@acf2-dev-shell${ACF_Transaction_ID:+($ACF_Transaction_ID)}> "
+
+ if [ $ACF_Save_Required = 1 ]; then
+ function save {
+ if [ "$ACF_Transaction_ID" ]; then
+ echo "Transaction not committed" >&2
+ return 1
+ fi
+ _acf_req /save -X POST
+ }
+ fi
function start {
- _acf_start_req /transaction Transaction-ID TXN_ID -X POST
+ _acf_start_req /transaction -X POST
}
function meta {
@@ -114,7 +125,7 @@ EOF
}
function commit {
- if [ "$ACF_TXN_ID" ]; then
+ if [ "$ACF_Transaction_ID" ]; then
if _acf_req /transaction -X PUT; then
echo Committed >&2
exit 254
@@ -177,8 +188,8 @@ EOF
echo >&2
fi
- ACF_TXN_ID=
+ ACF_Transaction_ID=
- _acf_start_req /login Auth-Token AUTH_TOKEN \
+ _acf_start_req /login \
-d "{\"username\": \"$ACF_USER\", \"password\": \"$PASSWORD\"}"
fi