blob: 6c13526781f97797ca41f93a8d9907b0fa2f4d33 (
plain) (
tree)
|
|
#!/usr/bin/perl -w
# Copyright (c) 2009 - OpenSLX GmbH
#
# This program is free software distributed under the GPL version 2.
# See http://openslx.org/COPYING
#
# If you have any feedback please consult http://openslx.org/feedback and
# send your feedback to feedback@openslx.org
#
# General information about OpenSLX can be found at http://openslx.org
#
# cgi-bin script that accepts user settings and stores them in a special
# folder on the openslx server
use strict;
use warnings;
use CGI;
use CGI::Carp qw(fatalsToBrowser);
use File::Path;
# add openslx stuff to @INC
use FindBin;
use lib "$FindBin::RealBin/../../../../lib";
use lib "$FindBin::RealBin";
# read default config
use OpenSLX::Basics;
openslxInit();
# die "*** Taint mode must be active! ***" unless ${^TAINT};
my $cgi = CGI->new;
my $system = $cgi->param('system') || '';
my $client = $cgi->param('client') || '';
my $prebootID = $cgi->param('preboot_id') || '';
my $type = $cgi->param('type') || 'directkiosk';
my $errormsg = 'None';
die "must give 'system' ($system), 'client' ($client) and 'preboot_id' ($prebootID)!\n"
unless $system && $client && $prebootID;
my $webPath = "$openslxConfig{'public-path'}/preboot";
my $src = "$webPath/client-config/$system/$prebootID.tgz";
my $destPath = "$webPath/$prebootID/client-config/$system";
# if fastboot (default) is selected and a ConfTGZ exist just proceed ...
if ($type eq "fastboot" && !-e "$destPath/$client.tgz") { $type = "slxconfig"; }
# directkiosk/cfgkiosk/slxconfig
if ($type ne "fastboot") {
mkpath($destPath."/".$client);
system(qq{tar -xzf $src -C $destPath/$client/});
# from here on the modifications of client configuration should take place
# within $destPath/$client directory
if ($type eq "slxconfig") {
# configuration of a WAN boot SLX client
print STDERR "slxconfig sub";
}
elsif ($type eq "cfgkiosk") {
# configuration of a WAN boot SLX kiosk
}
elsif (!$type || $type eq "directkiosk") {
# deactivate the desktop plugin for the kiosk mode
open (CFGFILE, ">>$destPath/$client/initramfs/plugin-conf/desktop.conf");
print CFGFILE 'desktop_active="0"';
close (CFGFILE);
# activate the kiosk plugin
if (!-e "$destPath/$client/initramfs/plugin-conf/kiosk.conf") {
$errormsg = "The kiosk plugin seems not to be installed";
print STDERR $errormsg;
} else {
open (CFGFILE, ">>$destPath/$client/initramfs/plugin-conf/kiosk.conf");
print CFGFILE 'kiosk_active="1"';
close (CFGFILE);
}
}
else {
# unknown type
$errormsg = "You have passed an unknown boot type $type";
print STDERR $errormsg;
}
system(qq{cd $destPath/$client; tar -czf $destPath/$client.tgz *});
rmtree($destPath."/".$client);
}
# resulting page is not shown to the user (error reporting that way, or
# completely empty reply?)
print
$cgi->header(-charset => 'iso8859-1'),
$cgi->start_html('...');
if ($errormsg) { print $cgi->p("Error: $errormsg"); }
print
$cgi->end_html();
|