Wizard

 view release on metacpan or  search on metacpan

Makefile.PL  view on Meta::CPAN

    ( 'Data::Dumper' => 0,
      'HTML::EP' => 0,
      'File::Spec' => 0,
      );

my $cfg;
if (-f "lib/Wizard/Examples/Apache/Config.pm") {
    $cfg = eval { require "lib/Wizard/Examples/Apache/Config.pm" };
}
if (!$cfg  ||  $opt_config) {
    my $prefsfile = $cfg->{'apache-prefs-file'} || '/etc/httpd/wwwAdmin/prefs';
    $cfg->{'apache-prefs-file'} =
	prompt("Enter path of the Apache Wizard prefs file:", $prefsfile);
}
die "Failed to create directory lib/Wizard/Examples/Apache: $!"
    unless ((-d "lib/Wizard/Examples/Apache")  or
	    mkdir("lib/Wizard/Examples/Apache", 0755));
eval {
    require Data::Dumper;
    my $dump = Data::Dumper->new([$cfg],
				 ["Wizard::Examples::Apache::Config::config"]);
    $dump->Indent(1);
    if (!open(FILE, ">lib/Wizard/Examples/Apache/Config.pm")  or

Makefile.PL  view on Meta::CPAN

	!close(FILE)) {
	die "Failed to create file lib/Wizard/Examples/Apache/Config.pm: $!";
    }
};

my $icfg;
if (-f "lib/Wizard/Examples/ISDN/Config.pm") {
    $icfg = eval { require "lib/Wizard/Examples/ISDN/Config.pm" };
}
if (!$icfg  ||  $opt_config) {
    my $prefsfile = $icfg->{'isdn-prefs-file'} || '/etc/sysconfig/isdn/prefs';
    $icfg->{'isdn-prefs-file'} =
	prompt("Enter path of the ISDN Wizard prefs file:", $prefsfile);
}
die "Failed to create directory lib/Wizard/Examples/ISDN: $!"
    unless ((-d "lib/Wizard/Examples/ISDN")  or
	    mkdir("lib/Wizard/Examples/ISDN", 0755));
eval {
    my $dump = Data::Dumper->new([$icfg],
				 ["Wizard::Examples::Apache::ISDN::config"]);
    $dump->Indent(1);
    if (!open(FILE, ">lib/Wizard/Examples/ISDN/Config.pm")  or
	!(print FILE ("package Wizard::Examples::ISDN::Config;\n",

lib/Wizard/Examples/Apache.pm  view on Meta::CPAN

use Wizard::SaveAble ();
use Wizard::Examples::Apache::Config ();


package Wizard::Examples::Apache;

@Wizard::Examples::Apache::ISA     = qw(Wizard::Examples);
$Wizard::Examples::Apache::VERSION = '0.01';


sub GetKey { 'prefs'; };

sub init {
    my $self = shift;
    my $prefs = $self->{'prefs'} || die "Missing preferences";
    return ($prefs) unless shift;
    my $basedir = $prefs->{'apache-prefs-basedir'} || die "Missing basedir";
    wantarray ? ($prefs, $basedir) : $prefs;
}

sub getFileDir {
    my($self, $wiz) = @_;
    my $basedir = $self->{'prefs'}->{'apache-prefs-basedir'};
    wantarray ? ($basedir, $basedir) : $basedir;
}

sub Action_Reset {
    my($self, $wiz) = @_;

    # Load prefs, if required.
    unless ($self->{'prefs'}) {
	my $cfg = $Wizard::Examples::Apache::Config::config;
	my $file = $cfg->{'apache-prefs-file'};
	$self->{'prefs'} = Wizard::SaveAble->new('file' => $file, 'load' => 1);
	$self->Store($wiz);
    }

    # Return the initial menu.
    (['Wizard::Elem::Title', 'value' => 'Apache Wizard Menu'],
     ['Wizard::Elem::Submit', 'value' => 'Host Menu',
      'name' => 'Wizard::Examples::Apache::Host::Action_Reset',
      'id' => 1],
     ['Wizard::Elem::BR'],
     ['Wizard::Elem::Submit', 'value' => 'Apache Wizard preferences',

lib/Wizard/Examples/Apache.pm  view on Meta::CPAN

      'name' => 'Wizard::Examples::Action_Reset',
      'id' => 98],
     ['Wizard::Elem::BR'],
     ['Wizard::Elem::Submit', 'value' => 'Exit Apache Wizard',
      'id' => 99]);
}


sub Action_Preferences {
    my($self, $wiz) = @_;
    my $prefs = $self->init();

    # Return a list of input elements.
    (['Wizard::Elem::Title', 'value' => 'Apache Wizard Preferences'],
     ['Wizard::Elem::Text', 'name' => 'apache-prefs-basedir',
      'value' => $prefs->{'apache-prefs-basedir'},
      'descr' => 'Base Directory of the Apache Wizard'],
     ['Wizard::Elem::Submit', 'name' => 'Action_PreferencesSave',
      'value' => 'Save these settings', 'id' => 1],
     ['Wizard::Elem::Submit', 'name' => 'Action_PreferencesReset',
      'value' => 'Reset this form', 'id' => 98],
     ['Wizard::Elem::Submit', 'name' => 'Action_Reset',
      'value' => 'Return to top menu', 'id' => 99]);
}


sub Action_PreferencesSave {
    my($self, $wiz) = @_;
    my $prefs = $self->init();
    foreach my $opt (qw(apache-prefs-basedir)) {
	$prefs->{$opt} = $wiz->param($opt) if defined($wiz->param($opt));
    }
    $prefs->Modified(1);
    $self->Store($wiz, 1);
    $self->Action_Reset($wiz);
}


sub Action_PreferencesReset {
    my($self, $wiz) = @_;
    $self->Action_Reset($wiz);
    $self->Action_Preferences($wiz);
}

lib/Wizard/Examples/Apache.pod  view on Meta::CPAN


Hier werden Hosts konfiguriert (siehe Host Administration)

=head2 Apache Wizard Preferences

Hier wird die globale Konfiguration mittels folgender Optionen
festgelegt: 

=over 4

=item I<apache_prefs_basedir> Base Directory of Apache Wizard

Verzeichnis in dem die Daten ueber Hosts, Server, etc... 
abgelegt werden.

=back

=head1 AUTHORS AND COPYRIGHT

This module is

lib/Wizard/Examples/Apache/Admin.pm  view on Meta::CPAN

use Wizard::SaveAble ();
use Wizard::Examples::Apache::Config ();
use Symbol ();
use Socket ();


package Wizard::Examples::Apache::Admin;


sub Parse {
    my($self, $template, $server, $host, $prefs) = @_;
    $template =~ s/\~\~([\w\-]+)\~\~/
        my $sf;
        foreach my $s (@_) {
            if (exists($s->{$1})) {
                $sf = $s;
                last;
            }
        }
        die "Unknown pattern: $1" unless $sf;
        $sf->{$1}/eg;
    $template
}


sub new {
    my($proto, $host, $server) = @_;

    my $cfg = $Wizard::Examples::Apache::Config::config;
    my $file = $cfg->{'apache-prefs-file'};
    my $prefs = Wizard::SaveAble->new($file);
    my $basedir = $prefs->{'apache-prefs-basedir'} or die "Missing basedir";
    my $h = Wizard::SaveAble->new(File::Spec->catfile($basedir, "$host.cfg"));
    my $hostdir = File::Spec->catdir($basedir, $host);
    my $s = Wizard::SaveAble->new(File::Spec->catfile($hostdir,
						      "$server.cfg"));
    my $serverdir = File::Spec->catdir($basedir, $server);
    bless({'prefs' => $prefs,
	   'basedir' => $basedir,
	   'host' => $h,
	   'hostdir' => $hostdir,
	   'server' => $s,
	   'serverdir' => $serverdir}, (ref($proto) || $proto));
}


sub MakeHttpdConf {
    my $self = shift;

lib/Wizard/Examples/Apache/Admin.pm  view on Meta::CPAN

		$interfaces{$i} = $ip;
	    }
	}

	if ($vserver->{'configuration'}) {
	    $conf .= $vserver->{'configuration'};
	} else {
	    my $mode = $vserver{'apache-virtualserver-http-mode'};
	    if ($mode eq 'http'  ||  $mode eq 'both') {
		$conf .= Wizard::Examples::Apache::Admin::Config::HTTP->Cnf
		    ($prefs, $host, $server, $vserver);
	    }
	    if ($mode eq 'https'  || $mode eq 'both') {
		$conf .= Wizard::Examples::Apache::Admin::Config::HTTPS->Cnf
		    ($prefs, $host, $server, $vserver);
	    }
	    if ($mode eq 'redirect') {
		$conf .= Wizard::Examples::Apache::Admin::Config::Redirect->Cnf
		    ($prefs, $host, $server, $vserver);
	    }
	}
    }

    # Make sure, the defaults are valid
    $conf .= <<"EOF";

<VirtualHost _default_:*>
</VirtualHost>

EOF

    # Finally parse the config file.
    (Parse($conf, $server, $host, $prefs), \%interfaces);
}


sub IfUp {
    my($self, $i, $ip) = @_;
    my $arch = $self->{'apache-host-arch'};
    my $interface = $self->{'apache-host-interface'};
    if ($arch =~ /linux/) {
	my $ifconfig = "$self->{'apache-host-ifconfig'} $interface";
	return $self->Warn("Failed to parse netmask of interface $interface:\n"

lib/Wizard/Examples/Apache/Admin.pm  view on Meta::CPAN

	    . " $ip up\n";
	print "Switching interface $i up: $command\n" if $::verbose;
	system $command unless $::debug;
    }
}


package Wizard::Examples::Apache::Admin::Config::HTTP;

sub new {
    my($prefs, $host, $server, $vserver) = @_;
    my $self = { %$vserver };
    $self->{'apache-virtualserver-pagedir'} =
	File::Spec->catdir($server->{'apache-server-root'},
			   $vserver->{'apache-virtualserver-name'},
			   'pages');
    $self->{'apache-virtualserver-cgidir'} =
	File::Spec->catdir($server->{'apache-server-root'},
			   $vserver->{'apache-virtualserver-name'},
			   'cgi-bin');
    $self->{'apache-virtualserver-logdir'} =

lib/Wizard/Examples/Apache/Admin.pm  view on Meta::CPAN

  ~~apache-virtualserver-index~~
~~apache-virtualserver-aliases~~
  <Directory ~~apache-virtualserver-pagedir~~>
    ~~apache-virtualserver-options~~
  </Directory>
</VirtualHost>
EOF
}

sub Cnf {
    my($proto, $prefs, $host, $server, $vserver) = @_;
    my $conf = $proto->new($prefs, $host, $server, $vserver);
    my $template = $conf->Template();
    Wizard::Examples::Apache::Admin::Parse($template, $conf, $template,
					   $server, $host, $prefs);
}


package Wizard::Examples::Apache::Admin::Config::HTTPS;

@Wizard::Examples::Apache::Admin::Config::HTTPS::ISA =
    qw(Wizard::Examples::Apache::Admin::Config::HTTP);

sub Template {
    my $self = shift;

lib/Wizard/Examples/Apache/Directory.pm  view on Meta::CPAN

}

sub Action_Enter {
    my($self, $wiz) = @_;
    $self->SUPER::Load($wiz, 'Wizard::Examples::Apache::VirtualServer'); 
    $self->Action_Reset($wiz);
}

sub Action_Reset {
    my($self, $wiz) = @_;
    my($prefs, $basedir, $host, $server, $vserver) = $self->init();
    
    delete $self->{'directory'};
    $self->Store($wiz);
    (['Wizard::Elem::Title', 'value' => 'Apache Wizard Directory Configuration Menu'],
     ['Wizard::Elem::Submit', 'value' => 'Create a new Directory Config.',
      'name' => 'Action_CreateDirectory',
      'id' => 1],
     ['Wizard::Elem::Submit', 'value' => 'Modify an existing Directory Config.',
      'name' => 'Action_ModifyDirectory',
      'id' => 2],

lib/Wizard/Examples/Apache/Directory.pm  view on Meta::CPAN

      'name' => 'Wizard::Examples::Apache::Action_Reset',
      'id' => 98],
     ['Wizard::Elem::Submit', 'value' => 'Exit Apache Wizard',
      'id' => 99]);    
}

*Action_CreateDirectory = \&Wizard::Examples::Apache::Host::Action_CreateItem;

sub Action_DirectorySave {
    my($self, $wiz) = @_;
    my ($prefs, $basedir, $host, $server, $vserver, $dirc) = $self->init(1);
    
    my $old_name = $dirc->{'apache-directory-name'};
    foreach my $opt ($wiz->param()) {
	$dirc->{$opt} = $wiz->param($opt) 
	    if (($opt =~ /^apache\-directory/) && (defined($wiz->param($opt))));
    }

    # Verify the settings
    my $errors = '';
    my $pname = $dirc->{'apache-directory-pathname'} || die "Missing directory pathname";

lib/Wizard/Examples/Apache/Directory.pm  view on Meta::CPAN

			     'Directory configuration');
}

sub Action_DeleteDirectory {
    shift->Action_ModifyServer(shift, 'Delete this directory', 
			       'Action_DeleteDirectory2'); 
}

sub Action_DeleteDirectory2 {
    my($self, $wiz) = @_;
    my ($prefs, $basedir, $host, $server, $vserver) = $self->init();
    my $name = $wiz->param('apache-directory') || die "Missing directory name";
    $name =~ s/\//\_/g;
    $wiz->param('apache-directory', $name);   
    $self->Load($wiz);
    my $dirc = $self->{'dir'};
    my ($file, $dir) = $self->getFileDir();

    if ($dirc->{'apache-directory-isdefault'}) {
	return (['Wizard::Elem::Data', 'descr' => 'ERROR: ', 
		 'value' => 'Root directory can not be deleted'], 

lib/Wizard/Examples/Apache/Host.pm  view on Meta::CPAN

    $self->init(); my $key = $self->GetKey();

    $self->{$key} = Wizard::SaveAble->new();
    $self->{$key}->CreateMe(1);
    $self->Store($wiz);
    $self->ShowMe($wiz, $self->{$key}) unless $notshow;
}

sub Action_HostSave {
    my($self, $wiz) = @_;
    my ($prefs, $basedir, $host) = $self->init(1);
    
    my $old_name = $host->{'apache-host-name'};
    foreach my $opt (qw(apache-host-name apache-host-descr apache-host-arch
                        apache-host-ip)) {
	$host->{$opt} = $wiz->param($opt) if defined($wiz->param($opt));
    }

    # Verify the new settings
    my $errors = '';
    my $name = $host->{'apache-host-name'} || '';

lib/Wizard/Examples/Apache/Host.pm  view on Meta::CPAN

        File::Path::mkpath([$dir],0, 0777);
	die "Couldn't create directory $dir: $!" unless -d $dir;
    }
    $host->Modified(1);
    $self->Store($wiz, 1);
    $self->Action_Reset($wiz);
}

sub Action_Reset {
    my($self, $wiz) = @_;
    my ($prefs, $basedir) = $self->init();

    delete $self->{'host'};
    $self->Store($wiz);

    # Return the initial menu.
    (['Wizard::Elem::Title', 'value' => 'Apache Wizard Host Menu'],
     ['Wizard::Elem::Submit', 'value' => 'Create a new host',
      'name' => 'Action_CreateHost',
      'id' => 1],
     ['Wizard::Elem::Submit', 'value' => 'Modify an existing host',

lib/Wizard/Examples/Apache/Host.pm  view on Meta::CPAN

}

sub Action_ServerMenu {
    my($self, $wiz) = @_;
    $self->Action_ModifyHost($wiz, 'Manage servers on this host',
			     'Wizard::Examples::Apache::Server::Action_Enter');
}

sub Action_DeleteHost2 {
    my $self = shift; my $wiz = shift;
    my ($prefs, $basedir) = $self->init();
    $self->Load($wiz);
    my $host = $self->{'host'};
    my ($file, $dir, $odir) = $self->getFileDir();

    (['Wizard::Elem::Title', 'value' => 'Deleting an Apache host'],
     ['Wizard::Elem::Link', 'action'=> 'DeleteHost'],
     ['Wizard::Elem::Data', 'descr' => 'Host name',
      'value' => $host->{'apache-host-name'}],
     ['Wizard::Elem::Data', 'descr' => 'Host description',
      'value' => $host->{'apache-host-descr'}],

lib/Wizard/Examples/Apache/Server.pm  view on Meta::CPAN

}

sub Action_Enter {
    my($self, $wiz) = @_;
    $self->Load($wiz, 'Wizard::Examples::Apache::Host'); 
    $self->Action_Reset($wiz);
}

sub Action_Reset {
    my $self = shift; my $wiz=shift;
    my($prefs, $basedir, $host) = $self->init();
    delete $self->{'server'};
    $self->Store($wiz);

    # Return the initial menu.
    (['Wizard::Elem::Title', 'value' => 'Apache Wizard Server Menu'],
     ['Wizard::Elem::Submit', 'value' => 'Create a new server',
      'name' => 'Action_CreateServer', 'id' => 1],
     ['Wizard::Elem::Submit', 'value' => 'Modify an existing server',
      'name' => 'Action_ModifyServer', 'id' => 2],
     ['Wizard::Elem::Submit', 'value' => 'Virtual Server Menu',

lib/Wizard/Examples/Apache/Server.pm  view on Meta::CPAN

      'name' => 'Wizard::Examples::Apache::Host::Action_Reset',
      'id' => 98],
     ['Wizard::Elem::Submit', 'value' => 'Exit Apache Wizard',
      'id' => 99]);
}

*Action_CreateServer = \&Wizard::Examples::Apache::Host::Action_CreateItem;

sub Action_ServerSave {
    my($self, $wiz) = @_;
    my($prefs, $basedir, $host, $server) = $self->init(1);
    $self->init(1);
    my $hname = $host->{'apache-host-name'};
    
    my $old_name = $server->{'apache-server-name'};
    foreach my $opt ($wiz->param()) {
	$server->{$opt} = $wiz->param($opt) 
	    if (($opt =~ /^apache\-server/) && (defined($wiz->param($opt))));
    }
    
    # Verify the new settings

lib/Wizard/Examples/Apache/Server.pm  view on Meta::CPAN

			       'Action_DeleteServer2'); 
}

sub Action_VServerMenu { 
    shift->Action_ModifyServer(shift, 'Manage virtual servers on this server', 
			       'Wizard::Examples::Apache::VirtualServer::Action_Enter'); 
}

sub Action_DeleteServer2 {
    my $self = shift; my $wiz = shift;
    my ($prefs, $basedir, $host) = $self->init();
    $self->Load($wiz);
    my $server = $self->{'server'};
    my ($file, $dir) = $self->getFileDir();

    (['Wizard::Elem::Title', 'value' => 'Deleting an Apache server'],
     ['Wizard::Elem::Data', 'descr' => 'Server name',
      'value' => $server->{'apache-server-name'}],
     ['Wizard::Elem::Data', 'descr' => 'Server DNS name',
      'value' => $server->{'apache-server-ip'}],
     ['Wizard::Elem::Data', 'descr' => 'Server root',

lib/Wizard/Examples/Apache/VirtualServer.pm  view on Meta::CPAN

}

sub Action_Enter {
    my($self, $wiz) = @_;
    $self->SUPER::Load($wiz, 'Wizard::Examples::Apache::Server'); 
    $self->Action_Reset($wiz);
}

sub Action_Reset {
    my($self, $wiz) = @_;
    my($prefs, $basedir, $host, $server) = $self->init();

    delete $self->{'virtualserver'};
    $self->Store($wiz);

    # Return the initial menu.
    (['Wizard::Elem::Title', 'value' => 'Apache Wizard Virtual WWWserver Menu'],
     ['Wizard::Elem::Submit', 'value' => 'Create a new virtual WWWserver',
      'name' => 'Action_CreateVServer',
      'id' => 1],
     ['Wizard::Elem::Submit', 'value' => 'Modify an existing virtual WWWserver',

lib/Wizard/Examples/Apache/VirtualServer.pm  view on Meta::CPAN

      'id' => 97],
     ['Wizard::Elem::Submit', 'value' => 'Return to Top Menu',
      'name' => 'Wizard::Examples::Apache::Action_Reset',
      'id' => 98],
     ['Wizard::Elem::Submit', 'value' => 'Exit Apache Wizard',
      'id' => 99]);
}

sub GetIfaces {
    my $self = shift;
    my ($prefs, $basedir, $host, $server) = $self->init();
    my $hname = $host->{'apache-host-name'};
    my ($fileo, $diro) = $self->getFileDir('', 'Wizard::Examples::Apache::Host');
    my $tdir;

    my $fho = Symbol::gensym();
    my $fh = Symbol::gensym();
    my $maxkey=0;
    my $ifaces = {};
    opendir($fho, $diro) || die "Failed to open directory $diro: $!";
    while($tdir=readdir($fho)) {

lib/Wizard/Examples/Apache/VirtualServer.pm  view on Meta::CPAN

}

sub Action_CreateVServer {
    my $self = shift;
    $self->Action_CreateItem(@_, 1);
    return $self->FirstParams(shift, $self->{'virtualserver'});
}

sub AssignFirstParams {
    my($self, $wiz, $vs) = @_;
    my($prefs, $basedir, $host, $server) = $self->init();
    my $errors = '';
    my $old_name = $vs->{'apache-virtualserver-name'} || '';
    my $name = $wiz->param('apache-virtualserver-name') 
       or ($errors .= "Missing virtual WWW server name.\n");
    my $http_mode = $wiz->param('apache-virtualserver-http-mode') 
       or ($errors .= "Missing virtual WWW server http mode.\n");
    $errors .= "Invalid http mode.\n" unless defined($allModes->{$http_mode});

    my $ifaces = $self->GetIfaces();
    my $iface = $vs->{'apache-virtualserver-interface'};

lib/Wizard/Examples/Apache/VirtualServer.pm  view on Meta::CPAN

    my($self, $wiz) = @_;
    my $vs = $self->{'virtualserver'};

    $self->AssignFirstParams($wiz, $vs);
    $self->Store($wiz);
    $self->ShowMe($wiz, $vs);
}

sub Action_VServerSave {
    my $self=shift; my $wiz = shift;
    my($prefs, $basedir, $host, $server, $vs) = $self->init(1);
    
    my $name = $vs->{'apache-virtualserver-name'};
    my $old_name = delete $vs->{'_virtualserver_old_name'} || '';

    foreach my $opt ($wiz->param()) {
	$vs->{$opt} = $wiz->param($opt) 
	    if (($opt =~ /^apache\-virtualserver/) 
		&& (defined($wiz->param($opt))));
    }
    

lib/Wizard/Examples/Apache/VirtualServer.pm  view on Meta::CPAN

}

sub Action_DirectoryMenu { 
    shift->Action_ModifyVServer(shift, 'Manage directory configurations on this virtual server', 
			       'Wizard::Examples::Apache::Directory::Action_Enter'); 
}


sub Action_DeleteVServer2 {
    my $self = shift; my $wiz = shift;
    my($prefs, $basedir, $host, $server) = $self->init();
    my $hname = $host->{'apache-host-name'};
    my $sname = $server->{'apache-server-name'};
    my $name = $wiz->param('apache-virtualserver') || die "Missing virtual WWW server name";
    my $file = File::Spec->catfile($basedir, $hname, $sname, "$name.cfg");
    my $dir = File::Spec->catdir($basedir, $hname, $sname, $name);
    my $vserver = Wizard::SaveAble->new($file);

    if ($vserver->{'apache-virtualserver-isdefault'}) {
	return (['Wizard::Elem::Data', 'descr' => 'ERROR: ', 
		 'value' => 'Default virtual server can not be deleted'], 

lib/Wizard/Examples/ISDN.pm  view on Meta::CPAN

use Wizard::SaveAble ();
use Wizard::Examples::ISDN::Config ();


package Wizard::Examples::ISDN;

@Wizard::Examples::ISDN::ISA     = qw(Wizard::Examples);
$Wizard::Examples::ISDN::VERSION = '0.01';


sub GetKey { 'prefs'; };

sub init {
    my $self = shift;
    my $prefs = $self->{'prefs'} || die "Missing preferences";
    return ($prefs) unless shift;
    my $cfile = $prefs->{'isdn-prefs-cfile'} || die "Missing config file";
    wantarray ? ($prefs, $cfile) : $prefs;
}


sub Action_Reset {
    my($self, $wiz) = @_;

    # Load prefs, if required.
    unless ($self->{'prefs'}) {
	my $cfg = $Wizard::Examples::ISDN::Config::config;
	my $file = $cfg->{'isdn-prefs-file'};
	$self->{'prefs'} = Wizard::SaveAble->new('file' => $file, 'load' => 1);
	$self->Store($wiz);
    }

    # Return the initial menu.
    (['Wizard::Elem::Title', 'value' => 'ISDN Wizard Menu'],
     ['Wizard::Elem::Submit', 'value' => 'ISDN Wizard preferences',
      'name' => 'Wizard::Examples::ISDN::Action_Preferences',
      'id' => 1],
     ['Wizard::Elem::Submit', 'value' => 'ISDN Settings Wizard',
      'name' => 'Wizard::Examples::ISDN::Settings::Action_Reset',

lib/Wizard/Examples/ISDN.pm  view on Meta::CPAN

     ['Wizard::Elem::Submit', 'value' => 'Return to Wizard Examples',
      'name' => 'Wizard::Examples::Action_Reset',
      'id' => 98],
     ['Wizard::Elem::Submit', 'value' => 'Exit ISDN Wizard',
      'id' => 99]);
}


sub Action_Preferences {
    my($self, $wiz) = @_;
    my $prefs = $self->init();

    # Return a list of input elements.
    (['Wizard::Elem::Title', 'value' => 'ISDN Wizard Preferences'],
     ['Wizard::Elem::Text', 'name' => 'isdn-prefs-cfile',
      'value' => $prefs->{'isdn-prefs-cfile'},
      'descr' => 'ISDN Configfile'],
     ['Wizard::Elem::Text', 'name' => 'isdn-prefs-updatecmd',
      'value' => $prefs->{'isdn-prefs-updatecmd'},
      'descr' => 'Command that will be executed on update'],
     ['Wizard::Elem::Submit', 'name' => 'Action_PreferencesSave',
      'value' => 'Save these settings', 'id' => 1],
     ['Wizard::Elem::Submit', 'name' => 'Action_PreferencesReset',
      'value' => 'Reset this form', 'id' => 98],
     ['Wizard::Elem::Submit', 'name' => 'Action_Reset',
      'value' => 'Return to top menu', 'id' => 99]);
}


sub Action_PreferencesSave {
    my($self, $wiz) = @_;
    my $prefs = $self->init();
    foreach my $opt (qw(isdn-prefs-cfile isdn-prefs-updatecmd)) {
	$prefs->{$opt} = $wiz->param($opt) if defined($wiz->param($opt));
    }
    $prefs->Modified(1);
    $self->Store($wiz, 1);
    $self->Action_Reset($wiz);
}


sub Action_PreferencesReset {
    my($self, $wiz) = @_;
    $self->Action_Reset($wiz);
    $self->Action_Preferences($wiz);
}

lib/Wizard/Examples/ISDN/Settings.pm  view on Meta::CPAN

      'value' => 'Save these settings', 'id' => 1],
     ['Wizard::Elem::Submit', 'name' => 'Action_Reset',
      'value' => 'Return to ISDN menu', 'id' => 98],
     ['Wizard::Elem::Submit', 'name' => 'Wizard::Examples::ISDN::Action_Reset',
      'value' => 'Return to top menu', 'id' => 99]);
}


sub Action_SettingsSave {
    my($self, $wiz) = @_;
    my ($prefs, $basedir, $sets) = $self->init(1);
    
    foreach my $opt ($wiz->param()) {
	$sets->{$opt} = $wiz->param($opt) if (($opt =~ /^isdn-settings/) && defined($wiz->param($opt)));
    }
    
    $sets->{'isdn-settings-I4L_HARDWARE_PROTO'} = '1' if $sets->{'isdn-settings-I4L_HARDWARE_PROTO'} =~ /^1TR6/i;
    $sets->{'isdn-settings-I4L_HARDWARE_PROTO'} = '2' if $sets->{'isdn-settings-I4L_HARDWARE_PROTO'} =~ /^Euro/i;

    # Verify the new settings
    my $errors = '';

lib/Wizard/Examples/ISDN/Settings.pm  view on Meta::CPAN

	    unless Socket::inet_aton($ip_local);
    }
    if ($ip_remote) {
	$errors .= "Cannot resolve Service Remote IP address $ip_remote.\n"
	    unless Socket::inet_aton($ip_remote);
    }
    die $errors if $errors;

    $sets->Modified(1);
    $self->Store($wiz, 1);
    my $cmd = $prefs->{'isdn-prefs-upadatecmd'};
    my $cmdp = $cmd; $cmdp =~ s/\ .*$//g;
    system($cmd) if(-x $cmdp);

    $self->Wizard::Examples::ISDN::Action_Reset($wiz);
}

sub Action_Reset {
    my($self, $wiz) = @_;
    my ($prefs) = $self->init();

    my $cfile = $prefs->{'isdn-prefs-cfile'};
    $self->{'settings'} = Wizard::SaveAble::ShellVars->new('file' => $cfile, 'load' => 1, 'prefix' => 'isdn-settings-');
    $self->Store($wiz);

    return $self->ShowMe($wiz, $self->{'settings'});
}





lib/Wizard/State.pm  view on Meta::CPAN

  my $state = Wizard::State->new();


=head1 DESCRIPTION

A Wizard can be interpreted as a very simple finite state machine. The
state is stored in ab object of class Wizard::State.

A wizard state is typically a collection of Wizard::SaveAble objects.
For example, while configuring an Apache webserver, the state might
have attributes I<prefs> (global preferences), I<host> (the machine
where the webserver is running on) and I<server> (the web server), each
of them being a SaveAble object. If the state's I<Store> method is
called, then the I<Store> method is called for any of these objects,
as if they were a single object.

=head1 CLASS INTERFACE

=head2 Constructor

  my $state = Wizard::State->new(\%attr)



( run in 1.006 second using v1.01-cache-2.11-cpan-8f98c5d2c55 )