#!/usr/bin/perl # # Drakwizard # Copyright (C) 2003 Florent Villard # Copyright (C) 2004 Antoine Ginies # # 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::Kolab; use strict; use common; use MDK::Wizard::IFCFG; use MDK::Wizard::Wizcommon; my $wiz = new MDK::Wizard::Wizcommon; my $HOSTNAME = chomp_(`hostname`); my $IPSERVER = $wiz->{net}->itf_get("IPADDR"); if (!$IPSERVER) { my $interface = 'eth0'; ($IPSERVER) = `/sbin/ip addr show dev $interface` =~ /^\s*inet\s+(\d+\.\d+\.\d+\.\d+)/m; } my $DOMAINNAME = chomp_(`dnsdomainname`); #my $kolab_config = "/etc/kolab/kolab.conf"; my $o = { name => N("Kolab configuration wizard"), init => sub { test_host_domain($HOSTNAME, $DOMAINNAME); }, var => { HOSTNAME => $HOSTNAME, ip1 => $IPSERVER, maildomain => $DOMAINNAME, password => '', }, needed_rpm => [ 'proftpd', 'openldap-servers', 'apache2', 'kolab-server' ], # defaultimage => $ENV{__WIZ_HOME__}, }; $o->{pages} = { welcome => { name => N("Welcome to the Kolab Groupware server configuration Wizard.") . "\n\n" . N("Kolab is a secure, scalable and reliable groupware server. Some of the major features include: a web administration interface, a shared address book with provision for mailbox users as well as contacts and a POP3 as well as IMAP4(rev1) access to mail") . "\n\n" . N("Warning: Kolab needs to configure many other services: Proftpd, LDAP, Cyrus, Postfix, Imap, Saslauth. Wizard will make a backup of all your previous configuration files for these services."), no_back => 1, # post => \&rpm_needed_kolab, next => 'password', }, # hostname => { # name => N("Hostname"), # data => [ # { label => N("Hostname:"), val => \$o->{var}{HOSTNAME} }, # { label => N("Mail domain:"), val => \$o->{var}{maildomain} }, # ], # next => 'password', # }, password => { name => N("Enter password for the manager account of Kolab server."), complete => sub { if ($o->{var}{password} ne $o->{var}{password2} || $o->{var}{password} eq "") { $::in->ask_warn(N("Error:"), N("Password mismatch, or null password, please correct.")); return 1; } }, data => [ { label => N("Password:"), val => \$o->{var}{password}, hidden => 1 }, { label => N("Password again:"), val => \$o->{var}{password2}, hidden => 1 }, ], next => 'summary', }, summary => { name => N("The wizard will now configure Kolab server with these parameters"), data => [ { label => N("Hostname:"), fixed_val => \$o->{var}{HOSTNAME} }, { label => N("Mail domain:"), fixed_val => \$o->{var}{maildomain} }, ], post => \&do_it, next => 'end', }, end => { name => N("Congratulations") . "\n\n" . N("The kolab server is now configured and running. Log in as 'manager' with the password you entered at https://127.0.0.1/kolab/admin/"), end => 1, next => 0, }, }; sub rpm_needed_kolab { my $in = 'interactive'->vnew('su', 'Installing Kolab'); my $w = $in->wait_message(N("Install in progress"), N("Installing Kolab server on your system...")); system("urpmi --no-verify-rpm --auto kolab-server"); undef $w; if (!$in->do_pkgs->is_installed("kolab-server")) { $::Wizard_finished = 1; $in->ask_okcancel(N("Error"), N("Installation failed")); $in->exit; } } sub new { my ($class) = @_; # rpm_needed_kolab(); bless { o => $o, }, $class; } sub do_it { return if $::testing; my $in = 'interactive'->vnew('su', 'Kolab server'); my $w = $in->wait_message(N("Kolab server"), N("Configuring Kolab server on your system...")); local *F; open(F, "|/usr/sbin/kolab_bootstrap -b\n"); print F "$o->{var}{HOSTNAME} $o->{var}{maildomain} $o->{var}{password} "; close F; system("service kolab-server restart"); undef $w; } 1;