示例#1
0
def update_graph4b(start_date, end_date, n, db, meta, metaval, meta_d,
                   metaval_d):
    start_date = pd.to_datetime(start_date)
    start_date = dt.date(start_date)
    end_date = pd.to_datetime(end_date)
    end_date = dt.date(end_date)

    ProtocolUser = db_onnections.ChannelDB(from_data=start_date,
                                           to_data=end_date,
                                           section=db)
    k = neo4j_connections.ne4j_userfilter(column=meta, metaval=metaval)
    if k != 0:
        ProtocolUser = ProtocolUser[ProtocolUser['display_name'].isin(k)]
    k = neo4j_connections.ne4j_devicefilter(column=meta_d, metaval=metaval_d)
    if k != 0:
        ProtocolUser = ProtocolUser[ProtocolUser['hostname'].isin(k)]

    ProtocolUser = ProtocolUser[['hostname', 'protocol']]
    ProtocolUser = pd.crosstab(ProtocolUser.hostname, ProtocolUser.protocol)

    hovertext = list()
    zz = [ProtocolUser[name] for name in ProtocolUser.columns]
    for yi, yy in enumerate(ProtocolUser.columns):
        hovertext.append(list())
        for xi, xx in enumerate(ProtocolUser.index):
            hovertext[-1].append(
                'Protocol: {}<br />Device: {}<br />Connections in the Time Range: {}'
                .format(yy, xx, zz[yi][xi]))

    return {
        'data': [
            go.Heatmap(z=[ProtocolUser[name] for name in ProtocolUser.columns],
                       y=ProtocolUser.columns,
                       x=ProtocolUser.index,
                       hoverinfo='text',
                       text=hovertext,
                       colorscale=[[0, 'rgb(217,217,217)'],
                                   [1, 'rgb(37,52,113)']],
                       showscale=False)
        ],
        'layout':
        go.Layout(title='Protocols vs Devices Globally',
                  font={
                      'family': 'Glacial Indifference',
                      'color': colors['text']
                  },
                  xaxis={
                      'showgrid': True,
                      'showticklabels': True,
                      "tickangle": -35,
                      'linecolor': 'black'
                  },
                  yaxis={
                      'visible': True,
                      "tickangle": -35,
                      'showticklabels': True,
                      'showgrid': True,
                      'linecolor': 'black'
                  })
    }
示例#2
0
def update_graph3b(user, start_date, end_date, n, db):
    start_date = pd.to_datetime(start_date)
    start_date = dt.date(start_date)
    end_date = pd.to_datetime(end_date)
    end_date = dt.date(end_date)

    ProtocolUser = db_onnections.ChannelDB(from_data=start_date,
                                           to_data=end_date,
                                           section=db)
    ProtocolUser = ProtocolUser[ProtocolUser['display_name'] == user]
    ProtocolUser = ProtocolUser[['hostname', 'protocol']]
    #scalar = 1 + ProtocolUser.shape[0]
    ProtocolUser = pd.crosstab(ProtocolUser.hostname, ProtocolUser.protocol)
    # ProtocolUser = ProtocolUser.applymap(lambda x: x / scalar)

    hovertext = list()
    zz = [ProtocolUser[name] for name in ProtocolUser.columns]

    for yi, yy in enumerate(ProtocolUser.columns):
        hovertext.append(list())
        for xi, xx in enumerate(ProtocolUser.index):
            hovertext[-1].append(
                'User: {} <br />Protocol: {}<br />Device: {}<br />Connections in the Time Range: {}'
                .format(user, yy, xx, zz[yi][xi]))

    return {
        'data': [
            go.Heatmap(
                z=[ProtocolUser[name] for name in ProtocolUser.columns],
                y=ProtocolUser.columns,
                x=ProtocolUser.index,
                hoverinfo='text',
                text=hovertext,
                colorscale=[[0, 'rgb(217,217,217)'], [1, 'rgb(37,52,113)']],
                showscale=False,
            )
        ],
        'layout':
        go.Layout(title='Protocols vs Devices by {}'.format(user),
                  font={
                      'family': 'Glacial Indifference',
                      'color': colors['text']
                  },
                  xaxis={
                      'showgrid': True,
                      "tickangle": -35,
                      'showticklabels': True,
                      'linecolor': 'black'
                  },
                  yaxis={
                      'visible': True,
                      "tickangle": -35,
                      'showticklabels': True,
                      'showgrid': True,
                      'linecolor': 'black'
                  })
    }
示例#3
0
def update_db_(db):
    from_day = (pd.to_datetime(datetime.datetime.now()) -
                timedelta(days=120)).strftime("%Y-%m-%d")

    df = db_onnections.ChannelDB(from_data=from_day, section=db)

    df['created_at'] = pd.to_datetime(df['created_at'])

    datamax = df['created_at'].max()
    return datamax
示例#4
0
def update_graph9b(n, start_date, end_date, db):
    start_date = pd.to_datetime(start_date)
    start_date = dt.date(start_date)
    end_date = pd.to_datetime(end_date)
    end_date = dt.date(end_date)

    tempdf = db_onnections.ChannelDB(from_data=start_date,
                                     to_data=end_date,
                                     section=db)

    Users = tempdf[['display_name']].drop_duplicates()
    Users.columns = ['Nome_nodo']
    tempdf['protDev'] = "[" + tempdf.protocol + '] - ' + tempdf.hostname
    tempdf['protDev'] = tempdf['protDev'].replace(' ', '')

    Protocols = tempdf[['protDev']].drop_duplicates()
    Protocols.columns = ['Nome_nodo']
    nodes = pd.concat([Users, Protocols], axis=0)
    refrenza = [x for x in range(0, nodes.shape[0])]

    nodesDict = dict(zip(nodes.Nome_nodo, refrenza))

    links = tempdf[[
        'display_name', 'protocol', 'protDev', 'hostname', 'device'
    ]]
    links = links.groupby(['display_name', 'protDev'], as_index=False).count()
    links['value'] = links['hostname']
    links['source'] = links['display_name'].map(nodesDict)
    links['target'] = links['protDev'].map(nodesDict)
    links = links[links['protDev'] != 'nan']
    links = links[links['display_name'] != 'nan']
    return {
        'data': [
            dict(
                type="sankey",
                domain=dict(x=[0, 1], y=[0, 1]),
                link={
                    "source": links.source.dropna(axis=0, how='any'),
                    "target": links.target.dropna(axis=0, how='any'),
                    "value": links['value'].dropna(axis=0, how='any')
                },
                node=dict(
                    label=nodes.Nome_nodo,
                    pad=6,
                ),
            )
        ],
        'layout':
        go.Layout(title="Sankey Diagram Users vs Protocols-Devices Globally",
                  autosize=True,
                  font={
                      'family': 'Glacial Indifference',
                      'color': colors['text']
                  })
    }
示例#5
0
def update_index2(start_date, end_date, db):
    start_date = pd.to_datetime(start_date)
    start_date = dt.date(start_date)
    end_date = pd.to_datetime(end_date)
    end_date = dt.date(end_date)

    tempdf = db_onnections.ChannelDB(from_data=start_date,
                                     to_data=end_date,
                                     section=db)

    available_users = sorted(tempdf['display_name'].unique())

    return available_users[0]
示例#6
0
def update_index1(start_date, end_date, db):

    start_date = pd.to_datetime(start_date)
    start_date = dt.date(start_date)
    end_date = pd.to_datetime(end_date)
    end_date = dt.date(end_date)

    df = db_onnections.ChannelDB(from_data=start_date,
                                 to_data=end_date,
                                 section=db)
    available_users = sorted(df['display_name'].unique())

    return [{'label': i, 'value': i} for i in available_users]
示例#7
0
def update_index1(start_date, end_date, db, meta, metaval, meta_d, metaval_d):

    start_date = pd.to_datetime(start_date)
    start_date = dt.date(start_date)
    end_date = pd.to_datetime(end_date)
    end_date = dt.date(end_date)

    df = db_onnections.ChannelDB(from_data=start_date,
                                 to_data=end_date,
                                 section=db)
    k = neo4j_connections.ne4j_userfilter(column=meta, metaval=metaval)
    if k != 0:
        df = df[df['display_name'].isin(k)]
    k = neo4j_connections.ne4j_devicefilter(column=meta_d, metaval=metaval_d)
    if k != 0:
        df = df[df['hostname'].isin(k)]
    available_users = sorted(df['display_name'].unique())

    return [{'label': i, 'value': i} for i in available_users]
示例#8
0
def update_index2(start_date, end_date, db, meta, metaval, meta_d, metaval_d):
    start_date = pd.to_datetime(start_date)
    start_date = dt.date(start_date)
    end_date = pd.to_datetime(end_date)
    end_date = dt.date(end_date)

    tempdf = db_onnections.ChannelDB(from_data=start_date,
                                     to_data=end_date,
                                     section=db)
    k = neo4j_connections.ne4j_userfilter(column=meta, metaval=metaval)
    if k != 0:
        tempdf = tempdf[tempdf['display_name'].isin(k)]
    k = neo4j_connections.ne4j_devicefilter(column=meta_d, metaval=metaval_d)
    if k != 0:
        tempdf = tempdf[tempdf['hostname'].isin(k)]
    available_users = sorted(tempdf['display_name'].unique())
    if len(available_users) == 0:
        return "No User"
    else:
        return available_users[0]
示例#9
0
def update_graph3b_dat(start_date, end_date, n, db, meta, metaval, meta_d,
                       metaval_d):
    start_date = pd.to_datetime(start_date)
    start_date = dt.date(start_date)
    end_date = pd.to_datetime(end_date)
    end_date = dt.date(end_date)

    ProtocolUser = db_onnections.ChannelDB(from_data=start_date,
                                           to_data=end_date,
                                           section=db)
    k = neo4j_connections.ne4j_devicefilter(column=meta_d, metaval=metaval_d)
    if k != 0:
        ProtocolUser = ProtocolUser[ProtocolUser['hostname'].isin(k)]
    k = neo4j_connections.ne4j_userfilter(column=meta, metaval=metaval)
    if k != 0:
        ProtocolUser = ProtocolUser[ProtocolUser['display_name'].isin(k)]

    ProtocolUser = ProtocolUser[['hostname', 'protocol']]

    if ProtocolUser.empty:
        return "NO DATA!!!!!"
    else:
        return ""
示例#10
0
def update_graph8b(user, start_date, end_date, n, db):
    start_date = pd.to_datetime(start_date)
    start_date = dt.date(start_date)
    end_date = pd.to_datetime(end_date)
    end_date = dt.date(end_date)

    DevUser = db_onnections.ChannelDB(from_data=start_date,
                                      to_data=end_date,
                                      section=db)
    DevUser = DevUser[['hostname', 'display_name']]
    DevUser = DevUser[DevUser['display_name'] == user]
    scalar = 1 + DevUser.shape[0]

    DevUser = DevUser.groupby('hostname').count()
    DevUser.columns = ['NumberEvents']
    DevUser = DevUser.applymap(lambda x: x / scalar)
    DevUser['Device'] = DevUser.index
    return {
        'data': [
            go.Pie(labels=DevUser.Device,
                   values=DevUser.NumberEvents,
                   pull=.1,
                   hole=.1,
                   hoverinfo='label+percent',
                   textinfo='label',
                   showlegend=False,
                   marker=dict(colors=colors,
                               line=dict(color='#000000', width=1)))
        ],
        'layout':
        go.Layout(title='Devices Used by {}'.format(user),
                  autosize=True,
                  font={
                      'family': 'Glacial Indifference',
                      'color': colors['text']
                  })
    }
示例#11
0
def update_graph2b(user, start_date, end_date, n, db):
    start_date = pd.to_datetime(start_date)
    start_date = dt.date(start_date)
    end_date = pd.to_datetime(end_date)
    end_date = dt.date(end_date)

    df = db_onnections.ChannelDB(from_data=start_date,
                                 to_data=end_date,
                                 section=db)
    ProtUser = df[['display_name', 'protocol']].copy()
    ProtUser = ProtUser[ProtUser['display_name'] == user]

    ProtUser = ProtUser.groupby('protocol').count()
    ProtUser.columns = ['NumberEvents']
    ProtUser['Protocol'] = ProtUser.index

    return {
        'data': [
            go.Pie(labels=ProtUser.Protocol,
                   values=ProtUser.NumberEvents,
                   pull=.1,
                   hole=.1,
                   hoverinfo='label+percent',
                   textinfo='label',
                   showlegend=False,
                   marker=dict(colors=colors,
                               line=dict(color='#000000', width=1)))
        ],
        'layout':
        go.Layout(title='Protocols Used by {}'.format(user),
                  autosize=True,
                  font={
                      'family': 'Glacial Indifference',
                      'color': colors['text']
                  })
    }
示例#12
0
#####################################
list_db = db_onnections.list_dbs()

# Enable the DB selector
if len(list_db) == 1:
    enable_db_selector = True
else:
    enable_db_selector = False

#####################################
####  First Data Collection        ##
#####################################
FROM = (pd.to_datetime(datetime.datetime.now()) -
        timedelta(days=120)).strftime("%Y-%m-%d")

df = db_onnections.ChannelDB(from_data=FROM,
                             section=general_configurations.Current_active_DB)

df['created_at'] = pd.to_datetime(df['created_at'])

dataMax = df['created_at'].max()
dataMin = dataMax - timedelta(days=30)

available_Users = sorted(df['display_name'].unique())
# Dash Variables

colors = {'background': '#111111', 'text': '#253471'}

image_filename = os.getcwd() + '/pics//enzo_logo.png'
encoded_image = base64.b64encode(open(image_filename, 'rb').read())

layout = html.Div(