public SecureItem ToSecureItem() { if (url.Equals(@"http://sn")) { var dict = GetExtraAsDict(); var note = IsPlainNote() ? new PlainSpecialNote() : SpecialNoteFactory.GetSpecialNote(dict); return(note.GetSecureItem(this, dict)); } else { // login item PBSubType.PasswordVault.Login data = new PBSubType.PasswordVault.Login(); data.Url = url; data.UserName = username; data.Password = password; data.Notes = extra; data.SiteName = name; return(data.GetSecureItem()); } return(null); }
protected override void AddParsedItemInternal(List <SecureItem> secureItems, List <string> messages, RoboFormData rdata) { if (rdata == null) { throw new ArgumentNullException("rdata"); } if (secureItems == null) { throw new ArgumentNullException("secureItems"); } if (messages == null) { throw new ArgumentNullException("messages"); } if ((rdata.IsDictionary) && (rdata.Data.ContainsKey("username")) /*&& (rdata.data.ContainsKey("password"))*/) { PBSubType.PasswordVault.Login loginData = new PBSubType.PasswordVault.Login(); loginData.Url = rdata.SubCaption; loginData.UserName = Helpers.GetValue(rdata.Data, "username"); loginData.Password = Helpers.GetValue(rdata.Data, "password"); //loginData.Notes = ""; loginData.SiteName = rdata.Caption; secureItems.Add(loginData.GetSecureItem()); } else { PBSubType.PersonalInfo.SecureNotes loginNoteData = new PBSubType.PersonalInfo.SecureNotes(); loginNoteData.Title = rdata.Caption; var notetext = string.IsNullOrEmpty(rdata.SubCaption) ? "" : rdata.SubCaption + "; "; if (rdata.IsDictionary) { foreach (KeyValuePair <string, string> data in rdata.Data) { notetext += data.Key.ToUpperInvariant() + ": " + data.Value + "; "; } } else { foreach (string note in rdata.DataList) { notetext += note + " "; } } loginNoteData.Notes = notetext.Trim(); secureItems.Add(loginNoteData.GetSecureItem()); } }
protected override void AddParsedItemInternal(List <SecureItem> secureItems, List <string> messages, JObject jsonData) { if (jsonData == null) { throw new System.ArgumentNullException("jsonData"); } if (secureItems == null) { throw new System.ArgumentNullException("secureItems"); } if (messages == null) { throw new System.ArgumentNullException("messages"); } PBSubType.PasswordVault.Login data = new PBSubType.PasswordVault.Login(); data.SiteName = (string)jsonData["title"]; data.Url = (string)jsonData["location"]; data.UserName = (string)jsonData["secureContents"]["fields"][0]["value"]; data.Password = (string)jsonData["secureContents"]["fields"][1]["value"]; data.Notes = ""; //tags if (jsonData["openContents"]["tags"] != null) { int tagsCnt = jsonData["openContents"]["tags"].Count(); var tags = jsonData["openContents"]["tags"]; for (int i = 0; i < tagsCnt; i++) { data.Notes += (string)tags[i] + " "; } } secureItems.Add(data.GetSecureItem()); }
protected override ImportFromAppResult ImportInternal(FileImportArgs args) { if (args == null) { throw new ArgumentNullException("args"); } var res = new ImportFromAppResult(); string[] file; try { file = System.IO.File.ReadAllLines(args.FilePath); } catch { throw new System.IO.FileLoadException(string.Format(CultureInfo.InvariantCulture, "Error while loading file '{0}'.", args.FilePath)); } int lncnt = 0; string[] fline; // dashlane export format rules: no rule foreach (string fileLine in file) { lncnt++; try { /*lineId = fileLine.Substring(0, fileLine.IndexOf(',') - 1).Trim(); * csvLine = fileLine.Substring(fileLine.IndexOf(',') + 1);*/ fline = fileLine.Substring(1, fileLine.Length - 2).Replace(@""",""", Environment.NewLine).Split(new string[] { Environment.NewLine }, StringSplitOptions.None); if ((fileLine.Trim().Length == 0)) { continue; } else if ((fline.Count() == 5) && (!IsPidLike(fline[0].Trim())) /*&& (fline[1].Trim().IndexOf('.') >= 0)*/) // may be url login { // eg. "rsg2","rsg.ba","ruspasbos","rusPasbos.7","vijesti" if (fline[0].Trim().ToUpper(CultureInfo.InvariantCulture).IndexOf("PAYPAL", StringComparison.Ordinal) >= 0) { var data = new PBSubType.DigitalWallet.PayPal(); data.PaypalNickname = fline[0].Trim(); data.Username = fline[2].Trim(); data.Password = fline[3].Trim(); data.PaypalNotes = fline[4].Trim(); res.SecureItems.Add(data.GetSecureItem()); } else { var data = new PBSubType.PasswordVault.Login(); data.SiteName = fline[0].Trim(); data.UserName = fline[2].Trim(); data.Password = fline[3].Trim(); data.Url = fline[1].Trim(); data.Notes = fline[4].Trim(); if (string.IsNullOrWhiteSpace(data.SiteName)) { data.SiteName = data.Url; } res.SecureItems.Add(data.GetSecureItem()); } } else if ((fline.Count() == 6) && (!IsPidLike(fline[0].Trim())) /*&& (fline[1].Trim().IndexOf('.') >= 0)*/) // may be url login { var data = new PBSubType.PasswordVault.Login(); data.SiteName = fline[0].Trim(); data.UserName = fline[2].Trim(); data.Password = fline[4].Trim(); data.Url = fline[1].Trim(); data.Notes = fline[4].Trim(); if (string.IsNullOrWhiteSpace(data.SiteName)) { data.SiteName = data.Url; } res.SecureItems.Add(data.GetSecureItem()); } else if ((fline.Count() == 1) && (new Common().IsEmailValid(fline[0].Trim()))) // email { var data = new PBSubType.PersonalInfo.Email(); data.NickName = fline[0].Trim(); data.Address = fline[0].Trim(); res.SecureItems.Add(data.GetSecureItem()); } else if ((fline.Count() >= 3) && (IsPhoneLikeLineId(fline[0].Trim()))) { var data = new PBSubType.PersonalInfo.PhoneNumber(); data.Nickname = fline[0].Trim(); data.Number = fline[1].Trim(); data.Notes = ""; for (int i = 2; i < fline.Count(); i++) { if (fline[i].Trim().Length != 0) { data.Notes += fline[i].Trim() + " "; } } res.SecureItems.Add(data.GetSecureItem()); } else if (!IsPidLike(fline[0].Trim())) { res.ImportMessages.Add(string.Format(CultureInfo.InvariantCulture, "Input file:{0}. Error in line:{1}.", args.FilePath, lncnt)); } else { res.ImportMessages.Add(string.Format(CultureInfo.InvariantCulture, "Input file:{0}. Error in line:{1}.", args.FilePath, lncnt)); } } catch (Exception ex) { if (ex is IndexOutOfRangeException || ex is ArgumentException || ex is NullReferenceException) { res.ImportMessages.Add(string.Format(CultureInfo.InvariantCulture, "Input file:{0}. Error in line:{1}.", args.FilePath, lncnt)); } else { throw; } } } return(res); }
protected override PasswordBoss.ImportFromAppResult ImportInternal(PasswordBoss.FileImportArgs args) { if (args == null) { throw new ArgumentNullException("args"); } var res = new ImportFromAppResult(); string[] file; try { file = System.IO.File.ReadAllLines(args.FilePath); } catch { throw new System.IO.FileLoadException(string.Format(CultureInfo.InvariantCulture, "Error while loading file '{0}'.", args.FilePath)); } int lncnt = 0; string[] fline; // "Account","Login Name","Password","Web Site","Comments" KeePass row structure foreach (string fileLine in file) { lncnt++; try { fline = fileLine.Substring(1, fileLine.Length - 2).Replace(@""",""", Environment.NewLine).Split(new string[] { Environment.NewLine }, StringSplitOptions.None); if ((fileLine.Trim().Length == 0) || (fileLine.Trim() == @"""Account"",""Login Name"",""Password"",""Web Site"",""Comments""")) { continue; } else { PBSubType.PasswordVault.Login data = new PBSubType.PasswordVault.Login(); data.SiteName = fline[0].Trim(); // Account data.UserName = fline[1].Trim(); //Login Name data.Password = fline[2].Trim(); //Password data.Url = fline[3].Trim(); //Web Site data.Notes = fline[4].Trim(); //Comments res.SecureItems.Add(data.GetSecureItem()); } } catch (Exception ex) { if (ex is IndexOutOfRangeException || ex is ArgumentException || ex is NullReferenceException) { res.ImportMessages.Add(string.Format(CultureInfo.InvariantCulture, "Input file:{0}. Error in line:{1}.", args.FilePath, lncnt)); } else { throw; } } } return(res); }