Admin protetto, dashboard KPI e aggiornamenti sito marketing.

Login admin con cambio password, metriche server (CPU/RAM/disco/banda), grafici e statistiche streaming; sezione piani ridimensionata.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-05-26 18:18:47 +02:00
parent 3d3420cc4a
commit 3a5649f482
26 changed files with 983 additions and 55 deletions

View File

@@ -0,0 +1,42 @@
module Admin
class MetricsStore
HISTORY_KEY = "admin:metrics:history"
NET_RX_KEY = "admin:metrics:net_rx"
NET_TX_KEY = "admin:metrics:net_tx"
HISTORY_LIMIT = 90
class << self
def redis
@redis ||= Redis.new(url: ENV.fetch("REDIS_URL", "redis://localhost:6379/0"))
rescue Redis::CannotConnectError
nil
end
def push_sample(sample)
return unless redis
redis.lpush(HISTORY_KEY, sample.to_json)
redis.ltrim(HISTORY_KEY, 0, HISTORY_LIMIT - 1)
end
def history
return [] unless redis
redis.lrange(HISTORY_KEY, 0, HISTORY_LIMIT - 1).map { |row| JSON.parse(row) }.reverse
end
def net_totals
return { rx: nil, tx: nil } unless redis
{ rx: redis.get(NET_RX_KEY)&.to_i, tx: redis.get(NET_TX_KEY)&.to_i }
end
def save_net_totals(rx:, tx:)
return unless redis
redis.set(NET_RX_KEY, rx)
redis.set(NET_TX_KEY, tx)
end
end
end
end