Lsl fu.php

De DigiWiki.

For an actually readable and color-coded version of the code below, click here

<?php 
class lsl_processor 
{ 
// https://wiki.secondlife.com/wiki/User:SignpostMarv_Martin/PHP/lsl_fu   
// this class is a part of SignpostMarv Martin's "UHU" codebase. 
// All code is my own eccentricity, except for a slightly modified version of VeloxSeverine's $_POST fixer 
 
// Content is available under Attribution-ShareAlike 2.5 @ http://creativecommons.org/licenses/by-sa/2.5/ 
 
    public static $headers; 
    public static $llHTTPRequestPayload; 
    public static $get; 
    public static $post; 
    public static $fixedPOST; 
    function lsl_processor() 
    { 
        if(EXPLICIT_FIX_POST) 
        { 
            $_POST = lsl_processor::fix_post(); 
        } 
        self::$headers = self::parse_llHTTPRequest_headers(); 
        self::$llHTTPRequestPayload = self::$get + lsl_processor::$post; 
    } 
    function parse_llHTTPRequest_headers() 
    { 
        $position_array = explode(', ',substr($_SERVER['HTTP_X_SECONDLIFE_LOCAL_POSITION'],1,-1)); 
        $rotation_array = explode(', ',substr($_SERVER['HTTP_X_SECONDLIFE_LOCAL_ROTATION'],1,-1)); 
        $velocity_array = explode(', ',substr($_SERVER['HTTP_X_SECONDLIFE_LOCAL_VELOCITY'],1,-1)); 
        $position_of_left_bracket = strrpos($_SERVER['HTTP_X_SECONDLIFE_REGION'],'('); 
        $region_name = trim(substr($_SERVER['HTTP_X_SECONDLIFE_REGION'],0,$position_of_left_bracket)); 
        list($global_x,$global_y) = explode(',',trim(substr($_SERVER['HTTP_X_SECONDLIFE_REGION'],$position_of_left_bracket + 1,-1))); 
        $region_array = array($region_name,(integer)$global_x,(integer)$global_y); 
        $headers = array('Accept'=>$_SERVER['HTTP_ACCEPT'], 
            'User-Agent'=>$_SERVER['HTTP_USER_AGENT'], 
            'X-SecondLife-Shard'=>$_SERVER['HTTP_X_SECONDLIFE_SHARD'], 
            'X-SecondLife-Object-Name'=>$_SERVER['HTTP_X_SECONDLIFE_OBJECT_NAME'], 
            'X-SecondLife-Object-Key'=>$_SERVER['HTTP_X_SECONDLIFE_OBJECT_KEY'], 
            'X-SecondLife-Region'=>$_SERVER['HTTP_X_SECONDLIFE_REGION'], 
            'X-SecondLife-Region-Array'=> $region_array, 
            'X-SecondLife-Local-Position'=>array(    'x'=>(float)$position_array[0], 
                                                    'y'=>(float)$position_array[1], 
                                                    'z'=>(float)$position_array[2]), 
            'X-SecondLife-Local-Rotation'=>array(    'x'=>(float)$rotation_array[0], 
                                                    'y'=>(float)$rotation_array[1], 
                                                    'z'=>(float)$rotation_array[2], 
                                                    'w'=>(float)$rotation_array[3]), 
            'X-SecondLife-Local-Velocity'=>array(    'x'=>(float)$velocity_array[0], 
                                                    'y'=>(float)$velocity_array[1], 
                                                    'z'=>(float)$velocity_array[2]), 
            'X-SecondLife-Owner-Name'=>$_SERVER['HTTP_X_SECONDLIFE_OWNER_NAME'], 
            'X-SecondLife-Owner-Key'=>$_SERVER['HTTP_X_SECONDLIFE_OWNER_KEY'] 
        ); 
        if(!strstr($headers['X-SecondLife-Owner-Name'],' ') && $_POST['X-SecondLife-Owner-Name']) 
        { 
            $headers['X-SecondLife-Owner-Name'] == $_POST['X-SecondLife-Owner-Name']; 
        } 
        if(is_array($headers)) 
        { 
            return $headers; 
        } 
        else 
        { 
            return FALSE; 
        } 
    } 
    function fix_post() 
    { 
// Code by VeloxSeverine 
//  http://lslwiki.net/lslwiki/wakka.php?wakka=llHTTPRequest&show_comments=1#comment 
        $p_data = implode('', file('php://input')); 
        $p_data = explode('&', $p_data); 
        $fixedPOST = array(); 
        foreach ($p_data as $p_val) 
        { 
            $d_parts = explode('=', $p_val); 
            $fixedPOST[$d_parts[0]] = urldecode($d_parts[1]); 
        } 
        return $fixedPOST; 
    } 
    function process_agent_info($agent_info) 
    {             
        $always_run = (bool)($agent_info & AGENT_ALWAYS_RUN); 
        $attachments = (bool)($agent_info & AGENT_ATTACHMENTS); 
        $away = (bool)($agent_info & AGENT_AWAY); 
        $busy = (bool)($agent_info & AGENT_BUSY); 
        $crouching = (bool)($agent_info & AGENT_CROUCHING); 
        $flying = (bool)($agent_info & AGENT_FLYING); 
        $in_air = (bool)($agent_info & AGENT_IN_AIR); 
        $mouselook = (bool)($agent_info & AGENT_MOUSELOOK); 
        $on_object = (bool)($agent_info & AGENT_ON_OBJECT); 
        $scripted = (bool)($agent_info & AGENT_SCRIPTED); 
        $sitting = (bool)($agent_info & AGENT_SITTING); 
        $typing = (bool)($agent_info & AGENT_TYPING); 
        $walking = (bool)($agent_info & AGENT_WALKING); 
 
        $info = array(    'always run'=>$always_run, 
                        'attachments'=>$attachments, 
                        'away'=>$away, 
                        'busy'=>$busy, 
                        'crouching'=>$crouching, 
                        'flying'=>$flying, 
                        'in air'=>$in_air, 
                        'mouselook'=>$mouselook, 
                        'on object'=>$on_object, 
                        'scripted'=>$scripted, 
                        'sitting'=>$sitting, 
                        'typing'=>$typing, 
                        'walking'=>$walking); 
        foreach($info as $key => $val) 
        { 
            if($val == '') 
            { 
                $info[$key] = 0; 
            } 
        } 
        return $info; 
    } 
} 
?>
Outils personnels
  • Cette page a été consultée 1 233 fois.
donate
Google Ads