2013-08-28 22:47:04 +02:00
< ? php
2013-10-01 20:30:50 +02:00
2013-08-28 22:47:04 +02:00
/**
* File : userpanel_substitutes . php .
* Author : Ulrich Block
* Date : 18.08 . 13
* Time : 13 : 25
* Contact : < ulrich . block @ easy - wi . com >
* Ticket : https :// github . com / easy - wi / developer / issues / 2
*
* This file is part of Easy - WI .
*
* Easy - WI is free software : you can redistribute it and / or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation , either version 3 of the License , or
* ( at your option ) any later version .
*
* Easy - WI is distributed in the hope that it will be useful ,
* but WITHOUT ANY WARRANTY ; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
* GNU General Public License for more details .
*
* You should have received a copy of the GNU General Public License
* along with Easy - WI . If not , see < http :// www . gnu . org / licenses />.
*
* Diese Datei ist Teil von Easy - WI .
*
* Easy - WI ist Freie Software : Sie koennen es unter den Bedingungen
* der GNU General Public License , wie von der Free Software Foundation ,
* Version 3 der Lizenz oder ( nach Ihrer Wahl ) jeder spaeteren
* veroeffentlichten Version , weiterverbreiten und / oder modifizieren .
*
* Easy - WI wird in der Hoffnung , dass es nuetzlich sein wird , aber
* OHNE JEDE GEWAEHELEISTUNG , bereitgestellt ; sogar ohne die implizite
* Gewaehrleistung der MARKTFAEHIGKEIT oder EIGNUNG FUER EINEN BESTIMMTEN ZWECK .
* Siehe die GNU General Public License fuer weitere Details .
*
* Sie sollten eine Kopie der GNU General Public License zusammen mit diesem
* Programm erhalten haben . Wenn nicht , siehe < http :// www . gnu . org / licenses />.
*/
2013-10-18 18:38:09 +02:00
include ( EASYWIDIR . '/stuff/keyphrasefile.php' );
include ( EASYWIDIR . '/third_party/password_compat/password.php' );
2014-03-22 10:29:26 +01:00
if ( ! isset ( $main ) or $main != 1 or ! isset ( $user_id ) or ! isset ( $reseller_id ) or isset ( $_SESSION [ 'substitute' ])) {
2013-08-28 22:47:04 +02:00
header ( 'Location: userpanel.php' );
die ;
}
2013-09-27 08:22:09 +02:00
2014-08-18 22:58:32 +02:00
$sprache = getlanguagefile ( 'user' , $user_language , $reseller_id );
2013-10-03 16:48:54 +02:00
if ( $ui -> w ( 'action' , 4 , 'post' ) and ! token ( true )) {
2014-08-18 22:58:32 +02:00
2013-09-29 15:29:58 +02:00
$template_file = $spracheResponse -> token ;
2014-08-18 22:58:32 +02:00
2013-10-13 11:42:31 +02:00
} else if ( $ui -> id ( 'id' , 10 , 'get' ) or $ui -> st ( 'd' , 'get' ) == 'ad' ) {
2013-10-22 22:24:53 +02:00
2013-09-29 15:29:58 +02:00
$template_file = 'userpanel_404.tpl' ;
2013-10-13 11:42:31 +02:00
$id = $ui -> id ( 'id' , 10 , 'get' );
2013-10-22 22:24:53 +02:00
2013-10-13 11:42:31 +02:00
if ( $ui -> st ( 'd' , 'get' ) == 'ad' or $ui -> st ( 'd' , 'get' ) == 'md' ) {
2013-10-22 22:24:53 +02:00
2013-09-29 15:29:58 +02:00
$db = array ();
$gs = array ();
2014-03-20 21:58:40 +01:00
$wv = array ();
2013-09-29 15:29:58 +02:00
$vo = array ();
$vd = array ();
$vs = array ();
$ro = array ();
2013-10-22 22:24:53 +02:00
2013-09-29 15:29:58 +02:00
$query = $sql -> prepare ( " SELECT `id`,`dbname` FROM `mysql_external_dbs` WHERE `uid`=? AND `resellerid`=? AND `active`='Y' " );
2013-08-28 22:47:04 +02:00
$query -> execute ( array ( $user_id , $reseller_id ));
2014-11-30 12:55:07 +01:00
while ( $row = $query -> fetch ( PDO :: FETCH_ASSOC )) {
2013-10-22 22:24:53 +02:00
$db [ $row [ 'id' ]] = $row [ 'dbname' ];
}
2013-09-29 15:29:58 +02:00
$query = $sql -> prepare ( " SELECT `id`,CONCAT(`serverip`,':',`port`) AS `address` FROM `gsswitch` WHERE `userid`=? AND `resellerid`=? AND `active`='Y' " );
2013-08-28 22:47:04 +02:00
$query -> execute ( array ( $user_id , $reseller_id ));
2014-11-30 12:55:07 +01:00
while ( $row = $query -> fetch ( PDO :: FETCH_ASSOC )) {
2013-10-22 22:24:53 +02:00
$gs [ $row [ 'id' ]] = $row [ 'address' ];
}
2015-06-06 10:35:20 +02:00
$query = $sql -> prepare ( " SELECT `webVhostID`,`description` FROM `webVhost` WHERE `userID`=? AND `resellerID`=? AND `active`='Y' " );
2014-03-20 21:58:40 +01:00
$query -> execute ( array ( $user_id , $reseller_id ));
2014-11-30 12:55:07 +01:00
while ( $row = $query -> fetch ( PDO :: FETCH_ASSOC )) {
2015-06-06 10:35:20 +02:00
$wv [ $row [ 'webVhostID' ]] = ( strlen ( $row [ 'description' ]) == 0 ) ? 'web-' . $row [ 'webVhostID' ] : $row [ 'description' ];
2014-03-20 21:58:40 +01:00
}
2013-09-29 15:29:58 +02:00
$query = $sql -> prepare ( " SELECT `id`,CONCAT(`ip`,':',`port`) AS `address` FROM `voice_server` WHERE `userid`=? AND `resellerid`=? AND `active`='Y' " );
2013-08-28 22:47:04 +02:00
$query -> execute ( array ( $user_id , $reseller_id ));
2014-11-30 12:55:07 +01:00
while ( $row = $query -> fetch ( PDO :: FETCH_ASSOC )) {
2013-10-22 22:24:53 +02:00
$vo [ $row [ 'id' ]] = $row [ 'address' ];
}
2013-09-29 15:29:58 +02:00
$query = $sql -> prepare ( " SELECT `dnsID`,`dns` FROM `voice_dns` WHERE `userID`=? AND `resellerID`=? AND `active`='Y' " );
2013-08-28 22:47:04 +02:00
$query -> execute ( array ( $user_id , $reseller_id ));
2014-11-30 12:55:07 +01:00
while ( $row = $query -> fetch ( PDO :: FETCH_ASSOC )) {
2013-10-22 22:24:53 +02:00
$vd [ $row [ 'dnsID' ]] = $row [ 'dns' ];
}
2013-09-29 15:29:58 +02:00
$query = $sql -> prepare ( " SELECT `id`,`ip` FROM `virtualcontainer` WHERE `userid`=? AND `resellerid`=? AND `active`='Y' " );
2013-08-28 22:47:04 +02:00
$query -> execute ( array ( $user_id , $reseller_id ));
2014-11-30 12:55:07 +01:00
while ( $row = $query -> fetch ( PDO :: FETCH_ASSOC )) {
2013-10-22 22:24:53 +02:00
$vs [ $row [ 'id' ]] = $row [ 'ip' ];
}
2013-09-29 15:29:58 +02:00
$query = $sql -> prepare ( " SELECT `dedicatedID`,`ip` FROM `rootsDedicated` WHERE `userID`=? AND `resellerID`=? AND `active`='Y' " );
2013-08-28 22:47:04 +02:00
$query -> execute ( array ( $user_id , $reseller_id ));
2014-11-30 12:55:07 +01:00
while ( $row = $query -> fetch ( PDO :: FETCH_ASSOC )) {
2013-10-22 22:24:53 +02:00
$ro [ $row [ 'dedicatedID' ]] = $row [ 'ip' ];
}
2013-08-28 22:47:04 +02:00
}
2013-10-22 22:24:53 +02:00
2013-10-13 11:42:31 +02:00
if ( ! $ui -> st ( 'action' , 'post' ) and $ui -> st ( 'd' , 'get' ) == 'ad' ) {
2014-08-18 22:58:32 +02:00
2013-10-22 22:24:53 +02:00
$randompass = passwordgenerate ( 10 );
2014-08-18 22:58:32 +02:00
2013-09-29 15:29:58 +02:00
$template_file = 'userpanel_substitutes_add.tpl' ;
2013-10-22 22:24:53 +02:00
2013-10-13 11:42:31 +02:00
} else if ( ! $ui -> st ( 'action' , 'post' ) and $ui -> id ( 'id' , 10 , 'get' ) and ( $ui -> st ( 'd' , 'get' ) == 'md' or $ui -> st ( 'd' , 'get' ) == 'dl' )) {
2013-10-22 22:24:53 +02:00
2013-09-29 15:29:58 +02:00
$query = $sql -> prepare ( " SELECT `loginName`,`active`,`name`,`vname` FROM `userdata_substitutes` WHERE `sID`=? AND `resellerID`=? LIMIT 1 " );
2013-08-28 22:47:04 +02:00
$query -> execute ( array ( $id , $reseller_id ));
2014-11-30 12:55:07 +01:00
while ( $row = $query -> fetch ( PDO :: FETCH_ASSOC )) {
2013-10-13 11:42:31 +02:00
$loginName = $row [ 'loginName' ];
$active = $row [ 'active' ];
$name = $row [ 'name' ];
$vname = $row [ 'vname' ];
$template_file = ( $ui -> st ( 'd' , 'get' ) == 'md' ) ? 'userpanel_substitutes_mod.tpl' : 'userpanel_substitutes_del.tpl' ;
2013-08-28 22:47:04 +02:00
}
2013-10-22 22:24:53 +02:00
2013-10-13 11:42:31 +02:00
if ( $ui -> st ( 'd' , 'get' ) == 'md' ) {
2014-03-20 21:58:40 +01:00
2013-09-29 15:29:58 +02:00
$as = array ();
2014-03-20 21:58:40 +01:00
2013-09-29 15:29:58 +02:00
$query = $sql -> prepare ( " SELECT `oID`,`oType` FROM `userdata_substitutes_servers` WHERE `sID`=? AND `resellerID`=? " );
2013-08-28 22:47:04 +02:00
$query -> execute ( array ( $id , $reseller_id ));
2014-11-30 12:55:07 +01:00
while ( $row = $query -> fetch ( PDO :: FETCH_ASSOC )) {
2013-10-01 20:30:50 +02:00
$as [ $row [ 'oType' ]][ $row [ 'oID' ]] = true ;
2013-08-28 22:47:04 +02:00
}
}
2013-10-22 22:24:53 +02:00
2013-10-13 11:42:31 +02:00
} else if ( $ui -> st ( 'action' , 'post' ) == 'ad' or ( $ui -> st ( 'action' , 'post' ) == 'md' and $ui -> id ( 'id' , 10 , 'get' ))) {
2013-10-22 22:24:53 +02:00
2013-10-13 11:42:31 +02:00
$id = $ui -> id ( 'id' , 10 , 'get' );
2013-10-22 22:24:53 +02:00
2013-10-13 11:42:31 +02:00
if ( $ui -> st ( 'action' , 'post' ) == 'ad' ) {
2013-10-22 22:24:53 +02:00
if ( ! $ui -> names ( 'loginName' , 255 , 'post' ) or ( $rSA [ 'prefix1' ] == 'Y' and $rSA [ 'prefix2' ] != '' and preg_match ( '/^' . $rSA [ 'prefix2' ] . '[0-9]{0,}+$/' , $ui -> names ( 'loginName' , 255 , 'post' )))) {
$template_file = $spracheResponse -> errorUsername ;
}
2013-09-29 15:29:58 +02:00
$query = $sql -> prepare ( " SELECT 1 FROM `userdata_substitutes` WHERE `loginName`=? LIMIT 1 " );
2013-10-13 11:42:31 +02:00
$query -> execute ( array ( $ui -> names ( 'loginName' , 255 , 'post' )));
2013-11-24 12:12:07 +01:00
if ( $query -> rowCount () > 0 ) {
2013-10-22 22:24:53 +02:00
$userError = $spracheResponse -> error_username ;
}
2013-09-29 15:29:58 +02:00
$query = $sql -> prepare ( " SELECT 1 FROM `userdata` WHERE `cname`=? LIMIT 1 " );
2013-10-13 11:42:31 +02:00
$query -> execute ( array ( $ui -> names ( 'loginName' , 255 , 'post' )));
2013-11-24 12:12:07 +01:00
if ( $query -> rowCount () > 0 ) {
2013-10-22 22:24:53 +02:00
$userError = $spracheResponse -> error_username ;
}
2013-08-28 22:47:04 +02:00
if ( isset ( $userError )) {
2013-09-29 15:29:58 +02:00
$template_file = $userError ;
2013-10-22 22:24:53 +02:00
2013-08-28 22:47:04 +02:00
} else {
2013-10-22 22:24:53 +02:00
$newHash = passwordCreate ( $ui -> names ( 'loginName' , 255 , 'post' ), $ui -> password ( 'security' , 255 , 'post' ));
if ( is_array ( $newHash )) {
$query = $sql -> prepare ( " INSERT INTO `userdata_substitutes` (`userID`,`active`,`loginName`,`name`,`vname`,`passwordHashed`,`salt`,`resellerID`) VALUES (?,?,?,?,?,?,?,?) " );
$query -> execute ( array ( $user_id , $ui -> active ( 'active' , 'post' ), $ui -> names ( 'loginName' , 255 , 'post' ), $ui -> names ( 'name' , 255 , 'post' ), $ui -> names ( 'vname' , 255 , 'post' ), $newHash [ 'hash' ], $newHash [ 'salt' ], $reseller_id ));
} else {
2013-10-28 20:27:07 +01:00
$query = $sql -> prepare ( " INSERT INTO `userdata_substitutes` (`userID`,`active`,`loginName`,`name`,`vname`,`passwordHashed`,`resellerID`) VALUES (?,?,?,?,?,?,?) " );
2013-10-22 22:24:53 +02:00
$query -> execute ( array ( $user_id , $ui -> active ( 'active' , 'post' ), $ui -> names ( 'loginName' , 255 , 'post' ), $ui -> names ( 'name' , 255 , 'post' ), $ui -> names ( 'vname' , 255 , 'post' ), $newHash , $reseller_id ));
}
2013-11-24 12:12:07 +01:00
if ( $query -> rowCount () > 0 ) {
2013-10-01 20:30:50 +02:00
$changed = true ;
2013-10-28 20:27:07 +01:00
$id = $sql -> lastInsertId ();
2013-10-01 20:30:50 +02:00
}
2013-10-22 22:24:53 +02:00
2013-08-28 22:47:04 +02:00
}
2013-10-22 22:24:53 +02:00
2013-10-13 11:42:31 +02:00
} else if ( $ui -> st ( 'action' , 'post' ) == 'md' and $ui -> id ( 'id' , 10 , 'get' )) {
2013-10-22 22:24:53 +02:00
2013-10-13 11:42:31 +02:00
if ( $ui -> password ( 'security' , 255 , 'post' ) != '(encrypted)' ) {
2013-10-22 22:24:53 +02:00
2014-02-21 19:32:48 +01:00
$salt = md5 ( mt_rand () . date ( 'Y-m-d H:i:s:u' ));
2013-09-29 15:29:58 +02:00
$query = $sql -> prepare ( " SELECT `loginName` FROM `userdata_substitutes` WHERE `sID`=? AND `resellerID`=? LIMIT 1 " );
2013-08-28 22:47:04 +02:00
$query -> execute ( array ( $id , $reseller_id ));
2013-10-13 11:42:31 +02:00
$loginName = $query -> fetchColumn ();
2013-10-22 22:24:53 +02:00
$newHash = passwordCreate ( $loginName , $ui -> password ( 'security' , 255 , 'post' ));
if ( is_array ( $newHash )) {
$query = $sql -> prepare ( " UPDATE `userdata_substitutes` SET `active`=?,`name`=?,`vname`=?,`passwordHashed`=?,`salt`=? WHERE `sID`=? AND `userID`=? AND `resellerID`=? LIMIT 1 " );
$query -> execute ( array ( $ui -> active ( 'active' , 'post' ), $ui -> names ( 'name' , 255 , 'post' ), $ui -> names ( 'vname' , 255 , 'post' ), $newHash [ 'hash' ], $newHash [ 'salt' ], $id , $user_id , $reseller_id ));
} else {
$query = $sql -> prepare ( " UPDATE `userdata_substitutes` SET `active`=?,`name`=?,`vname`=?,`passwordHashed`=? WHERE `sID`=? AND `userID`=? AND `resellerID`=? LIMIT 1 " );
$query -> execute ( array ( $ui -> active ( 'active' , 'post' ), $ui -> names ( 'name' , 255 , 'post' ), $ui -> names ( 'vname' , 255 , 'post' ), $newHash , $id , $user_id , $reseller_id ));
}
2013-08-28 22:47:04 +02:00
} else {
2013-09-29 15:29:58 +02:00
$query = $sql -> prepare ( " UPDATE `userdata_substitutes` SET `active`=?,`name`=?,`vname`=? WHERE `sID`=? AND `userID`=? AND `resellerID`=? LIMIT 1 " );
2014-09-13 14:36:01 +02:00
$query -> execute ( array ( $ui -> active ( 'active' , 'post' ), $ui -> names ( 'name' , 255 , 'post' ), $ui -> names ( 'vname' , 255 , 'post' ), $id , $user_id , $reseller_id ));
2013-08-28 22:47:04 +02:00
}
2013-10-22 22:24:53 +02:00
2013-11-24 12:12:07 +01:00
if ( $query -> rowCount () > 0 ) {
2013-10-01 20:30:50 +02:00
$changed = true ;
}
2013-08-28 22:47:04 +02:00
}
2013-10-28 20:27:07 +01:00
2013-08-28 22:47:04 +02:00
if ( $id ) {
2014-03-20 21:58:40 +01:00
2013-09-29 15:29:58 +02:00
$query = $sql -> prepare ( " SELECT `oID`,`oType` FROM `userdata_substitutes_servers` WHERE `sID`=? AND `resellerID`=? " );
$query2 = $sql -> prepare ( " DELETE FROM `userdata_substitutes_servers` WHERE `oType`=? AND `oID`=? AND `sID`=? AND `resellerID`=? " );
2014-03-20 21:58:40 +01:00
2013-08-28 22:47:04 +02:00
$query -> execute ( array ( $id , $reseller_id ));
2014-11-30 12:55:07 +01:00
while ( $row = $query -> fetch ( PDO :: FETCH_ASSOC )) {
2013-10-13 11:42:31 +02:00
if ( ! $ui -> id ( $row [ 'oType' ], 10 , 'post' ) or ! in_array ( $row [ 'oID' ],( array ) $ui -> id ( $row [ 'oType' ], 10 , 'post' ))) {
2013-10-03 12:49:13 +02:00
$query2 -> execute ( array ( $row [ 'oType' ], $row [ 'oID' ], $id , $reseller_id ));
2013-11-24 12:12:07 +01:00
if ( $query2 -> rowCount () > 0 ) {
2013-10-01 20:30:50 +02:00
$changed = true ;
}
2013-08-28 22:47:04 +02:00
}
}
2014-03-20 21:58:40 +01:00
foreach ( array ( 'gs' , 'wv' , 'db' , 'vo' , 'vd' , 'vs' , 'ro' ) as $v ) {
if ( $ui -> id ( $v , 10 , 'post' )) {
2013-09-29 15:29:58 +02:00
$query = $sql -> prepare ( " INSERT INTO `userdata_substitutes_servers` (`sID`,`oType`,`oID`,`resellerID`) VALUES (?,?,?,?) ON DUPLICATE KEY UPDATE `sID`=`sID` " );
2014-03-20 21:58:40 +01:00
foreach ( $ui -> id ( $v , 10 , 'post' ) as $oID ) {
$query -> execute ( array ( $id , $v , $oID , $reseller_id ));
if ( $query -> rowCount () > 0 ) {
$changed = true ;
}
}
2013-08-28 22:47:04 +02:00
}
}
2014-03-20 21:58:40 +01:00
2013-09-29 15:29:58 +02:00
$template_file = ( isset ( $changed )) ? $spracheResponse -> table_add : $spracheResponse -> error_table ;
2013-08-28 22:47:04 +02:00
}
2013-10-28 20:27:07 +01:00
2013-10-13 11:42:31 +02:00
} else if ( $ui -> st ( 'action' , 'post' ) == 'dl' and $ui -> id ( 'id' , 10 , 'get' )) {
2013-10-28 20:27:07 +01:00
2013-09-29 15:29:58 +02:00
$query = $sql -> prepare ( " DELETE FROM `userdata_substitutes` WHERE `sID`=? AND `resellerID`=? LIMIT 1 " );
2013-08-28 22:47:04 +02:00
$query -> execute ( array ( $id , $reseller_id ));
2013-10-28 20:27:07 +01:00
$template_file = ( $query -> rowCount () > 0 ) ? $spracheResponse -> table_del : 'userpanel_404.tpl' ;
2013-09-29 15:29:58 +02:00
$query = $sql -> prepare ( " DELETE o.* FROM `userdata_substitutes_servers` o LEFT JOIN `userdata_substitutes` s ON o.`sID`=s.`sID` WHERE s.`sID` IS NULL " );
2013-08-28 22:47:04 +02:00
$query -> execute ();
}
2013-10-28 20:27:07 +01:00
2013-08-28 22:47:04 +02:00
} else {
2013-10-28 20:27:07 +01:00
2013-09-29 15:29:58 +02:00
$table = array ();
2013-10-28 20:27:07 +01:00
2013-09-29 15:29:58 +02:00
$query = $sql -> prepare ( " SELECT `sID`,`loginName`,`active` FROM `userdata_substitutes` WHERE `userID`=? AND `resellerID`=? " );
2013-08-28 22:47:04 +02:00
$query -> execute ( array ( $user_id , $reseller_id ));
2014-11-30 12:55:07 +01:00
while ( $row = $query -> fetch ( PDO :: FETCH_ASSOC )) {
2014-08-18 22:58:32 +02:00
$table [] = array ( 'id' => $row [ 'sID' ], 'loginName' => $row [ 'loginName' ], 'active' => ( $row [ 'active' ] == 'Y' ) ? $gsprache -> yes : $gsprache -> no );
2013-08-28 22:47:04 +02:00
}
2013-10-28 20:27:07 +01:00
2014-08-18 22:58:32 +02:00
configureDateTables ( '-1, -2' , '0, "asc"' );
2013-09-29 15:29:58 +02:00
$template_file = 'userpanel_substitutes_list.tpl' ;
2013-08-28 22:47:04 +02:00
}