From 61723f74d26ae933a5d8555059811af5450fa982 Mon Sep 17 00:00:00 2001 From: Kyle Spearrin Date: Fri, 26 Apr 2019 20:51:53 -0400 Subject: [PATCH] password wallet txt importer --- src/importers/passwordWalletTxtImporter.ts | 38 ++++++++++++++++++++++ src/services/import.service.ts | 4 +++ 2 files changed, 42 insertions(+) create mode 100644 src/importers/passwordWalletTxtImporter.ts diff --git a/src/importers/passwordWalletTxtImporter.ts b/src/importers/passwordWalletTxtImporter.ts new file mode 100644 index 0000000000..0e691bc610 --- /dev/null +++ b/src/importers/passwordWalletTxtImporter.ts @@ -0,0 +1,38 @@ +import { BaseImporter } from './baseImporter'; +import { Importer } from './importer'; + +import { ImportResult } from '../models/domain/importResult'; + +export class PasswordWalletTxtImporter extends BaseImporter implements Importer { + parse(data: string): ImportResult { + const result = new ImportResult(); + const results = this.parseCsv(data, false); + if (results == null) { + result.success = false; + return result; + } + + results.forEach((value) => { + if (value.length < 6) { + return; + } + + this.processFolder(result, value[5]); + const cipher = this.initLoginCipher(); + cipher.name = this.getValueOrDefault(value[0], '--'); + cipher.notes = this.getValueOrDefault(value[4]); + cipher.login.username = this.getValueOrDefault(value[2]); + cipher.login.password = this.getValueOrDefault(value[3]); + cipher.login.uris = this.makeUriArray(value[1]); + this.cleanupCipher(cipher); + result.ciphers.push(cipher); + }); + + if (this.organization) { + this.moveFoldersToCollections(result); + } + + result.success = true; + return result; + } +} diff --git a/src/services/import.service.ts b/src/services/import.service.ts index 7c66014e32..5d69fde20a 100644 --- a/src/services/import.service.ts +++ b/src/services/import.service.ts @@ -55,6 +55,7 @@ import { PasswordAgentCsvImporter } from '../importers/passwordAgentCsvImporter' import { PasswordBossJsonImporter } from '../importers/passwordBossJsonImporter'; import { PasswordDragonXmlImporter } from '../importers/passwordDragonXmlImporter'; import { PasswordSafeXmlImporter } from '../importers/passwordSafeXmlImporter'; +import { PasswordWalletTxtImporter } from '../importers/passwordWalletTxtImporter'; import { RememBearCsvImporter } from '../importers/rememBearCsvImporter'; import { RoboFormCsvImporter } from '../importers/roboformCsvImporter'; import { SafeInCloudXmlImporter } from '../importers/safeInCloudXmlImporter'; @@ -113,6 +114,7 @@ export class ImportService implements ImportServiceAbstraction { { id: 'fsecurefsk', name: 'F-Secure KEY (fsk)' }, { id: 'kasperskytxt', name: 'Kaspersky Password Manager (txt)' }, { id: 'remembearcsv', name: 'RememBear (csv)' }, + { id: 'passwordwallettxt', name: 'PasswordWallet (txt)' }, ]; constructor(private cipherService: CipherService, private folderService: FolderService, @@ -243,6 +245,8 @@ export class ImportService implements ImportServiceAbstraction { return new KasperskyTxtImporter(); case 'remembearcsv': return new RememBearCsvImporter(); + case 'passwordwallettxt': + return new PasswordWalletTxtImporter(); default: return null; }