aboutsummaryrefslogtreecommitdiff
blob: eacb99e06bfeb997eaf98d613c4834d5aa9dc719 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
<?php
/**
 *  Main handler.
 *  @package mirror
 *	@subpackage pub
 */
error_reporting(0);  // hide all errors
require_once('./cfg/config.php');  // config file that defines constants

// if we don't have an os, make it windows, playing the odds
if (empty($_GET['os'])) {
    $_GET['os'] = 'Any';
}

// do we even have an os or product?
if (!empty($_GET['os'])&&!empty($_GET['product'])) {
    require_once(LIB.'/db.php');  // core mysql wrappers
    db_connect(DBHOST,DBUSER,DBPASS);  // open persistent connection to db
    db_select(DBNAME);  // select db

    // clean in os and product strings
    $os_name = mysql_real_escape_string(trim(strtolower($_GET['os'])));
    $product_name = mysql_real_escape_string(trim(strtolower($_GET['product'])));

    // get os and product IDs
    $os_id = db_name_to_id('mirror_os','os_id','os_name',$os_name);
    $product_id = db_name_to_id('mirror_products','product_id','product_name',$product_name);

    // do we have a valid os and product?
    if (!empty($os_id)&&!empty($product_id)) {
        $location = db_get_one("SELECT location_id,location_path FROM mirror_locations WHERE product_id={$product_id} AND os_id={$os_id}");

        // did we get a valid location?
        if (!empty($location)) {
            $mirror = db_get_one("SELECT mirror_mirrors.mirror_id,mirror_baseurl FROM mirror_mirrors, mirror_location_mirror_map WHERE mirror_mirrors.mirror_id = mirror_location_mirror_map.mirror_id AND mirror_location_mirror_map.location_id = {$location['location_id']} AND mirror_active='1' AND location_active ='1' ORDER BY rand()*(1/mirror_rating)");

            // did we get a valid mirror?
            if (!empty($mirror)) {

                // if logging is enabled, insert log
                if (LOGGING) {
                    db_query("UPDATE mirror_mirrors SET mirror_count=mirror_count+1 WHERE mirror_id={$mirror['mirror_id']}");
                    db_query("UPDATE mirror_products SET product_count=product_count+1 WHERE product_id={$product_id}");
                }
                
                // LANGUAGE HACK
                if (!empty($_GET['lang'])) {
////                    $location['location_path'] = str_replace('x86',$_GET['lang'],$location['location_path']);
                    $location['location_path'] = str_replace('en-US',$_GET['lang'],$location['location_path']);
                }
				
				// BitTorrent HACK - robbat2
				if (!empty($_GET['extra'])) {
					$extra = $_GET['extra'];
					$location['location_path'] .= ereg_replace('\?.*|&.*','',$extra);
				}

                // if we are just testing, then just print and exit.
                if (!empty($_GET['print'])) {
                    print('Location: '.$mirror['mirror_baseurl'].$location['location_path']);
                    exit;
                }

                // otherwise, by default, redirect them and exit
                header('Location: '.$mirror['mirror_baseurl'].$location['location_path']);
                exit;
            }
        }
    }
}

// if we get here, the request was invalid; redirect to mozilla home
header('Location: http://www.gentoo.org/');
exit;
?>