Skip to content

Commit 6d6f3f7

Browse files
authored
Per-tenant media-node region binding (#49)
* Add media node regions for privacy * Fix vulns
1 parent cccd8f1 commit 6d6f3f7

3 files changed

Lines changed: 52 additions & 27 deletions

File tree

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
import { Knex } from 'knex';
2+
3+
export async function up(knex: Knex): Promise<void> {
4+
await knex.schema.alterTable('tenants', (table) => {
5+
if (knex.client.config.client === 'pg') {
6+
table.specificType('allowedMediaNodeRegions', 'VARCHAR(32) ARRAY');
7+
} else if (knex.client.config.client === 'mysql' || knex.client.config.client === 'mysql2') {
8+
table.json('allowedMediaNodeRegions');
9+
} else {
10+
throw new Error(`Unsupported database client: ${knex.client.config.client}`);
11+
}
12+
});
13+
}
14+
15+
export async function down(knex: Knex): Promise<void> {
16+
await knex.schema.alterTable('tenants', (table) => {
17+
table.dropColumn('allowedMediaNodeRegions');
18+
});
19+
}

src/services/tenants/tenants.schema.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ export const tenantSchema = Type.Object(
1313
name: Type.String(),
1414
description: Type.Optional(Type.String()),
1515
hideUserDetails: Type.Optional(Type.Boolean()),
16+
allowedMediaNodeRegions: Type.Optional(Type.Array(Type.String())),
1617
},
1718
{ $id: 'Tenant', additionalProperties: false }
1819
);
@@ -22,7 +23,7 @@ export const tenantResolver = resolve<Tenant, HookContext>({});
2223
export const tenantExternalResolver = resolve<Tenant, HookContext>({});
2324

2425
// Schema for creating new entries
25-
export const tenantDataSchema = Type.Pick(tenantSchema, [ 'name', 'description', 'hideUserDetails' ], {
26+
export const tenantDataSchema = Type.Pick(tenantSchema, [ 'name', 'description', 'hideUserDetails', 'allowedMediaNodeRegions' ], {
2627
$id: 'TenantData'
2728
});
2829
export type TenantData = Static<typeof tenantDataSchema>

yarn.lock

Lines changed: 31 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -2618,27 +2618,15 @@ __metadata:
26182618
languageName: node
26192619
linkType: hard
26202620

2621-
"dompurify@npm:*, dompurify@npm:^3.4.1":
2622-
version: 3.4.1
2623-
resolution: "dompurify@npm:3.4.1"
2624-
dependencies:
2625-
"@types/trusted-types": "npm:^2.0.7"
2626-
dependenciesMeta:
2627-
"@types/trusted-types":
2628-
optional: true
2629-
checksum: 10c0/440a4246020cb54b82ef2cb66381e4d310a0c470f9994655e61b6122811f0eaa00a2f9665d2bed30ca3f58932ba7bb0d5e26fdfce61c8daf35d21a3f5a799e48
2630-
languageName: node
2631-
linkType: hard
2632-
2633-
"dompurify@npm:^3.3.1":
2634-
version: 3.3.3
2635-
resolution: "dompurify@npm:3.3.3"
2621+
"dompurify@npm:*, dompurify@npm:^3.3.1, dompurify@npm:^3.4.1":
2622+
version: 3.4.3
2623+
resolution: "dompurify@npm:3.4.3"
26362624
dependencies:
26372625
"@types/trusted-types": "npm:^2.0.7"
26382626
dependenciesMeta:
26392627
"@types/trusted-types":
26402628
optional: true
2641-
checksum: 10c0/097c14a21a3f6cb95beded9ecd255f7c3512c42767b048390c747b0fe35736f6a71e02320fc50a9ac2be645834b463e4760915d595d502a56452daf339d0ea9c
2629+
checksum: 10c0/88b9e1a6d0a990e15fab46f4eb96163ef79f20634705b21c82651ffce1ccc5236e4007397d920234afab86123d49be863f2367bd6aacdf28a401aef4d177e0f9
26422630
languageName: node
26432631
linkType: hard
26442632

@@ -3226,9 +3214,9 @@ __metadata:
32263214
linkType: hard
32273215

32283216
"fast-uri@npm:^3.0.1":
3229-
version: 3.1.0
3230-
resolution: "fast-uri@npm:3.1.0"
3231-
checksum: 10c0/44364adca566f70f40d1e9b772c923138d47efeac2ae9732a872baafd77061f26b097ba2f68f0892885ad177becd065520412b8ffeec34b16c99433c5b9e2de7
3217+
version: 3.1.2
3218+
resolution: "fast-uri@npm:3.1.2"
3219+
checksum: 10c0/5b35641895959f3f7ab7a7b1b5542bded159346f25ec9f256817b206d50b64eda5828e90d605a2e2fc645c90519a7259c2bab2c942ee728c88b88e5be21b090d
32323220
languageName: node
32333221
linkType: hard
32343222

@@ -3353,12 +3341,12 @@ __metadata:
33533341
linkType: hard
33543342

33553343
"follow-redirects@npm:^1.15.11":
3356-
version: 1.15.11
3357-
resolution: "follow-redirects@npm:1.15.11"
3344+
version: 1.16.0
3345+
resolution: "follow-redirects@npm:1.16.0"
33583346
peerDependenciesMeta:
33593347
debug:
33603348
optional: true
3361-
checksum: 10c0/d301f430542520a54058d4aeeb453233c564aaccac835d29d15e050beb33f339ad67d9bddbce01739c5dc46a6716dbe3d9d0d5134b1ca203effa11a7ef092343
3349+
checksum: 10c0/a1e2900163e6f1b4d1ed5c221b607f41decbab65534c63fe7e287e40a5d552a6496e7d9d7d976fa4ba77b4c51c11e5e9f683f10b43011ea11e442ff128d0e181
33623350
languageName: node
33633351
linkType: hard
33643352

@@ -3965,6 +3953,13 @@ __metadata:
39653953
languageName: node
39663954
linkType: hard
39673955

3956+
"ip-address@npm:^10.1.1":
3957+
version: 10.2.0
3958+
resolution: "ip-address@npm:10.2.0"
3959+
checksum: 10c0/5a00aada6e922c9c69dfc800ed5d0fa3348675ebdeed0e1575f503f27ca385b5f534363c9af7ad1daf64c1f1409388cdd3cc2e9b9b0fe1c924a431378d55075a
3960+
languageName: node
3961+
linkType: hard
3962+
39683963
"ipaddr.js@npm:1.9.1":
39693964
version: 1.9.1
39703965
resolution: "ipaddr.js@npm:1.9.1"
@@ -6135,7 +6130,7 @@ __metadata:
61356130
languageName: node
61366131
linkType: hard
61376132

6138-
"socks@npm:2.8.7, socks@npm:^2.8.3":
6133+
"socks@npm:2.8.7":
61396134
version: 2.8.7
61406135
resolution: "socks@npm:2.8.7"
61416136
dependencies:
@@ -6145,6 +6140,16 @@ __metadata:
61456140
languageName: node
61466141
linkType: hard
61476142

6143+
"socks@npm:^2.8.3":
6144+
version: 2.8.9
6145+
resolution: "socks@npm:2.8.9"
6146+
dependencies:
6147+
ip-address: "npm:^10.1.1"
6148+
smart-buffer: "npm:^4.2.0"
6149+
checksum: 10c0/2d4350c31142b0931eb1758825b426bcbf4bfb5eed682ca48bc46dc9e7d1930ec366ea574ad49fc6c1fd9e9e17ce243be0ef13e31fc4b0319d9093f1fb19743c
6150+
languageName: node
6151+
linkType: hard
6152+
61486153
"sonic-boom@npm:^4.0.1":
61496154
version: 4.2.1
61506155
resolution: "sonic-boom@npm:4.2.1"
@@ -6678,11 +6683,11 @@ __metadata:
66786683
linkType: hard
66796684

66806685
"uuid@npm:^11.1.0":
6681-
version: 11.1.0
6682-
resolution: "uuid@npm:11.1.0"
6686+
version: 11.1.1
6687+
resolution: "uuid@npm:11.1.1"
66836688
bin:
66846689
uuid: dist/esm/bin/uuid
6685-
checksum: 10c0/34aa51b9874ae398c2b799c88a127701408cd581ee89ec3baa53509dd8728cbb25826f2a038f9465f8b7be446f0fbf11558862965b18d21c993684297628d4d3
6690+
checksum: 10c0/9e3af58eba872ece5a5e76f4773a94fc78a0ef2c2444c38dbe6b42f41dadf76c01850fd783604f27986f6195e6286aef064d45987d401b2a33127b98ddf7c0c5
66866691
languageName: node
66876692
linkType: hard
66886693

0 commit comments

Comments
 (0)