#!/usr/bin/perl -w
# CGI slide-show control for dealing with Rendez-vous server.
# (c)2011 Felix Hauri - http://realtime.f-hauri.ch - realtime@f-hauri.ch
# GNU Lesser General Public License
# All this work is published under terms of LGPL V3 http://www.gnu.org/licenses/lgpl.html
# This tool open existing UNIX Socket for sending control commands from
# standard html POST to streamed server push control flow.

my $delay=30;
use strict;
use CGI qw(:standard form delete_all);
use IO::Socket;

$|=1;
my $q=new CGI;

print header().start_html(-title=>'Server Command',-style=>{-src=>'/slideshow/serveurs.css'});
if (defined param("rdzvs") &&  param("rdzvs") =~ /^([a-z0-9]+)$/) {
	my $rdzvs=$1;
	my $sockname="/tmp/cgi-rendezvous-serveur-".$1;
	if (defined param('Show') && param('Show') =~ /^(\d+|Next|Prev)$/) {
		my $cmde=$1;
		my $sk=IO::Socket::UNIX->new($sockname) or die;
		print $sk $cmde;
		close $sk;
	};
	delete_all();
	map {
	    my ($image,$cmde)=split(":");
	    print form({-method=>"POST",-action=>script_name},
		image_button('img','/icons/'.$image.'.png').
		hidden(-name=>'Show',-value=>$cmde).
		hidden('rdzvs',$rdzvs))." ";
	} qw |right:Next left:Prev|;
	map {
	    my $number = my $string = $_;
	    $string="First" unless $string;
	    $string="Last" if $string eq '12';
	    print form({-method=>"POST",-action=>script_name},
		submit($string),hidden(-name=>'Show',-value=>$number).hidden('rdzvs',$rdzvs))." ";
	} (0..12);
} else {
        print form({-method=>"POST"},textfield('rdzvs').submit());
};
print end_html;
