mirror of
https://github.com/anten-ka/gotelegram_pro.git
synced 2026-05-19 14:36:05 +00:00
v2.5.0: maintenance and bot user management
This commit is contained in:
22
lib/stats.sh
22
lib/stats.sh
@@ -1,5 +1,5 @@
|
||||
#!/bin/bash
|
||||
# stats.sh — Traffic statistics module for GoTelegram
|
||||
# stats.sh — Traffic statistics module for GoTelegram v2.5.0
|
||||
# Tracks proxy (telemt port 443) and site (nginx port 8443) traffic
|
||||
# Uses iptables counters + real-time snapshots + historical CSV
|
||||
|
||||
@@ -18,6 +18,11 @@ CONFIG_FILE="/opt/gotelegram/config.json"
|
||||
|
||||
# Initialize stats infrastructure
|
||||
stats_init() {
|
||||
if ! command -v iptables &>/dev/null; then
|
||||
log_warning "iptables не найден: установите пакет iptables или запустите установку зависимостей"
|
||||
return 1
|
||||
fi
|
||||
|
||||
# Create runtime directory
|
||||
mkdir -p "$STATS_DIR" "$SNAPSHOTS_DIR" 2>/dev/null
|
||||
chmod 755 "$STATS_DIR" "$SNAPSHOTS_DIR" 2>/dev/null
|
||||
@@ -57,6 +62,13 @@ stats_collect() {
|
||||
local ts=$(date +%s)
|
||||
local temp_file=$(mktemp)
|
||||
|
||||
if ! command -v iptables &>/dev/null; then
|
||||
mkdir -p "$STATS_DIR" 2>/dev/null
|
||||
echo "{\"ts\":$ts,\"proxy_bytes\":0,\"proxy_pkts\":0,\"site_bytes\":0,\"site_pkts\":0,\"error\":\"iptables_missing\"}" > "$CURRENT_SNAPSHOT" 2>/dev/null
|
||||
rm -f "$temp_file" 2>/dev/null
|
||||
return 1
|
||||
fi
|
||||
|
||||
# Parse iptables output: format is "pkts bytes target"
|
||||
# We need to extract bytes (2nd column) for each rule
|
||||
local iptables_output=$(iptables -L GOTELEGRAM_STATS -v -n -x 2>/dev/null)
|
||||
@@ -350,6 +362,14 @@ install_stats_collector() {
|
||||
return 1
|
||||
fi
|
||||
|
||||
if ! command -v iptables &>/dev/null; then
|
||||
log_info "Установка iptables для подсчёта трафика..."
|
||||
install_pkg "$(apt_pkg_for_cmd iptables)" || {
|
||||
echo "Не удалось установить iptables" >&2
|
||||
return 1
|
||||
}
|
||||
fi
|
||||
|
||||
# Get script directory (resolve symlinks)
|
||||
local script_dir=$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")
|
||||
local lib_dir=$(dirname "$script_dir")
|
||||
|
||||
Reference in New Issue
Block a user