123 Zeilen
4.6 KiB
Python
123 Zeilen
4.6 KiB
Python
#!/usr/bin/env python3
|
||
import requests
|
||
import urllib3
|
||
from datetime import datetime
|
||
from zoneinfo import ZoneInfo
|
||
import time
|
||
import re
|
||
|
||
# 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_timezone():
|
||
"""Test audit log timezone specifically"""
|
||
session = requests.Session()
|
||
|
||
print("Audit Log Timezone 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')}")
|
||
print(f" Offset: +{(berlin_now.hour - utc_now.hour) % 24} hours")
|
||
|
||
# First logout if already logged in
|
||
session.get(f"{base_url_local}/logout", verify=verify_ssl)
|
||
time.sleep(1)
|
||
|
||
# Login (this will create a new audit log entry)
|
||
print(f"\nPerforming login at {berlin_now.strftime('%H:%M:%S')} Berlin time...")
|
||
|
||
response = session.get(f"{base_url_local}/login", verify=verify_ssl)
|
||
if response.status_code != 200:
|
||
print(f"✗ Failed to access login page: {response.status_code}")
|
||
return
|
||
|
||
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: {response.status_code}")
|
||
return
|
||
|
||
print("✓ Login successful")
|
||
|
||
# Immediately check audit log
|
||
print("\nChecking audit log for fresh LOGIN_SUCCESS entry...")
|
||
response = session.get(f"{base_url_local}/audit", verify=verify_ssl)
|
||
|
||
if response.status_code == 200:
|
||
# Look for timestamps in the audit log
|
||
# Pattern to find timestamps in format YYYY-MM-DD HH:MM:SS
|
||
timestamp_pattern = r'(\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2})'
|
||
|
||
# Find all timestamps
|
||
timestamps = re.findall(timestamp_pattern, response.text)
|
||
|
||
if timestamps:
|
||
print(f"✓ Found {len(timestamps)} timestamps in audit log")
|
||
|
||
# Check the most recent timestamp (should be first in list)
|
||
if timestamps:
|
||
latest_timestamp = timestamps[0]
|
||
print(f"\nMost recent timestamp: {latest_timestamp}")
|
||
|
||
# Extract hour from timestamp
|
||
hour_match = re.search(r' (\d{2}):', latest_timestamp)
|
||
if hour_match:
|
||
log_hour = int(hour_match.group(1))
|
||
berlin_hour = berlin_now.hour
|
||
utc_hour = utc_now.hour
|
||
|
||
print(f" Timestamp hour: {log_hour:02d}")
|
||
print(f" Berlin hour: {berlin_hour:02d}")
|
||
print(f" UTC hour: {utc_hour:02d}")
|
||
|
||
if log_hour == berlin_hour:
|
||
print("\n✓ Audit log is using Berlin time!")
|
||
elif log_hour == utc_hour:
|
||
print("\n✗ Audit log appears to be using UTC time")
|
||
print(" → Docker containers may need to be rebuilt")
|
||
else:
|
||
print("\n⚠ Could not determine timezone (timestamp doesn't match either timezone)")
|
||
else:
|
||
print("✗ No timestamps found in audit log")
|
||
|
||
# Also check for "vor X Minuten" text which might indicate timezone
|
||
if "vor 0 Minuten" in response.text or "vor 1 Minute" in response.text:
|
||
print("\n✓ Recent entries found (German time format)")
|
||
else:
|
||
print(f"✗ Failed to access audit log: {response.status_code}")
|
||
|
||
print("\n" + "=" * 50)
|
||
print("If timestamps show UTC instead of Berlin time:")
|
||
print("1. Run: docker-compose down")
|
||
print("2. Run: docker-compose build --no-cache")
|
||
print("3. Run: docker-compose up -d")
|
||
|
||
if __name__ == "__main__":
|
||
test_audit_timezone() |