compile extra module and use with Debian-packaged ejabberd

I'd like to use mod_muc_admin. I tried installing it but the new commands don't show up in ejabberdctl and the new pages don't show up in the web admin.

Details:

I found the source code for it on this site (in svn) and downloaded it. I have the following packages installed on my Debian Squeeze system:

ejabberd 2.1.5-3+squeeze1
erlang-dev 1:14.a-dfsg-3squeeze1
erlang-webtool 1:14.a-dfsg-3squeeze1
erlang-tools 1:14.a-dfsg-3squeeze1

I am running ejabberd, and can visit the admin web site http://localhost:5280/admin/ and see the state of the jabber daemon.
I can run ejabberdctl and get a list of commands to run for admin (includes mod_admin_extra commands, but not mod_muc_admin commands).
I've been able to chat with people individually and in a couple of rooms. Now I want to make a room "members-only" and try that.
I'm trying to figure out how to assign members to the room. Is it by creating an access list, and setting an "affiliation" with the
room "members"?

I cd into the downloaded ejabberd_modules/mod_muc_admin/trunk, and ran build.sh. It seemed to complete successfully and there was an ebin/mod_muc_admin.beam file created. I copied this to where the other ejabberd beam files are: /usr/lib/ejabberd/ebin. There are bunches
of other .beam files there, including ejabberd.beam. I made sure it has the same ownership/permissions as the other files there (root.root, 644)

I looked in /etc/ejabberd/ejabberd.cfg in the {modules, []} directive, and noted that:

{mod_muc_admin, []},

was already there (not commented out with %).

So I restarted ejabberd with invoke-rc.d ejabberd stop; invoke-rc.d ejabberd start

Unfortunately, there is no extra item in the web admin page, and no extra command in the ejabberdctl output.

I also tried ejabberdctl update mod_muc_admin, with no obvious errors, but this showed up in the log file:

=INFO REPORT==== 2012-06-22 19:13:00 ===
D(<0.514.0>:ejabberd_commands:314) : Executing command ejabberd_admin:update with Args=["mod_
muc_admin"]

=INFO REPORT==== 2012-06-22 19:13:00 ===
D(<0.514.0>:ejabberd_update:87) : beam files: []


=INFO REPORT==== 2012-06-22 19:13:00 ===
D(<0.514.0>:ejabberd_update:134) : script: []


=INFO REPORT==== 2012-06-22 19:13:00 ===
D(<0.514.0>:ejabberd_update:135) : low level script: [point_of_no_return]


=INFO REPORT==== 2012-06-22 19:13:00 ===
D(<0.514.0>:ejabberd_update:136) : check: ok


=INFO REPORT==== 2012-06-22 19:13:00 ===
D(<0.514.0>:ejabberd_update:134) : script: []


=INFO REPORT==== 2012-06-22 19:13:00 ===
D(<0.514.0>:ejabberd_update:135) : low level script: [point_of_no_return]


=INFO REPORT==== 2012-06-22 19:13:00 ===
D(<0.514.0>:ejabberd_update:136) : check: ok


=INFO REPORT==== 2012-06-22 19:13:00 ===
I(<0.514.0>:ejabberd_update:64) : eval: {ok,[]}


=INFO REPORT==== 2012-06-22 19:13:14 ===
D(<0.505.0>:ejabberd_http:255) : (#Port<0.4250>) http query: 'GET' /admin/

but I don't really get that there was an eror from this ...

I also see some of these:

=ERROR REPORT==== 2012-06-22 18:24:46 ===
E(<0.37.0>:gen_mod:73) : {undef,[{mod_muc_admin,start,["sourcerer.ca",[]]},
                                 {gen_mod,start_module,3},
                                 {lists,foreach,2},
                                 {ejabberd_app,start,2},
                                 {application_master,start_it_old,4}]}

but I think they must be from when there is no mod_muc_admin.beam file.

Questions:

  • Can I get a list of modules running in ejabberd? I don't see a command for that in ejabberdctl, maybe I missed it?
  • I've looked in /var/log/ejabberd/ejabberd.log for errors related to this but I don't see any (except as mentioned above)
  • and in /var/log/ejabberd/erlang.log
  • I just don't know how to read /var/log/ejabberd/erl_crash.dump
  • When I run invoke-rc.d ejabberd stop, is this process supposed to be still running: /usr/lib/erlang/erts-5.8/bin/epmd -daemon ?
    • what is it? Is that an mnesia daemon? Should I be stopping it and restarting it too?
  • How to add members to a room (esp. members-only room)?

Help on how to proceed in making this work would be most welcome. I've started reading the erlang tutorial at http://learnyousomeerlang.com/recursion but I fear it will be a very long time before I solve the problem by myself.

Thanks in advance for any help.

Syndicate content