User:SignpostMarv Martin/PHP/lsl fu.php

From Second Life Wiki
< User:SignpostMarv Martin
Revision as of 16:50, 30 March 2008 by Uzume Grigorovich (talk | contribs) (php code tagging)
Jump to navigation Jump to search

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

<php><?php class lsl_processor { // 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 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; } } ?></php>