| Category: | Console Admin |
| Author/Contact Info | Graciliano M. P. |
| Description: | This will configure the server (tested on RedHat) for a new site. It create the domain, or cname, on named, the directory and log dir for the site, enable it on apache (httpd.conf), and restart named and apache. To run just follow the prompt. |
#!/usr/local/bin/perl
##################################
# ADDSITE 1.5 #
##################################
# By: Graciliano Monteiro Passos #
# E-mail: gm@...spam_sux....... #
# URL: www.virtuasites.com.br #
# #
# Created 09/06/2000 14:51h #
# #
# Copyright 2002 Virtua Sites. #
# All rights reserved. #
##################################
########
# VARS #
########
$ip_srv = "200.168.x.x" ;
$ns_srv = domain.com' ;
$httpd_conf = '/etc/httpd/conf/httpd.conf' ;
$httpd_dir = '/home/httpd' ;
$httpd_html_dir = "$httpd_dir/html" ;
$httpd_log_dir = "$httpd_dir/logs" ;
$named_conf = '/etc/named.conf' ;
$named_dir = '/var/named' ;
########
# INIT #
########
$|=1;
print "ADD SITE 1.5\n\n";
print "Nome do site: ";
chop($name = <STDIN>);
print "Domínio do site: ";
chop($domain = <STDIN>);
$domain = "\L$domain\E" ;
if ( $name !~ /\w/ ) { $name = $domain ;}
if ( $domain !~ /^[\w-\.]+\.[\w]+$/i ) {
print "** Erro: domínio inválido! <$domain>\n";
exit ;
}
my ($domain , $domain_cname , $domain_full) = &domain_path($domain)
+;
$domain_dir = $domain ;
if ( $domain_cname !~ /^www$/i ) { $domain_dir = $domain_full ;}
print "\nDomain: $domain\n";
print "Cname: $domain_cname\n";
print "OK? " ;
my ($dm_is_ok,$dm_is_q) ;
chop($dm_is_q = <STDIN>);
$dm_is_q =~ s/\s//gs ;
if ($dm_is_q =~ /^(1|y\w*|s\w*|ok|)$/si) { $dm_is_ok = 1 ;}
while (! $dm_is_ok) {
my ($dm,$dm_cname,$dm_full) ;
my $def = (split(/\./,$domain_cname))[-1] . '.' . $domain ;
print "\nDomain ($def)? " ;
chop($dm = <STDIN>); $dm =~ s/[^\w\.]//gs ;
if ($dm eq '') { $dm = $def ;}
$def = 'www' ;
print "Cname ($def)? " ;
chop($dm_cname = <STDIN>); $dm_cname =~ s/[^\w\.]//gs ;
if ($dm_cname eq '') { $dm_cname = $def ;}
$dm_full = "$dm_cname.$dm" ;
print "Full Domain: $dm_full? " ;
chop($dm_is_q = <STDIN>) ;
$dm_is_q =~ s/\s//gs ;
if ($dm_is_q =~ /^(1|y\w*|s\w*|ok)$/si) {
$dm_is_ok = 1 ;
$domain = $dm ;
$domain_cname = $dm_cname ;
$domain_full = "$domain_cname.$domain" ;
}
}
print "\n ($domain_cname , $domain , $domain_full)\n" ;
######
# DO #
######
&make_dirs($domain_dir) ;
&add_site($domain_dir,$domain_full,$name) ;
&add_domain($domain,$domain_cname,$domain_full);
&add_httpd ($domain,$domain_full,$domain_dir) ;
&kill_hup ;
print "\nSite adicionado!\n";
print " Nome: $name\n";
print " Domínio: $domain\n";
exit;
##############
# ADD_DOMAIN #
##############
sub add_domain {
my ($domain , $domain_cname , $domain_full) = @_ ;
open (LOG,"$named_conf") ;
my $named_log = join '' , <LOG> ;
close (LOG) ;
$named_log =~ s/\n[\r \t]*#[^\n]*/\n/gs ;
if ( $named_log !~ /zone\s+["']$domain["']\s*{/i ) {
open (LOG,">>$named_conf");
print LOG "zone \"$domain\"\{\n";
print LOG " type master;\n";
print LOG " file \"named.$domain\";\n";
print LOG "\};\n";
close (LOG) ;
print " ** $named_conf: added zone\n" ;
}
my $named_var_file = "$named_dir/named.$domain" ;
if (-e $named_var_file) {
open (LOG,"$named_var_file") ;
my $named_log = join '' , <LOG> ;
close (LOG) ;
$named_log =~ s/\n[\r \t]*#[^\n]*/\n/gs ;
if ( $named_log !~ /$domain_cname\s+IN\s+CNAME\s+$domain./is ) {
open (LOG,">>$named_var_file");
if ( $named_log !~ /\r?\n$/s ) { print "\n" ;}
print LOG "$domain_cname IN CNAME $domain.\n";
close (LOG) ;
print " ** $named_var_file: CNAME $domain_cname\n" ;
}
}
else {
my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localti
+me(time);
$year += 1900 ;
$mon++ ;
if ($mon < 10) { $mon = "0$mon" ;}
if ($mday < 10) { $mday = "0$mday" ;}
my $id = '01' ;
open (LOG,">$named_var_file");
print LOG "\@ IN SOA $domain. root\@$dom
+ain. (\n";
print LOG " $year$mon$mday$id ; serial\n";
print LOG " 600 ; refresh\n";
print LOG " 450 ; retry\n";
print LOG " 37800 ; expire\n";
print LOG " 5700 ; default_ttl\n";
print LOG " )\n";
print LOG "\@ IN NS ns.$ns_srv.\n";
print LOG "\@ IN NS ns1.$ns_srv.\n";
print LOG "\@ IN NS ns2.$ns_srv.\n";
print LOG "\@ IN A $ip_srv\n";
print LOG "\@ IN MX 10 mail.$domain.\n";
print LOG "ftp IN CNAME $domain.\n";
print LOG "irc IN CNAME $domain.\n";
print LOG "pop IN CNAME $domain.\n";
print LOG "pop3 IN CNAME $domain.\n";
print LOG "smtp IN CNAME $domain.\n";
print LOG "mail IN CNAME $domain.\n";
print LOG "www IN CNAME $domain.\n";
if ( $domain_cname !~ /^www$/i ) {
print LOG "$domain_cname IN CNAME $domain.\n";
}
close (LOG) ;
print " ** $named_var_file: created!\n" ;
}
}
#############
# ADD_HTTPD #
#############
sub add_httpd {
my ( $domain , $domain_full , $domain_dir) = @_ ;
open (LOG,"$httpd_conf") ;
my $httpd_log = join '' , <LOG> ;
close (LOG) ;
$httpd_log =~ s/\n[\r \t]*#[^\n]*/\n/gs ;
if ( $httpd_log !~ /<VirtualHost\s+$domain_full>/is ) {
open (LOG,">>$httpd_conf");
print LOG "\n\n<VirtualHost $domain_full> \n";
print LOG " ServerName $domain_full\n";
print LOG " ServerAdmin webmaster\@$domain\n";
print LOG " NameVirtualHost $ip_srv\n";
print LOG " ServerName $domain_full\n";
print LOG " DocumentRoot $httpd_html_dir/$domain_dir/\n";
print LOG " ErrorLog $httpd_log_dir/$domain_dir/error.log\n
+";
print LOG " RefererLog $httpd_log_dir/$domain_dir/referer.l
+og\n";
print LOG " TransferLog $httpd_log_dir/$domain_dir/transfer
+.log\n";
print LOG " AgentLog $httpd_log_dir/$domain_dir/agent.log\n
+";
print LOG " ScriptAlias /cgi-bin $httpd_html_dir/$domain_di
+r/cgi-bin/\n";
print LOG " Options ExecCgi\n";
print LOG "</VirtualHost>\n";
close (LOG) ;
print " ** $httpd_conf: added <VirtualHost $domain_full>!\n" ;
}
}
############
# ADD_SITE #
############
sub add_site {
my ( $domain_dir , $domain_full , $name ) = @_ ;
open (LOG,"$httpd_html_dir/$ns_srv/index.htm");
my @index_log = <LOG> ;
close (LOG) ;
open (LOG,">$httpd_html_dir/$ns_srv/index.htm");
foreach my $index_log_i ( @index_log ) {
if ($index_log_i =~ "<!-- SITES END -->") {
print LOG " <a href=\"http://$domain_full\">$name </a><BR><B
+R>\n";
}
print LOG "$index_log_i";
}
close (LOG) ;
print " ** $httpd_html_dir/$ns_srv/index.htm: Link added!\n" ;
my $index_fl = "$httpd_html_dir/$domain_dir/index.htm" ;
if (! -e $index_fl) {
open (LOG,">$index_fl");
print LOG "<html>\n";
print LOG "<head>\n";
print LOG "<title>$name</title>\n";
print LOG "</head>\n";
print LOG "<body>\n";
print LOG "<p align=\"center\"> </p>\n";
print LOG "<p align=\"center\"><font face=\"Arial\" size=\"6\">$na
+me</font></p>\n";
print LOG "</body>\n";
print LOG "</html>\n";
close (LOG) ;
print " ** $index_fl: index created!\n" ;
}
}
############
# KILL_HUP #
############
sub kill_hup {
open (CMD,"|killall -HUP named"); close (CMD) ;
open (CMD,"|killall -HUP httpd"); close (CMD) ;
print " ** HUP!\n" ;
}
#############
# MAKE_DIRS #
#############
sub make_dirs {
my ( $domain_dir ) = @_ ;
$dir_path = "$httpd_html_dir/$domain_dir" ;
$log_path = "$httpd_log_dir/$domain_dir" ;
mkdir($dir_path , 0755) if (! -e $dir_path) ;
mkdir($log_path , 0755) if (! -e $log_path) ;
print " ** $dir_path: dir created!\n" ;
print " ** $log_path: dir created!\n" ;
}
###############
# DOMAIN_PATH #
###############
sub domain_path {
my ( $domain ) = @_ ;
$domain = "\L$domain\E" ;
$domain =~ s/^\s+//g ;
$domain =~ s/\s+$//g ;
my $countrys = ' af al dz as ad ao ai aq ag ar am aw au at az bs bh
+bd bb by be bz bj bm bt bo ba bw bv br io bn bg bf bi kh cm ca cv ky
+cf td cl cn cx cc co km cg cd ck cr ci hr cu cy cz dk dj dm do tp ec
+eg sv gq er ee et fk fo fj fi fr fx gf pf tf ga gm ge de gh gi gr gl
+gd gp gu gt gn gw gy ht hm va hn hk hu is in id ir iq ie il it jm jp
+jo kz ke ki kp kr kw kg la lv lb ls lr ly li lt lu mo mk mg mw my mv
+ml mt mh mq mr mu yt mx fm md mc mn ms ma mz mm na nr np nl an nc nz
+ni ne ng nu nf mp no om pk pw pa pg py pe ph pn pl pt pr qa re ro ru
+rw kn lc vc ws sm st sa sn sc sl sg sk si sb so za gs es lk sh pm sd
+sr sj sz se ch sy tw tj tz th tg tk to tt tn tr tm tc tv ug uk ae gb
+us um uy uz vu ve vn vg vi wf eh ye yu zm zw ' ;
my $sufixs = ' com net org mil gov edu co ' ;
my @subs = split(/\./ , $domain) ;
my ($domain_base,$domain_cname) ;
if ( $#subs < 1) {
$domain_base = $domain ;
$domain_cname = "www" ;
}
elsif ( $countrys =~ / $subs[-1] /i ) {
if ( $sufixs =~ / $subs[-2] / ) {
$domain_base = join (".", @subs[($#subs-2)..$#subs]) ;
$domain_cname = join (".", @subs[0..($#subs-3)]) ;
if (@subs[0] !~ /^www$/i && $#subs <= 2) { $domain_cname = "www"
+ ;}
}
else {
$domain_base = join (".", @subs[($#subs-1)..$#subs]) ;
$domain_cname = join (".", @subs[0..($#subs-2)]) ;
if ( @subs[0] !~ /^www$/i && $#subs <= 1 ) { $domain_cname = "ww
+w" ;}
}
}
else {
$domain_base = join (".", @subs[($#subs-1)..$#subs]) ;
$domain_cname = join (".", @subs[0..($#subs-2)]) ;
if ( @subs[0] !~ /^www$/i && $#subs <= 1 ) { $domain_cname = "www"
+ ;}
}
my $domain_full = "$domain_cname.$domain_base" ;
if ( wantarray ) { return( $domain_base , $domain_cname , $domain_fu
+ll ) ;}
else { return( $domain_full ) ;}
}
#######
# END #
#######
# Send your feedback! # # "The creativity is the expression of the liberty". |
|
|
|---|