コード例 #1
0
        private bool GenerateFromExport(string csvPath, out List <PasswordEntry> entries)
        {
            entries = new List <PasswordEntry>();

            using (var parser = new TextFieldParser(csvPath))
            {
                parser.TextFieldType = FieldType.Delimited;
                parser.SetDelimiters(",");

                while (!parser.EndOfData)
                {
                    try
                    {
                        var fields = parser.ReadFields();
                        var entry  = new PasswordEntry();

                        if (!Uri.TryCreate(fields[0], UriKind.Absolute, out var uri) ||
                            !uri.IsAbsoluteUri || (uri.Scheme.ToLower() != "http" && uri.Scheme.ToLower() != "https") || string.IsNullOrWhiteSpace(uri.Host))
                        {
                            //invalid record
                            continue;
                        }

                        entry.Url      = uri;
                        entry.UserName = fields[1];
                        entry.Password = fields[2];
                        if (string.IsNullOrWhiteSpace(entry.Password))
                        {
                            continue;
                        }

                        entry.Note     = fields[3];
                        entry.Title    = string.IsNullOrWhiteSpace(fields[4]) ? uri.Host : fields[4];
                        entry.Group    = fields[5];
                        entry.Favorite = fields[6] == "1";

                        entries.Add(entry);
                    }
                    catch (MalformedLineException ex)
                    {
                        //we should have already validated the content, so this should never happen
                        Debug.Assert(false);
                    }
                }

                return(entries.Count > 0);
            }
        }
コード例 #2
0
 private dynamic Generate1PasswordEntry(string keyId, PasswordEntry entry)
 {
     return(new
     {
         //keyId,
         locationKey = entry.Url.Host,
         typeName = "webforms.WebForm",
         location = entry.Url.ToString(),
         uuid = Guid.NewGuid().ToString("N"),
         updatedAt = DateTime.UtcNow.ToUnixTimeMilliseconds(),
         createdAt = DateTime.UtcNow.ToUnixTimeMilliseconds(),
         title = entry.Title,
         securityLevel = "SL5",
         secureContents = new
         {
             fields = new[]
             {
                 new
                 {
                     type = "T",
                     //name = "username",
                     value = entry.UserName,
                     designation = "username"
                 },
                 new
                 {
                     type = "P",
                     //name = "password",
                     value = entry.Password,
                     designation = "password",
                 }
             }
         },
         notesPlain = entry.Note
     });
 }