1
0
mirror of https://github.com/bitwarden/browser.git synced 2024-09-12 01:48:21 +02:00

dashlane csv importer (#1)

This commit is contained in:
Kyle Spearrin 2016-12-22 01:33:47 -05:00
parent 6cbd618fb8
commit f86bce970e
2 changed files with 120 additions and 1 deletions

View File

@ -53,6 +53,9 @@
case 'pwsafexml':
importPasswordSafeXml(file, success, error);
break;
case 'dashlanecsv':
importDashlaneCsv(file, success, error);
break;
default:
error();
break;
@ -1014,7 +1017,7 @@
uri: null,
password: null,
username: null,
notes: note && note !== '' ? note : null,
notes: note && note !== '' ? note : null
};
if (row.length > 2 && (row.length % 2) === 0) {
@ -1154,5 +1157,120 @@
};
}
function importDashlaneCsv(file, success, error) {
Papa.parse(file, {
encoding: 'UTF-8',
complete: function (results) {
parseCsvErrors(results);
var folders = [],
sites = [],
siteRelationships = [];
for (var j = 0; j < results.data.length; j++) {
var skip = false;
var row = results.data[j];
if (!row.length || row.length === 1) {
continue;
}
var site = {
name: row[0] && row[0] !== '' ? row[0] : '--',
favorite: false,
uri: null,
password: null,
username: null,
notes: null
};
if (row.length === 2) {
site.uri = trimUri(row[1]);
}
else if (row.length === 3) {
site.uri = trimUri(row[1]);
site.username = row[2];
}
else if (row.length === 4) {
if (row[2] === '' && row[3] === '') {
site.username = row[1];
site.notes = row[2] + '\n' + row[3];
}
else {
site.username = row[2];
site.notes = row[1] + '\n' + row[3];
}
}
else if (row.length === 5) {
site.uri = trimUri(row[1]);
site.username = row[2];
site.password = row[3];
site.notes = row[4];
}
else if (row.length === 6) {
if (row[2] === '') {
site.username = row[3];
site.notes = row[5];
}
else {
site.username = row[2];
site.notes = row[3] + '\n' + row[5];
}
site.uri = trimUri(row[1]);
site.password = row[4];
}
else if (row.length === 7) {
if (row[2] === '') {
site.username = row[3];
site.notes = row[4] + '\n' + row[6];
}
else {
site.username = row[2];
site.notes = row[3] + '\n' + row[4] + '\n' + row[6];
}
site.uri = trimUri(row[1]);
site.password = row[5];
}
else {
site.notes = '';
for (var i = 1; i < row.length; i++) {
site.notes = site.notes + row[i] + '\n';
if (row[i] === 'NO_TYPE') {
skip = true;
break;
}
}
}
if (site.uri && site.uri.indexOf('.') >= 0) {
site.uri = 'http://' + site.uri.toLowerCase().trim();
}
if (skip) {
continue;
}
if (site.username === '') {
site.username = null;
}
if (site.password === '') {
site.password = null;
}
if (site.notes === '') {
site.notes = null;
}
if (site.uri === '') {
site.uri = null;
}
sites.push(site);
}
success(folders, sites, siteRelationships);
}
});
}
return _service;
});

View File

@ -15,6 +15,7 @@
<option value="safeincloudcsv">SafeInCloud (csv)</option>
<option value="keypassxml">KeyPass (xml)</option>
<option value="padlockcsv">Padlock (csv)</option>
<option value="dashlanecsv">Dashlane (csv)</option>
<option value="1password1pif">1Password (1pif)</option>
<option value="upmcsv">Universal Password Manager (csv)</option>
<option value="keepercsv">Keeper (csv)</option>