Пример #1
0
/**
 * Wrapper function to set all remotehost information, by default this will execute if the invocationType is
 * not set to "xml-rpc" (xml-rpc calls this after re-populating the $_SERVER array)
 *
 * @param boolean $run Ignore invocationType checking?
 */
function MAX_remotehostSetInfo($run = false)
{
    if (empty($GLOBALS['_OA']['invocationType']) || $run || $GLOBALS['_OA']['invocationType'] != 'xmlrpc') {
        MAX_remotehostProxyLookup();
        MAX_remotehostReverseLookup();
        //MAX_remotehostSetClientInfo();  // now moved into plugin
        MAX_remotehostSetGeoInfo();
    }
}
 /**
  * @todo future test case
  * A function to convert the $_SERVER['REMOTE_ADDR'] global variable
  * from the current value to the real remote viewer's value, should
  * that viewer be coming via an HTTP proxy.
  *
  * Only performs this conversion if the option to do so is set in the
  * configuration file.
  */
 function test_MAX_remotehostProxyLookup()
 {
     $serverSave = $_SERVER;
     // This $_SERVER dump was provided by a user running HAProxy
     $sampleSERVER = array('HTTP_HOST' => 'max.i12.de', 'HTTP_USER_AGENT' => 'Mozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.8.1.5) Gecko/20070718 Fedora/2.0.0.5-1.fc7 Firefox/2.0.0.5', 'HTTP_ACCEPT' => 'text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5', 'HTTP_ACCEPT_LANGUAGE' => 'en-gb,en;q=0.5', 'HTTP_ACCEPT_ENCODING' => 'gzip,deflate', 'HTTP_ACCEPT_CHARSET' => 'ISO-8859-1,utf-8;q=0.7,*;q=0.7', 'HTTP_KEEP_ALIVE' => '300', 'HTTP_COOKIE' => 'phpAds_id=abcdef1234567890acdef1234567890a', 'HTTP_CONNECTION' => 'close', 'PATH' => '/usr/bin:/bin:/usr/sbin:/sbin', 'SERVER_SIGNATURE' => '<address>Apache/2.0.59 (Unix) Server at max.i12.de Port 80</address>', 'SERVER_SOFTWARE' => 'Apache/2.0.59 (Unix)', 'SERVER_NAME' => 'dev.openx.org', 'SERVER_ADDR' => '10.0.0.1', 'SERVER_PORT' => '80', 'REMOTE_ADDR' => '10.0.0.2', 'DOCUMENT_ROOT' => '/var/www/html/live-openads', 'SERVER_ADMIN' => '*****@*****.**', 'SCRIPT_FILENAME' => '/var/www/html/live-openads/lib/max/Delivery/tests/unit/remotehost.del.test.php', 'REMOTE_PORT' => '49083', 'GEOIP_CONTINENT_CODE' => '--', 'GEOIP_COUNTRY_CODE' => '--', 'GEOIP_COUNTRY_NAME' => 'N/A', 'GEOIP_DMA_CODE' => '0', 'GEOIP_AREA_CODE' => '0', 'GEOIP_LATITUDE' => '0.000000', 'GEOIP_LONGITUDE' => '0.000000', 'GEOIP_ISP' => 'Nildram', 'GATEWAY_INTERFACE' => 'CGI/1.1', 'SERVER_PROTOCOL' => 'HTTP/1.1', 'REQUEST_METHOD' => 'GET', 'QUERY_STRING' => '', 'REQUEST_URI' => '/lib/max/Delivery/tests/unit/remotehost.del.test.php', 'SCRIPT_NAME' => '/lib/max/Delivery/tests/unit/remotehost.del.test.php', 'PHP_SELF' => '/lib/max/Delivery/tests/unit/remotehost.del.test.php', 'REQUEST_TIME' => time());
     // I am unsure if this is a bug in OpenX or HAProxy, but the above dump does not contain
     // either an HTTP_VIA/REMOTE_HOST header, therefore OpenX assumes this is not proxied
     // I am adding it to "fix" the test
     $GLOBALS['_MAX']['CONF']['logging']['proxyLookup'] = true;
     // Check if just HTTP_VIA in the above array:
     $_SERVER = $sampleSERVER;
     $_SERVER['HTTP_VIA'] = '194.85.1.1 (Squid/2.4.STABLE7)';
     $_SERVER['HTTP_FORWARDED_FOR'] = '124.124.124.124';
     $return = MAX_remotehostProxyLookup();
     $this->assertTrue($_SERVER['REMOTE_ADDR'] == $_SERVER['HTTP_FORWARDED_FOR']);
     // Test with 'HTTP_X_FORWARDED_FOR' instead of via
     $_SERVER = $sampleSERVER;
     $_SERVER['HTTP_X_FORWARDED_FOR'] = '125.125.125.125';
     $return = MAX_remotehostProxyLookup();
     $this->assertTrue($_SERVER['REMOTE_ADDR'] == $_SERVER['HTTP_X_FORWARDED_FOR']);
     // Check that if neither are set, then the remotehost lookup entry is performed
     $_SERVER = $sampleSERVER;
     $_SERVER['REMOTE_HOST'] = 'my.proxy.com';
     $_SERVER['HTTP_CLIENT_IP'] = '126.126.126.126';
     $return = MAX_remotehostProxyLookup();
     $this->assertTrue($_SERVER['REMOTE_ADDR'] == $_SERVER['HTTP_CLIENT_IP']);
     // Check that with multiple X_FORWARDED_FOR entries, the leftmost value is used
     $_SERVER = $sampleSERVER;
     $_SERVER['HTTP_X_FORWARDED_FOR'] = '111.111.111.111, 222.222.222.222';
     $return = MAX_remotehostProxyLookup();
     $this->assertTrue($_SERVER['REMOTE_ADDR'] == '111.111.111.111');
     // Check that with multiple X_FORWARDED_FOR entries, the leftmost NON-PRIVATE value is used
     $_SERVER = $sampleSERVER;
     $_SERVER['HTTP_X_FORWARDED_FOR'] = '10.10.10.10, 111.111.111.111, 222.222.222.222';
     $return = MAX_remotehostProxyLookup();
     $this->assertTrue($_SERVER['REMOTE_ADDR'] == '111.111.111.111');
     // Check that with multiple X_FORWARDED_FOR entries, the leftmost NON-PRIVATE value is used
     $_SERVER = $sampleSERVER;
     $_SERVER['HTTP_X_FORWARDED_FOR'] = '10.10.10.10, 192.168.1.1, 111.111.111.111, 222.222.222.222';
     $return = MAX_remotehostProxyLookup();
     $this->assertTrue($_SERVER['REMOTE_ADDR'] == '111.111.111.111');
     $_SERVER = $serverSave;
 }
Пример #3
0
| http://www.revive-adserver.com                                            |
|                                                                           |
| Copyright: See the COPYRIGHT.txt file.                                    |
| License: GPLv2 or later, see the LICENSE.txt file.                        |
+---------------------------------------------------------------------------+
*/
require_once MAX_PATH . '/lib/OA/Dal.php';
require_once MAX_PATH . '/www/admin/lib-banner.inc.php';
require_once LIB_PATH . '/Plugin/Component.php';
require_once MAX_PATH . '/lib/max/Dal/Admin/Acls.php';
if (!isset($GLOBALS['_MAX']['FILES']['/lib/max/Delivery/remotehost.php'])) {
    // Required by PHP5.1.2
    require_once MAX_PATH . '/lib/max/Delivery/remotehost.php';
}
// Initialize the client info to enable client targeting options
MAX_remotehostProxyLookup();
MAX_remotehostReverseLookup();
//MAX_remotehostSetClientInfo();  // moved to plugin
MAX_remotehostSetGeoInfo();
/**
 * @todo I believe the following is unnecessary with the "MAX_remotehostSetGeoInfo()" above
 * However the isAllowed() methods for the Geo-Plugins will have to be updated
 */
// Register the geotargeting information if necessary
if (!isset($GLOBALS['_MAX']['GEO_DATA']) && (!empty($conf['geotargeting']['type']) && $conf['geotargeting']['type'] != 'none')) {
    $oGeoComponent = OX_Component::factoryByComponentIdentifier($conf['geotargeting']['type']);
    // Get geotargeting info
    if ($oGeoComponent) {
        // Set the geotargeting IP to the fixed test address
        // (IP Address used to determine which (if any) MaxMind databases are installed)
        $GLOBALS['_MAX']['GEO_IP'] = '24.24.24.24';