More refactoring.
Changed AuthenticateSession handling, now calls a method in UDPServer. (but is likely to change again soon)zircon^2
parent
7f42258e62
commit
3f39648605
|
@ -150,16 +150,24 @@
|
||||||
</Compile>
|
</Compile>
|
||||||
<Compile Include="SimClient.Grid.cs">
|
<Compile Include="SimClient.Grid.cs">
|
||||||
<SubType>Code</SubType>
|
<SubType>Code</SubType>
|
||||||
|
<DependentUpon>SimClient.cs</DependentUpon>
|
||||||
</Compile>
|
</Compile>
|
||||||
<Compile Include="SimClient.PacketHandlers.cs">
|
<Compile Include="SimClient.PacketHandlers.cs">
|
||||||
<SubType>Code</SubType>
|
<SubType>Code</SubType>
|
||||||
|
<DependentUpon>SimClient.cs</DependentUpon>
|
||||||
</Compile>
|
</Compile>
|
||||||
|
<Compile Include="SimClient.ProcessPackets.cs">
|
||||||
|
<SubType>Code</SubType>
|
||||||
|
<DependentUpon>SimClient.cs</DependentUpon>
|
||||||
|
</Compile>
|
||||||
|
|
||||||
<Compile Include="SimClientBase.cs">
|
<Compile Include="SimClientBase.cs">
|
||||||
<SubType>Code</SubType>
|
<SubType>Code</SubType>
|
||||||
</Compile>
|
</Compile>
|
||||||
<Compile Include="UDPServer.cs">
|
<Compile Include="UDPServer.cs">
|
||||||
<SubType>Code</SubType>
|
<SubType>Code</SubType>
|
||||||
</Compile>
|
</Compile>
|
||||||
|
|
||||||
<Compile Include="VersionInfo.cs">
|
<Compile Include="VersionInfo.cs">
|
||||||
<SubType>Code</SubType>
|
<SubType>Code</SubType>
|
||||||
</Compile>
|
</Compile>
|
||||||
|
@ -180,12 +188,14 @@
|
||||||
</Compile>
|
</Compile>
|
||||||
<Compile Include="world\Avatar.Client.cs">
|
<Compile Include="world\Avatar.Client.cs">
|
||||||
<SubType>Code</SubType>
|
<SubType>Code</SubType>
|
||||||
|
<DependentUpon>Avatar.cs</DependentUpon>
|
||||||
</Compile>
|
</Compile>
|
||||||
<Compile Include="world\Avatar.cs">
|
<Compile Include="world\Avatar.cs">
|
||||||
<SubType>Code</SubType>
|
<SubType>Code</SubType>
|
||||||
</Compile>
|
</Compile>
|
||||||
<Compile Include="world\Avatar.Update.cs">
|
<Compile Include="world\Avatar.Update.cs">
|
||||||
<SubType>Code</SubType>
|
<SubType>Code</SubType>
|
||||||
|
<DependentUpon>Avatar.cs</DependentUpon>
|
||||||
</Compile>
|
</Compile>
|
||||||
<Compile Include="world\AvatarAnimations.cs">
|
<Compile Include="world\AvatarAnimations.cs">
|
||||||
<SubType>Code</SubType>
|
<SubType>Code</SubType>
|
||||||
|
@ -207,9 +217,11 @@
|
||||||
</Compile>
|
</Compile>
|
||||||
<Compile Include="world\World.PacketHandlers.cs">
|
<Compile Include="world\World.PacketHandlers.cs">
|
||||||
<SubType>Code</SubType>
|
<SubType>Code</SubType>
|
||||||
|
<DependentUpon>World.cs</DependentUpon>
|
||||||
</Compile>
|
</Compile>
|
||||||
<Compile Include="world\World.Scripting.cs">
|
<Compile Include="world\World.Scripting.cs">
|
||||||
<SubType>Code</SubType>
|
<SubType>Code</SubType>
|
||||||
|
<DependentUpon>World.cs</DependentUpon>
|
||||||
</Compile>
|
</Compile>
|
||||||
<Compile Include="world\scripting\IScriptContext.cs">
|
<Compile Include="world\scripting\IScriptContext.cs">
|
||||||
<SubType>Code</SubType>
|
<SubType>Code</SubType>
|
||||||
|
|
|
@ -21,6 +21,7 @@
|
||||||
<include name="SimClient.cs" />
|
<include name="SimClient.cs" />
|
||||||
<include name="SimClient.Grid.cs" />
|
<include name="SimClient.Grid.cs" />
|
||||||
<include name="SimClient.PacketHandlers.cs" />
|
<include name="SimClient.PacketHandlers.cs" />
|
||||||
|
<include name="SimClient.ProcessPackets.cs" />
|
||||||
<include name="SimClientBase.cs" />
|
<include name="SimClientBase.cs" />
|
||||||
<include name="UDPServer.cs" />
|
<include name="UDPServer.cs" />
|
||||||
<include name="VersionInfo.cs" />
|
<include name="VersionInfo.cs" />
|
||||||
|
|
|
@ -1,186 +0,0 @@
|
||||||
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
|
||||||
<PropertyGroup>
|
|
||||||
<ProjectType>Local</ProjectType>
|
|
||||||
<ProductVersion>8.0.50727</ProductVersion>
|
|
||||||
<SchemaVersion>2.0</SchemaVersion>
|
|
||||||
<ProjectGuid>{6E597AD4-1F7D-4389-B04C-403EF1046AAB}</ProjectGuid>
|
|
||||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
|
||||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
|
||||||
<ApplicationIcon>
|
|
||||||
</ApplicationIcon>
|
|
||||||
<AssemblyKeyContainerName>
|
|
||||||
</AssemblyKeyContainerName>
|
|
||||||
<AssemblyName>OpenSim</AssemblyName>
|
|
||||||
<DefaultClientScript>JScript</DefaultClientScript>
|
|
||||||
<DefaultHTMLPageLayout>Grid</DefaultHTMLPageLayout>
|
|
||||||
<DefaultTargetSchema>IE50</DefaultTargetSchema>
|
|
||||||
<DelaySign>false</DelaySign>
|
|
||||||
<OutputType>Exe</OutputType>
|
|
||||||
<AppDesignerFolder>
|
|
||||||
</AppDesignerFolder>
|
|
||||||
<RootNamespace>OpenSim</RootNamespace>
|
|
||||||
<StartupObject>
|
|
||||||
</StartupObject>
|
|
||||||
<FileUpgradeFlags>
|
|
||||||
</FileUpgradeFlags>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
|
||||||
<AllowUnsafeBlocks>False</AllowUnsafeBlocks>
|
|
||||||
<BaseAddress>285212672</BaseAddress>
|
|
||||||
<CheckForOverflowUnderflow>False</CheckForOverflowUnderflow>
|
|
||||||
<ConfigurationOverrideFile>
|
|
||||||
</ConfigurationOverrideFile>
|
|
||||||
<DefineConstants>TRACE;DEBUG</DefineConstants>
|
|
||||||
<DocumentationFile>
|
|
||||||
</DocumentationFile>
|
|
||||||
<DebugSymbols>True</DebugSymbols>
|
|
||||||
<FileAlignment>4096</FileAlignment>
|
|
||||||
<Optimize>False</Optimize>
|
|
||||||
<OutputPath>..\bin\</OutputPath>
|
|
||||||
<RegisterForComInterop>False</RegisterForComInterop>
|
|
||||||
<RemoveIntegerChecks>False</RemoveIntegerChecks>
|
|
||||||
<TreatWarningsAsErrors>False</TreatWarningsAsErrors>
|
|
||||||
<WarningLevel>4</WarningLevel>
|
|
||||||
<NoWarn>
|
|
||||||
</NoWarn>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
|
||||||
<AllowUnsafeBlocks>False</AllowUnsafeBlocks>
|
|
||||||
<BaseAddress>285212672</BaseAddress>
|
|
||||||
<CheckForOverflowUnderflow>False</CheckForOverflowUnderflow>
|
|
||||||
<ConfigurationOverrideFile>
|
|
||||||
</ConfigurationOverrideFile>
|
|
||||||
<DefineConstants>TRACE</DefineConstants>
|
|
||||||
<DocumentationFile>
|
|
||||||
</DocumentationFile>
|
|
||||||
<DebugSymbols>False</DebugSymbols>
|
|
||||||
<FileAlignment>4096</FileAlignment>
|
|
||||||
<Optimize>True</Optimize>
|
|
||||||
<OutputPath>..\bin\</OutputPath>
|
|
||||||
<RegisterForComInterop>False</RegisterForComInterop>
|
|
||||||
<RemoveIntegerChecks>False</RemoveIntegerChecks>
|
|
||||||
<TreatWarningsAsErrors>False</TreatWarningsAsErrors>
|
|
||||||
<WarningLevel>4</WarningLevel>
|
|
||||||
<NoWarn>
|
|
||||||
</NoWarn>
|
|
||||||
</PropertyGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<Reference Include="System">
|
|
||||||
<HintPath>System.dll</HintPath>
|
|
||||||
<Private>False</Private>
|
|
||||||
</Reference>
|
|
||||||
<Reference Include="System.Data" />
|
|
||||||
<Reference Include="System.Xml">
|
|
||||||
<HintPath>System.Xml.dll</HintPath>
|
|
||||||
<Private>False</Private>
|
|
||||||
</Reference>
|
|
||||||
<Reference Include="libsecondlife.dll">
|
|
||||||
<HintPath>..\bin\libsecondlife.dll</HintPath>
|
|
||||||
<Private>False</Private>
|
|
||||||
</Reference>
|
|
||||||
<Reference Include="Axiom.MathLib.dll">
|
|
||||||
<HintPath>..\bin\Axiom.MathLib.dll</HintPath>
|
|
||||||
<Private>False</Private>
|
|
||||||
</Reference>
|
|
||||||
<Reference Include="Db4objects.Db4o.dll">
|
|
||||||
<HintPath>..\bin\Db4objects.Db4o.dll</HintPath>
|
|
||||||
<Private>False</Private>
|
|
||||||
</Reference>
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<ProjectReference Include="..\OpenSim.Framework.Console\OpenSim.Framework.Console.csproj">
|
|
||||||
<Name>OpenSim.Framework.Console</Name>
|
|
||||||
<Project>{1492353A-6133-4557-9AD8-6E24386D70F8}</Project>
|
|
||||||
<Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package>
|
|
||||||
<Private>False</Private>
|
|
||||||
</ProjectReference>
|
|
||||||
<ProjectReference Include="..\OpenSim.Physics\Manager\OpenSim.Physics.Manager.csproj">
|
|
||||||
<Name>OpenSim.Physics.Manager</Name>
|
|
||||||
<Project>{0FD686EA-1917-469E-A885-1D9DEEA1D340}</Project>
|
|
||||||
<Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package>
|
|
||||||
<Private>False</Private>
|
|
||||||
</ProjectReference>
|
|
||||||
<ProjectReference Include="..\OpenSim.Framework\OpenSim.Framework.csproj">
|
|
||||||
<Name>OpenSim.Framework</Name>
|
|
||||||
<Project>{E267CE4E-F355-4A27-8D0D-CA48FEE7F978}</Project>
|
|
||||||
<Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package>
|
|
||||||
<Private>False</Private>
|
|
||||||
</ProjectReference>
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<Compile Include="Grid.cs">
|
|
||||||
<SubType>Code</SubType>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="OpenSimApplication.cs">
|
|
||||||
<SubType>Code</SubType>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="OpenSimMain.cs">
|
|
||||||
<SubType>Code</SubType>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="OpenSimRoot.cs">
|
|
||||||
<SubType>Code</SubType>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="QueItem.cs">
|
|
||||||
<SubType>Code</SubType>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="SimClient.cs">
|
|
||||||
<SubType>Code</SubType>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="SimConsole.cs">
|
|
||||||
<SubType>Code</SubType>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="VersionInfo.cs">
|
|
||||||
<SubType>Code</SubType>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="Assets\AssetCache.cs">
|
|
||||||
<SubType>Code</SubType>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="Assets\InventoryCache.cs">
|
|
||||||
<SubType>Code</SubType>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="CAPS\SimHttp.cs">
|
|
||||||
<SubType>Code</SubType>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="types\Mesh.cs">
|
|
||||||
<SubType>Code</SubType>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="types\Triangle.cs">
|
|
||||||
<SubType>Code</SubType>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="UserServer\LocalUserProfileManager.cs">
|
|
||||||
<SubType>Code</SubType>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="UserServer\LoginServer.cs">
|
|
||||||
<SubType>Code</SubType>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="world\Avatar.cs">
|
|
||||||
<SubType>Code</SubType>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="world\AvatarAnimations.cs" />
|
|
||||||
<Compile Include="world\Entity.cs">
|
|
||||||
<SubType>Code</SubType>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="world\Primitive.cs">
|
|
||||||
<SubType>Code</SubType>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="world\ScriptEngine.cs">
|
|
||||||
<SubType>Code</SubType>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="world\SurfacePatch.cs">
|
|
||||||
<SubType>Code</SubType>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="world\World.cs">
|
|
||||||
<SubType>Code</SubType>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="world\scripting\IScript.cs">
|
|
||||||
<SubType>Code</SubType>
|
|
||||||
</Compile>
|
|
||||||
</ItemGroup>
|
|
||||||
<Import Project="$(MSBuildBinPath)\Microsoft.CSHARP.Targets" />
|
|
||||||
<PropertyGroup>
|
|
||||||
<PreBuildEvent>
|
|
||||||
</PreBuildEvent>
|
|
||||||
<PostBuildEvent>
|
|
||||||
</PostBuildEvent>
|
|
||||||
</PropertyGroup>
|
|
||||||
</Project>
|
|
|
@ -1,69 +0,0 @@
|
||||||
<?xml version="1.0" ?>
|
|
||||||
<project name="OpenSim" default="build">
|
|
||||||
<target name="build">
|
|
||||||
<echo message="Build Directory is ${project::get-base-directory()}/${build.dir}" />
|
|
||||||
<mkdir dir="${project::get-base-directory()}/${build.dir}" />
|
|
||||||
<copy todir="${project::get-base-directory()}/${build.dir}">
|
|
||||||
<fileset basedir="${project::get-base-directory()}">
|
|
||||||
</fileset>
|
|
||||||
</copy>
|
|
||||||
<csc target="exe" debug="${build.debug}" unsafe="False" define="TRACE;DEBUG" output="${project::get-base-directory()}/${build.dir}/${project::get-name()}.exe">
|
|
||||||
<resources prefix="OpenSim" dynamicprefix="true" >
|
|
||||||
</resources>
|
|
||||||
<sources failonempty="true">
|
|
||||||
<include name="AgentAssetUpload.cs" />
|
|
||||||
<include name="Grid.cs" />
|
|
||||||
<include name="OpenSimApplication.cs" />
|
|
||||||
<include name="OpenSimMain.cs" />
|
|
||||||
<include name="OpenSimRoot.cs" />
|
|
||||||
<include name="QueItem.cs" />
|
|
||||||
<include name="SimClient.cs" />
|
|
||||||
<include name="SimConsole.cs" />
|
|
||||||
<include name="VersionInfo.cs" />
|
|
||||||
<include name="Assets/AssetCache.cs" />
|
|
||||||
<include name="Assets/InventoryCache.cs" />
|
|
||||||
<include name="CAPS/SimHttp.cs" />
|
|
||||||
<include name="types/Mesh.cs" />
|
|
||||||
<include name="types/Triangle.cs" />
|
|
||||||
<include name="UserServer/LocalUserProfileManager.cs" />
|
|
||||||
<include name="UserServer/LoginServer.cs" />
|
|
||||||
<include name="world/Avatar.cs" />
|
|
||||||
<include name="world/AvatarAnimations.cs" />
|
|
||||||
<include name="world/Entity.cs" />
|
|
||||||
<include name="world/Primitive.cs" />
|
|
||||||
<include name="world/ScriptEngine.cs" />
|
|
||||||
<include name="world/SurfacePatch.cs" />
|
|
||||||
<include name="world/World.cs" />
|
|
||||||
<include name="world/scripting/IScript.cs" />
|
|
||||||
</sources>
|
|
||||||
<references basedir="${project::get-base-directory()}">
|
|
||||||
<lib>
|
|
||||||
<include name="${project::get-base-directory()}" />
|
|
||||||
<include name="${project::get-base-directory()}/${build.dir}" />
|
|
||||||
</lib>
|
|
||||||
<include name="System.dll" />
|
|
||||||
<include name="System.Xml.dll.dll" />
|
|
||||||
<include name="../bin/libsecondlife.dll" />
|
|
||||||
<include name="../bin/Axiom.MathLib.dll" />
|
|
||||||
<include name="../bin/Db4objects.Db4o.dll" />
|
|
||||||
<include name="../OpenSim.Framework.Console/${build.dir}/OpenSim.Framework.Console.dll" />
|
|
||||||
<include name="../OpenSim.Physics/Manager/${build.dir}/OpenSim.Physics.Manager.dll" />
|
|
||||||
<include name="../OpenSim.Framework/${build.dir}/OpenSim.Framework.dll" />
|
|
||||||
</references>
|
|
||||||
</csc>
|
|
||||||
<echo message="Copying from [${project::get-base-directory()}/${build.dir}/] to [${project::get-base-directory()}/../bin/" />
|
|
||||||
<mkdir dir="${project::get-base-directory()}/../bin/"/>
|
|
||||||
<copy todir="${project::get-base-directory()}/../bin/">
|
|
||||||
<fileset basedir="${project::get-base-directory()}/${build.dir}/" >
|
|
||||||
<include name="*.dll"/>
|
|
||||||
<include name="*.exe"/>
|
|
||||||
</fileset>
|
|
||||||
</copy>
|
|
||||||
</target>
|
|
||||||
<target name="clean">
|
|
||||||
<delete dir="${bin.dir}" failonerror="false" />
|
|
||||||
<delete dir="${obj.dir}" failonerror="false" />
|
|
||||||
</target>
|
|
||||||
<target name="doc" description="Creates documentation.">
|
|
||||||
</target>
|
|
||||||
</project>
|
|
|
@ -267,7 +267,7 @@ namespace OpenSim
|
||||||
LocalWorld.LoadWorldMap();
|
LocalWorld.LoadWorldMap();
|
||||||
|
|
||||||
m_console.WriteLine(OpenSim.Framework.Console.LogPriority.LOW, "Main.cs:Startup() - Starting up messaging system");
|
m_console.WriteLine(OpenSim.Framework.Console.LogPriority.LOW, "Main.cs:Startup() - Starting up messaging system");
|
||||||
LocalWorld.PhysScene = this.physManager.GetPhysicsScene(this.m_physicsEngine); //should be reading from the config file what physics engine to use
|
LocalWorld.PhysScene = this.physManager.GetPhysicsScene(this.m_physicsEngine);
|
||||||
LocalWorld.PhysScene.SetTerrain(LocalWorld.Terrain.getHeights1D());
|
LocalWorld.PhysScene.SetTerrain(LocalWorld.Terrain.getHeights1D());
|
||||||
LocalWorld.LoadPrimsFromStorage();
|
LocalWorld.LoadPrimsFromStorage();
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,6 +3,8 @@ using System.Collections.Generic;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Net;
|
using System.Net;
|
||||||
using System.Net.Sockets;
|
using System.Net.Sockets;
|
||||||
|
using libsecondlife;
|
||||||
|
using OpenSim.Framework.Interfaces;
|
||||||
|
|
||||||
namespace OpenSim
|
namespace OpenSim
|
||||||
{
|
{
|
||||||
|
@ -11,5 +13,6 @@ namespace OpenSim
|
||||||
void SendPacketTo(byte[] buffer, int size, SocketFlags flags, uint circuitcode);// EndPoint packetSender);
|
void SendPacketTo(byte[] buffer, int size, SocketFlags flags, uint circuitcode);// EndPoint packetSender);
|
||||||
void RemoveClientCircuit(uint circuitcode);
|
void RemoveClientCircuit(uint circuitcode);
|
||||||
void RegisterPacketServer(PacketServer server);
|
void RegisterPacketServer(PacketServer server);
|
||||||
|
AuthenticateResponse AuthenticateSession(LLUUID sessionID, LLUUID agentID, uint circuitCode);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -57,7 +57,7 @@ namespace OpenSim
|
||||||
m_world.RemoveViewerAgent(this);
|
m_world.RemoveViewerAgent(this);
|
||||||
//need to do other cleaning up here too
|
//need to do other cleaning up here too
|
||||||
m_clientThreads.Remove(this.CircuitCode);
|
m_clientThreads.Remove(this.CircuitCode);
|
||||||
m_application.RemoveClientCircuit(this.CircuitCode);
|
m_networkServer.RemoveClientCircuit(this.CircuitCode);
|
||||||
this.ClientThread.Abort();
|
this.ClientThread.Abort();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,417 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using libsecondlife;
|
||||||
|
using libsecondlife.Packets;
|
||||||
|
using Nwc.XmlRpc;
|
||||||
|
using System.Net;
|
||||||
|
using System.Net.Sockets;
|
||||||
|
using System.IO;
|
||||||
|
using System.Threading;
|
||||||
|
using System.Timers;
|
||||||
|
using OpenSim.Framework.Interfaces;
|
||||||
|
using OpenSim.Framework.Types;
|
||||||
|
using OpenSim.Framework.Inventory;
|
||||||
|
using OpenSim.Framework.Utilities;
|
||||||
|
using OpenSim.world;
|
||||||
|
using OpenSim.Assets;
|
||||||
|
|
||||||
|
namespace OpenSim
|
||||||
|
{
|
||||||
|
public partial class SimClient
|
||||||
|
{
|
||||||
|
protected virtual void ProcessInPacket(Packet Pack)
|
||||||
|
{
|
||||||
|
ack_pack(Pack);
|
||||||
|
if (debug)
|
||||||
|
{
|
||||||
|
if (Pack.Type != PacketType.AgentUpdate)
|
||||||
|
{
|
||||||
|
Console.WriteLine(Pack.Type.ToString());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this.ProcessPacketMethod(Pack))
|
||||||
|
{
|
||||||
|
//there is a handler registered that handled this packet type
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
System.Text.Encoding _enc = System.Text.Encoding.ASCII;
|
||||||
|
|
||||||
|
switch (Pack.Type)
|
||||||
|
{
|
||||||
|
case PacketType.CompleteAgentMovement:
|
||||||
|
if (this.m_child) this.UpgradeClient();
|
||||||
|
ClientAvatar.CompleteMovement(m_world);
|
||||||
|
ClientAvatar.SendInitialPosition();
|
||||||
|
this.EnableNeighbours();
|
||||||
|
break;
|
||||||
|
case PacketType.RegionHandshakeReply:
|
||||||
|
m_world.SendLayerData(this);
|
||||||
|
break;
|
||||||
|
case PacketType.AgentWearablesRequest:
|
||||||
|
ClientAvatar.SendInitialAppearance();
|
||||||
|
foreach (SimClient client in m_clientThreads.Values)
|
||||||
|
{
|
||||||
|
if (client.AgentID != this.AgentID)
|
||||||
|
{
|
||||||
|
ObjectUpdatePacket objupdate = client.ClientAvatar.CreateUpdatePacket();
|
||||||
|
this.OutPacket(objupdate);
|
||||||
|
client.ClientAvatar.SendAppearanceToOtherAgent(this);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
m_world.GetInitialPrims(this);
|
||||||
|
break;
|
||||||
|
case PacketType.AgentIsNowWearing:
|
||||||
|
AgentIsNowWearingPacket wear = (AgentIsNowWearingPacket)Pack;
|
||||||
|
//Console.WriteLine(Pack.ToString());
|
||||||
|
break;
|
||||||
|
case PacketType.AgentSetAppearance:
|
||||||
|
AgentSetAppearancePacket appear = (AgentSetAppearancePacket)Pack;
|
||||||
|
// Console.WriteLine(appear.ToString());
|
||||||
|
this.ClientAvatar.SetAppearance(appear);
|
||||||
|
break;
|
||||||
|
case PacketType.ObjectAdd:
|
||||||
|
m_world.AddNewPrim((ObjectAddPacket)Pack, this);
|
||||||
|
break;
|
||||||
|
case PacketType.ObjectLink:
|
||||||
|
OpenSim.Framework.Console.MainConsole.Instance.WriteLine(OpenSim.Framework.Console.LogPriority.LOW, Pack.ToString());
|
||||||
|
ObjectLinkPacket link = (ObjectLinkPacket)Pack;
|
||||||
|
uint parentprimid = 0;
|
||||||
|
OpenSim.world.Primitive parentprim = null;
|
||||||
|
if (link.ObjectData.Length > 1)
|
||||||
|
{
|
||||||
|
parentprimid = link.ObjectData[0].ObjectLocalID;
|
||||||
|
foreach (Entity ent in m_world.Entities.Values)
|
||||||
|
{
|
||||||
|
if (ent.localid == parentprimid)
|
||||||
|
{
|
||||||
|
parentprim = (OpenSim.world.Primitive)ent;
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for (int i = 1; i < link.ObjectData.Length; i++)
|
||||||
|
{
|
||||||
|
foreach (Entity ent in m_world.Entities.Values)
|
||||||
|
{
|
||||||
|
if (ent.localid == link.ObjectData[i].ObjectLocalID)
|
||||||
|
{
|
||||||
|
((OpenSim.world.Primitive)ent).MakeParent(parentprim);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case PacketType.ObjectScale:
|
||||||
|
OpenSim.Framework.Console.MainConsole.Instance.WriteLine(OpenSim.Framework.Console.LogPriority.LOW, Pack.ToString());
|
||||||
|
break;
|
||||||
|
case PacketType.ObjectShape:
|
||||||
|
ObjectShapePacket shape = (ObjectShapePacket)Pack;
|
||||||
|
for (int i = 0; i < shape.ObjectData.Length; i++)
|
||||||
|
{
|
||||||
|
foreach (Entity ent in m_world.Entities.Values)
|
||||||
|
{
|
||||||
|
if (ent.localid == shape.ObjectData[i].ObjectLocalID)
|
||||||
|
{
|
||||||
|
((OpenSim.world.Primitive)ent).UpdateShape(shape.ObjectData[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case PacketType.RequestImage:
|
||||||
|
RequestImagePacket imageRequest = (RequestImagePacket)Pack;
|
||||||
|
for (int i = 0; i < imageRequest.RequestImage.Length; i++)
|
||||||
|
{
|
||||||
|
m_assetCache.AddTextureRequest(this, imageRequest.RequestImage[i].Image);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case PacketType.TransferRequest:
|
||||||
|
//Console.WriteLine("OpenSimClient.cs:ProcessInPacket() - Got transfer request");
|
||||||
|
TransferRequestPacket transfer = (TransferRequestPacket)Pack;
|
||||||
|
m_assetCache.AddAssetRequest(this, transfer);
|
||||||
|
break;
|
||||||
|
case PacketType.AgentUpdate:
|
||||||
|
ClientAvatar.HandleUpdate((AgentUpdatePacket)Pack);
|
||||||
|
break;
|
||||||
|
case PacketType.ObjectImage:
|
||||||
|
ObjectImagePacket imagePack = (ObjectImagePacket)Pack;
|
||||||
|
for (int i = 0; i < imagePack.ObjectData.Length; i++)
|
||||||
|
{
|
||||||
|
foreach (Entity ent in m_world.Entities.Values)
|
||||||
|
{
|
||||||
|
if (ent.localid == imagePack.ObjectData[i].ObjectLocalID)
|
||||||
|
{
|
||||||
|
((OpenSim.world.Primitive)ent).UpdateTexture(imagePack.ObjectData[i].TextureEntry);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case PacketType.ObjectFlagUpdate:
|
||||||
|
ObjectFlagUpdatePacket flags = (ObjectFlagUpdatePacket)Pack;
|
||||||
|
foreach (Entity ent in m_world.Entities.Values)
|
||||||
|
{
|
||||||
|
if (ent.localid == flags.AgentData.ObjectLocalID)
|
||||||
|
{
|
||||||
|
((OpenSim.world.Primitive)ent).UpdateObjectFlags(flags);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case PacketType.AssetUploadRequest:
|
||||||
|
AssetUploadRequestPacket request = (AssetUploadRequestPacket)Pack;
|
||||||
|
this.UploadAssets.HandleUploadPacket(request, request.AssetBlock.TransactionID.Combine(this.SecureSessionID));
|
||||||
|
break;
|
||||||
|
case PacketType.RequestXfer:
|
||||||
|
//Console.WriteLine(Pack.ToString());
|
||||||
|
break;
|
||||||
|
case PacketType.SendXferPacket:
|
||||||
|
this.UploadAssets.HandleXferPacket((SendXferPacketPacket)Pack);
|
||||||
|
break;
|
||||||
|
case PacketType.CreateInventoryFolder:
|
||||||
|
CreateInventoryFolderPacket invFolder = (CreateInventoryFolderPacket)Pack;
|
||||||
|
m_inventoryCache.CreateNewInventoryFolder(this, invFolder.FolderData.FolderID, (ushort)invFolder.FolderData.Type, Util.FieldToString(invFolder.FolderData.Name), invFolder.FolderData.ParentID);
|
||||||
|
//Console.WriteLine(Pack.ToString());
|
||||||
|
break;
|
||||||
|
case PacketType.CreateInventoryItem:
|
||||||
|
//Console.WriteLine(Pack.ToString());
|
||||||
|
CreateInventoryItemPacket createItem = (CreateInventoryItemPacket)Pack;
|
||||||
|
if (createItem.InventoryBlock.TransactionID != LLUUID.Zero)
|
||||||
|
{
|
||||||
|
this.UploadAssets.CreateInventoryItem(createItem);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Console.Write(Pack.ToString());
|
||||||
|
this.CreateInventoryItem(createItem);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case PacketType.FetchInventory:
|
||||||
|
//Console.WriteLine("fetch item packet");
|
||||||
|
FetchInventoryPacket FetchInventory = (FetchInventoryPacket)Pack;
|
||||||
|
m_inventoryCache.FetchInventory(this, FetchInventory);
|
||||||
|
break;
|
||||||
|
case PacketType.FetchInventoryDescendents:
|
||||||
|
FetchInventoryDescendentsPacket Fetch = (FetchInventoryDescendentsPacket)Pack;
|
||||||
|
m_inventoryCache.FetchInventoryDescendents(this, Fetch);
|
||||||
|
break;
|
||||||
|
case PacketType.UpdateInventoryItem:
|
||||||
|
UpdateInventoryItemPacket update = (UpdateInventoryItemPacket)Pack;
|
||||||
|
//Console.WriteLine(Pack.ToString());
|
||||||
|
for (int i = 0; i < update.InventoryData.Length; i++)
|
||||||
|
{
|
||||||
|
if (update.InventoryData[i].TransactionID != LLUUID.Zero)
|
||||||
|
{
|
||||||
|
AssetBase asset = m_assetCache.GetAsset(update.InventoryData[i].TransactionID.Combine(this.SecureSessionID));
|
||||||
|
if (asset != null)
|
||||||
|
{
|
||||||
|
// Console.WriteLine("updating inventory item, found asset" + asset.FullID.ToStringHyphenated() + " already in cache");
|
||||||
|
m_inventoryCache.UpdateInventoryItemAsset(this, update.InventoryData[i].ItemID, asset);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
asset = this.UploadAssets.AddUploadToAssetCache(update.InventoryData[i].TransactionID);
|
||||||
|
if (asset != null)
|
||||||
|
{
|
||||||
|
//Console.WriteLine("updating inventory item, adding asset" + asset.FullID.ToStringHyphenated() + " to cache");
|
||||||
|
m_inventoryCache.UpdateInventoryItemAsset(this, update.InventoryData[i].ItemID, asset);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
//Console.WriteLine("trying to update inventory item, but asset is null");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
m_inventoryCache.UpdateInventoryItemDetails(this, update.InventoryData[i].ItemID, update.InventoryData[i]); ;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case PacketType.ViewerEffect:
|
||||||
|
ViewerEffectPacket viewer = (ViewerEffectPacket)Pack;
|
||||||
|
foreach (SimClient client in m_clientThreads.Values)
|
||||||
|
{
|
||||||
|
if (client.AgentID != this.AgentID)
|
||||||
|
{
|
||||||
|
viewer.AgentData.AgentID = client.AgentID;
|
||||||
|
viewer.AgentData.SessionID = client.SessionID;
|
||||||
|
client.OutPacket(viewer);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case PacketType.RequestTaskInventory:
|
||||||
|
// Console.WriteLine(Pack.ToString());
|
||||||
|
RequestTaskInventoryPacket requesttask = (RequestTaskInventoryPacket)Pack;
|
||||||
|
ReplyTaskInventoryPacket replytask = new ReplyTaskInventoryPacket();
|
||||||
|
bool foundent = false;
|
||||||
|
foreach (Entity ent in m_world.Entities.Values)
|
||||||
|
{
|
||||||
|
if (ent.localid == requesttask.InventoryData.LocalID)
|
||||||
|
{
|
||||||
|
replytask.InventoryData.TaskID = ent.uuid;
|
||||||
|
replytask.InventoryData.Serial = 0;
|
||||||
|
replytask.InventoryData.Filename = new byte[0];
|
||||||
|
foundent = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (foundent)
|
||||||
|
{
|
||||||
|
this.OutPacket(replytask);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case PacketType.UpdateTaskInventory:
|
||||||
|
// Console.WriteLine(Pack.ToString());
|
||||||
|
UpdateTaskInventoryPacket updatetask = (UpdateTaskInventoryPacket)Pack;
|
||||||
|
AgentInventory myinventory = this.m_inventoryCache.GetAgentsInventory(this.AgentID);
|
||||||
|
if (myinventory != null)
|
||||||
|
{
|
||||||
|
if (updatetask.UpdateData.Key == 0)
|
||||||
|
{
|
||||||
|
if (myinventory.InventoryItems[updatetask.InventoryData.ItemID] != null)
|
||||||
|
{
|
||||||
|
if (myinventory.InventoryItems[updatetask.InventoryData.ItemID].Type == 7)
|
||||||
|
{
|
||||||
|
LLUUID noteaid = myinventory.InventoryItems[updatetask.InventoryData.ItemID].AssetID;
|
||||||
|
AssetBase assBase = this.m_assetCache.GetAsset(noteaid);
|
||||||
|
if (assBase != null)
|
||||||
|
{
|
||||||
|
foreach (Entity ent in m_world.Entities.Values)
|
||||||
|
{
|
||||||
|
if (ent.localid == updatetask.UpdateData.LocalID)
|
||||||
|
{
|
||||||
|
if (ent is OpenSim.world.Primitive)
|
||||||
|
{
|
||||||
|
this.m_world.AddScript(ent, Util.FieldToString(assBase.Data));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case PacketType.AgentAnimation:
|
||||||
|
if (!m_child)
|
||||||
|
{
|
||||||
|
AgentAnimationPacket AgentAni = (AgentAnimationPacket)Pack;
|
||||||
|
for (int i = 0; i < AgentAni.AnimationList.Length; i++)
|
||||||
|
{
|
||||||
|
if (AgentAni.AnimationList[i].StartAnim)
|
||||||
|
{
|
||||||
|
ClientAvatar.current_anim = AgentAni.AnimationList[i].AnimID;
|
||||||
|
ClientAvatar.anim_seq = 1;
|
||||||
|
ClientAvatar.SendAnimPack();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case PacketType.ObjectSelect:
|
||||||
|
ObjectSelectPacket incomingselect = (ObjectSelectPacket)Pack;
|
||||||
|
for (int i = 0; i < incomingselect.ObjectData.Length; i++)
|
||||||
|
{
|
||||||
|
foreach (Entity ent in m_world.Entities.Values)
|
||||||
|
{
|
||||||
|
if (ent.localid == incomingselect.ObjectData[i].ObjectLocalID)
|
||||||
|
{
|
||||||
|
((OpenSim.world.Primitive)ent).GetProperites(this);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case PacketType.MapLayerRequest:
|
||||||
|
this.RequestMapLayer();
|
||||||
|
break;
|
||||||
|
case PacketType.MapBlockRequest:
|
||||||
|
MapBlockRequestPacket MapRequest = (MapBlockRequestPacket)Pack;
|
||||||
|
this.RequestMapBlock(MapRequest.PositionData.MinX, MapRequest.PositionData.MinY, MapRequest.PositionData.MaxX, MapRequest.PositionData.MaxY);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case PacketType.TeleportLandmarkRequest:
|
||||||
|
TeleportLandmarkRequestPacket tpReq = (TeleportLandmarkRequestPacket)Pack;
|
||||||
|
|
||||||
|
TeleportStartPacket tpStart = new TeleportStartPacket();
|
||||||
|
tpStart.Info.TeleportFlags = 8; // tp via lm
|
||||||
|
this.OutPacket(tpStart);
|
||||||
|
|
||||||
|
TeleportProgressPacket tpProgress = new TeleportProgressPacket();
|
||||||
|
tpProgress.Info.Message = (new System.Text.ASCIIEncoding()).GetBytes("sending_landmark");
|
||||||
|
tpProgress.Info.TeleportFlags = 8;
|
||||||
|
tpProgress.AgentData.AgentID = tpReq.Info.AgentID;
|
||||||
|
this.OutPacket(tpProgress);
|
||||||
|
|
||||||
|
// Fetch landmark
|
||||||
|
LLUUID lmid = tpReq.Info.LandmarkID;
|
||||||
|
AssetBase lma = this.m_assetCache.GetAsset(lmid);
|
||||||
|
if (lma != null)
|
||||||
|
{
|
||||||
|
AssetLandmark lm = new AssetLandmark(lma);
|
||||||
|
|
||||||
|
if (lm.RegionID == m_regionData.SimUUID)
|
||||||
|
{
|
||||||
|
TeleportLocalPacket tpLocal = new TeleportLocalPacket();
|
||||||
|
|
||||||
|
tpLocal.Info.AgentID = tpReq.Info.AgentID;
|
||||||
|
tpLocal.Info.TeleportFlags = 8; // Teleport via landmark
|
||||||
|
tpLocal.Info.LocationID = 2;
|
||||||
|
tpLocal.Info.Position = lm.Position;
|
||||||
|
OutPacket(tpLocal);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
TeleportCancelPacket tpCancel = new TeleportCancelPacket();
|
||||||
|
tpCancel.Info.AgentID = tpReq.Info.AgentID;
|
||||||
|
tpCancel.Info.SessionID = tpReq.Info.SessionID;
|
||||||
|
OutPacket(tpCancel);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Console.WriteLine("Cancelling Teleport - fetch asset not yet implemented");
|
||||||
|
|
||||||
|
TeleportCancelPacket tpCancel = new TeleportCancelPacket();
|
||||||
|
tpCancel.Info.AgentID = tpReq.Info.AgentID;
|
||||||
|
tpCancel.Info.SessionID = tpReq.Info.SessionID;
|
||||||
|
OutPacket(tpCancel);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case PacketType.TeleportLocationRequest:
|
||||||
|
TeleportLocationRequestPacket tpLocReq = (TeleportLocationRequestPacket)Pack;
|
||||||
|
Console.WriteLine(tpLocReq.ToString());
|
||||||
|
|
||||||
|
tpStart = new TeleportStartPacket();
|
||||||
|
tpStart.Info.TeleportFlags = 16; // Teleport via location
|
||||||
|
Console.WriteLine(tpStart.ToString());
|
||||||
|
OutPacket(tpStart);
|
||||||
|
|
||||||
|
if (m_regionData.RegionHandle != tpLocReq.Info.RegionHandle)
|
||||||
|
{
|
||||||
|
/* m_gridServer.getRegion(tpLocReq.Info.RegionHandle); */
|
||||||
|
Console.WriteLine("Inter-sim teleport not yet implemented");
|
||||||
|
TeleportCancelPacket tpCancel = new TeleportCancelPacket();
|
||||||
|
tpCancel.Info.SessionID = tpLocReq.AgentData.SessionID;
|
||||||
|
tpCancel.Info.AgentID = tpLocReq.AgentData.AgentID;
|
||||||
|
|
||||||
|
OutPacket(tpCancel);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Console.WriteLine("Local teleport");
|
||||||
|
TeleportLocalPacket tpLocal = new TeleportLocalPacket();
|
||||||
|
tpLocal.Info.AgentID = tpLocReq.AgentData.AgentID;
|
||||||
|
tpLocal.Info.TeleportFlags = tpStart.Info.TeleportFlags;
|
||||||
|
tpLocal.Info.LocationID = 2;
|
||||||
|
tpLocal.Info.LookAt = tpLocReq.Info.LookAt;
|
||||||
|
tpLocal.Info.Position = tpLocReq.Info.Position;
|
||||||
|
OutPacket(tpLocal);
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -80,7 +80,7 @@ namespace OpenSim
|
||||||
private AssetCache m_assetCache;
|
private AssetCache m_assetCache;
|
||||||
private IGridServer m_gridServer;
|
private IGridServer m_gridServer;
|
||||||
private IUserServer m_userServer = null;
|
private IUserServer m_userServer = null;
|
||||||
private OpenSimNetworkHandler m_application;
|
private OpenSimNetworkHandler m_networkServer;
|
||||||
private InventoryCache m_inventoryCache;
|
private InventoryCache m_inventoryCache;
|
||||||
public bool m_sandboxMode;
|
public bool m_sandboxMode;
|
||||||
private int cachedtextureserial = 0;
|
private int cachedtextureserial = 0;
|
||||||
|
@ -104,12 +104,12 @@ namespace OpenSim
|
||||||
m_clientThreads = clientThreads;
|
m_clientThreads = clientThreads;
|
||||||
m_assetCache = assetCache;
|
m_assetCache = assetCache;
|
||||||
m_gridServer = gridServer;
|
m_gridServer = gridServer;
|
||||||
m_application = application;
|
m_networkServer = application;
|
||||||
m_inventoryCache = inventoryCache;
|
m_inventoryCache = inventoryCache;
|
||||||
m_sandboxMode = sandboxMode;
|
m_sandboxMode = sandboxMode;
|
||||||
m_child = child;
|
m_child = child;
|
||||||
m_regionData = regionDat;
|
m_regionData = regionDat;
|
||||||
|
|
||||||
OpenSim.Framework.Console.MainConsole.Instance.WriteLine(OpenSim.Framework.Console.LogPriority.LOW,"OpenSimClient.cs - Started up new client thread to handle incoming request");
|
OpenSim.Framework.Console.MainConsole.Instance.WriteLine(OpenSim.Framework.Console.LogPriority.LOW,"OpenSimClient.cs - Started up new client thread to handle incoming request");
|
||||||
cirpack = initialcirpack;
|
cirpack = initialcirpack;
|
||||||
userEP = remoteEP;
|
userEP = remoteEP;
|
||||||
|
@ -185,7 +185,7 @@ namespace OpenSim
|
||||||
m_world.RemoveViewerAgent(this);
|
m_world.RemoveViewerAgent(this);
|
||||||
|
|
||||||
m_clientThreads.Remove(this.CircuitCode);
|
m_clientThreads.Remove(this.CircuitCode);
|
||||||
m_application.RemoveClientCircuit(this.CircuitCode);
|
m_networkServer.RemoveClientCircuit(this.CircuitCode);
|
||||||
this.ClientThread.Abort();
|
this.ClientThread.Abort();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -266,399 +266,6 @@ namespace OpenSim
|
||||||
}*/
|
}*/
|
||||||
}
|
}
|
||||||
|
|
||||||
protected virtual void ProcessInPacket(Packet Pack)
|
|
||||||
{
|
|
||||||
ack_pack(Pack);
|
|
||||||
if (debug)
|
|
||||||
{
|
|
||||||
if (Pack.Type != PacketType.AgentUpdate)
|
|
||||||
{
|
|
||||||
Console.WriteLine(Pack.Type.ToString());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (this.ProcessPacketMethod(Pack))
|
|
||||||
{
|
|
||||||
//there is a handler registered that handled this packet type
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
System.Text.Encoding _enc = System.Text.Encoding.ASCII;
|
|
||||||
|
|
||||||
switch (Pack.Type)
|
|
||||||
{
|
|
||||||
case PacketType.CompleteAgentMovement:
|
|
||||||
if (this.m_child) this.UpgradeClient();
|
|
||||||
ClientAvatar.CompleteMovement(m_world);
|
|
||||||
ClientAvatar.SendInitialPosition();
|
|
||||||
this.EnableNeighbours();
|
|
||||||
break;
|
|
||||||
case PacketType.RegionHandshakeReply:
|
|
||||||
m_world.SendLayerData(this);
|
|
||||||
break;
|
|
||||||
case PacketType.AgentWearablesRequest:
|
|
||||||
ClientAvatar.SendInitialAppearance();
|
|
||||||
foreach (SimClient client in m_clientThreads.Values)
|
|
||||||
{
|
|
||||||
if (client.AgentID != this.AgentID)
|
|
||||||
{
|
|
||||||
ObjectUpdatePacket objupdate = client.ClientAvatar.CreateUpdatePacket();
|
|
||||||
this.OutPacket(objupdate);
|
|
||||||
client.ClientAvatar.SendAppearanceToOtherAgent(this);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
m_world.GetInitialPrims(this);
|
|
||||||
break;
|
|
||||||
case PacketType.AgentIsNowWearing:
|
|
||||||
AgentIsNowWearingPacket wear = (AgentIsNowWearingPacket)Pack;
|
|
||||||
//Console.WriteLine(Pack.ToString());
|
|
||||||
break;
|
|
||||||
case PacketType.AgentSetAppearance:
|
|
||||||
AgentSetAppearancePacket appear = (AgentSetAppearancePacket)Pack;
|
|
||||||
// Console.WriteLine(appear.ToString());
|
|
||||||
this.ClientAvatar.SetAppearance(appear);
|
|
||||||
break;
|
|
||||||
case PacketType.ObjectAdd:
|
|
||||||
m_world.AddNewPrim((ObjectAddPacket)Pack, this);
|
|
||||||
break;
|
|
||||||
case PacketType.ObjectLink:
|
|
||||||
OpenSim.Framework.Console.MainConsole.Instance.WriteLine(OpenSim.Framework.Console.LogPriority.LOW,Pack.ToString());
|
|
||||||
ObjectLinkPacket link = (ObjectLinkPacket)Pack;
|
|
||||||
uint parentprimid = 0;
|
|
||||||
OpenSim.world.Primitive parentprim = null;
|
|
||||||
if (link.ObjectData.Length > 1)
|
|
||||||
{
|
|
||||||
parentprimid = link.ObjectData[0].ObjectLocalID;
|
|
||||||
foreach (Entity ent in m_world.Entities.Values)
|
|
||||||
{
|
|
||||||
if (ent.localid == parentprimid)
|
|
||||||
{
|
|
||||||
parentprim = (OpenSim.world.Primitive)ent;
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
for (int i = 1; i < link.ObjectData.Length; i++)
|
|
||||||
{
|
|
||||||
foreach (Entity ent in m_world.Entities.Values)
|
|
||||||
{
|
|
||||||
if (ent.localid == link.ObjectData[i].ObjectLocalID)
|
|
||||||
{
|
|
||||||
((OpenSim.world.Primitive)ent).MakeParent(parentprim);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case PacketType.ObjectScale:
|
|
||||||
OpenSim.Framework.Console.MainConsole.Instance.WriteLine(OpenSim.Framework.Console.LogPriority.LOW,Pack.ToString());
|
|
||||||
break;
|
|
||||||
case PacketType.ObjectShape:
|
|
||||||
ObjectShapePacket shape = (ObjectShapePacket)Pack;
|
|
||||||
for (int i = 0; i < shape.ObjectData.Length; i++)
|
|
||||||
{
|
|
||||||
foreach (Entity ent in m_world.Entities.Values)
|
|
||||||
{
|
|
||||||
if (ent.localid == shape.ObjectData[i].ObjectLocalID)
|
|
||||||
{
|
|
||||||
((OpenSim.world.Primitive)ent).UpdateShape(shape.ObjectData[i]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case PacketType.RequestImage:
|
|
||||||
RequestImagePacket imageRequest = (RequestImagePacket)Pack;
|
|
||||||
for (int i = 0; i < imageRequest.RequestImage.Length; i++)
|
|
||||||
{
|
|
||||||
m_assetCache.AddTextureRequest(this, imageRequest.RequestImage[i].Image);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case PacketType.TransferRequest:
|
|
||||||
//Console.WriteLine("OpenSimClient.cs:ProcessInPacket() - Got transfer request");
|
|
||||||
TransferRequestPacket transfer = (TransferRequestPacket)Pack;
|
|
||||||
m_assetCache.AddAssetRequest(this, transfer);
|
|
||||||
break;
|
|
||||||
case PacketType.AgentUpdate:
|
|
||||||
ClientAvatar.HandleUpdate((AgentUpdatePacket)Pack);
|
|
||||||
break;
|
|
||||||
case PacketType.ObjectImage:
|
|
||||||
ObjectImagePacket imagePack = (ObjectImagePacket)Pack;
|
|
||||||
for (int i = 0; i < imagePack.ObjectData.Length; i++)
|
|
||||||
{
|
|
||||||
foreach (Entity ent in m_world.Entities.Values)
|
|
||||||
{
|
|
||||||
if (ent.localid == imagePack.ObjectData[i].ObjectLocalID)
|
|
||||||
{
|
|
||||||
((OpenSim.world.Primitive)ent).UpdateTexture(imagePack.ObjectData[i].TextureEntry);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case PacketType.ObjectFlagUpdate:
|
|
||||||
ObjectFlagUpdatePacket flags = (ObjectFlagUpdatePacket)Pack;
|
|
||||||
foreach (Entity ent in m_world.Entities.Values)
|
|
||||||
{
|
|
||||||
if (ent.localid == flags.AgentData.ObjectLocalID)
|
|
||||||
{
|
|
||||||
((OpenSim.world.Primitive)ent).UpdateObjectFlags(flags);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case PacketType.AssetUploadRequest:
|
|
||||||
AssetUploadRequestPacket request = (AssetUploadRequestPacket)Pack;
|
|
||||||
this.UploadAssets.HandleUploadPacket(request, request.AssetBlock.TransactionID.Combine(this.SecureSessionID));
|
|
||||||
break;
|
|
||||||
case PacketType.RequestXfer:
|
|
||||||
//Console.WriteLine(Pack.ToString());
|
|
||||||
break;
|
|
||||||
case PacketType.SendXferPacket:
|
|
||||||
this.UploadAssets.HandleXferPacket((SendXferPacketPacket)Pack);
|
|
||||||
break;
|
|
||||||
case PacketType.CreateInventoryFolder:
|
|
||||||
CreateInventoryFolderPacket invFolder = (CreateInventoryFolderPacket)Pack;
|
|
||||||
m_inventoryCache.CreateNewInventoryFolder(this, invFolder.FolderData.FolderID, (ushort)invFolder.FolderData.Type, Util.FieldToString(invFolder.FolderData.Name), invFolder.FolderData.ParentID);
|
|
||||||
//Console.WriteLine(Pack.ToString());
|
|
||||||
break;
|
|
||||||
case PacketType.CreateInventoryItem:
|
|
||||||
//Console.WriteLine(Pack.ToString());
|
|
||||||
CreateInventoryItemPacket createItem = (CreateInventoryItemPacket)Pack;
|
|
||||||
if (createItem.InventoryBlock.TransactionID != LLUUID.Zero)
|
|
||||||
{
|
|
||||||
this.UploadAssets.CreateInventoryItem(createItem);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// Console.Write(Pack.ToString());
|
|
||||||
this.CreateInventoryItem(createItem);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case PacketType.FetchInventory:
|
|
||||||
//Console.WriteLine("fetch item packet");
|
|
||||||
FetchInventoryPacket FetchInventory = (FetchInventoryPacket)Pack;
|
|
||||||
m_inventoryCache.FetchInventory(this, FetchInventory);
|
|
||||||
break;
|
|
||||||
case PacketType.FetchInventoryDescendents:
|
|
||||||
FetchInventoryDescendentsPacket Fetch = (FetchInventoryDescendentsPacket)Pack;
|
|
||||||
m_inventoryCache.FetchInventoryDescendents(this, Fetch);
|
|
||||||
break;
|
|
||||||
case PacketType.UpdateInventoryItem:
|
|
||||||
UpdateInventoryItemPacket update = (UpdateInventoryItemPacket)Pack;
|
|
||||||
//Console.WriteLine(Pack.ToString());
|
|
||||||
for (int i = 0; i < update.InventoryData.Length; i++)
|
|
||||||
{
|
|
||||||
if (update.InventoryData[i].TransactionID != LLUUID.Zero)
|
|
||||||
{
|
|
||||||
AssetBase asset = m_assetCache.GetAsset(update.InventoryData[i].TransactionID.Combine(this.SecureSessionID));
|
|
||||||
if (asset != null)
|
|
||||||
{
|
|
||||||
// Console.WriteLine("updating inventory item, found asset" + asset.FullID.ToStringHyphenated() + " already in cache");
|
|
||||||
m_inventoryCache.UpdateInventoryItemAsset(this, update.InventoryData[i].ItemID, asset);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
asset = this.UploadAssets.AddUploadToAssetCache(update.InventoryData[i].TransactionID);
|
|
||||||
if (asset != null)
|
|
||||||
{
|
|
||||||
//Console.WriteLine("updating inventory item, adding asset" + asset.FullID.ToStringHyphenated() + " to cache");
|
|
||||||
m_inventoryCache.UpdateInventoryItemAsset(this, update.InventoryData[i].ItemID, asset);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
//Console.WriteLine("trying to update inventory item, but asset is null");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
m_inventoryCache.UpdateInventoryItemDetails(this, update.InventoryData[i].ItemID, update.InventoryData[i]); ;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case PacketType.ViewerEffect:
|
|
||||||
ViewerEffectPacket viewer = (ViewerEffectPacket)Pack;
|
|
||||||
foreach (SimClient client in m_clientThreads.Values)
|
|
||||||
{
|
|
||||||
if (client.AgentID != this.AgentID)
|
|
||||||
{
|
|
||||||
viewer.AgentData.AgentID = client.AgentID;
|
|
||||||
viewer.AgentData.SessionID = client.SessionID;
|
|
||||||
client.OutPacket(viewer);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case PacketType.RequestTaskInventory:
|
|
||||||
// Console.WriteLine(Pack.ToString());
|
|
||||||
RequestTaskInventoryPacket requesttask = (RequestTaskInventoryPacket)Pack;
|
|
||||||
ReplyTaskInventoryPacket replytask = new ReplyTaskInventoryPacket();
|
|
||||||
bool foundent = false;
|
|
||||||
foreach (Entity ent in m_world.Entities.Values)
|
|
||||||
{
|
|
||||||
if (ent.localid == requesttask.InventoryData.LocalID)
|
|
||||||
{
|
|
||||||
replytask.InventoryData.TaskID = ent.uuid;
|
|
||||||
replytask.InventoryData.Serial = 0;
|
|
||||||
replytask.InventoryData.Filename = new byte[0];
|
|
||||||
foundent = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (foundent)
|
|
||||||
{
|
|
||||||
this.OutPacket(replytask);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case PacketType.UpdateTaskInventory:
|
|
||||||
// Console.WriteLine(Pack.ToString());
|
|
||||||
UpdateTaskInventoryPacket updatetask = (UpdateTaskInventoryPacket)Pack;
|
|
||||||
AgentInventory myinventory = this.m_inventoryCache.GetAgentsInventory(this.AgentID);
|
|
||||||
if (myinventory != null)
|
|
||||||
{
|
|
||||||
if (updatetask.UpdateData.Key == 0)
|
|
||||||
{
|
|
||||||
if (myinventory.InventoryItems[updatetask.InventoryData.ItemID] != null)
|
|
||||||
{
|
|
||||||
if (myinventory.InventoryItems[updatetask.InventoryData.ItemID].Type == 7)
|
|
||||||
{
|
|
||||||
LLUUID noteaid = myinventory.InventoryItems[updatetask.InventoryData.ItemID].AssetID;
|
|
||||||
AssetBase assBase = this.m_assetCache.GetAsset(noteaid);
|
|
||||||
if (assBase != null)
|
|
||||||
{
|
|
||||||
foreach (Entity ent in m_world.Entities.Values)
|
|
||||||
{
|
|
||||||
if (ent.localid == updatetask.UpdateData.LocalID)
|
|
||||||
{
|
|
||||||
if (ent is OpenSim.world.Primitive)
|
|
||||||
{
|
|
||||||
this.m_world.AddScript(ent, Util.FieldToString(assBase.Data));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case PacketType.AgentAnimation:
|
|
||||||
if (!m_child)
|
|
||||||
{
|
|
||||||
AgentAnimationPacket AgentAni = (AgentAnimationPacket)Pack;
|
|
||||||
for (int i = 0; i < AgentAni.AnimationList.Length; i++)
|
|
||||||
{
|
|
||||||
if (AgentAni.AnimationList[i].StartAnim)
|
|
||||||
{
|
|
||||||
ClientAvatar.current_anim = AgentAni.AnimationList[i].AnimID;
|
|
||||||
ClientAvatar.anim_seq = 1;
|
|
||||||
ClientAvatar.SendAnimPack();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case PacketType.ObjectSelect:
|
|
||||||
ObjectSelectPacket incomingselect = (ObjectSelectPacket)Pack;
|
|
||||||
for (int i = 0; i < incomingselect.ObjectData.Length; i++)
|
|
||||||
{
|
|
||||||
foreach (Entity ent in m_world.Entities.Values)
|
|
||||||
{
|
|
||||||
if (ent.localid == incomingselect.ObjectData[i].ObjectLocalID)
|
|
||||||
{
|
|
||||||
((OpenSim.world.Primitive)ent).GetProperites(this);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case PacketType.MapLayerRequest:
|
|
||||||
this.RequestMapLayer();
|
|
||||||
break;
|
|
||||||
case PacketType.MapBlockRequest:
|
|
||||||
MapBlockRequestPacket MapRequest = (MapBlockRequestPacket)Pack;
|
|
||||||
this.RequestMapBlock( MapRequest.PositionData.MinX, MapRequest.PositionData.MinY, MapRequest.PositionData.MaxX, MapRequest.PositionData.MaxY);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case PacketType.TeleportLandmarkRequest:
|
|
||||||
TeleportLandmarkRequestPacket tpReq = (TeleportLandmarkRequestPacket)Pack;
|
|
||||||
|
|
||||||
TeleportStartPacket tpStart = new TeleportStartPacket();
|
|
||||||
tpStart.Info.TeleportFlags = 8; // tp via lm
|
|
||||||
this.OutPacket(tpStart);
|
|
||||||
|
|
||||||
TeleportProgressPacket tpProgress = new TeleportProgressPacket();
|
|
||||||
tpProgress.Info.Message = (new System.Text.ASCIIEncoding()).GetBytes("sending_landmark");
|
|
||||||
tpProgress.Info.TeleportFlags = 8;
|
|
||||||
tpProgress.AgentData.AgentID = tpReq.Info.AgentID;
|
|
||||||
this.OutPacket(tpProgress);
|
|
||||||
|
|
||||||
// Fetch landmark
|
|
||||||
LLUUID lmid = tpReq.Info.LandmarkID;
|
|
||||||
AssetBase lma = this.m_assetCache.GetAsset(lmid);
|
|
||||||
if (lma != null)
|
|
||||||
{
|
|
||||||
AssetLandmark lm = new AssetLandmark(lma);
|
|
||||||
|
|
||||||
if (lm.RegionID == m_regionData.SimUUID)
|
|
||||||
{
|
|
||||||
TeleportLocalPacket tpLocal = new TeleportLocalPacket();
|
|
||||||
|
|
||||||
tpLocal.Info.AgentID = tpReq.Info.AgentID;
|
|
||||||
tpLocal.Info.TeleportFlags = 8; // Teleport via landmark
|
|
||||||
tpLocal.Info.LocationID = 2;
|
|
||||||
tpLocal.Info.Position = lm.Position;
|
|
||||||
OutPacket(tpLocal);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
TeleportCancelPacket tpCancel = new TeleportCancelPacket();
|
|
||||||
tpCancel.Info.AgentID = tpReq.Info.AgentID;
|
|
||||||
tpCancel.Info.SessionID = tpReq.Info.SessionID;
|
|
||||||
OutPacket(tpCancel);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
Console.WriteLine("Cancelling Teleport - fetch asset not yet implemented");
|
|
||||||
|
|
||||||
TeleportCancelPacket tpCancel = new TeleportCancelPacket();
|
|
||||||
tpCancel.Info.AgentID = tpReq.Info.AgentID;
|
|
||||||
tpCancel.Info.SessionID = tpReq.Info.SessionID;
|
|
||||||
OutPacket(tpCancel);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case PacketType.TeleportLocationRequest:
|
|
||||||
TeleportLocationRequestPacket tpLocReq = (TeleportLocationRequestPacket)Pack;
|
|
||||||
Console.WriteLine(tpLocReq.ToString());
|
|
||||||
|
|
||||||
tpStart = new TeleportStartPacket();
|
|
||||||
tpStart.Info.TeleportFlags = 16; // Teleport via location
|
|
||||||
Console.WriteLine(tpStart.ToString());
|
|
||||||
OutPacket(tpStart);
|
|
||||||
|
|
||||||
if (m_regionData.RegionHandle != tpLocReq.Info.RegionHandle)
|
|
||||||
{
|
|
||||||
/* m_gridServer.getRegion(tpLocReq.Info.RegionHandle); */
|
|
||||||
Console.WriteLine("Inter-sim teleport not yet implemented");
|
|
||||||
TeleportCancelPacket tpCancel = new TeleportCancelPacket();
|
|
||||||
tpCancel.Info.SessionID = tpLocReq.AgentData.SessionID;
|
|
||||||
tpCancel.Info.AgentID = tpLocReq.AgentData.AgentID;
|
|
||||||
|
|
||||||
OutPacket(tpCancel);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
Console.WriteLine("Local teleport");
|
|
||||||
TeleportLocalPacket tpLocal = new TeleportLocalPacket();
|
|
||||||
tpLocal.Info.AgentID = tpLocReq.AgentData.AgentID;
|
|
||||||
tpLocal.Info.TeleportFlags = tpStart.Info.TeleportFlags;
|
|
||||||
tpLocal.Info.LocationID = 2;
|
|
||||||
tpLocal.Info.LookAt = tpLocReq.Info.LookAt;
|
|
||||||
tpLocal.Info.Position = tpLocReq.Info.Position;
|
|
||||||
OutPacket(tpLocal);
|
|
||||||
}
|
|
||||||
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void ResendUnacked()
|
private void ResendUnacked()
|
||||||
{
|
{
|
||||||
int now = Environment.TickCount;
|
int now = Environment.TickCount;
|
||||||
|
@ -801,11 +408,11 @@ namespace OpenSim
|
||||||
if (Pack.Header.Zerocoded)
|
if (Pack.Header.Zerocoded)
|
||||||
{
|
{
|
||||||
int packetsize = Helpers.ZeroEncode(sendbuffer, sendbuffer.Length, ZeroOutBuffer);
|
int packetsize = Helpers.ZeroEncode(sendbuffer, sendbuffer.Length, ZeroOutBuffer);
|
||||||
m_application.SendPacketTo(ZeroOutBuffer, packetsize, SocketFlags.None, CircuitCode);//userEP);
|
m_networkServer.SendPacketTo(ZeroOutBuffer, packetsize, SocketFlags.None, CircuitCode);//userEP);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
m_application.SendPacketTo(sendbuffer, sendbuffer.Length, SocketFlags.None, CircuitCode); //userEP);
|
m_networkServer.SendPacketTo(sendbuffer, sendbuffer.Length, SocketFlags.None, CircuitCode); //userEP);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception)
|
catch (Exception)
|
||||||
|
@ -900,7 +507,8 @@ namespace OpenSim
|
||||||
|
|
||||||
protected virtual void AuthUser()
|
protected virtual void AuthUser()
|
||||||
{
|
{
|
||||||
AuthenticateResponse sessionInfo = m_gridServer.AuthenticateSession(cirpack.CircuitCode.SessionID, cirpack.CircuitCode.ID, cirpack.CircuitCode.Code);
|
// AuthenticateResponse sessionInfo = m_gridServer.AuthenticateSession(cirpack.CircuitCode.SessionID, cirpack.CircuitCode.ID, cirpack.CircuitCode.Code);
|
||||||
|
AuthenticateResponse sessionInfo = this.m_networkServer.AuthenticateSession(cirpack.CircuitCode.SessionID, cirpack.CircuitCode.ID, cirpack.CircuitCode.Code);
|
||||||
if (!sessionInfo.Authorised)
|
if (!sessionInfo.Authorised)
|
||||||
{
|
{
|
||||||
//session/circuit not authorised
|
//session/circuit not authorised
|
||||||
|
@ -925,36 +533,41 @@ namespace OpenSim
|
||||||
// Create Inventory, currently only works for sandbox mode
|
// Create Inventory, currently only works for sandbox mode
|
||||||
if (m_sandboxMode)
|
if (m_sandboxMode)
|
||||||
{
|
{
|
||||||
AgentInventory inventory = null;
|
this.SetupInventory(sessionInfo);
|
||||||
if (sessionInfo.LoginInfo.InventoryFolder != null)
|
|
||||||
{
|
|
||||||
inventory = this.CreateInventory(sessionInfo.LoginInfo.InventoryFolder);
|
|
||||||
if (sessionInfo.LoginInfo.BaseFolder != null)
|
|
||||||
{
|
|
||||||
if (!inventory.HasFolder(sessionInfo.LoginInfo.BaseFolder))
|
|
||||||
{
|
|
||||||
m_inventoryCache.CreateNewInventoryFolder(this, sessionInfo.LoginInfo.BaseFolder);
|
|
||||||
}
|
|
||||||
this.newAssetFolder = sessionInfo.LoginInfo.BaseFolder;
|
|
||||||
AssetBase[] inventorySet = m_assetCache.CreateNewInventorySet(this.AgentID);
|
|
||||||
if (inventorySet != null)
|
|
||||||
{
|
|
||||||
for (int i = 0; i < inventorySet.Length; i++)
|
|
||||||
{
|
|
||||||
if (inventorySet[i] != null)
|
|
||||||
{
|
|
||||||
m_inventoryCache.AddNewInventoryItem(this, sessionInfo.LoginInfo.BaseFolder, inventorySet[i]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ClientLoop();
|
ClientLoop();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#region Inventory Creation
|
||||||
|
private void SetupInventory(AuthenticateResponse sessionInfo)
|
||||||
|
{
|
||||||
|
AgentInventory inventory = null;
|
||||||
|
if (sessionInfo.LoginInfo.InventoryFolder != null)
|
||||||
|
{
|
||||||
|
inventory = this.CreateInventory(sessionInfo.LoginInfo.InventoryFolder);
|
||||||
|
if (sessionInfo.LoginInfo.BaseFolder != null)
|
||||||
|
{
|
||||||
|
if (!inventory.HasFolder(sessionInfo.LoginInfo.BaseFolder))
|
||||||
|
{
|
||||||
|
m_inventoryCache.CreateNewInventoryFolder(this, sessionInfo.LoginInfo.BaseFolder);
|
||||||
|
}
|
||||||
|
this.newAssetFolder = sessionInfo.LoginInfo.BaseFolder;
|
||||||
|
AssetBase[] inventorySet = m_assetCache.CreateNewInventorySet(this.AgentID);
|
||||||
|
if (inventorySet != null)
|
||||||
|
{
|
||||||
|
for (int i = 0; i < inventorySet.Length; i++)
|
||||||
|
{
|
||||||
|
if (inventorySet[i] != null)
|
||||||
|
{
|
||||||
|
m_inventoryCache.AddNewInventoryItem(this, sessionInfo.LoginInfo.BaseFolder, inventorySet[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
private AgentInventory CreateInventory(LLUUID baseFolder)
|
private AgentInventory CreateInventory(LLUUID baseFolder)
|
||||||
{
|
{
|
||||||
AgentInventory inventory = null;
|
AgentInventory inventory = null;
|
||||||
|
@ -1015,6 +628,7 @@ namespace OpenSim
|
||||||
m_assetCache.AddAsset(asset);
|
m_assetCache.AddAsset(asset);
|
||||||
m_inventoryCache.AddNewInventoryItem(this, packet.InventoryBlock.FolderID, asset);
|
m_inventoryCache.AddNewInventoryItem(this, packet.InventoryBlock.FolderID, asset);
|
||||||
}
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
public class QueItem
|
public class QueItem
|
||||||
{
|
{
|
||||||
|
|
|
@ -24,6 +24,8 @@ using OpenSim.GenericConfig;
|
||||||
|
|
||||||
namespace OpenSim
|
namespace OpenSim
|
||||||
{
|
{
|
||||||
|
public delegate AuthenticateResponse AuthenticateSessionHandler(LLUUID sessionID, LLUUID agentID, uint circuitCode);
|
||||||
|
|
||||||
public class UDPServer : OpenSimNetworkHandler
|
public class UDPServer : OpenSimNetworkHandler
|
||||||
{
|
{
|
||||||
private Dictionary<EndPoint, uint> clientCircuits = new Dictionary<EndPoint, uint>();
|
private Dictionary<EndPoint, uint> clientCircuits = new Dictionary<EndPoint, uint>();
|
||||||
|
@ -45,6 +47,7 @@ namespace OpenSim
|
||||||
private bool m_sandbox = false;
|
private bool m_sandbox = false;
|
||||||
private bool user_accounts = false;
|
private bool user_accounts = false;
|
||||||
private ConsoleBase m_console;
|
private ConsoleBase m_console;
|
||||||
|
public AuthenticateSessionHandler AuthenticateHandler;
|
||||||
|
|
||||||
public PacketServer PacketServer
|
public PacketServer PacketServer
|
||||||
{
|
{
|
||||||
|
@ -78,6 +81,7 @@ namespace OpenSim
|
||||||
this.user_accounts = accounts;
|
this.user_accounts = accounts;
|
||||||
this.m_console = console;
|
this.m_console = console;
|
||||||
PacketServer packetServer = new PacketServer(this);
|
PacketServer packetServer = new PacketServer(this);
|
||||||
|
this.AuthenticateHandler = new AuthenticateSessionHandler(this.m_gridServers.GridServer.AuthenticateSession);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected virtual void OnReceivedData(IAsyncResult result)
|
protected virtual void OnReceivedData(IAsyncResult result)
|
||||||
|
@ -178,5 +182,10 @@ namespace OpenSim
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public virtual AuthenticateResponse AuthenticateSession(LLUUID sessionID, LLUUID agentID, uint circuitCode)
|
||||||
|
{
|
||||||
|
return this.AuthenticateHandler(sessionID, agentID, circuitCode);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -1,95 +0,0 @@
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Net;
|
|
||||||
using System.Net.Sockets;
|
|
||||||
using System.Text;
|
|
||||||
using System.Text.RegularExpressions;
|
|
||||||
using System.Threading;
|
|
||||||
using Nwc.XmlRpc;
|
|
||||||
using System.Collections;
|
|
||||||
using OpenSim.Framework.Console;
|
|
||||||
|
|
||||||
namespace OpenSim.Servers
|
|
||||||
{
|
|
||||||
public class OpenGridProtocolServer
|
|
||||||
{
|
|
||||||
|
|
||||||
private Thread m_workerThread;
|
|
||||||
private Socket m_listenerSocket;
|
|
||||||
private IPEndPoint m_IPendpoint;
|
|
||||||
|
|
||||||
private int m_port;
|
|
||||||
private ArrayList m_clients;
|
|
||||||
|
|
||||||
private class ClientHandler
|
|
||||||
{
|
|
||||||
private Thread m_clientThread;
|
|
||||||
private Socket m_socketHandle;
|
|
||||||
|
|
||||||
public ClientHandler(Socket clientSocketHandle)
|
|
||||||
{
|
|
||||||
m_socketHandle = clientSocketHandle;
|
|
||||||
m_clientThread = new Thread(new ThreadStart(DoWork));
|
|
||||||
m_clientThread.IsBackground = true;
|
|
||||||
m_clientThread.Start();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void DoWork()
|
|
||||||
{
|
|
||||||
OpenSim.Framework.Console.MainConsole.Instance.WriteLine(LogPriority.LOW,"OpenGridProtocol.cs: ClientHandler.DoWork() - Got new client");
|
|
||||||
OpenSim.Framework.Console.MainConsole.Instance.WriteLine(LogPriority.NORMAL, "OpenSim 0.1, running OGS protocol 1.0");
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
private void WriteLine(string theline)
|
|
||||||
{
|
|
||||||
theline += "\n";
|
|
||||||
byte[] thelinebuffer = System.Text.Encoding.ASCII.GetBytes(theline.ToCharArray());
|
|
||||||
m_socketHandle.Send(thelinebuffer, theline.Length, 0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public OpenGridProtocolServer(int port)
|
|
||||||
{
|
|
||||||
m_port = port;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Start()
|
|
||||||
{
|
|
||||||
OpenSim.Framework.Console.MainConsole.Instance.WriteLine(LogPriority.LOW,"OpenGridProtocol.cs: Start() - Opening server socket");
|
|
||||||
|
|
||||||
m_clients = new ArrayList();
|
|
||||||
m_workerThread = new Thread(new ThreadStart(StartServerSocket));
|
|
||||||
m_workerThread.IsBackground = true;
|
|
||||||
m_workerThread.Start();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void StartServerSocket()
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
OpenSim.Framework.Console.MainConsole.Instance.WriteLine(LogPriority.LOW,"OpenGridProtocol.cs: StartServerSocket() - Spawned main thread OK");
|
|
||||||
|
|
||||||
|
|
||||||
m_IPendpoint = new IPEndPoint(IPAddress.Any, m_port);
|
|
||||||
m_listenerSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
|
|
||||||
m_listenerSocket.Bind(m_IPendpoint);
|
|
||||||
m_listenerSocket.Listen(4);
|
|
||||||
|
|
||||||
Socket sockethandle;
|
|
||||||
while (true)
|
|
||||||
{
|
|
||||||
sockethandle = m_listenerSocket.Accept();
|
|
||||||
lock (m_clients.SyncRoot)
|
|
||||||
{
|
|
||||||
m_clients.Add(new OpenGridProtocolServer.ClientHandler(sockethandle));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch (Exception e)
|
|
||||||
{
|
|
||||||
OpenSim.Framework.Console.MainConsole.Instance.WriteLine(LogPriority.MEDIUM,e.Message);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,4 +1,4 @@
|
||||||
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<ProjectType>Local</ProjectType>
|
<ProjectType>Local</ProjectType>
|
||||||
<ProductVersion>8.0.50727</ProductVersion>
|
<ProductVersion>8.0.50727</ProductVersion>
|
||||||
|
@ -6,7 +6,8 @@
|
||||||
<ProjectGuid>{8BB20F0A-0000-0000-0000-000000000000}</ProjectGuid>
|
<ProjectGuid>{8BB20F0A-0000-0000-0000-000000000000}</ProjectGuid>
|
||||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||||
<ApplicationIcon></ApplicationIcon>
|
<ApplicationIcon>
|
||||||
|
</ApplicationIcon>
|
||||||
<AssemblyKeyContainerName>
|
<AssemblyKeyContainerName>
|
||||||
</AssemblyKeyContainerName>
|
</AssemblyKeyContainerName>
|
||||||
<AssemblyName>OpenSim.Servers</AssemblyName>
|
<AssemblyName>OpenSim.Servers</AssemblyName>
|
||||||
|
@ -15,9 +16,11 @@
|
||||||
<DefaultTargetSchema>IE50</DefaultTargetSchema>
|
<DefaultTargetSchema>IE50</DefaultTargetSchema>
|
||||||
<DelaySign>false</DelaySign>
|
<DelaySign>false</DelaySign>
|
||||||
<OutputType>Library</OutputType>
|
<OutputType>Library</OutputType>
|
||||||
<AppDesignerFolder></AppDesignerFolder>
|
<AppDesignerFolder>
|
||||||
|
</AppDesignerFolder>
|
||||||
<RootNamespace>OpenSim.Servers</RootNamespace>
|
<RootNamespace>OpenSim.Servers</RootNamespace>
|
||||||
<StartupObject></StartupObject>
|
<StartupObject>
|
||||||
|
</StartupObject>
|
||||||
<FileUpgradeFlags>
|
<FileUpgradeFlags>
|
||||||
</FileUpgradeFlags>
|
</FileUpgradeFlags>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
@ -28,7 +31,8 @@
|
||||||
<ConfigurationOverrideFile>
|
<ConfigurationOverrideFile>
|
||||||
</ConfigurationOverrideFile>
|
</ConfigurationOverrideFile>
|
||||||
<DefineConstants>TRACE;DEBUG</DefineConstants>
|
<DefineConstants>TRACE;DEBUG</DefineConstants>
|
||||||
<DocumentationFile></DocumentationFile>
|
<DocumentationFile>
|
||||||
|
</DocumentationFile>
|
||||||
<DebugSymbols>True</DebugSymbols>
|
<DebugSymbols>True</DebugSymbols>
|
||||||
<FileAlignment>4096</FileAlignment>
|
<FileAlignment>4096</FileAlignment>
|
||||||
<Optimize>False</Optimize>
|
<Optimize>False</Optimize>
|
||||||
|
@ -37,7 +41,8 @@
|
||||||
<RemoveIntegerChecks>False</RemoveIntegerChecks>
|
<RemoveIntegerChecks>False</RemoveIntegerChecks>
|
||||||
<TreatWarningsAsErrors>False</TreatWarningsAsErrors>
|
<TreatWarningsAsErrors>False</TreatWarningsAsErrors>
|
||||||
<WarningLevel>4</WarningLevel>
|
<WarningLevel>4</WarningLevel>
|
||||||
<NoWarn></NoWarn>
|
<NoWarn>
|
||||||
|
</NoWarn>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||||
<AllowUnsafeBlocks>False</AllowUnsafeBlocks>
|
<AllowUnsafeBlocks>False</AllowUnsafeBlocks>
|
||||||
|
@ -46,7 +51,8 @@
|
||||||
<ConfigurationOverrideFile>
|
<ConfigurationOverrideFile>
|
||||||
</ConfigurationOverrideFile>
|
</ConfigurationOverrideFile>
|
||||||
<DefineConstants>TRACE</DefineConstants>
|
<DefineConstants>TRACE</DefineConstants>
|
||||||
<DocumentationFile></DocumentationFile>
|
<DocumentationFile>
|
||||||
|
</DocumentationFile>
|
||||||
<DebugSymbols>False</DebugSymbols>
|
<DebugSymbols>False</DebugSymbols>
|
||||||
<FileAlignment>4096</FileAlignment>
|
<FileAlignment>4096</FileAlignment>
|
||||||
<Optimize>True</Optimize>
|
<Optimize>True</Optimize>
|
||||||
|
@ -55,18 +61,19 @@
|
||||||
<RemoveIntegerChecks>False</RemoveIntegerChecks>
|
<RemoveIntegerChecks>False</RemoveIntegerChecks>
|
||||||
<TreatWarningsAsErrors>False</TreatWarningsAsErrors>
|
<TreatWarningsAsErrors>False</TreatWarningsAsErrors>
|
||||||
<WarningLevel>4</WarningLevel>
|
<WarningLevel>4</WarningLevel>
|
||||||
<NoWarn></NoWarn>
|
<NoWarn>
|
||||||
|
</NoWarn>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Reference Include="System" >
|
<Reference Include="System">
|
||||||
<HintPath>System.dll</HintPath>
|
<HintPath>System.dll</HintPath>
|
||||||
<Private>False</Private>
|
<Private>False</Private>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="System.Xml" >
|
<Reference Include="System.Xml">
|
||||||
<HintPath>System.Xml.dll</HintPath>
|
<HintPath>System.Xml.dll</HintPath>
|
||||||
<Private>False</Private>
|
<Private>False</Private>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="libsecondlife.dll" >
|
<Reference Include="libsecondlife.dll">
|
||||||
<HintPath>..\bin\libsecondlife.dll</HintPath>
|
<HintPath>..\bin\libsecondlife.dll</HintPath>
|
||||||
<Private>False</Private>
|
<Private>False</Private>
|
||||||
</Reference>
|
</Reference>
|
||||||
|
@ -76,19 +83,19 @@
|
||||||
<Name>OpenSim.Framework</Name>
|
<Name>OpenSim.Framework</Name>
|
||||||
<Project>{8ACA2445-0000-0000-0000-000000000000}</Project>
|
<Project>{8ACA2445-0000-0000-0000-000000000000}</Project>
|
||||||
<Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package>
|
<Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package>
|
||||||
<Private>False</Private>
|
<Private>False</Private>
|
||||||
</ProjectReference>
|
</ProjectReference>
|
||||||
<ProjectReference Include="..\OpenSim.Framework.Console\OpenSim.Framework.Console.csproj">
|
<ProjectReference Include="..\OpenSim.Framework.Console\OpenSim.Framework.Console.csproj">
|
||||||
<Name>OpenSim.Framework.Console</Name>
|
<Name>OpenSim.Framework.Console</Name>
|
||||||
<Project>{A7CD0630-0000-0000-0000-000000000000}</Project>
|
<Project>{A7CD0630-0000-0000-0000-000000000000}</Project>
|
||||||
<Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package>
|
<Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package>
|
||||||
<Private>False</Private>
|
<Private>False</Private>
|
||||||
</ProjectReference>
|
</ProjectReference>
|
||||||
<ProjectReference Include="..\XmlRpcCS\XMLRPC.csproj">
|
<ProjectReference Include="..\XmlRpcCS\XMLRPC.csproj">
|
||||||
<Name>XMLRPC</Name>
|
<Name>XMLRPC</Name>
|
||||||
<Project>{8E81D43C-0000-0000-0000-000000000000}</Project>
|
<Project>{8E81D43C-0000-0000-0000-000000000000}</Project>
|
||||||
<Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package>
|
<Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package>
|
||||||
<Private>False</Private>
|
<Private>False</Private>
|
||||||
</ProjectReference>
|
</ProjectReference>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
@ -110,9 +117,6 @@
|
||||||
<Compile Include="LoginServer.cs">
|
<Compile Include="LoginServer.cs">
|
||||||
<SubType>Code</SubType>
|
<SubType>Code</SubType>
|
||||||
</Compile>
|
</Compile>
|
||||||
<Compile Include="OpenGridProtocol.cs">
|
|
||||||
<SubType>Code</SubType>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="XmlRpcMethod.cs">
|
<Compile Include="XmlRpcMethod.cs">
|
||||||
<SubType>Code</SubType>
|
<SubType>Code</SubType>
|
||||||
</Compile>
|
</Compile>
|
||||||
|
@ -124,4 +128,4 @@
|
||||||
<PostBuildEvent>
|
<PostBuildEvent>
|
||||||
</PostBuildEvent>
|
</PostBuildEvent>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
</Project>
|
</Project>
|
|
@ -17,7 +17,6 @@
|
||||||
<include name="LocalUserProfileManager.cs" />
|
<include name="LocalUserProfileManager.cs" />
|
||||||
<include name="LoginResponse.cs" />
|
<include name="LoginResponse.cs" />
|
||||||
<include name="LoginServer.cs" />
|
<include name="LoginServer.cs" />
|
||||||
<include name="OpenGridProtocol.cs" />
|
|
||||||
<include name="XmlRpcMethod.cs" />
|
<include name="XmlRpcMethod.cs" />
|
||||||
</sources>
|
</sources>
|
||||||
<references basedir="${project::get-base-directory()}">
|
<references basedir="${project::get-base-directory()}">
|
||||||
|
|
Loading…
Reference in New Issue