GIF89a;
Direktori : /home/serb/www/phpchat/upload/install/ |
Current File : /home/serb/www/phpchat/upload/install/active.php |
<?php if(empty($_POST)) exit; include ("../theme/language/en/language.php"); $error = array(); $config_content = ''; $next_step = ''; $error_num = 0; switch ($_POST['active']) { case 'free_mode_conf': $next_step = 'free_ok'; check_room_name($_POST['param_post']); check_configphp_permission(); check_config_return(); break; //case 'host_mode_conf': $next_step = 'host_integration_conf'; case 'host_mode_conf': $next_step = 'install_done'; check_host_address($_POST['param_post']); check_configphp_permission(); check_config_return(); break; case 'host_conf_inter_db': $next_step = 'host_login_chat'; check_configphp_permission(); check_db_param(); check_config_return(); break; //case 'local_mode_conf': $next_step = 'local_integration_conf'; case 'local_mode_conf': $next_step = 'install_done'; check_local_address($_POST['param_post']); check_configphp_permission(); check_config_return(); break; case 'local_conf_inter_db': $next_step = 'local_move_file'; check_db_param(); check_config_return(); break; case 'no_integration': case 'install_done': create_installed_lock(); echo "index.php"; exit; break; } function check_config_return(){ global $next_step,$config_content; $print_error = print_error(); if( $print_error=='ok') { //not any errors $error[0]['error'] = false; switch($next_step) { case 'host_integration_conf': $error['tag']['next'] = "index.php?active=".md5('host_inter'); break; case 'local_integration_conf': $error['tag']['next'] = "index.php?active=".md5('local_inter'); break; case 'local_move_file': $error['tag']['next'] = "index.php?active=".md5('local_move_file'); break; case 'host_login_chat': $error['tag']['next'] = "index.php?active=".md5('host_login_chat'); break; default: create_installed_lock(); $error['tag']['next'] = "index.php"; break; } $open = fopen("../configure/config.php","w"); fwrite($open,$config_content); fclose($open); echo successful_return($error); } else { //back error data echo $print_error; } } function check_db_param() { global $error,$lang,$error_num,$config_content; if(empty($_POST['param_db_port'])){ $_POST['param_db_port'] = md5('none'); } if(empty($_POST['param_db_password'])){ $_POST['param_db_password'] = md5('none'); } if(in_array('',$_POST)) { $error[$error_num]['error'] = $lang['error_full_db_param']; $error_num ++; } else { if($_POST['param_db_password'] == md5('none')) { $_POST['param_db_password'] = ''; } switch ($_POST['select_db']) { case 'mysql': $include = check_php_module ('mysql_connect','mysql'); break; case 'mssql':$include = check_php_module ('mssql_pconnect','mssql'); break; case 'oracle':$include = check_php_module ('ocinlogon','oracle'); break; } if($include) { @include($include); $sql = 'SELECT '. $_POST['param_uesrname_field'] .', '.$_POST['param_pw_field'].' FROM '.$_POST['param_db_user_table']; $test_db = new dbal_mysql; $db_port = false; $param_db_port = ''; if( $_POST['param_db_port'] != md5('none') ) { $db_port = $_POST['param_db_port']; $param_db_port = $_POST['param_db_port']; } $db_connect = $test_db -> sql_connect( $_POST['param_db_host'], $_POST['param_db_username'], $_POST['param_db_password'], $_POST['param_db_name'], $db_port ); if($db_connect[0] !='error') { if($sql_query_test = $test_db -> sql_query($sql)) { if($fetch_row = $test_db -> sql_fetchrow($sql_query_test)) { $perv_content = file_get_contents('../configure/config.php'); $config_content = str_replace('?>','',$perv_content); $config_content .= " \$select_db = '". $_POST['select_db']."'; \$param_db_host = '". $_POST['param_db_host']."'; \$param_db_port = '".$param_db_port."'; \$param_db_name = '". $_POST['param_db_name']."'; \$param_db_user = '". $_POST['param_db_username']."'; \$param_db_password = '". $_POST['param_db_password']."'; \$param_db_user_table = '".$_POST['param_db_user_table']."'; \$param_uesrname_field = '".$_POST['param_uesrname_field']."'; \$param_pw_field = '". $_POST['param_pw_field']."'; \$enablemd5 = '". $_POST['enablemd5']."'; ?>"; if($_POST['select_mode']=='mode_database') config_xml(); else if($_POST['active']!= 'host_conf_inter_db')config_server_xml('URL'); } else { $error[$error_num]['error'] = $lang['error_db_table']; $error_num ++; } } else { $error[$error_num]['error'] = $lang['error_db_table']; $error_num ++; } } else { $error[$error_num]['error'] = $db_connect[1]; $error_num ++; } } } } function config_xml() { config_server_xml($_POST['select_db']); $enablemd5 = ($_POST['enablemd5']=='On')?'On':'Off'; $db_xml_node = array('database-name' => $_POST['param_db_name'], 'database-user' => $_POST['param_db_username'], 'database-password' => $_POST['param_db_password'], 'user-table' => $_POST['param_db_user_table'], 'username-field' => $_POST['param_uesrname_field'], 'password-field' => $_POST['param_pw_field'], 'enable-md5' => $enablemd5 ); switch($_POST['select_db']) { case 'mysql': $db_xml_node['database-host'] = $_POST['param_db_host']; config_database_xml( 'Mysql.xml',$db_xml_node); break; case 'mssql': $db_xml_node['dsn-name'] = $_POST['param_db_host']; config_database_xml( 'ODBC.xml'); break; case 'oracle': $db_xml_node['database-host'] = $_POST['param_db_host']; config_database_xml( 'Oracle.xml'); break; } } function config_database_xml($xml_file,$node_array) { include("../configure/config.php"); $db_xml = checkSlash($local_server_address).'server/etc/groups/default/database/'.$xml_file; $doc = new DOMDocument(); @$doc->load($db_xml); foreach($node_array as $node => $val) { $doc = replacenode($doc, $node, mysql_escape_string($val)); } @$doc->save($db_xml); } function config_server_xml($mode) { include("../configure/config.php"); $php_self= str_replace('install/active','login_chat',$_SERVER['PHP_SELF']); $chat_url = 'http://'.$_SERVER['HTTP_HOST'].$php_self; $server_xml = checkSlash($local_server_address).'server/etc/groups/default/server.xml'; $doc = new DOMDocument(); @$doc->load($server_xml); $doc = replacenode($doc, "integrated-other-database",$mode); $doc = replacenode($doc, "auth-url",$chat_url."?username=%username%&password=%password%","charset","UTF-8"); @$doc->save($server_xml); } function replacenode($doc,$nodename,$nodevalue, $attr="",$attrvalue="") { $parent = new DomDocument; $parent_node = $parent->createElement($nodename,$nodevalue); if(!is_array($attr) || !is_array($attrvalue)) { if(!empty($attr) && !empty($attrvalue)) { $parent_node->setAttribute($attr, $attrvalue); } } else { foreach($attr as $key => $value) { $parent_node->setAttribute($value, $attrvalue[$key]); } } $parent->appendChild($parent_node); $nodelist = $doc->getElementsByTagName($nodename); $node = @$nodelist->item(0); $newnode = $doc->importNode($parent->documentElement, true); $node->parentNode->replaceChild($newnode,$node); return $doc; } function check_php_module($function,$file_name) { global $error,$lang,$error_num; if( function_exists($function)) { return ('../db/'.$file_name.'.php'); } else { $error[$error_num]['error'] = $file_name.$lang['error_php_module']; $error_num ++; return 0; } } function check_room_name($room_name){ global $error,$lang,$error_num,$config_content; if(empty($room_name)){ $error[$error_num]['error'] = $lang['error_free_room_name']; $error_num ++; }else{ $config_content = '<?php $running_mode = \'free\'; $room_name = \''.$room_name.'\'; ?>'; } } function check_host_address($host_address){ global $error,$lang,$error_num,$config_content; $host_address = checkSlash($host_address); $host_address_html = $host_address."123flashchat.html"; $get_content = ''; $pattern = "|http://host([0-9]*).123flashchat.com/(.+)/|U"; $patterntrial = "|http://trial.123flashchat.com/(.+)/|U"; $host_address = checkSlash($host_address); $host_address_html = $host_address."123flashchat.html"; if(empty($host_address)||(!preg_match($pattern, $host_address, $matches) && !preg_match($patterntrial, $host_address, $matches))){ $error[$error_num]['error'] = $lang['error_host_address']; $error_num ++; }else{ $get_content = @file_get_contents($host_address_html); if(empty($get_content)) { $error[$error_num]['error'] = $lang['error_host_address']; $error_num ++; } $config_content = '<?php $running_mode = \'host\'; $host_address = \''.$host_address.'\'; ?>'; } } function check_local_address($server_address){ global $error,$lang,$error_num,$config_content; $server_address = checkSlash($server_address); //$error[$error_num]['error'] = ''; if($server_address){ $server_address .= substr($server_address,-1,1) != '/' ? '/' : ''; }else{ $server_address = 'http://'.$_SERVER['SERVER_NAME'].':35555/'; } $config_content = '<?php $running_mode = \'local\'; $local_chat_address = \''.$server_address.'\'; ?>'; } function check_configphp_permission() { global $lang,$error,$config_content,$error_num; if(!is_dir("../configure")) { if(!mkdir("../configure")){ $error[$error_num]['error'] = $lang['error_mkdir_configure']; $error_num ++; } } if(!is_file("../configure/config.php")){ $open = fopen("../configure/config.php","w"); fclose($open); } if(!is_writable("../configure/config.php")){ $error[$error_num]['error'] = $lang['error_config_writable']; $error_num ++; } } function create_installed_lock() { global $lang,$error,$error_num; $open = fopen("../install/installed.lock","w"); fclose($open); if(!is_file("../install/installed.lock")){ $error[$error_num]['error'] = $lang['error_install_writable']; $error_num ++; } } function successful_return($array){ include ("json.php"); $json = new Services_JSON(); return $json->encode($array); } function print_error(){ global $error,$error_num; if(!empty($error[0]['error'])){ $error['tag']['next'] = false; $error['tag']['error_num'] = $error_num; include ("json.php"); $json = new Services_JSON(); return $json->encode($error); }else{ return "ok"; } } function checkSlash($path) { if(substr($path,-1,1) != "/" && !empty($path)){ $path = $path."/"; } return $path; } ?>