36 lines
888 B
Python
36 lines
888 B
Python
|
# fz_ip_validator.py
|
||
|
from flask import Flask, request, jsonify
|
||
|
from datetime import datetime
|
||
|
import logging
|
||
|
|
||
|
app = Flask(__name__)
|
||
|
|
||
|
# Configure logging
|
||
|
logging.basicConfig(filename='/home/doc/ip_validator.log', level=logging.INFO)
|
||
|
|
||
|
# Sample in-memory abuse list (replace with file/db lookup in production)
|
||
|
abuse_list = set([
|
||
|
'1.2.3.4', # example flagged IP
|
||
|
'5.6.7.8'
|
||
|
])
|
||
|
|
||
|
@app.route('/validate', methods=['GET'])
|
||
|
def validate():
|
||
|
ip = request.args.get('ip', request.remote_addr)
|
||
|
now = datetime.utcnow().isoformat()
|
||
|
|
||
|
# Log the IP
|
||
|
logging.info(f"{now} - IP validation request from {ip}")
|
||
|
|
||
|
# Check if IP is in abuse list
|
||
|
is_abusive = ip in abuse_list
|
||
|
|
||
|
return jsonify({
|
||
|
"ip": ip,
|
||
|
"valid": not is_abusive,
|
||
|
"reason": "Flagged for abuse" if is_abusive else "OK"
|
||
|
})
|
||
|
|
||
|
if __name__ == '__main__':
|
||
|
app.run(host='0.0.0.0', port=5024)
|