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
29 local current_user="$1"
34 config_get user "$network" user
36 [ "$user" = "$current_user" ] || return 0
38 config_get name "$network" name
39 echo " <Network $name>" >> $ZNC_CONFIG
40 config_list_foreach "$network" server "add_param \" Server\""
41 config_list_foreach "$network" channel "add_chan"
53 config_get_bool DISABLED "$znc" disabled 0
55 [ "$DISABLED" -eq 0 ] || return 0
57 config_get znc_config_path "$znc" znc_config_path
59 config_get RUNAS_USER "$znc" runas_user
60 config_get RUNAS_GROUP "$znc" runas_group
62 if [ "${znc_config_path}" ]
64 ZNC_CONFIG_PATH=$znc_config_path
67 mkdir -p $ZNC_CONFIG_PATH/configs/
68 [ ! -f "$ZNC_CONFIG" ] || rm "$ZNC_CONFIG"
70 add_param "Version" "1.0"
72 config_get anoniplimit "$znc" anoniplimit
73 config_get maxbuffersize "$znc" maxbuffersize
74 config_get connectdelay "$znc" connectdelay
75 config_get serverthrottle "$znc" serverthrottle
76 config_get znc_pem_file "$znc" znc_ssl_cert
78 [ -z "$znc_pem_file" ] || ln -sf "$znc_pem_file" $ZNC_CONFIG_PATH/znc.pem
80 [ -z $anoniplimit ] || echo "AnonIPLimit = $anoniplimit" >> $ZNC_CONFIG
81 [ -z $maxbuffersize ] || echo "MaxBufferSize = $maxbuffersize" >> $ZNC_CONFIG
82 [ -z $connectdelay ] || echo "ConnectDelay = $connectdelay" >> $ZNC_CONFIG
83 [ -z $serverthrottle ] || echo "ServerThrottle = $anoniplimit" >> $ZNC_CONFIG
85 echo "PidFile = $PID_FILE" >> $ZNC_CONFIG
87 config_list_foreach "$znc" listener "add_param Listener"
88 config_list_foreach "$znc" module "add_param LoadModule"
90 add_param LoadModule "droproot ${RUNAS_USER:-nobody} ${RUNAS_GROUP:-nogroup}"
107 config_get password "$user" password
108 config_get nick "$user" nick
109 config_get altnick "$user" altnick
110 config_get ident "$user" ident
111 config_get realname "$user" realname
112 config_get buffer "$user" buffer
113 config_get quitmsg "$user" quitmsg
114 config_get chanmodes "$user" chanmodes
115 config_get vhost "$user" vhost
116 config_get server "$user" server
118 echo "<User $user>" >> $ZNC_CONFIG
121 "md5#"* | "sha256#"* | "plain#"*)
122 add_param " Pass" "$password"
125 add_param " Pass" "plain#$password"
129 add_param " Nick" "$nick"
130 add_param " AltNick" "${altnick:-$nick"_"}"
131 add_param " Ident" "${ident:-$nick}"
132 add_param " RealName" "${realname:-$nick}"
133 [ -z "$vhost" ] || add_param " VHost" "$vhost"
134 add_param " Buffer" "${buffer:-50}"
135 add_param " KeepBuffer" "false"
136 add_param " ChanModes" "${chanmodes:-"+stn"}"
137 [ -z "$quitmsg" ] || add_param " QuitMsg" "$quitmsg"
139 config_list_foreach "$user" module "add_param \" LoadModule\""
142 if [ "$server" ]; then
143 echo " <Network Default>" >> $ZNC_CONFIG
144 config_list_foreach "$user" server "add_param \" Server\""
145 config_list_foreach "$user" channel "add_chan"
146 echo " </Network>" >> $ZNC_CONFIG
149 config_foreach "add_network \"$user\"" network
151 echo "</User>" >> $ZNC_CONFIG
157 config_foreach znc_global znc
159 if [ "$DISABLED" -eq 1 ]; then
163 if [ "$EXTERNAL_CONFIG" -eq 0 ]
165 config_foreach add_listener listener
166 config_foreach add_user user
168 chown -hR ${RUNAS_USER:-nobody}:${RUNAS_GROUP:-nogroup} /tmp/etc/znc
171 if [ "$EXTERNAL_CONFIG" -eq 1 -a "$RUNAS_USER" ]
176 $SU -c "/usr/bin/znc -d$ZNC_CONFIG_PATH >/dev/null &" $RUNAS_USER
178 logger -s -t ZNC -p daemon.err "Could not run ZNC as user $RUNAS_USER: su not found."
182 /usr/bin/znc -d$ZNC_CONFIG_PATH >/dev/null &
187 if [ -f "$PID_FILE" ]
189 kill $(cat "$PID_FILE")