[net] wireless: Moved horst radio scanning tool to wireless submenu.
[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 add_chan() {
14 chan=${1% *}
15 pass=${1#* }
16 echo " <Chan $chan>" >> $ZNC_CONFIG
17 [ "$chan" != "$pass" ] && echo " Key = $pass" >> $ZNC_CONFIG
18 echo " </Chan>" >> $ZNC_CONFIG
19 }
20
21 znc_global() {
22 local znc="$1"
23 local anoniplimit
24 local maxbuffersize
25 local connectdelay
26 local serverthrottle
27
28
29 config_get anoniplimit "$znc" anoniplimit
30 config_get maxbuffersize "$znc" maxbuffersize
31 config_get connectdelay "$znc" connectdelay
32 config_get serverthrottle "$znc" serverthrottle
33
34 [ -z $anoniplimit ] || echo "AnonIPLimit = $anoniplimit" >> $ZNC_CONFIG
35 [ -z $maxbuffersize ] || echo "MaxBufferSize = $maxbuffersize" >> $ZNC_CONFIG
36 [ -z $connectdelay ] || echo "ConnectDelay = $connectdelay" >> $ZNC_CONFIG
37 [ -z $serverthrottle ] || echo "ServerThrottle = $anoniplimit" >> $ZNC_CONFIG
38
39 echo "PidFile = $PID_FILE" >> $ZNC_CONFIG
40
41 config_list_foreach "$znc" listener "add_param Listener"
42 config_list_foreach "$znc" module "add_param LoadModule"
43
44 add_param LoadModule "droproot nobody nogroup"
45 }
46
47 add_user() {
48 local user="$1"
49 local password
50 local nick
51 local altnick
52 local ident
53 local realname
54 local buffer
55 local quitmsg
56 local chanmodes
57 local vhost
58
59 config_get password "$user" password
60 config_get nick "$user" nick
61 config_get altnick "$user" altnick
62 config_get ident "$user" ident
63 config_get realname "$user" realname
64 config_get buffer "$user" buffer
65 config_get quitmsg "$user" quitmsg
66 config_get chanmodes "$user" chanmodes
67 config_get vhost "$user" vhost
68
69 echo "<User $user>" >> $ZNC_CONFIG
70
71 case "$password" in
72 "md5#"* | "sha256#"* | "plain#"*)
73 echo " Pass = $password" >> $ZNC_CONFIG
74 ;;
75 *)
76 echo " Pass = plain#$password" >> $ZNC_CONFIG
77 ;;
78 esac
79
80 echo " Nick = $nick" >> $ZNC_CONFIG
81 echo " AltNick = ${altnick:-$nick"_"}" >> $ZNC_CONFIG
82 echo " Ident = ${ident:-$nick}" >> $ZNC_CONFIG
83 echo " RealName = ${realname:-$nick}" >> $ZNC_CONFIG
84 [ -z "$vhost" ] || echo " VHost = $vhost" >> $ZNC_CONFIG
85 echo " Buffer = ${buffer:-50}" >> $ZNC_CONFIG
86 echo " KeepBuffer = false" >> $ZNC_CONFIG
87 echo " ChanModes = ${chanmodes:-"+stn"}" >> $ZNC_CONFIG
88 [ -z "$quitmsg" ] || echo " QuitMsg = $quitmsg" >> $ZNC_CONFIG
89
90 config_list_foreach "$user" server "add_param \" Server\""
91 config_list_foreach "$user" module "add_param \" LoadModule\""
92 config_list_foreach "$user" channel "add_chan"
93 echo "</User>" >> $ZNC_CONFIG
94 }
95
96
97 start() {
98 mkdir -p /tmp/etc/znc/configs/
99 [ -f "$ZNC_CONFIG" ] && rm "$ZNC_CONFIG"
100 config_load znc
101 config_foreach znc_global znc
102 config_foreach add_listener listener
103 config_foreach add_user user
104
105 chown -R nobody:nogroup /tmp/etc/znc
106 /usr/bin/znc -d/tmp/etc/znc -r >/dev/null &
107 }
108
109 stop() {
110 [ -f "$PID_FILE" ] && kill $(cat "$PID_FILE")
111 }
112