mirror of
https://github.com/bitwarden/browser.git
synced 2024-12-28 17:27:50 +01:00
Add importing of 1passwords 1pux files (#440)
* Pull in jslib * Install jszip * Add method in utils to unzip and extract 1pux file * Add importing/extracting of 1pux files to import command * Update jslib * Update package-lock.json
This commit is contained in:
parent
bc4bd664b6
commit
caf6a1173b
2
jslib
2
jslib
@ -1 +1 @@
|
|||||||
Subproject commit e47eb5e74fd8ff5537149ca033fb395bb0f6295b
|
Subproject commit 4c408f05242bb0ae00c6c6b7330f1c07a92bdf13
|
598
package-lock.json
generated
598
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@ -106,6 +106,7 @@
|
|||||||
"https-proxy-agent": "5.0.0",
|
"https-proxy-agent": "5.0.0",
|
||||||
"inquirer": "8.0.0",
|
"inquirer": "8.0.0",
|
||||||
"jsdom": "^16.5.3",
|
"jsdom": "^16.5.3",
|
||||||
|
"jszip": "^3.7.1",
|
||||||
"koa": "^2.13.4",
|
"koa": "^2.13.4",
|
||||||
"koa-bodyparser": "^4.3.0",
|
"koa-bodyparser": "^4.3.0",
|
||||||
"koa-json": "^2.0.2",
|
"koa-json": "^2.0.2",
|
||||||
|
@ -61,7 +61,13 @@ export class ImportCommand {
|
|||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const contents = await CliUtils.readFile(filepath);
|
let contents;
|
||||||
|
if (format === "1password1pux") {
|
||||||
|
contents = await CliUtils.extract1PuxContent(filepath);
|
||||||
|
} else {
|
||||||
|
contents = await CliUtils.readFile(filepath);
|
||||||
|
}
|
||||||
|
|
||||||
if (contents === null || contents === "") {
|
if (contents === null || contents === "") {
|
||||||
return Response.badRequest("Import file was empty.");
|
return Response.badRequest("Import file was empty.");
|
||||||
}
|
}
|
||||||
|
17
src/utils.ts
17
src/utils.ts
@ -3,6 +3,8 @@ import * as fs from "fs";
|
|||||||
import * as inquirer from "inquirer";
|
import * as inquirer from "inquirer";
|
||||||
import * as path from "path";
|
import * as path from "path";
|
||||||
|
|
||||||
|
import * as JSZip from "jszip";
|
||||||
|
|
||||||
import { Response } from "jslib-node/cli/models/response";
|
import { Response } from "jslib-node/cli/models/response";
|
||||||
import { MessageResponse } from "jslib-node/cli/models/response/messageResponse";
|
import { MessageResponse } from "jslib-node/cli/models/response/messageResponse";
|
||||||
|
|
||||||
@ -48,6 +50,21 @@ export class CliUtils {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static extract1PuxContent(input: string): Promise<string> {
|
||||||
|
return new JSZip()
|
||||||
|
.loadAsync(input)
|
||||||
|
.then((zip) => {
|
||||||
|
return zip.file("export.data").async("string");
|
||||||
|
})
|
||||||
|
.then(
|
||||||
|
function success(content) {
|
||||||
|
return content;
|
||||||
|
},
|
||||||
|
function error(e) {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
/**
|
/**
|
||||||
* Save the given data to a file and determine the target file if necessary.
|
* Save the given data to a file and determine the target file if necessary.
|
||||||
* If output is non-empty, it is used as target filename. Otherwise the target filename is
|
* If output is non-empty, it is used as target filename. Otherwise the target filename is
|
||||||
|
Loading…
Reference in New Issue
Block a user