aboutsummaryrefslogtreecommitdiff
path: root/src/ejabberdctl.template
blob: 106852fcfd61b36ea6ee04b89106597eb8f49d11 (plain) (blame)
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
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
#!/bin/sh

NODE=ejabberd
HOST=localhost
ERLANG_NODE=$NODE@$HOST

# Define ejabberd environment
ROOTDIR=@rootdir@
EJABBERD_CFG=$ROOTDIR/etc/ejabberd/ejabberd.cfg
EJABBERDCTL_CFG=$ROOTDIR/etc/ejabberd/ejabberdctl.cfg
EJABBERD_INETRC=$ROOTDIR/etc/ejabberd/ejabberd.inetrc
EJABBERD_EBIN=$ROOTDIR/var/lib/ejabberd/ebin
EJABBERD_DB=$ROOTDIR/var/lib/ejabberd/db/$NODE
EJABBERD_MSGS_PATH=$ROOTDIR/var/lib/ejabberd/priv/msgs
EJABBERD_SO_PATH=$ROOTDIR/var/lib/ejabberd/priv/lib
EJABBERD_LOG_PATH=$ROOTDIR/var/log/ejabberd/ejabberd.log
SASL_LOG_PATH=$ROOTDIR/var/log/ejabberd/sasl.log

[ -d $EJABBERD_DB ] || mkdir -p $EJABBERD_DB

[ -f $EJABBERDCTL_CFG ] && . $EJABBERDCTL_CFG

HOME=$ROOTDIR/var/lib/ejabberd
export HOME

if [ $# -ne 0 ] ; then
    case $1 in
        --node) shift ; ERLANG_NODE=$1 ; shift ;;
    esac
fi

if [ "$ERLANG_NODE" = "${ERLANG_NODE%.*}" ] ; then
    SNAME="-kernel inetrc \""$EJABBERD_INETRC"\" -sname"
else
    SNAME=-name
fi

ERLANG_OPTS="$POLL $PROCESSES $ERL_MAX_ETS_TABLES"

function start
{
    erl \
      $SNAME $ERLANG_NODE \
      $ERLANG_OPTS \
      -noinput -detached \
      -pa $EJABBERD_EBIN \
      -mnesia dir "\"$EJABBERD_DB\"" \
      -s ejabberd \
      -ejabberd config \"$EJABBERD_CFG\" \
                log_path \"$EJABBERD_LOG_PATH\" \
      -sasl sasl_error_logger \{file,\"$SASL_LOG_PATH\"\}
}

function debug
{
    echo "--------------------------------------------------------------------"
    echo ""
    echo "IMPORTANT: we will attempt to attach an INTERACTIVE shell"
    echo "to an already running ejabberd node."
    echo "If an ERROR is printed, it means the connection was not succesfull."
    echo "You can interact with the ejabberd node if you know how to use it."
    echo "Please be extremely cautious with your actions,"
    echo "and exit immediately if you are not completely sure."
    echo ""
    echo "To detach this shell from ejabberd, press:"
    echo "  control+c, control+c"
    echo ""
    echo "--------------------------------------------------------------------"
    read -p "Press any key to continue"
    echo ""
    erl \
      $SNAME debug \
      -remsh $ERLANG_NODE
}

function live
{
    echo "--------------------------------------------------------------------"
    echo ""
    echo "IMPORTANT: ejabberd is going to start in LIVE (interactive) mode."
    echo "All log messages will be shown in the command shell."
    echo "You can interact with the ejabberd node if you know how to use it."
    echo "Please be extremely cautious with your actions,"
    echo "and exit immediately if you are not completely sure."
    echo ""
    echo "To exit this LIVE mode and stop ejabberd, press:"
    echo "  q().  and press the Enter key"
    echo ""
    echo "--------------------------------------------------------------------"
    read -p "Press any key to continue"
    echo ""
    erl \
      $SNAME $ERLANG_NODE \
      $ERLANG_OPTS \
      -pa $EJABBERD_EBIN \
      -mnesia dir "\"$EJABBERD_DB\"" \
      -ejabberd config \"$EJABBERD_CFG\" \
      -s ejabberd
}

function ctl
{
    erl \
      $SNAME ejabberdctl \
      -noinput \
      -pa $EJABBERD_EBIN \
      -s ejabberd_ctl -extra $ERLANG_NODE $@
    case $? in
       2) help_start;;
       3) help_start;;
    esac
}

function usage
{
    ctl
    exit
}

function help_start
{
    echo ""
    echo "Commands to start an ejabberd node:"
    echo "  start    Start an ejabberd node in server mode"
    echo "  debug    Attach an interactive Erlang shell to a running ejabberd node"
    echo "  live     Start an ejabberd node in live (interactive) mode"
    echo ""
}

case $1 in
    start) start;;
    debug) debug;;
    live) live;;
    *) ctl $@;;
esac