Beispiel #1
0
def post_fork():
    global session

    create_logger(__name__).info("logging in as system")
    session = Session()
    create_logger(__name__).info(
        f"logged in as system with sessionid: {session.session_id}")
Beispiel #2
0
    def __init__(self):
        user = AppInfo.system_credentials()
        self.session_id = AppInfo.login(user['username'], user['password'])
        if self.session_id == None:
            create_logger(__name__).info(
                "username / password wrong or user is disaled")

        context = AppInfo.create_context(self.session_id)
        context.get_session_values()['timer_interval'] = 0
        context.get_session_values()['timer_unit'] = 'm'
        AppInfo.save_context(context)
Beispiel #3
0
    def render_status_template(context, http_status, err_desc):
        www_root=AppInfo.get_current_config("ui","wwwroot",exception=True)

        path=f"templates/error/{http_status}.htm"
        default_template="templates/error/default.htm"

        template=None
        log.create_logger(__name__).info(f"{FileSystemTools.format_path(www_root)}{path}")

        if os.path.isfile(f"{FileSystemTools.format_path(www_root)}{path}"):
            template=JinjaTemplate.create_file_template(context, path).render({"error": http_status, "description": err_desc})
        elif os.path.isfile(f"{FileSystemTools.format_path(www_root)}{default_template}"):
            template=JinjaTemplate.create_file_template(context, default_template).render({"error": http_status, "description": err_desc})
        else:
            template=JinjaTemplate.create_string_template(context,
            """<div>Statuscode_:{{ error }}</div><div>Description:{{ description }}</div>"""
            ).render({"error": http_status, "description": err_desc})

        return template
Beispiel #4
0
    def post(self):
        username = ""
        password = ""

        next = HTTPRequest.redirect(request)

        if 'username' in request.headers:
            username = request.headers.get("username")
            password = request.headers.get("password")
        elif 'username' in request.form:
            username = request.form.get("username")
            password = request.form.get("password")
        elif 'restapi_username' in request.form:
            username = request.form.get("restapi_username")
            password = request.form.get("restapi_password")

        log.create_logger(__name__).info(f"{username} {password}")
        session_id = AppInfo.login(username, password)

        log.create_logger(__name__).info(f"{request.accept_mimetypes}")

        if session_id == None:
            if next == None:
                abort(400, 'wrong username or password')
            else:
                return redirect(
                    f"/ui/login?redirect={next}&msg=Wrong username or password",
                    code=302)
        else:
            session['session_id'] = session_id
            g.context = AppInfo.create_context(session_id)

            if next == None:
                response = make_response({
                    "session_id": session_id,
                    "status": "logged_on"
                })
                response.headers['content-type'] = 'text/json'
                return response
            else:
                return redirect(next, code=302)
Beispiel #5
0
def every_minute(signum):
    context = AppInfo.create_context(session.session_id)

    interval = int(context.get_session_values()['timer_interval']) + 1
    context.get_session_values()['timer_interval'] = interval
    unit = context.get_session_values()['timer_unit']
    create_logger(__name__).info(f"Interval: {interval}")
    AppInfo.save_context(context, close_context=False)

    #every minute
    execute_plugin(context, "$timer_every_minute", {})

    # every ten minutes
    if interval % 10 == 0:
        execute_plugin(context, "$timer_every_ten_minutes", {})

    # every hour
    if interval % 60 == 0:
        execute_plugin(context, "$timer_every_hour", {})

    AppInfo.save_context(context)
Beispiel #6
0
    def __init__(self, fetch_xml, context):
        self._logger=log.create_logger(__name__)
        self._fetch_xml=fetch_xml
        self._context=context

        self._sql_type=""
        self._sql_where=""
        self._sql_table=""
        self._sql_table_alias=""
        self._sql_table_join=""
        self._sql_select="*"
        self._sql_comment=""
        self._sql_order=""
        self._sql_group_by=""
        self._sql_paramaters_order=[]
        self._json_fields={} # for insert and update
        self._tables=[]
        self._sql_parameters_where=[]
        self._table_aliases={}
        self._columns_desc=[]
        self.parse()
Beispiel #7
0
import decimal
from flask import Flask, request, abort, g, session
from flask import Blueprint
from flask_restplus import Resource, Api, reqparse
from flaskext.mysql import MySQL
from datetime import date, datetime, time, timedelta

from core.appinfo import AppInfo
from services.fetchxml import build_fetchxml_by_alias
from services.database import DatabaseServices
from core.fetchxmlparser import FetchXmlParser
from core.jsontools import json_serial
from core.exceptions import RestApiNotAllowed
from core import log

logger = log.create_logger(__name__)


def create_parser():
    parser = reqparse.RequestParser()
    return parser


class EntityListFilter(Resource):
    api = AppInfo.get_api()

    @api.doc(parser=create_parser())
    def post(self):
        try:
            parser = create_parser().parse_args()
            context = g.context
Beispiel #8
0
def async_action(arguments):
    context = AppInfo.create_context(session.session_id)
    create_logger(__name__).info("spool")
    AppInfo.save_context(context)
Beispiel #9
0
def execute_plugin(context, publisher, params):
    create_logger(__name__).info(publisher)
    plugin = Plugin(context, publisher, 'execute')
    plugin.execute('after', {'input': params, 'output': {}})
Beispiel #10
0
import json
import pymysql.cursors
from flask import Flask, Blueprint
from flask_restplus import Resource, Api, reqparse
from flaskext.mysql import MySQL
from pymysql.cursors import DictCursor
import uuid

from core.context import Context
from config import CONFIG
from core.log import create_logger
from core.exceptions import ConfigNotValid

logger=create_logger(__name__)

class CustomFlask(Flask):

    def add_url_rule(self, rule, endpoint=None, view_func=None, **options):
        if rule=='/' and endpoint.endswith('root'):
            logger.info(f"Rule {rule} for endpoint {endpoint} not accepted!")
            return

        logger.info(f"Add rule {rule} for endpoint {endpoint}")
        return super(CustomFlask, self).add_url_rule(rule, endpoint, view_func, **options)


class AppInfo:
    _app=None
    _api=None
    _content_api=None
    _ui_api=None