import os
from flask import Flask, request, session
from flask_restful import Api, Resource
from flask_cors import CORS, cross_origin
from .tunnelstat import SSHSession

app = Flask(__name__)
app.config['LOCAL_DEV'] = True
app.config['DEBUG'] = True
app.config['SECRET_KEY'] = 'asdasfdfj'
import datetime
app.config['PERMANENT_SESSION_LIFETIME'] = datetime.timedelta(seconds=3600)
app.config['SESSION_REFRESH_EACH_REQUEST'] = True
app.config['SESSION_COOKIE_NAME'] = 'tessession'
#app.config['SESSION_COOKIE_SECURE'] = True
#app.config['SESSION_COOKIE_HTTPONLY'] = True
#app.config['SESSION_COOKIE_SAMESITE'] = 'Strict'
app.config['APPLICATION_ROOT'] = '/'
if not app.config['LOCAL_DEV']:
    app.config['APPLICATION_ROOT'] = '/tes'
api = Api(app)
sshsessions = {}
CORS(app, supports_credentials=True, origin="*")
islocal = True

from . import apiendpoints

@app.after_request
def after_cleanup_sessions(response):
    import logging
    logger=logging.getLogger()
    sshsessid = session.get('sshsessid', None)

    # kvsessionextension.cleanup_sessions(app)
    _ttl = app.config['PERMANENT_SESSION_LIFETIME']
    if isinstance(_ttl, int):
        ttl = datetime.timedelta(seconds=_ttl)
    else:
        ttl = _ttl
    for k, sshsess in list(sshsessions.items()):
        if datetime.datetime.now() > sshsess.last + ttl:
            logger.debug("session last seen at {} now {}".format(sshsess.last,datetime.datetime.now()))
            sshsess.kill()
            del sshsessions[k]
    return response


if __name__ == '__main__':
    app.run(port=8080)