From 416ab8a37f1b07dc9f6c0fb3ff1a8ff2036510b5 Mon Sep 17 00:00:00 2001 From: Sebastian Schmelzer Date: Thu, 2 Sep 2010 17:50:49 +0200 Subject: change dir structure --- os-plugins/plugins/desktop/OpenSLX/Distro/Base.pm | 432 ------------- .../plugins/desktop/OpenSLX/Distro/Debian.pm | 63 -- .../plugins/desktop/OpenSLX/Distro/Fedora.pm | 30 - .../plugins/desktop/OpenSLX/Distro/Gentoo.pm | 30 - .../plugins/desktop/OpenSLX/Distro/Scilin.pm | 132 ---- os-plugins/plugins/desktop/OpenSLX/Distro/Suse.pm | 162 ----- .../plugins/desktop/OpenSLX/Distro/Suse_10_2.pm | 54 -- .../plugins/desktop/OpenSLX/Distro/Ubuntu.pm | 169 ----- .../plugins/desktop/OpenSLX/Distro/Ubuntu_8.pm | 161 ----- .../plugins/desktop/OpenSLX/Distro/Ubuntu_9_04.pm | 161 ----- .../plugins/desktop/OpenSLX/OSPlugin/desktop.pm | 712 --------------------- 11 files changed, 2106 deletions(-) delete mode 100644 os-plugins/plugins/desktop/OpenSLX/Distro/Base.pm delete mode 100644 os-plugins/plugins/desktop/OpenSLX/Distro/Debian.pm delete mode 100644 os-plugins/plugins/desktop/OpenSLX/Distro/Fedora.pm delete mode 100644 os-plugins/plugins/desktop/OpenSLX/Distro/Gentoo.pm delete mode 100644 os-plugins/plugins/desktop/OpenSLX/Distro/Scilin.pm delete mode 100644 os-plugins/plugins/desktop/OpenSLX/Distro/Suse.pm delete mode 100644 os-plugins/plugins/desktop/OpenSLX/Distro/Suse_10_2.pm delete mode 100644 os-plugins/plugins/desktop/OpenSLX/Distro/Ubuntu.pm delete mode 100644 os-plugins/plugins/desktop/OpenSLX/Distro/Ubuntu_8.pm delete mode 100644 os-plugins/plugins/desktop/OpenSLX/Distro/Ubuntu_9_04.pm delete mode 100644 os-plugins/plugins/desktop/OpenSLX/OSPlugin/desktop.pm (limited to 'os-plugins/plugins/desktop/OpenSLX') diff --git a/os-plugins/plugins/desktop/OpenSLX/Distro/Base.pm b/os-plugins/plugins/desktop/OpenSLX/Distro/Base.pm deleted file mode 100644 index 316448bb..00000000 --- a/os-plugins/plugins/desktop/OpenSLX/Distro/Base.pm +++ /dev/null @@ -1,432 +0,0 @@ -# Copyright (c) 2008 - 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/ -# ----------------------------------------------------------------------------- -# desktop/OpenSLX/Distro/Base.pm -# - provides base implementation of the Distro API for the desktop plugin. -# ----------------------------------------------------------------------------- -package desktop::OpenSLX::Distro::Base; - -use strict; -use warnings; - -our $VERSION = 1.01; # API-version . implementation-version - -use File::Basename; -use Scalar::Util qw( weaken ); - -use OpenSLX::Basics; -use OpenSLX::Utils; - -################################################################################ -### interface methods -################################################################################ -sub new -{ - my $class = shift; - my $self = {}; - return bless $self, $class; -} - -sub initialize -{ - my $self = shift; - $self->{engine} = shift; - weaken($self->{'engine'}); - # avoid circular reference between distro and its engine - - return 1; -} - -sub getDefaultDesktopManager -{ - my $self = shift; - - # the default implementation prefers KDM over GDM over XDM - return $self->isKDMInstalled() ? 'kdm' - : $self->isGDMInstalled() ? 'gdm' - : $self->isXDMInstalled() ? 'xdm' : undef; -} - -sub getDefaultDesktopKind -{ - my $self = shift; - - # the default implementation prefers GNOME over KDE over XFCE - return $self->isGNOMEInstalled() ? 'gnome' - : $self->isKDEInstalled() ? 'kde' - : $self->isXFCEInstalled() ? 'xfce' : undef; -} - -sub isGNOMEInstalled -{ - my $self = shift; - - return isInPath('gnome-session'); -} - -sub installGNOME -{ - my $self = shift; - - $self->{engine}->installPackages( - $self->{engine}->getInstallablePackagesForSelection('gnome') - ); - - return 1; -} - -sub isGDMInstalled -{ - my $self = shift; - - return isInPath('gdm'); -} - -sub installGDM -{ - my $self = shift; - - $self->{engine}->installPackages('gdm'); - - return 1; -} - -sub GDMPathInfo -{ - my $self = shift; - - my $pathInfo = { - config => '/etc/gdm/gdm.conf', - paths => [ - '/var/lib/gdm', - '/var/log/gdm', - ], - }; - - return $pathInfo; -} - -sub setupGDMScript -{ - my $self = shift; - my $repoPath = shift; - - my $pathInfo = $self->GDMPathInfo(); - my $configFile = $pathInfo->{config}; - - my $paths - = join( - ' ', - map { '/mnt' . $_ } ( dirname($configFile), @{$pathInfo->{paths}} ) - ); - my $script = unshiftHereDoc(<<" End-of-Here"); - # written by OpenSLX-plugin 'desktop' - - for i in $paths; do - testmkd \$i - done - - cp /mnt$repoPath/gdm/\$desktop_mode/gdm.conf /mnt$configFile - - # activate theme only if the corresponding xml file is found - # (otherwise fall back to default theme of vendor-OS) - if [ -n "\$desktop_theme" ]; then - thdir=/opt/openslx/plugin-repo/desktop/themes/gdm - theme=\$desktop_theme - if [ -e /mnt\$thdir/\$theme/*.xml ]; then - sed -i "s,\\[greeter\\],[greeter]\\nGraphicalThemedColor=," \\ - /mnt$configFile - sed -i "s,\\[greeter\\],[greeter]\\nGraphicalThemeDir=\$thdir," \\ - /mnt$configFile - sed -i "s,\\[greeter\\],[greeter]\\nGraphicalTheme=\$theme," \\ - /mnt$configFile - fi - fi - case "\${desktop_allowshutdown}" in - none) - ;; - root) - sed "s|AllowShutdown.*|AllowShutdown=true|;\\ - s|SecureShutdown.*|SecureShutdown=true|" \\ - -i /mnt$configFile - ;; - users) - sed "s|AllowShutdown.*|AllowShutdown=true|;\\ - s|SecureShutdown.*|SecureShutdown=false|" \\ - -i /mnt$configFile - ;; - esac - [ "\${desktop_rootlogin}" -ne 0 ] && \\ - sed "s|AllowRoot.*|AllowRoot=true|" -i /mnt$configFile - End-of-Here - - return $script; -} - -sub GDMConfigHashForWorkstation -{ - my $self = shift; - - return { - 'chooser' => { - }, - 'daemon' => { - AutomaticLoginEnable => 'false', - Group => 'gdm', - User => 'gdm', - DefaultSession => 'default.desktop', - }, - 'debug' => { - Enable => 'false', - }, - 'greeter' => { - AllowShutdown => 'false', - Browser => 'false', - MinimalUID => '500', - SecureShutdown => 'false', - ShowDomain => 'false', - DefaultWelcome => 'false', - Welcome => 'OpenSLX Workstation (%n)', - }, - 'gui' => { - }, - 'security' => { - AllowRoot => 'false', - AllowRemoteRoot => 'false', - DisallowTCP => 'true', - SupportAutomount => 'true', - }, - 'server' => { - }, - 'xdmcp' => { - Enable => 'false', - }, - }; -} - -sub GDMConfigHashForKiosk -{ - my $self = shift; - - my $configHash = $self->GDMConfigHashForWorkstation(); - $configHash->{daemon}->{AutomaticLoginEnable} = 'true'; - $configHash->{daemon}->{AutomaticLogin} = 'nobody'; - - return $configHash; -} - -sub GDMConfigHashForChooser -{ - my $self = shift; - - my $configHash = $self->GDMConfigHashForWorkstation(); - $configHash->{xdmcp}->{Enable} = 'true'; - - return $configHash; -} - -sub isKDEInstalled -{ - my $self = shift; - - return isInPath('startkde'); -} - -sub installKDE -{ - my $self = shift; - - $self->{engine}->installPackages( - $self->{engine}->getInstallablePackagesForSelection('kde') - ); - - return 1; -} - -sub isKDMInstalled -{ - my $self = shift; - - return isInPath('kdm'); -} - -sub installKDM -{ - my $self = shift; - - $self->{engine}->installPackages('kdm'); - - return 1; -} - -sub KDMPathInfo -{ - my $self = shift; - - my $pathInfo = { - config => '/etc/opt/kdm/kdmrc', - paths => [ - '/var/lib/kdm', - ], - }; - - return $pathInfo; -} - -sub setupKDMScript -{ - my $self = shift; - my $repoPath = shift; - - my $pathInfo = $self->KDMPathInfo(); - my $configFile = $pathInfo->{config}; - - my $paths - = join( - ' ', - map { '/mnt' . $_ } ( dirname($configFile), @{$pathInfo->{paths}} ) - ); - my $script = unshiftHereDoc(<<" End-of-Here"); - #!/bin/sh - # written by OpenSLX-plugin 'desktop' - - for i in $paths; do - testmkd \$i - done - - cp /mnt$repoPath/kdm/\$desktop_mode/kdmrc /mnt$configFile - - # activate theme only if the corresponding xml file is found - # (otherwise fall back to default theme of vendor-OS) - if [ -n "\$desktop_theme" ]; then - theme=\$desktop_theme - thdir=/opt/openslx/plugin-repo/desktop/themes/kdm/\$theme - if [ -e /mnt\$thdir/*.xml ]; then - sed -i "s,\\[X-\\*-Greeter\\],[X-*-Greeter]\\nUseBackground=false," \\ - /mnt$configFile - sed -i "s,\\[X-\\*-Greeter\\],[X-*-Greeter]\\nTheme=\$thdir," \\ - /mnt$configFile - sed -i "s,\\[X-\\*-Greeter\\],[X-*-Greeter]\\nUseTheme=true," \\ - /mnt$configFile - fi - fi - case "\${desktop_allowshutdown}" in - none) - sed "s|AllowShutdown.*|AllowShutdown=None|" \\ - -i /mnt$configFile - ;; - root) - sed "s|AllowShutdown.*|AllowShutdown=Root|" \\ - -i /mnt$configFile - ;; - users) - sed "s|AllowShutdown.*|AllowShutdown=All|" \\ - -i /mnt$configFile - ;; - esac - [ "\${desktop_rootlogin}" -ne 0 ] && \\ - sed "s|AllowRootLogin.*|AllowRootLogin=true|" -i /mnt$configFile - End-of-Here - - return $script; -} - -sub KDMConfigHashForWorkstation -{ - my $self = shift; - - return { -# 'General' => { -# StaticServers => ':0', -# ReserveServers => ':1,:2,:3', -# ServerVTs => '-7', -# ConsoleTTYs => 'tty1,tty2,tty3,tty4,tty5,tty6', -# }, - 'X-:0-Core' => { - AutoLoginEnable => 'false', - AllowRootLogin => 'false', - AllowShutdown => 'All', - }, - 'X-*-Greeter' => { - GreetString => 'OpenSLX Workstation (%h)', - SelectedUsers => '', - UserList => 'false', - }, - 'X-:*-Greeter' => { - AllowClose => 'false', - UseAdminSession => 'true', - }, - 'X-:0-Greeter' => { - LogSource => '/dev/xconsole', - UseAdminSession => 'false', - PreselectUser => 'None', - }, - 'xdmcp' => { - Enable => 'false', - }, - }; -} - -sub KDMConfigHashForKiosk -{ - my $self = shift; - - my $configHash = $self->KDMConfigHashForWorkstation(); - $configHash->{'X-:0-Core'}->{AutoLoginEnable} = 'true'; - $configHash->{'X-:0-Core'}->{AutoLoginUser} = 'nobody'; - - return $configHash; -} - -sub KDMConfigHashForChooser -{ - my $self = shift; - - my $configHash = $self->KDMConfigHashForWorkstation(); - $configHash->{xdmcp}->{Enable} = 'true'; - - return $configHash; -} - -sub isXFCEInstalled -{ - my $self = shift; - - return isInPath('startxfce4'); -} - -sub installXFCE -{ - my $self = shift; - - $self->{engine}->installPackages( - $self->{engine}->getInstallablePackagesForSelection('xfce') - ); - - return 1; -} - -sub isXDMInstalled -{ - my $self = shift; - - return isInPath('xdm'); -} - -sub installXDM -{ - my $self = shift; - - $self->{engine}->installPackages('xdm'); - - return 1; -} - -1; diff --git a/os-plugins/plugins/desktop/OpenSLX/Distro/Debian.pm b/os-plugins/plugins/desktop/OpenSLX/Distro/Debian.pm deleted file mode 100644 index c212b3ef..00000000 --- a/os-plugins/plugins/desktop/OpenSLX/Distro/Debian.pm +++ /dev/null @@ -1,63 +0,0 @@ -# Copyright (c) 2006..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 suggestions, praise, or complaints to feedback@openslx.org -# -# General information about OpenSLX can be found at http://openslx.org/ -# ----------------------------------------------------------------------------- -# desktop/OpenSLX/Distro/Debian.pm -# - provides Debian-specific overrides of the Distro API for the desktop -# plugin. -# ----------------------------------------------------------------------------- -package desktop::OpenSLX::Distro::Debian; - -use strict; -use warnings; - -use base qw(desktop::OpenSLX::Distro::Base); - -use OpenSLX::Basics; -use OpenSLX::Utils; - -################################################################################ -### interface methods -################################################################################ - -sub setupGDMScript -{ - my $self = shift; - my $repoPath = shift; - - my $script = $self->SUPER::setupGDMScript($repoPath); - - $script .= unshiftHereDoc(<<' End-of-Here'); - rllinker gdm 1 1 - echo '/usr/bin/gdm' > /mnt/etc/X11/default-display-manager - # gdm does not like AUFS/UnionFS on its var directory - rm -rf /mnt/var/lib/gdm - mkdir -m 1770 /mnt/var/lib/gdm - chown root:gdm /mnt/var/lib/gdm - End-of-Here - - return $script; -} - -sub setupKDMScript -{ - my $self = shift; - my $repoPath = shift; - - my $script = $self->SUPER::setupKDMScript($repoPath); - - $script .= unshiftHereDoc(<<' End-of-Here'); - rllinker kdm 1 1 - echo '/usr/bin/kdm' > /mnt/etc/X11/default-display-manager - End-of-Here - - return $script; -} - -1; diff --git a/os-plugins/plugins/desktop/OpenSLX/Distro/Fedora.pm b/os-plugins/plugins/desktop/OpenSLX/Distro/Fedora.pm deleted file mode 100644 index f9428aab..00000000 --- a/os-plugins/plugins/desktop/OpenSLX/Distro/Fedora.pm +++ /dev/null @@ -1,30 +0,0 @@ -# Copyright (c) 2006, 2007 - 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/ -# ----------------------------------------------------------------------------- -# desktop/OpenSLX/Distro/Fedora.pm -# - provides Fedora-specific overrides of the Distro API for the desktop -# plugin. -# ----------------------------------------------------------------------------- -package desktop::OpenSLX::Distro::Fedora; - -use strict; -use warnings; - -use base qw(desktop::OpenSLX::Distro::Base); - -use OpenSLX::Basics; - -################################################################################ -### interface methods -################################################################################ - -# TODO: implement! - -1; \ No newline at end of file diff --git a/os-plugins/plugins/desktop/OpenSLX/Distro/Gentoo.pm b/os-plugins/plugins/desktop/OpenSLX/Distro/Gentoo.pm deleted file mode 100644 index 129f4d08..00000000 --- a/os-plugins/plugins/desktop/OpenSLX/Distro/Gentoo.pm +++ /dev/null @@ -1,30 +0,0 @@ -# Copyright (c) 2006, 2007 - 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/ -# ----------------------------------------------------------------------------- -# desktop/OpenSLX/Distro/Gentoo.pm -# - provides Gentoo-specific overrides of the Distro API for the desktop -# plugin. -# ----------------------------------------------------------------------------- -package desktop::OpenSLX::Distro::Gentoo; - -use strict; -use warnings; - -use base qw(desktop::OpenSLX::Distro::Base); - -use OpenSLX::Basics; - -################################################################################ -### interface methods -################################################################################ - -# TODO: implement! - -1; diff --git a/os-plugins/plugins/desktop/OpenSLX/Distro/Scilin.pm b/os-plugins/plugins/desktop/OpenSLX/Distro/Scilin.pm deleted file mode 100644 index 1dc0482c..00000000 --- a/os-plugins/plugins/desktop/OpenSLX/Distro/Scilin.pm +++ /dev/null @@ -1,132 +0,0 @@ -# Copyright (c) 2006..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 suggestions, praise, or complaints to feedback@openslx.org -# -# General information about OpenSLX can be found at http://openslx.org/ -# ----------------------------------------------------------------------------- -# desktop/OpenSLX/Distro/Scilin.pm -# - provides Scilin-specific overrides of the Distro API for the desktop -# plugin. -# ----------------------------------------------------------------------------- -package desktop::OpenSLX::Distro::Scilin; - -use strict; -use warnings; - -use base qw(desktop::OpenSLX::Distro::Base); - -use File::Path; - -use OpenSLX::Basics; -use OpenSLX::Utils; - -################################################################################ -### interface methods -################################################################################ - -sub GDMPathInfo -{ - my $self = shift; - - my $pathInfo = $self->SUPER::GDMPathInfo(); - - # create gdm.conf-custom instead of gdm.conf - $pathInfo->{config} = '/etc/gdm/custom.conf'; - - return $pathInfo; -} - -sub setupGDMScript -{ - my $self = shift; - my $repoPath = shift; - - my $script = $self->SUPER::setupGDMScript($repoPath); - - my $configFile = $self->GDMPathInfo->{config}; - - # include common stuff (independent of display manager used) - $script = _setupCommonDmScript($script); - - $script .= unshiftHereDoc(<<' End-of-Here'); - echo "DISPLAYMANAGER=GNOME" \ - >/mnt/etc/sysconfig/desktop - # gdm does not like AUFS/UnionFS on its var directory - mkdir -m 1770 /mnt/var/lib/gdm - chown root:gdm /mnt/var/lib/gdm - End-of-Here - - return $script; -} - -sub GDMConfigHashForWorkstation -{ - my $self = shift; - - my $configHash = $self->SUPER::GDMConfigHashForWorkstation(); - $configHash->{'daemon'}->{SessionDesktopDir} = - '/etc/X11/session/:/usr/share/xsessions/:/usr/share/gdm/BuiltInSessions'; - $configHash->{'daemon'}->{Greeter} = - '/usr/libexec/gdmgreeter'; - - return $configHash; -} - -sub setupKDMScript -{ - my $self = shift; - my $repoPath = shift; - - # SUSE reads /var/adm/kdm/kdmrc.sysconfig, so we link that to - # our config file - my $pathInfo = $self->KDMPathInfo(); - my $configFile = $pathInfo->{config}; - mkpath("/etc/opt/kdm"); - mkpath("/var/adm/kdm"); - # maybe backup kdmrc.sysconfig sometimes - unlink("/var/adm/kdm/kdmrc.sysconfig"); - # the config file gets overwritten if this script is present - unlink("/opt/kde3/share/apps/kdm/read_sysconfig.sh"); - symlink("/etc/opt/kdm/kdmrc", "/var/adm/kdm/kdmrc.sysconfig"); - - my $script = $self->SUPER::setupKDMScript($repoPath); - - # include common stuff (independent of display manager used) - $script = _setupCommonDmScript($script); - - $script .= unshiftHereDoc(<<' End-of-Here'); - echo "DISPLAYMANAGER=KDE" \ - >/mnt/etc/sysconfig/desktop - End-of-Here - - return $script; -} - -sub _setupCommonDmScript -{ - my $script = shift; - - $script .= unshiftHereDoc(<<' End-of-Here'); - # cleanup after users Xorg session - sed 's,^#!.*,,' /mnt/etc/X11/xdm/Xreset \ - > /mnt/etc/X11/xdm/Xreset.system - echo -e '#!/bin/sh\n#\n# modified by desktop plugin in Stage3\n#\n - # remove safely any remaining files of the leaving user in /tmp - ( su -c "rm -rf /tmp/*" - $USER - echo "$USER files removed by $0" >/tmp/files.removed 2>/dev/null ) & - . /etc/X11/xdm/Xreset.system' >/mnt/etc/X11/xdm/Xreset - chmod a+x /mnt/etc/X11/xdm/Xreset* - - # enable the inittab entry again (incomplete) - # sed -e "s,# line deleted.*,x:5:respawn:/etc/X11/prefdm -nodaemon," \ - # -i /mnt/etc/inittab - End-of-Here - - return $script; -} - -1; diff --git a/os-plugins/plugins/desktop/OpenSLX/Distro/Suse.pm b/os-plugins/plugins/desktop/OpenSLX/Distro/Suse.pm deleted file mode 100644 index 433ed7e1..00000000 --- a/os-plugins/plugins/desktop/OpenSLX/Distro/Suse.pm +++ /dev/null @@ -1,162 +0,0 @@ -# Copyright (c) 2006..2010 - 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/ -# ----------------------------------------------------------------------------- -# desktop/OpenSLX/Distro/Suse.pm -# - provides SUSE-specific overrides of the Distro API for the desktop -# plugin. -# ----------------------------------------------------------------------------- -package desktop::OpenSLX::Distro::Suse; - -use strict; -use warnings; - -use base qw(desktop::OpenSLX::Distro::Base); - -use File::Path; - -use OpenSLX::Basics; -use OpenSLX::Utils; - -################################################################################ -### interface methods -################################################################################ - -sub GDMPathInfo -{ - my $self = shift; - - my $pathInfo = $self->SUPER::GDMPathInfo(); - - # create gdm.conf-custom instead of gdm.conf - $pathInfo->{config} = '/etc/gdm/custom.conf'; - - return $pathInfo; -} - -sub setupGDMScript -{ - my $self = shift; - my $repoPath = shift; - - my $script = $self->SUPER::setupGDMScript($repoPath); - - my $configFile = $self->GDMPathInfo->{config}; - - # include common stuff (independent of display manager used) - $script = _setupCommonDmScript($script); - - $script .= unshiftHereDoc(<<' End-of-Here'); - echo -e '# changed by $0 during stage3 setup\nDISPLAYMANAGER="gdm"' \ - >/mnt/etc/sysconfig/displaymanager - sed -i "s/DEFAULT_WM=.*/DEFAULT_WM=\"$desktop_kind\"/" \ - /mnt/etc/sysconfig/windowmanager - #sed "s|XSESSION|/etc/xdm/Xsession|" -i /mnt$configFile - # gdm does not like AUFS/UnionFS on its var directory - rm -rf /mnt/var/lib/gdm - mkdir -m 1770 /mnt/var/lib/gdm - chown root:gdm /mnt/var/lib/gdm - # no use for this configuration info file - rm /mnt/etc/gdm/gdm_sysconfig.* 2>/dev/null - End-of-Here - - return $script; -} - -sub GDMConfigHashForWorkstation -{ - my $self = shift; - - my $configHash = $self->SUPER::GDMConfigHashForWorkstation(); - $configHash->{'daemon'}->{SessionDesktopDir} = - '/etc/X11/session/:/usr/share/xsessions/'; - $configHash->{'daemon'}->{DefaultSession} = 'default.desktop'; - $configHash->{'daemon'}->{Greeter} = - '/usr/lib/gdm/gdmgreeter'; - - return $configHash; -} - -sub setupKDMScript -{ - my $self = shift; - my $repoPath = shift; - - # check for kdm version - my $kdmVer; - my $kdmPath; - if (-e "/usr/bin/kdm") { - $kdmVer = "4"; - $kdmPath = "/usr/share/kde4"; - } - else { - $kdmVer = ""; - $kdmPath = "/opt/kde3/share"; - # change default theme to openslx-legacy if kdm3 - print " * Please change to openslx-legacy theme when using kdm3\n"; - } - - # SUSE reads /var/adm/kdm/kdmrc.sysconfig, so we link that to - # our config file - my $pathInfo = $self->KDMPathInfo(); - my $configFile = $pathInfo->{config}; - mkpath("/etc/opt/kdm"); - mkpath("/var/adm/kdm"); - # maybe backup kdmrc.sysconfig sometimes - unlink("/var/adm/kdm/kdmrc.sysconfig"); - # the config file gets overwritten if this script is present - unlink("$kdmPath/apps/kdm/read_sysconfig.sh"); - symlink("/etc/opt/kdm/kdmrc", "/var/adm/kdm/kdmrc.sysconfig"); - - my $script = $self->SUPER::setupKDMScript($repoPath); - - # include common stuff (independent of display manager used) - $script = _setupCommonDmScript($script); - - $script .= "kdmver=$kdmVer\n"; - $script .= unshiftHereDoc(<<' End-of-Here'); - sed -i "s/DISPLAYMANAGER=.*/DISPLAYMANAGER=\"kdm$kdmver\"/" \ - /mnt/etc/sysconfig/displaymanager - [ $(grep -q DISPLAYMANAGER /mnt/etc/sysconfig/displaymanager) ] && \ - echo "DISPLAYMANAGER=\"kdm$kdmver\"" >>/mnt/etc/sysconfig/displaymanager - sed -i "s/DEFAULT_WM=.*/DEFAULT_WM=\"$desktop_kind\"/" \ - /mnt/etc/sysconfig/windowmanager - # needed for compatibility X11/session(s) - ln -s /etc/X11/session /mnt/etc/X11/sessions - End-of-Here - - return $script; -} - -sub _setupCommonDmScript -{ - my $script = shift; - - $script .= unshiftHereDoc(<<' End-of-Here'); - rllinker xdm 1 10 - # cleanup after users Xorg session - sed 's,^#!.*,,' /mnt/etc/X11/xdm/Xreset \ - > /mnt/etc/X11/xdm/Xreset.system - echo -e '#!/bin/sh\n#\n# modified by desktop plugin in Stage3\n#\n - # avoid annoying messages on removed sound devices - ( su -c "rm ~/.kde4/share/config/phonondevicesrc" - $USER ) & - - # remove safely any remaining files of the leaving user in /tmp - ( su -c "rm -rf /tmp/*" - $USER - echo "$USER files removed by $0" >/tmp/files.removed 2>/dev/null - chmod 0400 /tmp/files.removed ) & - . /etc/X11/xdm/Xreset.system' >/mnt/etc/X11/xdm/Xreset - chmod a+x /mnt/etc/X11/xdm/Xreset* - - End-of-Here - - return $script; -} - -1; diff --git a/os-plugins/plugins/desktop/OpenSLX/Distro/Suse_10_2.pm b/os-plugins/plugins/desktop/OpenSLX/Distro/Suse_10_2.pm deleted file mode 100644 index ac14b2a5..00000000 --- a/os-plugins/plugins/desktop/OpenSLX/Distro/Suse_10_2.pm +++ /dev/null @@ -1,54 +0,0 @@ -# Copyright (c) 2006..2010 - 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/ -# ----------------------------------------------------------------------------- -# desktop/OpenSLX/Distro/Suse_10_2.pm -# - provides SUSE-10.2-specific overrides of the Distro API for the desktop -# plugin. -# ----------------------------------------------------------------------------- -package desktop::OpenSLX::Distro::Suse_10_2; - -use strict; -use warnings; - -use base qw(desktop::OpenSLX::Distro::Suse); - -use OpenSLX::Basics; -use OpenSLX::Utils; - -################################################################################ -### interface methods -################################################################################ - -sub GDMPathInfo -{ - my $self = shift; - - my $pathInfo = $self->SUPER::GDMPathInfo(); - - # link gdm.conf-custom instead of gdm.conf - $pathInfo->{config} = '/etc/opt/gnome/gdm/custom.conf'; - - return $pathInfo; -} - -sub GDMConfigHashForWorkstation -{ - my $self = shift; - - my $configHash = $self->SUPER::GDMConfigHashForWorkstation(); - $configHash->{'daemon'}->{SessionDesktopDir} = - '/etc/X11/session/:/usr/share/xsessions/'; - $configHash->{'daemon'}->{Greeter} = - '/opt/gnome/lib/gdm/gdmgreeter'; - - return $configHash; -} - -1; diff --git a/os-plugins/plugins/desktop/OpenSLX/Distro/Ubuntu.pm b/os-plugins/plugins/desktop/OpenSLX/Distro/Ubuntu.pm deleted file mode 100644 index d222c102..00000000 --- a/os-plugins/plugins/desktop/OpenSLX/Distro/Ubuntu.pm +++ /dev/null @@ -1,169 +0,0 @@ -# Copyright (c) 2006..2010 - 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/ -# ----------------------------------------------------------------------------- -# desktop/OpenSLX/Distro/Ubuntu.pm -# - provides Ubuntu-specific overrides of the distro API for the desktop -# plugin. -# ----------------------------------------------------------------------------- -package desktop::OpenSLX::Distro::Ubuntu; - -use strict; -use warnings; - -use base qw(desktop::OpenSLX::Distro::Base); - -use OpenSLX::Basics; -use OpenSLX::Utils; - -################################################################################ -### interface methods -################################################################################ - -sub GDMPathInfo -{ - my $self = shift; - - my $pathInfo = $self->SUPER::GDMPathInfo(); - - # link gdm.conf-custom instead of gdm.conf - $pathInfo->{config} = '/etc/gdm/custom.conf'; - - return $pathInfo; -} - -sub setupGDMScript -{ - my $self = shift; - my $repoPath = shift; - - my $script = $self->SUPER::setupGDMScript($repoPath); - - my $configFile = $self->GDMPathInfo->{config}; - - $script .= unshiftHereDoc(<<' End-of-Here'); - # cleanup after users Xorg session - sed 's,^#!.*,,' /mnt/etc/gdm/PostSession/Default \ - >/mnt/etc/gdm/PostSession/Default.system - echo -e '#! /bin/sh\n#\n# modified by desktop plugin in Stage3\n#\n - # remove safely any remaining files of the leaving user in /tmp - ( su -c "rm -rf /tmp/*" - echo "$USER files removed by $0" >/tmp/files.removed 2>/dev/null ) & - . /etc/gdm/PostSession/Default.system' >/mnt/etc/gdm/PostSession/Default - chmod a+x /mnt/etc/gdm/PostSession/Default* - # gdm should be started via upstart mechanism - mv /mnt/etc/init.inactive/gdm.conf /mnt/etc/init - echo '/usr/sbin/gdm' >/mnt/etc/X11/default-display-manager - # possible to do this directly? - chroot /mnt update-alternatives --set x-window-manager /usr/bin/metacity - chroot /mnt update-alternatives --set x-session-manager \ - /usr/bin/gnome-session - # gdm does not like AUFS/UnionFS on its var directory - rm -rf /mnt/var/lib/gdm - mkdir -m 1770 /mnt/var/lib/gdm - chown root:gdm /mnt/var/lib/gdm - #sed '/^\\[daemon\\]/ a\\BaseXsession=/etc/gdm/Xsession' \ - # -i /mnt$configFile - End-of-Here - - return $script; -} - -sub KDMPathInfo -{ - my $self = shift; - - my $pathInfo = $self->SUPER::KDMPathInfo(); - - $pathInfo = { - config => "/etc/kde4/kdm/kdmrc", - paths => [ - '/var/lib/kdm', - '/var/run/kdm', - ], - }; - - return $pathInfo; -} - -sub GDMConfigHashForWorkstation -{ - my $self = shift; - - return { - 'chooser' => { - Multicast => 'false', - }, - 'daemon' => { - AutomaticLoginEnable => 'false', - Group => 'gdm', - User => 'gdm', - DefaultSession => 'default.desktop', - }, - 'security' => { - DisallowTCP => 'true', - }, - 'xdmcp' => { - Enable => 'false', - }, - }; -} - -sub KDMConfigHashForWorkstation -{ - my $self = shift; - - my $kdmVer = "4"; - my $configHash = $self->SUPER::KDMConfigHashForWorkstation(); - $configHash->{'General'}->{PidFile} = "/var/run/kdm.pid"; - $configHash->{'General'}->{ServerVTs} = "-7"; - $configHash->{'X-:0-Core'}->{Setup} = "/etc/kde$kdmVer/kdm/Xsetup"; - $configHash->{'X-:0-Core'}->{Startup} = "/etc/kde$kdmVer/kdm/Xstartup"; - $configHash->{'X-:0-Core'}->{Session} = "/etc/kde$kdmVer/kdm/Xsession"; - $configHash->{'X-:0-Core'}->{Reset} = "/etc/kde$kdmVer/kdm/Xreset"; - $configHash->{'X-:0-Core'}->{SessionsDirs} = - '/etc/X11/session,/usr/share/xsessions,/usr/share/apps/kdm/sessions'; - $configHash->{'X-:0-Core'}->{ServerAttempts} = "2"; - - return $configHash; -} - -sub setupKDMScript -{ - my $self = shift; - my $repoPath = shift; - - my $kdmVer = "4"; - my $script = $self->SUPER::setupKDMScript($repoPath); - - $script .= "kdmver=$kdmVer\n"; - $script .= unshiftHereDoc(<<' End-of-Here'); - - # cleanup after users Xorg session - sed 's,^#!.*,,' /mnt/etc/kde$kdmver/kdm/Xreset \ - >/mnt/etc/kde$kdmver/kdm/Xreset.system - echo -e '#! /bin/sh\n#\n# modified by desktop plugin in Stage3\n#\n - # remove safely any remaining files of the leaving user in /tmp - ( su -c "rm -rf /tmp/*" - $USER - echo "$USER files removed by $0" >/tmp/files.removed 2>/dev/null - chmod 0400 /tmp/files.removed ) & - . /etc/kde$kdmver/kdm/Xreset.system' >/mnt/etc/kde$kdmver/kdm/Xreset - chmod a+x /mnt/etc/kde$kdmver/kdm/Xreset* - - mv /mnt/etc/init.inactive/kdm.conf /mnt/etc/init - echo '/usr/bin/kdm' > /mnt/etc/X11/default-display-manager - chroot /mnt update-alternatives --set x-window-manager /usr/bin/kwin - chroot /mnt update-alternatives --set x-session-manager \ - /usr/bin/startkde - End-of-Here - - return $script; -} - -1; diff --git a/os-plugins/plugins/desktop/OpenSLX/Distro/Ubuntu_8.pm b/os-plugins/plugins/desktop/OpenSLX/Distro/Ubuntu_8.pm deleted file mode 100644 index 6f00f181..00000000 --- a/os-plugins/plugins/desktop/OpenSLX/Distro/Ubuntu_8.pm +++ /dev/null @@ -1,161 +0,0 @@ -# Copyright (c) 2006..2010 - 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/ -# ----------------------------------------------------------------------------- -# desktop/OpenSLX/Distro/Ubuntu_8.pm -# - provides Ubuntu-specific overrides of the distro API for the desktop -# plugin. -# ----------------------------------------------------------------------------- -package desktop::OpenSLX::Distro::Ubuntu_8; - -use strict; -use warnings; - -use base qw(desktop::OpenSLX::Distro::Base); - -use OpenSLX::Basics; -use OpenSLX::Utils; - -################################################################################ -### interface methods -################################################################################ - -sub GDMPathInfo -{ - my $self = shift; - - my $pathInfo = $self->SUPER::GDMPathInfo(); - - # link gdm.conf-custom instead of gdm.conf - $pathInfo->{config} = '/etc/gdm/gdm.conf-custom'; - - return $pathInfo; -} - -sub setupGDMScript -{ - my $self = shift; - my $repoPath = shift; - - my $script = $self->SUPER::setupGDMScript($repoPath); - - my $configFile = $self->GDMPathInfo->{config}; - - $script .= unshiftHereDoc(<<' End-of-Here'); - # cleanup after users Xorg session - sed 's,^#!.*,,' /mnt/etc/gdm/PostSession/Default \ - >/mnt/etc/gdm/PostSession/Default.system - echo -e '#! /bin/sh\n#\n# modified by desktop plugin in Stage3\n#\n - # remove safely any remaining files of the leaving user in /tmp - ( su -c "rm -rf /tmp/*" - echo "$USER files removed by $0" >/tmp/files.removed 2>/dev/null ) & - . /etc/gdm/PostSession/Default.system' >/mnt/etc/gdm/PostSession/Default - chmod a+x /mnt/etc/gdm/PostSession/Default* - # gdm should be started after dbus/hal - rllinker gdm 5 10 - echo '/usr/sbin/gdm' >/mnt/etc/X11/default-display-manager - chroot /mnt update-alternatives --set x-window-manager /usr/bin/metacity - chroot /mnt update-alternatives --set x-session-manager \ - /usr/bin/gnome-session - # gdm does not like AUFS/UnionFS on its var directory - rm -rf /mnt/var/lib/gdm - mkdir -m 1770 /mnt/var/lib/gdm - chown root:gdm /mnt/var/lib/gdm - sed '/^\\[daemon\\]/ a\\BaseXsession=/etc/gdm/Xsession' \ - -i /mnt$configFile - End-of-Here - - return $script; -} - -sub KDMPathInfo -{ - my $self = shift; - - my $pathInfo = $self->SUPER::KDMPathInfo(); - my $kdmVer = "3"; - - $pathInfo = { - config => "/etc/kde$kdmVer/kdm/kdmrc", - paths => [ - '/var/lib/kdm', - '/var/run/kdm', - ], - }; - - return $pathInfo; -} - -sub GDMConfigHashForWorkstation -{ - my $self = shift; - - my $configHash = $self->SUPER::GDMConfigHashForWorkstation(); - $configHash->{'daemon'}->{SessionDesktopDir} = - '/etc/X11/session/:/usr/share/xsessions/:/usr/share/gdm/BuiltInSessions/'; - - return $configHash; -} - -sub KDMConfigHashForWorkstation -{ - my $self = shift; - - my $kdmVer = "4"; - my $configHash = $self->SUPER::KDMConfigHashForWorkstation(); - $configHash->{'General'}->{PidFile} = "/var/run/kdm.pid"; - $configHash->{'X-:0-Core'}->{Setup} = "/etc/kde$kdmVer/kdm/Xsetup"; - $configHash->{'X-:0-Core'}->{Startup} = "/etc/kde$kdmVer/kdm/Xstartup"; - $configHash->{'X-:0-Core'}->{Session} = "/etc/kde$kdmVer/kdm/Xsession"; - $configHash->{'X-:0-Core'}->{Reset} = "/etc/kde$kdmVer/kdm/Xreset"; - $configHash->{'X-:0-Core'}->{SessionsDirs} = - '/etc/X11/session,/usr/share/xsessions,/usr/share/apps/kdm/sessions'; - $configHash->{'X-:0-Core'}->{ServerAttempts} = "2"; - - return $configHash; -} - -sub setupKDMScript -{ - my $self = shift; - my $repoPath = shift; - - my $kdmVer = "4"; - my $script = $self->SUPER::setupKDMScript($repoPath); - - # change default theme to openslx-legacy if kdm3 - if ( $kdmVer == "3" ) { - print " * Please change to openslx-legacy theme when using kdm3\n"; - } - - $script .= "kdmver=$kdmVer\n"; - $script .= unshiftHereDoc(<<' End-of-Here'); - - # cleanup after users Xorg session - sed 's,^#!.*,,' /mnt/etc/kde$kdmver/kdm/Xreset \ - >/mnt/etc/kde$kdmver/kdm/Xreset.system - echo -e '#! /bin/sh\n#\n# modified by desktop plugin in Stage3\n#\n - # remove safely any remaining files of the leaving user in /tmp - ( su -c "rm -rf /tmp/*" - $USER - echo "$USER files removed by $0" >/tmp/files.removed 2>/dev/null - chmod 0400 /tmp/files.removed ) & - . /etc/kde$kdmver/kdm/Xreset.system' >/mnt/etc/kde$kdmver/kdm/Xreset - chmod a+x /mnt/etc/kde$kdmver/kdm/Xreset* - - rllinker kdm 1 10 - echo '/usr/bin/kdm' > /mnt/etc/X11/default-display-manager - chroot /mnt update-alternatives --set x-window-manager /usr/bin/kwin - chroot /mnt update-alternatives --set x-session-manager \ - /usr/bin/startkde - End-of-Here - - return $script; -} - -1; diff --git a/os-plugins/plugins/desktop/OpenSLX/Distro/Ubuntu_9_04.pm b/os-plugins/plugins/desktop/OpenSLX/Distro/Ubuntu_9_04.pm deleted file mode 100644 index 1022d6e8..00000000 --- a/os-plugins/plugins/desktop/OpenSLX/Distro/Ubuntu_9_04.pm +++ /dev/null @@ -1,161 +0,0 @@ -# Copyright (c) 2006..2010 - 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/ -# ----------------------------------------------------------------------------- -# desktop/OpenSLX/Distro/Ubuntu_9_04.pm -# - provides Ubuntu-specific overrides of the distro API for the desktop -# plugin. -# ----------------------------------------------------------------------------- -package desktop::OpenSLX::Distro::Ubuntu_9_04; - -use strict; -use warnings; - -use base qw(desktop::OpenSLX::Distro::Base); - -use OpenSLX::Basics; -use OpenSLX::Utils; - -################################################################################ -### interface methods -################################################################################ - -sub GDMPathInfo -{ - my $self = shift; - - my $pathInfo = $self->SUPER::GDMPathInfo(); - - # link gdm.conf-custom instead of gdm.conf - $pathInfo->{config} = '/etc/gdm/gdm.conf-custom'; - - return $pathInfo; -} - -sub setupGDMScript -{ - my $self = shift; - my $repoPath = shift; - - my $script = $self->SUPER::setupGDMScript($repoPath); - - my $configFile = $self->GDMPathInfo->{config}; - - $script .= unshiftHereDoc(<<' End-of-Here'); - # cleanup after users Xorg session - sed 's,^#!.*,,' /mnt/etc/gdm/PostSession/Default \ - >/mnt/etc/gdm/PostSession/Default.system - echo -e '#! /bin/sh\n#\n# modified by desktop plugin in Stage3\n#\n - # remove safely any remaining files of the leaving user in /tmp - ( su -c "rm -rf /tmp/*" - echo "$USER files removed by $0" >/tmp/files.removed 2>/dev/null ) & - . /etc/gdm/PostSession/Default.system' >/mnt/etc/gdm/PostSession/Default - chmod a+x /mnt/etc/gdm/PostSession/Default* - # gdm should be started after dbus/hal - rllinker gdm 5 10 - echo '/usr/sbin/gdm' >/mnt/etc/X11/default-display-manager - chroot /mnt update-alternatives --set x-window-manager /usr/bin/metacity - chroot /mnt update-alternatives --set x-session-manager \ - /usr/bin/gnome-session - # gdm does not like AUFS/UnionFS on its var directory - rm -rf /mnt/var/lib/gdm - mkdir -m 1770 /mnt/var/lib/gdm - chown root:gdm /mnt/var/lib/gdm - sed '/^\\[daemon\\]/ a\\BaseXsession=/etc/gdm/Xsession' \ - -i /mnt$configFile - End-of-Here - - return $script; -} - -sub KDMPathInfo -{ - my $self = shift; - - my $pathInfo = $self->SUPER::KDMPathInfo(); - my $kdmVer = "4"; - - $pathInfo = { - config => "/etc/kde$kdmVer/kdm/kdmrc", - paths => [ - '/var/lib/kdm', - '/var/run/kdm', - ], - }; - - return $pathInfo; -} - -sub GDMConfigHashForWorkstation -{ - my $self = shift; - - my $configHash = $self->SUPER::GDMConfigHashForWorkstation(); - $configHash->{'daemon'}->{SessionDesktopDir} = - '/etc/X11/session/:/usr/share/xsessions/:/usr/share/gdm/BuiltInSessions/'; - - return $configHash; -} - -sub KDMConfigHashForWorkstation -{ - my $self = shift; - - my $kdmVer = "4"; - my $configHash = $self->SUPER::KDMConfigHashForWorkstation(); - $configHash->{'General'}->{PidFile} = "/var/run/kdm.pid"; - $configHash->{'X-:0-Core'}->{Setup} = "/etc/kde$kdmVer/kdm/Xsetup"; - $configHash->{'X-:0-Core'}->{Startup} = "/etc/kde$kdmVer/kdm/Xstartup"; - $configHash->{'X-:0-Core'}->{Session} = "/etc/kde$kdmVer/kdm/Xsession"; - $configHash->{'X-:0-Core'}->{Reset} = "/etc/kde$kdmVer/kdm/Xreset"; - $configHash->{'X-:0-Core'}->{SessionsDirs} = - '/etc/X11/session,/usr/share/xsessions,/usr/share/apps/kdm/sessions'; - $configHash->{'X-:0-Core'}->{ServerAttempts} = "2"; - - return $configHash; -} - -sub setupKDMScript -{ - my $self = shift; - my $repoPath = shift; - - my $kdmVer = "4"; - my $script = $self->SUPER::setupKDMScript($repoPath); - - # change default theme to openslx-legacy if kdm3 - if ( $kdmVer == "3" ) { - print " * Please change to openslx-legacy theme when using kdm3\n"; - } - - $script .= "kdmver=$kdmVer\n"; - $script .= unshiftHereDoc(<<' End-of-Here'); - - # cleanup after users Xorg session - sed 's,^#!.*,,' /mnt/etc/kde$kdmver/kdm/Xreset \ - >/mnt/etc/kde$kdmver/kdm/Xreset.system - echo -e '#! /bin/sh\n#\n# modified by desktop plugin in Stage3\n#\n - # remove safely any remaining files of the leaving user in /tmp - ( su -c "rm -rf /tmp/*" - $USER - echo "$USER files removed by $0" >/tmp/files.removed 2>/dev/null - chmod 0400 /tmp/files.removed ) & - . /etc/kde$kdmver/kdm/Xreset.system' >/mnt/etc/kde$kdmver/kdm/Xreset - chmod a+x /mnt/etc/kde$kdmver/kdm/Xreset* - - rllinker kdm 1 10 - echo '/usr/bin/kdm' > /mnt/etc/X11/default-display-manager - chroot /mnt update-alternatives --set x-window-manager /usr/bin/kwin - chroot /mnt update-alternatives --set x-session-manager \ - /usr/bin/startkde - End-of-Here - - return $script; -} - -1; diff --git a/os-plugins/plugins/desktop/OpenSLX/OSPlugin/desktop.pm b/os-plugins/plugins/desktop/OpenSLX/OSPlugin/desktop.pm deleted file mode 100644 index 7d496483..00000000 --- a/os-plugins/plugins/desktop/OpenSLX/OSPlugin/desktop.pm +++ /dev/null @@ -1,712 +0,0 @@ -# Copyright (c) 2008..2010 - 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/ -# ----------------------------------------------------------------------------- -# desktop.pm -# - implementation of the 'desktop' plugin, which installs -# all needed information for a displaymanager and for the desktop. -# ----------------------------------------------------------------------------- -package OpenSLX::OSPlugin::desktop; - -use strict; -use warnings; - -use base qw(OpenSLX::OSPlugin::Base); - -use File::Basename; -use File::Path; - -use OpenSLX::Basics; -use OpenSLX::Utils; - -sub new -{ - my $class = shift; - - my $self = { - name => 'desktop', - }; - - my $localGDMThemesDir - = "$openslxConfig{'config-path'}/plugins/desktop/themes/gdm"; - mkpath($localGDMThemesDir) unless -e $localGDMThemesDir; - my $localKDMThemesDir - = "$openslxConfig{'config-path'}/plugins/desktop/themes/kdm"; - mkpath($localKDMThemesDir) unless -e $localKDMThemesDir; - - return bless $self, $class; -} - -sub getInfo -{ - my $self = shift; - - return { - description => unshiftHereDoc(<<' End-of-Here'), - Sets a desktop and creates needed configs, theme can be set as well. - End-of-Here - precedence => 40, - # not really required e.g. for modern autoconfiguring systems like Ubuntu - # 10.04 - # required => [ qw( xserver ) ], - }; -} - -sub getAttrInfo -{ - my $self = shift; - - return { - # stage3 - 'desktop::active' => { - applies_to_systems => 1, - applies_to_clients => 1, - description => unshiftHereDoc(<<' End-of-Here'), - should the 'desktop'-plugin be executed during boot? - End-of-Here - content_regex => qr{^(0|1)$}, - content_descr => '1 means active - 0 means inactive', - default => '1', - }, - 'desktop::kind' => { - applies_to_systems => 1, - applies_to_clients => 1, - description => unshiftHereDoc(<<' End-of-Here'), - which desktop environment shall be used: gnome, kde, or xfce? - End-of-Here - content_regex => qr{^(gnome|kde|xfce)$}, - content_descr => '"gnome", "kde" or "xfce"', - default => undef, - }, - 'desktop::manager' => { - applies_to_systems => 1, - applies_to_clients => 1, - description => unshiftHereDoc(<<' End-of-Here'), - which display manager to start: gdm, kdm or xdm? - End-of-Here - content_regex => qr{^(gdm|kdm|xdm)$}, - content_descr => '"gdm", "kdm" or "xdm"', - default => undef, - }, - 'desktop::mode' => { - applies_to_systems => 1, - applies_to_clients => 1, - description => unshiftHereDoc(<<' End-of-Here'), - which type of operation mode shall be activated: - workstattion, kiosk or chooser? - End-of-Here - content_regex => qr{^(workstation|kiosk|chooser)$}, - content_descr => '"workstation", "kiosk" or "chooser"', - default => 'workstation', - }, - 'desktop::theme' => { - applies_to_systems => 1, - applies_to_clients => 1, - description => unshiftHereDoc(<<' End-of-Here'), - name of the theme to apply to the desktop (unset for no theme) - End-of-Here - content_descr => 'one of the entries in "supported_themes"', - default => 'openslx', - }, - 'desktop::allowshutdown' => { - applies_to_systems => 1, - applies_to_clients => 1, - description => unshiftHereDoc(<<' End-of-Here'), - allow shutdown of the SLX client via gdm/kdm. "none" disables - this functionality, "root" allows only the sysadmin and - "users" means free4all. - End-of-Here - content_regex => qr{^(none|root|users)$}, - content_descr => 'possible entries "none", "root" or "users"', - default => 'users', - }, - 'desktop::rootlogin' => { - applies_to_systems => 1, - applies_to_clients => 1, - description => unshiftHereDoc(<<' End-of-Here'), - allow the system administrator to logon to the graphical - user interface (1 allow, 0 disallow). - End-of-Here - content_descr => '1 means allowed - 0 means forbidden', - content_regex => qr{^(0|1)$}, - default => '1', - }, - # kiosk mode just has the option to logon user nobody - #'desktop::auto-login' => { - # applies_to_systems => 1, - # applies_to_clients => 1, - # description => unshiftHereDoc(<<' End-of-Here'), - # set an arbitrary user which is logged in automatically into - # the graphical user interface (none disables, default). - # End-of-Here - # content_descr => 'none disables - logins in that userid', - # default => 'none', - #}, - - # stage1 - 'desktop::gdm' => { - applies_to_vendor_os => 1, - description => unshiftHereDoc(<<' End-of-Here'), - should gdm be available (installed in vendor-OS)? - End-of-Here - content_regex => qr{^0|1$}, - content_descr => '"0", "1" or "-" (for unset)', - default => undef, - }, - 'desktop::gnome' => { - applies_to_vendor_os => 1, - description => unshiftHereDoc(<<' End-of-Here'), - should gnome be available (installed in vendor-OS)? - End-of-Here - content_regex => qr{^0|1$}, - content_descr => '"0", "1" or "-" (for unset)', - default => undef, - }, - 'desktop::kde' => { - applies_to_vendor_os => 1, - description => unshiftHereDoc(<<' End-of-Here'), - should kde be available (installed in vendor-OS)? - End-of-Here - content_regex => qr{^0|1$}, - content_descr => '"0", "1" or "-" (for unset)', - default => undef, - }, - 'desktop::kdm' => { - applies_to_vendor_os => 1, - description => unshiftHereDoc(<<' End-of-Here'), - should kdm be available (installed in vendor-OS)? - End-of-Here - content_regex => qr{^0|1$}, - content_descr => '"0", "1" or "-" (for unset)', - default => undef, - }, - 'desktop::supported_themes' => { - applies_to_vendor_os => 1, - description => unshiftHereDoc(<<' End-of-Here'), - name of all themes that shall be installed in vendor-OS (such - that they can be selected via 'desktop::theme' in stage 3). - End-of-Here - content_descr => 'a comma-separated list of theme names', - default => undef, - }, - 'desktop::xdm' => { - applies_to_vendor_os => 1, - description => unshiftHereDoc(<<' End-of-Here'), - should xdm be available (installed in vendor-OS)? - End-of-Here - content_regex => qr{^0|1$}, - content_descr => '"0", "1" or "-" (for unset)', - default => undef, - }, - 'desktop::xfce' => { - applies_to_vendor_os => 1, - description => unshiftHereDoc(<<' End-of-Here'), - should xfce be available (installed in vendor-OS)? - End-of-Here - content_regex => qr{^0|1$}, - content_descr => '"0", "1" or "-" (for unset)', - default => undef, - }, - }; -} - -sub getDefaultAttrsForVendorOS -{ - my $self = shift; - my $vendorOSName = shift; - - my $attrs = $self->getAttrInfo(); - - if ($vendorOSName =~ m{kde}) { - $attrs->{'desktop::manager'}->{default} = 'kdm'; - $attrs->{'desktop::kind'}->{default} = 'kde'; - } - elsif ($vendorOSName =~ m{gnome}) { - $attrs->{'desktop::manager'}->{default} = 'gdm'; - $attrs->{'desktop::kind'}->{default} = 'gnome'; - } - elsif ($vendorOSName =~ m{xfce}) { - $attrs->{'desktop::manager'}->{default} = 'xdm'; - $attrs->{'desktop::kind'}->{default} = 'xcfe'; - } - else { - $attrs->{'desktop::manager'}->{default} - = $self->{distro}->getDefaultDesktopManager(); - $attrs->{'desktop::kind'}->{default} - = $self->{distro}->getDefaultDesktopKind(); - } - return $attrs; -} - -sub checkStage3AttrValues -{ - my $self = shift; - my $stage3Attrs = shift; - my $vendorOSAttrs = shift; - - my @problems; - - my $manager = $stage3Attrs->{'desktop::manager'} || ''; - if ($manager eq 'kdm') { - if (!defined $vendorOSAttrs->{'desktop::kdm'} - || $vendorOSAttrs->{'desktop::kdm'} == 1) { - if (!$self->{distro}->isKDMInstalled()) { - push @problems, _tr( - "KDM is not installed in vendor-OS, so using it as desktop manager wouldn't work!" - ); - } - } - elsif ($vendorOSAttrs->{'desktop::kdm'} == 0) { - push @problems, _tr( - "desktop::kdm is 0, so using KDM as desktop manager is not allowed for this vendor-OS!" - ); - } - } - elsif ($manager eq 'gdm') { - if (!defined $vendorOSAttrs->{'desktop::gdm'} - || $vendorOSAttrs->{'desktop::gdm'} == 1) { - if (!$self->{distro}->isGDMInstalled()) { - push @problems, _tr( - "GDM is not installed in vendor-OS, so using it as desktop manager wouldn't work!" - ); - } - } - elsif ($vendorOSAttrs->{'desktop::gdm'} == 0) { - push @problems, _tr( - "desktop::gdm is 0, so using GDM as desktop manager is not allowed for this vendor-OS!" - ); - } - } - elsif ($manager eq 'xdm') { - if (!defined $vendorOSAttrs->{'desktop::xdm'} - || $vendorOSAttrs->{'desktop::xdm'} == 1) { - if (!$self->{distro}->isXDMInstalled()) { - push @problems, _tr( - "XDM is not installed in vendor-OS, so using it as desktop manager wouldn't work!" - ); - } - } - elsif ($vendorOSAttrs->{'desktop::xdm'} == 0) { - push @problems, _tr( - "desktop::xdm is 0, so using XDM as desktop manager is not allowed for this vendor-OS!" - ); - } - } - - my $kind = $stage3Attrs->{'desktop::kind'} || ''; - if ($kind eq 'kde') { - if (!defined $vendorOSAttrs->{'desktop::kde'} - || $vendorOSAttrs->{'desktop::kde'} == 1) { - if (!$self->{distro}->isKDEInstalled()) { - push @problems, _tr( - "KDE is not installed in vendor-OS, so using it as desktop kind wouldn't work!" - ); - } - } - elsif ($vendorOSAttrs->{'desktop::kde'} == 0) { - push @problems, _tr( - "desktop::kde is 0, so using KDE as desktop kind is not allowed for this vendor-OS!" - ); - } - } - elsif ($kind eq 'gnome') { - if (!defined $vendorOSAttrs->{'desktop::gnome'} - || $vendorOSAttrs->{'desktop::gnome'} == 1) { - if (!$self->{distro}->isGNOMEInstalled()) { - push @problems, _tr( - "GNOME is not installed in vendor-OS, so using it as desktop kind wouldn't work!" - ); - } - } - elsif ($vendorOSAttrs->{'desktop::gnome'} == 0) { - push @problems, _tr( - "desktop::gnome is 0, so using GNOME as desktop kind is not allowed for this vendor-OS!" - ); - } - } - elsif ($kind eq 'xfce') { - if (!defined $vendorOSAttrs->{'desktop::xfce'} - || $vendorOSAttrs->{'desktop::xfce'} == 1) { - if (!$self->{distro}->isXFCEInstalled()) { - push @problems, _tr( - "XFCE is not installed in vendor-OS, so using it as desktop kind wouldn't work!" - ); - } - } - elsif ($vendorOSAttrs->{'desktop::xfce'} == 0) { - push @problems, _tr( - "desktop::xfce is 0, so using XFCE as desktop kind is not allowed for this vendor-OS!" - ); - } - } - - my @supportedThemes - = split ',', $vendorOSAttrs->{'desktop::supported_themes'} || ''; - my $theme = $stage3Attrs->{'desktop::theme'}; - if (defined $theme && !grep { $_ eq $theme } @supportedThemes) { - push @problems, _tr( - "desktop::theme '%s' does not refer to a supported theme!\nSupported themes are: %s", - $theme, $vendorOSAttrs->{'desktop::supported_themes'} || '' - ); - } - - return if !@problems; - - return \@problems; -} - -sub installationPhase -{ - my $self = shift; - my $info = shift; - - $self->{pluginRepositoryPath} = $info->{'plugin-repo-path'}; - $self->{pluginTempPath} = $info->{'plugin-temp-path'}; - $self->{openslxBasePath} = $info->{'openslx-base-path'}; - $self->{openslxConfigPath} = $info->{'openslx-config-path'}; - $self->{attrs} = $info->{'plugin-attrs'}; - - # We are going to change some of the stage1 attributes during installation - # (basically we are filling the ones that are not defined). Since the result - # of these changes might change between invocations, we do not want to store - # the resulting values, but we want to store the original (undef). - # In order to do so, we copy all stage1 attributes directly into the - # object hash and change them there. - $self->{gdm} = $self->{attrs}->{'desktop::gdm'}; - $self->{kdm} = $self->{attrs}->{'desktop::kdm'}; - $self->{xdm} = $self->{attrs}->{'desktop::xdm'}; - $self->{gnome} = $self->{attrs}->{'desktop::gnome'}; - $self->{kde} = $self->{attrs}->{'desktop::kde'}; - $self->{xcfe} = $self->{attrs}->{'desktop::xfce'}; - $self->{supported_themes} = $self->{attrs}->{'desktop::supported_themes'}; - - $self->_installRequiredPackages(); - $self->_fillUnsetStage1Attrs(); - $self->_ensureSensibleStage3Attrs(); - - # start to actually do something - according to current stage1 attributes - if ($self->{gdm}) { - $self->_setupGDM(); - } - if ($self->{kdm}) { - $self->_setupKDM(); - } - if ($self->{xdm}) { - $self->_setupXDM(); - } - $self->_setupSupportedThemes(); - - return; -} - -sub removalPhase -{ - my $self = shift; - my $info = shift; - - return; -} - -sub copyRequiredFilesIntoInitramfs -{ - my $self = shift; - my $targetPath = shift; - my $attrs = shift; - my $makeInitRamFSEngine = shift; - - my $desktopTheme = $attrs->{'desktop::theme'} || ''; - - vlog(1, _tr("desktop-plugin: desktop=%s", $desktopTheme)); - - return; -} - -sub _installRequiredPackages -{ - my $self = shift; - - my $engine = $self->{'os-plugin-engine'}; - - if ($self->{'gnome'} && !$self->{distro}->isGNOMEInstalled()) { - $self->{distro}->installGNOME(); - } - if ($self->{'gdm'} && !$self->{distro}->isGDMInstalled()) { - $self->{distro}->installGDM(); - } - if ($self->{'kde'} && !$self->{distro}->isKDEInstalled()) { - $self->{distro}->installKDE(); - } - if ($self->{'kdm'} && !$self->{distro}->isKDMInstalled()) { - $self->{distro}->installKDM(); - } - if ($self->{'xfce'} && !$self->{distro}->isXFCEInstalled()) { - $self->{distro}->installXFCE(); - } - if ($self->{'xdm'} && !$self->{distro}->isXDMInstalled()) { - $self->{distro}->installXDM(); - } - - return 1; -} - -sub _fillUnsetStage1Attrs -{ - my $self = shift; - - if (!defined $self->{'gnome'}) { - $self->{'gnome'} = $self->{distro}->isGNOMEInstalled(); - } - if (!defined $self->{'gdm'}) { - $self->{'gdm'} = $self->{distro}->isGDMInstalled(); - } - if (!defined $self->{'kde'}) { - $self->{'kde'} = $self->{distro}->isKDEInstalled(); - } - if (!defined $self->{'kdm'}) { - $self->{'kdm'} = $self->{distro}->isKDMInstalled(); - } - if (!defined $self->{'xfce'}) { - $self->{'xfce'} = $self->{distro}->isXFCEInstalled(); - } - if (!defined $self->{'xdm'}) { - $self->{'xdm'} = $self->{distro}->isXDMInstalled(); - } - if (!defined $self->{'supported_themes'}) { - $self->{attrs}->{'desktop::supported_themes'} - = $self->{'supported_themes'} - = join ",", $self->_getAvailableThemes(); - } - - return 1; -} - -sub _ensureSensibleStage3Attrs -{ - my $self = shift; - - # check if current desktop kind is enabled at all and select another - # one, if it isn't - my $kind = $self->{attrs}->{'desktop::kind'} || ''; - if (!$self->{$kind}) { - my @desktops = map { $self->{$_} ? $_ : () } qw( gnome kde xfce ); - if (!@desktops) { - die _tr( - "no desktop kind is possible, plugin 'desktop' wouldn't work!" - ); - } - vlog(0, _tr("selecting %s as desktop kind\n", $desktops[0])); - $self->{attrs}->{'desktop::kind'} = $desktops[0]; - } - - # check if current desktop manager is enabled at all and select another - # one, if it isn't - my $manager = $self->{attrs}->{'desktop::manager'} || ''; - if (!$self->{$manager}) { - my @managers = map { $self->{$_} ? $_ : () } qw( kdm gdm xdm ); - if (!@managers) { - die _tr( - "no desktop manager is possible, plugin 'desktop' wouldn't work!" - ); - } - vlog(0, _tr("selecting %s as desktop manager\n", $managers[0])); - $self->{attrs}->{'desktop::manager'} = $managers[0]; - } - - # check if current theme is supported at all and select another one, if it - # isn't - my $theme = $self->{attrs}->{'desktop::theme'} || ''; - my @supportedThemes = split ",", $self->{'supported_themes'} || ''; - if (!grep { $_ eq $theme } @supportedThemes) { - if (!@supportedThemes) { - vlog( 0, _tr("no themes are supported, using no theme!")); - $self->{attrs}->{'desktop::theme'} = undef; - } - else { - vlog(0, _tr("selecting %s as theme\n", $supportedThemes[0])); - $self->{attrs}->{'desktop::theme'} = $supportedThemes[0]; - } - } - - return 1; -} - -sub _setupGDM -{ - my $self = shift; - - my $repoPath = $self->{pluginRepositoryPath}; - mkpath([ - "$repoPath/gdm/workstation", - "$repoPath/gdm/kiosk", - "$repoPath/gdm/chooser", - ]); - - $self->_setupGDMScript(); - - my $configHash = $self->{distro}->GDMConfigHashForWorkstation(); - $self->_writeConfigHash($configHash, "$repoPath/gdm/workstation/gdm.conf"); - - $configHash = $self->{distro}->GDMConfigHashForKiosk(); - $self->_writeConfigHash($configHash, "$repoPath/gdm/kiosk/gdm.conf"); - - $configHash = $self->{distro}->GDMConfigHashForChooser(); - $self->_writeConfigHash($configHash, "$repoPath/gdm/chooser/gdm.conf"); - - return; -} - -sub _setupGDMScript -{ - my $self = shift; - - my $repoPath = $self->{pluginRepositoryPath}; - my $script = $self->{distro}->setupGDMScript($repoPath); - - spitFile("$repoPath/gdm/desktop.sh", $script); - - return; -} - -sub _setupKDM -{ - my $self = shift; - - my $repoPath = $self->{pluginRepositoryPath}; - mkpath([ - "$repoPath/kdm/workstation", - "$repoPath/kdm/kiosk", - "$repoPath/kdm/chooser", - ]); - - $self->_setupKDMScript(); - - my $configHash = $self->{distro}->KDMConfigHashForWorkstation(); - $self->_writeConfigHash($configHash, "$repoPath/kdm/workstation/kdmrc"); - - $configHash = $self->{distro}->KDMConfigHashForKiosk(); - $self->_writeConfigHash($configHash, "$repoPath/kdm/kiosk/kdmrc"); - - $configHash = $self->{distro}->KDMConfigHashForChooser(); - $self->_writeConfigHash($configHash, "$repoPath/kdm/chooser/kdmrc"); - - return; -} - -sub _setupKDMScript -{ - my $self = shift; - - my $repoPath = $self->{pluginRepositoryPath}; - my $script = $self->{distro}->setupKDMScript($repoPath); - - spitFile("$repoPath/kdm/desktop.sh", $script); - - return; -} - -sub _setupXDM -{ - my $self = shift; -} - -sub _writeConfigHash -{ - my $self = shift; - my $hash = shift || {}; - my $file = shift; - - my $content = ''; - for my $domain (sort keys %$hash) { - $content .= "[$domain]\n"; - for my $key (sort keys %{$hash->{$domain}}) { - my $value - = defined $hash->{$domain}->{$key} - ? $hash->{$domain}->{$key} - : ''; - $content .= "$key=$value\n"; - } - $content .= "\n"; - } - spitFile($file, $content); - - return; -} - -sub _setupSupportedThemes -{ - my $self = shift; - - my $supportedThemes = $self->{attrs}->{'desktop::supported_themes'} || ''; - my @supportedThemes = split m{\s*,\s*}, $supportedThemes; - return if !@supportedThemes; - - # Every theme is copied from the folder where it is found first, such that - # themes in the config folder will be preferred to a theme with the same - # name living in the base folder - my @themeBaseDirs = ( - "$self->{openslxConfigPath}/plugins/desktop/themes", - "$self->{openslxBasePath}/lib/plugins/desktop/themes", - ); - THEME: - for my $theme (@supportedThemes) { - THEME_DIR: - foreach my $themeBaseDir (@themeBaseDirs) { - my $gdmThemeDir = "$themeBaseDir/gdm/$theme"; - my $kdmThemeDir = "$themeBaseDir/kdm/$theme"; - next THEME_DIR if !-d $gdmThemeDir && !-d $kdmThemeDir; - # any of both dirs is enough - - # copy theme into plugin-repo folder - vlog(1, "installing theme '$theme'..."); - my $gdmThemeTargetPath = "$self->{pluginRepositoryPath}/themes/gdm"; - mkpath($gdmThemeTargetPath); - slxsystem( - "cp -a $gdmThemeDir $gdmThemeTargetPath/$theme 2>/dev/null" - ) == 0 - or die _tr('unable to copy GDM-theme %s (%s)', $theme, $!); - my $kdmThemeTargetPath = "$self->{pluginRepositoryPath}/themes/kdm"; - mkpath($kdmThemeTargetPath); - slxsystem( - "cp -a $kdmThemeDir $kdmThemeTargetPath/$theme 2>/dev/null" - ) == 0 - or die _tr('unable to copy KDM-theme %s (%s)', $theme, $!); - next THEME; - } - warn _tr('theme "%s" not found - skipped!', $theme); - } - - return; -} - -sub _getAvailableThemes -{ - my $self = shift; - - my %availableThemes; - - # return all themes found in any of these two folders - my @themeBaseDirs = ( - "$self->{openslxConfigPath}/plugins/desktop/themes", - "$self->{openslxBasePath}/lib/plugins/desktop/themes", - ); - for my $themeBaseDir (@themeBaseDirs) { - my @foundGDMThemes - = map { basename $_ } grep { -d $_ } glob("$themeBaseDir/gdm/*"); - @availableThemes{@foundGDMThemes} = (); - my @foundKDMThemes - = map { basename $_ } grep { -d $_ } glob("$themeBaseDir/kdm/*"); - @availableThemes{@foundKDMThemes} = (); - } - - vlog(1, _tr("available themes: %s", join ",", keys %availableThemes)); - - return keys %availableThemes; -} - -1; -- cgit v1.2.3-55-g7522