Beispiel #1
0
from flask import request
from bson import json_util

from liberouterapi import auth, db
from liberouterapi.modules.module import Module
from liberouterapi.Auth import AuthException
from liberouterapi.user import User

au = Module('authorization',
            __name__,
            url_prefix='/authorization',
            no_version=True)


@au.route('', methods=['POST'])
def login():
    """
	Authorize user using their username and password
	@return user's document from the DB including config
	"""
    user_data = request.get_json()

    if not user_data:
        raise AuthException("Missing user data")

    user = User(user_data['username'], password=user_data['password'])

    auth_user = auth.login(user)

    user = User.from_dict(auth_user)
Beispiel #2
0
from liberouterapi import config
from liberouterapi.dbConnector import dbConnector
from liberouterapi.modules.module import Module

# Load Alerts configuration file if Alerts section is not present in current config
if 'alerts' not in config.config.sections():
    config.load(path=__path__[0] + '/config.ini')
    conf_path = config['alerts']

# Alerts and filters collection set up
alerts_conn = dbConnector('alerts', provider='mongodb', config={'database': config['alerts']['database']})
alerts_coll = alerts_conn.db[config['alerts']['collection']]
filters_coll = alerts_conn.db[config['alerts']['collection2']]

# Register a blueprint
alerts_bp = Module('alerts', __name__, url_prefix='/alerts', no_version=True)

from .fill_db import *
from .alerts import *
from .filters import *

# Some testing functions to fill database with random alerts and delete all records in database
# fill_db_with_n(1000000)
# print(format_datetime("2019-11-28 14:34:33.373067"))
# delete_data_from_db()

# Get limited number of records for one page
alerts_bp.add_url_rule('/alert-page', view_func=get_limited_number_of_records, methods=['GET'])

# Set array of alerts status to confirmed
alerts_bp.add_url_rule('/set-confirmed', view_func=set_confirmed, methods=['POST'])
Beispiel #3
0
# Load NEMEA configuration file if nemea section is not present in current config
if "nemea" not in config.config.sections():
    config.load(path = __path__[0] + '/config.ini')
    conf_path = config['nemea']

# We need collection for NEMEA Events and Dashboard to be set up
nemea_conn = dbConnector("nemea",
        provider = "mongodb",
        config = {
            'database' : config['nemea']['database']
            })

nemea = nemea_conn.db[config['nemea']['collection']]

# Register a blueprint
nemea_bp = Module('nemea', __name__, url_prefix='/nemea', no_version=True)

from .events import *
from .Query import query
from .Stats import aggregate, top, count
from .Reporters import *
from .Status import *
from .supervisor.controllers import *

# Create index for DetectTime
nemea_bp.add_url_rule('/indexes', view_func=indexes, methods=['GET'])

# Get last N events
nemea_bp.add_url_rule('/events/<int:items>', view_func=get_last_events, methods=['GET'])

# Create a query based on GET params
Beispiel #4
0
import json
from flask import request
import logging

from liberouterapi import auth, db
from liberouterapi.dbConnector import dbConnector
from liberouterapi.modules.module import Module
from liberouterapi.user import User, UserException
from liberouterapi.role import Role

log = logging.getLogger(__name__)

user_db = dbConnector()

users = Module('users', __name__, url_prefix='/users', no_version=True)


def user_exists(user):
    if db.get("users", "username", user.username):
        return True
    elif db.get("users", "email", user.email):
        return True
    return False


@auth.required()
def get_users():
    res = list(db.getAll("users"))

    # Remove password hash from the resulting query
    for user in res:
Beispiel #5
0
Author: Jakub Man <*****@*****.**>
"""

from liberouterapi import config
from liberouterapi.dbConnector import dbConnector
from liberouterapi.modules.module import Module

if 'netconf' not in config.config.sections():
    config.load(path=__path__[0] + '/config.ini')
    conf_path = config['netconf']

from .connections import *
from .netconf import *

netconf_bp = Module('netconf',
                    __name__,
                    url_prefix='/netconf',
                    no_version=True)

# Devices
netconf_bp.add_url_rule('/devices', view_func=devices_get, methods=['GET'])
netconf_bp.add_url_rule('/device', view_func=device_add, methods=['POST'])

# Connections
netconf_bp.add_url_rule('/connect', view_func=connect_device, methods=['POST'])

# Sessions
netconf_bp.add_url_rule('/session/alive/<key>',
                        view_func=session_alive,
                        methods=['GET'])
netconf_bp.add_url_rule('/session/<key>',
                        view_func=session_destroy,
Beispiel #6
0
from liberouterapi.role import Role
from liberouterapi.modules.module import Module
#from liberouterapi.ConfigurationDatabase import ConfigurationDatabase as ConfDB
from bson import json_util as json
from pymongo import ReturnDocument


class ConfError(ApiException):
    status_code = 400


# Initialize connector to the configuration collection
db = dbConnector()

conf = Module('configuration',
              __name__,
              url_prefix='/configuration',
              no_version=True)


@conf.route('', methods=['GET'])
@auth.required()
def get_conf():
    res = list(db.getAll("configuration"))

    parsed = list()

    for item in res:
        parsed_item = json.loads(item['value'])
        parsed_item['name'] = item['name']
        parsed.append(parsed_item)
    return (json.dumps(parsed))
from backports import configparser
from liberouterapi import app, config
from liberouterapi.modules.module import Module

config.load(path=__path__[0] + '/config.ini')

# Register a blueprint
scgui_bp = Module('SecurityCloudGUI',
                  __name__,
                  url_prefix='/scgui',
                  no_version=True)

from .base import *

# scgui/stats
scgui_bp.add_url_rule('/stats', view_func=getStatistics, methods=['GET'])

# scgui/profiles
scgui_bp.add_url_rule('/profiles', view_func=getProfile, methods=['GET'])
# TODO: updateProfile (PUT method)
scgui_bp.add_url_rule('/profiles', view_func=createProfile, methods=['POST'])
scgui_bp.add_url_rule('/profiles', view_func=deleteProfile, methods=['DELETE'])

# scgui/query/fields
scgui_bp.add_url_rule('/query/fields',
                      view_func=getQueryFields,
                      methods=['GET'])

# scgui/query/instance
scgui_bp.add_url_rule('/query/instance', view_func=getQuery, methods=['GET'])
scgui_bp.add_url_rule('/query/instance',