Initial commit: Bitwarden export to PDF renderer
Adds the render.py WeasyPrint renderer, the pod-based bitwarden-print.sh wrapper, a Containerfile, a sample export (JSON + PDF), README and LICENSE.
This commit is contained in:
commit
41385b35e6
8 files changed
+1041
No files matched your search
@@ -0,0 +1,173 @@
|
||||
{
|
||||
"encrypted": false,
|
||||
"folders": [
|
||||
{ "id": "f1b2c3d4-0000-4000-8000-000000000001", "name": "Work" },
|
||||
{ "id": "f1b2c3d4-0000-4000-8000-000000000002", "name": "Personal" },
|
||||
{ "id": "f1b2c3d4-0000-4000-8000-000000000003", "name": "Infrastructure" }
|
||||
],
|
||||
"items": [
|
||||
{
|
||||
"id": "11111111-1111-4111-8111-111111111111",
|
||||
"organizationId": null,
|
||||
"folderId": "f1b2c3d4-0000-4000-8000-000000000001",
|
||||
"type": 1,
|
||||
"name": "GitHub",
|
||||
"notes": "Recovery codes are in the safe.\n2FA enforced on the org.",
|
||||
"favorite": true,
|
||||
"reprompt": 1,
|
||||
"login": {
|
||||
"uris": [
|
||||
{ "match": null, "uri": "https://github.com/login" },
|
||||
{ "match": 0, "uri": "https://gist.github.com" }
|
||||
],
|
||||
"username": "jdoe@example.com",
|
||||
"password": "correct-horse-battery-staple",
|
||||
"totp": "otpauth://totp/GitHub:jdoe?secret=JBSWY3DPEHPK3PXP",
|
||||
"passwordRevisionDate": "2024-03-11T09:12:44.000Z"
|
||||
},
|
||||
"collectionIds": null,
|
||||
"creationDate": "2019-05-02T14:22:10.000Z",
|
||||
"revisionDate": "2024-03-11T09:12:44.000Z",
|
||||
"deletedDate": null,
|
||||
"fields": [
|
||||
{ "name": "recovery email", "value": "recovery@example.com", "type": 0, "linkedId": null },
|
||||
{ "name": "PIN", "value": "4711", "type": 1, "linkedId": null }
|
||||
],
|
||||
"passwordHistory": [
|
||||
{ "lastUsedDate": "2023-11-01T08:00:00.000Z", "password": "old-secret-1" },
|
||||
{ "lastUsedDate": "2022-06-15T08:00:00.000Z", "password": "old-secret-0" }
|
||||
],
|
||||
"attachments": [
|
||||
{
|
||||
"id": "att-0001",
|
||||
"fileName": "recovery-codes.txt",
|
||||
"size": "482",
|
||||
"sizeName": "482 bytes",
|
||||
"url": "https://vault.example/attachments/att-0001"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "22222222-2222-4222-8222-222222222222",
|
||||
"organizationId": "org-1",
|
||||
"folderId": "f1b2c3d4-0000-4000-8000-000000000001",
|
||||
"type": 1,
|
||||
"name": "Internal wiki",
|
||||
"notes": null,
|
||||
"favorite": false,
|
||||
"reprompt": 0,
|
||||
"login": {
|
||||
"uris": [{ "match": 0, "uri": "https://wiki.internal.example" }],
|
||||
"username": "svc-wiki",
|
||||
"password": "S3cr3t!wiki#2024",
|
||||
"totp": null
|
||||
},
|
||||
"collectionIds": ["col-1"],
|
||||
"creationDate": "2021-01-07T10:00:00.000Z",
|
||||
"revisionDate": "2024-09-30T16:45:00.000Z",
|
||||
"fields": null,
|
||||
"passwordHistory": null,
|
||||
"attachments": null
|
||||
},
|
||||
{
|
||||
"id": "33333333-3333-4333-8333-333333333333",
|
||||
"organizationId": null,
|
||||
"folderId": "f1b2c3d4-0000-4000-8000-000000000002",
|
||||
"type": 3,
|
||||
"name": "Visa Business",
|
||||
"notes": "Expires 2027, travel card.",
|
||||
"favorite": false,
|
||||
"reprompt": 0,
|
||||
"card": {
|
||||
"cardholderName": "Jane Doe",
|
||||
"brand": "Visa",
|
||||
"number": "4111111111111111",
|
||||
"expMonth": "9",
|
||||
"expYear": "2027",
|
||||
"code": "123"
|
||||
},
|
||||
"creationDate": "2020-02-02T12:00:00.000Z",
|
||||
"revisionDate": "2023-04-18T07:30:00.000Z",
|
||||
"fields": []
|
||||
},
|
||||
{
|
||||
"id": "44444444-4444-4444-8444-444444444444",
|
||||
"organizationId": null,
|
||||
"folderId": "f1b2c3d4-0000-4000-8000-000000000002",
|
||||
"type": 4,
|
||||
"name": "Passport",
|
||||
"notes": null,
|
||||
"favorite": false,
|
||||
"reprompt": 0,
|
||||
"identity": {
|
||||
"title": "Dr.",
|
||||
"firstName": "Jane",
|
||||
"middleName": "Q.",
|
||||
"lastName": "Doe",
|
||||
"address1": "1 Example Street",
|
||||
"address2": "Apt 4",
|
||||
"address3": "",
|
||||
"city": "Springfield",
|
||||
"state": "IL",
|
||||
"postalCode": "62704",
|
||||
"country": "United States",
|
||||
"company": "Example GmbH",
|
||||
"email": "jane@example.com",
|
||||
"phone": "+1 555 0100",
|
||||
"ssn": "000-00-0000",
|
||||
"username": "jdoe",
|
||||
"passportNumber": "X1234567",
|
||||
"licenseNumber": "D-998877"
|
||||
},
|
||||
"creationDate": "2018-08-08T08:08:08.000Z",
|
||||
"revisionDate": "2022-12-24T18:00:00.000Z"
|
||||
},
|
||||
{
|
||||
"id": "55555555-5555-4555-8555-555555555555",
|
||||
"organizationId": null,
|
||||
"folderId": "f1b2c3d4-0000-4000-8000-000000000003",
|
||||
"type": 2,
|
||||
"name": "Router recovery phrase",
|
||||
"notes": "word word word word word word word word",
|
||||
"favorite": false,
|
||||
"reprompt": 0,
|
||||
"secureNote": { "type": 0 },
|
||||
"creationDate": "2023-03-03T03:03:03.000Z",
|
||||
"revisionDate": "2023-03-03T03:03:03.000Z",
|
||||
"fields": [
|
||||
{ "name": "admin password", "value": "admin-router-pass", "type": 1, "linkedId": null }
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "66666666-6666-4666-8666-666666666666",
|
||||
"organizationId": null,
|
||||
"folderId": "f1b2c3d4-0000-4000-8000-000000000003",
|
||||
"type": 5,
|
||||
"name": "deploy@build-host",
|
||||
"notes": "Key used by CI.",
|
||||
"favorite": false,
|
||||
"reprompt": 0,
|
||||
"sshKey": {
|
||||
"privateKey": "-----BEGIN OPENSSH PRIVATE KEY-----\nb3BlbnNzaC1rZXktdjEAAAAA\n-----END OPENSSH PRIVATE KEY-----",
|
||||
"publicKey": "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIExample deploy@build-host",
|
||||
"fingerprint": "SHA256:abcdefghijklmnopqrstuvwxyz0123456789",
|
||||
"keyFingerprint": "SHA256:abcdefghijklmnopqrstuvwxyz0123456789"
|
||||
},
|
||||
"creationDate": "2024-01-15T09:00:00.000Z",
|
||||
"revisionDate": "2024-01-15T09:00:00.000Z",
|
||||
"fields": null,
|
||||
"attachments": null,
|
||||
"unknownTopLevelKey": "kept because every value must be printed",
|
||||
"extraObject": { "nested": { "flag": true, "count": 3 }, "emptyList": [], "emptyObject": {} }
|
||||
}
|
||||
],
|
||||
"collections": [
|
||||
{
|
||||
"id": "col-1",
|
||||
"organizationId": "org-1",
|
||||
"name": "Shared infra",
|
||||
"externalId": null,
|
||||
"readOnly": false
|
||||
}
|
||||
]
|
||||
}
|
||||
Reference in new issue
Block a user