104 Zeilen
3.6 KiB
Python
104 Zeilen
3.6 KiB
Python
#!/usr/bin/env python3
|
||
import requests
|
||
import urllib3
|
||
from datetime import datetime
|
||
from zoneinfo import ZoneInfo
|
||
from bs4 import BeautifulSoup
|
||
import time
|
||
|
||
# Disable SSL warnings for self-signed certificate
|
||
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
|
||
|
||
# Test configuration
|
||
base_url = "https://admin-panel-undso.z5m7q9dk3ah2v1plx6ju.com"
|
||
fallback_url = "https://localhost:443"
|
||
admin_user = {"username": "rac00n", "password": "1248163264"}
|
||
|
||
def test_audit_raw():
|
||
"""Test audit log timezone by parsing HTML"""
|
||
session = requests.Session()
|
||
|
||
print("Audit Log Raw HTML Test")
|
||
print("=" * 50)
|
||
|
||
# Test connection
|
||
try:
|
||
test_response = session.get(base_url, verify=True, timeout=5)
|
||
verify_ssl = True
|
||
base_url_local = base_url
|
||
print(f"✓ Using external URL: {base_url}")
|
||
except:
|
||
base_url_local = fallback_url
|
||
verify_ssl = False
|
||
print(f"ℹ Using fallback URL: {fallback_url}")
|
||
|
||
# Show current times
|
||
utc_now = datetime.now(ZoneInfo("UTC"))
|
||
berlin_now = datetime.now(ZoneInfo("Europe/Berlin"))
|
||
|
||
print(f"\nCurrent times:")
|
||
print(f" UTC: {utc_now.strftime('%Y-%m-%d %H:%M:%S')}")
|
||
print(f" Berlin: {berlin_now.strftime('%Y-%m-%d %H:%M:%S')}")
|
||
|
||
# Logout first
|
||
session.get(f"{base_url_local}/logout", verify=verify_ssl)
|
||
time.sleep(1)
|
||
|
||
# Login
|
||
response = session.get(f"{base_url_local}/login", verify=verify_ssl)
|
||
login_data = {
|
||
"username": admin_user["username"],
|
||
"password": admin_user["password"]
|
||
}
|
||
response = session.post(f"{base_url_local}/login", data=login_data, verify=verify_ssl, allow_redirects=False)
|
||
|
||
if response.status_code != 302:
|
||
print(f"✗ Login failed")
|
||
return
|
||
|
||
print("✓ Login successful")
|
||
|
||
# Get audit log
|
||
print("\nFetching audit log...")
|
||
response = session.get(f"{base_url_local}/audit", verify=verify_ssl)
|
||
|
||
if response.status_code == 200:
|
||
# Save raw HTML for inspection
|
||
with open("audit_log_raw.html", "w", encoding="utf-8") as f:
|
||
f.write(response.text)
|
||
print("✓ Saved raw HTML to audit_log_raw.html")
|
||
|
||
# Parse with BeautifulSoup
|
||
soup = BeautifulSoup(response.text, 'html.parser')
|
||
|
||
# Find all table rows
|
||
rows = soup.find_all('tr')
|
||
print(f"✓ Found {len(rows)} table rows")
|
||
|
||
# Look for LOGIN_SUCCESS in recent entries
|
||
for i, row in enumerate(rows[:5]): # Check first 5 rows
|
||
cells = row.find_all('td')
|
||
if cells and len(cells) > 1:
|
||
timestamp_cell = cells[0].text.strip()
|
||
action_cell = cells[2].text.strip() if len(cells) > 2 else ""
|
||
|
||
if i == 0:
|
||
print(f"\nFirst row details:")
|
||
print(f" Timestamp: {timestamp_cell}")
|
||
print(f" Action: {action_cell}")
|
||
|
||
if "LOGIN_SUCCESS" in action_cell:
|
||
print(f"\nFound LOGIN_SUCCESS entry:")
|
||
print(f" Timestamp: {timestamp_cell}")
|
||
|
||
# Check if timestamp contains current Berlin hour
|
||
if berlin_now.strftime("%H:") in timestamp_cell:
|
||
print(f" ✓ Contains Berlin hour ({berlin_now.strftime('%H:')})")
|
||
elif utc_now.strftime("%H:") in timestamp_cell:
|
||
print(f" ✗ Contains UTC hour ({utc_now.strftime('%H:')})")
|
||
break
|
||
else:
|
||
print(f"✗ Failed to fetch audit log: {response.status_code}")
|
||
|
||
if __name__ == "__main__":
|
||
test_audit_raw() |