1
0
mirror of https://github.com/bitwarden/browser.git synced 2024-12-28 17:27:50 +01:00

splashid importer

This commit is contained in:
Kyle Spearrin 2017-01-28 01:57:36 -05:00
parent 1fe673951b
commit 8d50e96dab
2 changed files with 114 additions and 0 deletions

View File

@ -89,6 +89,9 @@
case 'zohovaultcsv':
importZohoVaultCsv(file, success, error);
break;
case 'splashidcsv':
importSplashIdCsv(file, success, error);
break;
default:
error();
break;
@ -2256,5 +2259,110 @@
});
}
function importSplashIdCsv(file, success, error) {
Papa.parse(file, {
encoding: 'UTF-8',
complete: function (results) {
parseCsvErrors(results);
var folders = [],
logins = [],
folderRelationships = [];
function parseFieldsToNotes(startIndex, row, login) {
// last 3 rows do not get parsed
for (var k = startIndex; k < row.length - 3; k++) {
if (!row[k] || row[k] === '') {
continue;
}
if (!login.notes) {
login.notes = '';
}
else if (login.notes !== '') {
login.notes += '\n';
}
login.notes += row[k];
}
}
// skip 1st row since its not data
for (var i = 1; i < results.data.length; i++) {
if (results.data[i].length < 3) {
continue;
}
var value = results.data[i],
category = value[results.data.length - 1],
notes = value[results.data.length - 2],
type = value[0];
var folderIndex = folders.length,
loginIndex = logins.length,
hasFolder = category && category !== '' && category !== 'Unfiled',
addFolder = hasFolder,
j = 0;
if (hasFolder) {
for (j = 0; j < folders.length; j++) {
if (folders[j].name === category) {
addFolder = false;
folderIndex = j;
break;
}
}
}
var login = {
favorite: false,
uri: null,
username: null,
password: null,
notes: notes,
name: value[1] && value[1] !== '' ? value[1] : '--'
};
if (type === 'Web Logins' || type === 'Servers' || type === 'Email Accounts') {
login.uri = value[4] && value[4] !== '' ? fixUri(value[4]) : null;
login.username = value[2] && value[2] !== '' ? value[2] : null;
login.password = value[3] && value[3] !== '' ? value[3] : null;
parseFieldsToNotes(5, value, login);
}
else if (value.length > 2) {
parseFieldsToNotes(2, value, login);
}
if (login.name && login.name !== '--' && type !== 'Web Logins' && type !== 'Servers'
&& type !== 'Email Accounts') {
login.name = type + ': ' + login.name;
}
if (login.notes === '') {
login.notes = null;
}
logins.push(login);
if (addFolder) {
folders.push({
name: category
});
}
if (hasFolder) {
var relationship = {
key: loginIndex,
value: folderIndex
};
folderRelationships.push(relationship);
}
}
success(folders, logins, folderRelationships);
}
});
}
return _service;
});

View File

@ -133,6 +133,12 @@
'and copy the data from the textarea. Open a text editor like Notepad and paste the data. Save the ' +
'data from the text editor as <code>zoho_export.csv</code>.')
},
{
id: 'splashidcsv',
name: 'SplashID (csv)',
instructions: $sce.trustAsHtml('Using the SplashID Safe desktop application, click on the SplashID ' +
'blue lock logo in the top right corner. Navigate to "Export" > "Export as CSV" and save the CSV file.')
},
{
id: 'passworddragonxml',
name: 'Password Dragon (xml)',