Changeset 2359 for branches/domain-disable
- Timestamp:
- 12/12/09 00:14:45 (2 years ago)
- Location:
- branches/domain-disable
- Files:
-
- 9 added
- 3 edited
-
CHANGELOG (modified) (1 diff)
-
engine/ispcp-dmn-mngr (modified) (13 diffs)
-
gui/Makefile (modified) (1 diff)
-
gui/domain_disable_page (added)
-
gui/domain_disable_page/images (added)
-
gui/domain_disable_page/images/top_bg.jpg (added)
-
gui/domain_disable_page/images/top_left.jpg (added)
-
gui/domain_disable_page/images/top_left_bg.jpg (added)
-
gui/domain_disable_page/images/top_right.jpg (added)
-
gui/domain_disable_page/images/valid_css.jpg (added)
-
gui/domain_disable_page/images/valid_xhtml.jpg (added)
-
gui/domain_disable_page/index.html (added)
Legend:
- Unmodified
- Added
- Removed
-
branches/domain-disable/CHANGELOG
r2352 r2359 1 ispCP ω 1. 0.3Changelog1 ispCP ω 1.1.0 Changelog 2 2 ~~~~~~~~~~~~~~~~~~~~~~~~~~ 3 4 2009-12-12 Benedikt Heintel 5 - ENGINE: 6 * Fixed #266: Default 404 page when disable domain 3 7 4 8 2009-12-11 Laurent Declercq -
branches/domain-disable/engine/ispcp-dmn-mngr
r2340 r2359 1 1 #!/usr/bin/perl 2 2 3 # ispCP ω(OMEGA) a Virtual Hosting Control Panel3 # ispCP . (OMEGA) a Virtual Hosting Control Panel 4 4 # Copyright (C) 2001-2006 by moleSoftware GmbH - http://www.molesoftware.com 5 5 # Copyright (C) 2006-2009 by isp Control Panel - http://ispcp.net … … 25 25 # isp Control Panel. All Rights Reserved. 26 26 # 27 # The ispCP ωHome Page is:27 # The ispCP . Home Page is: 28 28 # 29 29 # http://isp-control.net … … 94 94 ## 95 95 sub dmn_add_named_cfg_data { 96 97 push_el(\@main::el, 'dmn_add_named_cfg_data()', 'Starting...');98 99 my ($data) = @_;100 101 my ($rs, $rdata, $cmd, $working) = (undef, undef, undef, undef);102 103 if (!defined($data) || $data eq '')104 {105 push_el(\@main::el, 'dmn_add_named_cfg_data()', 'FATAL: Undefined Input Data...');106 return -1;107 }108 109 # Domain name110 my $zone_name = @$data[1];111 112 # Directories paths113 my $cfg_dir = "$main::cfg{'CONF_DIR'}/bind";114 my $tpl_dir = "$cfg_dir/parts";115 my $bkp_dir = "$cfg_dir/backup";116 my $wrk_dir = "$cfg_dir/working";117 118 #119 ## Loading all needed templates from (eg. /etc/ispcp/bind/parts/) - Begin120 #121 122 my ($dta_b, $dta_e, $entry_b, $entry_e, $entry) = ('', '', '', '', '');123 124 (125 $rs,126 $dta_b,127 $dta_e,128 $entry_b,129 $entry_e,130 $entry131 ) = get_tpl(132 $tpl_dir,133 'cfg_dta_b.tpl',134 'cfg_dta_e.tpl',135 'cfg_entry_b.tpl',136 'cfg_entry_e.tpl',137 'cfg_entry.tpl'138 );139 return $rs if ($rs != 0);140 141 #142 ## Loading all needed template from (eg. /etc/ispcp/bind/parts/) - End143 #144 145 #146 ## Let's construct needed tags and entries - Begin147 #148 149 # Tags150 my %tag_hash = (151 '{DMN_NAME}' => $zone_name,152 '{DB_DIR}' => $main::cfg{'BIND_DB_DIR'}153 );154 155 # Entries156 my ($entry_b_val, $entry_e_val, $entry_val) = ('', '', '');157 158 (159 $rs,160 $entry_b_val,161 $entry_e_val,162 $entry_val163 ) = prep_tpl(164 \%tag_hash,165 $entry_b,166 $entry_e,167 $entry168 );169 return $rs if ($rs != 0);170 171 #172 ## Let's construct needed tags and entries - End173 #174 175 # Loading the working file from (eg. /etc/ispcp/bind/working/)176 ($rs, $working) = get_file("$wrk_dir/named.conf");177 return $rs if ($rs != 0);178 179 # Check the validity of the working file180 ($rs, $rdata) = get_tag($dta_b, $dta_e, $working);181 return $rs if ($rs != 0);182 183 #184 ## If the new entry already exists, remove it - Begin185 #186 187 # Check if the new entry already exists in the current working file188 ($rs, $rdata) = get_tag($entry_b_val, $entry_e_val, $working);189 190 # If the entry exists, remove it !191 if ($rs == 0)192 {193 ($rs, $working) = del_tag($entry_b_val, "$entry_e_val\n", $working);194 return $rs if ($rs != 0);195 }196 197 #198 ## If the new entry already exists, remove it - End199 #200 201 # Check the validity of the working file202 ($rs, $rdata) = get_tag($entry_b, $entry_e, $working);203 return $rs if ($rs != 0);204 205 #206 ## Saving the current production file if it exist - Begin207 #208 209 if(-e $main::cfg{'BIND_CONF_FILE'})210 {211 my $timestamp = time;212 213 my $cmd = "$main::cfg{'CMD_CP'} -p $main::cfg{'BIND_CONF_FILE'} $bkp_dir/named.conf.$timestamp";214 $rs = sys_command($cmd);215 return $rs if ($rs != 0);216 }217 218 #219 ## Saving the current production file if it exist - End220 #221 222 #223 ## Building, storage and installation of the new file - Begin224 #225 226 # Let's construct the replacement and do it227 my $entry_repl = "$entry_b_val$entry_val$entry_e_val\n$entry_b$entry_e";228 229 # Building the new file230 ($rs, $working) = repl_tag($entry_b, $entry_e, $working, $entry_repl, "dmn_add_named_cfg_data");231 return $rs if ($rs != 0);232 233 # Store the new file in working directory234 $rs = store_file(235 "$wrk_dir/named.conf",236 $working,237 $main::cfg{'ROOT_USER'},238 $main::cfg{'ROOT_GROUP'},239 0644240 );241 return $rs if ($rs != 0);242 243 # Install the new file in production directory244 $cmd = "$main::cfg{'CMD_CP'} -pf $wrk_dir/named.conf $main::cfg{'BIND_CONF_FILE'}";245 $rs = sys_command($cmd);246 return $rs if ($rs != 0);247 248 #249 ## Building, storage and installation of the new file - End250 #251 252 push_el(\@main::el, 'dmn_add_named_cfg_data()', 'Ending...');253 254 0;255 }256 257 ################################################################################258 ##259 ## Delete DNS CFG Data260 ##261 sub dmn_del_named_cfg_data {262 96 my ($dmn_data) = @_; 263 97 my ($rs, $rdata) = (undef, undef); 264 98 265 push_el(\@main::el, 'dmn_ del_named_cfg_data()', 'Starting...');266 if (!defined($dmn_data) || $dmn_data eq '') { 267 push_el(\@main::el, 'dmn_ del_named_cfg_data()', 'ERROR: Undefined Input Data...');99 push_el(\@main::el, 'dmn_add_named_cfg_data()', 'Starting...'); 100 if (!defined($dmn_data) || $dmn_data eq '') { 101 push_el(\@main::el, 'dmn_add_named_cfg_data()', 'ERROR: Undefined Input Data...'); 268 102 return -1; 269 103 } … … 326 160 327 161 # 162 # Let's get System and Working config files; 163 # 164 my ($sys, $working) = ('', ''); 165 166 ($rs, $sys) = get_file($sys_cfg); 167 return $rs if ($rs != 0); 168 169 ($rs, $working) = get_file($working_cfg); 170 return $rs if ($rs != 0); 171 172 ($rs, $rdata) = get_tag($dta_b, $dta_e, $working); 173 return $rs if ($rs != 0); 174 175 # 176 # Does the new domain entry exists ? 177 # 178 ($rs, $rdata) = get_tag($entry_b_val, $entry_e_val, $working); 179 if ($rs == 0) { 180 # Yes it exists ! Then we must delete it ! 181 ($rs, $working) = del_tag($entry_b_val, "$entry_e_val\n", $working); 182 return $rs if ($rs != 0); 183 } 184 ($rs, $rdata) = get_tag($entry_b, $entry_e, $working); 185 return $rs if ($rs != 0); 186 187 # 188 # Let's construct the replacement and do it; 189 # 190 my $entry_repl = "$entry_b_val$entry_val$entry_e_val\n$entry_b$entry_e"; 191 ($rs, $working) = repl_tag($entry_b, $entry_e, $working, $entry_repl, "dmn_add_named_cfg_data"); 192 return $rs if ($rs != 0); 193 194 # 195 # Here we'll backup production config file; 196 # 197 $rs = sys_command("$main::cfg{'CMD_CP'} -p $sys_cfg $backup_cfg"); 198 return $rs if ($rs != 0); 199 200 # 201 # Let's save working copy; 202 # 203 $rs = store_file($working_cfg, $working, $main::cfg{'ROOT_USER'}, $main::cfg{'ROOT_GROUP'}, 0644); 204 return $rs if ($rs != 0); 205 206 # 207 # Here we'll replace data in production config file with data in working 208 # confing file. A little workaround will be done. If working copy data does not exist 209 # in production config then we will add it; 210 # 211 ($rs, $rdata) = get_tag($dta_b, $dta_e, $sys); 212 if ($rs == 0) { # YES ! Data is here ! /in production config file/; 213 ($rs, $sys) = repl_tag($dta_b, $dta_e, $sys, $working, "dmn_add_named_cfg_data"); 214 return $rs if ($rs != 0); 215 } elsif ($rs == -5) { 216 $sys .= $working; 217 } else { 218 return $rs; 219 } 220 $rs = store_file($sys_cfg, $sys, $main::cfg{'ROOT_USER'}, $main::cfg{'ROOT_GROUP'}, 0644); 221 return $rs if ($rs != 0); 222 223 push_el(\@main::el, 'dmn_add_named_cfg_data()', 'Ending...'); 224 return 0; 225 } 226 227 ################################################################################ 228 ## 229 ## Delete DNS CFG Data 230 ## 231 sub dmn_del_named_cfg_data { 232 my ($dmn_data) = @_; 233 my ($rs, $rdata) = (undef, undef); 234 235 push_el(\@main::el, 'dmn_del_named_cfg_data()', 'Starting...'); 236 if (!defined($dmn_data) || $dmn_data eq '') { 237 push_el(\@main::el, 'dmn_del_named_cfg_data()', 'ERROR: Undefined Input Data...'); 238 return -1; 239 } 240 241 # 242 # Initial data we need; 243 # 244 my $dmn_name = @$dmn_data[1]; 245 my $conf_dir = $main::cfg{'CONF_DIR'}; 246 my $sys_cfg = $main::cfg{'BIND_CONF_FILE'}; 247 my $named_db_dir = $main::cfg{'BIND_DB_DIR'}; 248 my $tpl_dir = "$conf_dir/bind/parts"; 249 my $backup_dir = "$conf_dir/bind/backup"; 250 my $working_dir = "$conf_dir/bind/working"; 251 my $timestamp = time; 252 my $backup_cfg = "$backup_dir/named.conf.$timestamp"; 253 my $working_cfg = "$working_dir/named.conf"; 254 255 # 256 # BEGIN/END tags, and templates needed for this config; 257 # 258 my ($dta_b, $dta_e, $entry_b, $entry_e, $entry) = ('', '', '', '', ''); 259 ( 260 $rs, 261 $dta_b, 262 $dta_e, 263 $entry_b, 264 $entry_e, 265 $entry 266 ) = get_tpl( 267 $tpl_dir, 268 'cfg_dta_b.tpl', 269 'cfg_dta_e.tpl', 270 'cfg_entry_b.tpl', 271 'cfg_entry_e.tpl', 272 'cfg_entry.tpl' 273 ); 274 return $rs if ($rs != 0); 275 276 # 277 # Let's construct needed tags and entries; 278 # 279 my %tag_hash = ( 280 '{DMN_NAME}' => $dmn_name, 281 '{DB_DIR}' => $named_db_dir 282 ); 283 my ($entry_b_val, $entry_e_val, $entry_val) = ('', '', ''); 284 ( 285 $rs, 286 $entry_b_val, 287 $entry_e_val, 288 $entry_val 289 ) = prep_tpl( 290 \%tag_hash, 291 $entry_b, 292 $entry_e, 293 $entry 294 ); 295 return $rs if ($rs != 0); 296 297 # 328 298 # Let's get Sytem and Working config files; 329 299 # … … 441 411 'db_dns2_b.tpl', 442 412 'db_dns2_e.tpl', 443 'db_dns_entry_b.tpl',444 'db_dns_entry_e.tpl',413 'db_dns_entry_b.tpl', 414 'db_dns_entry_e.tpl', 445 415 'db_dns_entry.tpl', 446 416 'db_time_b.tpl', … … 1471 1441 my $starter_dir = $main::cfg{'PHP_STARTER_DIR'}; 1472 1442 my $conf_dir = $main::cfg{'CONF_DIR'}; 1443 my $httpd_uid = $main::cfg{'APACHE_USER'}; 1473 1444 my $httpd_gid = $main::cfg{'APACHE_GROUP'}; 1474 1445 my ($sys_uid, $sys_gid) = get_dmn_suexec_user($dmn_id); … … 1641 1612 # Default domain page template; 1642 1613 # 1643 # check if htdocs folder not exists1614 # check if htdocs folder does not exist 1644 1615 if (!(-e "$www_dir/$dmn_name/htdocs/")) { 1645 1616 $rs = make_dir( … … 1691 1662 } 1692 1663 } 1693 1664 1665 # Default disable page template; 1666 # 1667 # check if disable folder does not exist 1668 if (!(-e "$www_dir/$dmn_name/disabled")) { 1669 $rs = make_dir( 1670 "$www_dir/$dmn_name/disabled", 1671 $httpd_uid, 1672 $httpd_gid, 1673 0755 1674 ); 1675 return $rs if ($rs != 0); 1676 1677 my ($index_tpl, $err_cfg_dir) = (undef, undef); 1678 my $vhost = $main::cfg{'BASE_SERVER_VHOST'}; 1679 $err_cfg_dir = "$main::cfg{'GUI_ROOT_DIR'}/domain_disable_page"; 1680 ($rs, $index_tpl) = get_tpl($err_cfg_dir, 'index.html'); 1681 return $rs if ($rs != 0); 1682 1683 my $decoded_dmn_name = idn_to_unicode($dmn_name, 'utf-8'); 1684 my %tag_hash = ( 1685 '{DOMAIN_NAME}' => $decoded_dmn_name, 1686 '{BASE_SERVER_VHOST}' => $vhost 1687 ); 1688 ($rs, $cfg) = prep_tpl(\%tag_hash, $index_tpl); 1689 return $rs if ($rs != 0); 1690 1691 ($rs, $rdata) = store_file( 1692 "$www_dir/$dmn_name/disabled/index.html", 1693 $cfg, 1694 $httpd_uid, 1695 $httpd_gid, 1696 0644 1697 ); 1698 return $rs if ($rs != 0); 1699 1700 $rs = sys_command("$main::cfg{'CMD_CP'} -Rp $root_dir/gui/domain_disable_page/images $www_dir/$dmn_name/disabled/"); 1701 return $rs if ($rs != 0); 1702 1703 $rs = setfmode("$www_dir/$dmn_name/disabled/images", $httpd_uid, $httpd_gid, 0755); 1704 return $rs if ($rs != 0); 1705 1706 opendir(DIR, "$www_dir/$dmn_name/htdocs/images/"); 1707 my @files = readdir(DIR); 1708 closedir(DIR); 1709 1710 foreach (@files) { 1711 # ignore . and .. : 1712 next if ($_ eq "." || $_ eq ".."); 1713 $rs = setfmode("$www_dir/$dmn_name/disabled/images/$_", $httpd_uid, $httpd_gid, 0644); 1714 return $rs if ($rs != 0); 1715 } 1716 } 1717 1694 1718 # 1695 1719 # php.ini for the new domain … … 1744 1768 return $rs if ($rs != 0); 1745 1769 } 1770 1746 1771 # 1747 1772 # php-fcgi-starters for every domain … … 2020 2045 if ( -e "$www_dir/$dmn_name" ) { 2021 2046 ($rs, $rdata) = del_dir("$www_dir/$dmn_name"); 2022 } elsif ( -e "$www_dir/$dmn_name.disabled" ) {2047 } elsif ( -e "$www_dir/$dmn_name.disabled" ) { 2023 2048 ($rs, $rdata) = del_dir("$www_dir/$dmn_name.disabled"); 2024 2049 } … … 3730 3755 } 3731 3756 3732 my $dmn_name = @$dmn_data[1]; 3733 my $www_dir = $main::cfg{'APACHE_WWW_DIR'}; 3734 my $dmn_dir = "$www_dir/$dmn_name"; 3735 my $dmn_disabled_dir = "$www_dir/$dmn_name.disabled"; 3736 my $cmd_rm = $main::cfg{'CMD_RM'}; 3737 my $cmd_mv = $main::cfg{'CMD_MV'}; 3738 my ($cmd, $rs) = (undef, undef); 3739 3740 # delete target folder if exists 3741 # this can happen because subdomains created empty access logs 3742 if (-e $dmn_dir) { 3743 $cmd = "$cmd_rm -r $dmn_dir"; 3744 $rs = sys_command($cmd); 3745 return $rs if ($rs != 0); 3746 } 3747 3748 $cmd = "$cmd_mv $dmn_disabled_dir $dmn_dir"; 3749 $rs = sys_command($cmd); 3757 my ($rs, $rdata) = ('', ''); 3758 my $dmn_name = @$dmn_data[1]; 3759 my $www_dir = $main::cfg{'APACHE_WWW_DIR'}; 3760 my $dmn_dir = "$www_dir/$dmn_name/htdocs"; 3761 my $dmn_disabled_dir = "$www_dir/$dmn_name/htdocs.disabled"; 3762 my $dmn_disabled_content_dir = "$www_dir/$dmn_name/disabled"; 3763 my $cmd_mv = $main::cfg{'CMD_MV'}; 3764 my $cmd_di = "$cmd_mv $dmn_dir $dmn_disabled_content_dir"; 3765 my $cmd_ht = "$cmd_mv $dmn_disabled_dir $dmn_dir"; 3766 3767 $rs = sys_command($cmd_di); 3768 return $rs if ($rs != 0); 3769 3770 $rs = sys_command($cmd_ht); 3750 3771 return $rs if ($rs != 0); 3751 3772 … … 3766 3787 } 3767 3788 3768 my ($rs, $rdata) = ('', ''); 3769 my $dmn_name = @$dmn_data[1]; 3770 my $www_dir = $main::cfg{'APACHE_WWW_DIR'}; 3771 my $dmn_dir = "$www_dir/$dmn_name"; 3772 my $dmn_disabled_dir = "$www_dir/$dmn_name.disabled"; 3773 my $cmd_mv = $main::cfg{'CMD_MV'}; 3774 my $cmd = "$cmd_mv $dmn_dir $dmn_disabled_dir"; 3775 3776 $rs = sys_command($cmd); 3789 my ($rs, $rdata) = ('', ''); 3790 my $dmn_name = @$dmn_data[1]; 3791 my $www_dir = $main::cfg{'APACHE_WWW_DIR'}; 3792 my $dmn_dir = "$www_dir/$dmn_name/htdocs"; 3793 my $dmn_disabled_dir = "$www_dir/$dmn_name/htdocs.disabled"; 3794 my $dmn_disabled_content_dir = "$www_dir/$dmn_name/disabled"; 3795 my $cmd_mv = $main::cfg{'CMD_MV'}; 3796 my $cmd_ht = "$cmd_mv $dmn_dir $dmn_disabled_dir"; 3797 my $cmd_di = "$cmd_mv $dmn_disabled_content_dir $dmn_dir"; 3798 3799 $rs = sys_command($cmd_ht); 3800 return $rs if ($rs != 0); 3801 3802 $rs = sys_command($cmd_di); 3777 3803 return $rs if ($rs != 0); 3778 3804 … … 3919 3945 } 3920 3946 exit 0; 3947 -
branches/domain-disable/gui/Makefile
r2131 r2359 50 50 51 51 cp -dR ./domain_default_page $(SYSTEM_GUI_ROOT) 52 cp -dR ./domain_disable_page $(SYSTEM_GUI_ROOT) 52 53 cp -dR ./errordocs $(SYSTEM_GUI_ROOT) 53 54 cp -dR ./themes $(SYSTEM_GUI_ROOT)
Note: See TracChangeset
for help on using the changeset viewer.
