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
18 echo "$1 = $2" >> $ZNC_CONFIG
24 echo " <Chan $chan>" >> $ZNC_CONFIG
25 [ "$chan" != "$pass" ] && echo " Key = $pass" >> $ZNC_CONFIG
26 echo " </Chan>" >> $ZNC_CONFIG
30 local current_user
="$1"
35 config_get user
"$network" user
37 [ "$user" = "$current_user" ] ||
return 0
39 config_get name
"$network" name
40 echo " <Network $name>" >> $ZNC_CONFIG
41 config_list_foreach
"$network" server
"add_param \" Server\""
42 config_list_foreach
"$network" fingerprint
"add_param \" trustedserverfingerprint\""
43 config_list_foreach
"$network" channel
"add_chan"
44 echo " </Network>" >> $ZNC_CONFIG
56 config_get_bool DISABLED
"$znc" disabled
0
58 [ "$DISABLED" -eq 0 ] ||
return 0
60 config_get znc_config_path
"$znc" znc_config_path
62 config_get RUNAS_USER
"$znc" runas_user
63 config_get RUNAS_GROUP
"$znc" runas_group
64 config_get RUNAS_SHELL
"$znc" runas_shell
66 if [ "${znc_config_path}" ]
68 ZNC_CONFIG_PATH
=$znc_config_path
71 mkdir
-p $ZNC_CONFIG_PATH/configs
/
72 [ ! -f "$ZNC_CONFIG" ] ||
rm "$ZNC_CONFIG"
74 add_param
"Version" "1.0"
76 config_get anoniplimit
"$znc" anoniplimit
77 config_get maxbuffersize
"$znc" maxbuffersize
78 config_get connectdelay
"$znc" connectdelay
79 config_get serverthrottle
"$znc" serverthrottle
80 config_get znc_pem_file
"$znc" znc_ssl_cert
82 [ -z "$znc_pem_file" ] ||
ln -sf "$znc_pem_file" $ZNC_CONFIG_PATH/znc.pem
84 [ -z $anoniplimit ] ||
echo "AnonIPLimit = $anoniplimit" >> $ZNC_CONFIG
85 [ -z $maxbuffersize ] ||
echo "MaxBufferSize = $maxbuffersize" >> $ZNC_CONFIG
86 [ -z $connectdelay ] ||
echo "ConnectDelay = $connectdelay" >> $ZNC_CONFIG
87 [ -z $serverthrottle ] ||
echo "ServerThrottle = $anoniplimit" >> $ZNC_CONFIG
89 echo "PidFile = $PID_FILE" >> $ZNC_CONFIG
91 config_list_foreach
"$znc" listener
"add_param Listener"
92 config_list_foreach
"$znc" module
"add_param LoadModule"
94 add_param LoadModule
"droproot ${RUNAS_USER:-nobody} ${RUNAS_GROUP:-nogroup}"
111 config_get password
"$user" password
112 config_get nick
"$user" nick
113 config_get altnick
"$user" altnick
114 config_get ident
"$user" ident
115 config_get realname
"$user" realname
116 config_get buffer
"$user" buffer
117 config_get quitmsg
"$user" quitmsg
118 config_get chanmodes
"$user" chanmodes
119 config_get vhost
"$user" vhost
120 config_get server
"$user" server
122 echo "<User $user>" >> $ZNC_CONFIG
125 "md5#"* |
"sha256#"* |
"plain#"*)
126 add_param
" Pass" "$password"
129 add_param
" Pass" "plain#$password"
133 add_param
" Nick" "$nick"
134 add_param
" AltNick" "${altnick:-$nick"_"}"
135 add_param
" Ident" "${ident:-$nick}"
136 add_param
" RealName" "${realname:-$nick}"
137 [ -z "$vhost" ] || add_param
" VHost" "$vhost"
138 add_param
" Buffer" "${buffer:-50}"
139 add_param
" KeepBuffer" "false"
140 add_param
" ChanModes" "${chanmodes:-"+stn"}"
141 [ -z "$quitmsg" ] || add_param
" QuitMsg" "$quitmsg"
143 config_list_foreach
"$user" module
"add_param \" LoadModule\""
146 if [ "$server" ]; then
147 echo " <Network Default>" >> $ZNC_CONFIG
148 config_list_foreach
"$user" server
"add_param \" Server\""
149 config_list_foreach
"$user" fingerprint
"add_param \" trustedserverfingerprint\""
150 config_list_foreach
"$user" channel
"add_chan"
151 echo " </Network>" >> $ZNC_CONFIG
154 config_foreach
"add_network \"$user\"" network
156 echo "</User>" >> $ZNC_CONFIG
162 config_foreach znc_global znc
164 if [ "$DISABLED" -eq 1 ]; then
168 if [ "$EXTERNAL_CONFIG" -eq 0 ]
170 config_foreach add_listener listener
171 config_foreach add_user user
173 chown
-hR ${RUNAS_USER:-nobody}:${RUNAS_GROUP:-nogroup} ${ZNC_CONFIG_PATH}
176 if [ "$EXTERNAL_CONFIG" -eq 1 -a "$RUNAS_USER" ]
181 chown
-hR ${RUNAS_USER:-nobody}:${RUNAS_GROUP:-nogroup} ${ZNC_CONFIG_PATH}
182 $SU ${RUNAS_SHELL:+s $RUNAS_SHELL} -c "/usr/bin/znc -d$ZNC_CONFIG_PATH >/dev/null &" $RUNAS_USER
184 logger
-s -t ZNC
-p daemon.err
"Could not run ZNC as user $RUNAS_USER: su not found."
188 /usr
/bin
/znc
-d$ZNC_CONFIG_PATH >/dev
/null
&
193 if [ -f "$PID_FILE" ]
195 kill $
(cat "$PID_FILE")