public virtual void CustomiseResponse(ref Hashtable response, UserProfile theUser)
        {
            //default method set up to act as ogs user server
            SimProfile SimInfo= new SimProfile();
            //get siminfo from grid server
            SimInfo = SimInfo.LoadFromGrid(theUser.homeregionhandle, GridURL, GridSendKey, GridRecvKey);
            Int32 circode = (Int32)Convert.ToUInt32(response["circuit_code"]);
            theUser.AddSimCircuit((uint)circode, SimInfo.UUID);
            response["home"] = "{'region_handle':[r" + (SimInfo.RegionLocX * 256).ToString() + ",r" + (SimInfo.RegionLocY * 256).ToString() + "], 'position':[r" + theUser.homepos.X.ToString() + ",r" + theUser.homepos.Y.ToString() + ",r" + theUser.homepos.Z.ToString() + "], 'look_at':[r" + theUser.homelookat.X.ToString() + ",r" + theUser.homelookat.Y.ToString() + ",r" + theUser.homelookat.Z.ToString() + "]}";
            response["sim_ip"] = SimInfo.sim_ip;
            response["sim_port"] = (Int32)SimInfo.sim_port;
            response["region_y"] = (Int32)SimInfo.RegionLocY * 256;
            response["region_x"] = (Int32)SimInfo.RegionLocX * 256;

            //default is ogs user server, so let the sim know about the user via a XmlRpcRequest
            Console.WriteLine(SimInfo.caps_url);
            Hashtable SimParams = new Hashtable();
            SimParams["session_id"] = theUser.CurrentSessionID.ToString();
            SimParams["secure_session_id"] = theUser.CurrentSecureSessionID.ToString();
            SimParams["firstname"] = theUser.firstname;
            SimParams["lastname"] = theUser.lastname;
            SimParams["agent_id"] = theUser.UUID.ToString();
            SimParams["circuit_code"] = (Int32)circode;
            SimParams["startpos_x"] = theUser.homepos.X.ToString();
            SimParams["startpos_y"] = theUser.homepos.Y.ToString();
            SimParams["startpos_z"] = theUser.homepos.Z.ToString();
            ArrayList SendParams = new ArrayList();
            SendParams.Add(SimParams);

            XmlRpcRequest GridReq = new XmlRpcRequest("expect_user", SendParams);
            XmlRpcResponse GridResp = GridReq.Send(SimInfo.caps_url, 3000);
        }
 public virtual UserProfile CreateNewProfile(string firstname, string lastname, string MD5passwd)
 {
     Console.WriteLine("creating new profile for : " + firstname + " , " + lastname);
     UserProfile newprofile = new UserProfile();
     newprofile.homeregionhandle = Helpers.UIntsToLong((997 * 256), (996 * 256));
     newprofile.firstname = firstname;
     newprofile.lastname = lastname;
     newprofile.MD5passwd = MD5passwd;
     newprofile.UUID = LLUUID.Random();
     newprofile.Inventory.CreateRootFolder(newprofile.UUID, true);
     this.UserProfiles.Add(newprofile.UUID, newprofile);
     return newprofile;
 }
        public override void CustomiseResponse(ref System.Collections.Hashtable response, UserProfile theUser)
        {
            Int32 circode = (Int32)response["circuit_code"];
            theUser.AddSimCircuit((uint)circode, LLUUID.Random());
            response["home"] = "{'region_handle':[r" + (997 * 256).ToString() + ",r" + (996 * 256).ToString() + "], 'position':[r" + theUser.homepos.X.ToString() + ",r" + theUser.homepos.Y.ToString() + ",r" + theUser.homepos.Z.ToString() + "], 'look_at':[r" + theUser.homelookat.X.ToString() + ",r" + theUser.homelookat.Y.ToString() + ",r" + theUser.homelookat.Z.ToString() + "]}";
            response["sim_port"] = m_port;
            response["sim_ip"] = m_ipAddr;
            response["region_y"] = (Int32)regionY* 256;
            response["region_x"] = (Int32)regionX* 256;

            string first;
            string last;
            if (response.Contains("first_name"))
            {
                first = (string)response["first_name"];
            }
            else
            {
                first = "test";
            }

            if (response.Contains("last_name"))
            {
                last = (string)response["last_name"];
            }
            else
            {
                last = "User";
            }

            ArrayList InventoryList = (ArrayList)response["inventory-skeleton"];
            Hashtable Inventory1 = (Hashtable)InventoryList[0];

            Login _login = new Login();
            //copy data to login object
            _login.First = first;
            _login.Last = last;
            _login.Agent = new LLUUID((string)response["agent_id"]) ;
            _login.Session = new LLUUID((string)response["session_id"]);
            _login.SecureSession = new LLUUID((string)response["secure_session_id"]);
            _login.BaseFolder = null;
            _login.InventoryFolder = new LLUUID((string)Inventory1["folder_id"]);

            //working on local computer if so lets add to the gridserver's list of sessions?
            if (m_gridServer.GetName() == "Local")
            {
                Console.WriteLine("adding login data to gridserver");
                ((LocalGridBase)this.m_gridServer).AddNewSession(_login);
            }
        }