private void GetSettings() { if (_settings == null) { Regex credentialsRegex = new Regex(Legion.Core.Settings.GetString("SettingsCredentialInsertionRegex")); string setting; object oSettings = Cache.Get(CACHE_TYPE, _serviceKey); if (oSettings != null) { _settings = (Dictionary <string, string>)oSettings; } else { _settings = new Dictionary <string, string>(StringComparer.OrdinalIgnoreCase); string resultcode = null; using (LegionLinqDataContext db = new LegionLinqDataContext(ConfigurationManager.ConnectionStrings["LegionConnectionString"].ToString())) { ISingleResult <xspGetServiceSettingsResult> settings = db.xspGetServiceSettings(_serviceKey, null, ref resultcode); foreach (xspGetServiceSettingsResult s in settings) { if (s.IsEncrypted) { Encryption.Packet packet = Modules.Encryption.Module.DecryptString(new Encryption.Packet() { IV = s.IV, CipherText = s.Value, }); setting = packet.ClearText; } else { setting = s.Value; } MatchCollection credentials = credentialsRegex.Matches(setting); foreach (Match credential in credentials) { setting = setting.Replace( credential.Groups["Credential"].Value, Credentials.Module.GetServiceCredential(_serviceId, credential.Groups["Name"].Value) ?? credential.Groups["Credential"].Value ); } _settings.Add(s.Name, setting); } } Cache.Add(CACHE_TYPE, _serviceKey, _settings); } } }
public static void UpdateServiceSetting(Request request, ReplyNode result, ErrorNode error) { int? id = Int32.Parse(request.ParameterSet["id"]); int? serviceid = (request.ParameterSet["serviceid"] == null ? null : (int?)Int32.Parse(request.ParameterSet["serviceid"])); string name = request.ParameterSet["name"]; string value = request.ParameterSet["value"]; bool? encrypted = (request.ParameterSet["encrypted"] == "true" ? true : false); string resultcode = null; using (LegionLinqDataContext db = new LegionLinqDataContext(request.Service.Settings["LegionConnectionString"])) { if (id == -1) { if (encrypted == true) { Encryption.Packet packet = Encryption.Module.EncryptString(new Encryption.Packet() { ClearText = value }); db.xspUpdateServiceSetting(ref id, serviceid, name, packet.IV, packet.CipherText, encrypted, ref resultcode); } else { db.xspUpdateServiceSetting(ref id, serviceid, name, null, value, encrypted, ref resultcode); } result.AddElement("id", id.ToString()); } else { if (encrypted == true) { Encryption.Packet packet = Encryption.Module.EncryptString(new Encryption.Packet() { ClearText = value }); db.xspUpdateServiceSetting(ref id, serviceid, name, packet.IV, packet.CipherText, encrypted, ref resultcode); } else { db.xspUpdateServiceSetting(ref id, serviceid, name, null, value, encrypted, ref resultcode); } } result.AddElement("resultcode", resultcode); } }
public static void GetServiceSettings(Request request, ReplyNode result, ErrorNode error) { int serviceid; string resultcode = null; XmlElement element, parent; if (request.ParameterSet["id"] != null && Int32.TryParse(request.ParameterSet["id"], out serviceid)) { using (LegionLinqDataContext db = new LegionLinqDataContext(request.Service.Settings["LegionConnectionString"])) { ISingleResult <xspGetServiceSettingsResult> settings = db.xspGetServiceSettings(null, serviceid, ref resultcode); parent = result.AddElement("settings"); foreach (xspGetServiceSettingsResult s in settings) { element = result.AddElement(parent, "setting"); result.AddElement(element, "id", s.Id.ToString()); result.AddElement(element, "name", s.Name); if (s.IsEncrypted) { Encryption.Packet packet = Encryption.Module.DecryptString(new Encryption.Packet() { IV = s.IV, CipherText = s.Value, }); result.AddElement(element, "value", packet.ClearText); result.AddElement(element, "encrypted", "true"); } else { result.AddElement(element, "value", s.Value); result.AddElement(element, "encrypted", "false"); } } result.AddElement(parent, "resultcode", resultcode); } } }