From 3436961bb5c01d659d09be134368f4f69460cef9 Mon Sep 17 00:00:00 2001
From: MW
Date: Sat, 26 May 2007 13:40:19 +0000
Subject: Start of rewrite 5279!
---
.../OpenGrid.Framework.Data/GridData.cs | 83 ++++++++++++++++
.../OpenGrid.Framework.Data/IniConfig.cs | 73 ++++++++++++++
.../OpenGrid.Framework.Data.csproj | 107 +++++++++++++++++++++
.../OpenGrid.Framework.Data.csproj.user | 12 +++
.../OpenGrid.Framework.Data.dll.build | 47 +++++++++
.../Properties/AssemblyInfo.cs | 35 +++++++
.../OpenGrid.Framework.Data/SimProfileData.cs | 84 ++++++++++++++++
.../OpenGrid.Framework.Data/UserData.cs | 101 +++++++++++++++++++
.../OpenGrid.Framework.Data/UserProfileData.cs | 54 +++++++++++
9 files changed, 596 insertions(+)
create mode 100644 OpenGridServices/OpenGrid.Framework.Data/GridData.cs
create mode 100644 OpenGridServices/OpenGrid.Framework.Data/IniConfig.cs
create mode 100644 OpenGridServices/OpenGrid.Framework.Data/OpenGrid.Framework.Data.csproj
create mode 100644 OpenGridServices/OpenGrid.Framework.Data/OpenGrid.Framework.Data.csproj.user
create mode 100644 OpenGridServices/OpenGrid.Framework.Data/OpenGrid.Framework.Data.dll.build
create mode 100644 OpenGridServices/OpenGrid.Framework.Data/Properties/AssemblyInfo.cs
create mode 100644 OpenGridServices/OpenGrid.Framework.Data/SimProfileData.cs
create mode 100644 OpenGridServices/OpenGrid.Framework.Data/UserData.cs
create mode 100644 OpenGridServices/OpenGrid.Framework.Data/UserProfileData.cs
(limited to 'OpenGridServices/OpenGrid.Framework.Data')
diff --git a/OpenGridServices/OpenGrid.Framework.Data/GridData.cs b/OpenGridServices/OpenGrid.Framework.Data/GridData.cs
new file mode 100644
index 0000000..6dad37e
--- /dev/null
+++ b/OpenGridServices/OpenGrid.Framework.Data/GridData.cs
@@ -0,0 +1,83 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace OpenGrid.Framework.Data
+{
+ public enum DataResponse
+ {
+ RESPONSE_OK,
+ RESPONSE_AUTHREQUIRED,
+ RESPONSE_INVALIDCREDENTIALS,
+ RESPONSE_ERROR
+ }
+
+ ///
+ /// A standard grid interface
+ ///
+ public interface IGridData
+ {
+ ///
+ /// Returns a sim profile from a regionHandle
+ ///
+ /// A 64bit Region Handle
+ /// A simprofile
+ SimProfileData GetProfileByHandle(ulong regionHandle);
+
+ ///
+ /// Returns a sim profile from a UUID
+ ///
+ /// A 128bit UUID
+ /// A sim profile
+ SimProfileData GetProfileByLLUUID(libsecondlife.LLUUID UUID);
+
+ ///
+ /// Returns all profiles within the specified range
+ ///
+ /// Minimum sim coordinate (X)
+ /// Minimum sim coordinate (Y)
+ /// Maximum sim coordinate (X)
+ /// Maximum sim coordinate (Y)
+ /// An array containing all the sim profiles in the specified range
+ SimProfileData[] GetProfilesInRange(uint Xmin, uint Ymin, uint Xmax, uint Ymax);
+
+ ///
+ /// Authenticates a sim by use of it's recv key.
+ /// WARNING: Insecure
+ ///
+ /// The UUID sent by the sim
+ /// The regionhandle sent by the sim
+ /// The recieving key sent by the sim
+ /// Whether the sim has been authenticated
+ bool AuthenticateSim(libsecondlife.LLUUID UUID, ulong regionHandle, string simrecvkey);
+
+ ///
+ /// Initialises the interface
+ ///
+ void Initialise();
+
+ ///
+ /// Closes the interface
+ ///
+ void Close();
+
+ ///
+ /// The plugin being loaded
+ ///
+ /// A string containing the plugin name
+ string getName();
+
+ ///
+ /// The plugins version
+ ///
+ /// A string containing the plugin version
+ string getVersion();
+
+ ///
+ /// Adds a new profile to the database
+ ///
+ /// The profile to add
+ /// RESPONSE_OK if successful, error if not.
+ DataResponse AddProfile(SimProfileData profile);
+ }
+}
diff --git a/OpenGridServices/OpenGrid.Framework.Data/IniConfig.cs b/OpenGridServices/OpenGrid.Framework.Data/IniConfig.cs
new file mode 100644
index 0000000..58597d2
--- /dev/null
+++ b/OpenGridServices/OpenGrid.Framework.Data/IniConfig.cs
@@ -0,0 +1,73 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.IO;
+using System.Text.RegularExpressions;
+
+/*
+ Taken from public code listing at by Alex Pinsker
+ http://alexpinsker.blogspot.com/2005/12/reading-ini-file-from-c_113432097333021549.html
+ */
+
+namespace OpenGrid.Framework.Data
+{
+ ///
+ /// Parse settings from ini-like files
+ ///
+ public class IniFile
+ {
+ static IniFile()
+ {
+ _iniKeyValuePatternRegex = new Regex(
+ @"((\s)*(?([^\=^\s^\n]+))[\s^\n]*
+ # key part (surrounding whitespace stripped)
+ \=
+ (\s)*(?([^\n^\s]+(\n){0,1})))
+ # value part (surrounding whitespace stripped)
+ ",
+ RegexOptions.IgnorePatternWhitespace |
+ RegexOptions.Compiled |
+ RegexOptions.CultureInvariant);
+ }
+ static private Regex _iniKeyValuePatternRegex;
+
+ public IniFile(string iniFileName)
+ {
+ _iniFileName = iniFileName;
+ }
+
+ public string ParseFileReadValue(string key)
+ {
+ using (StreamReader reader =
+ new StreamReader(_iniFileName))
+ {
+ do
+ {
+ string line = reader.ReadLine();
+ Match match =
+ _iniKeyValuePatternRegex.Match(line);
+ if (match.Success)
+ {
+ string currentKey =
+ match.Groups["Key"].Value as string;
+ if (currentKey != null &&
+ currentKey.Trim().CompareTo(key) == 0)
+ {
+ string value =
+ match.Groups["Value"].Value as string;
+ return value;
+ }
+ }
+
+ }
+ while (reader.Peek() != -1);
+ }
+ return null;
+ }
+
+ public string IniFileName
+ {
+ get { return _iniFileName; }
+ } private string _iniFileName;
+ }
+}
diff --git a/OpenGridServices/OpenGrid.Framework.Data/OpenGrid.Framework.Data.csproj b/OpenGridServices/OpenGrid.Framework.Data/OpenGrid.Framework.Data.csproj
new file mode 100644
index 0000000..b033c6c
--- /dev/null
+++ b/OpenGridServices/OpenGrid.Framework.Data/OpenGrid.Framework.Data.csproj
@@ -0,0 +1,107 @@
+
+
+ Local
+ 8.0.50727
+ 2.0
+ {62CDF671-0000-0000-0000-000000000000}
+ Debug
+ AnyCPU
+
+
+
+ OpenGrid.Framework.Data
+ JScript
+ Grid
+ IE50
+ false
+ Library
+
+ OpenGrid.Framework.Data
+
+
+
+
+
+ False
+ 285212672
+ False
+
+
+ TRACE;DEBUG
+
+ True
+ 4096
+ False
+ ..\..\bin\
+ False
+ False
+ False
+ 4
+
+
+
+ False
+ 285212672
+ False
+
+
+ TRACE
+
+ False
+ 4096
+ True
+ ..\..\bin\
+ False
+ False
+ False
+ 4
+
+
+
+
+ System.dll
+ False
+
+
+ System.Xml.dll
+ False
+
+
+ System.Data.dll
+ False
+
+
+ ..\..\bin\libsecondlife.dll
+ False
+
+
+
+
+
+
+ Code
+
+
+ Code
+
+
+ Code
+
+
+ Code
+
+
+ Code
+
+
+ Code
+
+
+
+
+
+
+
+
+
+
diff --git a/OpenGridServices/OpenGrid.Framework.Data/OpenGrid.Framework.Data.csproj.user b/OpenGridServices/OpenGrid.Framework.Data/OpenGrid.Framework.Data.csproj.user
new file mode 100644
index 0000000..d47d65d
--- /dev/null
+++ b/OpenGridServices/OpenGrid.Framework.Data/OpenGrid.Framework.Data.csproj.user
@@ -0,0 +1,12 @@
+
+
+ Debug
+ AnyCPU
+ C:\New Folder\second-life-viewer\opensim-dailys2\opensim15-07\bin\
+ 8.0.50727
+ ProjectFiles
+ 0
+
+
+
+
diff --git a/OpenGridServices/OpenGrid.Framework.Data/OpenGrid.Framework.Data.dll.build b/OpenGridServices/OpenGrid.Framework.Data/OpenGrid.Framework.Data.dll.build
new file mode 100644
index 0000000..281295f
--- /dev/null
+++ b/OpenGridServices/OpenGrid.Framework.Data/OpenGrid.Framework.Data.dll.build
@@ -0,0 +1,47 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/OpenGridServices/OpenGrid.Framework.Data/Properties/AssemblyInfo.cs b/OpenGridServices/OpenGrid.Framework.Data/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..1446673
--- /dev/null
+++ b/OpenGridServices/OpenGrid.Framework.Data/Properties/AssemblyInfo.cs
@@ -0,0 +1,35 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("OpenGrid.Framework.Data")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("OpenGrid.Framework.Data")]
+[assembly: AssemblyCopyright("Copyright © 2007")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible
+// to COM components. If you need to access a type in this assembly from
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("3a711c34-b0c0-4264-b0fe-f366eabf9d7b")]
+
+// Version information for an assembly consists of the following four values:
+//
+// Major Version
+// Minor Version
+// Build Number
+// Revision
+//
+// You can specify all the values or you can default the Revision and Build Numbers
+// by using the '*' as shown below:
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/OpenGridServices/OpenGrid.Framework.Data/SimProfileData.cs b/OpenGridServices/OpenGrid.Framework.Data/SimProfileData.cs
new file mode 100644
index 0000000..c66610e
--- /dev/null
+++ b/OpenGridServices/OpenGrid.Framework.Data/SimProfileData.cs
@@ -0,0 +1,84 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace OpenGrid.Framework.Data
+{
+ public class SimProfileData
+ {
+ ///
+ /// The name of the region
+ ///
+ public string regionName = "";
+
+ ///
+ /// A 64-bit number combining map position into a (mostly) unique ID
+ ///
+ public ulong regionHandle;
+
+ ///
+ /// OGS/OpenSim Specific ID for a region
+ ///
+ public libsecondlife.LLUUID UUID;
+
+ ///
+ /// Coordinates of the region
+ ///
+ public uint regionLocX;
+ public uint regionLocY;
+ public uint regionLocZ; // Reserved (round-robin, layers, etc)
+
+ ///
+ /// Authentication secrets
+ ///
+ /// Not very secure, needs improvement.
+ public string regionSendKey = "";
+ public string regionRecvKey = "";
+ public string regionSecret = "";
+
+ ///
+ /// Whether the region is online
+ ///
+ public bool regionOnline;
+
+ ///
+ /// Information about the server that the region is currently hosted on
+ ///
+ public string serverIP = "";
+ public uint serverPort;
+ public string serverURI = "";
+
+ ///
+ /// Set of optional overrides. Can be used to create non-eulicidean spaces.
+ ///
+ public ulong regionNorthOverrideHandle;
+ public ulong regionSouthOverrideHandle;
+ public ulong regionEastOverrideHandle;
+ public ulong regionWestOverrideHandle;
+
+ ///
+ /// Optional: URI Location of the region database
+ ///
+ /// Used for floating sim pools where the region data is not nessecarily coupled to a specific server
+ public string regionDataURI = "";
+
+ ///
+ /// Region Asset Details
+ ///
+ public string regionAssetURI = "";
+ public string regionAssetSendKey = "";
+ public string regionAssetRecvKey = "";
+
+ ///
+ /// Region Userserver Details
+ ///
+ public string regionUserURI = "";
+ public string regionUserSendKey = "";
+ public string regionUserRecvKey = "";
+
+ ///
+ /// Region Map Texture Asset
+ ///
+ public libsecondlife.LLUUID regionMapTextureID = new libsecondlife.LLUUID("00000000-0000-0000-9999-000000000006");
+ }
+}
diff --git a/OpenGridServices/OpenGrid.Framework.Data/UserData.cs b/OpenGridServices/OpenGrid.Framework.Data/UserData.cs
new file mode 100644
index 0000000..4802c5f
--- /dev/null
+++ b/OpenGridServices/OpenGrid.Framework.Data/UserData.cs
@@ -0,0 +1,101 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+using libsecondlife;
+
+namespace OpenGrid.Framework.Data
+{
+ public interface IUserData
+ {
+ ///
+ /// Returns a user profile from a database via their UUID
+ ///
+ /// The accounts UUID
+ /// The user data profile
+ UserProfileData getUserByUUID(LLUUID user);
+
+ ///
+ /// Returns a users profile by searching their username
+ ///
+ /// The users username
+ /// The user data profile
+ UserProfileData getUserByName(string name);
+
+ ///
+ /// Returns a users profile by searching their username parts
+ ///
+ /// Account firstname
+ /// Account lastname
+ /// The user data profile
+ UserProfileData getUserByName(string fname, string lname);
+
+ ///
+ /// Returns the current agent for a user searching by it's UUID
+ ///
+ /// The users UUID
+ /// The current agent session
+ UserAgentData getAgentByUUID(LLUUID user);
+
+ ///
+ /// Returns the current session agent for a user searching by username
+ ///
+ /// The users account name
+ /// The current agent session
+ UserAgentData getAgentByName(string name);
+
+ ///
+ /// Returns the current session agent for a user searching by username parts
+ ///
+ /// The users first account name
+ /// The users account surname
+ /// The current agent session
+ UserAgentData getAgentByName(string fname, string lname);
+
+ ///
+ /// Adds a new User profile to the database
+ ///
+ /// UserProfile to add
+ void addNewUserProfile(UserProfileData user);
+
+ ///
+ /// Adds a new agent to the database
+ ///
+ /// The agent to add
+ void addNewUserAgent(UserAgentData agent);
+
+ ///
+ /// Attempts to move currency units between accounts (NOT RELIABLE / TRUSTWORTHY. DONT TRY RUN YOUR OWN CURRENCY EXCHANGE WITH REAL VALUES)
+ ///
+ /// The account to transfer from
+ /// The account to transfer to
+ /// The amount to transfer
+ /// Successful?
+ bool moneyTransferRequest(LLUUID from, LLUUID to, uint amount);
+
+ ///
+ /// Attempts to move inventory between accounts, if inventory is copyable it will be copied into the target account.
+ ///
+ /// User to transfer from
+ /// User to transfer to
+ /// Specified inventory item
+ /// Successful?
+ bool inventoryTransferRequest(LLUUID from, LLUUID to, LLUUID inventory);
+
+ ///
+ /// Returns the plugin version
+ ///
+ /// Plugin version in MAJOR.MINOR.REVISION.BUILD format
+ string getVersion();
+
+ ///
+ /// Returns the plugin name
+ ///
+ /// Plugin name, eg MySQL User Provider
+ string getName();
+
+ ///
+ /// Initialises the plugin (artificial constructor)
+ ///
+ void Initialise();
+ }
+}
diff --git a/OpenGridServices/OpenGrid.Framework.Data/UserProfileData.cs b/OpenGridServices/OpenGrid.Framework.Data/UserProfileData.cs
new file mode 100644
index 0000000..3f42762
--- /dev/null
+++ b/OpenGridServices/OpenGrid.Framework.Data/UserProfileData.cs
@@ -0,0 +1,54 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+using libsecondlife;
+
+namespace OpenGrid.Framework.Data
+{
+ public class UserProfileData
+ {
+ public LLUUID UUID;
+ public string username; // The configurable part of the users username
+ public string surname; // The users surname (can be used to indicate user class - eg 'Test User' or 'Test Admin')
+
+ public string passwordHash; // Hash of the users password
+ public string passwordSalt; // Salt for the users password
+
+ public ulong homeRegion; // RegionHandle of home
+ public LLVector3 homeLocation; // Home Location inside the sim
+ public LLVector3 homeLookAt; // Coordinates where the user is looking
+
+
+ public int created; // UNIX Epoch Timestamp (User Creation)
+ public int lastLogin; // UNIX Epoch Timestamp (Last Login Time)
+
+ public string userInventoryURI; // URI to inventory server for this user
+ public string userAssetURI; // URI to asset server for this user
+
+ public uint profileCanDoMask; // Profile window "I can do" mask
+ public uint profileWantDoMask; // Profile window "I want to" mask
+
+ public string profileAboutText; // My about window text
+ public string profileFirstText; // First Life Text
+
+ public LLUUID profileImage; // My avatars profile image
+ public LLUUID profileFirstImage; // First-life image
+ public UserAgentData currentAgent; // The users last agent
+ }
+
+ public class UserAgentData
+ {
+ public LLUUID UUID; // Account ID
+ public string agentIP; // The IP of the agent
+ public uint agentPort; // The port of the agent
+ public bool agentOnline; // The online status of the agent
+ public LLUUID sessionID; // The session ID for the agent (used by client)
+ public LLUUID secureSessionID; // The secure session ID for the agent (used by client)
+ public LLUUID regionID; // The region ID the agent occupies
+ public int loginTime; // EPOCH based Timestamp
+ public int logoutTime; // Timestamp or 0 if N/A
+ public LLUUID currentRegion; // UUID of the users current region
+ public ulong currentHandle; // RegionHandle of the users current region
+ public LLVector3 currentPos; // Current position in the region
+ }
+}
--
cgit v1.1