clockwerk-www – Rev 9

Subversion Repositories:
Rev:
<?php

/////////////////////////////////////////////////////////////
// Wizardry and Steamworks (c) was.fm - 2014, License: MIT //
//                                                         //
// Permission is hereby granted, free of charge, to any    //
// person obtaining a copy of this software and associated //
// documentation files (the "Software"), to deal in the    //
// Software without restriction, //including without       //
// limitation the rights to use, copy, modify, merge,      //
// publish, distribute, sublicense, and/or sell copies of  //
// the Software, and to permit persons to whom the         //
// Software is furnished to do so, subject to the          //
// following conditions:                                   //
//                                                         //
// The above copyright notice and this permission notice   //
// shall be included in all copies or substantial portions //
// of the Software.                                        //
//                                                         //
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF   //
// ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT         //
// LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS   //
// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO     //
// EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE  //
// FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER      //
// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING    //
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR      //
// THE USE OR OTHER DEALINGS IN THE SOFTWARE.              //
/////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////
//                    CONFIGURATION                        //
/////////////////////////////////////////////////////////////
// Hostname or IP of your OpenSim MySQL server.
 define("MYSQL_HOSTNAME", "localhost");
// Username of the OpenSim MySQL user.
define("MYSQL_USERNAME", "opensim");
// Password of the OpenSim MySQL user.
define("MYSQL_PASSWORD", "***");
// Name of the OpenSim database on the MySQL server.
define("MYSQL_DATABASE", "opensim");

require_once 'lib/recaptchalib.php';
require_once 'lib/wasRemoteAdmin.php';

define('RECAPTCHA_PRIVATE_KEY', '6Lcz9ukSAAAAAC3u90rcOIdnNnaK_JgMjrOsSzZr');

$first = $_POST["first"];
$last = $_POST["last"];
$region = $_POST["region"];
$password = $_POST["password"];

$resp = recaptcha_check_answer(RECAPTCHA_PRIVATE_KEY,
$_SERVER["REMOTE_ADDR"],
$_POST["recaptcha_challenge_field"],
$_POST["recaptcha_response_field"]);

if ($resp->is_valid) {
    $req = new wasRemoteAdmin('http://127.0.0.1:10000', 'opensim');
    $ret = $req->admin_authenticate_user($first, $last, MD5($password), '1');
    $rep = new SimpleXMLElement($ret);
    foreach($rep->params->param->value->struct->member as $member) {
        if ($member->name == "success" && $member->value->boolean == "0") {
            echo 'Sorry, wrong password.';
            exit;
        }
    }
    try {
        $mysql = new PDO('mysql:host=MYSQL_HOSTNAME;dbname=MYSQL_DATABASE;', 'MYSQL_USERNAME', 'MYSQL_PASSWORD');
        $mysql->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        $query = $mysql->prepare("INSERT INTO DB_REALM.account (username,sha_pass_hash,email) VALUES(:username,:password,:email)");
        $query = $mysql->prepare("SELECT RegionName FROM regions WHERE owner_uuid=(SELECT PrincipalID FROM UserAccounts WHERE FirstName=:first AND LastName=:last)");
        $query->bindParam(':first', $first);
        $query->bindParam(':last', $last);
        $query->execute();
    }
    catch(PDOException $e) {
        print 'The given agent is not the owner of the region to download.';
        return 1;
    }
    while ($result = $query->fetchObject()) {
        if ($result->RegionName == $region) {
            $oar_path = '/var/lib/oar/'.$region.'.oar';
            if (file_exists($oar_path)) {
                if (false !== ($handler = fopen($oar_path, 'r'))) {
                    header('Content-Description: File Transfer');
                    header('Content-Type: application/x-gzip-compressed');
                    header('Content-Disposition: attachment; filename='.basename($oar_path));
                    header('Content-Transfer-Encoding: binary');
                    header('Expires: 0');
                    header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
                    header('Pragma: public');
                    header('Content-Length: '.filesize($oar_path));
                    while (false !== ($chunk = fread($handler, 4096))) {
                        echo $chunk;
                    }
                }
                exit;
            }
        }
    } 
}

echo '<p>Sorry, incorrect captcha. Please try again.</p>';