mirror of
https://github.com/bitwarden/browser.git
synced 2024-09-19 02:51:14 +02:00
clipperz html importer
This commit is contained in:
parent
54b659aff0
commit
1f6677d610
@ -65,6 +65,9 @@
|
|||||||
case 'truekeyjson':
|
case 'truekeyjson':
|
||||||
importTrueKeyJson(file, success, error);
|
importTrueKeyJson(file, success, error);
|
||||||
break;
|
break;
|
||||||
|
case 'clipperzhtml':
|
||||||
|
importClipperzHtml(file, success, error);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
error();
|
error();
|
||||||
break;
|
break;
|
||||||
@ -1554,5 +1557,93 @@
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function importClipperzHtml(file, success, error) {
|
||||||
|
var folders = [],
|
||||||
|
sites = [],
|
||||||
|
siteRelationships = [];
|
||||||
|
|
||||||
|
var reader = new FileReader();
|
||||||
|
reader.readAsText(file, 'utf-8');
|
||||||
|
reader.onload = function (evt) {
|
||||||
|
var doc = $(evt.target.result);
|
||||||
|
var textarea = doc.find('textarea');
|
||||||
|
var json = textarea && textarea.length ? textarea.val() : null;
|
||||||
|
var entries = json ? JSON.parse(json) : null;
|
||||||
|
|
||||||
|
if (entries && entries.length) {
|
||||||
|
for (var i = 0; i < entries.length; i++) {
|
||||||
|
var entry = entries[i];
|
||||||
|
|
||||||
|
var site = {
|
||||||
|
favorite: false,
|
||||||
|
uri: null,
|
||||||
|
username: null,
|
||||||
|
password: null,
|
||||||
|
notes: '',
|
||||||
|
name: entry.label && entry.label !== '' ? entry.label.split(' ')[0] : '--',
|
||||||
|
};
|
||||||
|
|
||||||
|
if (entry.data && entry.data.notes && entry.data.notes !== '') {
|
||||||
|
site.notes = entry.data.notes.split('\\n').join('\n');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (entry.currentVersion && entry.currentVersion.fields) {
|
||||||
|
for (var property in entry.currentVersion.fields) {
|
||||||
|
if (entry.currentVersion.fields.hasOwnProperty(property)) {
|
||||||
|
var field = entry.currentVersion.fields[property];
|
||||||
|
var actionType = field.actionType.toLowerCase();
|
||||||
|
|
||||||
|
switch (actionType) {
|
||||||
|
case 'password':
|
||||||
|
site.password = field.value;
|
||||||
|
break;
|
||||||
|
case 'email':
|
||||||
|
case 'username':
|
||||||
|
case 'user':
|
||||||
|
case 'name':
|
||||||
|
site.username = field.value;
|
||||||
|
break;
|
||||||
|
case 'url':
|
||||||
|
site.uri = trimUri(field.value);
|
||||||
|
break;
|
||||||
|
case 'none':
|
||||||
|
default:
|
||||||
|
var normalizedLabel = field.label.toLowerCase();
|
||||||
|
if (!site.username &&
|
||||||
|
(normalizedLabel === 'email' || normalizedLabel === 'username')) {
|
||||||
|
site.username = field.value;
|
||||||
|
}
|
||||||
|
else if (!site.password &&
|
||||||
|
(normalizedLabel === 'password' || normalizedLabel === 'pw')) {
|
||||||
|
site.password = field.value;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
if (site.notes && site.notes !== '') {
|
||||||
|
site.notes = site.notes + '\n';
|
||||||
|
}
|
||||||
|
site.notes = site.notes + field.label + ': ' + field.value;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (site.notes === '') {
|
||||||
|
site.notes = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
sites.push(site);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
success(folders, sites, siteRelationships);
|
||||||
|
};
|
||||||
|
|
||||||
|
reader.onerror = function (evt) {
|
||||||
|
error();
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
return _service;
|
return _service;
|
||||||
});
|
});
|
||||||
|
@ -25,6 +25,7 @@
|
|||||||
<option value="stickypasswordxml">Sticky Password (xml)</option>
|
<option value="stickypasswordxml">Sticky Password (xml)</option>
|
||||||
<option value="msecurecsv">mSecure (csv)</option>
|
<option value="msecurecsv">mSecure (csv)</option>
|
||||||
<option value="truekeyjson">True Key (json)</option>
|
<option value="truekeyjson">True Key (json)</option>
|
||||||
|
<option value="clipperzhtml">Clipperz (html)</option>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
|
Loading…
Reference in New Issue
Block a user