| Server IP : 138.197.107.151 / Your IP : 216.73.216.170 Web Server : Apache/2.4.58 (Ubuntu) System : Linux BloxBy-Builder 6.8.0-71-generic #71-Ubuntu SMP PREEMPT_DYNAMIC Tue Jul 22 16:52:38 UTC 2025 x86_64 User : wpbetasites_mrakzqskir ( 1022) PHP Version : 8.3.6 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : OFF Directory : /proc/698958/task/737413/cwd/__pycache__/ |
Upload File : |
�
G ^j�E � �H � d Z ddlZddlZddlZddlZddlZddlZddlZddlZddl m
Z
mZ ddlm
Z
mZmZmZmZmZmZ ddlZddlZddlmZmZmZmZmZmZmZ dZdZg d�Z d � Z! e!ejD jG ejD jI ejD jK e&� � d
� � e
e'� Z(ejR jU d� xs ejV d� e(_, ejR jU d
d� Z-ejR jU dd� Z.d� Z/e(ja dddg�� d� � Z1e(ja d� d� � Z2d� Z3d� Z4d� Z5d� Z6d� Z7d� Z8d� Z9d� Z:e(ja d � e/d!� � � Z;e(ja d"� e/d#� � � Z<e(ja d$� e/d%� � � Z=e(j} d&� d'� � Z?e(j} d(� d)� � Z@e(j� d*� d+� � ZBd,� ZCd-� ZDe'd.k( r eD� yy)/a� A small local viewer for the parsed AI-crawler data.
Start it with ./run.sh, then open http://127.0.0.1:8765
This binds to 127.0.0.1 only, so nothing outside this machine can reach it. The
raw events contain visitor IPs and browsed URLs, so every page requires login.
S3 is read server-side with your AWS credentials; the browser never talks to
AWS and never sees a credential.
Read-only by construction: this app only ever calls GetObject/ListObjectsV2.
� N)�date� timedelta)�Flask�Response�redirect�render_template�request�session�url_for)� AI_GROUPS�
ALL_GROUPS�
GROUP_INFO�GROUP_LABELS�bot_info�category_for�platforms_by_group�d �
latest_day))r z
Latest Day)� this_weekz This Week)�
this_monthz
This Month)�
last_monthz
Last Month)�last_90zLast 90 Days)�customzCustom Date Rangec �� � t j j | � syt | � 5 }|D ]� }|j � }|r|j d� sd|vr�+|j
dd� \ }}t j j |j � |j � j d� j d� � �� ddd� y# 1 sw Y yxY w)zDMinimal .env reader -- avoids a dependency for six lines of parsing.N�#�=� �"�') �os�path�exists�open�strip�
startswith�split�environ�
setdefault)r! �fh�line�key�vals �)/var/www/bsd-crawler-parser/viewer/app.py�load_envr. 2 s� � �
�7�7�>�>�$���
�d�� R�r�� R�D��:�:�<�D��4�?�?�3�/�3�d�?���z�z�#�q�)�H�C���J�J�!�!�#�)�)�+�s�y�y�{�/@�/@��/E�/K�/K�C�/P�Q� R�R� R� R�s �BC�Cz.env�
SECRET_KEY� �VIEWER_USER� �VIEWER_PASSWORDc �B � � t j � � � fd�� }|S )Nc � �� t j d� s$t t dt j
�� � S �| i |��S )N�user�login)�next)r
�getr r r � full_path)�a�kw�fns �r- �wrapperzlogin_required.<locals>.wrapperI s5 �� ��{�{�6�"��G�G�'�2C�2C�D�E�E��1�|��|�� )� functools�wraps)r= r>