|
@@ -61,6 +61,7 @@ usage:
|
|
|
$(basename "$0") activate [service]
|
|
|
$(basename "$0") deactivate [service]
|
|
|
$(basename "$0") inspect [service]
|
|
|
+ $(basename "$0") option [debug-on|debug-off]
|
|
|
$(basename "$0") apache [install|remove]
|
|
|
|
|
|
|
|
@@ -77,6 +78,8 @@ deactivate service
|
|
|
stop and deactivate service daemon (systemd unit)
|
|
|
inspect service
|
|
|
show service status and log
|
|
|
+option
|
|
|
+ set one of the available options
|
|
|
apache
|
|
|
install: apache site with a reverse proxy (ProxyPass)
|
|
|
remove: apache site ${APACHE_FILTRON_SITE}
|
|
@@ -155,6 +158,13 @@ main() {
|
|
|
remove) remove_apache_site ;;
|
|
|
*) usage "$_usage"; exit 42;;
|
|
|
esac ;;
|
|
|
+ option)
|
|
|
+ sudo_or_exit
|
|
|
+ case $2 in
|
|
|
+ debug-on) echo; enable_debug ;;
|
|
|
+ debug-off) echo; disable_debug ;;
|
|
|
+ *) usage "$_usage"; exit 42;;
|
|
|
+ esac ;;
|
|
|
|
|
|
*) usage "ERROR: unknown or missing command $1"; exit 42;;
|
|
|
esac
|
|
@@ -378,7 +388,12 @@ EOF
|
|
|
err_msg "Public service at ${PUBLIC_URL} is not available!"
|
|
|
fi
|
|
|
|
|
|
- wait_key
|
|
|
+ local _debug_on
|
|
|
+ if ask_yn "Enable filtron debug mode?"; then
|
|
|
+ enable_debug
|
|
|
+ _debug_on=1
|
|
|
+ fi
|
|
|
+
|
|
|
echo
|
|
|
systemctl --no-pager -l status filtron.service
|
|
|
echo
|
|
@@ -388,9 +403,66 @@ EOF
|
|
|
trap break 2
|
|
|
journalctl -f -u filtron
|
|
|
done
|
|
|
+
|
|
|
+ if [[ $_debug_on == 1 ]]; then
|
|
|
+ disable_debug
|
|
|
+ fi
|
|
|
return 0
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+enable_debug() {
|
|
|
+ info_msg "try to enable debug mode ..."
|
|
|
+ python <<EOF
|
|
|
+import sys, json
|
|
|
+
|
|
|
+debug = {
|
|
|
+ u'name': u'debug request'
|
|
|
+ , u'filters': []
|
|
|
+ , u'interval': 0
|
|
|
+ , u'limit': 0
|
|
|
+ , u'actions': [{u'name': u'log'}]
|
|
|
+}
|
|
|
+
|
|
|
+with open('$FILTRON_RULES') as rules:
|
|
|
+ j = json.load(rules)
|
|
|
+
|
|
|
+pos = None
|
|
|
+for i in range(len(j)):
|
|
|
+ if j[i].get('name') == 'debug request':
|
|
|
+ pos = i
|
|
|
+ break
|
|
|
+if pos is not None:
|
|
|
+ j[pos] = debug
|
|
|
+else:
|
|
|
+ j.append(debug)
|
|
|
+with open('$FILTRON_RULES', 'w') as rules:
|
|
|
+ json.dump(j, rules, indent=2, sort_keys=True)
|
|
|
+
|
|
|
+EOF
|
|
|
+ systemctl restart "${SERVICE_NAME}.service"
|
|
|
+}
|
|
|
+
|
|
|
+disable_debug() {
|
|
|
+ info_msg "try to disable debug mode ..."
|
|
|
+ python <<EOF
|
|
|
+import sys, json
|
|
|
+with open('$FILTRON_RULES') as rules:
|
|
|
+ j = json.load(rules)
|
|
|
+
|
|
|
+pos = None
|
|
|
+for i in range(len(j)):
|
|
|
+ if j[i].get('name') == 'debug request':
|
|
|
+ pos = i
|
|
|
+ break
|
|
|
+if pos is not None:
|
|
|
+ del j[pos]
|
|
|
+ with open('$FILTRON_RULES', 'w') as rules:
|
|
|
+ json.dump(j, rules, indent=2, sort_keys=True)
|
|
|
+EOF
|
|
|
+ systemctl restart "${SERVICE_NAME}.service"
|
|
|
+}
|
|
|
+
|
|
|
install_apache_site() {
|
|
|
|
|
|
rst_title "Install Apache site $APACHE_FILTRON_SITE"
|