@@ -51,12 +51,18 @@ def _get_src_ip() -> str:
51
51
return request .remote_addr
52
52
53
53
if 'X-Real-IP' in request .headers :
54
- return request .headers ['X-Real-IP' ]. replace ( '::ffff:' , '' )
54
+ ip = request .headers ['X-Real-IP' ]
55
55
56
- if 'X-Forwarded-For' in request .headers :
57
- return request .headers ['X-Forwarded-For' ]. replace ( '::ffff:' , '' )
56
+ elif 'X-Forwarded-For' in request .headers :
57
+ ip = request .headers ['X-Forwarded-For' ]
58
58
59
- return request .remote_addr
59
+ else :
60
+ ip = request .remote_addr
61
+
62
+ if ip .startswith ('::ffff:' ):
63
+ return ip [7 :]
64
+
65
+ return ip
60
66
61
67
62
68
# curl -XPOST https://risk.oxl.app/api/report --data '{"ip": "1.1.1.1", "cat": "bot"}' -H 'Content-Type: application/json'
@@ -67,8 +73,12 @@ def report() -> Response:
67
73
68
74
data = request .get_json ()
69
75
70
- if 'ip' in data and data ['ip' ].startswith ('::ffff:' ):
71
- data ['ip' ] = data ['ip' ].replace ('::ffff:' , '' )
76
+ if 'ip' in data :
77
+ if data ['ip' ].startswith ('::ffff:' ):
78
+ data ['ip' ] = data ['ip' ][7 :]
79
+
80
+ if data ['ip' ].endswith ('.x' ):
81
+ data ['ip' ] = f"{ data ['ip' ][:- 1 ]} 0"
72
82
73
83
if 'ip' not in data or not valid_public_ip (data ['ip' ]):
74
84
return _response_json (code = 400 , data = {'msg' : 'Invalid IP provided' })
@@ -101,7 +111,7 @@ def report() -> Response:
101
111
@app .route ('/api/ip/<ip>' , methods = ['GET' ])
102
112
def check (ip ) -> Response :
103
113
if ip .startswith ('::ffff:' ):
104
- ip = ip . replace ( '::ffff:' , '' )
114
+ ip = ip [ 7 :]
105
115
106
116
if not valid_public_ip (ip ):
107
117
return _response_json (code = 400 , data = {'msg' : 'Invalid IP provided' })
@@ -121,7 +131,7 @@ def check(ip) -> Response:
121
131
@app .route ('/api/net/<ip>' , methods = ['GET' ])
122
132
def check_net (ip ) -> Response :
123
133
if ip .startswith ('::ffff:' ):
124
- ip = ip . replace ( '::ffff:' , '' )
134
+ ip = ip [ 7 :]
125
135
126
136
if ip .find ('/' ) != - 1 :
127
137
ip = ip .split ('/' , 1 )[0 ]
0 commit comments