Wizard
view release on metacpan or search on metacpan
lib/Wizard/Examples/Apache/Server.pm view on Meta::CPAN
my $uwdir = File::Spec->catdir(File::Spec->rootdir(), 'usr','local', 'www');
(['Wizard::Elem::Title',
'value' => $server->CreateMe() ?
'Apache Wizard: Create new server' :
'Apache Wizard: Edit an existing server'],
['Wizard::Elem::Text', 'name' => 'apache-server-name',
'value' => $server->{'apache-server-name'},
'descr' => 'Server descriptive name'],
['Wizard::Elem::Text', 'name' => 'apache-server-ip',
'value' => $server->{'apache-server-ip'} || $hname,
'descr' => 'Server DNS name or ip adress'],
['Wizard::Elem::Text', 'name' => 'apache-server-vserver-root',
'value' => $server->{'apache-server-vserver-root'} ||
$uwdir,
'descr' => 'Default directory for the VirtualServer root dirs'],
# ['Wizard::Elem::Text', 'name' => 'apache-server-root',
# 'value' => $server->{'apache-server-root'} ||
# File::Spec->catfile($uwdir, $hname),
# 'descr' => 'Server root directory'],
['Wizard::Elem::Text', 'name' => 'apache-server-admin',
'value' => $server->{'apache-server-admin'} ||
"webmaster\@$hname",
'descr' => 'Server administrator'],
['Wizard::Elem::Text', 'name' => 'apache-server-http-port',
'value' => $server->{'apache-server-http-port'} || '80',
'descr' => 'Server HTTP port'],
['Wizard::Elem::Text', 'name' => 'apache-server-https-port',
'value' => $server->{'apache-server-https-port'} || '443',
'descr' => 'Server HTTPS port'],
# ['Wizard::Elem::Text', 'name' => 'apache-server-index',
# 'value' => $server->{'apache-server-index'},
# 'descr' => 'Server DirectoryIndex'],
# ['Wizard::Elem::Text', 'name' => 'apache-server-options',
# 'value' => $server->{'apache-server-options'},
# 'descr' => 'Server Options'],
['Wizard::Elem::Submit', 'name' => 'Action_ServerSave',
'value' => 'Save these settings',
'id' => '1'],
['Wizard::Elem::BR'],
['Wizard::Elem::Submit', 'name' => 'Action_Reset',
'value' => 'Return to Server menu ',
'id' => '97'],
['Wizard::Elem::Submit', 'name' => 'Wizard::Examples::Apache::Host::Action_Reset',
'value' => 'Return to Host menu ',
'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 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',
'name' => 'Action_VServerMenu', 'id' => 3],
['Wizard::Elem::Submit', 'value' => 'Delete an existing server',
'name' => 'Action_DeleteServer',
'id' => 4],
['Wizard::Elem::BR'],
['Wizard::Elem::Submit', 'value' => 'Return to Top Menu',
'name' => 'Wizard::Examples::Apache::Action_Reset',
'id' => 97],
['Wizard::Elem::Submit', 'value' => 'Return to Host Menu',
'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
my $errors = '';
my $name = $server->{'apache-server-name'}
or ($errors .= "Missing server name.\n");
my $ip = $server->{'apache-server-ip'}
or ($errors .= "Missing server ip\n");
my $http = $server->{'apache-server-http-port'}
or ($errors .= "Missing http port\n");
my $https = $server->{'apache-server-https-port'}
or ($errors .= "Missing https port\n");
# my $sroot = $server->{'apache-server-root'}
# or ($errors .= "Missing server root dir\n");
my $vsroot = $server->{'apache-server-vserver-root'}
or ($errors .= "Missing default root dir for the virtual servers\n");
my $admin = $server->{'apache-server-admin'}
or ($errors .= "Missing admin\n");
my($file, $dir, $odir) = $self->getFileDir();
unless ($name) {
if($server->CreateMe() or $name ne $old_name) {
$errors .= "A server $name already exists: $file.\n" if -e $file;
$errors .= "A server $name already exists: $dir.\n" if -e $dir;
}
}
if ($ip) {
$errors .= "Cannot resolve IP address or DNS name $ip.\n"
unless Socket::inet_aton($ip);
}
die $errors if $errors;
if(!$server->CreateMe() and ($name ne $old_name)) {
my $old_file = File::Spec->catfile($odir, "$old_name.cfg");
my $old_dir = File::Spec->catdir($odir, $old_name);
rename($old_file, $file)
or die "Failed to rename $old_file to $file: $!";
rename($old_dir, $dir)
or die "Failed to rename $old_dir to $dir: $!";
}
$server->File($file);
if ($server->CreateMe()) {
File::Path::mkpath([$dir], 0, 0777);
die "Couldn't create directory $dir" unless -d $dir;
Wizard::Examples::Apache::VirtualServer::createDefault($self, $name, $vsroot, $dir);
}
$server->Modified(1);
$self->Store($wiz, 1);
$self->Action_Reset($wiz);
}
*Action_EditServer = \&Wizard::Examples::Apache::Host::Action_EditItem;
sub Action_ModifyServer {
my $self = shift;
$self->Action_ModifyItem(shift, shift || 'Modify server',
shift || 'Action_EditServer', 'Server');
}
sub Action_DeleteServer {
shift->Action_ModifyServer(shift, 'Delete this server',
'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',
'value' => $server->{'apache-server-root'}],
['Wizard::Elem::Data', 'descr' => 'Server admin',
'value' => $server->{'apache-server-admin'}],
['Wizard::Elem::Data', 'descr' => 'Server HTTP port',
'value' => $server->{'apache-server-http-port'}],
['Wizard::Elem::Data', 'descr' => 'Server HTTPS port',
'value' => $server->{'apache-server-https-port'}],
['Wizard::Elem::Submit', 'value' => 'Yes, delete it',
'id' => 1, 'name' => 'Action_DeleteServer3'],
(-d $dir ? ['Wizard::Elem::Submit',
'value' => 'Yes, delete it, including data directory',
'id' => 2, 'name' => 'Action_DeleteServer4'] : ()),
['Wizard::Elem::Submit', 'value' => 'Return to Host Menu',
'id' => 97, 'name' => 'Action_Reset'],
['Wizard::Elem::Submit', 'value' => 'Return to Top Menu',
'id' => 98, 'name' => 'Wizard::Examples::Apache::Host::Action_Reset'],
['Wizard::Elem::Submit', 'value' => 'Exit Apache Wizard',
'id' => 99]);
}
sub Action_DeleteServer3 {
my($self, $wiz) = @_;
$self->DeleteItem($wiz);
$self->Action_Reset($wiz);
}
sub Action_DeleteServer4 {
my($self, $wiz) = @_;
$self->DeleteItem($wiz,1);
$self->Action_Reset($wiz);
}
( run in 1.712 second using v1.01-cache-2.11-cpan-98e64b0badf )