| 46 |
public int HttpPort = 9001; |
public int HttpPort = 9001; |
| 47 |
public HttpServer HttpServer; |
public HttpServer HttpServer; |
| 48 |
|
|
| 49 |
public IMetadataProvider MethodMetadata; |
public IMetadataProvider MetadataProvider; |
| 50 |
public IDataProvider MethodData; |
public IDataProvider DataProvider; |
| 51 |
public ICreateAssetProvider MethodCreateAsset; |
public ICreateAssetProvider CreateAssetProvider; |
| 52 |
|
|
| 53 |
public AssetServer() |
public AssetServer() |
| 54 |
{ |
{ |
| 66 |
references.Add("OpenMetaverse.dll"); |
references.Add("OpenMetaverse.dll"); |
| 67 |
references.Add("AssetServer.exe"); |
references.Add("AssetServer.exe"); |
| 68 |
|
|
| 69 |
List<FieldInfo> assignables = GetInterfaces(); |
List<FieldInfo> assignables = ExtensionLoader<AssetServer>.GetInterfaces(this); |
| 70 |
ExtensionLoader<AssetServer>.LoadAllExtensions(Assembly.GetExecutingAssembly(), |
ExtensionLoader<AssetServer>.LoadAllExtensions(Assembly.GetExecutingAssembly(), |
| 71 |
AppDomain.CurrentDomain.BaseDirectory, this, references, |
AppDomain.CurrentDomain.BaseDirectory, this, references, |
| 72 |
"AssetServer.*.dll", "AssetServer.*.cs", this, assignables); |
"AssetServer.*.dll", "AssetServer.*.cs", this, assignables); |
| 97 |
extension.Stop(); |
extension.Stop(); |
| 98 |
} |
} |
| 99 |
|
|
| 100 |
|
if (HttpServer != null) |
| 101 |
HttpServer.Stop(); |
HttpServer.Stop(); |
| 102 |
} |
} |
| 103 |
|
|
|
FieldInfo GetInterfaceInfo(Type owner, string memberName) |
|
|
{ |
|
|
FieldInfo fieldInfo = owner.GetField(memberName); |
|
|
if (fieldInfo.FieldType.IsInterface) |
|
|
return fieldInfo; |
|
|
else |
|
|
return null; |
|
|
} |
|
|
|
|
|
List<FieldInfo> GetInterfaces() |
|
|
{ |
|
|
List<FieldInfo> interfaces = new List<FieldInfo>(); |
|
|
|
|
|
foreach (FieldInfo field in this.GetType().GetFields()) |
|
|
{ |
|
|
if (field.FieldType.IsInterface) |
|
|
interfaces.Add(field); |
|
|
} |
|
|
|
|
|
return interfaces; |
|
|
} |
|
|
|
|
| 104 |
void InitHttpServer(int port, bool ssl) |
void InitHttpServer(int port, bool ssl) |
| 105 |
{ |
{ |
| 106 |
HttpServer = new HttpServer(HttpPort, ssl); |
HttpServer = new HttpServer(HttpPort, ssl); |
|
|
|
|
// Asset request, regex to match UUIDs |
|
|
HttpServer.AddHandler("get", null, @"^/[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}", |
|
|
new HttpServer.HttpRequestCallback(RequestHandler)); |
|
|
// Asset creation |
|
|
HttpServer.AddHandler("post", null, "^/createasset", new HttpServer.HttpRequestCallback(CreateHandler)); |
|
|
|
|
| 107 |
HttpServer.Start(); |
HttpServer.Start(); |
| 108 |
|
|
| 109 |
Logger.Log("Asset server is listening on port " + port, Helpers.LogLevel.Info); |
Logger.Log("Asset server is listening on port " + port, Helpers.LogLevel.Info); |
| 124 |
switch (method) |
switch (method) |
| 125 |
{ |
{ |
| 126 |
case "metadata": |
case "metadata": |
| 127 |
MethodMetadata.FetchMetadata(assetID, context); |
//MethodMetadata.FetchMetadata(assetID, context); |
| 128 |
break; |
break; |
| 129 |
case "data": |
case "data": |
| 130 |
MethodData.FetchData(assetID, context); |
//MethodData.FetchData(assetID, context); |
| 131 |
break; |
break; |
| 132 |
} |
} |
| 133 |
|
|
| 222 |
|
|
| 223 |
if (llsdString.Length > 0 && base64String.Length > 0) |
if (llsdString.Length > 0 && base64String.Length > 0) |
| 224 |
{ |
{ |
| 225 |
LLSD metadata = LLSDParser.DeserializeXml(llsdString.ToString()); |
OSD metadata = OSDParser.DeserializeLLSDXml(llsdString.ToString()); |
| 226 |
byte[] assetData = Convert.FromBase64String(base64String.ToString()); |
byte[] assetData = Convert.FromBase64String(base64String.ToString()); |
| 227 |
|
|
| 228 |
MethodCreateAsset.CreateAsset(metadata, assetData, context); |
//MethodCreateAsset.CreateAsset(metadata, assetData, context); |
| 229 |
} |
} |
| 230 |
else |
else |
| 231 |
{ |
{ |