diff options
Diffstat (limited to 'installsrv_wizard/Installsrv.pm')
-rw-r--r-- | installsrv_wizard/Installsrv.pm | 152 |
1 files changed, 152 insertions, 0 deletions
diff --git a/installsrv_wizard/Installsrv.pm b/installsrv_wizard/Installsrv.pm new file mode 100644 index 00000000..baa3dded --- /dev/null +++ b/installsrv_wizard/Installsrv.pm @@ -0,0 +1,152 @@ +# version 0.2 +# +# Copyright (C) 2002,2003 Mandrakesoft +# +# Author: aginies _at_ mandrakesoft.com +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# + +package MDK::Wizard::Installsrv; +use lib qw(/usr/lib/libDrakX); +use ugtk2; +use strict; +use standalone; +use common; +use services; +use MDK::Wizard::Varspaceval; +use MDK::Wizard::Wizcommon; + + +# test root capa +my $wiz = new MDK::Wizard::Wizcommon; + +my $INSTALLDIR = "/var/install/"; +my $NFSEXPORTS = "/etc/exports"; +my $WWWDIR = "/var/www/html"; + +my $o = { + name => 'Install Server Wizard', + var => { + DESTDIR => '/var/install/', + SOURCEDIR => '/mnt/cdrom/', + }, + needed_rpm => [ 'nfs-utils', 'apache' ], + defaultimage => "/usr/share/wizards/dns_wizard/images/Install.png" + }; + +$o->{pages} = { + welcome => { + name => N("Configure an install server (via NFS and http)") . "\n\n" . N("Easily configure a Mandrake server installation directory, with nfs export and http access."), + no_back => 1, + next => 'install_srv', + }, + install_srv => { + name => N("Install server Configuration") . "\n\n" . N("Path to data: specify your source directory (should be base of an Mandrake installtion.") . "\n\n" . N("Destination Directory: copy file in wich directory ?"), + pre => sub { + $o->{var}{wiz_nfs} ||= 1; + $o->{var}{wiz_http} ||= 1; + }, + data => [ + { label => "Path to data", val => \$o->{var}{SOURCEDIR} }, + { label => "Destination Directory:", val => \$o->{var}{DESTDIR} }, + { label => N("Enable nfs install server"), type => 'bool', val => \$o->{var}{wiz_nfs} }, + { label => N("Enable http install server"), type => 'bool', val => \$o->{var}{wiz_http} }, + ], + post => \&test_data, + next => 'summary_srv', + }, + error_dir_dest => { + name => N("Destination directory could not be '/var/install/'") . "\n\n" . N("ie use: /var/install/mdk-release"), + next => 'install_srv', + }, + error_dir => { + name => N("Error, Source directory must be a directory with full Mandrake installation directory."), + next => 'install_srv', + }, + dir_already_use => { + name => N("Destination Directory already in use, please choose another one."), + next => 'install_srv', + }, + summary_srv => { + name => N("I Will configure your install server with those parameters"), + pre => sub { + $o->{var}{nfs} = $o->{var}{wiz_nfs} ? N("enabled") : N("disabled"); + $o->{var}{http} = $o->{var}{wiz_http} ? N("enabled") : N("disabled"); + }, + data => [ + { label => "Path to data", fixed_val => \$o->{var}{SOURCEDIR} }, + { label => "Destination Directory:", fixed_val => \$o->{var}{DESTDIR} }, + { label => N("Enable nfs install server"), fixed_val => \$o->{var}{nfs} }, + { label => N("Enable http install server"), fixed_val => \$o->{var}{http} }, + ], + post => \&do_it, + next => 'end', + }, + end => { + name => N("Congratulations, Mandrake Install server is now ready."), + end => 1, + no_back => 1, + next => 0 + }, + }; + + +sub add_install_dir { + if (any { /$INSTALLDIR/ } cat_($NFSEXPORTS)) { + print " - " . $NFSEXPORTS . " ready\n"; + } else { + append_to_file($NFSEXPORTS, "$INSTALLDIR *(async,rw,no_root_squash)\n"); + } +} + +sub test_data { + -d $o->{var}{SOURCEDIR} && -f "$o->{var}{SOURCEDIR}/VERSION" or return 'error_dir'; + if ($o->{var}{DESTDIR} eq $INSTALLDIR) { return 'error_dir_dest' } + if (-e $o->{var}{DESTDIR}) { return 'dir_already_use' } +} + +sub add_http_link { + my ($PATH) = @_; + my $LINK = $WWWDIR . '/' . basename($PATH); + if (! -f $LINK) { + symlink $PATH, $LINK; + } +} + +sub cp_data { + my ($SRCDIR, $DEST) = @_; + mkdir_p($DEST); + cp_af($SRCDIR, $DEST); +} + +sub do_it { + return if $::testing; + my $in = 'interactive'->vnew('su', 'Install server'); + my $w = $in->wait_message(N("Install Server"), N("Copying data to destination directory...")); + cp_data($o->{var}{SOURCEDIR}, $o->{var}{DESTDIR}); + add_install_dir(); + add_http_link($o->{var}{DESTDIR}); + undef $w; +} + +sub new { + my ($class, $conf) = @_; + bless { + o => $o, + }, $class; +} + +1; |