summaryrefslogtreecommitdiffstats
path: root/src/boot-env/preboot/http-server/users.pl
diff options
context:
space:
mode:
Diffstat (limited to 'src/boot-env/preboot/http-server/users.pl')
-rwxr-xr-xsrc/boot-env/preboot/http-server/users.pl90
1 files changed, 90 insertions, 0 deletions
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;