feat: add bar for traffic usage

This commit is contained in:
Yiyang Kang 2022-11-21 15:17:02 +08:00
parent b429137d20
commit 3fc427fae4
2 changed files with 46 additions and 14 deletions

23
cfg.go
View file

@ -13,7 +13,8 @@ type Config struct {
AdminUIDs map[int64]struct{}
TGBotToken string
WatchedInterface string
WatchedInterface string
MonthlyTrafficLimitGiB int
}
var config *Config
@ -28,8 +29,9 @@ func LoadCfg() error {
cfg.TGBotToken = token
adminUIDsEnv := os.Getenv("TG_ADMIN_UIDS")
adminUIDs := lo.Filter(strings.Split(adminUIDsEnv, ","), func(s string, _ int) bool {
return strings.Trim(s, "\t ") != ""
adminUIDs := lo.FilterMap(strings.Split(adminUIDsEnv, ","), func(s string, _ int) (string, bool) {
trimmed := strings.TrimSpace(s)
return trimmed, trimmed != ""
})
cfg.AdminUIDs = make(map[int64]struct{}, len(adminUIDs))
for _, uidStr := range adminUIDs {
@ -40,11 +42,18 @@ func LoadCfg() error {
cfg.AdminUIDs[uid] = struct{}{}
}
iface := os.Getenv("TG_WATCHED_INTERFACE")
if iface == "" {
iface = "eth0"
cfg.WatchedInterface = "eth0"
if iface := os.Getenv("TG_WATCHED_INTERFACE"); iface != "" {
cfg.WatchedInterface = iface
}
cfg.MonthlyTrafficLimitGiB = 1000
if trafficLimitStr := os.Getenv("TG_MONTHLY_TRAFFIC_LIMIT_GIB"); trafficLimitStr != "" {
var err error
if cfg.MonthlyTrafficLimitGiB, err = strconv.Atoi(trafficLimitStr); err != nil {
return errors.New("invalid traffic limit: " + trafficLimitStr)
}
}
cfg.WatchedInterface = iface
config = &cfg
return nil