From 87bddd32dfdb6ab43ef21703053935d3cda69c51 Mon Sep 17 00:00:00 2001 From: mingchen Date: Mon, 23 Jul 2007 19:30:33 +0000 Subject: *Added configuration plugin (OpenSim.Framework.Configuration.HTTP.dll) that fetches a file from a remote server *Right now, values are not saved back to the remote server, but that will be changed *Removed some warnings from invalid references that were not used anyways --- .../Configuration/HTTP/HTTPConfiguration.cs | 89 ++++++++++++++++++++++ 1 file changed, 89 insertions(+) create mode 100644 OpenSim/Framework/Configuration/HTTP/HTTPConfiguration.cs (limited to 'OpenSim/Framework/Configuration/HTTP/HTTPConfiguration.cs') diff --git a/OpenSim/Framework/Configuration/HTTP/HTTPConfiguration.cs b/OpenSim/Framework/Configuration/HTTP/HTTPConfiguration.cs new file mode 100644 index 0000000..c7d2c9c --- /dev/null +++ b/OpenSim/Framework/Configuration/HTTP/HTTPConfiguration.cs @@ -0,0 +1,89 @@ +using System; +using System.Collections.Generic; +using System.Net; +using System.IO; +using System.Text; + +using OpenSim.Framework.Configuration.Interfaces; + +namespace OpenSim.Framework.Configuration.HTTP +{ + public class HTTPConfiguration : IGenericConfig + { + RemoteConfigSettings remoteConfigSettings; + + XmlConfiguration xmlConfig; + + private string configFileName = ""; + + public HTTPConfiguration() + { + remoteConfigSettings = new RemoteConfigSettings("remoteconfig.xml"); + xmlConfig = new XmlConfiguration(); + } + + public void SetFileName(string fileName) + { + configFileName = fileName; + } + + public void LoadData() + { + try + { + StringBuilder sb = new StringBuilder(); + + byte[] buf = new byte[8192]; + HttpWebRequest request = (HttpWebRequest)WebRequest.Create(this.remoteConfigSettings.baseConfigURL + this.configFileName); + HttpWebResponse response = (HttpWebResponse)request.GetResponse(); + + Stream resStream = response.GetResponseStream(); + + string tempString = null; + int count = 0; + + do + { + count = resStream.Read(buf, 0, buf.Length); + if (count != 0) + { + tempString = Encoding.ASCII.GetString(buf, 0, count); + sb.Append(tempString); + } + } + while (count > 0); + LoadDataFromString(sb.ToString()); + } + catch (Exception e) + { + Console.MainLog.Instance.Warn("Unable to connect to remote configuration file (" + remoteConfigSettings.baseConfigURL + configFileName + "). Creating local file instead."); + xmlConfig.SetFileName(configFileName); + xmlConfig.LoadData(); + } + } + + public void LoadDataFromString(string data) + { + xmlConfig.LoadDataFromString(data); + + } + + public string GetAttribute(string attributeName) + { + return xmlConfig.GetAttribute(attributeName); + } + + public bool SetAttribute(string attributeName, string attributeValue) + { + return true; + } + + public void Commit() + { + } + + public void Close() + { + } + } +} -- cgit v1.1