You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

62 lines
1.6 KiB
Python

from flask import Flask, request
from flask_sqlalchemy import SQLAlchemy
import os
app = Flask(__name__)
def get_env_variable(name):
try:
return os.environ[name]
except KeyError:
message = "Expected environment variable '{}' not set.".format(name)
raise Exception(message)
# the values of those depend on your setup
POSTGRES_URL = get_env_variable("POSTGRES_URL")
POSTGRES_USER = get_env_variable("POSTGRES_USER")
POSTGRES_PW = get_env_variable("POSTGRES_PW")
POSTGRES_DB = get_env_variable("POSTGRES_DB")
DB_URL = 'postgresql+psycopg2://{user}:{pw}@{url}/{db}'.format(user=POSTGRES_USER, pw=POSTGRES_PW, url=POSTGRES_URL,
db=POSTGRES_DB)
app.config['SQLALCHEMY_DATABASE_URI'] = DB_URL
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False # silence the deprecation warning
db = SQLAlchemy(app)
class Clients(db.Model):
_tablename__ = 'clients'
id = db.Column(db.Integer, primary_key=True)
userip = db.Column(db.String(12))
@app.route("/alive")
def alive():
return "alive"
@app.route("/ready")
def ready():
return "ready"
@app.route("/")
def hello():
if 'X-Forwarded-For' in request.headers:
proxy_data = request.headers['X-Forwarded-For']
ip_list = proxy_data.split(',')
user_ip = ip_list[0] # first address in list is User IP
else:
user_ip = request.remote_addr # For local development
print(user_ip)
dropalch(user_ip)
return "Sup World!"
def dropalch(user_ip):
newip = Clients(userip=user_ip)
db.session.add(newip)
db.session.commit()
if __name__ == '__main__':
app.run(host='0.0.0.0')