Simple server list added
This commit is contained in:
70
server-list.py
Normal file
70
server-list.py
Normal file
@@ -0,0 +1,70 @@
|
||||
from flask import Flask, request, jsonify
|
||||
from flask_sqlalchemy import SQLAlchemy
|
||||
from datetime import datetime, timedelta
|
||||
import threading
|
||||
|
||||
app = Flask(__name__)
|
||||
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///servers.db'
|
||||
db = SQLAlchemy(app)
|
||||
|
||||
class Server(db.Model):
|
||||
id = db.Column(db.Integer, primary_key=True)
|
||||
name = db.Column(db.String(50), nullable=False)
|
||||
description = db.Column(db.String(100))
|
||||
ip = db.Column(db.String(15), nullable=False)
|
||||
port = db.Column(db.Integer, nullable=False)
|
||||
last_updated = db.Column(db.DateTime, nullable=False)
|
||||
|
||||
def __init__(self, name, description, ip, port):
|
||||
self.name = name
|
||||
self.description = description
|
||||
self.ip = ip
|
||||
self.port = port
|
||||
self.last_updated = datetime.utcnow()
|
||||
|
||||
def update_last_updated(self):
|
||||
self.last_updated = datetime.utcnow()
|
||||
|
||||
@app.route('/servers', methods=['POST'])
|
||||
def add_server():
|
||||
data = request.get_json()
|
||||
server = Server(data['name'], data['description'], data['ip'], data['port'])
|
||||
db.session.add(server)
|
||||
db.session.commit()
|
||||
return jsonify({'message': 'Server added successfully'}), 201
|
||||
|
||||
@app.route('/servers', methods=['GET'])
|
||||
def get_servers():
|
||||
servers = Server.query.all()
|
||||
server_list = []
|
||||
for server in servers:
|
||||
server_data = {
|
||||
'name': server.name,
|
||||
'description': server.description,
|
||||
'ip': server.ip,
|
||||
'port': server.port
|
||||
}
|
||||
server_list.append(server_data)
|
||||
return jsonify(server_list)
|
||||
|
||||
def remove_inactive_servers():
|
||||
inactive_threshold = datetime.utcnow() - timedelta(minutes=5)
|
||||
inactive_servers = Server.query.filter(Server.last_updated < inactive_threshold).all()
|
||||
for server in inactive_servers:
|
||||
db.session.delete(server)
|
||||
db.session.commit()
|
||||
|
||||
def check_inactive_servers():
|
||||
while True:
|
||||
remove_inactive_servers()
|
||||
# Sleep for 5 minutes before checking again
|
||||
time.sleep(300)
|
||||
|
||||
if __name__ == '__main__':
|
||||
db.create_all()
|
||||
|
||||
# Start a separate thread for checking inactive servers
|
||||
checker_thread = threading.Thread(target=check_inactive_servers)
|
||||
checker_thread.start()
|
||||
|
||||
app.run()
|
||||
Reference in New Issue
Block a user