コード例 #1
0
        private KeePassConnection GetKeePassConnection()
        {
            if (this.keePassConnection == null)
            {
                try
                {
                    Settings settings = this.SettingsManager.Load();
                    Logger.Instance.LogInfo("Loaded settings");

                    this.keePassConnection = new KeePassConnection(
                        settings.KeePassHost,
                        settings.KeePassPort,
                        settings.KeePassId,
                        settings.KeePassKey);
                    this.keePassConnection.Connect();

                    Logger.Instance.LogInfo("Connected to KeePassHttp");

                    if (settings.KeePassId == null || settings.KeePassKey == null)
                    {
                        this.keePassConnection.Associate();
                        settings.KeePassId  = this.keePassConnection.Id;
                        settings.KeePassKey = this.keePassConnection.Key;
                        this.SettingsManager.Save(settings);
                    }
                }
                catch (Exception ex)
                {
                    Logger.Instance.LogError("Exception caught: {0}", ex.Message);
                }
            }

            return(this.keePassConnection);
        }
コード例 #2
0
        private void FillPassword(string url, Dictionary <IHTMLElement, IHTMLElement> credentialsFields)
        {
            if (credentialsFields.Count > 0)
            {
                KeePassConnection keePassConnection = this.GetKeePassConnection();

                if (keePassConnection != null)
                {
                    Credentials credentials = null;
                    if (!credentialsCache.TryGetValue(url, out credentials))
                    {
                        Credentials[] result = keePassConnection.RetrieveCredentials(url);
                        if (result != null && result.Length > 0)
                        {
                            credentials           = result[0];
                            credentialsCache[url] = credentials;
                        }
                    }

                    if (credentials != null)
                    {
                        foreach (var credentialsFieldPair in credentialsFields)
                        {
                            var passwordField = credentialsFieldPair.Key as IHTMLInputElement;
                            var usernameField = credentialsFieldPair.Value as IHTMLInputElement;

                            if (passwordField != null)
                            {
                                passwordField.value = credentials.Password;
                            }

                            if (usernameField != null)
                            {
                                usernameField.value = credentials.UserName;
                            }
                        }
                    }
                }
            }
        }