import for 1password 1pif files
This commit is contained in:
parent
dd5cda867d
commit
0ae11cc40c
|
@ -21,6 +21,9 @@
|
||||||
case 'padlockcsv':
|
case 'padlockcsv':
|
||||||
importPadlockCsv(file, success, error);
|
importPadlockCsv(file, success, error);
|
||||||
break;
|
break;
|
||||||
|
case '1password1pif':
|
||||||
|
import1Password1Pif(file, success, error);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
error();
|
error();
|
||||||
break;
|
break;
|
||||||
|
@ -412,5 +415,75 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function import1Password1Pif(file, success, error) {
|
||||||
|
var folders = [],
|
||||||
|
sites = [],
|
||||||
|
siteRelationships = [];
|
||||||
|
|
||||||
|
var i = 0,
|
||||||
|
j = 0;
|
||||||
|
|
||||||
|
var reader = new FileReader();
|
||||||
|
reader.readAsText(file, 'utf-8');
|
||||||
|
reader.onload = function (evt) {
|
||||||
|
var fileContent = evt.target.result;
|
||||||
|
var jsonParts = fileContent.split(/(?:\r\n|\r|\n)\*\*\*.*?\*\*\*(?:\r\n|\r|\n)/);
|
||||||
|
var jsonString = '[' + jsonParts.join(',') + ']';
|
||||||
|
var items = JSON.parse(jsonString);
|
||||||
|
|
||||||
|
for (i = 0; i < items.length; i++) {
|
||||||
|
var item = items[i];
|
||||||
|
if (item.typeName !== 'webforms.WebForm') {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
var site = {
|
||||||
|
favorite: item.openContents && item.openContents.faveIndex ? true : false,
|
||||||
|
uri: item.location && item.location !== '' ? trimUri(item.location) : null,
|
||||||
|
username: null,
|
||||||
|
password: null,
|
||||||
|
notes: null,
|
||||||
|
name: item.title && item.title !== '' ? item.title : '--',
|
||||||
|
};
|
||||||
|
|
||||||
|
if (item.secureContents) {
|
||||||
|
if (item.secureContents.notesPlain) {
|
||||||
|
site.notes = item.secureContents.notesPlain;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (item.secureContents.fields) {
|
||||||
|
for (j = 0; j < item.secureContents.fields.length; j++) {
|
||||||
|
var field = item.secureContents.fields[j];
|
||||||
|
if (field.designation === 'username') {
|
||||||
|
site.username = field.value;
|
||||||
|
}
|
||||||
|
else if (field.designation === 'password') {
|
||||||
|
site.password = field.value;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
if (site.notes === null) {
|
||||||
|
site.notes = '';
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
site.notes += '\n';
|
||||||
|
}
|
||||||
|
|
||||||
|
site.notes += (field.name + ': ' + field.value + '\n');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
sites.push(site);
|
||||||
|
}
|
||||||
|
|
||||||
|
success(folders, sites, siteRelationships);
|
||||||
|
};
|
||||||
|
|
||||||
|
reader.onerror = function (evt) {
|
||||||
|
error();
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
return _service;
|
return _service;
|
||||||
});
|
});
|
||||||
|
|
|
@ -12,6 +12,7 @@
|
||||||
<option value="safeincloudcsv">SafeInCloud (csv)</option>
|
<option value="safeincloudcsv">SafeInCloud (csv)</option>
|
||||||
<option value="keypassxml">KeyPass (xml)</option>
|
<option value="keypassxml">KeyPass (xml)</option>
|
||||||
<option value="padlockcsv">Padlock (csv)</option>
|
<option value="padlockcsv">Padlock (csv)</option>
|
||||||
|
<option value="1password1pif">1Password (1pif)</option>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
|
|
Loading…
Reference in New Issue