From 3bf88587277b83c0b6f058fabba7d46a3b5a6a00 Mon Sep 17 00:00:00 2001 From: Jeff Ames Date: Thu, 28 Aug 2008 14:41:54 +0000 Subject: Update svn properties, formatting cleanup. --- .../Rest/Inventory/IRestHandler.cs | 7 +- .../Rest/Inventory/RequestData.cs | 147 +++++----- OpenSim/ApplicationPlugins/Rest/Inventory/Rest.cs | 40 +-- .../Rest/Inventory/RestAssetServices.cs | 31 +- .../Rest/Inventory/RestHandler.cs | 70 ++--- .../Rest/Inventory/RestInventoryServices.cs | 325 ++++++++------------- .../Rest/Inventory/tests/Remote.cs | 26 +- OpenSim/Framework/AgentCircuitManager.cs | 6 +- .../Communications/Cache/CachedUserInfo.cs | 2 +- .../Cache/UserProfileCacheService.cs | 2 +- .../Framework/Communications/Capabilities/Caps.cs | 4 +- .../Framework/Communications/GridInfoService.cs | 14 +- OpenSim/Framework/IClientAPI.cs | 6 +- OpenSim/Framework/Servers/BaseHttpServer.cs | 24 +- OpenSim/Framework/Servers/BaseOpenSimServer.cs | 18 +- OpenSim/Grid/UserServer/UserLoginService.cs | 2 +- OpenSim/Region/ClientStack/LindenUDP/KillPacket.cs | 7 +- .../Region/ClientStack/LindenUDP/LLClientView.cs | 14 +- .../ClientStack/LindenUDP/LLPacketHandler.cs | 4 +- .../Region/Communications/OGS1/OGS1GridServices.cs | 14 +- .../Currency/SampleMoney/SampleMoneyModule.cs | 6 +- .../Modules/InterGrid/OpenGridProtocolModule.cs | 138 ++++----- .../Modules/World/Archiver/ArchiveConstants.cs | 2 +- .../Modules/World/Archiver/ArchiveReadRequest.cs | 6 +- .../Environment/Modules/World/NPC/NPCAvatar.cs | 4 +- .../Modules/World/WorldMap/MapImageModule.cs | 2 +- .../World/WorldMap/ShadedMapTileRenderer.cs | 10 +- .../World/WorldMap/TexturedMapTileRenderer.cs | 32 +- OpenSim/Region/Environment/Scenes/Scene.cs | 60 ++-- .../Scenes/SceneCommunicationService.cs | 2 +- OpenSim/Region/Environment/Scenes/ScenePresence.cs | 6 +- OpenSim/Region/Physics/Meshing/Mesh.cs | 2 +- OpenSim/Region/Physics/Meshing/Meshmerizer.cs | 7 +- OpenSim/Region/Physics/Meshing/PrimMesher.cs | 97 +++--- .../ScriptEngine/Common/LSL_BuiltIn_Commands.cs | 40 +-- .../Shared/Api/Implementation/LSL_Api.cs | 34 +-- .../Region/ScriptEngine/XEngine/EventManager.cs | 3 +- 37 files changed, 505 insertions(+), 709 deletions(-) (limited to 'OpenSim') diff --git a/OpenSim/ApplicationPlugins/Rest/Inventory/IRestHandler.cs b/OpenSim/ApplicationPlugins/Rest/Inventory/IRestHandler.cs index 69f91e4..82dc2e4 100644 --- a/OpenSim/ApplicationPlugins/Rest/Inventory/IRestHandler.cs +++ b/OpenSim/ApplicationPlugins/Rest/Inventory/IRestHandler.cs @@ -23,7 +23,6 @@ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * */ using System; @@ -41,11 +40,11 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory public delegate void RestMethodHandler(RequestData rdata); public delegate RequestData RestMethodAllocator(OSHttpRequest request, OSHttpResponse response, string path); - + /// /// This interface represents the boundary between the general purpose /// REST plugin handling, and the functionally specific handlers. The - /// handler knows only to initialize and terminate all such handlers + /// handler knows only to initialize and terminate all such handlers /// that it finds. Implementing this interface identifies the class as /// a REST handler implementation. /// @@ -55,7 +54,7 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory string MsgId { get; } string RequestId { get; } - + void AddPathHandler(RestMethodHandler mh, string path, RestMethodAllocator ma); void AddStreamHandler(string httpMethod, string path, RestMethod method); diff --git a/OpenSim/ApplicationPlugins/Rest/Inventory/RequestData.cs b/OpenSim/ApplicationPlugins/Rest/Inventory/RequestData.cs index 6742402..24e5ada 100644 --- a/OpenSim/ApplicationPlugins/Rest/Inventory/RequestData.cs +++ b/OpenSim/ApplicationPlugins/Rest/Inventory/RequestData.cs @@ -23,7 +23,6 @@ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * */ using System; @@ -44,14 +43,14 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory /// /// This class represents the current REST request. It - /// encapsulates the request/response state and takes care + /// encapsulates the request/response state and takes care /// of response generation without exposing the REST handler /// to the actual mechanisms involved. /// /// This structure is created on entry to the Handler /// method and is disposed of upon return. It is part of /// the plug-in infrastructure, rather than the functionally - /// specific REST handler, and fundamental changes to + /// specific REST handler, and fundamental changes to /// this should be reflected in the Rest HandlerVersion. The /// object is instantiated, and may be extended by, any /// given handler. See the inventory handler for an example @@ -84,7 +83,7 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory // Storing information in body will suppress the return of // statusBody which is only intended to report status on // requests which do not themselves ordinarily generate - // an informational response. All of this is handled in + // an informational response. All of this is handled in // Respond(). internal byte[] buffer = null; @@ -92,8 +91,8 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory internal string bodyType = "text/html"; // The encoding in effect is set to a server default. It may - // subsequently be overridden by a Content header. This - // value is established during construction and is used + // subsequently be overridden by a Content header. This + // value is established during construction and is used // wherever encoding services are needed. internal Encoding encoding = Rest.Encoding; @@ -110,7 +109,7 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory // The path part of the URI is decomposed. pathNodes // is an array of every element in the URI. Parameters - // is an array that contains only those nodes that + // is an array that contains only those nodes that // are not a part of the authority prefix private string[] pathNodes = null; @@ -118,7 +117,7 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory private static readonly string[] EmptyPath = { String.Empty }; // The status code gets set during the course of processing - // and is the HTTP completion code. The status body is + // and is the HTTP completion code. The status body is // initialized during construction, is appended to during the // course of execution, and is finalized during Respond // processing. @@ -166,7 +165,7 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory // force selection of a particular authentication model // (choosing from amongst those supported of course) // - + internal bool authenticated = false; internal string scheme = null; internal string realm = Rest.Realm; @@ -183,7 +182,7 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory internal string userPass = String.Empty; // Session related tables. These are only needed if QOP is set to "auth-sess" - // and for now at least, it is not. Session related authentication is of + // and for now at least, it is not. Session related authentication is of // questionable merit in the context of REST anyway, but it is, arguably, more // secure. @@ -199,23 +198,23 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory private static Regex schema = new Regex("^\\s*(?\\w+)\\s*.*", RegexOptions.Compiled | RegexOptions.IgnoreCase); - + private static Regex basicParms = new Regex("^\\s*(?:\\w+)\\s+(?\\S+)\\s*", RegexOptions.Compiled | RegexOptions.IgnoreCase); - + private static Regex digestParm1 = new Regex("\\s*(?\\w+)\\s*=\\s*\"(?[^\"]+)\"", RegexOptions.Compiled | RegexOptions.IgnoreCase); - + private static Regex digestParm2 = new Regex("\\s*(?\\w+)\\s*=\\s*(?[^\\p{P}\\s]+)", RegexOptions.Compiled | RegexOptions.IgnoreCase); - + private static Regex reuserPass = new Regex("(?[^:]+):(?[\\S\\s]*)", RegexOptions.Compiled | RegexOptions.IgnoreCase); - + // For efficiency, we create static instances of these objects private static MD5 md5hash = MD5.Create(); - + private static StringComparer sc = StringComparer.OrdinalIgnoreCase; #region properties @@ -228,15 +227,15 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory } /// - /// Return a boolean indication of whether or no an authenticated user is - /// associated with this request. This could be wholly integrated, but + /// Return a boolean indication of whether or no an authenticated user is + /// associated with this request. This could be wholly integrated, but /// that would make authentication mandatory. /// internal bool IsAuthenticated { get - { + { if (Rest.Authenticate) { if (!authenticated) @@ -258,31 +257,31 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory internal string[] PathNodes { get - { + { return pathNodes; } } - + /// /// Access to all non-prefix 'nodes' in the supplied URI as an - /// array of strings. These identify a specific resource that + /// array of strings. These identify a specific resource that /// is managed by the authority (the prefix). /// internal string[] Parameters { get - { + { return parameters; } } - + #endregion properties #region constructors // Constructor - + internal RequestData(OSHttpRequest p_request, OSHttpResponse p_response, string p_qprefix) { @@ -315,7 +314,7 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory /// Realm, domain, etc. /// /// This method checks to see if the current request is already - /// authenticated for this domain. If it is, then it returns + /// authenticated for this domain. If it is, then it returns /// true. If it is not, then it issues a challenge to the client /// and responds negatively to the request. /// @@ -339,7 +338,7 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory Rest.Log.DebugFormat("{0} Challenge reason: No authorization data", MsgId); DoChallenge(); } - + // So, we have authentication data, now we have to check to // see what we got and whether or not it is valid for the // current domain. To do this we need to interpret the data @@ -438,7 +437,7 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory // The service provider can force a particular scheme by // assigning a value to scheme. - + // Basic authentication is pretty simple. // Just specify the realm in question. @@ -468,8 +467,8 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory sbuilder.Append(" "); // Specify the effective realm. This should - // never be null if we are uthenticating, as it is required for all - // authentication schemes. It defines, in conjunction with the + // never be null if we are uthenticating, as it is required for all + // authentication schemes. It defines, in conjunction with the // absolute URI information, the domain to which the authentication // applies. It is an arbitrary string. I *believe* this allows an // authentication to apply to disjoint resources within the same @@ -485,7 +484,7 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory } // Share our nonce. This is *uniquely* generated each time a 401 is - // returned. We do not generate a very sophisticated nonce at the + // returned. We do not generate a very sophisticated nonce at the // moment (it's simply a base64 encoded UUID). if (nonce != null) @@ -532,7 +531,7 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory sbuilder.Append(Rest.CS_COMMA); } - // Theoretically QOP is optional, but it is required by a compliant + // Theoretically QOP is optional, but it is required by a compliant // with current versions of the scheme. In fact IE requires that QOP // be specified and will refuse to authenticate otherwise. @@ -555,7 +554,7 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory } // We don't know the userid that will be used - // so we cannot make any authentication domain + // so we cannot make any authentication domain // assumptions. So the prefix will determine // this. @@ -582,7 +581,7 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory /// understand this and also expect it to be the first one /// offered. So we do. /// OpenSim also needs this, as it is the only scheme that allows - /// authentication using the hashed passwords stored in the + /// authentication using the hashed passwords stored in the /// user database. /// @@ -599,7 +598,7 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory foreach (Match m in matches) { authparms.Add("response",m.Groups["pval"].Value); - Rest.Log.DebugFormat("{0} Parameter matched : {1} = {2}", + Rest.Log.DebugFormat("{0} Parameter matched : {1} = {2}", MsgId, "response", m.Groups["pval"].Value); } @@ -623,7 +622,7 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory } /// - /// This method provides validation in support of the BASIC + /// This method provides validation in support of the BASIC /// authentication method. This is not normaly expected to be /// used, but is included for completeness (and because I tried /// it first). @@ -664,12 +663,12 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory string last; // Distinguish the parts, if necessary - + if ((x=user.IndexOf(Rest.C_SPACE)) != -1) { first = user.Substring(0,x); last = user.Substring(x+1); - } + } else { first = user; @@ -685,9 +684,9 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory HA1 = HashToString(pass); HA1 = HashToString(String.Format("{0}:{1}",HA1,udata.PasswordSalt)); - + return (0 == sc.Compare(HA1, udata.PasswordHash)); - + } #endregion authentication_basic @@ -712,7 +711,7 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory foreach (Match m in matches) { authparms.Add(m.Groups["parm"].Value,m.Groups["pval"].Value); - Rest.Log.DebugFormat("{0} String Parameter matched : {1} = {2}", + Rest.Log.DebugFormat("{0} String Parameter matched : {1} = {2}", MsgId, m.Groups["parm"].Value,m.Groups["pval"].Value); } @@ -723,7 +722,7 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory foreach (Match m in matches) { authparms.Add(m.Groups["parm"].Value,m.Groups["pval"].Value); - Rest.Log.DebugFormat("{0} Tokenized Parameter matched : {1} = {2}", + Rest.Log.DebugFormat("{0} Tokenized Parameter matched : {1} = {2}", MsgId, m.Groups["parm"].Value,m.Groups["pval"].Value); } @@ -760,7 +759,7 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory if (!authparms.TryGetValue("nonce", out nonce) || nonce == null) { - Rest.Log.WarnFormat("{0} Authentication failed: nonce missing", MsgId); + Rest.Log.WarnFormat("{0} Authentication failed: nonce missing", MsgId); break; } @@ -771,7 +770,7 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory { if (temp != opaque) { - Rest.Log.WarnFormat("{0} Authentication failed: bad opaque value", MsgId); + Rest.Log.WarnFormat("{0} Authentication failed: bad opaque value", MsgId); break; } } @@ -783,7 +782,7 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory { if (temp != algorithm) { - Rest.Log.WarnFormat("{0} Authentication failed: bad algorithm value", MsgId); + Rest.Log.WarnFormat("{0} Authentication failed: bad algorithm value", MsgId); break; } } @@ -800,7 +799,7 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory if (!authparms.ContainsKey("cnonce")) { - Rest.Log.WarnFormat("{0} Authentication failed: cnonce missing", MsgId); + Rest.Log.WarnFormat("{0} Authentication failed: cnonce missing", MsgId); break; } @@ -808,7 +807,7 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory if (!authparms.TryGetValue("nc", out nck) || nck == null) { - Rest.Log.WarnFormat("{0} Authentication failed: cnonce counter missing", MsgId); + Rest.Log.WarnFormat("{0} Authentication failed: cnonce counter missing", MsgId); break; } @@ -820,7 +819,7 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory if (Rest.Hex2Int(ncl) >= Rest.Hex2Int(nck)) { - Rest.Log.WarnFormat("{0} Authentication failed: bad cnonce counter", MsgId); + Rest.Log.WarnFormat("{0} Authentication failed: bad cnonce counter", MsgId); break; } cntable[nonce] = nck; @@ -840,12 +839,12 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory // these MUST NOT be present. if (authparms.ContainsKey("cnonce")) { - Rest.Log.WarnFormat("{0} Authentication failed: invalid cnonce", MsgId); + Rest.Log.WarnFormat("{0} Authentication failed: invalid cnonce", MsgId); break; } if (authparms.ContainsKey("nc")) { - Rest.Log.WarnFormat("{0} Authentication failed: invalid cnonce counter[2]", MsgId); + Rest.Log.WarnFormat("{0} Authentication failed: invalid cnonce counter[2]", MsgId); break; } } @@ -854,7 +853,7 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory authenticated = ValidateDigest(userName, nonce, cnonce, nck, authPrefix, response); - } + } while (false); } @@ -864,10 +863,10 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory /// /// This mechanism is used by the digest authentication mechanism /// to return the user's password. In fact, because the OpenSim - /// user's passwords are already hashed, and the HTTP mechanism - /// does not supply an open password, the hashed passwords cannot + /// user's passwords are already hashed, and the HTTP mechanism + /// does not supply an open password, the hashed passwords cannot /// be used unless the client has used the same salting mechanism - /// to has the password before using it in the authentication + /// to has the password before using it in the authentication /// algorithn. This is not inconceivable... /// @@ -879,12 +878,12 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory string last; // Distinguish the parts, if necessary - + if ((x=user.IndexOf(Rest.C_SPACE)) != -1) { first = user.Substring(0,x); last = user.Substring(x+1); - } + } else { first = user; @@ -955,7 +954,7 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory HA2 = HashToString(patt); // Generate Digest - + if (qop != String.Empty) { patt = String.Format("{0}:{1}:{2}:{3}:{4}:{5}", HA1, nonce, nck, cnonce, qop, HA2); @@ -1011,7 +1010,7 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory } /// - /// Indicate a functionally-dependent conclusion to the + /// Indicate a functionally-dependent conclusion to the /// request. See Rest.cs for a list of possible values. /// @@ -1023,7 +1022,7 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory /// /// Indicate that a request should be redirected, using /// the HTTP completion codes. Permanent and temporary - /// redirections may be indicated. The supplied URL is + /// redirections may be indicated. The supplied URL is /// the new location of the resource. /// @@ -1057,7 +1056,7 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory } /// - /// For the more adventurous. This failure also includes a + /// For the more adventurous. This failure also includes a /// specified entity to be appended to the code-related /// status string. /// @@ -1101,12 +1100,12 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory fail = true; - // Respond to the client's request, tag the response (for the + // Respond to the client's request, tag the response (for the // benefit of trace) to indicate the reason. Respond(String.Format("Failure response: ({0}) : {1}", code, Rest.HttpStatusDesc[code])); - + // Finally initialize and the throw a RestException. All of the // handler's infrastructure knows that this is a "normal" // completion from a code point-of-view. @@ -1129,7 +1128,7 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory Fail(Rest.HttpStatusCodeNotImplemented, "request rejected (not implemented)"); } - // This MUST be called by an agent handler before it returns + // This MUST be called by an agent handler before it returns // control to Handle, otherwise the request will be ignored. // This is called implciitly for the REST stream handlers and // is harmless if it is called twice. @@ -1222,7 +1221,7 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory } - // Set the status code & description. If nothing has been stored, + // Set the status code & description. If nothing has been stored, // we consider that a success. if (statusCode == 0) @@ -1236,7 +1235,7 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory // For a redirect we need to set the relocation header accordingly - if (response.StatusCode == (int) Rest.HttpStatusCodeTemporaryRedirect || + if (response.StatusCode == (int) Rest.HttpStatusCodeTemporaryRedirect || response.StatusCode == (int) Rest.HttpStatusCodePermanentRedirect) { Rest.Log.DebugFormat("{0} Re-direct location is {1}", MsgId, redirectLocation); @@ -1252,7 +1251,7 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory // We've left the setting of handled' until the // last minute because the header settings included // above are pretty harmless. But everything from - // here on down probably leaves the response + // here on down probably leaves the response // element unusable by anyone else. handled = true; @@ -1267,7 +1266,7 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory if (buffer != null && buffer.Length != 0) { - Rest.Log.DebugFormat("{0} Entity buffer, length = {1} : <{2}>", + Rest.Log.DebugFormat("{0} Entity buffer, length = {1} : <{2}>", MsgId, buffer.Length, encoding.GetString(buffer)); response.OutputStream.Write(buffer, 0, buffer.Length); } @@ -1295,11 +1294,11 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory { if (Rest.DEBUG) { - Rest.Log.DebugFormat("{0} Adding header: <{1}: {2}>", + Rest.Log.DebugFormat("{0} Adding header: <{1}: {2}>", MsgId, hdr, data); if (response.Headers.Get(hdr) != null) { - Rest.Log.DebugFormat("{0} Multipe {1} headers will be generated>", + Rest.Log.DebugFormat("{0} Multipe {1} headers will be generated>", MsgId, hdr); } } @@ -1313,7 +1312,7 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory Rest.Log.DebugFormat("{0} Removing header: <{1}>", MsgId, hdr); if (response.Headers.Get(hdr) == null) { - Rest.Log.DebugFormat("{0} No such header existed", + Rest.Log.DebugFormat("{0} No such header existed", MsgId, hdr); } } @@ -1326,7 +1325,7 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory { for (int i=0;i @@ -88,7 +86,7 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory static Rest() { - HttpStatusDesc = new Dictionary(); + HttpStatusDesc = new Dictionary(); if (HttpStatusCodeArray.Length != HttpStatusDescArray.Length) { Log.ErrorFormat("{0} HTTP Status Code and Description arrays do not match"); @@ -143,7 +141,7 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory /// supported by all servers. See Respond /// to see how these are handled. /// - + // REST AGENT 1.0 interpretations public const string GET = "get"; // information retrieval - server state unchanged public const string HEAD = "head"; // same as get except only the headers are returned. @@ -175,7 +173,7 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory public static readonly char C_PERIOD = '.'; public static readonly char C_COMMA = ','; public static readonly char C_DQUOTE = '"'; - + public static readonly string CS_SPACE = " "; public static readonly string CS_SLASH = "/"; public static readonly string CS_PATHSEP = "/"; @@ -184,7 +182,7 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory public static readonly string CS_PERIOD = "."; public static readonly string CS_COMMA = ","; public static readonly string CS_DQUOTE = "\""; - + public static readonly char[] CA_SPACE = { C_SPACE }; public static readonly char[] CA_SLASH = { C_SLASH }; public static readonly char[] CA_PATHSEP = { C_PATHSEP }; @@ -392,7 +390,7 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory public const string AS_DIGEST = "Digest"; /// Supported Digest algorithms - + public const string Digest_MD5 = "MD5"; // assumedd efault if omitted public const string Digest_MD5Sess = "MD5-sess"; @@ -440,7 +438,7 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory int val = 0; int sum = 0; string tmp = null; - + if (hex != null) { tmp = hex.ToLower(); @@ -455,7 +453,6 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory } return sum; - } // Nonce management @@ -465,17 +462,15 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory return StringToBase64(CreationDate + Guid.NewGuid().ToString()); } - // Dump he specified data stream; + // Dump the specified data stream public static void Dump(byte[] data) { - char[] buffer = new char[Rest.DumpLineSize]; int cc = 0; for (int i = 0; i < data.Length; i++) { - if (i % Rest.DumpLineSize == 0) Console.Write("\n{0}: ",i.ToString("d8")); if (i % 4 == 0) Console.Write(" "); @@ -494,7 +489,6 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory Console.Write(" |"+(new String(buffer))+"|"); cc = 0; } - } // Finish off any incomplete line @@ -504,33 +498,29 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory for (int i = cc ; i < Rest.DumpLineSize; i++) { if (i % 4 == 0) Console.Write(" "); - Console.Write(" "); + Console.Write(" "); buffer[i % Rest.DumpLineSize] = ' '; } Console.WriteLine(" |"+(new String(buffer))+"|"); } else { - Console.Write("\n"); + Console.Write("\n"); } - } - } - + // Local exception type public class RestException : Exception { - internal int statusCode; internal string statusDesc; internal string httpmethod; internal string httppath; - public RestException(string msg) : base(msg) - { + public RestException(string msg) : base(msg) + { } } - } diff --git a/OpenSim/ApplicationPlugins/Rest/Inventory/RestAssetServices.cs b/OpenSim/ApplicationPlugins/Rest/Inventory/RestAssetServices.cs index 6b802d3..1b94741 100644 --- a/OpenSim/ApplicationPlugins/Rest/Inventory/RestAssetServices.cs +++ b/OpenSim/ApplicationPlugins/Rest/Inventory/RestAssetServices.cs @@ -23,7 +23,6 @@ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * */ using libsecondlife; @@ -40,10 +39,8 @@ using OpenSim.Framework.Communications.Cache; namespace OpenSim.ApplicationPlugins.Rest.Inventory { - public class RestAssetServices : IRest { - private bool enabled = false; private string qPrefix = "assets"; @@ -52,7 +49,6 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory public RestAssetServices() { - Rest.Log.InfoFormat("{0} Asset services initializing", MsgId); Rest.Log.InfoFormat("{0} Using REST Implementation Version {1}", MsgId, Rest.Version); @@ -73,7 +69,6 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory enabled = true; Rest.Log.InfoFormat("{0} Asset services initialization complete", MsgId); - } // Post-construction, pre-enabled initialization opportunity @@ -84,7 +79,7 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory } // Called by the plug-in to halt REST processing. Local processing is - // disabled, and control blocks until all current processing has + // disabled, and control blocks until all current processing has // completed. No new processing will be started public void Close() @@ -111,14 +106,13 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory private void DoAsset(RequestData rparm) { - if (!enabled) return; AssetRequestData rdata = (AssetRequestData) rparm; Rest.Log.DebugFormat("{0} REST Asset handler ENTRY", MsgId); - // Now that we know this is a serious attempt to + // Now that we know this is a serious attempt to // access inventory data, we should find out who // is asking, and make sure they are authorized // to do so. We need to validate the caller's @@ -129,9 +123,9 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory // With the present HTTP server we can't use the // builtin authentication mechanisms because they // would be enforced for all in-bound requests. - // Instead we look at the headers ourselves and + // Instead we look at the headers ourselves and // handle authentication directly. - + try { if (!rdata.IsAuthenticated) @@ -144,13 +138,13 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory if (e.statusCode == Rest.HttpStatusCodeNotAuthorized) { Rest.Log.WarnFormat("{0} User not authenticated", MsgId); - Rest.Log.DebugFormat("{0} Authorization header: {1}", MsgId, + Rest.Log.DebugFormat("{0} Authorization header: {1}", MsgId, rdata.request.Headers.Get("Authorization")); } else { Rest.Log.ErrorFormat("{0} User authentication failed", MsgId); - Rest.Log.DebugFormat("{0} Authorization header: {1}", MsgId, + Rest.Log.DebugFormat("{0} Authorization header: {1}", MsgId, rdata.request.Headers.Get("Authorization")); } throw (e); @@ -173,7 +167,7 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory case "post" : case "delete" : default : - Rest.Log.WarnFormat("{0} Asset: Method not supported: {1}", + Rest.Log.WarnFormat("{0} Asset: Method not supported: {1}", MsgId, rdata.method); rdata.Fail(Rest.HttpStatusCodeBadRequest,String.Format("method <{0}> not supported", rdata.method)); break; @@ -186,14 +180,12 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory } Rest.Log.DebugFormat("{0} REST Asset handler EXIT", MsgId); - } #endregion Interface private void DoGet(AssetRequestData rdata) { - bool istexture = false; Rest.Log.DebugFormat("{0} REST Asset handler, Method = <{1}> ENTRY", MsgId, rdata.method); @@ -203,13 +195,11 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory if (rdata.Parameters.Length == 1) { - LLUUID uuid = new LLUUID(rdata.Parameters[0]); AssetBase asset = Rest.AssetServices.GetAsset(uuid, istexture); if (asset != null) { - Rest.Log.DebugFormat("{0} Asset located <{1}>", MsgId, rdata.Parameters[0]); rdata.initXmlWriter(); @@ -237,7 +227,6 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory rdata.Complete(); rdata.Respond("Asset " + rdata.method + ": Normal completion"); - } private void DoPut(AssetRequestData rdata) @@ -255,7 +244,7 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory if (!xml.ReadToFollowing("Asset")) { Rest.Log.DebugFormat("{0} Invalid request data: <{1}>", MsgId, rdata.path); - rdata.Fail(Rest.HttpStatusCodeBadRequest,"invalid request data"); + rdata.Fail(Rest.HttpStatusCodeBadRequest,"invalid request data"); } AssetBase asset = new AssetBase(); @@ -272,12 +261,11 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory else { Rest.Log.DebugFormat("{0} Invalid parameters: <{1}>", MsgId, rdata.path); - rdata.Fail(Rest.HttpStatusCodeNotFound, "invalid parameters"); + rdata.Fail(Rest.HttpStatusCodeNotFound, "invalid parameters"); } rdata.Complete(); rdata.Respond("Asset " + rdata.method + ": Normal completion"); - } internal class AssetRequestData : RequestData @@ -287,6 +275,5 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory { } } - } } diff --git a/OpenSim/ApplicationPlugins/Rest/Inventory/RestHandler.cs b/OpenSim/ApplicationPlugins/Rest/Inventory/RestHandler.cs index 61cf0e4..ab6128f 100644 --- a/OpenSim/ApplicationPlugins/Rest/Inventory/RestHandler.cs +++ b/OpenSim/ApplicationPlugins/Rest/Inventory/RestHandler.cs @@ -23,7 +23,6 @@ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * */ using System; @@ -35,7 +34,6 @@ using OpenSim.ApplicationPlugins.Rest; namespace OpenSim.ApplicationPlugins.Rest.Inventory { - /// /// The class signature reveals the roles that RestHandler plays. /// @@ -74,10 +72,10 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory /// /// This static initializer scans the ASSEMBLY for classes that /// export the IRest interface and builds a list of them. These - /// are later activated by the handler. To add a new handler it + /// are later activated by the handler. To add a new handler it /// is only necessary to create a new services class that implements /// the IRest interface, and recompile the handler. This gives - /// all of the build-time flexibility of a modular approach + /// all of the build-time flexibility of a modular approach /// while not introducing yet-another module loader. Note that /// multiple assembles can still be built, each with its own set /// of handlers. Examples of services classes are RestInventoryServices @@ -86,13 +84,12 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory static RestHandler() { - Module[] mods = Assembly.GetExecutingAssembly().GetModules(); foreach (Module m in mods) { Type[] types = m.GetTypes(); - foreach (Type t in types) + foreach (Type t in types) { try { @@ -108,7 +105,6 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory } } } - } #endregion local static state @@ -117,13 +113,13 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory /// /// This routine loads all of the handlers discovered during - /// instance initialization. + /// instance initialization. /// A table of all loaded and successfully constructed handlers /// is built, and this table is then used by the constructor to /// initialize each of the handlers in turn. /// NOTE: The loading process does not automatically imply that - /// the handler has registered any kind of an interface, that - /// may be (optionally) done by the handler either during + /// the handler has registered any kind of an interface, that + /// may be (optionally) done by the handler either during /// construction, or during initialization. /// /// I was not able to make this code work within a constructor @@ -136,7 +132,6 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory { if (!handlersLoaded) { - ConstructorInfo ci; Object ht; @@ -167,8 +162,8 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory // Name is used to differentiate the message header. - public override string Name - { + public override string Name + { get { return "HANDLER"; } } @@ -181,7 +176,7 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory // We have to rename these because we want // to be able to share the values with other - // classes in our assembly and the base + // classes in our assembly and the base // names are protected. public string MsgId @@ -211,7 +206,6 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory { try { - // This plugin will only be enabled if the broader // REST plugin mechanism is enabled. @@ -222,7 +216,7 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory // IsEnabled is implemented by the base class and // reflects an overall RestPlugin status - if (!IsEnabled) + if (!IsEnabled) { Rest.Log.WarnFormat("{0} Plugins are disabled", MsgId); return; @@ -278,15 +272,15 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory Rest.DumpLineSize); } - // Load all of the handlers present in the + // Load all of the handlers present in the // assembly // In principle, as we're an application plug-in, // most of what needs to be done could be done using - // static resources, however the Open Sim plug-in - // model makes this an instance, so that's what we + // static resources, however the Open Sim plug-in + // model makes this an instance, so that's what we // need to be. - // There is only one Communications manager per + // There is only one Communications manager per // server, and by inference, only one each of the // user, asset, and inventory servers. So we can cache // those using a static initializer. @@ -329,13 +323,12 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory { Rest.Log.ErrorFormat("{0} Plugin initialization has failed: {1}", MsgId, e.Message); } - } /// /// In the interests of efficiency, and because we cannot determine whether /// or not this instance will actually be harvested, we clobber the only - /// anchoring reference to the working state for this plug-in. What the + /// anchoring reference to the working state for this plug-in. What the /// call to close does is irrelevant to this class beyond knowing that it /// can nullify the reference when it returns. /// To make sure everything is copacetic we make sure the primary interface @@ -344,7 +337,6 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory public override void Close() { - Rest.Log.InfoFormat("{0} Plugin is terminating", MsgId); try @@ -352,12 +344,11 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory RemoveAgentHandler(Rest.Name, this); } catch (KeyNotFoundException){} - + foreach (IRest handler in handlers) { handler.Close(); } - } #endregion overriding methods @@ -383,7 +374,7 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory foreach (string key in pathHandlers.Keys) { Rest.Log.DebugFormat("{0} Match testing {1} against agent prefix <{2}>", MsgId, path, key); - + // Note that Match will not necessarily find the handler that will // actually be used - it does no test for the "closest" fit. It // simply reflects that at least one possible handler exists. @@ -393,7 +384,7 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory Rest.Log.DebugFormat("{0} Matched prefix <{1}>", MsgId, key); // This apparently odd evaluation is needed to prevent a match - // on anything other than a URI token boundary. Otherwise we + // on anything other than a URI token boundary. Otherwise we // may match on URL's that were not intended for this handler. return ( path.Length == key.Length || @@ -406,9 +397,8 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory foreach (string key in streamHandlers.Keys) { - Rest.Log.DebugFormat("{0} Match testing {1} against stream prefix <{2}>", MsgId, path, key); - + // Note that Match will not necessarily find the handler that will // actually be used - it does no test for the "closest" fit. It // simply reflects that at least one possible handler exists. @@ -418,7 +408,7 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory Rest.Log.DebugFormat("{0} Matched prefix <{1}>", MsgId, key); // This apparently odd evaluation is needed to prevent a match - // on anything other than a URI token boundary. Otherwise we + // on anything other than a URI token boundary. Otherwise we // may match on URL's that were not intended for this handler. return ( path.Length == key.Length || @@ -426,7 +416,6 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory } } - } catch (Exception e) { @@ -460,7 +449,7 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory for (int i = 0; i < request.Headers.Count; i++) { - Rest.Log.DebugFormat("{0} Header [{1}] : <{2}> = <{3}>", + Rest.Log.DebugFormat("{0} Header [{1}] : <{2}> = <{3}>", MsgId, i, request.Headers.GetKey(i), request.Headers.Get(i)); } Rest.Log.DebugFormat("{0} URI: {1}", MsgId, request.RawUrl); @@ -486,7 +475,6 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory Rest.Log.DebugFormat("{0} EXIT", MsgId); return handled; - } #endregion interface methods @@ -534,7 +522,6 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory } return rdata.handled; - } /// @@ -547,13 +534,12 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory public void AddStreamHandler(string httpMethod, string path, RestMethod method) { - if (!IsEnabled) { return; } - if (!path.StartsWith(Rest.Prefix)) + if (!path.StartsWith(Rest.Prefix)) { path = String.Format("{0}{1}", Rest.Prefix, path); } @@ -571,7 +557,6 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory { Rest.Log.WarnFormat("{0} Ignoring duplicate handler for {1}", MsgId, path); } - } /// @@ -586,10 +571,9 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory internal bool FindPathHandler(OSHttpRequest request, OSHttpResponse response) { - RequestData rdata = null; string bestMatch = null; - + if (!IsEnabled) { return false; @@ -612,7 +596,6 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory if (!String.IsNullOrEmpty(bestMatch)) { - rdata = pathAllocators[bestMatch](request, response, bestMatch); Rest.Log.DebugFormat("{0} Path based REST handler matched with <{1}>", MsgId, bestMatch); @@ -621,7 +604,7 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory { pathHandlers[bestMatch](rdata); } - + // A plugin generated error indicates a request-related error // that has been handled by the plugin. @@ -629,11 +612,9 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory { Rest.Log.WarnFormat("{0} Request failed: {1}", MsgId, r.Message); } - } return (rdata == null) ? false : rdata.handled; - } /// @@ -643,7 +624,6 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory public void AddPathHandler(RestMethodHandler mh, string path, RestMethodAllocator ra) { - if (!IsEnabled) { return; @@ -665,8 +645,6 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory pathHandlers.Add(path, mh); pathAllocators.Add(path, ra); - } } - } diff --git a/OpenSim/ApplicationPlugins/Rest/Inventory/RestInventoryServices.cs b/OpenSim/ApplicationPlugins/Rest/Inventory/RestInventoryServices.cs index 1ea598e..82e9a13 100644 --- a/OpenSim/ApplicationPlugins/Rest/Inventory/RestInventoryServices.cs +++ b/OpenSim/ApplicationPlugins/Rest/Inventory/RestInventoryServices.cs @@ -23,7 +23,6 @@ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * */ using System; @@ -42,11 +41,9 @@ using Nini.Config; namespace OpenSim.ApplicationPlugins.Rest.Inventory { - public class RestInventoryServices : IRest { - - private static readonly int PARM_USERID = 0; + private static readonly int PARM_USERID = 0; private static readonly int PARM_PATH = 1; private bool enabled = false; @@ -61,11 +58,10 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory public RestInventoryServices() { - Rest.Log.InfoFormat("{0} Inventory services initializing", MsgId); Rest.Log.InfoFormat("{0} Using REST Implementation Version {1}", MsgId, Rest.Version); - // If a relative path was specified for the handler's domain, + // If a relative path was specified for the handler's domain, // add the standard prefix to make it absolute, e.g. /admin if (!qPrefix.StartsWith(Rest.UrlPathSeparator)) @@ -82,7 +78,6 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory enabled = true; Rest.Log.InfoFormat("{0} Inventory services initialization complete", MsgId); - } /// @@ -143,7 +138,6 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory private void DoInventory(RequestData hdata) { - InventoryRequestData rdata = (InventoryRequestData) hdata; Rest.Log.DebugFormat("{0} DoInventory ENTRY", MsgId); @@ -155,7 +149,7 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory return; } - // Now that we know this is a serious attempt to + // Now that we know this is a serious attempt to // access inventory data, we should find out who // is asking, and make sure they are authorized // to do so. We need to validate the caller's @@ -166,9 +160,9 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory // With the present HTTP server we can't use the // builtin authentication mechanisms because they // would be enforced for all in-bound requests. - // Instead we look at the headers ourselves and + // Instead we look at the headers ourselves and // handle authentication directly. - + try { if (!rdata.IsAuthenticated) @@ -205,7 +199,7 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory // // Indicating that this is an inventory request for // an avatar named Arthur Dent. This is ALL that is - // required to designate a GET for an entire + // required to designate a GET for an entire // inventory. // // Do we have at least a user agent name? @@ -247,7 +241,7 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory if (rdata.userProfile != null) { - Rest.Log.DebugFormat("{0} Profile obtained for agent {1} {2}", + Rest.Log.DebugFormat("{0} Profile obtained for agent {1} {2}", MsgId, rdata.userProfile.FirstName, rdata.userProfile.SurName); } else @@ -269,18 +263,17 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory // response is not recieved in a timely fashion. rdata.uuid = rdata.userProfile.ID; - + if (Rest.InventoryServices.HasInventoryForUser(rdata.uuid)) { - rdata.root = Rest.InventoryServices.RequestRootFolder(rdata.uuid); - Rest.Log.DebugFormat("{0} Inventory Root retrieved for {1} {2}", + Rest.Log.DebugFormat("{0} Inventory Root retrieved for {1} {2}", MsgId, rdata.userProfile.FirstName, rdata.userProfile.SurName); Rest.InventoryServices.RequestInventoryForUser(rdata.uuid, rdata.GetUserInventory); - Rest.Log.DebugFormat("{0} Inventory catalog requested for {1} {2}", + Rest.Log.DebugFormat("{0} Inventory catalog requested for {1} {2}", MsgId, rdata.userProfile.FirstName, rdata.userProfile.SurName); lock (rdata) @@ -293,7 +286,7 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory if (rdata.root == null) { - Rest.Log.WarnFormat("{0} Inventory is not available [1] for agent {1} {2}", + Rest.Log.WarnFormat("{0} Inventory is not available [1] for agent {1} {2}", MsgId, rdata.userProfile.FirstName, rdata.userProfile.SurName); rdata.Fail(Rest.HttpStatusCodeServerError, "inventory retrieval failed"); } @@ -301,7 +294,7 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory } else { - Rest.Log.WarnFormat("{0} Inventory is not locally available for agent {1} {2}", + Rest.Log.WarnFormat("{0} Inventory is not locally available for agent {1} {2}", MsgId, rdata.userProfile.FirstName, rdata.userProfile.SurName); rdata.Fail(Rest.HttpStatusCodeNotFound, "no local inventory for user"); } @@ -311,7 +304,6 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory switch (rdata.method) { - case Rest.HEAD : // Do the processing, set the status code, suppress entity DoGet(rdata); rdata.buffer = null; @@ -334,12 +326,11 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory break; default : - Rest.Log.WarnFormat("{0} Method {1} not supported for {2}", + Rest.Log.WarnFormat("{0} Method {1} not supported for {2}", MsgId, rdata.method, rdata.path); rdata.Fail(Rest.HttpStatusCodeMethodNotAllowed, rdata.method+" not supported"); - break; + break; } - } #endregion Interface @@ -355,18 +346,17 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory private void DoGet(InventoryRequestData rdata) { - rdata.initXmlWriter(); rdata.writer.WriteStartElement(String.Empty,"Inventory",String.Empty); // If there are additional parameters, then these represent // a path relative to the root of the inventory. This path - // must be traversed before we format the sub-tree thus + // must be traversed before we format the sub-tree thus // identified. traverse(rdata, rdata.root, PARM_PATH); - + // Close all open elements rdata.writer.WriteFullEndElement(); @@ -379,9 +369,8 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory // constructed from the result of the XML writer. rdata.Respond(String.Format("Inventory {0} Normal completion", rdata.method)); - } - + /// /// In the case of the inventory, and probably in general, /// the distinction between PUT and POST is not always @@ -392,7 +381,7 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory /// consistency across different implementations. /// /// For OpenSim PUT is an update and POST is an addition. This - /// is the behavior required by the HTTP specification and + /// is the behavior required by the HTTP specification and /// therefore as required by REST. /// /// The best way to explain the distinction is to @@ -401,53 +390,51 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory /// actual entity to be modified or replaced, i.e. the /// enclosed entity. /// - /// If the operation is POST,then the URI describes the + /// If the operation is POST,then the URI describes the /// context into which the new entity will be added. /// /// As an example, suppose the URI contains: /// /admin/inventory/Clothing /// /// A PUT request will normally result in some modification of - /// the folder or item named "Clothing". Whereas a POST - /// request will normally add some new information into the + /// the folder or item named "Clothing". Whereas a POST + /// request will normally add some new information into the /// content identified by Clothing. It follows from this /// that for POST, the element identified by the URI MUST /// be a folder. /// /// - /// POST adds new information to the inventory in the + /// POST adds new information to the inventory in the /// context identified by the URI. /// /// HTTP service request work area private void DoExtend(InventoryRequestData rdata) { - bool created = false; bool modified = false; string newnode = String.Empty; // Resolve the context node specified in the URI. Entity // data will be ADDED beneath this node. rdata already contains - // information about the current content of the user's + // information about the current content of the user's // inventory. Object InventoryNode = getInventoryNode(rdata, rdata.root, PARM_PATH, Rest.Fill); // Processing depends upon the type of inventory node // identified in the URI. This is the CONTEXT for the - // change. We either got a context or we threw an + // change. We either got a context or we threw an // exception. // It follows that we can only add information if the URI - // has identified a folder. So only a type of folder is supported + // has identified a folder. So only a type of folder is supported // in this case. if (typeof(InventoryFolderBase) == InventoryNode.GetType() || typeof(InventoryFolderImpl) == InventoryNode.GetType()) { - // Cast the context node appropriately. InventoryFolderBase context = (InventoryFolderBase) InventoryNode; @@ -466,12 +453,11 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory XmlInventoryCollection entity = ReconstituteEntity(rdata); // Inlined assets can be included in entity. These must be incorporated into - // the asset database before we attempt to update the inventory. If anything + // the asset database before we attempt to update the inventory. If anything // fails, return a failure to requestor. if (entity.Assets.Count > 0) { - Rest.Log.DebugFormat("{0} Adding {1} assets to server", MsgId, entity.Assets.Count); @@ -489,9 +475,7 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory { Rest.Dump(asset.Data); } - } - } // Modify the context using the collection of folders and items @@ -499,7 +483,6 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory foreach (InventoryFolderBase folder in entity.Folders) { - InventoryFolderBase found; // If the parentID is zero, then this folder is going @@ -544,7 +527,7 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory modified = true; rdata.appendStatus(String.Format("

Created folder {0}, UUID {1}

", - folder.Name, folder.ID)); + folder.Name, folder.ID)); } else { @@ -553,10 +536,8 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory created = true; rdata.appendStatus(String.Format("

Modified folder {0}, UUID {1}

", - folder.Name, folder.ID)); - + folder.Name, folder.ID)); } - } // Now we repeat a similar process for the items included @@ -564,7 +545,6 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory foreach (InventoryItemBase item in entity.Items) { - InventoryItemBase found = null; // If the parentID is zero, then this is going @@ -575,7 +555,7 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory item.Folder = context.ID; } - // Determine whether this is a new item or a + // Determine whether this is a new item or a // replacement definition. foreach (InventoryItemBase xi in rdata.items) @@ -604,7 +584,6 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory created = true; rdata.appendStatus(String.Format("

Created item {2}, UUID {3}

", item.Name, item.ID)); } - } if (created) @@ -627,7 +606,6 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory } rdata.Respond("Inventory " + rdata.method + ": Normal completion"); - } else { @@ -635,35 +613,33 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory MsgId, rdata.method, rdata.path, InventoryNode.GetType()); rdata.Fail(Rest.HttpStatusCodeBadRequest, "invalid resource context"); } - } ///

/// PUT updates the URI-identified element in the inventory. This /// is actually far more flexible than it might at first sound. For /// PUT the URI serves two purposes: - /// [1] It identifies the user whose inventory is to be + /// [1] It identifies the user whose inventory is to be /// processed. /// [2] It optionally specifies a subtree of the inventory - /// that is to be used to resolve any relative subtree + /// that is to be used to resolve any relative subtree /// specifications in the entity. If nothing is specified /// then the whole of the private inventory is implied. /// Please note that the subtree specified by the URI is only relevant /// to an entity containing a URI relative specification, i.e. one or - /// more elements do not specify parent folder information. These + /// more elements do not specify parent folder information. These /// elements will be implicitly referenced within the context identified /// by the URI. /// If an element in the entity specifies an explicit parent folder, then /// that parent is effective, regardless of any value specified in the /// URI. If the parent does not exist, then the element, and any dependent - /// elements, are ignored. This case is actually detected and handled + /// elements, are ignored. This case is actually detected and handled /// during the reconstitution process. /// /// HTTP service request work area private void DoUpdate(InventoryRequestData rdata) { - int count = 0; bool created = false; bool modified = false; @@ -675,8 +651,8 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory Object InventoryNode = getInventoryNode(rdata, rdata.root, PARM_PATH, Rest.Fill); // As long as we have a node, then we have something - // meaningful to do, unlike POST. So we reconstitute the - // subtree before doing anything else. Note that we + // meaningful to do, unlike POST. So we reconstitute the + // subtree before doing anything else. Note that we // etiher got a valid node or we threw an exception. XmlInventoryCollection entity = ReconstituteEntity(rdata); @@ -705,33 +681,31 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory { Rest.Dump(asset.Data); } - } } // The URI specifies either a folder or an item to be updated. // // The root node in the entity will replace the node identified - // by the URI. This means the parent will remain the same, but + // by the URI. This means the parent will remain the same, but // any or all attributes associated with the named element // will change. // // If the inventory collection contains an element with a zero - // parent ID, then this is taken to be the replacement for the - // named node. The collection MAY also specify an explicit + // parent ID, then this is taken to be the replacement for the + // named node. The collection MAY also specify an explicit // parent ID, in this case it MAY identify the same parent as - // the current node, or it MAY specify a different parent, + // the current node, or it MAY specify a different parent, // indicating that the folder is being moved in addition to any // other modifications being made. if (typeof(InventoryFolderBase) == InventoryNode.GetType() || typeof(InventoryFolderImpl) == InventoryNode.GetType()) { - bool rfound = false; InventoryFolderBase uri = (InventoryFolderBase) InventoryNode; InventoryFolderBase xml = null; - + // If the entity to be replaced resolved to be the root // directory itself (My Inventory), then make sure that // the supplied data include as appropriately typed and @@ -741,7 +715,6 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory if (uri == rdata.root) { - foreach (InventoryFolderBase folder in entity.Folders) { if ((rfound = (folder.Name == PRIVATE_ROOT_NAME))) @@ -757,7 +730,6 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory MsgId, rdata.method, rdata.path); rdata.Fail(Rest.HttpStatusCodeBadRequest, "invalid inventory structure"); } - } // Scan the set of folders in the entity collection for an @@ -768,7 +740,7 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory // ambiguity in this case because this is POST and we are // supposed to be modifying a specific node. // We assign any element IDs required as an economy; we don't - // want to iterate over the fodler set again if it can be + // want to iterate over the fodler set again if it can be // helped. foreach (InventoryFolderBase folder in entity.Folders) @@ -795,13 +767,12 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory // Exactly one entry means we ARE replacing the node // identified by the URI. So we delete the old folder // by moving it to the trash and then purging it. - // We then add all of the folders and items we + // We then add all of the folders and items we // included in the entity. The subtree has been // modified. if (count == 1) { - InventoryFolderBase TrashCan = GetTrashCan(rdata); // All went well, so we generate a UUID is one is @@ -816,10 +787,9 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory Rest.InventoryServices.MoveFolder(uri); Rest.InventoryServices.PurgeFolder(TrashCan); modified = true; - } - // Now, regardelss of what they represent, we + // Now, regardelss of what they represent, we // integrate all of the elements in the entity. foreach (InventoryFolderBase f in entity.Folders) @@ -833,7 +803,6 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory rdata.appendStatus(String.Format("

Storing item {0} UUID {1}

", it.Name, it.ID)); Rest.InventoryServices.AddItem(it); } - } ///

@@ -846,7 +815,6 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory else { - InventoryItemBase uri = (InventoryItemBase) InventoryNode; InventoryItemBase xml = null; @@ -865,7 +833,7 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory } xml = entity.Items[0]; - + if (xml.ID == LLUUID.Zero) { xml.ID = LLUUID.Random(); @@ -884,7 +852,6 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory Rest.InventoryServices.AddItem(xml); rdata.appendStatus(String.Format("

Storing item {0} UUID {1}

", xml.Name, xml.ID)); - } if (created) @@ -904,7 +871,6 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory } rdata.Respond("Inventory " + rdata.method + ": Normal completion"); - } ///

@@ -917,7 +883,7 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory /// /// Folders are deleted by moving them to another folder and then /// purging that folder. We'll do that by creating a temporary - /// sub-folder in the TrashCan and purging that folder's + /// sub-folder in the TrashCan and purging that folder's /// contents. If we can't can it, we don't delete it... /// So, if no trashcan is available, the request does nothing. /// Items are summarily deleted. @@ -930,13 +896,11 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory private void DoDelete(InventoryRequestData rdata) { - Object InventoryNode = getInventoryNode(rdata, rdata.root, PARM_PATH, false); if (typeof(InventoryFolderBase) == InventoryNode.GetType() || typeof(InventoryFolderImpl) == InventoryNode.GetType()) { - InventoryFolderBase TrashCan = GetTrashCan(rdata); InventoryFolderBase folder = (InventoryFolderBase) InventoryNode; @@ -947,7 +911,6 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory Rest.InventoryServices.PurgeFolder(TrashCan); rdata.appendStatus(String.Format("

Deleted folder {0} UUID {1}

", folder.Name, folder.ID)); - } // Deleting items is much more straight forward. @@ -963,7 +926,6 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory rdata.Complete(); rdata.Respond("Inventory " + rdata.method + ": Normal completion"); - } #endregion method-specific processing @@ -971,10 +933,10 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory ///

/// This method is called to obtain the OpenSim inventory object identified /// by the supplied URI. This may be either an Item or a Folder, so a suitably - /// ambiguous return type is employed (Object). This method recurses as + /// ambiguous return type is employed (Object). This method recurses as /// necessary to process the designated hierarchy. - /// - /// If we reach the end of the URI then we return the contextual folder to + /// + /// If we reach the end of the URI then we return the contextual folder to /// our caller. /// /// If we are not yet at the end of the URI we attempt to find a child folder @@ -1000,7 +962,6 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory InventoryFolderBase folder, int pi, bool fill) { - InventoryFolderBase foundf = null; int fk = 0; @@ -1013,18 +974,19 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory return folder; } - // There are more names in the parameter sequence, - // look for the folder named by param[pi] as a + // There are more names in the parameter sequence, + // look for the folder named by param[pi] as a // child of the folder supplied as an argument. // Note that a UUID may have been supplied as the // identifier (it is the ONLY guaranteed unambiguous - // option. + // option. if (rdata.folders != null) + { foreach (InventoryFolderBase f in rdata.folders) { // Look for the present node in the directory list - if (f.ParentID == folder.ID && + if (f.ParentID == folder.ID && (f.Name == rdata.Parameters[pi] || f.ID.ToString() == rdata.Parameters[pi])) { @@ -1032,7 +994,8 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory fk++; } } - + } + // If more than one node matched, then the path, as specified // is ambiguous. @@ -1063,7 +1026,7 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory InventoryItemBase li = null; foreach (InventoryItemBase i in rdata.items) { - if (i.Folder == folder.ID && + if (i.Folder == folder.ID && (i.Name == rdata.Parameters[pi] || i.ID.ToString() == rdata.Parameters[pi])) { @@ -1099,11 +1062,10 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory rdata.Fail(Rest.HttpStatusCodeNotFound, "resource "+rdata.path+" not found"); return null; /* Never reached */ - } /// - /// This routine traverse the inventory's structure until the end-point identified + /// This routine traverse the inventory's structure until the end-point identified /// in the URI is reached, the remainder of the inventory (if any) is then formatted /// and returned to the requestor. /// @@ -1119,13 +1081,11 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory private void traverse(InventoryRequestData rdata, InventoryFolderBase folder, int pi) { - Rest.Log.DebugFormat("{0} Traverse[initial] : {1} {2} [{3}]", MsgId, folder.ID, folder.Name, pi); if (rdata.folders != null) { - - // If there was only one parameter (avatar name), then the entire + // If there was only one parameter (avatar name), then the entire // inventory is being requested. if (rdata.Parameters.Length == 1) @@ -1159,18 +1119,16 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory } return; - } } /// - /// This is the recursive method. I've separated them in this way so that + /// This is the recursive method. I've separated them in this way so that /// we do not have to waste cycles on any first-case-only processing. /// private void traverseInventory(InventoryRequestData rdata, InventoryFolderBase folder, int pi) { - int fk = 0; InventoryFolderBase ffound = null; InventoryItemBase ifound = null; @@ -1179,7 +1137,7 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory foreach (InventoryFolderBase f in rdata.folders) { - if (f.ParentID == folder.ID && + if (f.ParentID == folder.ID && (f.Name == rdata.Parameters[pi] || f.ID.ToString() == rdata.Parameters[pi])) { @@ -1194,14 +1152,13 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory if (pi == rdata.Parameters.Length-1) { - // Only if there are any items, and there pretty much always are. if (rdata.items != null) { foreach (InventoryItemBase i in rdata.items) { - if (i.Folder == folder.ID && + if (i.Folder == folder.ID && (i.Name == rdata.Parameters[pi] || i.ID.ToString() == rdata.Parameters[pi])) { @@ -1230,7 +1187,7 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory { // Fetching an Item has a special significance. In this // case we also want to fetch the associated asset. - // To make it interesting, we'll d this via redirection. + // To make it interesting, we'll d this via redirection. string asseturl = "http://" + rdata.hostname + ":" + rdata.port + "/admin/assets" + Rest.UrlPathSeparator + ifound.AssetID.ToString(); rdata.Redirect(asseturl,Rest.PERMANENT); @@ -1240,14 +1197,14 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory else if (fk > 1) { rdata.Fail(Rest.HttpStatusCodeConflict, - String.Format("ambiguous element ({0}) in path specified: <{1}>", - pi, rdata.path)); + String.Format("ambiguous element ({0}) in path specified: <{1}>", + pi, rdata.path)); } - Rest.Log.DebugFormat("{0} Inventory does not contain item/folder: <{1}>", + Rest.Log.DebugFormat("{0} Inventory does not contain item/folder: <{1}>", MsgId, rdata.path); rdata.Fail(Rest.HttpStatusCodeNotFound,String.Format("no such item/folder : {0}", - rdata.Parameters[pi])); + rdata.Parameters[pi])); } @@ -1264,10 +1221,9 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory private void formatInventory(InventoryRequestData rdata, InventoryFolderBase folder, string indent) { - if (Rest.DEBUG) { - Rest.Log.DebugFormat("{0} Folder : {1} {2} {3} type = {4}", + Rest.Log.DebugFormat("{0} Folder : {1} {2} {3} type = {4}", MsgId, folder.ID, indent, folder.Name, folder.Type); indent += "\t"; } @@ -1307,7 +1263,6 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory // End folder item rdata.writer.WriteEndElement(); - } /// @@ -1319,8 +1274,7 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory private void formatItem(InventoryRequestData rdata, InventoryItemBase i, string indent) { - - Rest.Log.DebugFormat("{0} Item : {1} {2} {3} Type = {4}, AssetType = {5}", + Rest.Log.DebugFormat("{0} Item : {1} {2} {3} Type = {4}, AssetType = {5}", MsgId, i.ID, indent, i.Name, i.InvType, i.AssetType); rdata.writer.WriteStartElement(String.Empty,"Item",String.Empty); @@ -1350,11 +1304,10 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory rdata.writer.WriteElementString("Asset",i.AssetID.ToString()); rdata.writer.WriteEndElement(); - } /// - /// This method creates a "trashcan" folder to support folder and item + /// This method creates a "trashcan" folder to support folder and item /// deletions by this interface. The xisting trash folder is found and /// this folder is created within it. It is called "tmp" to indicate to /// the client that it is OK to delete this folder. The REST interface @@ -1366,7 +1319,6 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory private InventoryFolderBase GetTrashCan(InventoryRequestData rdata) { - InventoryFolderBase TrashCan = null; foreach (InventoryFolderBase f in rdata.folders) @@ -1393,7 +1345,7 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory } } } - + if (TrashCan == null) { Rest.Log.DebugFormat("{0} No Trash Can available", MsgId); @@ -1401,7 +1353,6 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory } return TrashCan; - } /// @@ -1413,11 +1364,11 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory private bool FolderHasChanged(InventoryFolderBase newf, InventoryFolderBase oldf) { - return ( newf.Name != oldf.Name - || newf.ParentID != oldf.ParentID - || newf.Owner != oldf.Owner - || newf.Type != oldf.Type - || newf.Version != oldf.Version + return (newf.Name != oldf.Name + || newf.ParentID != oldf.ParentID + || newf.Owner != oldf.Owner + || newf.Type != oldf.Type + || newf.Version != oldf.Version ); } @@ -1430,24 +1381,24 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory private bool ItemHasChanged(InventoryItemBase newf, InventoryItemBase oldf) { - return ( newf.Name != oldf.Name - || newf.Folder != oldf.Description - || newf.Description != oldf.Description - || newf.Owner != oldf.Owner - || newf.Creator != oldf.Creator - || newf.AssetID != oldf.AssetID - || newf.GroupID != oldf.GroupID - || newf.GroupOwned != oldf.GroupOwned - || newf.InvType != oldf.InvType - || newf.AssetType != oldf.AssetType + return (newf.Name != oldf.Name + || newf.Folder != oldf.Description + || newf.Description != oldf.Description + || newf.Owner != oldf.Owner + || newf.Creator != oldf.Creator + || newf.AssetID != oldf.AssetID + || newf.GroupID != oldf.GroupID + || newf.GroupOwned != oldf.GroupOwned + || newf.InvType != oldf.InvType + || newf.AssetType != oldf.AssetType ); } /// /// This method is called by PUT and POST to create an XmlInventoryCollection /// instance that reflects the content of the entity supplied on the request. - /// Any elements in the completed collection whose UUID is zero, are - /// considered to be located relative to the end-point identified int he + /// Any elements in the completed collection whose UUID is zero, are + /// considered to be located relative to the end-point identified int he /// URI. In this way, an entire sub-tree can be conveyed in a single REST /// PUT or POST request. /// @@ -1455,27 +1406,25 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory /// has an entity, it is more completely initialized. thus, if no entity was /// provided the collection is valid, but empty. /// - /// The entity is then scanned and each tag is processed to produce the + /// The entity is then scanned and each tag is processed to produce the /// appropriate inventory elements. At the end f the scan, teh XmlInventoryCollection /// will reflect the subtree described by the entity. /// /// This is a very flexible mechanism, the entity may contain arbitrary, /// discontiguous tree fragments, or may contain single element. The caller is - /// responsible for integrating this collection (and ensuring that any + /// responsible for integrating this collection (and ensuring that any /// missing parent IDs are resolved). /// /// HTTP service request work area internal XmlInventoryCollection ReconstituteEntity(InventoryRequestData rdata) { - Rest.Log.DebugFormat("{0} Reconstituting entity", MsgId); XmlInventoryCollection ic = new XmlInventoryCollection(); if (rdata.request.HasEntityBody) { - Rest.Log.DebugFormat("{0} Entity present", MsgId); ic.init(rdata); @@ -1571,7 +1520,6 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory Rest.Log.WarnFormat("{0} Unexpected XML parsing error: {1}", MsgId, e.Message); throw e; } - } else { @@ -1587,14 +1535,13 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory } return ic; - } /// /// This method creates an inventory Folder from the /// information supplied in the request's entity. - /// A folder instance is created and initialized to reflect - /// default values. These values are then overridden + /// A folder instance is created and initialized to reflect + /// default values. These values are then overridden /// by information supplied in the entity. /// If context was not explicitly provided, then the /// appropriate ID values are determined. @@ -1602,7 +1549,6 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory private void CollectFolder(XmlInventoryCollection ic) { - Rest.Log.DebugFormat("{0} Interpret folder element", MsgId); InventoryFolderBase result = new InventoryFolderBase(); @@ -1614,7 +1560,7 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory result.Owner = ic.UserID; result.ParentID = LLUUID.Zero; // Context result.Type = (short) AssetType.Folder; - result.Version = 1; + result.Version = 1; if (ic.xml.HasAttributes) { @@ -1642,7 +1588,7 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory result.Version = UInt16.Parse(ic.xml.Value); break; default : - Rest.Log.DebugFormat("{0} Folder: unrecognized attribute: {1}:{2}", + Rest.Log.DebugFormat("{0} Folder: unrecognized attribute: {1}:{2}", MsgId, ic.xml.Name, ic.xml.Value); ic.Fail(Rest.HttpStatusCodeBadRequest, String.Format("unrecognized attribute <{0}>", ic.xml.Name)); @@ -1664,7 +1610,6 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory } else { - bool found = false; foreach (InventoryFolderBase parent in ic.rdata.folders) @@ -1678,11 +1623,10 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory if (!found) { - Rest.Log.ErrorFormat("{0} Invalid parent ID ({1}) in folder {2}", + Rest.Log.ErrorFormat("{0} Invalid parent ID ({1}) in folder {2}", MsgId, ic.Item.Folder, result.ID); ic.Fail(Rest.HttpStatusCodeBadRequest, "invalid parent"); } - } // This is a new folder, so no existing UUID is available @@ -1697,15 +1641,14 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory // obsolete as a consequence. ic.Push(result); - } /// /// This method is called to handle the construction of an Item - /// instance from the supplied request entity. It is called + /// instance from the supplied request entity. It is called /// whenever an Item start tag is detected. /// An instance of an Item is created and initialized to default - /// values. These values are then overridden from values supplied + /// values. These values are then overridden from values supplied /// as attributes to the Item element. /// This item is then stored in the XmlInventoryCollection and /// will be verified by Validate. @@ -1715,7 +1658,6 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory private void CollectItem(XmlInventoryCollection ic) { - Rest.Log.DebugFormat("{0} Interpret item element", MsgId); InventoryItemBase result = new InventoryItemBase(); @@ -1736,7 +1678,6 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory { for (int i = 0; i < ic.xml.AttributeCount; i++) { - ic.xml.MoveToAttribute(i); switch (ic.xml.Name) @@ -1785,37 +1726,36 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory break; default : - Rest.Log.DebugFormat("{0} Item: Unrecognized attribute: {1}:{2}", + Rest.Log.DebugFormat("{0} Item: Unrecognized attribute: {1}:{2}", MsgId, ic.xml.Name, ic.xml.Value); ic.Fail(Rest.HttpStatusCodeBadRequest, String.Format("unrecognized attribute", ic.xml.Name)); break; } } - } - + } + ic.xml.MoveToElement(); ic.Push(result); - } /// - /// This method assembles an asset instance from the - /// information supplied in the request's entity. It is - /// called as a result of detecting a start tag for a + /// This method assembles an asset instance from the + /// information supplied in the request's entity. It is + /// called as a result of detecting a start tag for a /// type of Asset. /// The information is collected locally, and an asset /// instance is created only if the basic XML parsing /// completes successfully. - /// Default values for all parts of the asset are + /// Default values for all parts of the asset are /// established before overriding them from the supplied /// XML. /// If an asset has inline=true as an attribute, then /// the element contains the data representing the /// asset. This is saved as the data component. /// inline=false means that the element's payload is - /// simply the UUID of the asset referenced by the + /// simply the UUID of the asset referenced by the /// item being constructed. /// An asset, if created is stored in the /// XmlInventoryCollection @@ -1876,9 +1816,9 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory break; default : - Rest.Log.DebugFormat("{0} Asset: Unrecognized attribute: {1}:{2}", + Rest.Log.DebugFormat("{0} Asset: Unrecognized attribute: {1}:{2}", MsgId, ic.xml.Name, ic.xml.Value); - ic.Fail(Rest.HttpStatusCodeBadRequest, + ic.Fail(Rest.HttpStatusCodeBadRequest, String.Format("unrecognized attribute <{0}>", ic.xml.Name)); break; } @@ -1889,7 +1829,7 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory // If this is a reference to an existing asset, just store the // asset ID into the item. - + if (!inline) { if (ic.Item != null) @@ -1904,13 +1844,12 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory } } - // Otherwise, generate an asset ID, store that into the item, and + // Otherwise, generate an asset ID, store that into the item, and // create an entry in the asset list for the inlined asset. But // only if the size is non-zero. else { - string b64string = null; // Generate a UUID of none were given, and generally none should @@ -1923,17 +1862,17 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory // Create AssetBase entity to hold the inlined asset - asset = new AssetBase(uuid, name); + asset = new AssetBase(uuid, name); asset.Description = desc; asset.Type = type; // type == 0 == texture asset.Local = local; asset.Temporary = temp; - + b64string = ic.xml.ReadElementContentAsString(); Rest.Log.DebugFormat("{0} Data length is {1}", MsgId, b64string.Length); - Rest.Log.DebugFormat("{0} Data content starts with: \n\t<{1}>", MsgId, + Rest.Log.DebugFormat("{0} Data content starts with: \n\t<{1}>", MsgId, b64string.Substring(0, b64string.Length > 132 ? 132 : b64string.Length)); asset.Data = Convert.FromBase64String(b64string); @@ -1952,7 +1891,6 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory { ic.Item.AssetID = uuid; } - } ic.Push(asset); @@ -1961,13 +1899,12 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory /// /// Store any permissions information provided by the request. - /// This overrides the default permissions set when the + /// This overrides the default permissions set when the /// XmlInventoryCollection object was created. /// private void CollectPermissions(XmlInventoryCollection ic) { - if (ic.xml.HasAttributes) { for (int i = 0; i < ic.xml.AttributeCount; i++) @@ -1990,7 +1927,7 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory default : Rest.Log.DebugFormat("{0} Permissions: invalid attribute {1}:{2}", MsgId,ic.xml.Name, ic.xml.Value); - ic.Fail(Rest.HttpStatusCodeBadRequest, + ic.Fail(Rest.HttpStatusCodeBadRequest, String.Format("invalid attribute <{0}>", ic.xml.Name)); break; } @@ -1998,7 +1935,6 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory } ic.xml.MoveToElement(); - } /// @@ -2013,7 +1949,6 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory private void Validate(XmlInventoryCollection ic) { - // There really should be an item present if we've // called validate. So fail if there is not. @@ -2022,7 +1957,7 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory Rest.Log.ErrorFormat("{0} Unable to parse request", MsgId); ic.Fail(Rest.HttpStatusCodeBadRequest, "request parse error"); } - + // Every item is required to have a name (via REST anyway) if (ic.Item.Name == String.Empty) @@ -2030,18 +1965,16 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory Rest.Log.ErrorFormat("{0} An item name MUST be specified", MsgId); ic.Fail(Rest.HttpStatusCodeBadRequest, "item name required"); } - - // An item MUST have an asset ID. AssetID should never be zero + + // An item MUST have an asset ID. AssetID should never be zero // here. It should always get set from the information stored // when the Asset element was processed. if (ic.Item.AssetID == LLUUID.Zero) { - Rest.Log.ErrorFormat("{0} Unable to complete request", MsgId); Rest.Log.InfoFormat("{0} Asset information is missing", MsgId); ic.Fail(Rest.HttpStatusCodeBadRequest, "asset information required"); - } // If the item is new, then assign it an ID @@ -2054,14 +1987,13 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory // If the context is being implied, obtain the current // folder item's ID. If it was specified explicitly, make // sure that theparent folder exists. - + if (ic.Item.Folder == LLUUID.Zero) { ic.Item.Folder = ic.Parent(); } else { - bool found = false; foreach (InventoryFolderBase parent in ic.rdata.folders) @@ -2075,11 +2007,10 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory if (!found) { - Rest.Log.ErrorFormat("{0} Invalid parent ID ({1}) in item {2}", + Rest.Log.ErrorFormat("{0} Invalid parent ID ({1}) in item {2}", MsgId, ic.Item.Folder, ic.Item.ID); ic.Fail(Rest.HttpStatusCodeBadRequest, "parent information required"); } - } // If this is an inline asset being constructed in the context @@ -2101,13 +2032,12 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory ic.Item.NextPermissions = ic.NextPermissions; // If no type was specified for this item, we can attempt to - // infer something from the file type maybe. This is NOT as + // infer something from the file type maybe. This is NOT as // good as having type be specified in the XML. if (ic.Item.AssetType == (int) AssetType.Unknown || ic.Item.InvType == (int) AssetType.Unknown) { - Rest.Log.DebugFormat("{0} Attempting to infer item type", MsgId); string[] parts = ic.Item.Name.Split(Rest.CA_PERIOD); @@ -2127,7 +2057,7 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory if (parts.Length > 1) { - Rest.Log.DebugFormat("{0} File type is {1}", + Rest.Log.DebugFormat("{0} File type is {1}", MsgId, parts[parts.Length - 1]); switch (parts[parts.Length - 1]) { @@ -2135,7 +2065,7 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory case "jpeg-2000" : case "jpg2000" : case "jpg-2000" : - Rest.Log.DebugFormat("{0} Type {1} inferred", + Rest.Log.DebugFormat("{0} Type {1} inferred", MsgId, parts[parts.Length-1]); if (ic.Item.AssetType == (int) AssetType.Unknown) ic.Item.AssetType = (int) AssetType.ImageJPEG; @@ -2144,7 +2074,7 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory break; case "jpg" : case "jpeg" : - Rest.Log.DebugFormat("{0} Type {1} inferred", + Rest.Log.DebugFormat("{0} Type {1} inferred", MsgId, parts[parts.Length - 1]); if (ic.Item.AssetType == (int) AssetType.Unknown) ic.Item.AssetType = (int) AssetType.ImageJPEG; @@ -2168,7 +2098,7 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory } break; default : - Rest.Log.DebugFormat("{0} Asset/Inventory type could not be inferred for {1}", + Rest.Log.DebugFormat("{0} Asset/Inventory type could not be inferred for {1}", MsgId,ic.Item.Name); break; } @@ -2186,16 +2116,14 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory temp = OpenJPEGNet.LoadTGAClass.LoadTGA(tgadata); ic.Asset.Data = OpenJPEGNet.OpenJPEG.EncodeFromImage(temp, true); } - - ic.reset(); + ic.reset(); } #region Inventory RequestData extension internal class InventoryRequestData : RequestData { - /// /// These are the inventory specific request/response state /// extensions. @@ -2214,7 +2142,7 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory } /// - /// This is the callback method required by inventory services. The + /// This is the callback method required by inventory services. The /// requestor issues an inventory request and then blocks until this /// method signals the monitor. /// @@ -2230,7 +2158,6 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory Monitor.Pulse(this); } } - } #endregion Inventory RequestData extension @@ -2243,7 +2170,6 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory internal class XmlInventoryCollection : InventoryCollection { - internal InventoryRequestData rdata; private Stack stk; @@ -2336,7 +2262,6 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory { rdata.Fail(code, addendum); } - } } } diff --git a/OpenSim/ApplicationPlugins/Rest/Inventory/tests/Remote.cs b/OpenSim/ApplicationPlugins/Rest/Inventory/tests/Remote.cs index c50a945..1cbe38f 100644 --- a/OpenSim/ApplicationPlugins/Rest/Inventory/tests/Remote.cs +++ b/OpenSim/ApplicationPlugins/Rest/Inventory/tests/Remote.cs @@ -23,7 +23,6 @@ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * */ using libsecondlife; @@ -41,10 +40,8 @@ using OpenSim.Framework.Communications.Cache; namespace OpenSim.ApplicationPlugins.Rest.Inventory.Tests { - public class Remote : ITest { - private static readonly int PARM_TESTID = 0; private static readonly int PARM_COMMAND = 1; @@ -72,7 +69,7 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory.Tests } // Called by the plug-in to halt REST processing. Local processing is - // disabled, and control blocks until all current processing has + // disabled, and control blocks until all current processing has // completed. No new processing will be started public void Close() @@ -91,11 +88,10 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory.Tests // Remote Handler // Key information of interest here is the Parameters array, each // entry represents an element of the URI, with element zero being - // the + // the public void Execute(RequestData rdata) { - if (!enabled) return; // If we can't relate to what's there, leave it for others. @@ -125,7 +121,7 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory.Tests { DoHelp(rdata); } - } + } private void DoHelp(RequestData rdata) { @@ -138,7 +134,6 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory.Tests { if (rdata.Parameters.Length >= 6) { - string[] names = rdata.Parameters[PARM_MOVE_AVATAR].Split(Rest.CA_SPACE); ScenePresence avatar = null; Scene scene = null; @@ -149,7 +144,7 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory.Tests String.Format("invalid avatar name: <{0}>",rdata.Parameters[PARM_MOVE_AVATAR])); } - Rest.Log.WarnFormat("{0} '{1}' command received for {2} {3}", + Rest.Log.WarnFormat("{0} '{1}' command received for {2} {3}", MsgId, rdata.Parameters[0], names[0], names[1]); // The first parameter should be an avatar name, look for the @@ -171,8 +166,7 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory.Tests if (avatar != null) { - - Rest.Log.DebugFormat("{0} Move : Avatar {1} located in region {2}", + Rest.Log.DebugFormat("{0} Move : Avatar {1} located in region {2}", MsgId, rdata.Parameters[PARM_MOVE_AVATAR], scene.RegionInfo.RegionName); try @@ -185,16 +179,16 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory.Tests } catch (Exception e) { - rdata.Fail(Rest.HttpStatusCodeBadRequest, - String.Format("invalid parameters: {0}", e.Message)); + rdata.Fail(Rest.HttpStatusCodeBadRequest, + String.Format("invalid parameters: {0}", e.Message)); } } else { - rdata.Fail(Rest.HttpStatusCodeBadRequest, + rdata.Fail(Rest.HttpStatusCodeBadRequest, String.Format("avatar {0} not present", rdata.Parameters[PARM_MOVE_AVATAR])); - } + } rdata.Complete(); rdata.Respond("OK"); @@ -205,7 +199,6 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory.Tests Rest.Log.WarnFormat("{0} Move: No movement information provided", MsgId); rdata.Fail(Rest.HttpStatusCodeBadRequest, "no movement information provided"); } - } private static readonly string Help = @@ -220,6 +213,5 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory.Tests + "" + "" ; - } } diff --git a/OpenSim/Framework/AgentCircuitManager.cs b/OpenSim/Framework/AgentCircuitManager.cs index 80e2f87..a235688 100644 --- a/OpenSim/Framework/AgentCircuitManager.cs +++ b/OpenSim/Framework/AgentCircuitManager.cs @@ -112,7 +112,7 @@ namespace OpenSim.Framework } } - + /// /// Sometimes the circuitcode may not be known before setting up the connection /// @@ -126,7 +126,7 @@ namespace OpenSim.Framework if (AgentCircuits.ContainsKey((uint)circuitcode) && !AgentCircuits.ContainsKey((uint)newcircuitcode)) { AgentCircuitData agentData = AgentCircuits[(uint)circuitcode]; - + agentData.circuitcode = newcircuitcode; AgentCircuits.Remove((uint)circuitcode); @@ -155,4 +155,4 @@ namespace OpenSim.Framework return false; } } -} \ No newline at end of file +} diff --git a/OpenSim/Framework/Communications/Cache/CachedUserInfo.cs b/OpenSim/Framework/Communications/Cache/CachedUserInfo.cs index 17f927d..3a20b9e 100644 --- a/OpenSim/Framework/Communications/Cache/CachedUserInfo.cs +++ b/OpenSim/Framework/Communications/Cache/CachedUserInfo.cs @@ -306,7 +306,7 @@ namespace OpenSim.Framework.Communications.Cache // "[INVENTORY CACHE]: Received item {0} {1} for user {2}", // itemInfo.Name, itemInfo.ID, userID); InventoryFolderImpl folder = null; - + if ( RootFolder != null ) folder = RootFolder.FindFolder(itemInfo.Folder); diff --git a/OpenSim/Framework/Communications/Cache/UserProfileCacheService.cs b/OpenSim/Framework/Communications/Cache/UserProfileCacheService.cs index 017cb29..45f6c7e 100644 --- a/OpenSim/Framework/Communications/Cache/UserProfileCacheService.cs +++ b/OpenSim/Framework/Communications/Cache/UserProfileCacheService.cs @@ -168,7 +168,7 @@ namespace OpenSim.Framework.Communications.Cache { if (userID == LLUUID.Zero) return; - + lock (m_userProfiles) { if (m_userProfiles.ContainsKey(userID)) diff --git a/OpenSim/Framework/Communications/Capabilities/Caps.cs b/OpenSim/Framework/Communications/Capabilities/Caps.cs index 18ddd9e..a7486d6 100644 --- a/OpenSim/Framework/Communications/Capabilities/Caps.cs +++ b/OpenSim/Framework/Communications/Capabilities/Caps.cs @@ -617,9 +617,9 @@ namespace OpenSim.Framework.Communications.Capabilities IMoneyModule mm = scene.RequestModuleInterface(); - if(mm != null) + if (mm != null) { - if(!mm.UploadCovered(client)) + if (!mm.UploadCovered(client)) { client.SendAgentAlertMessage("Unable to upload asset. Insufficient funds.", false); diff --git a/OpenSim/Framework/Communications/GridInfoService.cs b/OpenSim/Framework/Communications/GridInfoService.cs index ce66c82..bd108c1 100644 --- a/OpenSim/Framework/Communications/GridInfoService.cs +++ b/OpenSim/Framework/Communications/GridInfoService.cs @@ -53,7 +53,7 @@ namespace OpenSim.Framework.Communications /// GridInfoService uses the [GridInfo] section of the /// standard OpenSim.ini file --- which is not optimal, but /// anything else requires a general redesign of the config - /// system. + /// system. /// public GridInfoService(IConfigSource configSource) { @@ -65,7 +65,7 @@ namespace OpenSim.Framework.Communications /// public GridInfoService() { - try + try { IConfigSource configSource = new IniConfigSource(Path.Combine(Util.configDir(), "OpenSim.ini")); loadGridInfo(configSource); @@ -84,15 +84,15 @@ namespace OpenSim.Framework.Communications IConfig startupCfg = configSource.Configs["Startup"]; IConfig gridCfg = configSource.Configs["GridInfo"]; IConfig netCfg = configSource.Configs["Network"]; - + bool grid = startupCfg.GetBoolean("gridmode", false); - + if (grid) _info["mode"] = "grid"; - else + else _info["mode"] = "standalone"; - - + + if (null != gridCfg) { foreach (string k in gridCfg.GetKeys()) diff --git a/OpenSim/Framework/IClientAPI.cs b/OpenSim/Framework/IClientAPI.cs index f437902..224b51b 100644 --- a/OpenSim/Framework/IClientAPI.cs +++ b/OpenSim/Framework/IClientAPI.cs @@ -351,8 +351,8 @@ namespace OpenSim.Framework bool SendLogoutPacketWhenClosing { - set; - } + set; + } // [Obsolete("LLClientView Specific - Circuits are unique to LLClientView")] uint CircuitCode { get; } @@ -526,7 +526,7 @@ namespace OpenSim.Framework event TerrainUnacked OnUnackedTerrain; event ActivateGesture OnActivateGesture; event DeactivateGesture OnDeactivateGesture; - + // void ActivateGesture(LLUUID assetId, LLUUID gestureId); // [Obsolete("IClientAPI.OutPacket SHOULD NOT EXIST outside of LLClientView please refactor appropriately.")] diff --git a/OpenSim/Framework/Servers/BaseHttpServer.cs b/OpenSim/Framework/Servers/BaseHttpServer.cs index 79929bd..d326b66 100644 --- a/OpenSim/Framework/Servers/BaseHttpServer.cs +++ b/OpenSim/Framework/Servers/BaseHttpServer.cs @@ -278,7 +278,7 @@ namespace OpenSim.Framework.Servers HandleLLSDRequests(request, response); return; - } + } HandleXmlRpcRequests(request, response); return; } @@ -498,7 +498,7 @@ namespace OpenSim.Framework.Servers { // we didn't find a registered llsd handler to service this request // check if we have a default llsd handler - + if (m_defaultLlsdHandler != null) { // LibOMV path @@ -541,7 +541,7 @@ namespace OpenSim.Framework.Servers private bool DoWeHaveALLSDHandler(string path) { - + string[] pathbase = path.Split('/'); string searchquery = "/"; @@ -559,27 +559,27 @@ namespace OpenSim.Framework.Servers foreach (string pattern in m_llsdHandlers.Keys) { - + if (searchquery.StartsWith(pattern) && searchquery.Length >= pattern.Length) { - + bestMatch = pattern; - + } } - // extra kicker to remove the default XMLRPC login case.. just in case.. + // extra kicker to remove the default XMLRPC login case.. just in case.. if (path == "/") return false; if (String.IsNullOrEmpty(bestMatch)) { - + return false; } else { - + return true; } } @@ -588,7 +588,7 @@ namespace OpenSim.Framework.Servers { llsdHandler = null; // Pull out the first part of the path - // splitting the path by '/' means we'll get the following return.. + // splitting the path by '/' means we'll get the following return.. // {0}/{1}/{2} // where {0} isn't something we really control 100% @@ -599,7 +599,7 @@ namespace OpenSim.Framework.Servers return false; for (int i=1; i /// Get a report about the registered threads in this server. /// protected string GetThreadsReport() { StringBuilder sb = new StringBuilder(); - + List threads = ThreadTracker.GetThreads(); if (threads == null) { @@ -132,13 +132,13 @@ namespace OpenSim.Framework.Servers foreach (Thread t in threads) { sb.Append( - "ID: " + t.ManagedThreadId + ", Name: " + t.Name + ", Alive: " + t.IsAlive + "ID: " + t.ManagedThreadId + ", Name: " + t.Name + ", Alive: " + t.IsAlive + ", Pri: " + t.Priority + ", State: " + t.ThreadState + Environment.NewLine); } - } - + } + return sb.ToString(); - } + } /// /// Return a report about the uptime of this server @@ -312,7 +312,7 @@ namespace OpenSim.Framework.Servers return; } - } + } /// /// Outputs to the console information about the region diff --git a/OpenSim/Grid/UserServer/UserLoginService.cs b/OpenSim/Grid/UserServer/UserLoginService.cs index 09a25e4..e897787 100644 --- a/OpenSim/Grid/UserServer/UserLoginService.cs +++ b/OpenSim/Grid/UserServer/UserLoginService.cs @@ -160,7 +160,7 @@ namespace OpenSim.Grid.UserServer theUser.HomeRegion, m_config.GridServerURL, m_config.GridSendKey, m_config.GridRecvKey); } - + if (startLocationRequest == "last") { SimInfo = diff --git a/OpenSim/Region/ClientStack/LindenUDP/KillPacket.cs b/OpenSim/Region/ClientStack/LindenUDP/KillPacket.cs index 616d8d9..d7d9128 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/KillPacket.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/KillPacket.cs @@ -34,7 +34,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP { /// /// When packetqueue dequeues this packet in the outgoing stream, it thread aborts - /// Ensures that the thread abort happens from within the client thread + /// Ensures that the thread abort happens from within the client thread /// regardless of where the close method is called /// class KillPacket : Packet @@ -42,20 +42,19 @@ namespace OpenSim.Region.ClientStack.LindenUDP private Header header; public override void FromBytes(Header header, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer) { - } public override void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer) { - } - + public override Header Header { get { return header; } set { header = value; }} public override byte[] ToBytes() { return new byte[0]; } + public KillPacket() { Header = new LowHeader(); diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs index fc99334..0a067d5 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs @@ -373,7 +373,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP public bool SendLogoutPacketWhenClosing { set { m_SendLogoutPacketWhenClosing = value; } - } + } /* METHODS */ @@ -459,10 +459,10 @@ namespace OpenSim.Region.ClientStack.LindenUDP { GC.Collect(); - // Sends a KillPacket object, with which, the - // blockingqueue dequeues and sees it's a killpacket + // Sends a KillPacket object, with which, the + // blockingqueue dequeues and sees it's a killpacket // and terminates within the context of the client thread. - // This ensures that it's done from within the context + // This ensures that it's done from within the context // of the client thread regardless of where Close() is called. KillEndDone(); } @@ -2099,8 +2099,6 @@ namespace OpenSim.Region.ClientStack.LindenUDP #endregion // Gesture - - #region Appearance/ Wearables Methods @@ -5964,11 +5962,11 @@ namespace OpenSim.Region.ClientStack.LindenUDP if (handlerActivateGesture != null) { handlerActivateGesture(this, - activateGesturePacket.Data[0].AssetID, + activateGesturePacket.Data[0].AssetID, activateGesturePacket.Data[0].ItemID); } else m_log.Error("Null pointer for activateGesture"); - + break; case PacketType.DeactivateGestures: diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLPacketHandler.cs b/OpenSim/Region/ClientStack/LindenUDP/LLPacketHandler.cs index e874394..551e7ab 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLPacketHandler.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLPacketHandler.cs @@ -234,7 +234,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP // to. Packet drop notifies will not be triggered in this // configuration! // - + if ((m_SynchronizeClient != null) && (!m_Client.IsActive)) { if (m_SynchronizeClient(m_Client.Scene, packet, @@ -749,7 +749,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP // If we sent a killpacket if (packet is KillPacket) Thread.CurrentThread.Abort(); - + // Actually make the byte array and send it byte[] sendbuffer = packet.ToBytes(); diff --git a/OpenSim/Region/Communications/OGS1/OGS1GridServices.cs b/OpenSim/Region/Communications/OGS1/OGS1GridServices.cs index abaf743..da2e4a2 100644 --- a/OpenSim/Region/Communications/OGS1/OGS1GridServices.cs +++ b/OpenSim/Region/Communications/OGS1/OGS1GridServices.cs @@ -260,9 +260,9 @@ namespace OpenSim.Region.Communications.OGS1 catch (SocketException e) { m_log.WarnFormat( - "[OGS1 GRID SERVICES]: RequestNeighbours(): Lookup of neighbour {0} failed! Not including in neighbours list. {1}", + "[OGS1 GRID SERVICES]: RequestNeighbours(): Lookup of neighbour {0} failed! Not including in neighbours list. {1}", simIp, e); - + continue; } @@ -304,7 +304,7 @@ namespace OpenSim.Region.Communications.OGS1 SendParams.Add(requestData); XmlRpcRequest gridReq = new XmlRpcRequest("simulator_data_request", SendParams); XmlRpcResponse gridResp = null; - + try { gridResp = gridReq.Send(serversInfo.GridURL, 3000); @@ -312,9 +312,9 @@ namespace OpenSim.Region.Communications.OGS1 catch (WebException e) { m_log.ErrorFormat( - "[OGS1 GRID SERVICES]: Communication with the grid server at {0} failed, {1}", + "[OGS1 GRID SERVICES]: Communication with the grid server at {0} failed, {1}", serversInfo.GridURL, e); - + return null; } @@ -1621,14 +1621,14 @@ namespace OpenSim.Region.Communications.OGS1 { m_log.DebugFormat( "[OGS1 GRID SERVICES]: CheckRegion Socket Setup exception: {0}:{1}", e.Message, e.StackTrace); - + return false; } if (timed_out) { m_log.DebugFormat( - "[OGS1 GRID SERVICES]: socket [{0}] timed out ({1}) waiting to obtain a connection.", + "[OGS1 GRID SERVICES]: socket [{0}] timed out ({1}) waiting to obtain a connection.", m_EndPoint, timeOut * 1000); if (retry) diff --git a/OpenSim/Region/Environment/Modules/Avatar/Currency/SampleMoney/SampleMoneyModule.cs b/OpenSim/Region/Environment/Modules/Avatar/Currency/SampleMoney/SampleMoneyModule.cs index 77dd0f9..9f01ad8 100644 --- a/OpenSim/Region/Environment/Modules/Avatar/Currency/SampleMoney/SampleMoneyModule.cs +++ b/OpenSim/Region/Environment/Modules/Avatar/Currency/SampleMoney/SampleMoneyModule.cs @@ -1537,7 +1537,7 @@ namespace OpenSim.Region.Environment.Modules.Avatar.Currency.SampleMoney { GetClientFunds(client); - lock(m_KnownClientFunds) + lock (m_KnownClientFunds) { if (!m_KnownClientFunds.ContainsKey(client.AgentId)) return 0; @@ -1570,7 +1570,7 @@ namespace OpenSim.Region.Environment.Modules.Avatar.Currency.SampleMoney int funds = m_KnownClientFunds[remoteClient.AgentId]; - if(salePrice != 0 && funds < salePrice) + if (salePrice != 0 && funds < salePrice) { remoteClient.SendAgentAlertMessage("Unable to buy now. You don't have sufficient funds.", false); return; @@ -1584,7 +1584,7 @@ namespace OpenSim.Region.Environment.Modules.Avatar.Currency.SampleMoney remoteClient.SendAgentAlertMessage("Unable to buy now. The object was not found.", false); return; } - + doMoneyTransfer(remoteClient.AgentId, part.OwnerID, salePrice, 5000, "Object buy"); s.PerformObjectBuy(remoteClient, categoryID, localID, saleType); diff --git a/OpenSim/Region/Environment/Modules/InterGrid/OpenGridProtocolModule.cs b/OpenSim/Region/Environment/Modules/InterGrid/OpenGridProtocolModule.cs index 926e584..0c15637 100644 --- a/OpenSim/Region/Environment/Modules/InterGrid/OpenGridProtocolModule.cs +++ b/OpenSim/Region/Environment/Modules/InterGrid/OpenGridProtocolModule.cs @@ -83,16 +83,13 @@ namespace OpenSim.Region.Environment.Modules.InterGrid public bool visible_to_parent; } - public class OpenGridProtocolModule : IRegionModule { private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); private List m_scene = new List(); - + private Dictionary CapsLoginID = new Dictionary(); private Dictionary m_OGPState = new Dictionary(); - - #region IRegionModule Members @@ -134,7 +131,7 @@ namespace OpenSim.Region.Environment.Modules.InterGrid m_log.Error("[OGP]: Certificate validation handler change not supported. You may get ssl certificate validation errors teleporting from your region to some SSL regions."); } } - + } if (!m_scene.Contains(scene)) @@ -217,15 +214,12 @@ namespace OpenSim.Region.Environment.Modules.InterGrid m_log.WarnFormat("[REQUESTREZAVATAR]: {0}", request.ToString()); LLSDMap requestMap = (LLSDMap)request; - + Scene homeScene = GetRootScene(); - - if (homeScene == null) return GenerateNoHandlerMessage(); - RegionInfo reg = homeScene.RegionInfo; ulong regionhandle = GetOSCompatibleRegionHandle(reg); //string RegionURI = reg.ServerURI; @@ -234,14 +228,13 @@ namespace OpenSim.Region.Environment.Modules.InterGrid LLUUID RemoteAgentID = requestMap["agent_id"].AsUUID(); // will be used in the future. The client always connects with the aditi agentid currently - LLUUID LocalAgentID = RemoteAgentID; + LLUUID LocalAgentID = RemoteAgentID; string FirstName = requestMap["first_name"].AsString(); string LastName = requestMap["last_name"].AsString(); - OGPState userState = GetOGPState(LocalAgentID); - + userState.first_name = requestMap["first_name"].AsString(); userState.last_name = requestMap["last_name"].AsString(); userState.age_verified = requestMap["age_verified"].AsBoolean(); @@ -268,7 +261,7 @@ namespace OpenSim.Region.Environment.Modules.InterGrid responseMap["region_Y"] = LLSD.FromInteger(reg.RegionLocY * (uint)Constants.RegionSize); // LLY responseMap["region_id"] = LLSD.FromUUID(reg.originRegionID); responseMap["sim_access"] = LLSD.FromString((reg.RegionSettings.Maturity == 1) ? "Mature" : "PG"); - + // Generate a dummy agent for the user so we can get back a CAPS path AgentCircuitData agentData = new AgentCircuitData(); agentData.AgentID = LocalAgentID; @@ -299,7 +292,6 @@ namespace OpenSim.Region.Environment.Modules.InterGrid useragent.SecureSessionID=agentData.SecureSessionID; useragent.SessionID = agentData.SessionID; - UserProfileData userProfile = new UserProfileData(); userProfile.AboutText = "OGP User"; userProfile.CanDoMask = (uint)0; @@ -338,15 +330,13 @@ namespace OpenSim.Region.Environment.Modules.InterGrid // Do caps registration // get seed cap - - + // Stick our data in the cache so the region will know something about us homeScene.CommsManager.UserProfileCacheService.PreloadUserCache(agentData.AgentID, userProfile); // Call 'new user' event handler homeScene.NewUserConnection(reg.RegionHandle, agentData); - //string raCap = string.Empty; LLUUID AvatarRezCapUUID = LLUUID.Random(); @@ -379,16 +369,16 @@ namespace OpenSim.Region.Environment.Modules.InterGrid public LLSD RezAvatarMethod(string path, LLSD request) { m_log.WarnFormat("[REZAVATAR]: {0}", request.ToString()); - + LLSDMap responseMap = new LLSDMap(); - + AgentCircuitData userData = null; - + // Only people we've issued a cap can go further if (TryGetAgentCircuitData(path,out userData)) { LLSDMap requestMap = (LLSDMap)request; - + // take these values to start. There's a few more LLUUID SecureSessionID=requestMap["secure_session_id"].AsUUID(); LLUUID SessionID = requestMap["session_id"].AsUUID(); @@ -419,7 +409,7 @@ namespace OpenSim.Region.Environment.Modules.InterGrid if (item.ContainsKey("parent_estate_id")) { parentEstateID = item["parent_estate_id"].AsInteger(); - + } if (item.ContainsKey("region_id")) { @@ -437,11 +427,11 @@ namespace OpenSim.Region.Environment.Modules.InterGrid // Locate a home scene suitable for the user. Scene homeScene = GetRootScene(); - + if (homeScene != null) { // Get a reference to their Cap object so we can pull out the capobjectroot - OpenSim.Framework.Communications.Capabilities.Caps userCap = + OpenSim.Framework.Communications.Capabilities.Caps userCap = homeScene.GetCapsHandlerForUser(userData.AgentID); //Update the circuit data in the region so this user is authorized @@ -470,7 +460,7 @@ namespace OpenSim.Region.Environment.Modules.InterGrid userState.region_id = regionID; userState.src_parent_estate_id = parentEstateID; userState.visible_to_parent = visibleToParent; - + // Save state changes UpdateOGPState(userData.AgentID, userState); @@ -481,8 +471,8 @@ namespace OpenSim.Region.Environment.Modules.InterGrid LLSDArray PositionArray = new LLSDArray(); PositionArray.Add(LLSD.FromInteger(128)); PositionArray.Add(LLSD.FromInteger(128)); - PositionArray.Add(LLSD.FromInteger(40)); - + PositionArray.Add(LLSD.FromInteger(40)); + LLSDArray LookAtArray = new LLSDArray(); LookAtArray.Add(LLSD.FromInteger(1)); LookAtArray.Add(LLSD.FromInteger(1)); @@ -503,44 +493,36 @@ namespace OpenSim.Region.Environment.Modules.InterGrid responseMap["seed_capability"] = LLSD.FromString("http://" + reg.ExternalHostName + ":" + reg.HttpPort + "/CAPS/" + userCap.CapsObjectPath + "0000/"); responseMap["region"] = LLSD.FromUUID(reg.originRegionID); responseMap["look_at"] = LookAtArray; - + responseMap["sim_port"] = LLSD.FromInteger(reg.InternalEndPoint.Port); responseMap["sim_host"] = LLSD.FromString(Util.GetHostFromDNS(reg.ExternalHostName).ToString());// + ":" + reg.InternalEndPoint.Port.ToString()); responseMap["sim_ip"] = LLSD.FromString(Util.GetHostFromDNS(reg.ExternalHostName).ToString()); - + responseMap["session_id"] = LLSD.FromUUID(SessionID); responseMap["secure_session_id"] = LLSD.FromUUID(SecureSessionID); responseMap["circuit_code"] = LLSD.FromInteger(circuitcode); - + responseMap["position"] = PositionArray; - + responseMap["region_id"] = LLSD.FromUUID(reg.originRegionID); - + responseMap["sim_access"] = LLSD.FromString("Mature"); - + responseMap["connect"] = LLSD.FromBoolean(true); m_log.InfoFormat("[OGP]: host: {0}, IP {1}", responseMap["sim_host"].ToString(), responseMap["sim_ip"].ToString()); - } - } - return responseMap; + return responseMap; } - - public LLSD DerezAvatarMethod(string path, LLSD request) { - - m_log.ErrorFormat("DerezPath: {0}, Request: {1}", path, request.ToString()); - + //LLSD llsdResponse = null; LLSDMap responseMap = new LLSDMap(); - - string[] PathArray = path.Split('/'); m_log.InfoFormat("[OGP]: prefix {0}, uuid {1}, suffix {2}", PathArray[1], PathArray[2], PathArray[3]); @@ -549,17 +531,15 @@ namespace OpenSim.Region.Environment.Modules.InterGrid LLUUID userUUID = LLUUID.Zero; if (Helpers.TryParse(uuidString, out userUUID)) { - LLUUID RemoteID = uuidString; LLUUID LocalID = RemoteID; // FIXME: TODO: Routine to map RemoteUUIDs to LocalUUIds - // would be done already.. but the client connects with the Aditi UUID + // would be done already.. but the client connects with the Aditi UUID // regardless over the UDP stack OGPState userState = GetOGPState(LocalID); if (userState.agent_id != LLUUID.Zero) { - //LLSDMap outboundRequestMap = new LLSDMap(); LLSDMap inboundRequestMap = (LLSDMap)request; string rezAvatarString = inboundRequestMap["rez_avatar"].AsString(); @@ -569,12 +549,11 @@ namespace OpenSim.Region.Environment.Modules.InterGrid LookAtArray.Add(LLSD.FromInteger(1)); LookAtArray.Add(LLSD.FromInteger(1)); - LLSDArray PositionArray = new LLSDArray(); PositionArray.Add(LLSD.FromInteger(128)); PositionArray.Add(LLSD.FromInteger(128)); PositionArray.Add(LLSD.FromInteger(40)); - + LLSDArray lookArray = new LLSDArray(); lookArray.Add(LLSD.FromInteger(128)); lookArray.Add(LLSD.FromInteger(128)); @@ -582,11 +561,11 @@ namespace OpenSim.Region.Environment.Modules.InterGrid responseMap["connect"] = LLSD.FromBoolean(true);// it's okay to give this user up responseMap["look_at"] = LookAtArray; - + m_log.WarnFormat("[OGP]: Invoking rez_avatar on host:{0} for avatar: {1} {2}", rezAvatarString, userState.first_name, userState.last_name); LLSDMap rezResponseMap = invokeRezAvatarCap(responseMap, rezAvatarString,userState); - + // If invoking it returned an error, parse and end if (rezResponseMap.ContainsKey("connect")) { @@ -599,17 +578,16 @@ namespace OpenSim.Region.Environment.Modules.InterGrid string rezRespSeedCap = rezResponseMap["seed_capability"].AsString(); string rezRespSim_ip = rezResponseMap["sim_ip"].AsString(); string rezRespSim_host = rezResponseMap["sim_host"].AsString(); - + int rrPort = rezResponseMap["sim_port"].AsInteger(); int rrX = rezResponseMap["region_x"].AsInteger(); int rrY = rezResponseMap["region_y"].AsInteger(); m_log.ErrorFormat("X:{0}, Y:{1}", rrX, rrY); LLUUID rrRID = rezResponseMap["region_id"].AsUUID(); - + string rrAccess = rezResponseMap["sim_access"].AsString(); - + LLSDArray RezResponsePositionArray = (LLSDArray)rezResponseMap["position"]; - responseMap["seed_capability"] = LLSD.FromString(rezRespSeedCap); responseMap["sim_ip"] = LLSD.FromString(Util.GetHostFromDNS(rezRespSim_ip).ToString()); @@ -619,23 +597,17 @@ namespace OpenSim.Region.Environment.Modules.InterGrid responseMap["region_y"] = LLSD.FromInteger(rrY ); responseMap["region_id"] = LLSD.FromUUID(rrRID); responseMap["sim_access"] = LLSD.FromString(rrAccess); - - - responseMap["position"] = RezResponsePositionArray; responseMap["look_at"] = lookArray; responseMap["connect"] = LLSD.FromBoolean(true); ShutdownConnection(LocalID,this); - m_log.Warn("RESPONSEDEREZ: " + responseMap.ToString()); return responseMap; - } - else + else { - return GenerateNoHandlerMessage(); } } @@ -649,20 +621,18 @@ namespace OpenSim.Region.Environment.Modules.InterGrid private LLSDMap invokeRezAvatarCap(LLSDMap responseMap, string CapAddress, OGPState userState) { - Scene reg = GetRootScene(); WebRequest DeRezRequest = WebRequest.Create(CapAddress); DeRezRequest.Method = "POST"; DeRezRequest.ContentType = "application/xml+llsd"; - LLSDMap RAMap = new LLSDMap(); LLSDMap AgentParms = new LLSDMap(); LLSDMap RegionParms = new LLSDMap(); - + LLSDArray Parameter = new LLSDArray(2); - + LLSDMap version = new LLSDMap(); version["version"] = LLSD.FromInteger(userState.src_version); Parameter.Add((LLSD)version); @@ -673,7 +643,7 @@ namespace OpenSim.Region.Environment.Modules.InterGrid SrcData["region_id"] = LLSD.FromUUID(reg.RegionInfo.originRegionID); SrcData["visible_to_parent"] = LLSD.FromBoolean(userState.visible_to_parent); Parameter.Add((LLSD)SrcData); - + AgentParms["first_name"] = LLSD.FromString(userState.first_name); AgentParms["last_name"] = LLSD.FromString(userState.last_name); AgentParms["agent_id"] = LLSD.FromUUID(userState.agent_id); @@ -689,13 +659,12 @@ namespace OpenSim.Region.Environment.Modules.InterGrid AgentParms["age_verified"] = LLSD.FromBoolean(userState.age_verified); AgentParms["limited_to_estate"] = LLSD.FromInteger(userState.limited_to_estate); AgentParms["inventory_host"] = LLSD.FromString(userState.inventory_host); - - // version 1 + + // version 1 RAMap = AgentParms; - + // Planned for version 2 // RAMap["agent_params"] = AgentParms; - RAMap["region_params"] = RegionParms; RAMap["parameter"] = Parameter; @@ -770,15 +739,13 @@ namespace OpenSim.Region.Environment.Modules.InterGrid return responseMap; } - - public LLSD GenerateNoHandlerMessage() { LLSDMap map = new LLSDMap(); map["reason"] = LLSD.FromString("LLSDRequest"); map["message"] = LLSD.FromString("No handler registered for LLSD Requests"); map["login"] = LLSD.FromString("false"); - + return map; } @@ -802,7 +769,6 @@ namespace OpenSim.Region.Environment.Modules.InterGrid CapsLoginID.Remove(path); } - private Scene GetRootScene() { Scene ReturnScene = null; @@ -815,9 +781,8 @@ namespace OpenSim.Region.Environment.Modules.InterGrid } return ReturnScene; - } - + private ulong GetOSCompatibleRegionHandle(RegionInfo reg) { return Util.UIntsToLong(reg.RegionLocX, reg.RegionLocY); @@ -849,7 +814,7 @@ namespace OpenSim.Region.Environment.Modules.InterGrid returnState.src_version = 1; returnState.src_parent_estate_id = 1; returnState.visible_to_parent = true; - + return returnState; } @@ -871,9 +836,10 @@ namespace OpenSim.Region.Environment.Modules.InterGrid public void DeleteOGPState(LLUUID agentId) { lock (m_OGPState) + { if (m_OGPState.ContainsKey(agentId)) m_OGPState.Remove(agentId); - + } } private void UpdateOGPState(LLUUID agentId, OGPState state) @@ -884,12 +850,13 @@ namespace OpenSim.Region.Environment.Modules.InterGrid { m_OGPState[agentId] = state; } - else + else { m_OGPState.Add(agentId,state); } } } + public void ShutdownConnection(LLUUID avatarId, OpenGridProtocolModule mod) { Scene homeScene = GetRootScene(); @@ -903,22 +870,17 @@ namespace OpenSim.Region.Environment.Modules.InterGrid ta.Start(); } } + // Temporary hack to allow teleporting to and from Vaak private static bool customXertificateValidation(object sender, X509Certificate cert, X509Chain chain, SslPolicyErrors error) { - //if (cert.Subject == "E=root@lindenlab.com, CN=*.vaak.lindenlab.com, O=\"Linden Lab, Inc.\", L=San Francisco, S=California, C=US") //{ - return true; - //} //return false; - } - - } public class KillAUser @@ -944,7 +906,7 @@ namespace OpenSim.Region.Environment.Modules.InterGrid avToBeKilled.ControllingClient.SendLogoutPacketWhenClosing = false; Thread.Sleep(30000); - + // test for child agent because they might have come back if (avToBeKilled.IsChildAgent) { @@ -953,12 +915,10 @@ namespace OpenSim.Region.Environment.Modules.InterGrid } } } - } + public class MonoCert : ICertificatePolicy { - - #region ICertificatePolicy Members public bool CheckValidationResult(ServicePoint srvPoint, X509Certificate certificate, WebRequest request, int certificateProblem) diff --git a/OpenSim/Region/Environment/Modules/World/Archiver/ArchiveConstants.cs b/OpenSim/Region/Environment/Modules/World/Archiver/ArchiveConstants.cs index 5e22e57..0b68c5f 100644 --- a/OpenSim/Region/Environment/Modules/World/Archiver/ArchiveConstants.cs +++ b/OpenSim/Region/Environment/Modules/World/Archiver/ArchiveConstants.cs @@ -59,7 +59,7 @@ namespace OpenSim.Region.Environment.Modules.World.Archiver /// Path for terrains. Technically these may be assets, but I think it's quite nice to split them out. /// public static readonly string TERRAINS_PATH = "terrains/"; - + /// /// The character the separates the uuid from extension information in an archived asset filename /// diff --git a/OpenSim/Region/Environment/Modules/World/Archiver/ArchiveReadRequest.cs b/OpenSim/Region/Environment/Modules/World/Archiver/ArchiveReadRequest.cs index 201986e..89f5fd7 100644 --- a/OpenSim/Region/Environment/Modules/World/Archiver/ArchiveReadRequest.cs +++ b/OpenSim/Region/Environment/Modules/World/Archiver/ArchiveReadRequest.cs @@ -212,16 +212,16 @@ namespace OpenSim.Region.Environment.Modules.World.Archiver // Right now we're nastily obtaining the lluuid from the filename string filename = assetPath.Remove(0, ArchiveConstants.ASSETS_PATH.Length); int i = filename.LastIndexOf(ArchiveConstants.ASSET_EXTENSION_SEPARATOR); - + if (i == -1) { m_log.ErrorFormat( "[ARCHIVER]: Could not find extension information in asset path {0} since it's missing the separator {1}. Skipping", assetPath, ArchiveConstants.ASSET_EXTENSION_SEPARATOR); - + return false; } - + string extension = filename.Substring(i); string uuid = filename.Remove(filename.Length - extension.Length); diff --git a/OpenSim/Region/Environment/Modules/World/NPC/NPCAvatar.cs b/OpenSim/Region/Environment/Modules/World/NPC/NPCAvatar.cs index 2d27b11..c1f5566 100644 --- a/OpenSim/Region/Environment/Modules/World/NPC/NPCAvatar.cs +++ b/OpenSim/Region/Environment/Modules/World/NPC/NPCAvatar.cs @@ -315,13 +315,13 @@ namespace OpenSim.Region.Environment.Modules.World.NPC public event RegionHandleRequest OnRegionHandleRequest; public event ParcelInfoRequest OnParcelInfoRequest; - public event ActivateGesture OnActivateGesture; + public event ActivateGesture OnActivateGesture; public event DeactivateGesture OnDeactivateGesture; #pragma warning restore 67 #endregion - + public void ActivateGesture(LLUUID assetId, LLUUID gestureId) { } diff --git a/OpenSim/Region/Environment/Modules/World/WorldMap/MapImageModule.cs b/OpenSim/Region/Environment/Modules/World/WorldMap/MapImageModule.cs index 2ae4174..bfb5016 100644 --- a/OpenSim/Region/Environment/Modules/World/WorldMap/MapImageModule.cs +++ b/OpenSim/Region/Environment/Modules/World/WorldMap/MapImageModule.cs @@ -103,7 +103,7 @@ namespace OpenSim.Region.Environment.Modules.World.WorldMap Bitmap mapbmp = new Bitmap(256, 256); //long t = System.Environment.TickCount; - //for(int i = 0; i < 10; ++i) { + //for (int i = 0; i < 10; ++i) { terrainRenderer.TerrainToBitmap(mapbmp); //} //t = System.Environment.TickCount - t; diff --git a/OpenSim/Region/Environment/Modules/World/WorldMap/ShadedMapTileRenderer.cs b/OpenSim/Region/Environment/Modules/World/WorldMap/ShadedMapTileRenderer.cs index 253a7f5..1ee86ba 100644 --- a/OpenSim/Region/Environment/Modules/World/WorldMap/ShadedMapTileRenderer.cs +++ b/OpenSim/Region/Environment/Modules/World/WorldMap/ShadedMapTileRenderer.cs @@ -97,8 +97,6 @@ namespace OpenSim.Region.Environment.Modules.World.WorldMap // No, that doesn't scale it: // heightvalue = low + mid * (heightvalue - low) / mid; => low + (heightvalue - low) * mid / mid = low + (heightvalue - low) * 1 = low + heightvalue - low = heightvalue - - if (Single.IsInfinity(heightvalue) || Single.IsNaN(heightvalue)) heightvalue = 0; else if (heightvalue > 255f) @@ -136,7 +134,7 @@ namespace OpenSim.Region.Environment.Modules.World.WorldMap int hfdiffi = 0; int hfdiffihighlight = 0; float highlightfactor = 0.18f; - + try { // hfdiffi = Math.Abs((int)((hfdiff * 4) + (hfdiff * 0.5))) + 1; @@ -146,7 +144,7 @@ namespace OpenSim.Region.Environment.Modules.World.WorldMap // hfdiffi = hfdiffi + Math.Abs((int)(((hfdiff % 1) * 0.5f) * 10f) - 1); hfdiffi = hfdiffi + Math.Abs((int)((hfdiff % 1f) * 5f) - 1); } - + hfdiffihighlight = Math.Abs((int)((hfdiff * highlightfactor) * 4.5f)) + 1; if (hfdiff % 1f != 0) { @@ -195,10 +193,9 @@ namespace OpenSim.Region.Environment.Modules.World.WorldMap color = Color.FromArgb((r - hfdiffi > 0) ? r - hfdiffi : 0, (g - hfdiffi > 0) ? g - hfdiffi : 0, (b - hfdiffi > 0) ? b - hfdiffi : 0); - + mapbmp.SetPixel(x-1, yr+1, color); } - } } } @@ -213,7 +210,6 @@ namespace OpenSim.Region.Environment.Modules.World.WorldMap color = Color.Black; mapbmp.SetPixel(x, yr, color); } - } else { diff --git a/OpenSim/Region/Environment/Modules/World/WorldMap/TexturedMapTileRenderer.cs b/OpenSim/Region/Environment/Modules/World/WorldMap/TexturedMapTileRenderer.cs index 957a1df..615befc 100644 --- a/OpenSim/Region/Environment/Modules/World/WorldMap/TexturedMapTileRenderer.cs +++ b/OpenSim/Region/Environment/Modules/World/WorldMap/TexturedMapTileRenderer.cs @@ -82,10 +82,10 @@ namespace OpenSim.Region.Environment.Modules.World.WorldMap // (for info about algorithm, see http://en.wikipedia.org/wiki/HSL_and_HSV) public Color toColor() { - if(s < 0f) Console.WriteLine("S < 0: " + s); - else if(s > 1f) Console.WriteLine("S > 1: " + s); - if(v < 0f) Console.WriteLine("V < 0: " + v); - else if(v > 1f) Console.WriteLine("V > 1: " + v); + if (s < 0f) Console.WriteLine("S < 0: " + s); + else if (s > 1f) Console.WriteLine("S > 1: " + s); + if (v < 0f) Console.WriteLine("V < 0: " + v); + else if (v > 1f) Console.WriteLine("V > 1: " + v); float f = h / 60f; int sector = (int)f % 6; @@ -95,7 +95,7 @@ namespace OpenSim.Region.Environment.Modules.World.WorldMap int ti = (int)(v * (1f - (1f - f) * s) * 255f); int vi = (int)(v * 255f); - switch(sector) + switch (sector) { case 0: return Color.FromArgb(vi, ti, pi); @@ -168,7 +168,7 @@ namespace OpenSim.Region.Environment.Modules.World.WorldMap { AssetBase asset = m_scene.AssetCache.GetAsset(id, true); m_log.DebugFormat("Fetched texture {0}, found: {1}", id, asset != null); - if(asset == null) return null; + if (asset == null) return null; return new Bitmap(OpenJPEG.DecodeToImage(asset.Data)); } @@ -179,9 +179,9 @@ namespace OpenSim.Region.Environment.Modules.World.WorldMap // color-channel, so 2^24 is the maximum value we can get, adding everything. // int is be big enough for that. int r = 0, g = 0, b = 0; - for(int y = 0; y < bmp.Height; ++y) + for (int y = 0; y < bmp.Height; ++y) { - for(int x = 0; x < bmp.Width; ++x) + for (int x = 0; x < bmp.Width; ++x) { Color c = bmp.GetPixel(x, y); r += (int)c.R & 0xff; @@ -218,14 +218,14 @@ namespace OpenSim.Region.Environment.Modules.World.WorldMap // interpolate two colors in HSV space and return the resulting color private HSV interpolateHSV(ref HSV c1, ref HSV c2, float ratio) { - if(ratio <= 0f) return c1; - if(ratio >= 1f) return c2; + if (ratio <= 0f) return c1; + if (ratio >= 1f) return c2; // make sure we are on the same side on the hue-circle for interpolation // We change the hue of the parameters here, but we don't change the color // represented by that value - if(c1.h - c2.h > 180f) c1.h -= 360f; - else if(c2.h - c1.h > 180f) c1.h += 360f; + if (c1.h - c2.h > 180f) c1.h -= 360f; + else if (c2.h - c1.h > 180f) c1.h += 360f; return new HSV(c1.h * (1f - ratio) + c2.h * ratio, c1.s * (1f - ratio) + c2.s * ratio, @@ -321,16 +321,16 @@ namespace OpenSim.Region.Environment.Modules.World.WorldMap } HSV hsv; - if(hmod <= low) hsv = hsv1; // too low - else if(hmod >= high) hsv = hsv4; // too high + if (hmod <= low) hsv = hsv1; // too low + else if (hmod >= high) hsv = hsv4; // too high else { // HSV-interpolate along the colors // first, rescale h to 0.0 - 1.0 hmod = (hmod - low) / (high - low); // now we have to split: 0.00 => color1, 0.33 => color2, 0.67 => color3, 1.00 => color4 - if(hmod < 1f/3f) hsv = interpolateHSV(ref hsv1, ref hsv2, hmod * 3f); - else if(hmod < 2f/3f) hsv = interpolateHSV(ref hsv2, ref hsv3, (hmod * 3f) - 1f); + if (hmod < 1f/3f) hsv = interpolateHSV(ref hsv1, ref hsv2, hmod * 3f); + else if (hmod < 2f/3f) hsv = interpolateHSV(ref hsv2, ref hsv3, (hmod * 3f) - 1f); else hsv = interpolateHSV(ref hsv3, ref hsv4, (hmod * 3f) - 2f); } diff --git a/OpenSim/Region/Environment/Scenes/Scene.cs b/OpenSim/Region/Environment/Scenes/Scene.cs index 424c56c..0bd0028 100644 --- a/OpenSim/Region/Environment/Scenes/Scene.cs +++ b/OpenSim/Region/Environment/Scenes/Scene.cs @@ -276,8 +276,6 @@ namespace OpenSim.Region.Environment.Scenes if (m_storageManager.EstateDataStore != null) m_regInfo.EstateSettings = m_storageManager.EstateDataStore.LoadEstateSettings(m_regInfo.RegionID); - - //Bind Storage Manager functions to some land manager functions for this scene EventManager.OnLandObjectAdded += new EventManager.LandObjectAdded(m_storageManager.DataStore.StoreLandObject); @@ -322,7 +320,6 @@ namespace OpenSim.Region.Environment.Scenes { m_log.Warn("Failed to load StartupConfig"); } - } #endregion @@ -351,7 +348,6 @@ namespace OpenSim.Region.Environment.Scenes // we add it to the notify list regardless of distance. // We'll check the agent's draw distance before notifying them though. - if (RegionInfo.RegionHandle != otherRegion.RegionHandle) { for (int i = 0; i < m_neighbours.Count; i++) @@ -386,8 +382,7 @@ namespace OpenSim.Region.Environment.Scenes int resultX = Math.Abs((int)otherRegion.RegionLocX - (int)RegionInfo.RegionLocX); int resultY = Math.Abs((int)otherRegion.RegionLocY - (int)RegionInfo.RegionLocY); - if ((resultX <= 1) && - (resultY <= 1)) + if (resultX <= 1 && resultY <= 1) { try { @@ -584,8 +579,6 @@ namespace OpenSim.Region.Environment.Scenes } } } - - } m_scripts_enabled = !ScriptEngine; m_log.Info("[TOTEDD]: Here is the method to trigger disabling of the scripting engine"); @@ -600,7 +593,9 @@ namespace OpenSim.Region.Environment.Scenes public int GetInaccurateNeighborCount() { lock (m_neighbours) + { return m_neighbours.Count; + } } // This is the method that shuts down the scene. @@ -1062,7 +1057,6 @@ namespace OpenSim.Region.Environment.Scenes float hfdiff = hfvalue; int hfdiffi = 0; - for (int x = 0; x < 256; x++) { //int tc = System.Environment.TickCount; @@ -1087,10 +1081,8 @@ namespace OpenSim.Region.Environment.Scenes //float tmpval = (float)hm[x, y]; float heightvalue = (float)hm[x, y]; - if (heightvalue > (float)m_regInfo.RegionSettings.WaterHeight) { - // scale height value heightvalue = low + mid * (heightvalue - low) / mid; @@ -1102,6 +1094,7 @@ namespace OpenSim.Region.Environment.Scenes if (Single.IsInfinity(heightvalue) || Single.IsNaN(heightvalue)) heightvalue = 0; + try { Color green = Color.FromArgb((int)heightvalue, 100, (int)heightvalue); @@ -1136,7 +1129,6 @@ namespace OpenSim.Region.Environment.Scenes // we use floats, colors use bytes, so shrink are space down to // 0-255 - try { hfdiffi = Math.Abs((int)((hfdiff * 4) + (hfdiff * 0.5))) + 1; @@ -1166,15 +1158,8 @@ namespace OpenSim.Region.Environment.Scenes mapbmp.SetPixel(x - 1, (256 - y) - 1, Shade); } } - - } - } - - - - } catch (System.ArgumentException) { @@ -1264,7 +1249,6 @@ namespace OpenSim.Region.Environment.Scenes if (part == null) continue; - // Draw if the object is at least 1 meter wide in any direction if (part.Scale.X > 1f || part.Scale.Y > 1f || part.Scale.Z > 1f) { @@ -1426,6 +1410,7 @@ namespace OpenSim.Region.Environment.Scenes } } } + public void LazySaveGeneratedMaptile(byte[] data, bool temporary) { // Overwrites the local Asset cache with new maptile data @@ -1482,6 +1467,7 @@ namespace OpenSim.Region.Environment.Scenes asset.Temporary = temporary; AssetCache.AddAsset(asset); } + #endregion #region Load Land @@ -1556,6 +1542,7 @@ namespace OpenSim.Region.Environment.Scenes pos = RayEnd; return pos; } + if (RayTargetID != LLUUID.Zero) { SceneObjectPart target = GetSceneObjectPart(RayTargetID); @@ -1921,9 +1908,7 @@ namespace OpenSim.Region.Environment.Scenes if (position.X > Constants.RegionSize + 0.1f) { pos.X = ((pos.X - Constants.RegionSize)); - newRegionHandle = Util.UIntsToLong((uint)((thisx + 1) * Constants.RegionSize), (uint)(thisy * Constants.RegionSize)); - // x + 1 } else if (position.X < -0.1f) @@ -2165,9 +2150,7 @@ namespace OpenSim.Region.Environment.Scenes client.OnScriptReset += ProcessScriptReset; client.OnGetScriptRunning += GetScriptRunning; client.OnSetScriptRunning += SetScriptRunning; - client.OnRegionHandleRequest += RegionHandleRequest; - client.OnUnackedTerrain += TerrainUnAcked; //Gesture @@ -2185,7 +2168,6 @@ namespace OpenSim.Region.Environment.Scenes if (userInfo != null) { - InventoryItemBase item = userInfo.RootFolder.FindItem(gestureId); if (item != null) { @@ -2206,7 +2188,6 @@ namespace OpenSim.Region.Environment.Scenes if (userInfo != null) { - InventoryItemBase item = userInfo.RootFolder.FindItem(gestureId); if (item != null) { @@ -2607,7 +2588,6 @@ namespace OpenSim.Region.Environment.Scenes "[CONNECTION DEBUGGING]: Skipping this region for welcoming avatar {0} [{1}] at {2}", agent.AgentID, regionHandle, RegionInfo.RegionName); } - } public void UpdateCircuitData(AgentCircuitData data) @@ -2645,9 +2625,8 @@ namespace OpenSim.Region.Environment.Scenes m_log.InfoFormat("[USERLOGOFF]: Got a logoff request for {0} but the user isn't here. The user might already have been logged out", AvatarID.ToString()); } } - - } + /// /// Add a caps handler for the given agent. If the CAPS handler already exists for this agent, /// then it is replaced by a new CAPS handler. @@ -2905,14 +2884,14 @@ namespace OpenSim.Region.Environment.Scenes public void RequestTeleportLandmark(IClientAPI remoteClient, LLUUID regionID, LLVector3 position) { RegionInfo info = CommsManager.GridService.RequestNeighbourInfo(regionID); - + if (info == null) { // can't find the region: Tell viewer and abort remoteClient.SendTeleportFailed("The teleport destination could not be found."); return; } - + lock (m_scenePresences) { if (m_scenePresences.ContainsKey(remoteClient.AgentId)) @@ -3016,7 +2995,6 @@ namespace OpenSim.Region.Environment.Scenes m_statsReporter.SetObjectCapacity(objects); } objectCapacity = objects; - } public List GetFriendList(LLUUID avatarID) @@ -3089,7 +3067,6 @@ namespace OpenSim.Region.Environment.Scenes return LLUUID.Zero; } - /// /// This method is a way for the Friends Module to create an instant /// message to the avatar and for Instant Messages that travel across @@ -3105,7 +3082,6 @@ namespace OpenSim.Region.Environment.Scenes m_eventManager.TriggerGridInstantMessage(message, options); } - public virtual void StoreAddFriendship(LLUUID ownerID, LLUUID friendID, uint perms) { // TODO: m_sceneGridService.DoStuff; @@ -3123,6 +3099,7 @@ namespace OpenSim.Region.Environment.Scenes // TODO: m_sceneGridService.DoStuff; m_sceneGridService.RemoveUserFriend(ownerID, ExfriendID); } + public virtual List StoreGetFriendsForUser(LLUUID ownerID) { // TODO: m_sceneGridService.DoStuff; @@ -3135,11 +3112,13 @@ namespace OpenSim.Region.Environment.Scenes m_statsReporter.AddOutPackets(outPackets); m_statsReporter.AddunAckedBytes(unAckedBytes); } + public void AddAgentTime(int ms) { m_statsReporter.addFrameMS(ms); m_statsReporter.addAgentMS(ms); } + public void AddAgentUpdates(int count) { m_statsReporter.AddAgentUpdates(count); @@ -3239,7 +3218,6 @@ namespace OpenSim.Region.Environment.Scenes /// The Message being sent to the user public void SendRegionMessageFromEstateTools(LLUUID FromAvatarID, LLUUID fromSessionID, String FromAvatarName, String Message) { - List presenceList = GetScenePresences(); foreach (ScenePresence presence in presenceList) @@ -3359,7 +3337,7 @@ namespace OpenSim.Region.Environment.Scenes foreach (ScenePresence presence in presenceList) { - if ((presence.Firstname == firstName) && (presence.Lastname == lastName)) + if (presence.Firstname == firstName && presence.Lastname == lastName) { presence.ControllingClient.SendAgentAlertMessage(message, modal); break; @@ -3876,7 +3854,6 @@ namespace OpenSim.Region.Environment.Scenes return m_httpListener.AddLLSDHandler(path, handler); } - public void RemoveStreamHandler(string httpMethod, string path) { m_httpListener.RemoveStreamHandler(httpMethod, path); @@ -3945,7 +3922,6 @@ namespace OpenSim.Region.Environment.Scenes client.SendRegionHandle(regionID, info.RegionHandle); } - public void TerrainUnAcked(IClientAPI client, int patchX, int patchY) { //Console.WriteLine("Terrain packet unacked, resending patch: " + patchX + " , " + patchY); @@ -3973,10 +3949,10 @@ namespace OpenSim.Region.Environment.Scenes public void ObjectSaleInfo(IClientAPI client, LLUUID agentID, LLUUID sessionID, uint localID, byte saleType, int salePrice) { SceneObjectPart part = GetSceneObjectPart(localID); - if(part == null || part.ParentGroup == null) + if (part == null || part.ParentGroup == null) return; - if(part.ParentGroup.RootPart == null) + if (part.ParentGroup.RootPart == null) return; part = part.ParentGroup.RootPart; @@ -3994,10 +3970,10 @@ namespace OpenSim.Region.Environment.Scenes { SceneObjectPart part = GetSceneObjectPart(localID); - if(part == null) + if (part == null) return; - if(part.ParentGroup == null) + if (part.ParentGroup == null) return; SceneObjectGroup group = part.ParentGroup; diff --git a/OpenSim/Region/Environment/Scenes/SceneCommunicationService.cs b/OpenSim/Region/Environment/Scenes/SceneCommunicationService.cs index 24f814e..f8c5814 100644 --- a/OpenSim/Region/Environment/Scenes/SceneCommunicationService.cs +++ b/OpenSim/Region/Environment/Scenes/SceneCommunicationService.cs @@ -636,7 +636,7 @@ namespace OpenSim.Region.Environment.Scenes // both regions if (avatar.ParentID != (uint)0) avatar.StandUp(); - if(!avatar.ValidateAttachments()) + if (!avatar.ValidateAttachments()) { avatar.ControllingClient.SendTeleportFailed("Inconsistent attachment state"); return; diff --git a/OpenSim/Region/Environment/Scenes/ScenePresence.cs b/OpenSim/Region/Environment/Scenes/ScenePresence.cs index cf24c73..4b785e9 100644 --- a/OpenSim/Region/Environment/Scenes/ScenePresence.cs +++ b/OpenSim/Region/Environment/Scenes/ScenePresence.cs @@ -2350,10 +2350,10 @@ namespace OpenSim.Region.Environment.Scenes // Validate foreach (SceneObjectGroup gobj in m_attachments) { - if(gobj == null) + if (gobj == null) return false; - if(gobj.RootPart == null) + if (gobj.RootPart == null) { return false; } @@ -2370,7 +2370,7 @@ namespace OpenSim.Region.Environment.Scenes // Validate foreach (SceneObjectGroup gobj in m_attachments) { - if(gobj == null || gobj.RootPart == null) + if (gobj == null || gobj.RootPart == null) return false; } diff --git a/OpenSim/Region/Physics/Meshing/Mesh.cs b/OpenSim/Region/Physics/Meshing/Mesh.cs index 394dcf3..4630d98 100644 --- a/OpenSim/Region/Physics/Meshing/Mesh.cs +++ b/OpenSim/Region/Physics/Meshing/Mesh.cs @@ -231,7 +231,7 @@ namespace OpenSim.Region.Physics.Meshing { int[] result = getIndexListAsInt(); pinnedIndex = GCHandle.Alloc(result, GCHandleType.Pinned); - + return result; } diff --git a/OpenSim/Region/Physics/Meshing/Meshmerizer.cs b/OpenSim/Region/Physics/Meshing/Meshmerizer.cs index a66a1b1..7cf8b76 100644 --- a/OpenSim/Region/Physics/Meshing/Meshmerizer.cs +++ b/OpenSim/Region/Physics/Meshing/Meshmerizer.cs @@ -1890,9 +1890,9 @@ namespace OpenSim.Region.Physics.Meshing else if ((primShape.ProfileCurve & 0x07) == (byte)ProfileShape.HalfCircle) { // half circle, prim is a sphere sides = 24; - - profileBegin = 0.5f * profileBegin + 0.5f; - profileEnd = 0.5f * profileEnd + 0.5f; + + profileBegin = 0.5f * profileBegin + 0.5f; + profileEnd = 0.5f * profileEnd + 0.5f; //profileHollow = 0.0f; // debugging only } @@ -1904,7 +1904,6 @@ namespace OpenSim.Region.Physics.Meshing hollowSides = 4; else if (primShape.HollowShape == HollowShape.Triangle) hollowSides = 3; - PrimMesh primMesh = new PrimMesh(sides, profileBegin, profileEnd, profileHollow, hollowSides); //PrimMesh primMesh = new PrimMesh(sides, profileBegin, profileEnd, 0.0f, 4); diff --git a/OpenSim/Region/Physics/Meshing/PrimMesher.cs b/OpenSim/Region/Physics/Meshing/PrimMesher.cs index 53cc443..58bb82e 100644 --- a/OpenSim/Region/Physics/Meshing/PrimMesher.cs +++ b/OpenSim/Region/Physics/Meshing/PrimMesher.cs @@ -99,8 +99,8 @@ namespace OpenSim.Region.Physics.Meshing internal List angles; // this class should have a table of most commonly computed values - // instead of all the trig function calls - // most common would be for sides = 3, 4, or 24 + // instead of all the trig function calls + // most common would be for sides = 3, 4, or 24 internal void makeAngles( int sides, float startAngle, float stopAngle ) { angles = new List(); @@ -134,7 +134,7 @@ namespace OpenSim.Region.Physics.Meshing newAngle.Y = (float) System.Math.Sin(angle); angles.Add(newAngle); step += 1; - angle = stepSize * step; + angle = stepSize * step; } if (startAngle > angles[0].angle) @@ -187,15 +187,15 @@ namespace OpenSim.Region.Physics.Meshing AngleList hollowAngles = new AngleList(); float xScale = 0.5f; - float yScale = 0.5f; + float yScale = 0.5f; if (sides == 4) // corners of a square are sqrt(2) from center - { + { xScale = 0.707f; - yScale = 0.707f; + yScale = 0.707f; } float startAngle = profileStart * twoPi; - float stopAngle = profileEnd * twoPi; + float stopAngle = profileEnd * twoPi; float stepSize = twoPi / sides; try { angles.makeAngles(sides, startAngle, stopAngle); } @@ -397,7 +397,7 @@ namespace OpenSim.Region.Physics.Meshing { vert = this.coords[i]; Vertex v = new Vertex(vert.X, vert.Y, vert.Z) * q; - + vert.X = v.X; vert.Y = v.Y; vert.Z = v.Z; @@ -507,23 +507,23 @@ namespace OpenSim.Region.Physics.Meshing s += "sides..................: " + this.sides.ToString(); s += "\nhollowSides..........: " + this.hollowSides.ToString(); s += "\nprofileStart.........: " + this.profileStart.ToString(); - s += "\nprofileEnd...........: " + this.profileEnd.ToString(); - s += "\nhollow...............: " + this.hollow.ToString(); - s += "\ntwistBegin...........: " + this.twistBegin.ToString(); - s += "\ntwistEnd.............: " + this.twistEnd.ToString(); - s += "\ntopShearX............: " + this.topShearX.ToString(); - s += "\ntopShearY............: " + this.topShearY.ToString(); - s += "\npathCutBegin.........: " + this.pathCutBegin.ToString(); - s += "\npathCutEnd...........: " + this.pathCutEnd.ToString(); - s += "\ndimpleBegin..........: " + this.dimpleBegin.ToString(); - s += "\ndimpleEnd............: " + this.dimpleEnd.ToString(); - s += "\nskew.................: " + this.skew.ToString(); - s += "\nholeSizeX............: " + this.holeSizeX.ToString(); - s += "\nholeSizeY............: " + this.holeSizeY.ToString(); - s += "\ntaperX...............: " + this.taperX.ToString(); - s += "\ntaperY...............: " + this.taperY.ToString(); - s += "\nradius...............: " + this.radius.ToString(); - s += "\nrevolutions..........: " + this.revolutions.ToString(); + s += "\nprofileEnd...........: " + this.profileEnd.ToString(); + s += "\nhollow...............: " + this.hollow.ToString(); + s += "\ntwistBegin...........: " + this.twistBegin.ToString(); + s += "\ntwistEnd.............: " + this.twistEnd.ToString(); + s += "\ntopShearX............: " + this.topShearX.ToString(); + s += "\ntopShearY............: " + this.topShearY.ToString(); + s += "\npathCutBegin.........: " + this.pathCutBegin.ToString(); + s += "\npathCutEnd...........: " + this.pathCutEnd.ToString(); + s += "\ndimpleBegin..........: " + this.dimpleBegin.ToString(); + s += "\ndimpleEnd............: " + this.dimpleEnd.ToString(); + s += "\nskew.................: " + this.skew.ToString(); + s += "\nholeSizeX............: " + this.holeSizeX.ToString(); + s += "\nholeSizeY............: " + this.holeSizeY.ToString(); + s += "\ntaperX...............: " + this.taperX.ToString(); + s += "\ntaperY...............: " + this.taperY.ToString(); + s += "\nradius...............: " + this.radius.ToString(); + s += "\nrevolutions..........: " + this.revolutions.ToString(); s += "\nstepsPerRevolution...: " + this.stepsPerRevolution.ToString(); return s; @@ -542,20 +542,20 @@ namespace OpenSim.Region.Physics.Meshing this.hollowSides = hollowSides; if (sides < 3) - this.sides = 3; + this.sides = 3; if ( hollowSides < 3) - this.hollowSides = 3; - if (profileStart < 0.0f) + this.hollowSides = 3; + if (profileStart < 0.0f) this.profileStart = 0.0f; - if (profileEnd > 1.0f) + if (profileEnd > 1.0f) this.profileEnd = 1.0f; - if (profileEnd < 0.02f) + if (profileEnd < 0.02f) this.profileEnd = 0.02f; - if (profileStart >= profileEnd) + if (profileStart >= profileEnd) this.profileStart = profileEnd - 0.02f; - if (hollow > 1.0f) + if (hollow > 1.0f) this.hollow = 1.0f; - if (hollow < 0.0f) + if (hollow < 0.0f) this.hollow = 0.0f; } @@ -578,7 +578,7 @@ namespace OpenSim.Region.Physics.Meshing steps = (int)(steps * 4.5 * length); } #endif - + float twistBegin = this.twistBegin / 360.0f * twoPi; float twistEnd = this.twistEnd / 360.0f * twoPi; float twistTotal = twistEnd - twistBegin; @@ -661,7 +661,7 @@ namespace OpenSim.Region.Physics.Meshing newLayer.AddValue2Faces(coordsLen); this.coords.AddRange(newLayer.coords); - this.faces.AddRange(newLayer.faces); + this.faces.AddRange(newLayer.faces); // fill faces between layers @@ -707,7 +707,6 @@ namespace OpenSim.Region.Physics.Meshing else done = true; } } - public void ExtrudeCircular() { @@ -721,9 +720,9 @@ namespace OpenSim.Region.Physics.Meshing float twistEnd = this.twistEnd / 360.0f * twoPi; float twistTotal = twistEnd - twistBegin; - // if the profile has a lot of twist, add more layers otherwise the layers may overlap - // and the resulting mesh may be quite inaccurate. This method is arbitrary and doesn't - // accurately match the viewer + // if the profile has a lot of twist, add more layers otherwise the layers may overlap + // and the resulting mesh may be quite inaccurate. This method is arbitrary and doesn't + // accurately match the viewer float twistTotalAbs = Math.Abs(twistTotal); if (twistTotalAbs > 0.01f) { @@ -732,19 +731,19 @@ namespace OpenSim.Region.Physics.Meshing if (twistTotalAbs > Math.PI * 3.0f) steps *= 2; } - + float yPathScale = this.holeSizeY * 0.5f; float pathLength = this.pathCutEnd - this.pathCutBegin; float totalSkew = this.skew * 2.0f * pathLength; float skewStart = this.pathCutBegin * 2.0f * this.skew - this.skew; // It's not quite clear what pushY (Y top shear) does, but subtracting it from the start and end - // angles appears to approximate it's effects on path cut. Likewise, adding it to the angle used - // to calculate the sine for generating the path radius appears to approximate it's effects there - // too, but there are some subtle differences in the radius which are noticeable as the prim size - // increases and it may affect megaprims quite a bit. The effect of the Y top shear parameter on - // the meshes generated with this technique appear nearly identical in shape to the same prims when - // displayed by the viewer. + // angles appears to approximate it's effects on path cut. Likewise, adding it to the angle used + // to calculate the sine for generating the path radius appears to approximate it's effects there + // too, but there are some subtle differences in the radius which are noticeable as the prim size + // increases and it may affect megaprims quite a bit. The effect of the Y top shear parameter on + // the meshes generated with this technique appear nearly identical in shape to the same prims when + // displayed by the viewer. float startAngle = (twoPi * this.pathCutBegin * this.revolutions) - this.topShearY * 0.9f; float endAngle = (twoPi * this.pathCutEnd * this.revolutions) - this.topShearY * 0.9f; @@ -784,7 +783,7 @@ namespace OpenSim.Region.Physics.Meshing hollow /= 0.7f; } } - + Profile profile = new Profile(this.sides, this.profileStart, this.profileEnd, hollow, this.hollowSides); if (initialProfileRot != 0.0f) @@ -834,7 +833,7 @@ namespace OpenSim.Region.Physics.Meshing newLayer.AddRot(new Quaternion(new Vertex(0.0f, 0.0f, 1.0f), twist)); // now orient the rotation of the profile layer relative to it's position on the path - // adding taperY to the angle used to generate the quat appears to approximate the viewer + // adding taperY to the angle used to generate the quat appears to approximate the viewer newLayer.AddRot(new Quaternion(new Vertex(1.0f, 0.0f, 0.0f), angle + this.topShearY * 0.9f)); newLayer.AddPos(xOffset, yOffset, zOffset); @@ -959,7 +958,7 @@ namespace OpenSim.Region.Physics.Meshing sw.WriteLine(s); } - + sw.Close(); } } diff --git a/OpenSim/Region/ScriptEngine/Common/LSL_BuiltIn_Commands.cs b/OpenSim/Region/ScriptEngine/Common/LSL_BuiltIn_Commands.cs index 9fdf3ce..f10a854 100644 --- a/OpenSim/Region/ScriptEngine/Common/LSL_BuiltIn_Commands.cs +++ b/OpenSim/Region/ScriptEngine/Common/LSL_BuiltIn_Commands.cs @@ -2296,7 +2296,7 @@ namespace OpenSim.Region.ScriptEngine.Common bool found = false; float dist = (float)llVecDist(llGetPos(), pos); - if(dist > m_distanceFactor * 10.0f) + if (dist > m_distanceFactor * 10.0f) return; // Instead of using return;, I'm using continue; because in our TaskInventory implementation @@ -6247,7 +6247,7 @@ namespace OpenSim.Region.ScriptEngine.Common switch (primType) { case BuiltIn_Commands_BaseClass.PRIM_TYPE_BOX: - case BuiltIn_Commands_BaseClass.PRIM_TYPE_CYLINDER: + case BuiltIn_Commands_BaseClass.PRIM_TYPE_CYLINDER: case BuiltIn_Commands_BaseClass.PRIM_TYPE_PRISM: res.Add(new LSL_Types.LSLInteger(Shape.ProfileCurve)); res.Add(new LSL_Types.Vector3(Shape.ProfileBegin / 50000.0, 1 - Shape.ProfileEnd / 50000.0, 0)); @@ -6298,10 +6298,10 @@ namespace OpenSim.Region.ScriptEngine.Common // vector tapera res.Add(new LSL_Types.Vector3(Shape.PathTaperX / 100.0, Shape.PathTaperY / 100.0, 0)); - // float revolutions, + // float revolutions, res.Add(new LSL_Types.LSLFloat(Shape.PathRevolutions / 50.0)); // needs fixing :( - // float radiusoffset, + // float radiusoffset, res.Add(new LSL_Types.LSLFloat(Shape.PathRadiusOffset / 100.0)); // float skew @@ -7014,10 +7014,10 @@ namespace OpenSim.Region.ScriptEngine.Common { case 5: // DATA_SIM_POS if (info == null) - { - // ScriptSleep(1000); - return LLUUID.Zero.ToString(); - } + { + // ScriptSleep(1000); + return LLUUID.Zero.ToString(); + } reply = new LSL_Types.Vector3( info.RegionLocX * Constants.RegionSize, info.RegionLocY * Constants.RegionSize, @@ -7031,10 +7031,10 @@ namespace OpenSim.Region.ScriptEngine.Common break; case 7: // DATA_SIM_RATING if (info == null) - { - // ScriptSleep(1000); - return LLUUID.Zero.ToString(); - } + { + // ScriptSleep(1000); + return LLUUID.Zero.ToString(); + } int access = info.RegionSettings.Maturity; if (access == 0) reply = "PG"; @@ -7047,18 +7047,18 @@ namespace OpenSim.Region.ScriptEngine.Common reply = m_ScriptEngine.World.GetSimulatorVersion(); break; default: - // ScriptSleep(1000); + // ScriptSleep(1000); return LLUUID.Zero.ToString(); // Raise no event } LLUUID rq = LLUUID.Random(); - LLUUID tid = m_ScriptEngine.m_ASYNCLSLCommandManager. - m_Dataserver.RegisterRequest(m_localID, m_itemID, rq.ToString()); + LLUUID tid = m_ScriptEngine.m_ASYNCLSLCommandManager. + m_Dataserver.RegisterRequest(m_localID, m_itemID, rq.ToString()); - m_ScriptEngine.m_ASYNCLSLCommandManager. - m_Dataserver.DataserverReply(rq.ToString(), reply); + m_ScriptEngine.m_ASYNCLSLCommandManager. + m_Dataserver.DataserverReply(rq.ToString(), reply); - // ScriptSleep(1000); + // ScriptSleep(1000); return tid.ToString(); } catch(Exception e) @@ -8041,12 +8041,12 @@ namespace OpenSim.Region.ScriptEngine.Common (line >= 0) && (line < notecardLines.Length)) { - // ScriptSleep(100); + // ScriptSleep(100); return notecardLines[line]; } else { - // ScriptSleep(100); + // ScriptSleep(100); return String.Empty; } } diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs index b48edfb..b5ca167 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs @@ -2130,7 +2130,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api { float dist = (float)llVecMag(llGetPos() - pos); - if(dist > m_ScriptDistanceFactor * 10.0f) + if (dist > m_ScriptDistanceFactor * 10.0f) return; m_host.AddScriptLPS(1); @@ -5735,8 +5735,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api case (int)ScriptBaseClass.PRIM_POINT_LIGHT: if (remain < 5) return; - LSL_Types.LSLInteger light = new LSL_Types.LSLInteger(rules.Data[idx++].ToString()); - LSL_Types.Vector3 lightcolor =new LSL_Types.Vector3(rules.Data[idx++].ToString()); + LSL_Types.LSLInteger light = new LSL_Types.LSLInteger(rules.Data[idx++].ToString()); + LSL_Types.Vector3 lightcolor = new LSL_Types.Vector3(rules.Data[idx++].ToString()); float intensity = (float)Convert.ToDouble(rules.Data[idx++]); float radius = (float)Convert.ToDouble(rules.Data[idx++]); float falloff = (float)Convert.ToDouble(rules.Data[idx++]); @@ -6895,10 +6895,10 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api { case 5: // DATA_SIM_POS if (info == null) - { - // ScriptSleep(1000); - return LLUUID.Zero.ToString(); - } + { + // ScriptSleep(1000); + return LLUUID.Zero.ToString(); + } reply = new LSL_Types.Vector3( info.RegionLocX * Constants.RegionSize, info.RegionLocY * Constants.RegionSize, @@ -6912,10 +6912,10 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api break; case 7: // DATA_SIM_RATING if (info == null) - { - // ScriptSleep(1000); - return LLUUID.Zero.ToString(); - } + { + // ScriptSleep(1000); + return LLUUID.Zero.ToString(); + } int access = info.RegionSettings.Maturity; if (access == 0) reply = "PG"; @@ -6928,7 +6928,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api reply = m_ScriptEngine.World.GetSimulatorVersion(); break; default: - // ScriptSleep(1000); + // ScriptSleep(1000); return LLUUID.Zero.ToString(); // Raise no event } LLUUID rq = LLUUID.Random(); @@ -6939,7 +6939,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api AsyncCommands. DataserverPlugin.DataserverReply(rq.ToString(), reply); - // ScriptSleep(1000); + // ScriptSleep(1000); return tid.ToString(); } catch(Exception e) @@ -7910,7 +7910,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api AsyncCommands. DataserverPlugin.DataserverReply(item.AssetID.ToString(), NotecardCache.GetLines(item.AssetID).ToString()); - // ScriptSleep(100); + // ScriptSleep(100); return tid.ToString(); } WithNotecard(item.AssetID, delegate (LLUUID id, AssetBase a) @@ -7924,7 +7924,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api DataserverPlugin.DataserverReply(id.ToString(), NotecardCache.GetLines(id).ToString()); }); - // ScriptSleep(100); + // ScriptSleep(100); return tid.ToString(); } } @@ -7948,7 +7948,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api AsyncCommands. DataserverPlugin.DataserverReply(item.AssetID.ToString(), NotecardCache.GetLine(item.AssetID, line)); - // ScriptSleep(100); + // ScriptSleep(100); return tid.ToString(); } WithNotecard(item.AssetID, delegate (LLUUID id, AssetBase a) @@ -7963,7 +7963,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api NotecardCache.GetLine(id, line)); }); - // ScriptSleep(100); + // ScriptSleep(100); return tid.ToString(); } } diff --git a/OpenSim/Region/ScriptEngine/XEngine/EventManager.cs b/OpenSim/Region/ScriptEngine/XEngine/EventManager.cs index 3a01dc6..d431286 100644 --- a/OpenSim/Region/ScriptEngine/XEngine/EventManager.cs +++ b/OpenSim/Region/ScriptEngine/XEngine/EventManager.cs @@ -89,7 +89,6 @@ namespace OpenSim.Region.ScriptEngine.XEngine det[0].Key = remoteClient.AgentId; det[0].Populate(myScriptEngine.World); - if (originalID == 0) { SceneObjectPart part = myScriptEngine.World.GetSceneObjectPart(localID); @@ -103,7 +102,7 @@ namespace OpenSim.Region.ScriptEngine.XEngine SceneObjectPart originalPart = myScriptEngine.World.GetSceneObjectPart(originalID); det[0].LinkNum = originalPart.LinkNum; } - + myScriptEngine.PostObjectEvent(localID, new EventParams( "touch_start", new Object[] { new LSL_Types.LSLInteger(1) }, det)); -- cgit v1.1