Skip to content
Snippets Groups Projects
Commit 4874ae35 authored by Chris Hines's avatar Chris Hines
Browse files

fix a bug with session timeouts

parent 4a7e5cd7
No related branches found
No related tags found
No related merge requests found
from tes import app
#import logging
import logging
#logging.basicConfig(filename="tes.log",format="%(asctime)s %(levelname)s:%(process)s: %(message)s")
#logger=logging.getLogger()
#logger.setLevel(logging.DEBUG)
logger=logging.getLogger()
logger.setLevel(logging.DEBUG)
app.run(host='localhost',debug=True,port=5000)
......@@ -8,7 +8,7 @@ app = Flask(__name__)
app.config['DEBUG'] = True
app.config['SECRET_KEY'] = 'asdasfdfj'
import datetime
app.config['PERMANENT_SESSION_LIFETIME'] = datetime.timedelta(seconds=600)
app.config['PERMANENT_SESSION_LIFETIME'] = datetime.timedelta(seconds=1200)
app.config['SESSION_REFRESH_EACH_REQUEST'] = True
api = Api(app)
sshsessions = {}
......@@ -19,7 +19,12 @@ from . import apiendpoints
@app.after_request
def after_cleanup_sessions(response):
print("in after_cleanup_sessions")
import logging
logger=logging.getLogger()
logger.debug("in after_cleanup_sessions")
sshsessid = session.get('sshsessid', None)
print("the sshsessid for this request was {}".format(sshsessid))
# kvsessionextension.cleanup_sessions(app)
_ttl = app.config['PERMANENT_SESSION_LIFETIME']
if isinstance(_ttl, int):
......@@ -28,6 +33,7 @@ def after_cleanup_sessions(response):
ttl = _ttl
for k, sshsess in list(sshsessions.items()):
if datetime.datetime.now() > sshsess.last + ttl:
print("session last seen at {} now {}".format(sshsess.last,datetime.datetime.now()))
sshsess.kill()
del sshsessions[k]
return response
......
......@@ -66,6 +66,7 @@ class StartAgent(Resource):
class AddKey(Resource):
def post(self):
session.permanent = True
from .localtunnelstat import SSHSession
sshsess = SSHSession.get_sshsession()
data = request.get_json()
......@@ -162,6 +163,7 @@ class Stat(Resource):
logger.info('/stat endpoint entered')
params = get_conn_params()
sshsess = SSHSession.get_sshsession()
sshsess.refresh()
logger.info('/stat endpoint, all parameters collected')
try:
res = Ssh.execute(sshsess, host=params['host'], user=params['user'], cmd=params['statcmd'])
......
......@@ -113,6 +113,10 @@ class SSHSession:
def refresh(self):
import datetime
self.last = datetime.datetime.now()
import logging
logger = logging.getLogger()
logger.debug("updated datetime to {} for {}".format(self.last,self.authtok))
print("updated datetime to {} for {}".format(self.last,self.authtok))
def set_authtok(self,authtok):
self.authtok = authtok
......@@ -123,7 +127,11 @@ class SSHSession:
def kill(self):
import os
import signal
import logging
logger=logging.getLogger()
print("killing all processes associated with this sshsession")
logger.debug("shuting down ssh session for {} last seen at {}".format(self.authtok,self.last))
print("shuting down ssh session for {} last seen at {}".format(self.authtok,self.last))
print(self.pids)
for pid in self.pids:
try:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment