Beispiel #1
0
        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);
                }
            }
        }
Beispiel #2
0
        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);
            }
        }
Beispiel #3
0
        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);
                }
            }
        }