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' }) }
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' }) }
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
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'] }) }
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]
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]
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]
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]
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 ""
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'] }) }
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'] }) }
##################################### 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(