package vo type PeerVo struct { BaseVo Name string `json:"name"` Remark string `json:"remark"` AuthId string `json:"authId"` QuotaBytes int64 `json:"quotaBytes"` DownloadBytes int64 `json:"downloadBytes"` UploadBytes int64 `json:"uploadBytes"` ExpiresAt int64 `json:"expiresAt"` MaxDevices int64 `json:"maxDevices"` Disabled int64 `json:"disabled"` BannedUntil int64 `json:"bannedUntil"` LastConnectionAt int64 `json:"lastConnectionAt"` Online bool `json:"online"` OnlineDevices int64 `json:"onlineDevices"` } // PeerOnlineState — известна ли панели картина подключений прямо сейчас. // // Признак один на всю страницу, а не поле в каждой строке: недоступность // Traffic Stats API — свойство ответа целиком, и nullable-флаг в каждой строке // заставлял бы панель отвечать на этот вопрос заново для каждого пира. const ( // PeerOnlineStateOk — Traffic Stats API ответил, `online` в строках // означает то, что написано. PeerOnlineStateOk = "ok" // PeerOnlineStateUnavailable — спросить не удалось. `online = false` в // строках при этом значении не означает НИЧЕГО. PeerOnlineStateUnavailable = "unavailable" ) // PeerPageVo — страница списка пиров. // // Что было. Список строился так: // // onlineUsers, _ := Hysteria2Online() // // Ошибка отбрасывалась, пустая карта разъезжалась по строкам как `online = // false`, и любой сбой control plane превращался для оператора в утверждение // «все пользователи офлайн» — вместо «состояние подключений сейчас // неизвестно». Это два разных ответа, и первый из них в аварии ведёт искать // проблему у пользователей. type PeerPageVo struct { Records []PeerVo `json:"records"` Total int64 `json:"total"` // OnlineState — ok | unavailable. OnlineState string `json:"onlineState"` } // PeerClientConfigVo — клиентская ссылка пира. // // Поля QrCode здесь больше нет. Оно было помечено deprecated и возило в // браузер PNG, который панель не использует: QR рисуется во frontend из самой // ссылки (qrcode.vue), и второй его экземпляр в ответе был лишним трафиком и // вторым способом получить то же самое. type PeerClientConfigVo struct { Url string `json:"url"` }