diff --git a/actions/xmpp-setup b/actions/xmpp-setup new file mode 100755 index 000000000..6c5d0c4fc --- /dev/null +++ b/actions/xmpp-setup @@ -0,0 +1,46 @@ +#!/bin/sh + +if grep --quiet "^{access, register, \[{allow, all}\]}." /etc/ejabberd/ejabberd.cfg; then + xmpp_inband_enable=true +else + xmpp_inband_enable=false +fi +xmpp_inband_enable_cur=$xmpp_inband_enable +export xmpp_inband_enable + +while [ "$1" ] ; do + arg="$1" + shift + case "$arg" in + inband_enable|noinband_enable) # Not using disable for consistency with other options + if [ 'inband_enable' = "$arg" ] ; then + xmpp_inband_enable=true + else + xmpp_inband_enable=false + fi + export xmpp_inband_enable + ;; + status) + printstatus() { + if $2 ; then + echo $1 + else + echo no$1 + fi + } + printstatus inband_enable $xmpp_inband_enable_cur + exit 0 + ;; + *) + ;; + esac +done + +if [ "$xmpp_inband_enable" != "$xmpp_inband_enable_cur" ] ; then + if $xmpp_inband_enable ; then + sed -i s/"^{access, register, \[{deny, all}\]}."/"{access, register, \[{allow, all}\]}."/ /etc/ejabberd/ejabberd.cfg + else + sed -i s/"^{access, register, \[{allow, all}\]}."/"{access, register, \[{deny, all}\]}."/ /etc/ejabberd/ejabberd.cfg + fi + ejabberdctl restart +fi diff --git a/modules/installed/services/xmpp.py b/modules/installed/services/xmpp.py index 7965153ef..6140cf1c5 100644 --- a/modules/installed/services/xmpp.py +++ b/modules/installed/services/xmpp.py @@ -16,8 +16,43 @@ class xmpp(PagePlugin): @cherrypy.expose @require() - def index(self): + def index(self, submitted=False, **kwargs): + checkedinfo = { + 'inband_enable' : False, + } + + if submitted: + opts = [] + for k in kwargs.keys(): + if 'on' == kwargs[k]: + shortk = k.split("xmpp_").pop() + checkedinfo[shortk] = True + + for key in checkedinfo.keys(): + if checkedinfo[key]: + opts.append(key) + else: + opts.append('no'+key) + privilegedaction_run("xmpp-setup", opts) + + output, error = privilegedaction_run("xmpp-setup", ['status']) + if error: + raise Exception("something is wrong: " + error) + for option in output.split(): + checkedinfo[option] = True + main = "

XMPP Server Configuration

" + form = Form(title="Configuration", + action="/services/xmpp", + name="configure_xmpp", + message='') + form.checkbox(_("Allow In-Band Registration"), name="xmpp_inband_enable", + id="xmpp_inband_enable", checked=checkedinfo['inband_enable']) + form.hidden(name="submitted", value="True") + form.html(_("

When enabled, anyone who can reach this server will be allowed to register an account through an XMPP client.

")) + form.submit(_("Update setup")) + main += form.render() + sidebar_right = """ Register XMPP Account """