better code

Massimo Melina committed Apr 25, 2022 at 19:02 UTC 0b68c70a1faeb25e7bfb9dbcdd1e2d67703ad54e
2 files changed +5 -5
server/src/adminApis.ts
+1 -1
@@ -57,7 +57,7 @@ export const adminApis: ApiHandlers = {
57 urls: getUrls(),
58 proxyDetected: getProxyDetected(),
59 frpDetected: getConfig('localhost_admin') && !getProxyDetected()
60 - && getConnections().every(c => isLocalHost(c.ctx || c.socket.remoteAddress || ''))
60 + && getConnections().every(isLocalHost)
61 && await frpDebounced(),
62 }
63
server/src/misc.ts
+4 -4
@@ -10,6 +10,7 @@ import Koa from 'koa'
10 import glob from 'fast-glob'
11 import { IS_WINDOWS } from './const'
12 import { execFile } from 'child_process'
13 +import { Connection } from './connections'
14
15 export type Callback<IN=void, OUT=void> = (x:IN) => OUT
16 export type Dict<T = any> = Record<string, T>
@@ -239,10 +240,9 @@ export function with_<T,RT>(par:T, cb: (par:T) => RT) {
240 return cb(par)
241 }
242
242 -export function isLocalHost(s: string | Koa.Context) {
243 - if (typeof s !== 'string')
244 - s = s.socket.remoteAddress || '' // don't use .ip as it is subject to proxied ips
245 - return s === '127.0.0.1' || s === '::1' || s === '::ffff:127.0.0.1'
243 +export function isLocalHost(c: Connection | Koa.Context) {
244 + const ip = c.socket.remoteAddress // don't use Context.ip as it is subject to proxied ips, and that's no use for localhost detection
245 + return ip && (ip === '::1' || ip.endsWith('127.0.0.1'))
246 }
247
248 export async function* dirStream(path: string) {