49 lines
1.3 KiB
Go
49 lines
1.3 KiB
Go
package shadowrocket
|
|
|
|
import (
|
|
"fmt"
|
|
"time"
|
|
|
|
"github.com/perfect-panel/server/pkg/adapter/general"
|
|
|
|
"encoding/base64"
|
|
|
|
"github.com/perfect-panel/server/pkg/adapter/proxy"
|
|
"github.com/perfect-panel/server/pkg/traffic"
|
|
)
|
|
|
|
type UserInfo struct {
|
|
Upload int64
|
|
Download int64
|
|
TotalTraffic int64
|
|
ExpiredDate time.Time
|
|
}
|
|
|
|
func BuildShadowrocket(servers []proxy.Proxy, uuid string, userinfo UserInfo) []byte {
|
|
upload := traffic.AutoConvert(userinfo.Upload, false)
|
|
download := traffic.AutoConvert(userinfo.Download, false)
|
|
total := traffic.AutoConvert(userinfo.TotalTraffic, false)
|
|
expiredAt := userinfo.ExpiredDate.Format("2006-01-02 15:04:05")
|
|
uri := fmt.Sprintf("STATUS=🚀↑:%s,↓:%s,TOT:%s💡Expires:%s\r\n", upload, download, total, expiredAt)
|
|
for _, s := range servers {
|
|
switch s.Protocol {
|
|
case "vmess":
|
|
uri += buildVmess(s, uuid)
|
|
case "shadowsocks":
|
|
uri += general.ShadowsocksUri(s, uuid) + "\r\n"
|
|
case "trojan":
|
|
uri += general.TrojanUri(s, uuid) + "\r\n"
|
|
case "vless":
|
|
uri += general.VlessUri(s, uuid) + "\r\n"
|
|
case "hysteria2":
|
|
uri += general.Hysteria2Uri(s, uuid) + "\r\n"
|
|
case "tuic":
|
|
uri += general.TuicUri(s, uuid) + "\r\n"
|
|
default:
|
|
continue
|
|
}
|
|
}
|
|
|
|
return []byte(base64.StdEncoding.EncodeToString([]byte(uri)))
|
|
}
|