[patch-team] Also build and package the extra modules and package the droproot module
[openwrt/svn-archive/archive.git] / net / znc / files / znc.init
1 #!/bin/sh /etc/rc.common
2 # Copyright (C) 2010 Openwrt.org
3
4 START=60
5
6 PID_FILE=/tmp/etc/znc/znc.pid
7 ZNC_CONFIG=/tmp/etc/znc/configs/znc.conf
8
9 add_param() {
10 echo "$1 = $2" >> $ZNC_CONFIG
11 }
12
13 znc_global() {
14 local znc="$1"
15 local anoniplimit
16 local maxbuffersize
17 local connectdelay
18 local serverthrottle
19
20
21 config_get anoniplimit "$znc" anoniplimit
22 config_get maxbuffersize "$znc" maxbuffersize
23 config_get connectdelay "$znc" connectdelay
24 config_get serverthrottle "$znc" serverthrottle
25
26 [ -z $anoniplimit ] || echo "AnonIPLimit = $anoniplimit" >> $ZNC_CONFIG
27 [ -z $maxbuffersize ] || echo "MaxBufferSize = $maxbuffersize" >> $ZNC_CONFIG
28 [ -z $connectdelay ] || echo "ConnectDelay = $connectdelay" >> $ZNC_CONFIG
29 [ -z $serverthrottle ] || echo "ServerThrottle = $anoniplimit" >> $ZNC_CONFIG
30
31 echo "PidFile = $PID_FILE" >> $ZNC_CONFIG
32
33 config_list_foreach "$znc" listener "add_param Listener"
34 config_list_foreach "$znc" module "add_param LoadModule"
35
36 add_param LoadModule "droproot nobody nogroup"
37 }
38
39 add_user() {
40 local user="$1"
41 local password
42 local nick
43 local altnick
44 local ident
45 local realname
46 local buffer
47 local quitmsg
48 local chanmodes
49 local vhost
50
51 config_get password "$user" password
52 config_get nick "$user" nick
53 config_get altnick "$user" altnick
54 config_get ident "$user" ident
55 config_get realname "$user" realname
56 config_get buffer "$user" buffer
57 config_get quitmsg "$user" quitmsg
58 config_get chanmodes "$user" chanmodes
59 config_get vhost "$user" vhost
60
61 echo "<User $user>" >> $ZNC_CONFIG
62 echo " Pass = plain#$password" >> $ZNC_CONFIG
63 echo " Nick = $nick" >> $ZNC_CONFIG
64 echo " AltNick = ${altnick:-$nick"_"}" >> $ZNC_CONFIG
65 echo " Ident = ${ident:-$nick}" >> $ZNC_CONFIG
66 echo " RealName = ${realname:-$nick}" >> $ZNC_CONFIG
67 [ -z "$vhost" ] || echo " VHost = $vhost" >> $ZNC_CONFIG
68 echo " Buffer = ${buffer:-50}" >> $ZNC_CONFIG
69 echo " KeepBuffer = false" >> $ZNC_CONFIG
70 echo " ChanModes = ${chanmodes:-"+stn"}" >> $ZNC_CONFIG
71 [ -z "$quitmsg" ] || echo " QuitMsg = $quitmsg" >> $ZNC_CONFIG
72
73 config_list_foreach "$user" server "add_param \" Server\""
74 config_list_foreach "$user" module "add_param \" LoadModule\""
75 echo "</User>" >> $ZNC_CONFIG
76 }
77
78
79 start() {
80 mkdir -p /tmp/etc/znc/configs/
81 [ -f "$ZNC_CONFIG" ] && rm "$ZNC_CONFIG"
82 config_load znc
83 config_foreach znc_global znc
84 config_foreach add_listener listener
85 config_foreach add_user user
86
87 chown -R nobody:nogroup /tmp/etc/znc
88 /usr/bin/znc -d/tmp/etc/znc -r >/dev/null &
89 }
90
91 stop() {
92 [ -f "$PID_FILE" ] && kill $(cat "$PID_FILE")
93 }
94