ZNC

From Hack Sphere Labs Wiki
Jump to: navigation, search

Debian

aptitude install build-essential libssl-dev libperl-dev
aptitude build-dep znc
./configure --prefix=$HOME/znc
$HOME/znc/bin/znc --makeconf

znc chroot

Create chroot dir

mkdir zncchroot
cd zncchroot
mkdir etc/
mkdir dev/
mkdir usr/
mkdir usr/lib/
mkdir usr/local
mkdir usr/local/share
mkdir usr/local/bin
mkdir usr/local/lib
mkdir lib/
mkdir home/
mkdir home/znc_notion

List libs needed

ldd znc

Copy listed libs to respected directories

cd zncchroot
cp --parents /lib/x86_64-linux-gnu/libdl.so.2 .
cp --parents /usr/lib/x86_64-linux-gnu/libssl.so.1.0.0 .
cp --parents /usr/lib/x86_64-linux-gnu/libcrypto.so.1.0.0 .
cp --parents /usr/lib/x86_64-linux-gnu/libstdc++.so.6 .
cp --parents /lib/x86_64-linux-gnu/libm.so.6 .
cp --parents /lib/x86_64-linux-gnu/libgcc_s.so.1 .
cp --parents /lib/x86_64-linux-gnu/libpthread.so.0 .
cp --parents /lib/x86_64-linux-gnu/libc.so.6 .
cp --parents /lib64/ld-linux-x86-64.so.2 .
cp --parents /lib/x86_64-linux-gnu/libz.so.1 .

More Files

cp --parents /etc/hosts .
cp --parents /etc/resolv.conf .
cp --parents /lib/x86_64-linux-gnu/libnss_dns.so.2 .
cp --parents /lib/x86_64-linux-gnu/libresolv.so.2 .
cp -r /home/znc_notion/.znc home/znc_notion/

You have to copy znc. I compiled with prefix in my user dir so I am going to move it there

cp -r znc zncchroot/home/znc_notion/

StartZNC

start-stop-daemon --chroot /home/znc_notion/zncchroot/ --chuid znc_notion:znc_notion --start --exec /home/znc_notion/znc/bin/znc
start-stop-daemon --chroot /home/znc_notion/zncchroot/ --chuid znc_notion:znc_notion --stop --exec /home/znc_notion/znc/bin/znc

init.d

 
### BEGIN INIT INFO
# Provides:          znc
# Required-Start:    $all
# Required-Stop:     $all
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: znc
# Description:	     znc chrooted
### END INIT INFO

#! /bin/sh

# Modification to Peter Palfrader's Debian Tor init script
#  by Steven J. Murdoch (http://www.cl.cam.ac.uk/users/sjm217/)

set -e

ZNCCHROOT=/home/zncuser/zncchroot

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/home/zncuser/start-znc-chroot
EXECDAEMON=$ZNCCHROOT/home/zncuser/znc/bin/znc
NAME=znc
DESC="znc daemon"
ZNCPID=$ZNCCHROOT/home/zncuser/.znc/znc.pid
DEFAULTSFILE=/etc/default/$NAME
WAITFORDAEMON=10
ARGS=""

. /lib/lsb/init-functions

test -x $DAEMON || exit 0

# Include tor defaults if available
if [ -f $DEFAULTSFILE ] ; then
	. $DEFAULTSFILE
fi

wait_for_deaddaemon () {
	pid=$1
	sleep 1
	if test -n "$pid"
	then
		if kill -0 $pid 2>/dev/null
		then
			echo -n "."
			cnt=0
			while kill -0 $pid 2>/dev/null
			do
				cnt=`expr $cnt + 1`
				if [ $cnt -gt $WAITFORDAEMON ]
				then
					echo " FAILED."
					return 1
				fi
				sleep 1
				echo -n "."
			done
		fi
	fi
	return 0
}

case "$1" in
  start)
	if [ "$RUN_DAEMON" != "yes" ]; then
		echo "Not starting $DESC (Disabled in $DEFAULTSFILE)."
	else
		echo -n "Starting $DESC: "
		start-stop-daemon --start --quiet --oknodo \
			--pidfile $ZNCPID \
			--exec $DAEMON -- $ARGS
		echo "$NAME."
	fi
	;;
  stop)
	echo -n "Stopping $DESC: "
	pid=`cat $ZNCPID 2>/dev/null` || true
	if test ! -f $ZNCPID -o -z "$pid"
	then
		echo "not running (there is no $ZNCPID)."
	elif start-stop-daemon --stop --quiet --pidfile $ZNCPID --exec $EXECDAEMON
	then
		wait_for_deaddaemon $pid
		echo "$NAME."
	elif kill -0 $pid 2>/dev/null
	then
		echo "FAILED (Is $pid not $NAME?  Is $EXECDAEMON a different binary now?)."
	else
		echo "FAILED ($DAEMON died: process $pid not running; or permission denied)."
	fi
	;;
  reload|force-reload)
	echo -n "Reloading $DESC configuration: "
	pid=`cat $ZNCPID 2>/dev/null` || true
	if test ! -f $ZNCPID -o -z "$pid"
	then
		echo "not running (there is no $ZNCPID)."
	elif start-stop-daemon --stop --signal 1 --quiet --pidfile $ZNCPID --exec $EXECDAEMON
	then
		echo "$NAME."
	elif kill -0 $pid 2>/dev/null
	then
		echo "FAILED (Is $pid not $NAME?  Is $EXECDAEMON a different binary now?)."
	else
		echo "FAILED ($DAEMON died: process $pid not running; or permission denied)."
	fi
	;;
  restart)
	$0 stop
	sleep 1
	$0 start
	;;
  status)
        status_of_proc -p $ZNCPID $EXECDAEMON $NAME && exit 0 || exit $?
        ;;
  *)
	echo "Usage: $0 {start|stop|restart|reload|force-reload}" >&2
	exit 1
	;;
esac

exit 0


  • init.d daemon
#! /bin/sh
#Script to start ZNC in chroot
start-stop-daemon --chroot /home/zncuser/zncchroot/ --chuid zncuser:zncuser --start --exec /home/zncuser/znc/bin/znc

Ident

aptitude install nullidentd

Notes