Skip to content

Commit 859fb41

Browse files
using logger
edit all message add some condition for check server instace
1 parent 9243533 commit 859fb41

File tree

3 files changed

+54
-18
lines changed

3 files changed

+54
-18
lines changed

bun.lockb

0 Bytes
Binary file not shown.

src/services/getip.ts

+23-4
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,39 @@
11
import { headersToCheck } from "../constants"
22
import { IPHeaders } from "../types"
3+
import { logger } from "./logger"
34

45
export const getIP = (
56
headers: Headers,
67
checkHeaders: IPHeaders[] = headersToCheck,
78
) => {
8-
if (typeof checkHeaders === "string" && headers.get(checkHeaders))
9+
if (typeof checkHeaders === "string" && headers.get(checkHeaders)) {
10+
logger("getIP", `Found ip from header ${checkHeaders}`)
911
return headers.get(checkHeaders)
12+
}
13+
1014
// X-Forwarded-For is the de-facto standard header
11-
if (headers.get("x-forwarded-for"))
15+
if (headers.get("x-forwarded-for")) {
16+
logger("getIP", "IP From Header x-forwarded-for")
1217
return headers.get("x-forwarded-for")?.split(",")[0]
18+
}
19+
20+
if (!checkHeaders) {
21+
logger("getIP", "checkHeaders `false` return `null`")
22+
return null
23+
}
24+
1325
let clientIP: string | undefined | null = null
14-
if (!checkHeaders) return null
1526
for (const header of checkHeaders) {
1627
clientIP = headers.get(header)
17-
if (clientIP) break
28+
if (clientIP) {
29+
logger("getIP", `Found ip from header ${header}`)
30+
break
31+
}
32+
}
33+
34+
if (!clientIP) {
35+
logger("getIP", "Failed to get ip from header!")
36+
return
1837
}
1938
return clientIP
2039
}

src/services/plugin.ts

+31-14
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
import { Elysia } from "elysia"
22
import { getIP } from "./getip"
33
import { defaultOptions } from "../constants"
4+
import { logger } from "./logger"
5+
46
import type { Options } from "../types"
57

68
export const plugin = (userOptions?: Partial<Options>) => (app: Elysia) => {
@@ -13,23 +15,38 @@ export const plugin = (userOptions?: Partial<Options>) => (app: Elysia) => {
1315
new Elysia({
1416
name: "elysia-ip",
1517
}).derive({ as: "global" }, ({ request }): { ip: string } => {
16-
if (!options.headersOnly && globalThis.Bun) {
17-
const socketAddress = options.injectServer(app)?.requestIP(request)
18-
if (socketAddress) return { ip: socketAddress.address }
19-
else {
20-
console.log(
21-
`Elysia server is not initialized. Make sure to call Elyisa.listen()`,
22-
)
23-
console.log(`use injectServer to inject Server instance`)
18+
serverIP: {
19+
if (!options.headersOnly && globalThis.Bun) {
20+
const server = options.injectServer(app)
21+
if (!server) {
22+
logger(
23+
"plugin",
24+
"Elysia server is not initialized. Make sure to call Elyisa.listen()",
25+
)
26+
logger("plugin", "use injectServer to inject Server instance")
27+
break serverIP
28+
}
29+
30+
if (!server.requestIP) {
31+
logger("plugin", "server.requestIP is null")
32+
logger("plugin", "Please check server instace")
33+
break serverIP
34+
}
35+
36+
const socketAddress = server.requestIP(request)
37+
logger("plugin", "socketAddress", socketAddress)
38+
if (!socketAddress) {
39+
logger(
40+
"plugin",
41+
`ip from server.requestIP return ${typeof socketAddress}`,
42+
)
43+
break serverIP
44+
}
45+
return { ip: socketAddress.address }
2446
}
2547
}
2648
return {
27-
ip:
28-
getIP(request.headers, options.checkHeaders) ||
29-
(function () {
30-
console.log("Failed to get ip from header!")
31-
return ""
32-
})(),
49+
ip: getIP(request.headers, options.checkHeaders) || "",
3350
}
3451
}),
3552
)

0 commit comments

Comments
 (0)