diff options
Diffstat (limited to 'src/boot-env/preboot/http-server')
-rwxr-xr-x | src/boot-env/preboot/http-server/user_settings.pl | 97 | ||||
-rwxr-xr-x | src/boot-env/preboot/http-server/users.pl | 90 |
2 files changed, 187 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(); + diff --git a/src/boot-env/preboot/http-server/users.pl b/src/boot-env/preboot/http-server/users.pl new file mode 100755 index 00000000..cde3d227 --- /dev/null +++ b/src/boot-env/preboot/http-server/users.pl @@ -0,0 +1,90 @@ +#!/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; +use Switch; + +# add openslx stuff to @INC +use FindBin; +use lib "$FindBin::RealBin/../../../../lib"; +use lib "$FindBin::RealBin"; + +# read default config +use OpenSLX::Basics; +openslxInit(); + +my $cgi = CGI->new; +my $mac = $cgi->param('user') || ''; +my $action = $cgi->param('action'); +my $data = $cgi->param('data'); + +# global requirements +die "must give 'mac' ($mac)!\n" + unless $mac; + +my $webPath = "$openslxConfig{'public-path'}/preboot-users"; +my $userConfFile = "$webPath/$mac.conf"; + +# makes only sense if public path is writeable for www-data +# otherwise you have to create directory manualy +if ( ! -e $webPath ) { + mkpath ($webPath) or die _tr("Can't create user config directory (%s). Reason: %s", $webPath, @_); +} + +my $output = ""; +my $error; + +switch ($action) { + case 'set' { + if ($data) { + open (MYFILE, ">$userConfFile"); + print MYFILE $data; + close (MYFILE); + } else { + $error = "no data"; + } + } + case 'read' { + if ( -e $userConfFile ) { + open (MYFILE, $userConfFile); + while (<MYFILE>) { + chomp; + $output .= "$_\n"; + } + close (MYFILE); + } else { + $error = "foobar"; + } + + } + else { + #default case check if we have a user config + if ( -e $userConfFile ) { $output = "1"; } + else { $output = "0"; }; + } +} + +print $cgi->header('Content-type: text/plain'); +if ($error) { + print $error; +} else { + print $output; +} + +exit 0; |