Ticket #1998: php.patch
| File php.patch, 21.2 KB (added by JCD <frasch@…>, 3 years ago) |
|---|
-
gui/client/domains_manage.php
136 136 } 137 137 } 138 138 139 function gen_user_sub_forward($sub_id, $sub_status, $url_forward, $dmn_type) { 140 if ($url_forward === 'no') { 141 if ($sub_status === 'ok') { 142 return array("-", "subdomain_edit.php?edit_id=" . $sub_id . "&dmn_type=" . $dmn_type, tr("Edit")); 143 } else if ($sub_status === 'ordered') { 144 return array("-", "#", tr("N/A")); 145 } else { 146 return array(tr("N/A"), "#", tr("N/A")); 147 } 148 } else { 149 if ($sub_status === 'ok') { 150 return array($url_forward, "subdomain_edit.php?edit_id=" . $sub_id . "&dmn_type=" . $dmn_type, tr("Edit")); 151 } else if ($sub_status === 'ordered') { 152 return array($url_forward, "#", tr("N/A")); 153 } else { 154 return array(tr("N/A"), "#", tr("N/A")); 155 } 156 } 157 } 158 139 159 function gen_user_sub_list(&$tpl, &$sql, $user_id) { 140 160 $domain_id = get_user_domain_id($sql, $user_id); 141 161 … … 144 164 `subdomain_id`, 145 165 `subdomain_name`, 146 166 `subdomain_mount`, 167 `subdomain_url_forward`, 147 168 `subdomain_status`, 148 169 `domain_name` 149 170 FROM … … 161 182 `subdomain_alias_id`, 162 183 `subdomain_alias_name`, 163 184 `subdomain_alias_mount`, 185 `subdomain_alias_url_forward`, 164 186 `subdomain_alias_status`, 165 187 `alias_name` 166 188 FROM … … 185 207 $tpl->assign('ITEM_CLASS', ($counter % 2 == 0) ? 'content' : 'content2'); 186 208 187 209 list($sub_action, $sub_action_script) = gen_user_sub_action($rs->fields['subdomain_id'], $rs->fields['subdomain_status']); 210 list($sub_forward, $sub_edit_link, $sub_edit) = gen_user_sub_forward($rs->fields['subdomain_id'], $rs->fields['subdomain_status'], $rs->fields['subdomain_url_forward'], 'dmn'); 188 211 $sbd_name = decode_idna($rs->fields['subdomain_name']); 212 $sub_forward = decode_idna($sub_forward); 189 213 $tpl->assign( 190 214 array( 191 215 'SUB_NAME' => $sbd_name, 192 216 'SUB_ALIAS_NAME' => $rs->fields['domain_name'], 193 217 'SUB_MOUNT' => $rs->fields['subdomain_mount'], 218 'SUB_FORWARD' => $sub_forward, 194 219 'SUB_STATUS' => translate_dmn_status($rs->fields['subdomain_status']), 220 'SUB_EDIT_LINK' => $sub_edit_link, 221 'SUB_EDIT' => $sub_edit, 195 222 'SUB_ACTION' => $sub_action, 196 223 'SUB_ACTION_SCRIPT' => $sub_action_script 197 224 ) … … 204 231 $tpl->assign('ITEM_CLASS', ($counter % 2 == 0) ? 'content' : 'content2'); 205 232 206 233 list($sub_action, $sub_action_script) = gen_user_alssub_action($rs2->fields['subdomain_alias_id'], $rs2->fields['subdomain_alias_status']); 234 list($sub_forward, $sub_edit_link, $sub_edit) = gen_user_sub_forward($rs2->fields['subdomain_alias_id'], $rs2->fields['subdomain_alias_status'], $rs2->fields['subdomain_alias_url_forward'], 'als'); 207 235 $sbd_name = decode_idna($rs2->fields['subdomain_alias_name']); 236 $sub_forward = decode_idna($sub_forward); 208 237 $tpl->assign( 209 238 array( 210 239 'SUB_NAME' => $sbd_name, 211 240 'SUB_ALIAS_NAME' => $rs2->fields['alias_name'], 212 241 'SUB_MOUNT' => $rs2->fields['subdomain_alias_mount'], 242 'SUB_FORWARD' => $sub_forward, 213 243 'SUB_STATUS' => translate_dmn_status($rs2->fields['subdomain_alias_status']), 244 'SUB_EDIT_LINK' => $sub_edit_link, 245 'SUB_EDIT' => $sub_edit, 214 246 'SUB_ACTION' => $sub_action, 215 247 'SUB_ACTION_SCRIPT' => $sub_action_script 216 248 ) -
gui/client/subdomain_add.php
85 85 $tpl->assign( 86 86 array( 87 87 'SUBDOMAIN_NAME' => clean_input($_POST['subdomain_name']), 88 'SUBDOMAIN_MOUNT_POINT' => clean_input($_POST['subdomain_mnt_pt']) 88 'SUBDOMAIN_MOUNT_POINT' => clean_input($_POST['subdomain_mnt_pt']), 89 'FORWARD' => clean_input($_POST['forward']) 89 90 ) 90 91 ); 91 92 } else { 92 93 $tpl->assign( 93 94 array( 94 95 'SUBDOMAIN_NAME' => '', 95 'SUBDOMAIN_MOUNT_POINT' => '' 96 'SUBDOMAIN_MOUNT_POINT' => '', 97 'FORWARD' => 'no' 96 98 ) 97 99 ); 98 100 } … … 268 270 return false; 269 271 } 270 272 271 function subdomain_schedule(&$sql, $user_id, $domain_id, $sub_name, $sub_mnt_pt ) {273 function subdomain_schedule(&$sql, $user_id, $domain_id, $sub_name, $sub_mnt_pt, $forward) { 272 274 $status_add = Config::get('ITEM_ADD_STATUS'); 273 275 274 276 if ($_POST['dmn_type'] == 'als') { … … 278 280 (`alias_id`, 279 281 `subdomain_alias_name`, 280 282 `subdomain_alias_mount`, 283 `subdomain_alias_url_forward`, 281 284 `subdomain_alias_status`) 282 285 VALUES 283 (?, ?, ?, ? )286 (?, ?, ?, ?, ?) 284 287 "; 285 288 } else { 286 289 $query = " … … 289 292 (`domain_id`, 290 293 `subdomain_name`, 291 294 `subdomain_mount`, 295 `subdomain_url_forward`, 292 296 `subdomain_status`) 293 297 VALUES 294 (?, ?, ?, ? )298 (?, ?, ?, ?, ?) 295 299 "; 296 300 } 297 301 298 $rs = exec_query($sql, $query, array($domain_id, $sub_name, $sub_mnt_pt, $ status_add));302 $rs = exec_query($sql, $query, array($domain_id, $sub_name, $sub_mnt_pt, $forward, $status_add)); 299 303 300 304 update_reseller_c_props(get_reseller_id($domain_id)); 301 305 … … 308 312 send_request(); 309 313 } 310 314 311 function check_subdomain_data(&$tpl, &$sql, $user_id, $dmn_name) {315 function check_subdomain_data(&$tpl, &$sql, &$err_sub, $user_id, $dmn_name) { 312 316 $dmn_id = $domain_id = get_user_domain_id($sql, $user_id); 313 317 314 318 if (isset($_POST['uaction']) && $_POST['uaction'] === 'add_subd') { 315 319 if (empty($_POST['subdomain_name'])) { 316 set_page_message(tr('Please specify subdomain name!'));320 $err_sub = tr('Please specify subdomain name!'); 317 321 return; 318 322 } 319 323 320 324 $sub_name = strtolower($_POST['subdomain_name']); 321 325 $sub_name = encode_idna($sub_name); 326 $forward = strtolower(clean_input($_POST['forward'])); 322 327 323 328 if (isset($_POST['subdomain_mnt_pt']) && $_POST['subdomain_mnt_pt'] !== '') { 324 329 $sub_mnt_pt = strtolower($_POST['subdomain_mnt_pt']); … … 329 334 330 335 if ($_POST['dmn_type'] === 'als') { 331 336 if (!isset($_POST['als_id'])) { 332 set_page_message(tr('No valid alias domain selected!'));337 $err_sub = tr('No valid alias domain selected!'); 333 338 return; 334 339 } 335 340 $query_alias = " … … 351 356 } 352 357 353 358 if (subdmn_exists($sql, $user_id, $domain_id, $sub_name)) { 354 set_page_message(tr('Subdomain already exists or is not allowed!'));359 $err_sub = tr('Subdomain already exists or is not allowed!'); 355 360 } else if (!chk_subdname($sub_name . "." . $dmn_name)) { 356 set_page_message(tr('Wrong subdomain syntax!'));361 $err_sub = tr('Wrong subdomain syntax!'); 357 362 } else if (mount_point_exists($dmn_id, array_decode_idna($sub_mnt_pt, true))) { 358 set_page_message(tr('Mount point already in use!'));363 $err_sub = tr('Mount point already in use!'); 359 364 } else if (!chk_mountp($sub_mnt_pt)) { 360 set_page_message(tr('Incorrect mount point syntax')); 365 $err_sub = tr('Incorrect mount point syntax'); 366 } else if ($forward != 'no') { 367 if (!chk_forward_url($forward)) { 368 $err_sub = tr("Incorrect forward syntax"); 369 } 370 /* TODO: Adding a trailing slash is under discussion: see http://www.isp-control.net/ispcp/ticket/1979 371 if (!preg_match("/\/$/", $forward) && !preg_match("/\?/", $forward)) { 372 $forward .= "/"; 373 }*/ 361 374 } else { 362 375 // now let's fix the mountpoint 363 376 $sub_mnt_pt = array_decode_idna($sub_mnt_pt, true); 377 } 364 378 365 subdomain_schedule($sql, $user_id, $domain_id, $sub_name, $sub_mnt_pt); 379 if ('_off_' !== $err_sub) { 380 return; 381 } 382 subdomain_schedule($sql, $user_id, $domain_id, $sub_name, $sub_mnt_pt, $forward); 366 383 set_page_message(tr('Subdomain scheduled for addition!')); 367 384 user_goto('domains_manage.php'); 368 385 } 369 }370 386 } 371 387 372 388 // common page data. … … 391 407 392 408 $dmn_name = check_subdomain_permissions($sql, $_SESSION['user_id']); 393 409 gen_user_add_subdomain_data($tpl, $sql, $_SESSION['user_id']); 394 check_subdomain_data($tpl, $sql, $_SESSION['user_id'], $dmn_name); 410 411 $err_txt = '_off_'; 412 check_subdomain_data($tpl, $sql, $err_txt, $_SESSION['user_id'], $dmn_name); 395 413 396 414 // static page messages. 397 415 … … 408 426 'TR_SUBDOMAIN_DATA' => tr('Subdomain data'), 409 427 'TR_SUBDOMAIN_NAME' => tr('Subdomain name'), 410 428 'TR_DIR_TREE_SUBDOMAIN_MOUNT_POINT' => tr('Directory tree mount point'), 429 'TR_FORWARD' => tr('Forward to URL'), 411 430 'TR_ADD' => tr('Add'), 412 431 'TR_DMN_HELP' => tr("You do not need 'www.' ispCP will add it on its own.") 413 432 ) 414 433 ); 415 434 416 gen_page_message($tpl); 435 function gen_page_msg(&$tpl, $erro_txt) { 436 437 if ($erro_txt != '_off_') { 438 $tpl->assign('MESSAGE', $erro_txt); 439 $tpl->parse('PAGE_MESSAGE', 'page_message'); 440 } else { 441 $tpl->assign('PAGE_MESSAGE', ''); 442 } 443 444 } // End of gen_page_msg() 445 446 gen_page_message($tpl, $err_txt); 417 447 418 448 $tpl->parse('PAGE', 'page'); 419 449 $tpl->prnt(); -
gui/client/subdomain_edit.php
1 <?php 2 /** 3 * ispCP ω (OMEGA) a Virtual Hosting Control System 4 * 5 * @copyright 2001-2006 by moleSoftware GmbH 6 * @copyright 2006-2009 by ispCP | http://isp-control.net 7 * @version SVN: $ID$ 8 * @link http://isp-control.net 9 * @author ispCP Team 10 * 11 * @license 12 * This program is free software; you can redistribute it and/or modify it under 13 * the terms of the MPL General Public License as published by the Free Software 14 * Foundation; either version 1.1 of the License, or (at your option) any later 15 * version. 16 * You should have received a copy of the MPL Mozilla Public License along with 17 * this program; if not, write to the Open Source Initiative (OSI) 18 * http://opensource.org | osi@opensource.org 19 */ 20 21 require '../include/ispcp-lib.php'; 22 23 check_login(__FILE__); 24 25 $tpl = new pTemplate(); 26 $tpl->define_dynamic('page', Config::get('CLIENT_TEMPLATE_PATH') . '/subdomain_edit.tpl'); 27 $tpl->define_dynamic('page_message', 'page'); 28 $tpl->define_dynamic('logged_from', 'page'); 29 30 $theme_color = Config::get('USER_INITIAL_THEME'); 31 32 $tpl->assign( 33 array( 34 'TR_EDIT_SUBDOMAIN_PAGE_TITLE' => tr('ispCP - Manage Subdomain/Edit Subdomain'), 35 'THEME_COLOR_PATH' => "../themes/$theme_color", 36 'THEME_CHARSET' => tr('encoding'), 37 'ISP_LOGO' => get_logo($_SESSION['user_id']) 38 ) 39 ); 40 41 /* 42 * 43 * static page messages. 44 * 45 */ 46 $tpl->assign( 47 array( 48 'TR_MANAGE_SUBDOMAIN' => tr('Manage subdomain'), 49 'TR_EDIT_SUBDOMAIN' => tr('Edit subdomain'), 50 'TR_SUBDOMAIN_NAME' => tr('Subdomain name'), 51 'TR_FORWARD' => tr('Forward to URL'), 52 'TR_MOUNT_POINT' => tr('Mount Point'), 53 'TR_MODIFY' => tr('Modify'), 54 'TR_CANCEL' => tr('Cancel'), 55 'TR_ENABLE_FWD' => tr("Enable Forward"), 56 'TR_ENABLE' => tr("Enable"), 57 'TR_DISABLE' => tr("Disable"), 58 'TR_FWD_HELP' => tr("A Forward URL has to start with 'http://'") 59 ) 60 ); 61 62 gen_client_mainmenu($tpl, Config::get('CLIENT_TEMPLATE_PATH') . '/main_menu_manage_domains.tpl'); 63 gen_client_menu($tpl, Config::get('CLIENT_TEMPLATE_PATH') . '/menu_manage_domains.tpl'); 64 65 gen_logged_from($tpl); 66 67 // "Modify" button has been pressed 68 if (isset($_POST['uaction']) && ($_POST['uaction'] === 'modify')) { 69 if (isset($_GET['edit_id'])) { 70 $editid = $_GET['edit_id']; 71 } else if (isset($_SESSION['edit_ID'])) { 72 $editid = $_SESSION['edit_ID']; 73 } else { 74 unset($_SESSION['edit_ID']); 75 76 $_SESSION['subedit'] = '_no_'; 77 user_goto('domains_manage.php'); 78 } 79 // Get subdomain type 80 if (isset($_POST['dmn_type'])) { 81 $dmntype = $_POST['dmn_type']; 82 } else { 83 unset($_SESSION['edit_ID']); 84 85 $_SESSION['subedit'] = '_no_'; 86 user_goto('domains_manage.php'); 87 } 88 // Save data to db 89 if (check_fwd_data($tpl, $editid, $dmntype)) { 90 $_SESSION['subedit'] = "_yes_"; 91 user_goto('domains_manage.php'); 92 } 93 } else { 94 // Get user id that comes for edit 95 if (isset($_GET['edit_id'])) { 96 $editid = $_GET['edit_id']; 97 } 98 99 // Get subdomain type 100 if (isset($_GET['dmn_type'])) { 101 $dmntype = $_GET['dmn_type']; 102 } else { 103 user_goto('domains_manage.php'); 104 } 105 106 $_SESSION['edit_ID'] = $editid; 107 $tpl->assign('PAGE_MESSAGE', ""); 108 } 109 gen_editsubdomain_page($tpl, $editid, $dmntype); 110 111 $tpl->parse('PAGE', 'page'); 112 $tpl->prnt(); 113 114 if (Config::get('DUMP_GUI_DEBUG')) { 115 dump_gui_debug(); 116 } 117 unset_messages(); 118 119 // Begin function block 120 121 /** 122 * Show user data 123 */ 124 function gen_editsubdomain_page(&$tpl, $edit_id, $dmn_type) { 125 $sql = Database::getInstance(); 126 127 // Get data from sql 128 list($domain_id, $domain_name) = get_domain_default_props($sql, $_SESSION['user_id']); 129 130 if ($dmn_type === 'dmn') { 131 $res = exec_query($sql, "SELECT * FROM `subdomain` WHERE `subdomain_id` = ? AND `domain_id` = ?", array($edit_id, $domain_id)); 132 } else { 133 $query = " 134 SELECT 135 t1.`subdomain_alias_name` AS subdomain_name, 136 t1.`subdomain_alias_mount` AS subdomain_mount, 137 t1.`subdomain_alias_url_forward` AS subdomain_url_forward, 138 t2.`alias_name` AS domain_name 139 FROM 140 `subdomain_alias` t1 141 LEFT JOIN (`domain_aliasses` AS t2) ON (t1.`alias_id` = t2.`alias_id`) 142 WHERE 143 t1.`alias_id` IN (SELECT `alias_id` FROM `domain_aliasses` WHERE `domain_id` = ?) 144 AND 145 `subdomain_alias_id` = ?"; 146 147 $res = exec_query($sql, $query, array($domain_id, $edit_id)); 148 } 149 150 if ($res->RecordCount() <= 0) { 151 $_SESSION['subedit'] = '_no_'; 152 user_goto('domains_manage.php'); 153 } 154 155 $data = $res->FetchRow(); 156 157 if ($dmn_type === 'als') { 158 $domain_name = $data['domain_name']; 159 } 160 161 if (isset($_POST['uaction']) && ($_POST['uaction'] == 'modify')) { 162 $url_forward = decode_idna($_POST['forward']); 163 } else { 164 $url_forward = decode_idna($data['subdomain_url_forward']); 165 } 166 167 if ($url_forward == "no") { 168 $check_en = ''; 169 $check_dis = 'checked="checked"'; 170 $url_forward = ''; 171 } else { 172 $check_en = 'checked="checked"'; 173 $check_dis = ''; 174 } 175 // Fill in the fields 176 $tpl->assign( 177 array( 178 'SUBDOMAIN_NAME' => decode_idna($data['subdomain_name']) . '.' . $domain_name, 179 'FORWARD' => $url_forward, 180 'MOUNT_POINT' => $data['subdomain_mount'], 181 'CHECK_EN' => $check_en, 182 'CHECK_DIS' => $check_dis, 183 'ID' => $edit_id, 184 'DMN_TYPE' => $dmn_type 185 ) 186 ); 187 } // End of gen_editalias_page() 188 189 /** 190 * Check input data 191 */ 192 function check_fwd_data(&$tpl, $subdomain_id, $dmn_type) { 193 $sql = Database::getInstance(); 194 195 $forward_url = encode_idna($_POST['forward']); 196 $status = $_POST['status']; 197 // unset errors 198 $ed_error = '_off_'; 199 $admin_login = ''; 200 201 if ($status != '0') { 202 if (!chk_forward_url($forward_url)) { 203 $ed_error = tr("Incorrect forward syntax"); 204 } 205 /* TODO: Adding a trailing slash is under discussion: see http://www.isp-control.net/ispcp/ticket/1979 206 if (!preg_match("/\/$/", $forward) && !preg_match("/\?/", $forward)) { 207 $forward_url .= "/"; 208 }*/ 209 } 210 211 if ($ed_error === '_off_') { 212 if ($_POST['status'] == 0) { 213 $forward_url = "no"; 214 } 215 216 if ($dmn_type === 'dmn') { 217 $query = " 218 UPDATE 219 `subdomain` 220 SET 221 `subdomain_url_forward` = ?, 222 `subdomain_status` = ? 223 WHERE 224 `subdomain_id` = ? 225 "; 226 } else { 227 $query = " 228 UPDATE 229 `subdomain_alias` 230 SET 231 `subdomain_alias_url_forward` = ?, 232 `subdomain_alias_status` = ? 233 WHERE 234 `subdomain_alias_id` = ? 235 "; 236 } 237 238 exec_query($sql, $query, array($forward_url, Config::get('ITEM_CHANGE_STATUS'), $subdomain_id)); 239 240 241 send_request(); 242 243 $admin_login = $_SESSION['user_logged']; 244 write_log("$admin_login: change domain alias forward: " . $rs->fields['t1.alias_name']); 245 unset($_SESSION['edit_ID']); 246 $tpl->assign('MESSAGE', ""); 247 return true; 248 } else { 249 $tpl->assign('MESSAGE', $ed_error); 250 $tpl->parse('PAGE_MESSAGE', 'page_message'); 251 return false; 252 } 253 } // End of check_user_data()
