Update svn properties, formatting cleanup.
parent
086284da55
commit
3bf8858727
|
@ -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);
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 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.
|
||||
/// </summary>
|
||||
|
@ -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);
|
||||
|
||||
|
|
|
@ -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
|
|||
|
||||
/// <summary>
|
||||
/// 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*(?<scheme>\\w+)\\s*.*",
|
||||
RegexOptions.Compiled | RegexOptions.IgnoreCase);
|
||||
|
||||
|
||||
private static Regex basicParms = new Regex("^\\s*(?:\\w+)\\s+(?<pval>\\S+)\\s*",
|
||||
RegexOptions.Compiled | RegexOptions.IgnoreCase);
|
||||
|
||||
|
||||
private static Regex digestParm1 = new Regex("\\s*(?<parm>\\w+)\\s*=\\s*\"(?<pval>[^\"]+)\"",
|
||||
RegexOptions.Compiled | RegexOptions.IgnoreCase);
|
||||
|
||||
|
||||
private static Regex digestParm2 = new Regex("\\s*(?<parm>\\w+)\\s*=\\s*(?<pval>[^\\p{P}\\s]+)",
|
||||
RegexOptions.Compiled | RegexOptions.IgnoreCase);
|
||||
|
||||
|
||||
private static Regex reuserPass = new Regex("(?<user>[^:]+):(?<pass>[\\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
|
|||
}
|
||||
|
||||
/// <summary>
|
||||
/// 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.
|
||||
/// </summary>
|
||||
|
||||
internal bool IsAuthenticated
|
||||
{
|
||||
get
|
||||
{
|
||||
{
|
||||
if (Rest.Authenticate)
|
||||
{
|
||||
if (!authenticated)
|
||||
|
@ -258,31 +257,31 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory
|
|||
internal string[] PathNodes
|
||||
{
|
||||
get
|
||||
{
|
||||
{
|
||||
return pathNodes;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 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).
|
||||
/// </summary>
|
||||
|
||||
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.
|
||||
/// </summary>
|
||||
|
||||
|
@ -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
|
|||
}
|
||||
|
||||
/// <summary>
|
||||
/// 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
|
|||
/// <summary>
|
||||
/// 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...
|
||||
/// </summary>
|
||||
|
||||
|
@ -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
|
|||
}
|
||||
|
||||
/// <summary>
|
||||
/// Indicate a functionally-dependent conclusion to the
|
||||
/// Indicate a functionally-dependent conclusion to the
|
||||
/// request. See Rest.cs for a list of possible values.
|
||||
/// </summary>
|
||||
|
||||
|
@ -1023,7 +1022,7 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory
|
|||
/// <summary>
|
||||
/// 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.
|
||||
/// </summary>
|
||||
|
||||
|
@ -1057,7 +1056,7 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory
|
|||
}
|
||||
|
||||
/// <summary>
|
||||
/// 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.
|
||||
/// </summary>
|
||||
|
@ -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<response.Headers.Count;i++)
|
||||
{
|
||||
Rest.Log.DebugFormat("{0} Header[{1}] : {2}", MsgId, i,
|
||||
Rest.Log.DebugFormat("{0} Header[{1}] : {2}", MsgId, i,
|
||||
response.Headers.Get(i));
|
||||
}
|
||||
}
|
||||
|
@ -1404,7 +1403,7 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory
|
|||
// If we succeeded in getting a path, perform any
|
||||
// additional pre-processing required.
|
||||
|
||||
if (path != null)
|
||||
if (path != null)
|
||||
{
|
||||
if (Rest.ExtendedEscape)
|
||||
{
|
||||
|
@ -1442,14 +1441,14 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory
|
|||
{
|
||||
parameters = new string[0];
|
||||
}
|
||||
|
||||
|
||||
// Generate a debug list of the decoded parameters
|
||||
|
||||
if (Rest.DEBUG && prfxlen < path.Length-1)
|
||||
{
|
||||
Rest.Log.DebugFormat("{0} URI: Parameters: {1}", MsgId, path.Substring(prfxlen));
|
||||
for (int i = 0; i < parameters.Length; i++)
|
||||
{
|
||||
{
|
||||
Rest.Log.DebugFormat("{0} Parameter[{1}]: {2}", MsgId, i, parameters[i]);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -23,7 +23,7 @@
|
|||
* 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;
|
||||
|
@ -38,11 +38,9 @@ using Nini.Config;
|
|||
|
||||
namespace OpenSim.ApplicationPlugins.Rest.Inventory
|
||||
{
|
||||
|
||||
public class Rest
|
||||
{
|
||||
|
||||
internal static readonly log4net.ILog Log =
|
||||
internal static readonly log4net.ILog Log =
|
||||
log4net.LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
|
||||
|
||||
internal static bool DEBUG = Log.IsDebugEnabled;
|
||||
|
@ -77,7 +75,7 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory
|
|||
/// HTTP requires that status information be generated for PUT
|
||||
/// and POST opertaions. This is in support of that. The
|
||||
/// operation verb gets substituted into the first string,
|
||||
/// and the completion code is inserted into the tail. The
|
||||
/// and the completion code is inserted into the tail. The
|
||||
/// strings are put here to encourage consistency.
|
||||
/// </summary>
|
||||
|
||||
|
@ -88,7 +86,7 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory
|
|||
|
||||
static Rest()
|
||||
{
|
||||
HttpStatusDesc = new Dictionary<int,string>();
|
||||
HttpStatusDesc = new Dictionary<int,string>();
|
||||
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.
|
||||
/// </summary>
|
||||
|
||||
|
||||
// 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)
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -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
|
|||
{
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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
|
||||
{
|
||||
|
||||
/// <remarks>
|
||||
/// The class signature reveals the roles that RestHandler plays.
|
||||
///
|
||||
|
@ -74,10 +72,10 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory
|
|||
/// <summary>
|
||||
/// 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
|
|||
|
||||
/// <summary>
|
||||
/// 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);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 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;
|
||||
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
@ -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;
|
||||
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
@ -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);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -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
|
|||
+ "</body>"
|
||||
+ "</html>"
|
||||
;
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -112,7 +112,7 @@ namespace OpenSim.Framework
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Sometimes the circuitcode may not be known before setting up the connection
|
||||
/// </summary>
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -168,7 +168,7 @@ namespace OpenSim.Framework.Communications.Cache
|
|||
{
|
||||
if (userID == LLUUID.Zero)
|
||||
return;
|
||||
|
||||
|
||||
lock (m_userProfiles)
|
||||
{
|
||||
if (m_userProfiles.ContainsKey(userID))
|
||||
|
|
|
@ -617,9 +617,9 @@ namespace OpenSim.Framework.Communications.Capabilities
|
|||
|
||||
IMoneyModule mm = scene.RequestModuleInterface<IMoneyModule>();
|
||||
|
||||
if(mm != null)
|
||||
if (mm != null)
|
||||
{
|
||||
if(!mm.UploadCovered(client))
|
||||
if (!mm.UploadCovered(client))
|
||||
{
|
||||
client.SendAgentAlertMessage("Unable to upload asset. Insufficient funds.", false);
|
||||
|
||||
|
|
|
@ -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.
|
||||
/// </remarks>
|
||||
public GridInfoService(IConfigSource configSource)
|
||||
{
|
||||
|
@ -65,7 +65,7 @@ namespace OpenSim.Framework.Communications
|
|||
/// </summary>
|
||||
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())
|
||||
|
|
|
@ -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.")]
|
||||
|
|
|
@ -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<pathbase.Length; i++)
|
||||
{
|
||||
{
|
||||
searchquery += pathbase[i];
|
||||
if (pathbase.Length-1 != i)
|
||||
searchquery += "/";
|
||||
|
@ -609,7 +609,7 @@ namespace OpenSim.Framework.Servers
|
|||
//
|
||||
// [] = optional
|
||||
// /resource/UUID/action[/action]
|
||||
//
|
||||
//
|
||||
// now try to get the closest match to the reigstered path
|
||||
// at least for OGP, registered path would probably only consist of the /resource/
|
||||
|
||||
|
|
|
@ -107,20 +107,20 @@ namespace OpenSim.Framework.Servers
|
|||
{
|
||||
sb.Append(m_stats.Report());
|
||||
}
|
||||
|
||||
sb.Append(Environment.NewLine);
|
||||
|
||||
sb.Append(Environment.NewLine);
|
||||
sb.Append(GetThreadsReport());
|
||||
|
||||
m_log.Debug(sb);
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Get a report about the registered threads in this server.
|
||||
/// </summary>
|
||||
protected string GetThreadsReport()
|
||||
{
|
||||
StringBuilder sb = new StringBuilder();
|
||||
|
||||
|
||||
List<Thread> 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();
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Return a report about the uptime of this server
|
||||
|
@ -312,7 +312,7 @@ namespace OpenSim.Framework.Servers
|
|||
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Outputs to the console information about the region
|
||||
|
|
|
@ -160,7 +160,7 @@ namespace OpenSim.Grid.UserServer
|
|||
theUser.HomeRegion, m_config.GridServerURL,
|
||||
m_config.GridSendKey, m_config.GridRecvKey);
|
||||
}
|
||||
|
||||
|
||||
if (startLocationRequest == "last")
|
||||
{
|
||||
SimInfo =
|
||||
|
|
|
@ -34,7 +34,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
|||
{
|
||||
/// <summary>
|
||||
/// 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
|
||||
/// </summary>
|
||||
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();
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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();
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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<Scene> m_scene = new List<Scene>();
|
||||
|
||||
|
||||
private Dictionary<string, AgentCircuitData> CapsLoginID = new Dictionary<string, AgentCircuitData>();
|
||||
private Dictionary<LLUUID, OGPState> m_OGPState = new Dictionary<LLUUID, OGPState>();
|
||||
|
||||
|
||||
|
||||
#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)
|
||||
|
|
|
@ -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.
|
||||
/// </summary>
|
||||
public static readonly string TERRAINS_PATH = "terrains/";
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// The character the separates the uuid from extension information in an archived asset filename
|
||||
/// </summary>
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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)
|
||||
{
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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
|
||||
{
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
@ -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());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 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<FriendListItem> GetFriendList(LLUUID avatarID)
|
||||
|
@ -3089,7 +3067,6 @@ namespace OpenSim.Region.Environment.Scenes
|
|||
return LLUUID.Zero;
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 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<FriendListItem> 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
|
|||
/// <param name="Message">The Message being sent to the user</param>
|
||||
public void SendRegionMessageFromEstateTools(LLUUID FromAvatarID, LLUUID fromSessionID, String FromAvatarName, String Message)
|
||||
{
|
||||
|
||||
List<ScenePresence> 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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -231,7 +231,7 @@ namespace OpenSim.Region.Physics.Meshing
|
|||
{
|
||||
int[] result = getIndexListAsInt();
|
||||
pinnedIndex = GCHandle.Alloc(result, GCHandleType.Pinned);
|
||||
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -99,8 +99,8 @@ namespace OpenSim.Region.Physics.Meshing
|
|||
internal List<Angle> 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<Angle>();
|
||||
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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));
|
||||
|
|
Loading…
Reference in New Issue