From d9faf3e7e6a28bc116a16809c517b69bdee2c64d Mon Sep 17 00:00:00 2001 From: Guangcong Luo Date: Tue, 15 Dec 2015 04:48:47 -0500 Subject: [PATCH] Update crossdomain.php to support main server This is a job currently done by crossprotocol.html, but this is in case we add an update for which a static file isn't enough. --- crossdomain.php | 95 +++++++++++++++++++++++++------------------------ 1 file changed, 49 insertions(+), 46 deletions(-) diff --git a/crossdomain.php b/crossdomain.php index 233e42edc..ed7205ec3 100644 --- a/crossdomain.php +++ b/crossdomain.php @@ -12,58 +12,60 @@ if (preg_match('/^([a-z0-9-_\.]*?)\.psim\.us$/', $host, $m)) { die; // not authorised } -include_once '../pokemonshowdown.com/config/servers.inc.php'; +if ($config['host'] !== 'showdown') { + include_once '../pokemonshowdown.com/config/servers.inc.php'; -$hyphenpos = strrpos($config['host'], '-'); -if ($hyphenpos) { - $postfix = substr($config['host'], $hyphenpos + 1); - if ($postfix === 'afd') { - $config['afd'] = true; - $config['host'] = substr($config['host'], 0, $hyphenpos); - } else if (ctype_digit($postfix)) { - $config['port'] = intval(substr($config['host'], $hyphenpos + 1)); - $config['host'] = substr($config['host'], 0, $hyphenpos); + $hyphenpos = strrpos($config['host'], '-'); + if ($hyphenpos) { + $postfix = substr($config['host'], $hyphenpos + 1); + if ($postfix === 'afd') { + $config['afd'] = true; + $config['host'] = substr($config['host'], 0, $hyphenpos); + } else if (ctype_digit($postfix)) { + $config['port'] = intval(substr($config['host'], $hyphenpos + 1)); + $config['host'] = substr($config['host'], 0, $hyphenpos); + } } -} -$config['id'] = $config['host']; -if (isset($PokemonServers[$config['host']])) { - $server =& $PokemonServers[$config['host']]; - if (@$server['banned']) { - $config['banned'] = true; + $config['id'] = $config['host']; + if (isset($PokemonServers[$config['host']])) { + $server =& $PokemonServers[$config['host']]; + if (@$server['banned']) { + $config['banned'] = true; + } else { + $config['host'] = $server['server']; + if (!isset($config['port'])) { + $config['port'] = $server['port']; + } else if ($config['port'] !== $server['port']) { + $config['id'] .= ':' . $config['port']; + } + if (isset($server['altport'])) $config['altport'] = $server['altport']; + $config['registered'] = true; + + // $yourip = $_SERVER['REMOTE_ADDR']; + $yourip = @$_SERVER['HTTP_X_FORWARDED_FOR']; + if (substr($config['host'].':', 0, strlen($yourip)+1) === $yourip.':') { + $config['host'] = 'localhost'.substr($config['host'],strlen($yourip)); + } + } } else { - $config['host'] = $server['server']; - if (!isset($config['port'])) { - $config['port'] = $server['port']; - } else if ($config['port'] !== $server['port']) { + if (isset($config['port'])) { $config['id'] .= ':' . $config['port']; + } else { + $config['port'] = 8000; // default port } - if (isset($server['altport'])) $config['altport'] = $server['altport']; - $config['registered'] = true; - // $yourip = $_SERVER['REMOTE_ADDR']; - $yourip = @$_SERVER['HTTP_X_FORWARDED_FOR']; - if (substr($config['host'].':', 0, strlen($yourip)+1) === $yourip.':') { - $config['host'] = 'localhost'.substr($config['host'],strlen($yourip)); - } - } -} else { - if (isset($config['port'])) { - $config['id'] .= ':' . $config['port']; - } else { - $config['port'] = 8000; // default port - } - - // see if this is actually a registered server - if ($config['host'] !== 'localhost') { - foreach ($PokemonServers as &$server) { - if ($config['host'] === $server['server'] && ( - $config['port'] === $server['port'] || - (isset($server['altport']) && $config['port'] === $server['altport']) - )) { - $path = isset($_REQUEST['path']) ? $_REQUEST['path'] : ''; - $config['redirect'] = 'http://' . $server['id'] . '.psim.us/' . rawurlencode($path); - break; + // see if this is actually a registered server + if ($config['host'] !== 'localhost') { + foreach ($PokemonServers as &$server) { + if ($config['host'] === $server['server'] && ( + $config['port'] === $server['port'] || + (isset($server['altport']) && $config['port'] === $server['altport']) + )) { + $path = isset($_REQUEST['path']) ? $_REQUEST['path'] : ''; + $config['redirect'] = 'http://' . $server['id'] . '.psim.us/' . rawurlencode($path); + break; + } } } } @@ -98,6 +100,7 @@ var yourOrigin = ; var myOrigin = 'https://play.pokemonshowdown.com'; function postMessage (message) { + if (window.parent.postMessage === postMessage) return; return window.parent.postMessage(message, yourOrigin); } function messageHandler(e) { @@ -134,7 +137,7 @@ function messageHandler(e) { } window.addEventListener('message', messageHandler); -postMessage('c' + config); +if (config.host !== 'showdown') postMessage('c' + config); var testVal = '' + Date.now(); try { localStorage.setItem('showdown_allow3p', testVal);