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); }
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; } } } } } }