diff --git a/server/db/pg/schema.ts b/server/db/pg/schema.ts index c7a1eebf..657e22eb 100644 --- a/server/db/pg/schema.ts +++ b/server/db/pg/schema.ts @@ -536,6 +536,7 @@ export const olms = pgTable("olms", { olmId: varchar("id").primaryKey(), secretHash: varchar("secretHash").notNull(), dateCreated: varchar("dateCreated").notNull(), + version: text("version").notNull(), clientId: integer("clientId").references(() => clients.clientId, { onDelete: "cascade" }) diff --git a/server/db/sqlite/schema.ts b/server/db/sqlite/schema.ts index 4268cd9f..730ae4ea 100644 --- a/server/db/sqlite/schema.ts +++ b/server/db/sqlite/schema.ts @@ -243,6 +243,7 @@ export const olms = sqliteTable("olms", { olmId: text("id").primaryKey(), secretHash: text("secretHash").notNull(), dateCreated: text("dateCreated").notNull(), + version: text("version").notNull(), clientId: integer("clientId").references(() => clients.clientId, { onDelete: "cascade" }) diff --git a/server/routers/olm/handleOlmRegisterMessage.ts b/server/routers/olm/handleOlmRegisterMessage.ts index 5128e9e1..7eb3d978 100644 --- a/server/routers/olm/handleOlmRegisterMessage.ts +++ b/server/routers/olm/handleOlmRegisterMessage.ts @@ -21,7 +21,7 @@ export const handleOlmRegisterMessage: MessageHandler = async (context) => { return; } const clientId = olm.clientId; - const { publicKey, relay } = message.data; + const { publicKey, relay, olmVersion } = message.data; logger.debug( `Olm client ID: ${clientId}, Public Key: ${publicKey}, Relay: ${relay}` @@ -65,14 +65,26 @@ export const handleOlmRegisterMessage: MessageHandler = async (context) => { } }); - // THIS IS FOR BACKWARDS COMPATIBILITY - await sendToClient(olm.olmId, { - type: "olm/wg/holepunch", - data: { - serverPubKey: allExitNodes[0].publicKey, - endpoint: allExitNodes[0].endpoint - } - }); + if (!olmVersion) { + // THIS IS FOR BACKWARDS COMPATIBILITY + // THE OLDER CLIENTS DID NOT SEND THE VERSION + await sendToClient(olm.olmId, { + type: "olm/wg/holepunch", + data: { + serverPubKey: allExitNodes[0].publicKey, + endpoint: allExitNodes[0].endpoint + } + }); + } + } + + if (olmVersion) { + await db + .update(olms) + .set({ + version: olmVersion + }) + .where(eq(olms.olmId, olm.olmId)); } if (now - (client.lastHolePunch || 0) > 6) {