Code:
<?php
set_time_limit(0);
date_default_timezone_set('America/New_York');
$config = array(
"cookie_dir" => "c:/php/tmp",
"user_agent" => "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)"
);
$config['cookie_file'] = "mohaa.dat";
function http_build_query_for_curl($arrays, &$new = array(), $prefix = null) {
// i stoaal thiiiissss... :(
if (is_object($arrays)) {
$arrays = get_object_vars($arrays);
}
foreach ($arrays as $key => $value) {
$k = isset($prefix) ? $prefix . '[' . $key . ']' : $key;
if (is_array( $value ) or is_object( $value )) {
http_build_query_for_curl($value, $new, $k);
}
else {
$new[$k] = $value;
}
}
}
function object_to_array($object) {
// i stoaal thiiiissss... :(
if(!is_object($object) && !is_array($object)) {
return $object;
}
if(is_object($object)) {
$object = get_object_vars($object);
}
return array_map('object_to_array',$object);
}
function doPost($url, $data) {
global $config;
$context = curl_init();
curl_setopt($context, CURLOPT_URL, $url);
curl_setopt($context, CURLOPT_USERAGENT, $config['user_agent']);
curl_setopt($context, CURLOPT_TIMEOUT, '60');
curl_setopt($context, CURLOPT_POST, 1);
curl_setopt($context, CURLOPT_POSTFIELDS, $data);
curl_setopt($context, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($context, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($context, CURLOPT_COOKIEFILE, $config['cookie_dir'] . "/" . $config['cookie_file']);
curl_setopt($context, CURLOPT_COOKIEJAR, $config['cookie_dir'] . "/" . $config['cookie_file']);
curl_setopt($context, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($context, CURLOPT_FOLLOWLOCATION, 1);
// smoothwall squid proxy fix
curl_setopt($context, CURLOPT_HTTPHEADER, array('Expect:'));
$stream_contents = curl_exec($context);
curl_close($context);
return $stream_contents;
}
function doGet($url, $file_handle = false) {
global $config;
$context = curl_init();
curl_setopt($context, CURLOPT_COOKIEFILE, $config['cookie_dir'] . "/" . $config['cookie_file']);
curl_setopt($context, CURLOPT_COOKIEJAR, $config['cookie_dir'] . "/" . $config['cookie_file']);
curl_setopt($context, CURLOPT_USERAGENT, $config['user_agent']);
curl_setopt($context, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($context, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($context, CURLOPT_URL, $url);
if ($file_handle == false) {
curl_setopt($context, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($context, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($context, CURLOPT_TIMEOUT, '60');
if ($stream_contents = curl_exec($context)) {
$return = $stream_contents;
}
else {
$return = false;
}
curl_close($context);
return $return;
}
else {
curl_setopt($context, CURLOPT_FILE, $file_handle);
if ($data = curl_exec($context)) {
curl_close($context);
fclose($file_handle);
return true;
}
else {
return false;
}
}
}
$login = array(
'data' => array(
'login' => 'Auto Importer',
'register' => 0,
'password' => 'xxxx',
'cookie_check' => 1,
'redirect' => '/aaaa/',
'_xfToken:' => null
),
'url' => 'http://www.mohaaaa.co.uk/aaaa/login/login'
);
$server = array(
'data' => array(
'hide_password_protected' => 1,
'game' => 'mohaa',
'sort' => 'playercount',
'dir' => 'DESC',
'start' => null,
'limit' => null
),
'url' => 'http://www.serverbrowser.com/bin/servers.php'
);
$game = array(
'data' => array(
'node' => 'xnode-11'
),
'url' => 'http://www.serverbrowser.com/bin/tree.php'
);
$variable = array(
'data' => array(
'id' => null
),
'url' => 'http://www.serverbrowser.com/bin/variables.php'
);
$dom = new DOMDocument();
if (doPost($login['url'],$login['data'])) {
// first load, to fix a bug on the host?
$server['data']['limit'] = 1;
$result = object_to_array(json_decode(doPost($server['url'],$server['data'])));
$server['data']['limit'] = 180;
$total_servers = $result['total'];
$file = null;
$loaded = 0;
$includes = array('gametype','gamever');
while (($loaded * 180) < $total_servers) {
$server['data']['start'] = ($loaded * 180);
$result = object_to_array(json_decode(doPost($server['url'],$server['data'])));
if ($result['servers']) {
$line = null;
foreach ($result['servers'] as $data) {
$line = null;
$s++;
$line = '"' . $data['n'] . '","' . $data['ip'] . '","' . (strlen($data['l']) > 2 ? $data['l'] : $data['c']) . '","' . $data['pt'] . '"';
// n = name
// ip = ip
// c = country
// l = location
// pt = player limit
if ($server['data']['game'] == 'mohaa' || $server['data']['game'] == 'mohaas'|| $server['data']['game'] == 'mohaab') {
$variable['data']['id'] = $data['id'];
$variables = object_to_array(json_decode(doPost($variable['url'],$variable['data'])));
$variables = $variables['variables'];
foreach ($variables as $var) {
$data['var'][$var['name']] = $var['value'];
}
}
foreach ($includes as $include) {
$line .= ',"' . ($data['var'][$include] ? $data['var'][$include] : 'Unknown') . '"';
}
$line = str_getcsv($line, ",", '"');
$variable['data']['id'] = null;
if ($response = doGet('http://www.mohaaaa.co.uk/aaaa/forums/servers-and-clans.46/create-thread')) {
@$dom->loadHTML($response);
$forms = array();
foreach($dom->getElementsByTagName('form') as $form) {
$forms[$form->getAttribute('id')] = $dom->saveXML($form);
}
$inputs = array();
if ($forms['ThreadCreate']) {
@$dom->loadHTML($forms['ThreadCreate']);
foreach($dom->getElementsByTagName('input') as $input) {
if ($input->getAttribute('name')) {
$sub_name = null;
if (strpos($input->getAttribute('name'),'[') !== false) {
$sub_name = substr($input->getAttribute('name'),(strpos($input->getAttribute('name'),'[') + 1),-1);
$name = substr($input->getAttribute('name'),0,strpos($input->getAttribute('name'),'['));
if ($sub_name != null) {
$inputs[$name][$sub_name] = $input->getAttribute('value');
}
else {
$inputs[$name][] = $input->getAttribute('value');
}
}
else {
$name = $input->getAttribute('name');
$inputs[$name] = $input->getAttribute('value');
}
}
}
unset(
$inputs['poll']['close_length'],
$inputs['poll']['close'],
$inputs['poll']['public_votes'],
$inputs['poll']['multiple'],
$inputs['watch_thread_email'],
$inputs['watch_thread'],
$inputs['thumb'],
$inputs['image']
);
$inputs['prefix_id'] = 7;
$inputs['_xfResponseType'] = 'json';
$inputs['_xfNoRedirect'] = 1;
$inputs['_xfRequestUri'] = '/aaaa/forums/servers-and-clans.46/create-thread';
$inputs['message_html'] = '<p>This is an automated import from <a href=\'http://www.serverbrowser.com\'>ServerBrowser.com</a>.</p>';
$inputs['custom_fields']['servername'] = $line[0];
$inputs['title'] = (strlen($line[0]) >= 100 ? substr($line[0],0,95) . '...' : $line[0]);
$inputs['custom_fields']['clanservers'] = $line[1];
$inputs['custom_fields']['country'] = $line[2];
$inputs['custom_fields']['gameversion'] = $line[5];
$inputs['custom_fields']['server1game'] = 'MOHAA';
$inputs['custom_fields']['rebornclient'] = null;
$inputs['custom_fields']['rebornserver'] = null;
$inputs['custom_fields']['modclienturl'] = null;
$inputs['custom_fields']['clientmod'] = null;
$inputs['custom_fields']['maxslots'] = $line[3];
$inputs['custom_fields']['servertype'] = $line[4];
$array = array();
http_build_query_for_curl($inputs, $array);
$response = doPost('http://www.mohaaaa.co.uk/aaaa/forums/servers-and-clans.46/add-thread',$array);
if (strpos($response,'error') !== false) {
exit("Error: $s\n");
}
// echo $response;
print "Imported: $s\n";
// sleep(1);
}
}
}
}
$loaded++;
}
}
?>