summaryrefslogtreecommitdiffstats
path: root/src/boot-env/preboot/http-server/user_settings.pl
diff options
context:
space:
mode:
Diffstat (limited to 'src/boot-env/preboot/http-server/user_settings.pl')
-rwxr-xr-xsrc/boot-env/preboot/http-server/user_settings.pl97
1 files changed, 97 insertions, 0 deletions
diff --git a/src/boot-env/preboot/http-server/user_settings.pl b/src/boot-env/preboot/http-server/user_settings.pl
new file mode 100755
index 00000000..6c135267
--- /dev/null
+++ b/src/boot-env/preboot/http-server/user_settings.pl
@@ -0,0 +1,97 @@
+#!/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();
+