1 #!/bin/sh /etc/rc.common
2 # Copyright (C) 2010 Openwrt.org
6 ZNC_CONFIG_PATH=/tmp/etc/znc
7 PID_FILE=${ZNC_CONFIG_PATH}/znc.pid
8 ZNC_CONFIG=${ZNC_CONFIG_PATH}/configs/znc.conf
17 echo "$1 = $2" >> $ZNC_CONFIG
23 echo " <Chan $chan>" >> $ZNC_CONFIG
24 [ "$chan" != "$pass" ] && echo " Key = $pass" >> $ZNC_CONFIG
25 echo " </Chan>" >> $ZNC_CONFIG
37 config_get_bool DISABLED "$znc" disabled 0
39 [ "$DISABLED" -eq 0 ] || return 0
41 config_get znc_config_path "$znc" znc_config_path
43 config_get RUNAS_USER "$znc" runas_user
44 config_get RUNAS_GROUP "$znc" runas_group
46 if [ "${znc_config_path}" ]
48 ZNC_CONFIG_PATH=$znc_config_path
51 mkdir -p $ZNC_CONFIG_PATH/configs/
52 [ ! -f "$ZNC_CONFIG" ] || rm "$ZNC_CONFIG"
54 config_get anoniplimit "$znc" anoniplimit
55 config_get maxbuffersize "$znc" maxbuffersize
56 config_get connectdelay "$znc" connectdelay
57 config_get serverthrottle "$znc" serverthrottle
58 config_get znc_pem_file "$znc" znc_ssl_cert
60 [ -z "$znc_pem_file" ] || ln -sf "$znc_pem_file" $ZNC_CONFIG_PATH/znc.pem
62 [ -z $anoniplimit ] || echo "AnonIPLimit = $anoniplimit" >> $ZNC_CONFIG
63 [ -z $maxbuffersize ] || echo "MaxBufferSize = $maxbuffersize" >> $ZNC_CONFIG
64 [ -z $connectdelay ] || echo "ConnectDelay = $connectdelay" >> $ZNC_CONFIG
65 [ -z $serverthrottle ] || echo "ServerThrottle = $anoniplimit" >> $ZNC_CONFIG
67 echo "PidFile = $PID_FILE" >> $ZNC_CONFIG
69 config_list_foreach "$znc" listener "add_param Listener"
70 config_list_foreach "$znc" module "add_param LoadModule"
72 add_param LoadModule "droproot ${RUNAS_USER:-nobody} ${RUNAS_GROUP:-nogroup}"
88 config_get password "$user" password
89 config_get nick "$user" nick
90 config_get altnick "$user" altnick
91 config_get ident "$user" ident
92 config_get realname "$user" realname
93 config_get buffer "$user" buffer
94 config_get quitmsg "$user" quitmsg
95 config_get chanmodes "$user" chanmodes
96 config_get vhost "$user" vhost
98 echo "<User $user>" >> $ZNC_CONFIG
101 "md5#"* | "sha256#"* | "plain#"*)
102 echo " Pass = $password" >> $ZNC_CONFIG
105 echo " Pass = plain#$password" >> $ZNC_CONFIG
109 echo " Nick = $nick" >> $ZNC_CONFIG
110 echo " AltNick = ${altnick:-$nick"_"}" >> $ZNC_CONFIG
111 echo " Ident = ${ident:-$nick}" >> $ZNC_CONFIG
112 echo " RealName = ${realname:-$nick}" >> $ZNC_CONFIG
113 [ -z "$vhost" ] || echo " VHost = $vhost" >> $ZNC_CONFIG
114 echo " Buffer = ${buffer:-50}" >> $ZNC_CONFIG
115 echo " KeepBuffer = false" >> $ZNC_CONFIG
116 echo " ChanModes = ${chanmodes:-"+stn"}" >> $ZNC_CONFIG
117 [ -z "$quitmsg" ] || echo " QuitMsg = $quitmsg" >> $ZNC_CONFIG
119 config_list_foreach "$user" server "add_param \" Server\""
120 config_list_foreach "$user" module "add_param \" LoadModule\""
121 config_list_foreach "$user" channel "add_chan"
122 echo "</User>" >> $ZNC_CONFIG
128 config_foreach znc_global znc
130 if [ "$DISABLED" -eq 1 ]; then
134 if [ "$EXTERNAL_CONFIG" -eq 0 ]
136 config_foreach add_listener listener
137 config_foreach add_user user
139 chown -hR ${RUNAS_USER:-nobody}:${RUNAS_GROUP:-nogroup} /tmp/etc/znc
142 if [ "$EXTERNAL_CONFIG" -eq 1 -a "$RUNAS_USER" ]
147 $SU -c "/usr/bin/znc -d$ZNC_CONFIG_PATH >/dev/null &" $RUNAS_USER
149 logger -s -t ZNC -p daemon.err "Could not run ZNC as user $RUNAS_USER: su not found."
153 /usr/bin/znc -d$ZNC_CONFIG_PATH >/dev/null &
158 if [ -f "$PID_FILE" ]
160 kill $(cat "$PID_FILE")