On 05/28/08, Darren J Moffat wrote:
>
> >ejabberdctl(1M) is used for other administration tasks. What it does
> >is to attach a remote shell the specified Erlang node(that is, an
> >Erlang VM) and sends command to ejabberd modules. Because Erlang
> >protects acess to nodes with a cookie file, which is only accessible
> >by the one who starts the server, so I assign "euid=1;egid=1" attribute
> >to the command in the profile.
>
> What underlying OS transport mechanism is used for this ? TCP, doors,
> UNIX domain sockets, pipes, shared memory ?
I just realized what I described on how ejabberdctl worked was
inaccurate. Ejabberd administration is implemented as an Erlang
application too. For most administration tasks, ejabberdctl(1M)
script actually starts a separate Erlang node to run that
application, which then may communicate with ejabberd server
application running in another node.
The inter-node communication is authenticated with cookie, which
is a shared secret among all nodes(I didn't find any document
dicussing the details, but I read somewhere the cookie's clear
text is not sent over network. So it may be used as a key to
encrypt a random challenge value to create a response for
authentication.) All messages sent on network are not encrypted.
Although I am not sure, I think the underlying OS transport
mechanism used for inter-node communication is TCP, because nodes
can run on different machines. Below is pfiles output for the
port ejabberd server listens on for inter-node communcation(
it is not the ports I metioned in FastTrack):
8: S_IFSOCK mode:0666 dev:293,0 ino:9441 uid:0 gid:0 size:0
O_RDWR|O_NONBLOCK
SOCK_STREAM
SO_SNDBUF(49152),SO_RCVBUF(49152)
sockname: AF_INET 0.0.0.0 port: 33523
--
Regards,
Raymond