diff options
Diffstat (limited to 'src/os-plugins/plugins/eduroam/OpenSLX')
-rw-r--r-- | src/os-plugins/plugins/eduroam/OpenSLX/OSPlugin/eduroam.pm | 165 |
1 files changed, 165 insertions, 0 deletions
diff --git a/src/os-plugins/plugins/eduroam/OpenSLX/OSPlugin/eduroam.pm b/src/os-plugins/plugins/eduroam/OpenSLX/OSPlugin/eduroam.pm new file mode 100644 index 00000000..7c38a055 --- /dev/null +++ b/src/os-plugins/plugins/eduroam/OpenSLX/OSPlugin/eduroam.pm @@ -0,0 +1,165 @@ +# Copyright (c) 2007..2011 - 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 suggestions, praise, or complaints to feedback@openslx.org +# +# General information about OpenSLX can be found at http://openslx.org/ +# ----------------------------------------------------------------------------- +# eduroam.pm +# ----------------------------------------------------------------------------- +package OpenSLX::OSPlugin::eduroam; + +use strict; +use warnings; + +use base qw(OpenSLX::OSPlugin::Base); + +use File::Path; + +use OpenSLX::Basics; +use OpenSLX::Utils; +use OpenSLX::DistroUtils; + +sub new +{ + my $class = shift; + + my $self = { + name => 'eduroam', + }; + + return bless $self, $class; +} + +sub getInfo +{ + my $self = shift; + + return { + description => unshiftHereDoc(<<' End-of-Here'), + Splashscreen for the boot process using eduroam. + End-of-Here + precedence => 30, + }; +} + +sub getAttrInfo +{ + my $self = shift; + + return { + 'eduroam::active' => { + applies_to_systems => 1, + applies_to_clients => 1, + description => unshiftHereDoc(<<' End-of-Here'), + should the eduroam-plugin be executed during boot? + End-of-Here + content_regex => qr{^(0|1)$}, + content_descr => '1 means active - 0 means inactive', + default => '1', + }, + + 'eduroam::server_ip' => { + applies_to_systems => 1, + applies_to_clients => 1, + description => unshiftHereDoc(<<' End-of-Here'), + IP address of the eduroam backend server + End-of-Here + content_regex => qr{^.*$}, + content_descr => 'valid IP address', + default => '1', + }, + + 'eduroam::server_secret' => { + applies_to_systems => 1, + applies_to_clients => 1, + description => unshiftHereDoc(<<' End-of-Here'), + shared secret for eduroam authentication + End-of-Here + content_regex => qr{^.*$}, + content_descr => 'string of the shared secret', + default => '1', + }, + + }; +} + +sub suggestAdditionalKernelParams +{ + my $self = shift; + my $makeInitRamFSEngine = shift; + + my @suggestedParams; + + return @suggestedParams; +} + +sub suggestAdditionalKernelModules +{ + my $self = shift; + my $makeInitRamFSEngine = shift; + + my @suggestedModules; + + return @suggestedModules; +} + +sub installationPhase +{ + my $self = shift; + my $info = shift; + + my $engine = $self->{'os-plugin-engine'}; + + # check if libpam-radius-package is already installed + my @installedPackages = $engine->getInstalledPackages(); + my $found = 0; + foreach (@installedPackages) { + if ($_ eq "libpam-radius-auth") { + $found = 1; + } + } + # if not, install it + if ($found == 0) { + vlog(0, _tr("Missing package 'libpam-radius-auth', installing...\n")); + $engine->installPackages('libpam-radius-auth'); + } + + $self->{pluginRepositoryPath} = $info->{'plugin-repo-path'}; + $self->{openslxBasePath} = $info->{'openslx-base-path'}; + + my $eduroamFilesPath = "$self->{openslxBasePath}/lib/plugins/eduroam/files"; + my $pluginRepoPath = "$self->{pluginRepositoryPath}"; + + # copy the rest of the needed files: + # lib/security/pam_script.so - library needed by PAM-script module + # usr/share/libpam-script/* - scripts to create the local user if radius auth succeeded + # etc/pam.d/kdm/radius-auth - PAM-module for radius auth + copyDir("$eduroamFilesPath", "$pluginRepoPath"); + + return; +} + +sub removalPhase +{ + my $self = shift; + my $info = shift; + + return; +} + + +sub copyRequiredFilesIntoInitramfs +{ + my $self = shift; + my $targetPath = shift; + my $attrs = shift; + my $makeInitRamFSEngine = shift; + + return; +} + +1; |