#!/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\">&nbsp;</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

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • 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:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.