From efd8f1e0fb8409f5e7bca63f50dcb21662804b5b Mon Sep 17 00:00:00 2001 From: Heiko Burkhardt Date: Wed, 8 Nov 2023 09:09:10 +0100 Subject: [PATCH] fix: disable session check for billboard --- .github/workflows/deploy-billboard.yml | 3 ++- docker/billboard/docker-compose.yml | 4 +++- packages/backend/src/index.ts | 1 + packages/backend/src/profile.ts | 6 +++++ packages/lib/delivery/src/UserProfile.ts | 10 +++++--- .../offchain-resolver/src/http/profile.ts | 14 +++++++---- .../profile/getProfileContainer.ts | 9 ++++++-- .../src/persistance/profile/setUserProfile.ts | 23 +++++++++++-------- 8 files changed, 49 insertions(+), 21 deletions(-) diff --git a/.github/workflows/deploy-billboard.yml b/.github/workflows/deploy-billboard.yml index 433b1004f..cc6a68913 100644 --- a/.github/workflows/deploy-billboard.yml +++ b/.github/workflows/deploy-billboard.yml @@ -28,7 +28,7 @@ jobs: env: TARGET_HOST: ${{ secrets.STAGING_HOST_BILLBOARD }} run: | - echo "REACT_APP_ADDR_ENS_SUBDOMAIN=.beta-addr.dm3.eth" >> ./.env.react + echo "REACT_APP_ADDR_ENS_SUBDOMAIN=.bb-addr.dm3.eth" >> ./.env.react echo "REACT_APP_BACKEND=http://${{ secrets.STAGING_HOST_BILLBOARD }}/api" >> ./.env.react echo "REACT_APP_DEFAULT_DELIVERY_SERVICE=beta-ds.dm3.eth" >> ./.env.react echo "REACT_APP_DEFAULT_SERVICE=http://${{ secrets.STAGING_HOST_BILLBOARD }}/api" >> ./.env.react @@ -52,6 +52,7 @@ jobs: echo "RPC=${{ secrets.STAGING_RPC }}" >> ./.env echo "BILLBOARD_PRIVATE_KEY=${{ secrets.BILLBOARD_PRIVATE_KEY}}" >> ./.env echo "interceptor=${{ secrets.INTERCEPTOR}}" >> ./.env + echo "DISABLE_SESSION_CHECK='true'" >> ./.env envsubst '${SSL_CERTIFICATE_BASE_LOC} ${TLS_CERTIFICATE_LOCATION} ${TARGET_HOST}' < ./docker/nginx.conf > ./nginx.conf cat ./.env - name: Build docker image diff --git a/docker/billboard/docker-compose.yml b/docker/billboard/docker-compose.yml index bac4f3fc2..d3e9b0b12 100644 --- a/docker/billboard/docker-compose.yml +++ b/docker/billboard/docker-compose.yml @@ -7,6 +7,7 @@ services: restart: always depends_on: - billboard-client + - backend - ccip-resolver volumes: - ./nginx.conf:/etc/nginx/nginx.conf @@ -25,6 +26,7 @@ services: SIGNING_PRIVATE_KEY: ${SIGNING_PRIVATE_KEY} ENCRYPTION_PUBLIC_KEY: ${ENCRYPTION_PUBLIC_KEY} ENCRYPTION_PRIVATE_KEY: ${ENCRYPTION_PRIVATE_KEY} + DISABLE_SESSION_CHECK: ${DISABLE_SESSION_CHECK} RPC: ${RPC} PORT: 8081 LOG_LEVEL: 'debug' @@ -43,7 +45,7 @@ services: PORT: 8083 time: 0 privateKey: ${BILLBOARD_PRIVATE_KEY} - ensNames: '["billboard1.bb-user.dm3.eth"]' + ensNames: '["billboard1.bb.dm3.eth"]' mediators: '[]' REDIS_URL: redis://db:6379 RPC: ${RPC} diff --git a/packages/backend/src/index.ts b/packages/backend/src/index.ts index 63c04ae80..568cfdaa4 100644 --- a/packages/backend/src/index.ts +++ b/packages/backend/src/index.ts @@ -16,6 +16,7 @@ import Profile from './profile'; import RpcProxy from './rpc/rpc-proxy'; import Storage from './storage'; import { logInfo } from 'dm3-lib-shared'; +import 'dotenv/config'; import { errorHandler, diff --git a/packages/backend/src/profile.ts b/packages/backend/src/profile.ts index c22baf2ec..00faee919 100644 --- a/packages/backend/src/profile.ts +++ b/packages/backend/src/profile.ts @@ -49,6 +49,8 @@ export default () => { method: 'POST', url: req.url, ensName, + disableSessionCheck: + process.env.DISABLE_SESSION_CHECK === 'true', }); const data = await submitUserProfile( @@ -69,6 +71,10 @@ export default () => { res.json(data); } catch (e) { + global.logger.warn({ + message: 'POST profile', + error: JSON.stringify(e), + }); res.status(400).send({ message: `Couldn't store profile`, error: JSON.stringify(e), diff --git a/packages/lib/delivery/src/UserProfile.ts b/packages/lib/delivery/src/UserProfile.ts index 3ffee5aea..71e4bd579 100644 --- a/packages/lib/delivery/src/UserProfile.ts +++ b/packages/lib/delivery/src/UserProfile.ts @@ -38,11 +38,13 @@ export async function submitUserProfile( send: (socketId: string) => void, ): Promise { const account = normalizeEnsName(ensName); + console.log('1', account, signedUserProfile); if (!(await checkUserProfile(provider, signedUserProfile, account))) { throw Error('Signature invalid.'); } - //TODO: remvoe DISABLE_SESSION_CHECK + console.log('2', process.env.DISABLE_SESSION_CHECK); + //TODO: remvoe DISABLE_SESSION_CHECK // DISABLE_SESSION_CHECK is a special solution for ETH Prague if ( process.env.DISABLE_SESSION_CHECK !== 'true' && @@ -50,6 +52,7 @@ export async function submitUserProfile( ) { throw Error('Profile exists already'); } + console.log('3'); const session: Session = { account, signedUserProfile, @@ -57,16 +60,17 @@ export async function submitUserProfile( createdAt: new Date().getTime(), profileExtension: getDefaultProfileExtension(), }; + console.log('4', session); await setSession(account.toLocaleLowerCase(), session); - + console.log('5'); await handlePendingConversations( account, getSession, getPendingConversations, send, ); - + console.log('6'); return session.token; } diff --git a/packages/offchain-resolver/src/http/profile.ts b/packages/offchain-resolver/src/http/profile.ts index ec022e4e3..3a5a2c8ff 100644 --- a/packages/offchain-resolver/src/http/profile.ts +++ b/packages/offchain-resolver/src/http/profile.ts @@ -85,11 +85,15 @@ export function profile(web3Provider: ethers.providers.BaseProvider) { error: 'address has already claimed a subdomain', }); } - - await req.app.locals.db.setUserProfile( - `${address}.user.ethprague.dm3.eth`, - signedUserProfile, - hotAddr, + global.logger.debug({ + message: 'nameP setAlias', + hotAddr: hotAddr + '.bb-addr.dm3.eth', + alias: `${address}.bb-user.dm3.eth`, + }); + + await req.app.locals.db.setAlias( + hotAddr + '.bb-addr.dm3.eth', + `${address}.bb-user.dm3.eth`, ); return res.sendStatus(200); diff --git a/packages/offchain-resolver/src/persistance/profile/getProfileContainer.ts b/packages/offchain-resolver/src/persistance/profile/getProfileContainer.ts index 6eefcb4bc..3689c0e7b 100644 --- a/packages/offchain-resolver/src/persistance/profile/getProfileContainer.ts +++ b/packages/offchain-resolver/src/persistance/profile/getProfileContainer.ts @@ -14,6 +14,11 @@ export type ProfileContainer = { export function getProfileContainer(db: PrismaClient) { return async (name: string) => { + global.logger.debug({ + message: 'getProfileContainer call', + nameHash: ethers.utils.namehash(name), + name, + }); const profileContainer = await db.profileContainer.findUnique({ where: { nameHash: ethers.utils.namehash(name), @@ -31,7 +36,7 @@ export function getProfileContainer(db: PrismaClient) { } : null; global.logger.debug({ - message: 'getProfileContainer', + message: 'getProfileContainer found', nameHash: ethers.utils.namehash(name), profileContainerResult, }); @@ -39,7 +44,7 @@ export function getProfileContainer(db: PrismaClient) { return profileContainerResult; } else { global.logger.debug({ - message: 'getProfileContainer', + message: 'getProfileContainer not found', nameHash: ethers.utils.namehash(name), }); // try to find an alias which equlas name diff --git a/packages/offchain-resolver/src/persistance/profile/setUserProfile.ts b/packages/offchain-resolver/src/persistance/profile/setUserProfile.ts index 5b1cc1e78..c77d8f22f 100644 --- a/packages/offchain-resolver/src/persistance/profile/setUserProfile.ts +++ b/packages/offchain-resolver/src/persistance/profile/setUserProfile.ts @@ -35,26 +35,31 @@ export function setUserProfile(db: PrismaClient) { const nameHash = ethers.utils.namehash(name); try { + const id = uuidv4(); + global.logger.debug({ + message: 'pre setUserProfile', + id, + nameHash, + profile: JSON.stringify(profile), + address: formatAddress(address), + ensName: normalizeEnsName(name), + }); await db.profileContainer.create({ data: { - id: uuidv4(), + id, nameHash, profile: JSON.stringify(profile), address: formatAddress(address), ensName: normalizeEnsName(name), }, }); - global.logger.debug({ - message: 'setUserProfile', - id: uuidv4(), - nameHash, - profile: JSON.stringify(profile), - address: formatAddress(address), - ensName: normalizeEnsName(name), - }); return true; } catch (e) { + global.logger.warn({ + message: `setUserProfile error`, + error: JSON.stringify(e), + }); return false; } };