#!/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".
In reply to ADDSITE
by gmpassos
Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
Read Where should I post X? if you're not absolutely sure you're posting in the right place.
Please read these before you post! —
Posts may use any of the Perl Monks Approved HTML tags:
- a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
| |
For: |
|
Use: |
| & | | & |
| < | | < |
| > | | > |
| [ | | [ |
| ] | | ] |
Link using PerlMonks shortcuts! What shortcuts can I use for linking?
See Writeup Formatting Tips and other pages linked from there for more info.