NewCS server op een PC met ubuntu
Van MythTV.nl Wiki
Hier volgt een korte omschrijving om een NewCS server op te zetten op een linux machine die draait onder Ubuntu.
Download het zip bestand met de NewCS binaries (helaas is NewCS geen opensource).
- [[1]]
Pak deze zip uit in de home directory. Dan zie je de volgende directory structuur:
- newcs-1.62
- bin -- directory met de binaries
- configs -- directory met configuratie voorbeelden
- win32 -- voor de windows gebruikers onder ons
Tevens vind je 2 bestanden in de newcs direcotry:
- newcs-default.xml -- default configuratie bestand met extra uitleg
- readme.txt -- zoals de naam al zegt: lees dit door
Voor ubuntu hebben we 1 bin en 1 config bestand nodig. NewCS server met ubuntu De binary die we nodig hebben is de newcs.i686.
Om te zorgen dat deze binaries niet tussen de "standaard" binaries van ubuntu komt te staan copieeren we deze naar /usr/local/bin en voor de duidenlijkheid hernoemen we het bestand naar newcs.
sudo cp newcs-1.62/bin/newcs.i686 /usr/local/bin/newcs
Binnen ubuntu staan de meeste configuratie bestanden onder de /etc direcotry in hun eigen directory. Dus voor newcs maken we ook een eigen directory aan onder /etc
mkdir /etc/newcs
en daar plaatsen we de default newcs-default.xml bestand in en hernoemen dit naar newcs.xml
sudo cp newcs-1.62/newcs-default.xml /etc/newcs/newcs.xml
Om newcs te starten kan je nu het volgende doen:
- newcs -c /etc/newcs/newcs.xml
Hoogstwaarschijnlijk krijg je een aantal errors over het scherm heen gerold.
Omdat NewCS geen opensource software is weten we niet precies wat de software allemaal doet is het beter om een nieuwe gebruiker aan te maken met beperkte rechten en die gebruiker de newcs binary laten draaien.
je kan deze gebruiker toevoegen via de normale user admin tools. Vergeet niet de nieuwe gebruiker rechten te geven tot de cardreader (dialout group)
sudo adduser --system --group newcs sudo usermod -a -G dialout newcs
Omdat we nu een newcs gebruiker hebben is het handig om de config bestanden ook eigendom te maken van deze gebruiker
sudo chown newcs:newcs /etc/newcs sudo chown newcs:newcs /etc/newcs/newcs.xml
Ook een mooie init.d startup file is handig. Hier onder staat een voorbeeld van een startup file:
#! /bin/sh
# Author: eldon <eldon @ www.eurocardsharing.com>
# based on a basic debian skeleton startup script
# START EDIT HERE #
NCSNAME=newcs # your newcs bin version
NCSDIR="/usr/local/bin" # your newcs binary directory full path (without trailing /).
NCSCONF="/etc/newcs/newcs.xml" # xml config full path
NCSUSER=newcs # existing user that will run newcs daemon (you should NOT use root !).
NCSNICE=10 # set the newcs daemon priority -20 (most favorable scheduling) to 19 (least favorable).
# END EDIT HERE #
PATH=/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin # some unecessary default paths
DESC="NewCS daemon" # dummy description
NAME=newcs # dummy name
DAEMON="$NCSDIR/$NCSNAME" # Daemon bin location
DAEMON_ARGS="-nd -c $NCSCONF" # Keep -nd in place, ssd will fork to background itself (required to get a proper pid file)
PIDFILE=/var/run/$NAME.pid # pid path
LOG=/var/log/$NAME/$NAME.log # log path
SCRIPTNAME=/etc/init.d/$NAME
# Exit if the package is not installed
if [ ! -x "$DAEMON" ]
then
echo "$DAEMON does not exist"
exit 0
fi
# Define LSB log_* functions.
# Depend on lsb-base (>= 3.0-6) to ensure that this file is present.
. /lib/lsb/init-functions
#
# Function that starts the daemon/service
#
do_start()
{
# Return
# 0 if daemon has been started
# 1 if daemon was already running
# 2 if daemon could not be started
start-stop-daemon --start --quiet --chuid $NCSUSER --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \
|| return 1
start-stop-daemon --start --verbose --nicelevel $NCSNICE --make-pidfile --background --chuid $NCSUSER --pidfile $PIDFILE --exec $DAEMON -- $DAEMON_ARGS 2>&1 >> $LOG \
|| return 2
# Add code here, if necessary, that waits for the process to be ready
# to handle requests from services started subsequently which depend
# on this one. As a last resort, sleep for some time.
return $?
}
#
# Function that stops the daemon/service
#
do_stop()
{
# Return
# 0 if daemon has been stopped
# 1 if daemon was already stopped
# 2 if daemon could not be stopped
# other if a failure occurred
start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NCSNAME
RETVAL="$?"
[ "$RETVAL" = 2 ] && return 2
# Wait for children to finish too if this is a daemon that forks
# and if the daemon is only ever run from this initscript.
# If the above conditions are not satisfied then add some other code
# that waits for the process to drop all resources that could be
# needed by services started subsequently. A last resort is to
# sleep for some time.
start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON
[ "$?" = 2 ] && return 2
# Many daemons don't delete their pidfiles when they exit.
rm -f $PIDFILE
return "$RETVAL"
}
case "$1" in
start)
echo "Starting $DESC"
do_start
case "$?" in
0) log_daemon_msg "Success"
log_end_msg 0;;
1) log_daemon_msg "Already running"
log_end_msg 1;;
2) log_daemon_msg "Failed"
log_end_msg 2;;
esac
;;
stop)
echo "Stopping $DESC"
do_stop
case "$?" in
0|1) echo "Success" ;;
2) echo "Failed !" ;;
esac
;;
restart)
log_daemon_msg "Restarting $DESC"
do_stop
case "$?" in
0|1)
do_start
case "$?" in
0) log_end_msg 0 ;;
1) log_end_msg 1 ;; # Old process is still running
*) log_end_msg 1 ;; # Failed to start
esac
;;
*)
# Failed to stop
log_end_msg 1
;;
esac
;;
*)
echo "Usage: $SCRIPTNAME {start|stop|restart}" >&2
exit 3
;;
esac
En nu moeten we zorgen dat newcs wordt opgestart als de PC reboot
sudo chmod 755 /etc/init.d/newcs sudo update-rc.d newcs defaults 19
newcs wil een (lege) log file wegschrijven op /var/log/newcs/newcs.log maar die directory moet dan wel bestaan en schrijfbaar zijn voor de newcs gebruiker
sudo mkdir /var/log/newcs sudo chown newcs:newcs /var/log/newcs sudo chmod 2775 /var/log/newcs
