Skip to content

Commit 650b88e

Browse files
committed
Drop backend env var and guard admin proxy
1 parent 488135d commit 650b88e

File tree

5 files changed

+18
-31
lines changed

5 files changed

+18
-31
lines changed

.env.example

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,8 @@ DISCORD_APPLICATION_ID=dummy_discord_app_id
3333
# Frontend/Public Variables
3434
NEXT_PUBLIC_CB_ENVIRONMENT=dev
3535
NEXT_PUBLIC_CODEBUFF_APP_URL=http://localhost:3000
36-
NEXT_PUBLIC_CODEBUFF_BACKEND_URL=localhost:4242
3736
NEXT_PUBLIC_SUPPORT_EMAIL=support@codebuff.com
3837
NEXT_PUBLIC_POSTHOG_API_KEY=phc_dummy_posthog_key
3938
NEXT_PUBLIC_POSTHOG_HOST_URL=https://us.i.posthog.com
4039
NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY=pk_test_dummy_publishable
41-
NEXT_PUBLIC_STRIPE_CUSTOMER_PORTAL=https://billing.stripe.com/p/login/test_dummy
40+
NEXT_PUBLIC_STRIPE_CUSTOMER_PORTAL=https://billing.stripe.com/p/login/test_dummy

common/src/env-schema.ts

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ export const CLIENT_ENV_PREFIX = 'NEXT_PUBLIC_'
55
export const clientEnvSchema = z.object({
66
NEXT_PUBLIC_CB_ENVIRONMENT: z.enum(['dev', 'test', 'prod']),
77
NEXT_PUBLIC_CODEBUFF_APP_URL: z.url().min(1),
8-
NEXT_PUBLIC_CODEBUFF_BACKEND_URL: z.string().min(1),
98
NEXT_PUBLIC_SUPPORT_EMAIL: z.email().min(1),
109
NEXT_PUBLIC_POSTHOG_API_KEY: z.string().min(1),
1110
NEXT_PUBLIC_POSTHOG_HOST_URL: z.url().min(1),
@@ -26,8 +25,6 @@ export type ClientEnv = z.infer<typeof clientEnvSchema>
2625
export const clientProcessEnv: ClientInput = {
2726
NEXT_PUBLIC_CB_ENVIRONMENT: process.env.NEXT_PUBLIC_CB_ENVIRONMENT,
2827
NEXT_PUBLIC_CODEBUFF_APP_URL: process.env.NEXT_PUBLIC_CODEBUFF_APP_URL,
29-
NEXT_PUBLIC_CODEBUFF_BACKEND_URL:
30-
process.env.NEXT_PUBLIC_CODEBUFF_BACKEND_URL,
3128
NEXT_PUBLIC_SUPPORT_EMAIL: process.env.NEXT_PUBLIC_SUPPORT_EMAIL,
3229
NEXT_PUBLIC_POSTHOG_API_KEY: process.env.NEXT_PUBLIC_POSTHOG_API_KEY,
3330
NEXT_PUBLIC_POSTHOG_HOST_URL: process.env.NEXT_PUBLIC_POSTHOG_HOST_URL,

sdk/src/client.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { BACKEND_URL, WEBSITE_URL } from './constants'
1+
import { WEBSITE_URL } from './constants'
22
import { run } from './run'
33
import { API_KEY_ENV_VAR } from '../../common/src/old-constants'
44

sdk/src/constants.ts

Lines changed: 0 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -5,25 +5,3 @@ export { IS_DEV, IS_TEST, IS_PROD }
55
export const CODEBUFF_BINARY = 'codebuff'
66

77
export const WEBSITE_URL = env.NEXT_PUBLIC_CODEBUFF_APP_URL
8-
9-
const DEFAULT_BACKEND_URL = 'manicode-backend.onrender.com'
10-
const DEFAULT_BACKEND_URL_DEV = 'localhost:4242'
11-
function isLocalhost(url: string) {
12-
return url.includes('localhost') || url.includes('127.0.0.1')
13-
}
14-
15-
function getWebsocketUrl(url: string) {
16-
return isLocalhost(url) ? `ws://${url}/ws` : `wss://${url}/ws`
17-
}
18-
export const WEBSOCKET_URL = getWebsocketUrl(
19-
env.NEXT_PUBLIC_CODEBUFF_BACKEND_URL ||
20-
(IS_PROD ? DEFAULT_BACKEND_URL : DEFAULT_BACKEND_URL_DEV),
21-
)
22-
23-
function getBackendUrl(url: string) {
24-
return isLocalhost(url) ? `http://${url}` : `https://${url}`
25-
}
26-
export const BACKEND_URL = getBackendUrl(
27-
env.NEXT_PUBLIC_CODEBUFF_BACKEND_URL ||
28-
(IS_PROD ? DEFAULT_BACKEND_URL : DEFAULT_BACKEND_URL_DEV),
29-
)

web/src/app/api/admin/relabel-for-user/route.ts

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,19 @@ import { logger } from '@/util/logger'
1111

1212
// Helper to construct backend URL
1313
function getBackendUrl() {
14-
const backendUrl = env.NEXT_PUBLIC_CODEBUFF_BACKEND_URL || 'localhost:4242'
15-
const protocol = backendUrl.startsWith('localhost') ? 'http://' : 'https://'
16-
return `${protocol}${backendUrl}`
14+
try {
15+
const parsed = new URL(env.NEXT_PUBLIC_CODEBUFF_APP_URL)
16+
// Avoid proxying to the same local instance to prevent recursion
17+
if (
18+
parsed.hostname === 'localhost' ||
19+
parsed.hostname === '127.0.0.1'
20+
) {
21+
return null
22+
}
23+
return parsed.origin
24+
} catch {
25+
return null
26+
}
1727
}
1828

1929
// Helper to forward request to backend
@@ -24,6 +34,9 @@ async function forwardToBackend(
2434
body?: any,
2535
): Promise<Response> {
2636
const backendUrl = getBackendUrl()
37+
if (!backendUrl) {
38+
throw new Error('Admin relabel backend is not configured')
39+
}
2740
const url = `${backendUrl}/api/admin/relabel-for-user?userId=${userId}`
2841

2942
const headers: HeadersInit = {

0 commit comments

Comments
 (0)