diff -rup secondlife/README.txt temp/secondlife/README.txt
--- secondlife/README.txt	2007-11-28 16:46:08.000000000 +0100
+++ temp/secondlife/README.txt	2008-12-23 14:21:09.000000000 +0100
@@ -58,7 +58,6 @@ between your web server and your Second 
 TO DO
 -----
 
-- Limit IP address range to accept requests from to Linden Labs servers.
 - Map Second Life users to Drupal users.
 
 Bugs/Features/Patches:
@@ -66,8 +65,9 @@ Bugs/Features/Patches:
 If you want to report bugs, feature requests, or submit a patch, please do so
 at the project page on the Drupal web site.
 
-Author
+Authors
 ------
 Khalid Baheyeldin (http://2bits.com)
+Drupal6 version : ssm2017 Binder (http://ssm2017.free.fr)
 
-The author can also be contacted for paid customizations of this and other modules.
+The authors can also be contacted for paid customizations of this and other modules.
diff -rup secondlife/secondlife.module temp/secondlife/secondlife.module
--- secondlife/secondlife.module	2008-12-16 17:05:54.000000000 +0100
+++ temp/secondlife/secondlife.module	2008-12-23 15:15:02.000000000 +0100
@@ -61,7 +61,7 @@ function secondlife_settings() {
     '#type'          => 'radios',
     '#title'         => t('Enable timing of requests ?'),
     '#default_value' => variable_get('secondlife_timer', 0),
-    '#options'       => array( 0 => t('Disabled'), 1 => t('Enabled') ),
+    '#options'       => array(0 => t('Disabled'), 1 => t('Enabled')),
     '#description'   => t('Select whether you want to record timing information for how much it takes to process requests from the clients. A "timer=" is send with the response to the client, and if also writting to the debugging output (if enabled).'),
   );
 
@@ -108,17 +108,16 @@ function secondlife_settings() {
 function secondlife_request() {
   // check for server ips
   $is_ll = FALSE;
-  $ll_subnets = explode(",", variable_get('secondlife_allowed_ips', SECONDLIFE_LINDEN_SERVERS) );
-  foreach( $ll_subnets as $network) {
-    if(secondlife_netmatch($network,$_SERVER['REMOTE_ADDR'] )) {
+  $ll_subnets = explode(",", variable_get('secondlife_allowed_ips', SECONDLIFE_LINDEN_SERVERS));
+  foreach ($ll_subnets as $network) {
+    if (secondlife_netmatch($network, $_SERVER['REMOTE_ADDR'])) {
       $is_ll = TRUE;
       break;
     }
   }
-  if ( !$is_ll ) {
+  if (!$is_ll) {
     secondlife_debug("*********************************************************");
-    secondlife_debug(" WRONG IP ");
-    secondlife_debug($_SERVER['REMOTE_ADDR']);
+    secondlife_debug(" WRONG IP : ". $_SERVER['REMOTE_ADDR']);
     secondlife_debug("*********************************************************");
     secondlife_get_session();
     return;
@@ -154,11 +153,11 @@ function secondlife_get_session() {
   secondlife_debug("=============================");
   secondlife_debug(format_date(time(), 'custom', 'Y-m-d G:i:s'));
   secondlife_debug("=============================");
-  foreach($_SERVER as $key => $value) {
+  foreach ($_SERVER as $key => $value) {
     secondlife_debug("SERVER: $key: $value");
   }
 
-  foreach($_POST as $key => $value) {
+  foreach ($_POST as $key => $value) {
     secondlife_debug("POST: $key: $value");
   }
 
@@ -185,7 +184,7 @@ function secondlife_get_session() {
   $sl->position_y  = $temp[2][0];
   $sl->position_z  = $temp[3][0];
 
-  secondlife_debug("SL: " . print_r($sl, TRUE) . "\n", FILE_APPEND);
+  secondlife_debug("SL: ". print_r($sl, TRUE). "\n", FILE_APPEND);
 
   return $sl;
 }
@@ -194,7 +193,7 @@ function secondlife_get_session() {
  */
 function secondlife_parse_args($arg) {
   $args = array();
-  foreach(explode(variable_get('secondlife_args_separator', ':'), $arg) as $pair) {
+  foreach (explode(variable_get('secondlife_args_separator', ':'), $arg) as $pair) {
     list($key, $value) = explode('=', $pair);
     $args[$key] = $value;
     secondlife_debug("ARGS: $key=$value");
@@ -209,20 +208,20 @@ function secondlife_send_response(&$sl) 
   $sl->response['app'] = $sl->app;
   $sl->response['cmd'] = $sl->cmd;
 
-  foreach($sl->response as $key => $value) {
+  foreach ($sl->response as $key => $value) {
     secondlife_debug("RESPONSE: $key = $value");
   }
 
-  switch($sl->output_type) {
+  switch ($sl->output_type) {
     default:
     case 'full':
-      foreach($sl->response as $key => $value) {
+      foreach ($sl->response as $key => $value) {
         print "$key=$value:";
       }
       print "\n";
       break;
     case 'message':
-      print $sl->response['message'];
+      print strip_tags($sl->response['message']);
       break;
   }
       
@@ -251,7 +250,7 @@ function secondlife_timer() {
  * Compute milliseconds.
  */
 function _secondlife_getmillisecs() {
-  list($usec, $sec) = explode (' ', microtime());
+  list($usec, $sec) = explode(' ', microtime());
   return (double) $sec + $usec;
 }
 
@@ -277,14 +276,14 @@ function secondlife_netmatch($network, $
  */
 function secondlife_get_data_between($src, $left, $right) {
   // function to return the data between two tokens (VERY USEFUL)
-  $ids = stripos($src,$left) + strlen($left);
-  if($ids === false) return false;
-  $ide = stripos($src,$right,$ids);
-  if($ide === false) return false;
-  return(substr($src,$ids,$ide - $ids));
+  $ids = stripos($src, $left) + strlen($left);
+  if ($ids === false) return false;
+  $ide = stripos($src, $right,$ids);
+  if ($ide === false) return false;
+  return(substr($src, $ids, $ide - $ids));
 }
 
-function secondlife_rpc ($channel, $intVal, $stringVal) {
+function secondlife_rpc($channel, $intVal, $stringVal) {
   // function to emulate xml-rpc for SL remote data connections
   // encapsulate request data in xml
   $xml = "<?xml version=\"1.0\"?>
@@ -318,3 +317,36 @@ function secondlife_rpc ($channel, $intV
   // return the response data in an array
   return array('channel' => $channel, 'string' => $sVal, 'integer' => $iVal);
 }
+/**
+* Get the linden user profile
+*/
+function secondlife_get_linden_user_profile($user_key) {
+  $fp = fsockopen("world.secondlife.com", 80, $errno, $errstr, 30);
+  if (!$fp) {
+    $result = "$errstr ($errno)<br />\n";
+  }
+  else {
+    $out = "GET /resident/".$user_key." HTTP/1.1\r\n";
+    $out .= "Host: world.secondlife.com\r\n";
+    $out .= "Connection: Close\r\n\r\n";
+    fwrite($fp, $out);
+    $result = '';
+    while (!feof($fp)) {
+      $result .= fgets($fp, 128);
+    }
+    fclose($fp);
+  }
+  return $result;
+}
+/**
+* Extracts the profile picture key from the linden user profile
+*/
+function secondlife_extract_picture_key($profile_page) {
+  return secondlife_get_data_between($profile_page, '<img alt="profile image" src="http://secondlife.com/app/image/','/1" class="parcelimg" />');
+}
+/**
+* Extracts the user name from the linden user profile
+*/
+function secondlife_extract_username($profile_page) {
+  return secondlife_get_data_between($profile_page, '<title>','</title>');
+}
\ No newline at end of file
