| Current Path : /usr/sbin/ |
| Current File : //usr/sbin/mono-xsp4-admin |
#!/usr/bin/perl
# mono-xsp4 hosts file creator
#
# With this script the user can create a host file in one step,
# these hosts file are installed in /etc/xsp4/conf.d/package and
# then used in a 'big' host file (/etc/xsp4/mono-server4-hosts)
# that will be used by XSP4
#
# Under GPL, please read:
# http://www.gnu.org/copyleft/gpl.html
#
# Written by: Pablo Fischer
=head1 NAME
mono-xsp4-admin - mono-xsp4 hosts file creator
=head1 SYNOPSIS
mono-xsp4-admin [action] [args]
=head4 OPTIONS
Actions:
add Use 'add' if you want to create an application and want mono-xsp4 scripts to manage it
del If you want to remove an application
Args:
--path The path where you have your aspx files, MUST EXISTS!, required only with add action
--app The name of your application
=head1 DESCRIPTION
mono-xsp4-admin is a perl tool to adminstrate your ASP.NET webapps that will be executed with
xsp4.
When you try to add an application, mono-xsp4-admin will verify that your path exists, if it is, it will
add a directory inside /etc/xsp4/conf.d with the name of your app, and also as a file with the
filename format: 10_appname. This file will have the information (path, app).
So, when mono-xsp4-update is executed it will read those dirs and create a debian.webapp in
/etc/xsp4 that the xsp4 daemon will read.
=head1 AUTHOR
Pablo Fischer <pablo@pablo.com.mx>
=cut
use strict;
my (%OPT);
my $confd_directory = "/etc/xsp4/conf.d";
#Read the opts
foreach my $opt (@ARGV) {
if($opt =~ /^add/) {
$OPT{'action'} = "add";
}
elsif($opt =~ /^del/) {
$OPT{'action'} = "del";
}
elsif($opt =~ /--path/) {
$OPT{'path'} = $opt;
}
elsif($opt =~ /--app/) {
$OPT{'app'} = $opt;
}
}
#clean strange chars, like ':', commas, etc.. I don't like those chars
sub clean_opts() {
foreach my $key (keys %OPT) {
next unless $key ne "action";
my $value = $OPT{$key};
$OPT{$key} = (split("=", $OPT{$key}))[1];
if($key ne "path") {
$OPT{$key} =~ s|/*||;
}
$OPT{$key} =~ s{/$}{};
$OPT{$key} =~ s|:*||;
}
}
#We have the path, app, name and the action?
sub verify_neededopts() {
if($OPT{'action'} ne "add" && $OPT{'action'} ne "del") {
&help;
exit;
}
if(!$OPT{'path'}) {
print "I need the path of your asp.net application\n";
exit;
}
if(!$OPT{'app'}) {
print "You should declare the application name!\n";
exit;
}
}
#Add the Host file and directory
sub add_host() {
if( ! -d $OPT{'path'} ) {
print "$OPT{'path'} does not exists!\n";
exit;
}
#But what if the conf.d package directory already exists?
if ( -d "$confd_directory/$OPT{'app'}") {
print "Sorry but $confd_directory/$OPT{'app'} already exist, you might change your application name\n";
exit;
}
#Ok, create the conf.d package directory
system("mkdir $confd_directory/$OPT{'app'}");
#And create the file
system("touch $confd_directory/$OPT{'app'}/10_$OPT{'app'}");
open(PACKAGEFILE, "> $confd_directory/$OPT{'app'}/10_$OPT{'app'}");
print PACKAGEFILE "This is the configuration file \n";
print PACKAGEFILE "for the $OPT{'app'} virtualhost\n";
print PACKAGEFILE "path = $OPT{'path'}\n";
print PACKAGEFILE "alias = /$OPT{'app'}\n";
close(PACKAGEFILE);
system("/usr/sbin/mono-xsp4-update");
print "done!\n";
}
#Remove the host directory
sub del_host() {
system("rm -Rf $confd_directory/$OPT{'app'}");
system("/usr/sbin/mono-xsp4-update");
print "done!\n";
}
sub help() {
print "This script let the user to create a application host file in one step \n";
print "for XSP4 (/etc/xsp4/conf.d/application\n\n";
print "Use:\n";
print " mono-xsp4-admin [action] --path=/real/path --app=/applicationame\n\n";
print "Where:\n";
print " action:\n";
print " add Creates an application\n";
print " del Delete an application (the directory /etc/mono-server/conf.d/application\n";
print " --path=/real/path A real and true path where you have your ASP.NET applicatio running\n";
print " --app=/application The name of the application\n";
}
&clean_opts;
&verify_neededopts;
if($OPT{'action'} eq"add") {
&add_host;
}
elsif($OPT{'action'} eq "del") {
&del_host;
}