Committed revision 23626.
On Sat, Oct 23, 2010 at 6:32 PM, Jonas Gorski < [email protected] <jonas.gorski%[email protected]>> wrote: > Add a startup and a uci configuration for ZNC. This allows configuring > multiple users, loading modules with parameters (global and per user) > and starts the ZNC binary as nobody. The latter requires su, so add this > as a dependecy. > > Signed-off-by: Jonas Gorski > <[email protected]<jonas.gorski%[email protected]> > > > --- > net/znc/Makefile | 10 +++++- > net/znc/files/znc.conf | 13 +++++++ > net/znc/files/znc.init | 92 > ++++++++++++++++++++++++++++++++++++++++++++++++ > 3 files changed, 114 insertions(+), 1 deletions(-) > create mode 100644 net/znc/files/znc.conf > create mode 100644 net/znc/files/znc.init > > diff --git a/net/znc/Makefile b/net/znc/Makefile > index 08364d4..1eaf795 100644 > --- a/net/znc/Makefile > +++ b/net/znc/Makefile > @@ -29,7 +29,7 @@ endef > > define Package/znc > $(Package/znc/default) > - DEPENDS:=+libopenssl +uclibcxx > + DEPENDS:=+libopenssl +uclibcxx +coreutils-su > MENU:=1 > endef > > @@ -39,6 +39,10 @@ define Package/znc/description > bouncing, and c++ module support to name a few. > endef > > +define Package/znc/conffiles > +/etc/config/znc > +endef > + > define Package/znc-mod-admin > $(Package/znc/default) > TITLE+= (admin plugin) > @@ -388,6 +392,10 @@ endef > define Package/znc/install > $(INSTALL_DIR) $(1)/usr/bin > $(INSTALL_BIN) $(PKG_BUILD_DIR)/znc $(1)/usr/bin/ > + $(INSTALL_DIR) $(1)/etc/init.d > + $(INSTALL_BIN) ./files/znc.init $(1)/etc/init.d/znc > + $(INSTALL_DIR) $(1)/etc/config > + $(INSTALL_DATA) ./files/znc.conf $(1)/etc/config/znc > endef > > define Package/znc-mod-admin/install > diff --git a/net/znc/files/znc.conf b/net/znc/files/znc.conf > new file mode 100644 > index 0000000..ba3f069 > --- /dev/null > +++ b/net/znc/files/znc.conf > @@ -0,0 +1,13 @@ > +config znc > + # where to listen for connections > + list listener '192.168.1.1 1234' > + > +config user 'sampleUser' > + option password 'changeme' > + option nick 'sampleUser' > + option altnick 'userSample' > + option ident 'openwrt' > + option realname 'John Doe' > + > + # list of allowed servers > + list server 'chat.freenode.net 6667' > diff --git a/net/znc/files/znc.init b/net/znc/files/znc.init > new file mode 100644 > index 0000000..6e56efd > --- /dev/null > +++ b/net/znc/files/znc.init > @@ -0,0 +1,92 @@ > +#!/bin/sh /etc/rc.common > +# Copyright (C) 2010 Openwrt.org > + > +START=60 > + > +PID_FILE=/tmp/etc/znc/znc.pid > +ZNC_CONFIG=/tmp/etc/znc/configs/znc.conf > + > +add_param() { > + echo "$1 = $2" >> $ZNC_CONFIG > +} > + > +znc_global() { > + local znc="$1" > + local anoniplimit > + local maxbuffersize > + local connectdelay > + local serverthrottle > + > + > + config_get anoniplimit "$znc" anoniplimit > + config_get maxbuffersize "$znc" maxbuffersize > + config_get connectdelay "$znc" connectdelay > + config_get serverthrottle "$znc" serverthrottle > + > + [ -z $anoniplimit ] || echo "AnonIPLimit = $anoniplimit" >> > $ZNC_CONFIG > + [ -z $maxbuffersize ] || echo "MaxBufferSize = $maxbuffersize" >> > $ZNC_CONFIG > + [ -z $connectdelay ] || echo "ConnectDelay = $connectdelay" >> > $ZNC_CONFIG > + [ -z $serverthrottle ] || echo "ServerThrottle = $anoniplimit" >> > $ZNC_CONFIG > + > + echo "PidFile = $PID_FILE" >> $ZNC_CONFIG > + > + config_list_foreach "$znc" listener "add_param Listener" > + config_list_foreach "$znc" module "add_param LoadModule" > +} > + > +add_user() { > + local user="$1" > + local password > + local nick > + local altnick > + local ident > + local realname > + local buffer > + local quitmsg > + local chanmodes > + local vhost > + > + config_get password "$user" password > + config_get nick "$user" nick > + config_get altnick "$user" altnick > + config_get ident "$user" ident > + config_get realname "$user" realname > + config_get buffer "$user" buffer > + config_get quitmsg "$user" quitmsg > + config_get chanmodes "$user" chanmodes > + config_get vhost "$user" vhost > + > + echo "<User $user>" >> $ZNC_CONFIG > + echo " Pass = plain#$password" >> $ZNC_CONFIG > + echo " Nick = $nick" >> $ZNC_CONFIG > + echo " AltNick = ${altnick:-$nick"_"}" >> $ZNC_CONFIG > + echo " Ident = ${ident:-$nick}" >> $ZNC_CONFIG > + echo " RealName = ${realname:-$nick}" >> $ZNC_CONFIG > + [ -z "$vhost" ] || echo " VHost = $vhost" >> $ZNC_CONFIG > + echo " Buffer = ${buffer:-50}" >> $ZNC_CONFIG > + echo " KeepBuffer = false" >> $ZNC_CONFIG > + echo " ChanModes = ${chanmodes:-"+stn"}" >> $ZNC_CONFIG > + [ -z "$quitmsg" ] || echo " QuitMsg = $quitmsg" >> $ZNC_CONFIG > + > + config_list_foreach "$user" server "add_param \" Server\"" > + config_list_foreach "$user" module "add_param \" > LoadModule\"" > + echo "</User>" >> $ZNC_CONFIG > +} > + > + > +start() { > + mkdir -p /tmp/etc/znc/configs/ > + [ -f "$ZNC_CONFIG" ] && rm "$ZNC_CONFIG" > + config_load znc > + config_foreach znc_global znc > + config_foreach add_listener listener > + config_foreach add_user user > + > + chown -R nobody:nogroup /tmp/etc/znc > + su -s /bin/ash -c "/usr/bin/znc -d/tmp/etc/znc" nobody > +} > + > +stop() { > + [ -f "$PID_FILE" ] && kill $(cat "$PID_FILE") > +} > + > -- > 1.5.6.5 > > _______________________________________________ > openwrt-devel mailing list > [email protected] > https://lists.openwrt.org/mailman/listinfo/openwrt-devel >
_______________________________________________ openwrt-devel mailing list [email protected] https://lists.openwrt.org/mailman/listinfo/openwrt-devel
