Introduction
Introduction Statistics Contact Development Disclaimer Help
pubsub_setup - pubsubhubbubblub - pubsubhubbub client implementation
git clone git://git.codemadness.org/pubsubhubbubblub
Log
Files
Refs
README
LICENSE
---
pubsub_setup (3675B)
---
1 #!/bin/sh
2
3 usage() {
4 printf "usage: %s [-s] [-u] <-b base_callback> <-f feedname> <-h…
5 printf "or\n" >&2
6 printf "usage: %s [-s] [-u] <-f feedname>\n" "$0" >&2
7 exit 1
8 }
9
10 base=""
11 feedname=""
12 hub=""
13 topic=""
14 dosubscribe=0
15 dounsubscribe=0
16 while getopts "b:f:h:t:su" f; do
17 case "${f}" in
18 b) base="${OPTARG}";;
19 f) feedname="${OPTARG}";;
20 h) hub="${OPTARG}";;
21 t) topic="${OPTARG}";;
22 s) dosubscribe=1;;
23 u) dounsubscribe=1;;
24 esac
25 done
26 shift $(expr ${OPTIND} - 1)
27
28 if test "${feedname}" != "" && test "${base}" = "" -o "${hub}" = "" -o "…
29 test -d "config/${feedname}" || usage # if specifying only -f th…
30 # read settings.
31 callback="$(cat "config/${feedname}/callback" 2>/dev/null)"
32 hub="$(cat "config/${feedname}/hub" 2>/dev/null)"
33 topic="$(cat "config/${feedname}/topic" 2>/dev/null)"
34
35 test "${callback}" = "" -o "${hub}" = "" -o "${topic}" = "" && u…
36 elif test "${base}" = "" -o "${feedname}" = "" -o "${hub}" = "" -o "${to…
37 usage
38 fi
39
40 # make sure it has a / at the end.
41 base="${base%%/}/"
42
43 # sha256sum, typically on Linux.
44 shacmd="$(command -v sha256sum)"
45 # sha256, typically on (OpenBSD)BSD.
46 test "${shacmd}" = "" && shacmd=$(command -v sha256)
47 if test "${shacmd}" = ""; then
48 log_error "no sha256 or sha256sum tool found" >&2
49 exit 1
50 fi
51
52 # sha()
53 sha() {
54 ${shacmd} | cut -f 1 -d ' '
55 }
56
57 # log(s)
58 log() {
59 printf '%s\n' "$1"
60 }
61
62 # log_error(s)
63 log_error() {
64 printf '%s\n' "$1" >&2
65 }
66
67 # subscribe(feedname, hub, topic, callback, mode, secret)
68 subscribe() {
69 # if curl -s -f -H 'User-Agent:' -m 15 \
70 # DEBUG
71 if curl -v -f -H 'User-Agent:' -m 15 \
72 -L --max-redirs 3 \
73 --data-raw "hub.callback=$4" \
74 --data-raw "hub.lease_seconds=" \
75 --data-raw "hub.mode=$5" \
76 --data-raw "hub.secret=$6" \
77 --data-raw "hub.topic=$3" \
78 --data-raw "hub.verify=sync" \
79 "$2/subscribe"; then
80 log "$5 OK"
81 return 0
82 else
83 log_error "$5 FAIL"
84 return 1
85 fi
86 }
87
88 isnew=1
89 test -d "config/${feedname}" && isnew=0
90
91 mkdir -p "config/${feedname}"
92 mkdir -p "feeds/${feedname}"
93 mkdir -p "tmp/${feedname}"
94
95 # create log if it does not exist.
96 test -f "log" || touch "log"
97
98 # generate random token if it does not exist.
99 f="config/${feedname}/token"
100 if ! test -f "${f}" && test "${isnew}" = "1"; then
101 token="$(dd if=/dev/urandom count=10 bs=4096 2>/dev/null | sha)"
102 echo "${token}" > "${f}"
103 fi
104
105 # generate random secret if it does not exist.
106 f="config/${feedname}/secret"
107 if ! test -f "${f}" && test "${isnew}" = "1"; then
108 secret="$(dd if=/dev/urandom count=10 bs=4096 2>/dev/null | sha)"
109 echo "${secret}" > "${f}"
110 fi
111
112 # read config.
113 f="config/${feedname}/secret"
114 secret=$(cat "${f}" 2>/dev/null)
115 if test "${callback}" = ""; then
116 f="config/${feedname}/token"
117 token=$(cat "${f}" 2>/dev/null)
118 callback="${base}${feedname}/${token}"
119 printf '%s\n' "${callback}" > "config/${feedname}/callback"
120 fi
121
122 if test "$isnew" = "1"; then
123 printf '%s\n' "${hub}" > "config/${feedname}/hub"
124 printf '%s\n' "${topic}" > "config/${feedname}/topic"
125 fi
126
127 status=0
128 if test "${dosubscribe}" = "1"; then
129 f="config/${feedname}/ok"
130 if test -f "${f}"; then
131 log_error "already registered? file exists: ${f}, skippi…
132 exit 1
133 fi
134
135 # register at hub. save state when successfully registered.
136 if subscribe "${feedname}" "${hub}" "${topic}" "${callback}" "su…
137 touch "config/${feedname}/ok"
138 else
139 status=1
140 fi
141 fi
142
143 if test "${dounsubscribe}" = "1"; then
144 # unregister at hub. remove state when successfully registered.
145 if subscribe "${feedname}" "${hub}" "${topic}" "${callback}" "un…
146 rm -f "config/${feedname}/ok"
147 else
148 status=1
149 fi
150 fi
151
152 exit $status
You are viewing proxied material from codemadness.org. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.