Add scheduler and logging
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
This commit is contained in:
parent
320207e3b0
commit
a3abcbe28d
@ -1,18 +0,0 @@
|
|||||||
import json
|
|
||||||
|
|
||||||
import requests
|
|
||||||
|
|
||||||
from pynyaata.config import CLOUDPROXY_ENDPOINT
|
|
||||||
|
|
||||||
json_session = requests.post(CLOUDPROXY_ENDPOINT, data=json.dumps({
|
|
||||||
'cmd': 'sessions.list'
|
|
||||||
}))
|
|
||||||
response = json.loads(json_session.text)
|
|
||||||
sessions = response['sessions']
|
|
||||||
|
|
||||||
for session in sessions:
|
|
||||||
requests.post(CLOUDPROXY_ENDPOINT, data=json.dumps({
|
|
||||||
'cmd': 'sessions.destroy',
|
|
||||||
'session': session
|
|
||||||
}))
|
|
||||||
print('Destroyed %s' % session)
|
|
@ -2,10 +2,13 @@ from asyncio import get_event_loop, set_event_loop, SelectorEventLoop
|
|||||||
from functools import wraps
|
from functools import wraps
|
||||||
from operator import attrgetter, itemgetter
|
from operator import attrgetter, itemgetter
|
||||||
|
|
||||||
from flask import redirect, render_template, request, url_for, abort
|
import requests
|
||||||
|
from flask import redirect, render_template, request, url_for, abort, json
|
||||||
|
from requests import RequestException
|
||||||
|
|
||||||
from . import utils
|
from . import utils
|
||||||
from .config import app, auth, ADMIN_USERNAME, ADMIN_PASSWORD, MYSQL_ENABLED, APP_PORT, IS_DEBUG
|
from .config import app, auth, logger, scheduler, ADMIN_USERNAME, ADMIN_PASSWORD, MYSQL_ENABLED, APP_PORT, IS_DEBUG, \
|
||||||
|
CLOUDPROXY_ENDPOINT
|
||||||
from .connectors import get_instance, run_all
|
from .connectors import get_instance, run_all
|
||||||
from .connectors.core import ConnectorLang, ConnectorReturn
|
from .connectors.core import ConnectorLang, ConnectorReturn
|
||||||
from .forms import SearchForm, DeleteForm, EditForm
|
from .forms import SearchForm, DeleteForm, EditForm
|
||||||
@ -191,6 +194,28 @@ def admin_edit(link_id=None):
|
|||||||
return render_template('admin/edit.html', search_form=SearchForm(), link=link, folders=folders, action_form=form)
|
return render_template('admin/edit.html', search_form=SearchForm(), link=link, folders=folders, action_form=form)
|
||||||
|
|
||||||
|
|
||||||
|
@scheduler.task('interval', id='flaredestroyy', days=1)
|
||||||
|
def flaredestroyy():
|
||||||
|
if CLOUDPROXY_ENDPOINT:
|
||||||
|
try:
|
||||||
|
json_session = requests.post(CLOUDPROXY_ENDPOINT, data=json.dumps({
|
||||||
|
'cmd': 'sessions.list'
|
||||||
|
}))
|
||||||
|
response = json.loads(json_session.text)
|
||||||
|
sessions = response['sessions']
|
||||||
|
|
||||||
|
for session in sessions:
|
||||||
|
requests.post(CLOUDPROXY_ENDPOINT, data=json.dumps({
|
||||||
|
'cmd': 'sessions.destroy',
|
||||||
|
'session': session
|
||||||
|
}))
|
||||||
|
logger.info('Destroyed %s' % session)
|
||||||
|
except RequestException as e:
|
||||||
|
logger.exception(e)
|
||||||
|
|
||||||
|
|
||||||
def run():
|
def run():
|
||||||
app.config['SQLALCHEMY_ECHO'] = IS_DEBUG
|
app.config['SQLALCHEMY_ECHO'] = IS_DEBUG
|
||||||
|
scheduler.start()
|
||||||
|
flaredestroyy()
|
||||||
app.run('0.0.0.0', APP_PORT, IS_DEBUG)
|
app.run('0.0.0.0', APP_PORT, IS_DEBUG)
|
||||||
|
@ -1,7 +1,9 @@
|
|||||||
|
import logging
|
||||||
from os import environ, urandom
|
from os import environ, urandom
|
||||||
|
|
||||||
from flask import Flask
|
from flask import Flask
|
||||||
from flask.cli import load_dotenv
|
from flask.cli import load_dotenv
|
||||||
|
from flask_apscheduler import APScheduler
|
||||||
from flask_httpauth import HTTPBasicAuth
|
from flask_httpauth import HTTPBasicAuth
|
||||||
from flask_sqlalchemy import SQLAlchemy
|
from flask_sqlalchemy import SQLAlchemy
|
||||||
|
|
||||||
@ -23,6 +25,9 @@ app.debug = IS_DEBUG
|
|||||||
app.secret_key = urandom(24).hex()
|
app.secret_key = urandom(24).hex()
|
||||||
app.url_map.strict_slashes = False
|
app.url_map.strict_slashes = False
|
||||||
auth = HTTPBasicAuth()
|
auth = HTTPBasicAuth()
|
||||||
|
scheduler = APScheduler(app=app)
|
||||||
|
logging.basicConfig(level=(logging.DEBUG if IS_DEBUG else logging.INFO))
|
||||||
|
logger = logging.getLogger(app.name)
|
||||||
|
|
||||||
db_host = environ.get('MYSQL_SERVER')
|
db_host = environ.get('MYSQL_SERVER')
|
||||||
if db_host:
|
if db_host:
|
||||||
@ -31,7 +36,7 @@ if db_host:
|
|||||||
db_password = environ.get('MYSQL_PASSWORD')
|
db_password = environ.get('MYSQL_PASSWORD')
|
||||||
db_name = environ.get('MYSQL_DATABASE')
|
db_name = environ.get('MYSQL_DATABASE')
|
||||||
if not db_user or not db_password or not db_name:
|
if not db_user or not db_password or not db_name:
|
||||||
print('Missing connection environment variables')
|
logger.error('Missing connection environment variables')
|
||||||
exit()
|
exit()
|
||||||
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://%s:%s@%s/%s?charset=utf8mb4' % (
|
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://%s:%s@%s/%s?charset=utf8mb4' % (
|
||||||
db_user, db_password, db_host, db_name
|
db_user, db_password, db_host, db_name
|
||||||
|
@ -4,13 +4,12 @@ from datetime import datetime
|
|||||||
from enum import Enum
|
from enum import Enum
|
||||||
from functools import wraps
|
from functools import wraps
|
||||||
from json import dumps, loads
|
from json import dumps, loads
|
||||||
from logging import getLogger
|
|
||||||
from urllib.parse import urlencode
|
from urllib.parse import urlencode
|
||||||
|
|
||||||
import requests
|
import requests
|
||||||
from requests import RequestException
|
from requests import RequestException
|
||||||
|
|
||||||
from ..config import CACHE_TIMEOUT, REQUESTS_TIMEOUT, CLOUDPROXY_ENDPOINT
|
from ..config import CACHE_TIMEOUT, REQUESTS_TIMEOUT, CLOUDPROXY_ENDPOINT, logger
|
||||||
|
|
||||||
cloudproxy_session = None
|
cloudproxy_session = None
|
||||||
|
|
||||||
@ -128,7 +127,7 @@ def curl_content(url, params=None, ajax=False, debug=True):
|
|||||||
cloudproxy_session = None
|
cloudproxy_session = None
|
||||||
except RequestException as e:
|
except RequestException as e:
|
||||||
if debug:
|
if debug:
|
||||||
getLogger().exception(e)
|
logger.exception(e)
|
||||||
|
|
||||||
return {'http_code': http_code, 'output': output}
|
return {'http_code': http_code, 'output': output}
|
||||||
|
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
Flask==1.1.2
|
Flask==1.1.2
|
||||||
|
Flask-APScheduler==1.11.0
|
||||||
Flask-SQLAlchemy==2.4.4
|
Flask-SQLAlchemy==2.4.4
|
||||||
Flask-HTTPAuth==4.2.0
|
Flask-HTTPAuth==4.2.0
|
||||||
Flask-WTF==0.14.3
|
Flask-WTF==0.14.3
|
||||||
|
Reference in New Issue
Block a user