aweshare 0.3.3 → 0.3.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +9 -6
- package/apps/agent/dist/cli.js +1 -1
- package/apps/agent/dist/cli.js.map +1 -1
- package/apps/hub/dist/admin.d.ts +3 -0
- package/apps/hub/dist/admin.js +67 -19
- package/apps/hub/dist/admin.js.map +1 -1
- package/apps/hub/dist/auth.js +8 -2
- package/apps/hub/dist/auth.js.map +1 -1
- package/apps/hub/dist/cli.js +37 -13
- package/apps/hub/dist/cli.js.map +1 -1
- package/apps/hub/dist/config.d.ts +2 -0
- package/apps/hub/dist/config.js +2 -0
- package/apps/hub/dist/config.js.map +1 -1
- package/apps/hub/dist/consumer.js +6 -2
- package/apps/hub/dist/consumer.js.map +1 -1
- package/apps/hub/dist/db.d.ts +46 -22
- package/apps/hub/dist/db.js +112 -22
- package/apps/hub/dist/db.js.map +1 -1
- package/apps/hub/dist/invites.d.ts +3 -0
- package/apps/hub/dist/invites.js +64 -10
- package/apps/hub/dist/invites.js.map +1 -1
- package/apps/hub/dist/server.js +10 -2
- package/apps/hub/dist/server.js.map +1 -1
- package/apps/hub/dist/table.d.ts +7 -5
- package/apps/hub/dist/table.js +11 -8
- package/apps/hub/dist/table.js.map +1 -1
- package/apps/hub/dist/tunnel.d.ts +6 -0
- package/apps/hub/dist/tunnel.js +34 -2
- package/apps/hub/dist/tunnel.js.map +1 -1
- package/apps/hub/package.json +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"consumer.js","sourceRoot":"","sources":["../src/consumer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAI7D,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;AAE3C,OAAO,EACL,QAAQ,EACR,WAAW,EACX,gBAAgB,EAChB,wBAAwB,EACxB,aAAa,GACd,MAAM,SAAS,CAAA;AAChB,OAAO,EAAE,SAAS,EAAkC,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAEpG,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAC3C,OAAO,EAAE,4BAA4B,EAAE,+BAA+B,EAAE,MAAM,eAAe,CAAA;AAc7F,MAAM,UAAU,sBAAsB,CAAC,MAAc,EAAE,IAAkB;IACvE,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,sBAAsB,EAAE,CAAC,GAAG,EAAE,EAAE,CACjD,eAAe,CAAC,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,mBAAmB,CAAC,CAC1D,CAAA;IACD,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,cAAc,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,eAAe,CAAC,GAAG,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC,CAAA;IACjG,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,eAAe,EAAE,CAAC,GAAG,EAAE,EAAE,CAC1C,eAAe,CAAC,GAAG,EAAE,IAAI,EAAE,WAAW,EAAE,YAAY,CAAC,CACtD,CAAA;IACD,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,YAAY,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAA;AACnE,CAAC;AAED,oEAAoE;AACpE,MAAM,qBAAqB,GAA6B;IACtD,MAAM,EAAE,sBAAsB;IAC9B,SAAS,EAAE,cAAc;IACzB,SAAS,EAAE,eAAe;CAC3B,CAAA;AAED,KAAK,UAAU,eAAe,CAC5B,GAAiB,EACjB,IAAkB,EAClB,QAAkB,EAClB,IAAY;IAEZ,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAA;IAC9D,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,eAAe,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"consumer.js","sourceRoot":"","sources":["../src/consumer.ts"],"names":[],"mappings":"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"}
|
package/apps/hub/dist/db.d.ts
CHANGED
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
import type { Offering, Protocol } from 'aweshare-protocol';
|
|
2
2
|
import Database from 'better-sqlite3';
|
|
3
3
|
/**
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
* of this feature.
|
|
4
|
+
* Tokens are stored hash-only: the plaintext is handed out exactly once at
|
|
5
|
+
* issue/redeem and can never be re-displayed. Invite codes are the deliberate
|
|
6
|
+
* exception (code_plain) — the operator mints and hands them out, so being able
|
|
7
|
+
* to re-view them outweighs the exposure cost of a DB leak.
|
|
9
8
|
*/
|
|
10
9
|
export type ProducerRow = {
|
|
11
10
|
id: number;
|
|
@@ -14,7 +13,7 @@ export type ProducerRow = {
|
|
|
14
13
|
created_at: string;
|
|
15
14
|
revoked_at: string | null;
|
|
16
15
|
email: string | null;
|
|
17
|
-
|
|
16
|
+
last_seen_at: string | null;
|
|
18
17
|
};
|
|
19
18
|
export type ConsumerRow = {
|
|
20
19
|
id: number;
|
|
@@ -23,7 +22,7 @@ export type ConsumerRow = {
|
|
|
23
22
|
created_at: string;
|
|
24
23
|
revoked_at: string | null;
|
|
25
24
|
config: string | null;
|
|
26
|
-
|
|
25
|
+
last_seen_at: string | null;
|
|
27
26
|
};
|
|
28
27
|
export type OfferingRow = {
|
|
29
28
|
alias: string;
|
|
@@ -65,45 +64,70 @@ export type InviteRow = {
|
|
|
65
64
|
};
|
|
66
65
|
export type NewUsageEvent = Omit<UsageEventRow, 'id' | 'at'>;
|
|
67
66
|
export declare function openDb(dbFile: string): Database.Database;
|
|
68
|
-
export declare function insertProducer(db: Database.Database, name: string, tokenHash: string, email?: string | null
|
|
69
|
-
export declare function insertConsumer(db: Database.Database, name: string, tokenHash: string
|
|
67
|
+
export declare function insertProducer(db: Database.Database, name: string, tokenHash: string, email?: string | null): ProducerRow;
|
|
68
|
+
export declare function insertConsumer(db: Database.Database, name: string, tokenHash: string): ConsumerRow;
|
|
70
69
|
export declare function getProducerById(db: Database.Database, id: number): ProducerRow;
|
|
71
70
|
export declare function getConsumerById(db: Database.Database, id: number): ConsumerRow;
|
|
72
71
|
export declare function getProducerByName(db: Database.Database, name: string): ProducerRow | undefined;
|
|
73
72
|
export declare function getConsumerByName(db: Database.Database, name: string): ConsumerRow | undefined;
|
|
74
73
|
export declare function findProducerByHash(db: Database.Database, hash: string): ProducerRow | undefined;
|
|
75
74
|
export declare function findConsumerByHash(db: Database.Database, hash: string): ConsumerRow | undefined;
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
token?: string | null;
|
|
80
|
-
})[];
|
|
81
|
-
consumers: (Omit<ConsumerRow, "token_hash" | "token_plain" | "config"> & {
|
|
82
|
-
token?: string | null;
|
|
83
|
-
})[];
|
|
75
|
+
export declare function listTokens(db: Database.Database): {
|
|
76
|
+
producers: Omit<ProducerRow, "token_hash">[];
|
|
77
|
+
consumers: Omit<ConsumerRow, "token_hash" | "config">[];
|
|
84
78
|
};
|
|
79
|
+
/**
|
|
80
|
+
* Revocation is reversible suspension, not deletion: the row (and its grants,
|
|
81
|
+
* offerings and history) stays; restore brings the token back to life.
|
|
82
|
+
*/
|
|
85
83
|
export declare function revokeToken(db: Database.Database, role: 'producer' | 'consumer', id: number): void;
|
|
84
|
+
/** Undo revokeToken; returns false when the token was not suspended. */
|
|
85
|
+
export declare function restoreToken(db: Database.Database, role: 'producer' | 'consumer', id: number): boolean;
|
|
86
|
+
/** Active (non-suspended) producers — the scarce resource behind the capacity cap. */
|
|
87
|
+
export declare function countActiveProducers(db: Database.Database): number;
|
|
88
|
+
export declare function touchLastSeen(db: Database.Database, role: 'producer' | 'consumer', id: number): void;
|
|
86
89
|
export declare function insertInvite(db: Database.Database, codeHash: string, name: string | null, expiresAt: string | null, codePlain?: string | null): InviteRow;
|
|
87
90
|
export declare function getInviteById(db: Database.Database, id: number): InviteRow;
|
|
88
91
|
export declare function findInviteByHash(db: Database.Database, hash: string): InviteRow | undefined;
|
|
89
|
-
/** With reveal, rows carry `code` (plaintext) —
|
|
92
|
+
/** With reveal, rows carry `code` (plaintext) — the operator can always re-view codes. */
|
|
90
93
|
export type InviteListRow = Omit<InviteRow, 'code_hash' | 'code_plain'> & {
|
|
91
94
|
code?: string | null;
|
|
95
|
+
/** Suspended state of the producer this invite redeemed (NULL while pending). */
|
|
96
|
+
producer_revoked_at?: string | null;
|
|
92
97
|
};
|
|
93
98
|
export declare function listInvites(db: Database.Database, reveal?: boolean): InviteListRow[];
|
|
94
|
-
|
|
95
|
-
|
|
99
|
+
export declare function getInviteByProducer(db: Database.Database, producerId: number): InviteRow | undefined;
|
|
100
|
+
/**
|
|
101
|
+
* Revoke works at any lifecycle stage. On a redeemed invite the caller is
|
|
102
|
+
* expected to suspend the linked producer in the same transaction (one code,
|
|
103
|
+
* one producer — revoking the code is revoking the person).
|
|
104
|
+
*/
|
|
105
|
+
export declare function revokeInviteById(db: Database.Database, id: number): boolean;
|
|
106
|
+
/** Undo revokeInviteById; returns false when the invite was not revoked. */
|
|
107
|
+
export declare function restoreInviteById(db: Database.Database, id: number): boolean;
|
|
108
|
+
/** Expired codes are dropped only when someone actually tries them (lazy cleanup). */
|
|
109
|
+
export declare function deleteInvite(db: Database.Database, id: number): void;
|
|
110
|
+
/**
|
|
111
|
+
* Suspend a producer and flag its redeemed invite in one transaction with one
|
|
112
|
+
* timestamp — whichever handle the operator uses (token id or invite id), both
|
|
113
|
+
* sides of the pairing move together. Returns false when the producer was
|
|
114
|
+
* already suspended (the invite flag then already holds).
|
|
115
|
+
*/
|
|
116
|
+
export declare function suspendProducer(db: Database.Database, producerId: number): boolean;
|
|
117
|
+
/** The exact inverse of suspendProducer: token works again, invite unflagged. */
|
|
118
|
+
export declare function restoreProducer(db: Database.Database, producerId: number): boolean;
|
|
96
119
|
/**
|
|
97
120
|
* Atomically consume the invite and create its producer: claim first, then
|
|
98
121
|
* insert, linking them inside one transaction. A name clash throws inside the
|
|
99
122
|
* transaction so the claim rolls back — the code survives a 409. The name comes
|
|
100
123
|
* from the invite when bound, from the redeeming producer when not. The
|
|
101
|
-
* producer token hash is minted by the caller
|
|
124
|
+
* producer token hash is minted by the caller; its plaintext is returned to
|
|
125
|
+
* them exactly once and never stored.
|
|
102
126
|
*/
|
|
103
127
|
export declare function redeemInvite(db: Database.Database, invite: InviteRow, tokenHash: string, identity: {
|
|
104
128
|
name: string;
|
|
105
129
|
email: string | null;
|
|
106
|
-
},
|
|
130
|
+
}, now?: string): ProducerRow | 'already-redeemed' | 'name-taken';
|
|
107
131
|
export declare function addGrant(db: Database.Database, producerId: number, consumerId: number, alias: string, expiresAt?: string | null): void;
|
|
108
132
|
export declare function removeGrant(db: Database.Database, producerId: number, consumerId: number, alias: string): boolean;
|
|
109
133
|
export type GrantRow = {
|
package/apps/hub/dist/db.js
CHANGED
|
@@ -9,7 +9,7 @@ CREATE TABLE IF NOT EXISTS producers (
|
|
|
9
9
|
created_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ','now')),
|
|
10
10
|
revoked_at TEXT,
|
|
11
11
|
email TEXT,
|
|
12
|
-
|
|
12
|
+
last_seen_at TEXT
|
|
13
13
|
);
|
|
14
14
|
CREATE TABLE IF NOT EXISTS consumers (
|
|
15
15
|
id INTEGER PRIMARY KEY,
|
|
@@ -18,7 +18,7 @@ CREATE TABLE IF NOT EXISTS consumers (
|
|
|
18
18
|
created_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ','now')),
|
|
19
19
|
revoked_at TEXT,
|
|
20
20
|
config TEXT,
|
|
21
|
-
|
|
21
|
+
last_seen_at TEXT
|
|
22
22
|
);
|
|
23
23
|
CREATE TABLE IF NOT EXISTS grants (
|
|
24
24
|
producer_id INTEGER NOT NULL REFERENCES producers(id),
|
|
@@ -77,7 +77,7 @@ export function openDb(dbFile) {
|
|
|
77
77
|
const version = db.pragma('user_version', { simple: true });
|
|
78
78
|
if (version < 1) {
|
|
79
79
|
db.exec(SCHEMA_LATEST);
|
|
80
|
-
db.pragma('user_version =
|
|
80
|
+
db.pragma('user_version = 5');
|
|
81
81
|
}
|
|
82
82
|
else {
|
|
83
83
|
if (version < 2) {
|
|
@@ -107,21 +107,30 @@ export function openDb(dbFile) {
|
|
|
107
107
|
db.exec('ALTER TABLE consumers ADD COLUMN token_plain TEXT');
|
|
108
108
|
db.exec('ALTER TABLE invites ADD COLUMN code_plain TEXT');
|
|
109
109
|
}
|
|
110
|
-
|
|
110
|
+
if (version < 5) {
|
|
111
|
+
// v4 -> v5: tokens go back to hash-only (token_plain dropped for good —
|
|
112
|
+
// back up hub.db before upgrading, this step is not reversible); invites
|
|
113
|
+
// keep code_plain. last_seen_at tracks tenant liveness (throttled writes).
|
|
114
|
+
db.exec('ALTER TABLE producers DROP COLUMN token_plain');
|
|
115
|
+
db.exec('ALTER TABLE consumers DROP COLUMN token_plain');
|
|
116
|
+
db.exec('ALTER TABLE producers ADD COLUMN last_seen_at TEXT');
|
|
117
|
+
db.exec('ALTER TABLE consumers ADD COLUMN last_seen_at TEXT');
|
|
118
|
+
}
|
|
119
|
+
db.pragma('user_version = 5');
|
|
111
120
|
}
|
|
112
121
|
return db;
|
|
113
122
|
}
|
|
114
123
|
// ---- tokens / identities ----
|
|
115
|
-
export function insertProducer(db, name, tokenHash, email = null
|
|
124
|
+
export function insertProducer(db, name, tokenHash, email = null) {
|
|
116
125
|
const info = db
|
|
117
|
-
.prepare('INSERT INTO producers (name, token_hash, email
|
|
118
|
-
.run(name, tokenHash, email
|
|
126
|
+
.prepare('INSERT INTO producers (name, token_hash, email) VALUES (?, ?, ?)')
|
|
127
|
+
.run(name, tokenHash, email);
|
|
119
128
|
return getProducerById(db, Number(info.lastInsertRowid));
|
|
120
129
|
}
|
|
121
|
-
export function insertConsumer(db, name, tokenHash
|
|
130
|
+
export function insertConsumer(db, name, tokenHash) {
|
|
122
131
|
const info = db
|
|
123
|
-
.prepare('INSERT INTO consumers (name, token_hash
|
|
124
|
-
.run(name, tokenHash
|
|
132
|
+
.prepare('INSERT INTO consumers (name, token_hash) VALUES (?, ?)')
|
|
133
|
+
.run(name, tokenHash);
|
|
125
134
|
return getConsumerById(db, Number(info.lastInsertRowid));
|
|
126
135
|
}
|
|
127
136
|
export function getProducerById(db, id) {
|
|
@@ -142,20 +151,51 @@ export function findProducerByHash(db, hash) {
|
|
|
142
151
|
export function findConsumerByHash(db, hash) {
|
|
143
152
|
return db.prepare('SELECT * FROM consumers WHERE token_hash = ?').get(hash);
|
|
144
153
|
}
|
|
145
|
-
|
|
146
|
-
export function listTokens(db, reveal = false) {
|
|
154
|
+
export function listTokens(db) {
|
|
147
155
|
const producers = db
|
|
148
|
-
.prepare(
|
|
156
|
+
.prepare('SELECT id, name, email, created_at, revoked_at, last_seen_at FROM producers ORDER BY id')
|
|
149
157
|
.all();
|
|
150
158
|
const consumers = db
|
|
151
|
-
.prepare(
|
|
159
|
+
.prepare('SELECT id, name, created_at, revoked_at, last_seen_at FROM consumers ORDER BY id')
|
|
152
160
|
.all();
|
|
153
161
|
return { producers, consumers };
|
|
154
162
|
}
|
|
163
|
+
/**
|
|
164
|
+
* Revocation is reversible suspension, not deletion: the row (and its grants,
|
|
165
|
+
* offerings and history) stays; restore brings the token back to life.
|
|
166
|
+
*/
|
|
155
167
|
export function revokeToken(db, role, id) {
|
|
156
168
|
const table = role === 'producer' ? 'producers' : 'consumers';
|
|
157
169
|
db.prepare(`UPDATE ${table} SET revoked_at = strftime('%Y-%m-%dT%H:%M:%fZ','now') WHERE id = ?`).run(id);
|
|
158
170
|
}
|
|
171
|
+
/** Undo revokeToken; returns false when the token was not suspended. */
|
|
172
|
+
export function restoreToken(db, role, id) {
|
|
173
|
+
const table = role === 'producer' ? 'producers' : 'consumers';
|
|
174
|
+
const info = db
|
|
175
|
+
.prepare(`UPDATE ${table} SET revoked_at = NULL WHERE id = ? AND revoked_at IS NOT NULL`)
|
|
176
|
+
.run(id);
|
|
177
|
+
return info.changes > 0;
|
|
178
|
+
}
|
|
179
|
+
/** Active (non-suspended) producers — the scarce resource behind the capacity cap. */
|
|
180
|
+
export function countActiveProducers(db) {
|
|
181
|
+
const row = db
|
|
182
|
+
.prepare('SELECT COUNT(*) AS n FROM producers WHERE revoked_at IS NULL')
|
|
183
|
+
.get();
|
|
184
|
+
return row.n;
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Persist liveness at most once per interval: the WHERE clause swallows writes
|
|
188
|
+
* that would land inside the window, so callers can call this on every request
|
|
189
|
+
* or heartbeat without write amplification. ISO-Z strings compare lexicographically.
|
|
190
|
+
*/
|
|
191
|
+
const LAST_SEEN_INTERVAL_MS = 10 * 60_000;
|
|
192
|
+
export function touchLastSeen(db, role, id) {
|
|
193
|
+
const table = role === 'producer' ? 'producers' : 'consumers';
|
|
194
|
+
const now = new Date().toISOString();
|
|
195
|
+
const cutoff = new Date(Date.now() - LAST_SEEN_INTERVAL_MS).toISOString();
|
|
196
|
+
db.prepare(`UPDATE ${table} SET last_seen_at = ?
|
|
197
|
+
WHERE id = ? AND (last_seen_at IS NULL OR last_seen_at < ?)`).run(now, id, cutoff);
|
|
198
|
+
}
|
|
159
199
|
// ---- invites (producer self-service admission) ----
|
|
160
200
|
export function insertInvite(db, codeHash, name, expiresAt, codePlain = null) {
|
|
161
201
|
const info = db
|
|
@@ -171,33 +211,82 @@ export function findInviteByHash(db, hash) {
|
|
|
171
211
|
}
|
|
172
212
|
export function listInvites(db, reveal = false) {
|
|
173
213
|
return db
|
|
174
|
-
.prepare(`SELECT id, name, created_at, expires_at, revoked_at, redeemed_at, producer_id
|
|
175
|
-
|
|
214
|
+
.prepare(`SELECT i.id, i.name, i.created_at, i.expires_at, i.revoked_at, i.redeemed_at, i.producer_id,
|
|
215
|
+
p.revoked_at AS producer_revoked_at${reveal ? ', i.code_plain AS code' : ''}
|
|
216
|
+
FROM invites i LEFT JOIN producers p ON p.id = i.producer_id
|
|
217
|
+
ORDER BY i.id DESC`)
|
|
176
218
|
.all();
|
|
177
219
|
}
|
|
178
|
-
|
|
179
|
-
|
|
220
|
+
export function getInviteByProducer(db, producerId) {
|
|
221
|
+
return db.prepare('SELECT * FROM invites WHERE producer_id = ?').get(producerId);
|
|
222
|
+
}
|
|
223
|
+
/**
|
|
224
|
+
* Revoke works at any lifecycle stage. On a redeemed invite the caller is
|
|
225
|
+
* expected to suspend the linked producer in the same transaction (one code,
|
|
226
|
+
* one producer — revoking the code is revoking the person).
|
|
227
|
+
*/
|
|
228
|
+
export function revokeInviteById(db, id) {
|
|
180
229
|
const info = db
|
|
181
230
|
.prepare(`UPDATE invites SET revoked_at = strftime('%Y-%m-%dT%H:%M:%fZ','now')
|
|
182
|
-
WHERE id = ? AND
|
|
231
|
+
WHERE id = ? AND revoked_at IS NULL`)
|
|
232
|
+
.run(id);
|
|
233
|
+
return info.changes > 0;
|
|
234
|
+
}
|
|
235
|
+
/** Undo revokeInviteById; returns false when the invite was not revoked. */
|
|
236
|
+
export function restoreInviteById(db, id) {
|
|
237
|
+
const info = db
|
|
238
|
+
.prepare('UPDATE invites SET revoked_at = NULL WHERE id = ? AND revoked_at IS NOT NULL')
|
|
183
239
|
.run(id);
|
|
184
240
|
return info.changes > 0;
|
|
185
241
|
}
|
|
242
|
+
/** Expired codes are dropped only when someone actually tries them (lazy cleanup). */
|
|
243
|
+
export function deleteInvite(db, id) {
|
|
244
|
+
db.prepare('DELETE FROM invites WHERE id = ?').run(id);
|
|
245
|
+
}
|
|
246
|
+
/**
|
|
247
|
+
* Suspend a producer and flag its redeemed invite in one transaction with one
|
|
248
|
+
* timestamp — whichever handle the operator uses (token id or invite id), both
|
|
249
|
+
* sides of the pairing move together. Returns false when the producer was
|
|
250
|
+
* already suspended (the invite flag then already holds).
|
|
251
|
+
*/
|
|
252
|
+
export function suspendProducer(db, producerId) {
|
|
253
|
+
const ts = new Date().toISOString();
|
|
254
|
+
const tx = db.transaction(() => {
|
|
255
|
+
const info = db
|
|
256
|
+
.prepare('UPDATE producers SET revoked_at = ? WHERE id = ? AND revoked_at IS NULL')
|
|
257
|
+
.run(ts, producerId);
|
|
258
|
+
db.prepare('UPDATE invites SET revoked_at = ? WHERE producer_id = ? AND revoked_at IS NULL').run(ts, producerId);
|
|
259
|
+
return info.changes > 0;
|
|
260
|
+
});
|
|
261
|
+
return tx();
|
|
262
|
+
}
|
|
263
|
+
/** The exact inverse of suspendProducer: token works again, invite unflagged. */
|
|
264
|
+
export function restoreProducer(db, producerId) {
|
|
265
|
+
const tx = db.transaction(() => {
|
|
266
|
+
const info = db
|
|
267
|
+
.prepare('UPDATE producers SET revoked_at = NULL WHERE id = ? AND revoked_at IS NOT NULL')
|
|
268
|
+
.run(producerId);
|
|
269
|
+
db.prepare('UPDATE invites SET revoked_at = NULL WHERE producer_id = ?').run(producerId);
|
|
270
|
+
return info.changes > 0;
|
|
271
|
+
});
|
|
272
|
+
return tx();
|
|
273
|
+
}
|
|
186
274
|
/**
|
|
187
275
|
* Atomically consume the invite and create its producer: claim first, then
|
|
188
276
|
* insert, linking them inside one transaction. A name clash throws inside the
|
|
189
277
|
* transaction so the claim rolls back — the code survives a 409. The name comes
|
|
190
278
|
* from the invite when bound, from the redeeming producer when not. The
|
|
191
|
-
* producer token hash is minted by the caller
|
|
279
|
+
* producer token hash is minted by the caller; its plaintext is returned to
|
|
280
|
+
* them exactly once and never stored.
|
|
192
281
|
*/
|
|
193
|
-
export function redeemInvite(db, invite, tokenHash, identity,
|
|
282
|
+
export function redeemInvite(db, invite, tokenHash, identity, now = new Date().toISOString()) {
|
|
194
283
|
const tx = db.transaction(() => {
|
|
195
284
|
const claim = db
|
|
196
285
|
.prepare('UPDATE invites SET redeemed_at = ? WHERE id = ? AND redeemed_at IS NULL')
|
|
197
286
|
.run(now, invite.id);
|
|
198
287
|
if (claim.changes === 0)
|
|
199
288
|
throw new Error('already-redeemed');
|
|
200
|
-
const producer = insertProducer(db, identity.name, tokenHash, identity.email
|
|
289
|
+
const producer = insertProducer(db, identity.name, tokenHash, identity.email);
|
|
201
290
|
db.prepare('UPDATE invites SET producer_id = ? WHERE id = ?').run(producer.id, invite.id);
|
|
202
291
|
return producer;
|
|
203
292
|
});
|
|
@@ -279,6 +368,7 @@ export function listOfferingsForConsumer(db, consumerId) {
|
|
|
279
368
|
.prepare(`SELECT o.* FROM offerings o
|
|
280
369
|
JOIN grants g ON g.producer_id = o.producer_id AND g.alias = o.alias
|
|
281
370
|
WHERE g.consumer_id = ?
|
|
371
|
+
AND (g.expires_at IS NULL OR g.expires_at > strftime('%Y-%m-%dT%H:%M:%fZ','now'))
|
|
282
372
|
ORDER BY o.alias`)
|
|
283
373
|
.all(consumerId);
|
|
284
374
|
}
|
package/apps/hub/dist/db.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"db.js","sourceRoot":"","sources":["../src/db.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"db.js","sourceRoot":"","sources":["../src/db.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,15 @@
|
|
|
1
1
|
import type Database from 'better-sqlite3';
|
|
2
2
|
import type { Logger } from 'pino';
|
|
3
3
|
import type { AuthContext } from './auth.js';
|
|
4
|
+
import type { HubConfig } from './config.js';
|
|
4
5
|
import { type Router } from './http.js';
|
|
5
6
|
import type { FixedWindowLimiter } from './limiter.js';
|
|
6
7
|
export interface InviteDeps {
|
|
7
8
|
db: Database.Database;
|
|
8
9
|
auth: AuthContext;
|
|
9
10
|
log: Logger;
|
|
11
|
+
config: HubConfig;
|
|
12
|
+
onProducerRevoked: (producerId: number) => void;
|
|
10
13
|
limiter: FixedWindowLimiter;
|
|
11
14
|
}
|
|
12
15
|
export declare function registerInviteRoutes(router: Router, deps: InviteDeps): void;
|
package/apps/hub/dist/invites.js
CHANGED
|
@@ -1,8 +1,15 @@
|
|
|
1
1
|
import { INVITE_PATTERN } from '../../../packages/protocol/dist/index.js';
|
|
2
2
|
import { requireAdmin } from './auth.js';
|
|
3
|
-
import { findInviteByHash, getProducerByName, insertInvite, listInvites, redeemInvite,
|
|
3
|
+
import { countActiveProducers, deleteInvite, findInviteByHash, getInviteById, getProducerById, getProducerByName, insertInvite, listInvites, redeemInvite, restoreInviteById, restoreProducer, revokeInviteById, suspendProducer, } from './db.js';
|
|
4
4
|
import { HttpError, readJson, sendJson } from './http.js';
|
|
5
5
|
import { generateInviteCode, generateToken, hashToken } from './tokens.js';
|
|
6
|
+
/** Redeeming mints a producer — it needs a free tenant slot like any admission. */
|
|
7
|
+
function requireProducerCapacity(db, config) {
|
|
8
|
+
const active = countActiveProducers(db);
|
|
9
|
+
if (active >= config.maxProducers) {
|
|
10
|
+
throw new HttpError(403, 'HUB_FULL', `hub is full (${active} active producers, max ${config.maxProducers}) — the operator must suspend one first: aweshare hub token revoke --role producer --id N`);
|
|
11
|
+
}
|
|
12
|
+
}
|
|
6
13
|
/**
|
|
7
14
|
* Producer admission by invite. Two modes:
|
|
8
15
|
* - bound: the admin allocates the name at create (the alias namespace stays a
|
|
@@ -11,8 +18,10 @@ import { generateInviteCode, generateToken, hashToken } from './tokens.js';
|
|
|
11
18
|
* on the producer row — batch hand-out without pre-allocation.
|
|
12
19
|
* Either way the secret itself is self-served: the producer redeems the code
|
|
13
20
|
* over the public endpoint and receives the token — no admin round-trip. Codes
|
|
14
|
-
* are single-use, optionally expiring
|
|
15
|
-
*
|
|
21
|
+
* are single-use, optionally expiring; revocation is reversible suspension and
|
|
22
|
+
* revoking a redeemed code suspends the producer it minted (one code, one
|
|
23
|
+
* producer — the code is a handle for the same suspension). Lookup is by
|
|
24
|
+
* peppered hash; the plaintext is kept only for the admin's --reveal view.
|
|
16
25
|
*/
|
|
17
26
|
/** Namespace rules (same as admin token issuance; it becomes the alias prefix). */
|
|
18
27
|
const NAME_PATTERN = /^[a-z0-9][a-z0-9-]{1,31}$/;
|
|
@@ -68,10 +77,52 @@ export function registerInviteRoutes(router, deps) {
|
|
|
68
77
|
const id = Number(ctx.params.id);
|
|
69
78
|
if (!Number.isInteger(id))
|
|
70
79
|
throw new HttpError(400, 'INVALID_ID', 'invite id must be an integer');
|
|
71
|
-
const
|
|
72
|
-
if (
|
|
73
|
-
|
|
74
|
-
|
|
80
|
+
const invite = getInviteById(db, id);
|
|
81
|
+
if (!invite)
|
|
82
|
+
throw new HttpError(404, 'INVITE_NOT_FOUND', `no invite with id ${id}`);
|
|
83
|
+
// A redeemed code suspends its producer (and its tunnel); a pending one
|
|
84
|
+
// just dies. Either way nothing is deleted — restore undoes this.
|
|
85
|
+
let suspended = null;
|
|
86
|
+
let revoked;
|
|
87
|
+
if (invite.producer_id !== null) {
|
|
88
|
+
revoked = true; // the pairing is suspended; the invite flag moves with it
|
|
89
|
+
const producer = getProducerById(db, invite.producer_id);
|
|
90
|
+
if (producer && suspendProducer(db, producer.id)) {
|
|
91
|
+
// suspendProducer flags this invite too — one transaction, one timestamp
|
|
92
|
+
suspended = { id: producer.id, name: producer.name };
|
|
93
|
+
deps.onProducerRevoked(producer.id);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
else {
|
|
97
|
+
revoked = revokeInviteById(db, id);
|
|
98
|
+
}
|
|
99
|
+
deps.log.info({ id, suspended: suspended?.name ?? null }, 'invite revoked');
|
|
100
|
+
sendJson(ctx.res, 200, { revoked, id, suspended });
|
|
101
|
+
});
|
|
102
|
+
// Undo of DELETE above. A pending code simply pairs again (its original
|
|
103
|
+
// expiry still applies); a redeemed one brings its suspended producer back,
|
|
104
|
+
// re-taking a tenant slot — hence the capacity check.
|
|
105
|
+
router.add('POST', '/admin/v1/invites/:id/restore', (ctx) => {
|
|
106
|
+
requireAdmin(ctx.req, auth);
|
|
107
|
+
const id = Number(ctx.params.id);
|
|
108
|
+
if (!Number.isInteger(id))
|
|
109
|
+
throw new HttpError(400, 'INVALID_ID', 'invite id must be an integer');
|
|
110
|
+
const invite = getInviteById(db, id);
|
|
111
|
+
if (!invite)
|
|
112
|
+
throw new HttpError(404, 'INVITE_NOT_FOUND', `no invite with id ${id}`);
|
|
113
|
+
let restoredProducer = null;
|
|
114
|
+
if (invite.producer_id !== null) {
|
|
115
|
+
const producer = getProducerById(db, invite.producer_id);
|
|
116
|
+
if (producer?.revoked_at) {
|
|
117
|
+
requireProducerCapacity(db, deps.config);
|
|
118
|
+
restoreProducer(db, producer.id); // clears the invite flag too
|
|
119
|
+
restoredProducer = { id: producer.id, name: producer.name };
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
const restored = restoredProducer !== null || restoreInviteById(db, id);
|
|
123
|
+
if (restored)
|
|
124
|
+
deps.log.info({ id }, 'invite restored');
|
|
125
|
+
sendJson(ctx.res, 200, { restored, id, restoredProducer });
|
|
75
126
|
});
|
|
76
127
|
router.add('POST', '/invites/v1/redeem', async (ctx) => {
|
|
77
128
|
// one shared bucket: behind a tunnel the origin cannot see real client IPs,
|
|
@@ -86,9 +137,11 @@ export function registerInviteRoutes(router, deps) {
|
|
|
86
137
|
const invite = findInviteByHash(db, hashToken(body.code, auth.pepper));
|
|
87
138
|
if (!invite)
|
|
88
139
|
throw new HttpError(404, 'INVITE_NOT_FOUND', 'unknown invite code');
|
|
89
|
-
if (invite.revoked_at)
|
|
90
|
-
throw new HttpError(410, 'INVITE_REVOKED', 'this invite was revoked');
|
|
140
|
+
if (invite.revoked_at) {
|
|
141
|
+
throw new HttpError(410, 'INVITE_REVOKED', 'this invite was revoked — ask the operator to restore it (aweshare hub invite restore) or mint a fresh one');
|
|
142
|
+
}
|
|
91
143
|
if (invite.expires_at && invite.expires_at <= new Date().toISOString()) {
|
|
144
|
+
deleteInvite(db, invite.id); // lazy cleanup: expired codes die when tried
|
|
92
145
|
throw new HttpError(410, 'INVITE_EXPIRED', 'this invite has expired');
|
|
93
146
|
}
|
|
94
147
|
// resolve the identity: bound invites own their name; unbound ones require
|
|
@@ -119,8 +172,9 @@ export function registerInviteRoutes(router, deps) {
|
|
|
119
172
|
// no name pre-check: the transaction below claims the invite first, so a
|
|
120
173
|
// spent code reports INVITE_REDEEMED even though its producer name exists,
|
|
121
174
|
// and a genuine name clash rolls the claim back to NAME_TAKEN
|
|
175
|
+
requireProducerCapacity(db, deps.config);
|
|
122
176
|
const token = generateToken('producer');
|
|
123
|
-
const result = redeemInvite(db, invite, hashToken(token, auth.pepper), { name, email }
|
|
177
|
+
const result = redeemInvite(db, invite, hashToken(token, auth.pepper), { name, email });
|
|
124
178
|
if (result === 'already-redeemed') {
|
|
125
179
|
throw new HttpError(409, 'INVITE_REDEEMED', 'this invite code was already used');
|
|
126
180
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"invites.js","sourceRoot":"","sources":["../src/invites.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAIlD,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"invites.js","sourceRoot":"","sources":["../src/invites.ts"],"names":[],"mappings":"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"}
|
package/apps/hub/dist/server.js
CHANGED
|
@@ -20,15 +20,23 @@ export function createHubServer(opts = {}) {
|
|
|
20
20
|
const adminToken = readAdminToken(paths) ?? loadOrCreateAdminToken(paths);
|
|
21
21
|
const auth = { db, pepper, adminToken };
|
|
22
22
|
const router = new Router();
|
|
23
|
+
const tunnel = new Tunnel(db, auth, config, log);
|
|
23
24
|
router.add('GET', '/healthz', (ctx) => sendJson(ctx.res, 200, { ok: true }));
|
|
24
|
-
registerAdminRoutes(router, {
|
|
25
|
+
registerAdminRoutes(router, {
|
|
26
|
+
db,
|
|
27
|
+
auth,
|
|
28
|
+
log,
|
|
29
|
+
config,
|
|
30
|
+
onProducerRevoked: (producerId) => tunnel.disconnectProducer(producerId),
|
|
31
|
+
});
|
|
25
32
|
registerInviteRoutes(router, {
|
|
26
33
|
db,
|
|
27
34
|
auth,
|
|
28
35
|
log,
|
|
36
|
+
config,
|
|
37
|
+
onProducerRevoked: (producerId) => tunnel.disconnectProducer(producerId),
|
|
29
38
|
limiter: new FixedWindowLimiter(config.inviteRedeemPerMinute),
|
|
30
39
|
});
|
|
31
|
-
const tunnel = new Tunnel(db, auth, config, log);
|
|
32
40
|
registerConsumerRoutes(router, {
|
|
33
41
|
db,
|
|
34
42
|
auth,
|