#!/usr/bin/perl use strict; use warnings; use IO::Socket; use Sys::Hostname; use vars qw( $RUNNING ); ###################################### sub TermHandle; ###################################### ###################################### sub TermHandle { $SIG{INT} = sub { exit 0; }; $RUNNING = 0; } ###################################### ###################################### my $broadcast_address = "192.168.1.255"; my $tivo_port = 2190; my $BeaconInterval = 2; my $socket; my $dest; my $hostname; my $data; # Signal Handler TermHandle(); $hostname = Sys::Hostname::hostname; $data = "tivoconnect=1\n" . "swversion=beta1\n" . "method=broadcast\n" . "identity=$hostname\n" . "machine=$hostname\n" . "platform=pc/linux\n" . "services=TiVoMediaServer:80/http\n"; $RUNNING = 1; # Let's create an UDP socket and set it up for broadcast $socket = IO::Socket::INET->new(Proto => 'udp') or die $@; $socket->sockopt(SO_BROADCAST() => 1) or die "sockopt: $!"; $dest = sockaddr_in($tivo_port, inet_aton($broadcast_address)); while ($RUNNING) { my $sendret = send ($socket, $data, 0, $dest); print "Broadcast Error: $!\n" unless ($sendret); sleep $BeaconInterval; } close $socket; print "Beacon finished.\n"; #### #! /bin/sh TIVOBEACON_BIN=/usr/local/bin/tivo_beacon test -x "$TIVOBEACON_BIN" || { echo "$TIVOBEACON_BIN not installed"; if [ "$1" = "stop" ]; then exit 0; else exit 5; fi; } . /etc/rc.status # Reset status of this service rc_reset case "$1" in start) echo -n "Starting TiVo Beacon " startproc -u nobody $TIVOBEACON_BIN rc_status -v ;; stop) echo -n "Shutting down TiVo Beacon " killproc -TERM $TIVOBEACON_BIN # Remember status and be verbose rc_status -v ;; try-restart|condrestart) if test "$1" = "condrestart"; then echo "${attn} Use try-restart ${done}" \ "(LSB)${attn} rather than condrestart" \ " ${warn}(RH)${norm}" fi $0 status if test $? = 0; then $0 restart else rc_reset # Not running is not a failure. fi # Remember status and be quiet rc_status ;; restart) $0 stop $0 start # Remember status and be quiet rc_status ;; force-reload) echo -n "Reload service TIVOBEACON " rc_status -v ## Otherwise: $0 restart rc_status ;; reload) ;; status) ;; *) echo "Usage: $0 {start|stop|status|try-restart|restart}" exit 1 ;; esac rc_exit