fix: Update technology stack with verified versions only
- Verify all software versions via SSH (NORDABIZ-01, R11-REVPROXY-01, Proxmox) - Remove Redis (not used), Gunicorn (app runs directly via python) - Add PostgreSQL version dynamic fetch from database - Add Docker version for R11-REVPROXY-01 - Update all package versions to verified values - Handle unknown versions (Fortigate) with yellow "nieznana" badge - Add comment with verification date (2026-01-14) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
parent
38682bf808
commit
23f109db2c
45
app.py
45
app.py
@ -7827,6 +7827,14 @@ def admin_status():
|
||||
db_metrics = {}
|
||||
|
||||
try:
|
||||
# PostgreSQL version
|
||||
version_result = db.execute(text("SELECT version()")).scalar()
|
||||
# Extract just version number: "PostgreSQL 16.11 ..." -> "16.11"
|
||||
if version_result:
|
||||
import re
|
||||
match = re.search(r'PostgreSQL (\d+\.\d+)', version_result)
|
||||
db_metrics['version'] = match.group(1) if match else version_result.split()[1]
|
||||
|
||||
# Database size
|
||||
result = db.execute(text("SELECT pg_database_size(current_database())")).scalar()
|
||||
db_metrics['size_mb'] = round(result / (1024 * 1024), 2)
|
||||
@ -7918,17 +7926,18 @@ def admin_status():
|
||||
# ===== TECHNOLOGY STACK =====
|
||||
import flask
|
||||
import sqlalchemy
|
||||
# Technology stack - ONLY VERIFIED VERSIONS (checked via SSH 2026-01-14)
|
||||
# Dynamic versions are fetched at runtime, static ones were verified manually
|
||||
technology_stack = {
|
||||
'programming': [
|
||||
{'name': 'Python', 'version': platform.python_version(), 'icon': '🐍', 'category': 'Backend'},
|
||||
{'name': 'Flask', 'version': flask.__version__, 'icon': '🌶️', 'category': 'Web Framework'},
|
||||
{'name': 'SQLAlchemy', 'version': sqlalchemy.__version__, 'icon': '🗃️', 'category': 'ORM'},
|
||||
{'name': 'Jinja2', 'version': '3.x', 'icon': '📄', 'category': 'Templating'},
|
||||
{'name': 'HTML5/CSS3/JS', 'version': 'ES6+', 'icon': '🌐', 'category': 'Frontend'},
|
||||
{'name': 'Jinja2', 'version': '3.1.6', 'icon': '📄', 'category': 'Templating'},
|
||||
{'name': 'Werkzeug', 'version': '3.1.3', 'icon': '🔧', 'category': 'WSGI Toolkit'},
|
||||
],
|
||||
'databases': [
|
||||
{'name': 'PostgreSQL', 'version': '15+', 'icon': '🐘', 'category': 'Primary DB'},
|
||||
{'name': 'Redis', 'version': '7.x', 'icon': '🔴', 'category': 'Cache/Rate Limit'},
|
||||
{'name': 'PostgreSQL', 'version': db_metrics.get('version', 'N/A'), 'icon': '🐘', 'category': 'Primary DB'},
|
||||
],
|
||||
'ai': [
|
||||
{'name': 'Google Gemini', 'version': '2.0 Flash', 'icon': '🤖', 'category': 'AI Chat'},
|
||||
@ -7936,27 +7945,27 @@ def admin_status():
|
||||
{'name': 'Google PageSpeed', 'version': 'v5', 'icon': '⚡', 'category': 'SEO Audit'},
|
||||
],
|
||||
'infrastructure': [
|
||||
{'name': 'Proxmox VE', 'version': '8.x', 'icon': '🖥️', 'category': 'Wirtualizacja'},
|
||||
{'name': 'Ubuntu Server', 'version': '22.04 LTS', 'icon': '🐧', 'category': 'System OS'},
|
||||
{'name': 'Gunicorn', 'version': '21.x', 'icon': '🦄', 'category': 'WSGI Server'},
|
||||
{'name': 'Nginx', 'version': '1.24+', 'icon': '🔧', 'category': 'Reverse Proxy'},
|
||||
{'name': 'Proxmox VE', 'version': '9.1.1', 'icon': '🖥️', 'category': 'Wirtualizacja'},
|
||||
{'name': 'Ubuntu Server', 'version': '24.04.3 LTS', 'icon': '🐧', 'category': 'System OS'},
|
||||
{'name': 'Nginx', 'version': '1.24.0', 'icon': '🔧', 'category': 'Web Server'},
|
||||
],
|
||||
'network': [
|
||||
{'name': 'Fortigate 500D', 'version': 'FortiOS 7.x', 'icon': '🛡️', 'category': 'Firewall/VPN'},
|
||||
{'name': 'NPM (Nginx Proxy Manager)', 'version': '2.x', 'icon': '🔀', 'category': 'Reverse Proxy'},
|
||||
{'name': 'Fortigate 500D', 'version': None, 'icon': '🛡️', 'category': 'Firewall/VPN'},
|
||||
{'name': 'Nginx Proxy Manager', 'version': '2.12.6', 'icon': '🔀', 'category': 'Reverse Proxy'},
|
||||
{'name': 'Docker', 'version': '28.2.2', 'icon': '🐳', 'category': 'Containers'},
|
||||
{'name': "Let's Encrypt", 'version': 'ACME v2', 'icon': '🔒', 'category': 'SSL/TLS'},
|
||||
],
|
||||
'security': [
|
||||
{'name': 'Flask-Login', 'version': '0.6+', 'icon': '🔐', 'category': 'Autentykacja'},
|
||||
{'name': 'Flask-WTF (CSRF)', 'version': '1.x', 'icon': '🛡️', 'category': 'CSRF Protection'},
|
||||
{'name': 'Flask-Limiter', 'version': '3.x', 'icon': '⏱️', 'category': 'Rate Limiting'},
|
||||
{'name': 'MaxMind GeoLite2', 'version': '2024', 'icon': '🌍', 'category': 'GeoIP Blocking'},
|
||||
{'name': 'PyOTP', 'version': '2.x', 'icon': '📱', 'category': '2FA/TOTP'},
|
||||
{'name': 'Flask-Login', 'version': '0.6.3', 'icon': '🔐', 'category': 'Autentykacja'},
|
||||
{'name': 'Flask-WTF', 'version': '1.2.2', 'icon': '🛡️', 'category': 'CSRF Protection'},
|
||||
{'name': 'Flask-Limiter', 'version': '4.0.0', 'icon': '⏱️', 'category': 'Rate Limiting'},
|
||||
{'name': 'geoip2', 'version': '5.2.0', 'icon': '🌍', 'category': 'GeoIP Blocking'},
|
||||
{'name': 'PyOTP', 'version': '2.9.0', 'icon': '📱', 'category': '2FA/TOTP'},
|
||||
],
|
||||
'devops': [
|
||||
{'name': 'Git', 'version': '2.x', 'icon': '📦', 'category': 'Version Control'},
|
||||
{'name': 'Gitea', 'version': '1.21+', 'icon': '🍵', 'category': 'Git Server'},
|
||||
{'name': 'systemd', 'version': '249+', 'icon': '⚙️', 'category': 'Service Manager'},
|
||||
{'name': 'Git', 'version': '2.43.0', 'icon': '📦', 'category': 'Version Control'},
|
||||
{'name': 'Gitea', 'version': '1.22.6', 'icon': '🍵', 'category': 'Git Server'},
|
||||
{'name': 'systemd', 'version': '255', 'icon': '⚙️', 'category': 'Service Manager'},
|
||||
],
|
||||
'servers': [
|
||||
{'name': 'NORDABIZ-01', 'ip': '10.22.68.249', 'icon': '🖥️', 'role': 'App Server (VM 249)'},
|
||||
|
||||
@ -699,7 +699,11 @@
|
||||
<span style="font-size: 1.3em;">{{ tech.icon }}</span>
|
||||
<span style="flex: 1; font-weight: 500;">{{ tech.name }}</span>
|
||||
<span style="font-size: var(--font-size-xs); color: var(--text-secondary);">{{ tech.category }}</span>
|
||||
{% if tech.version %}
|
||||
<span style="font-size: var(--font-size-xs); color: var(--text-secondary); background: var(--surface); padding: 2px 8px; border-radius: var(--radius);">{{ tech.version }}</span>
|
||||
{% else %}
|
||||
<span style="font-size: var(--font-size-xs); color: var(--warning); background: #fef3c7; padding: 2px 8px; border-radius: var(--radius);">nieznana</span>
|
||||
{% endif %}
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
|
||||
Loading…
Reference in New Issue
Block a user