-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathturris-webapps-json-cgi
executable file
·100 lines (89 loc) · 1.95 KB
/
turris-webapps-json-cgi
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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
#!/bin/sh
USR_DIR="/usr/share/turris-webapps"
ETC_DIR="/etc/turris-webapps"
. /lib/functions.sh
config_load foris
config_get_bool WIZARD_FINISHED wizard finished "0"
config_get LANG settings lang "en"
config_load webapps
config_get DEFAULT webapps default "reforis"
set -e
old_to_json() {
NAME=""
URL=""
DESCRIPTION=""
ICON=""
source "$1" || return 1
cat << ENTRY
{
"id": "$(basename "$1" .conf | sed 's|^[0-9_]*||')",
"title": "$(echo "$NAME" | sed 's| - .*||')",
"url": "$URL",
"icon": "/icons/$ICON",
"description": {
"en": "$(echo "$NAME" | sed 's|.* - ||')"
}
}
ENTRY
}
print_config() {
if [ "${fl##*.}" = conf ]; then
old_to_json "$fl"
else
cat "$fl"
fi
}
print_all() {
local sep=","
print_default || sep=""
for fl in "$ETC_DIR"/[0-9]*.json \
"$ETC_DIR"/[0-9]*.conf \
"$USR_DIR"/[0-9]*.json \
"$USR_DIR"/[0-9]*.conf; do
[ -f "$fl" ] || continue
if expr "$fl" : ".*/[0-9][0-9]_$DEFAULT\." > /dev/null; then
continue
fi
echo -n "$sep"
print_config "$fl"
done
}
print_default() {
local ret=1
for fl in "$ETC_DIR"/[0-9][0-9]_$DEFAULT.json \
"$ETC_DIR"/[0-9][0-9]_$DEFAULT.conf \
"$USR_DIR"/[0-9][0-9]_$DEFAULT.json \
"$USR_DIR"/[0-9][0-9]_$DEFAULT.conf; do
[ -f "$fl" ] || continue
print_config "$fl"
ret="$?"
done
return $ret
}
# Handle IPv6 URLs
if expr "$SERVER_NAME" : '.*:' > /dev/null; then
HOST="[$SERVER_NAME]"
else
HOST="$SERVER_NAME"
fi
# Add Content-Type header
echo "Content-Type: application/json"
echo ""
cat << JSON
{
"lang": "$LANG",
"selected": "$DEFAULT",
"langs": {
$(cat /usr/share/turris-webapps/l10n.json)
},
"apps": [
$(
if [ "$WIZARD_FINISHED" = "1" ]; then
print_all
else
print_default
fi | sed "s|@HOST@|$HOST|g"
)
]
}
JSON