mirror of
https://github.com/bolucat/Archive.git
synced 2026-04-22 16:07:49 +08:00
Update On Mon Oct 27 19:43:27 CET 2025
This commit is contained in:
@@ -1163,3 +1163,4 @@ Update On Thu Oct 23 20:39:01 CEST 2025
|
||||
Update On Fri Oct 24 20:39:40 CEST 2025
|
||||
Update On Sat Oct 25 20:37:45 CEST 2025
|
||||
Update On Sun Oct 26 19:35:56 CET 2025
|
||||
Update On Mon Oct 27 19:43:18 CET 2025
|
||||
|
||||
@@ -39,7 +39,7 @@ import (
|
||||
"github.com/metacubex/mihomo/listener/inner"
|
||||
"github.com/metacubex/mihomo/listener/tproxy"
|
||||
"github.com/metacubex/mihomo/log"
|
||||
"github.com/metacubex/mihomo/ntp"
|
||||
"github.com/metacubex/mihomo/ntp/ntp"
|
||||
"github.com/metacubex/mihomo/tunnel"
|
||||
)
|
||||
|
||||
|
||||
@@ -3,18 +3,18 @@ package ntp
|
||||
import (
|
||||
"context"
|
||||
"sync"
|
||||
"sync/atomic"
|
||||
"time"
|
||||
|
||||
"github.com/metacubex/mihomo/component/dialer"
|
||||
"github.com/metacubex/mihomo/component/proxydialer"
|
||||
"github.com/metacubex/mihomo/log"
|
||||
mihomoNtp "github.com/metacubex/mihomo/ntp"
|
||||
|
||||
M "github.com/metacubex/sing/common/metadata"
|
||||
"github.com/metacubex/sing/common/ntp"
|
||||
)
|
||||
|
||||
var globalSrv atomic.Pointer[Service]
|
||||
var globalSrv *Service
|
||||
var globalMu sync.Mutex
|
||||
|
||||
type Service struct {
|
||||
@@ -23,21 +23,20 @@ type Service struct {
|
||||
ticker *time.Ticker
|
||||
ctx context.Context
|
||||
cancel context.CancelFunc
|
||||
offset atomic.Int64 // [time.Duration]
|
||||
syncSystemTime bool
|
||||
}
|
||||
|
||||
func ReCreateNTPService(server string, interval time.Duration, dialerProxy string, syncSystemTime bool) {
|
||||
globalMu.Lock()
|
||||
defer globalMu.Unlock()
|
||||
if service := globalSrv.Swap(nil); service != nil {
|
||||
service.Stop()
|
||||
if globalSrv != nil {
|
||||
globalSrv.Stop()
|
||||
}
|
||||
if server == "" || interval <= 0 {
|
||||
return
|
||||
}
|
||||
ctx, cancel := context.WithCancel(context.Background())
|
||||
service := &Service{
|
||||
globalSrv = &Service{
|
||||
server: M.ParseSocksaddr(server),
|
||||
dialer: proxydialer.NewByNameSingDialer(dialerProxy, dialer.NewDialer()),
|
||||
ticker: time.NewTicker(interval * time.Minute),
|
||||
@@ -45,8 +44,7 @@ func ReCreateNTPService(server string, interval time.Duration, dialerProxy strin
|
||||
cancel: cancel,
|
||||
syncSystemTime: syncSystemTime,
|
||||
}
|
||||
service.Start()
|
||||
globalSrv.Store(service)
|
||||
globalSrv.Start()
|
||||
}
|
||||
|
||||
func (srv *Service) Start() {
|
||||
@@ -59,10 +57,6 @@ func (srv *Service) Stop() {
|
||||
srv.cancel()
|
||||
}
|
||||
|
||||
func (srv *Service) Offset() time.Duration {
|
||||
return time.Duration(srv.offset.Load())
|
||||
}
|
||||
|
||||
func (srv *Service) update() error {
|
||||
var response *ntp.Response
|
||||
var err error
|
||||
@@ -80,7 +74,7 @@ func (srv *Service) update() error {
|
||||
} else if offset < time.Duration(0) {
|
||||
log.Infoln("System clock is behind NTP time by %s", -offset)
|
||||
}
|
||||
srv.offset.Store(int64(offset))
|
||||
mihomoNtp.SetOffset(offset)
|
||||
if srv.syncSystemTime {
|
||||
timeNow := response.Time
|
||||
syncErr := setSystemTime(timeNow)
|
||||
@@ -97,7 +91,7 @@ func (srv *Service) update() error {
|
||||
}
|
||||
|
||||
func (srv *Service) loopUpdate() {
|
||||
defer srv.offset.Store(0)
|
||||
defer mihomoNtp.SetOffset(0)
|
||||
defer srv.ticker.Stop()
|
||||
for {
|
||||
err := srv.update()
|
||||
@@ -111,13 +105,3 @@ func (srv *Service) loopUpdate() {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func Now() time.Time {
|
||||
now := time.Now()
|
||||
if service := globalSrv.Load(); service != nil {
|
||||
if offset := service.Offset(); offset.Abs() > 0 {
|
||||
now = now.Add(offset)
|
||||
}
|
||||
}
|
||||
return now
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
// Package ntp provide time.Now
|
||||
//
|
||||
// DON'T import other package in mihomo to keep minimal internal dependencies
|
||||
package ntp
|
||||
|
||||
import (
|
||||
"time"
|
||||
|
||||
"sync/atomic"
|
||||
)
|
||||
|
||||
var _offset atomic.Int64 // [time.Duration]
|
||||
|
||||
func SetOffset(offset time.Duration) {
|
||||
_offset.Store(int64(offset))
|
||||
}
|
||||
|
||||
func GetOffset() time.Duration {
|
||||
return time.Duration(_offset.Load())
|
||||
}
|
||||
|
||||
func Now() time.Time {
|
||||
now := time.Now()
|
||||
if offset := GetOffset(); offset != 0 {
|
||||
now = now.Add(offset)
|
||||
}
|
||||
return now
|
||||
}
|
||||
@@ -34,7 +34,7 @@ func ConvertToMrs(buf []byte, behavior P.RuleBehavior, format P.RuleFormat, w io
|
||||
}
|
||||
|
||||
var encoder *zstd.Encoder
|
||||
encoder, err = zstd.NewWriter(w, zstd.WithEncoderLevel(zstd.SpeedBestCompression))
|
||||
encoder, err = zstd.NewWriter(w)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
Generated
+86
-86
@@ -365,7 +365,7 @@ checksum = "0ae92a5119aa49cdbcf6b9f893fe4e1d98b04ccbf82ee0584ad948a44a734dea"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.107",
|
||||
"syn 2.0.108",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -531,7 +531,7 @@ checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.107",
|
||||
"syn 2.0.108",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -566,7 +566,7 @@ checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.107",
|
||||
"syn 2.0.108",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -615,7 +615,7 @@ checksum = "99e1aca718ea7b89985790c94aad72d77533063fe00bc497bb79a7c2dae6a661"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.107",
|
||||
"syn 2.0.108",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -860,7 +860,7 @@ dependencies = [
|
||||
"regex",
|
||||
"rustc-hash 1.1.0",
|
||||
"shlex",
|
||||
"syn 2.0.107",
|
||||
"syn 2.0.108",
|
||||
"which 4.4.2",
|
||||
]
|
||||
|
||||
@@ -1058,7 +1058,7 @@ checksum = "9fd3f870829131332587f607a7ff909f1af5fc523fd1b192db55fbbdf52e8d3c"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.107",
|
||||
"syn 2.0.108",
|
||||
"synstructure",
|
||||
]
|
||||
|
||||
@@ -1196,7 +1196,7 @@ checksum = "f9abbd1bc6865053c427f7198e6af43bfdedc55ab791faed4fbd361d789575ff"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.107",
|
||||
"syn 2.0.108",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -1488,7 +1488,7 @@ dependencies = [
|
||||
"heck 0.5.0",
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.107",
|
||||
"syn 2.0.108",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -1722,7 +1722,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f76990911f2267d837d9d0ad060aa63aaad170af40904b29461734c339030d4d"
|
||||
dependencies = [
|
||||
"quote",
|
||||
"syn 2.0.107",
|
||||
"syn 2.0.108",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -2003,7 +2003,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "13b588ba4ac1a99f7f2964d24b3d896ddc6bf847ee3855dbd4366f058cfcd331"
|
||||
dependencies = [
|
||||
"quote",
|
||||
"syn 2.0.107",
|
||||
"syn 2.0.108",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -2013,7 +2013,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "32a2785755761f3ddc1492979ce1e48d2c00d09311c39e4466429188f3dd6501"
|
||||
dependencies = [
|
||||
"quote",
|
||||
"syn 2.0.107",
|
||||
"syn 2.0.108",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -2054,7 +2054,7 @@ dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"strsim",
|
||||
"syn 2.0.107",
|
||||
"syn 2.0.108",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -2065,7 +2065,7 @@ checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead"
|
||||
dependencies = [
|
||||
"darling_core",
|
||||
"quote",
|
||||
"syn 2.0.107",
|
||||
"syn 2.0.108",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -2156,7 +2156,7 @@ checksum = "1e567bd82dcff979e4b03460c307b3cdc9e96fde3d73bed1496d2bc75d9dd62a"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.107",
|
||||
"syn 2.0.108",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -2177,7 +2177,7 @@ dependencies = [
|
||||
"darling",
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.107",
|
||||
"syn 2.0.108",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -2187,7 +2187,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ab63b0e2bf4d5928aff72e83a7dace85d7bba5fe12dcc3c5a572d78caffd3f3c"
|
||||
dependencies = [
|
||||
"derive_builder_core",
|
||||
"syn 2.0.107",
|
||||
"syn 2.0.108",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -2200,7 +2200,7 @@ dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"rustc_version",
|
||||
"syn 2.0.107",
|
||||
"syn 2.0.108",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -2355,7 +2355,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.107",
|
||||
"syn 2.0.108",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -2387,7 +2387,7 @@ checksum = "788160fb30de9cdd857af31c6a2675904b16ece8fc2737b2c7127ba368c9d0f4"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.107",
|
||||
"syn 2.0.108",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -2685,7 +2685,7 @@ checksum = "f282cfdfe92516eb26c2af8589c274c7c17681f5ecc03c18255fe741c6aa64eb"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.107",
|
||||
"syn 2.0.108",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -2706,7 +2706,7 @@ checksum = "67c78a4d8fdf9953a5c9d458f9efe940fd97a0cab0941c075a813ac594733827"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.107",
|
||||
"syn 2.0.108",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -2777,7 +2777,7 @@ checksum = "44f23cf4b44bfce11a86ace86f8a73ffdec849c9fd00a386a53d278bd9e81fb3"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.107",
|
||||
"syn 2.0.108",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -2898,7 +2898,7 @@ checksum = "a0aca10fb742cb43f9e7bb8467c91aa9bcb8e3ffbc6a6f7389bb93ffc920577d"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.107",
|
||||
"syn 2.0.108",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -3055,7 +3055,7 @@ checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.107",
|
||||
"syn 2.0.108",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -3205,7 +3205,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.107",
|
||||
"syn 2.0.108",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -3511,7 +3511,7 @@ dependencies = [
|
||||
"proc-macro-error",
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.107",
|
||||
"syn 2.0.108",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -3773,7 +3773,7 @@ dependencies = [
|
||||
"proc-macro-error",
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.107",
|
||||
"syn 2.0.108",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -4302,7 +4302,7 @@ checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.107",
|
||||
"syn 2.0.108",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -4404,7 +4404,7 @@ dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"sha2 0.10.9",
|
||||
"syn 2.0.107",
|
||||
"syn 2.0.108",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -4421,7 +4421,7 @@ dependencies = [
|
||||
"serde",
|
||||
"serde_json",
|
||||
"sha2 0.10.9",
|
||||
"syn 2.0.107",
|
||||
"syn 2.0.108",
|
||||
"url",
|
||||
]
|
||||
|
||||
@@ -4519,7 +4519,7 @@ checksum = "c34819042dc3d3971c46c2190835914dfbe0c3c13f61449b2997f4e9722dfa60"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.107",
|
||||
"syn 2.0.108",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -5122,7 +5122,7 @@ checksum = "88a9689d8d44bf9964484516275f5cd4c9b59457a6940c1d5d0ecbb94510a36b"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.107",
|
||||
"syn 2.0.108",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -5632,7 +5632,7 @@ checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.107",
|
||||
"syn 2.0.108",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -5694,7 +5694,7 @@ dependencies = [
|
||||
"proc-macro-crate 3.3.0",
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.107",
|
||||
"syn 2.0.108",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -5763,7 +5763,7 @@ version = "0.1.0"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.107",
|
||||
"syn 2.0.108",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -6419,7 +6419,7 @@ checksum = "05bbaa5b6b98826bb62b164406f703bee72c5287af9986f9c863fa8ea992b476"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.107",
|
||||
"syn 2.0.108",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -6461,7 +6461,7 @@ dependencies = [
|
||||
"phf 0.13.1",
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.107",
|
||||
"syn 2.0.108",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -6721,7 +6721,7 @@ dependencies = [
|
||||
"pest_meta",
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.107",
|
||||
"syn 2.0.108",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -6869,7 +6869,7 @@ dependencies = [
|
||||
"phf_shared 0.11.3",
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.107",
|
||||
"syn 2.0.108",
|
||||
"unicase",
|
||||
]
|
||||
|
||||
@@ -6883,7 +6883,7 @@ dependencies = [
|
||||
"phf_shared 0.13.1",
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.107",
|
||||
"syn 2.0.108",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -6946,7 +6946,7 @@ checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.107",
|
||||
"syn 2.0.108",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -7124,7 +7124,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"syn 2.0.107",
|
||||
"syn 2.0.108",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -7187,9 +7187,9 @@ checksum = "dc375e1527247fe1a97d8b7156678dfe7c1af2fc075c9a4db3690ecd2a148068"
|
||||
|
||||
[[package]]
|
||||
name = "proc-macro2"
|
||||
version = "1.0.101"
|
||||
version = "1.0.103"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "89ae43fd86e4158d6db51ad8e2b80f313af9cc74f5c0e03ccb87de09998732de"
|
||||
checksum = "5ee95bc4ef87b8d5ba32e8b7714ccc834865276eab0aed5c9958d00ec45f49e8"
|
||||
dependencies = [
|
||||
"unicode-ident",
|
||||
]
|
||||
@@ -7210,7 +7210,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "52717f9a02b6965224f95ca2a81e2e0c5c43baacd28ca057577988930b6c3d5b"
|
||||
dependencies = [
|
||||
"quote",
|
||||
"syn 2.0.107",
|
||||
"syn 2.0.108",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -7608,7 +7608,7 @@ checksum = "1165225c21bff1f3bbce98f5a1f889949bc902d3575308cc7b0de30b4f6d27c7"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.107",
|
||||
"syn 2.0.108",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -7817,7 +7817,7 @@ dependencies = [
|
||||
"serde",
|
||||
"serde_json",
|
||||
"serde_yaml",
|
||||
"syn 2.0.107",
|
||||
"syn 2.0.108",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -8025,7 +8025,7 @@ dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"serde_derive_internals",
|
||||
"syn 2.0.107",
|
||||
"syn 2.0.108",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -8169,7 +8169,7 @@ checksum = "d6185cf75117e20e62b1ff867b9518577271e58abe0037c40bb4794969355ab0"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.107",
|
||||
"syn 2.0.108",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -8180,7 +8180,7 @@ checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.107",
|
||||
"syn 2.0.108",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -8215,7 +8215,7 @@ checksum = "175ee3e80ae9982737ca543e96133087cbd9a485eecc3bc4de9c1a37b47ea59c"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.107",
|
||||
"syn 2.0.108",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -8277,7 +8277,7 @@ dependencies = [
|
||||
"darling",
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.107",
|
||||
"syn 2.0.108",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -8325,7 +8325,7 @@ checksum = "772ee033c0916d670af7860b6e1ef7d658a4629a6d0b4c8c3e67f09b3765b75d"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.107",
|
||||
"syn 2.0.108",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -8717,7 +8717,7 @@ dependencies = [
|
||||
"Inflector",
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.107",
|
||||
"syn 2.0.108",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -8841,7 +8841,7 @@ dependencies = [
|
||||
"heck 0.5.0",
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.107",
|
||||
"syn 2.0.108",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -8884,9 +8884,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "syn"
|
||||
version = "2.0.107"
|
||||
version = "2.0.108"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "2a26dbd934e5451d21ef060c018dae56fc073894c5a7896f882928a76e6d081b"
|
||||
checksum = "da58917d35242480a05c2897064da0a80589a2a0476c9a3f2fdc83b53502e917"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
@@ -8910,7 +8910,7 @@ checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.107",
|
||||
"syn 2.0.108",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -9032,7 +9032,7 @@ checksum = "f4e16beb8b2ac17db28eab8bca40e62dbfbb34c0fcdc6d9826b11b7b5d047dfd"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.107",
|
||||
"syn 2.0.108",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -9152,7 +9152,7 @@ dependencies = [
|
||||
"serde",
|
||||
"serde_json",
|
||||
"sha2 0.10.9",
|
||||
"syn 2.0.107",
|
||||
"syn 2.0.108",
|
||||
"tauri-utils",
|
||||
"thiserror 2.0.17",
|
||||
"time",
|
||||
@@ -9170,7 +9170,7 @@ dependencies = [
|
||||
"heck 0.5.0",
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.107",
|
||||
"syn 2.0.108",
|
||||
"tauri-codegen",
|
||||
"tauri-utils",
|
||||
]
|
||||
@@ -9476,7 +9476,7 @@ dependencies = [
|
||||
"heck 0.5.0",
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.107",
|
||||
"syn 2.0.108",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -9645,7 +9645,7 @@ checksum = "451b374529930d7601b1eef8d32bc79ae870b6079b069401709c2a8bf9e75f36"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.107",
|
||||
"syn 2.0.108",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -9691,7 +9691,7 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.107",
|
||||
"syn 2.0.108",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -9702,7 +9702,7 @@ checksum = "3ff15c8ecd7de3849db632e14d18d2571fa09dfc5ed93479bc4485c7a517c913"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.107",
|
||||
"syn 2.0.108",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -9859,7 +9859,7 @@ checksum = "af407857209536a95c8e56f8231ef2c2e2aff839b22e07a1ffcbc617e9db9fa5"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.107",
|
||||
"syn 2.0.108",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -10082,7 +10082,7 @@ checksum = "81383ab64e72a7a8b8e13130c49e3dab29def6d0c7d76a03087b3cf71c5c6903"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.107",
|
||||
"syn 2.0.108",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -10174,7 +10174,7 @@ version = "0.2.5"
|
||||
source = "git+https://github.com/Frando/tracing-test.git?rev=e81ec65#e81ec655a5ec5c4351104628b1b1ba694f80a1dc"
|
||||
dependencies = [
|
||||
"quote",
|
||||
"syn 2.0.107",
|
||||
"syn 2.0.108",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -10680,7 +10680,7 @@ dependencies = [
|
||||
"log",
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.107",
|
||||
"syn 2.0.108",
|
||||
"wasm-bindgen-shared",
|
||||
]
|
||||
|
||||
@@ -10715,7 +10715,7 @@ checksum = "7bb4ce89b08211f923caf51d527662b75bdc9c9c7aab40f86dcb9fb85ac552aa"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.107",
|
||||
"syn 2.0.108",
|
||||
"wasm-bindgen-backend",
|
||||
"wasm-bindgen-shared",
|
||||
]
|
||||
@@ -10997,7 +10997,7 @@ checksum = "1d228f15bba3b9d56dde8bddbee66fa24545bd17b48d5128ccf4a8742b18e431"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.107",
|
||||
"syn 2.0.108",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -11414,7 +11414,7 @@ checksum = "2bbd5b46c938e506ecbce286b6628a02171d56153ba733b6c741fc627ec9579b"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.107",
|
||||
"syn 2.0.108",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -11425,7 +11425,7 @@ checksum = "a47fddd13af08290e67f4acabf4b459f647552718f683a7b415d290ac744a836"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.107",
|
||||
"syn 2.0.108",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -11436,7 +11436,7 @@ checksum = "053c4c462dc91d3b1504c6fe5a726dd15e216ba718e84a0e46a88fbe5ded3515"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.107",
|
||||
"syn 2.0.108",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -11447,7 +11447,7 @@ checksum = "bd9211b69f8dcdfa817bfd14bf1c97c9188afa36f4750130fcdf3f400eca9fa8"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.107",
|
||||
"syn 2.0.108",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -12229,7 +12229,7 @@ checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.107",
|
||||
"syn 2.0.108",
|
||||
"synstructure",
|
||||
]
|
||||
|
||||
@@ -12241,7 +12241,7 @@ checksum = "38da3c9736e16c5d3c8c597a9aaa5d1fa565d0532ae05e27c24aa62fb32c0ab6"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.107",
|
||||
"syn 2.0.108",
|
||||
"synstructure",
|
||||
]
|
||||
|
||||
@@ -12297,7 +12297,7 @@ checksum = "dc6821851fa840b708b4cbbaf6241868cabc85a2dc22f426361b0292bfc0b836"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.107",
|
||||
"syn 2.0.108",
|
||||
"zbus-lockstep",
|
||||
"zbus_xml",
|
||||
"zvariant",
|
||||
@@ -12312,7 +12312,7 @@ dependencies = [
|
||||
"proc-macro-crate 3.3.0",
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.107",
|
||||
"syn 2.0.108",
|
||||
"zbus_names",
|
||||
"zvariant",
|
||||
"zvariant_utils",
|
||||
@@ -12360,7 +12360,7 @@ checksum = "88d2b8d9c68ad2b9e4340d7832716a4d21a22a1154777ad56ea55c51a9cf3831"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.107",
|
||||
"syn 2.0.108",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -12380,7 +12380,7 @@ checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.107",
|
||||
"syn 2.0.108",
|
||||
"synstructure",
|
||||
]
|
||||
|
||||
@@ -12401,7 +12401,7 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.107",
|
||||
"syn 2.0.108",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -12445,7 +12445,7 @@ checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.107",
|
||||
"syn 2.0.108",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -12456,7 +12456,7 @@ checksum = "5b96237efa0c878c64bd89c436f661be4e46b2f3eff1ebb976f7ef2321d2f58f"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.107",
|
||||
"syn 2.0.108",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -12601,7 +12601,7 @@ dependencies = [
|
||||
"proc-macro-crate 3.3.0",
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.107",
|
||||
"syn 2.0.108",
|
||||
"zvariant_utils",
|
||||
]
|
||||
|
||||
@@ -12614,6 +12614,6 @@ dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"serde",
|
||||
"syn 2.0.107",
|
||||
"syn 2.0.108",
|
||||
"winnow 0.7.13",
|
||||
]
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
"dependencies": {
|
||||
"@tanstack/react-query": "5.90.5",
|
||||
"@tauri-apps/api": "2.8.0",
|
||||
"ahooks": "3.9.5",
|
||||
"ahooks": "3.9.6",
|
||||
"dayjs": "1.11.18",
|
||||
"lodash-es": "4.17.21",
|
||||
"ofetch": "1.4.1",
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
"@tanstack/router-zod-adapter": "1.81.5",
|
||||
"@tauri-apps/api": "2.8.0",
|
||||
"@types/json-schema": "7.0.15",
|
||||
"ahooks": "3.9.5",
|
||||
"ahooks": "3.9.6",
|
||||
"allotment": "1.20.4",
|
||||
"country-code-emoji": "2.3.0",
|
||||
"country-emoji": "1.5.6",
|
||||
@@ -59,9 +59,9 @@
|
||||
"@iconify/json": "2.2.400",
|
||||
"@monaco-editor/react": "4.7.0",
|
||||
"@tanstack/react-query": "5.90.5",
|
||||
"@tanstack/react-router": "1.133.13",
|
||||
"@tanstack/react-router-devtools": "1.133.13",
|
||||
"@tanstack/router-plugin": "1.133.13",
|
||||
"@tanstack/react-router": "1.133.32",
|
||||
"@tanstack/react-router-devtools": "1.133.32",
|
||||
"@tanstack/router-plugin": "1.133.32",
|
||||
"@tauri-apps/plugin-clipboard-manager": "2.3.0",
|
||||
"@tauri-apps/plugin-dialog": "2.4.0",
|
||||
"@tauri-apps/plugin-fs": "2.4.2",
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
"@types/d3": "7.4.3",
|
||||
"@types/react": "19.2.2",
|
||||
"@vitejs/plugin-react": "5.0.4",
|
||||
"ahooks": "3.9.5",
|
||||
"ahooks": "3.9.6",
|
||||
"d3": "7.9.0",
|
||||
"framer-motion": "12.23.24",
|
||||
"react": "19.2.0",
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
"manifest_version": 1,
|
||||
"latest": {
|
||||
"mihomo": "v1.19.15",
|
||||
"mihomo_alpha": "alpha-90f47a6",
|
||||
"mihomo_alpha": "alpha-9ed9c3d",
|
||||
"clash_rs": "v0.9.1",
|
||||
"clash_premium": "2023-09-05-gdcc8d87",
|
||||
"clash_rs_alpha": "0.9.1-alpha+sha.fc9ebc5"
|
||||
@@ -69,5 +69,5 @@
|
||||
"linux-armv7hf": "clash-armv7-unknown-linux-gnueabihf"
|
||||
}
|
||||
},
|
||||
"updated_at": "2025-10-25T22:20:57.739Z"
|
||||
"updated_at": "2025-10-26T22:21:09.443Z"
|
||||
}
|
||||
|
||||
Generated
+65
-72
@@ -185,8 +185,8 @@ importers:
|
||||
specifier: 2.8.0
|
||||
version: 2.8.0
|
||||
ahooks:
|
||||
specifier: 3.9.5
|
||||
version: 3.9.5(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
|
||||
specifier: 3.9.6
|
||||
version: 3.9.6(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
|
||||
dayjs:
|
||||
specifier: 1.11.18
|
||||
version: 1.11.18
|
||||
@@ -253,7 +253,7 @@ importers:
|
||||
version: 4.1.14
|
||||
'@tanstack/router-zod-adapter':
|
||||
specifier: 1.81.5
|
||||
version: 1.81.5(@tanstack/react-router@1.133.13(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(zod@4.1.12)
|
||||
version: 1.81.5(@tanstack/react-router@1.133.32(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(zod@4.1.12)
|
||||
'@tauri-apps/api':
|
||||
specifier: 2.8.0
|
||||
version: 2.8.0
|
||||
@@ -261,8 +261,8 @@ importers:
|
||||
specifier: 7.0.15
|
||||
version: 7.0.15
|
||||
ahooks:
|
||||
specifier: 3.9.5
|
||||
version: 3.9.5(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
|
||||
specifier: 3.9.6
|
||||
version: 3.9.6(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
|
||||
allotment:
|
||||
specifier: 1.20.4
|
||||
version: 1.20.4(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
|
||||
@@ -355,14 +355,14 @@ importers:
|
||||
specifier: 5.90.5
|
||||
version: 5.90.5(react@19.2.0)
|
||||
'@tanstack/react-router':
|
||||
specifier: 1.133.13
|
||||
version: 1.133.13(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
|
||||
specifier: 1.133.32
|
||||
version: 1.133.32(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
|
||||
'@tanstack/react-router-devtools':
|
||||
specifier: 1.133.13
|
||||
version: 1.133.13(@tanstack/react-router@1.133.13(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(@tanstack/router-core@1.133.13)(@types/node@24.8.1)(csstype@3.1.3)(jiti@2.6.0)(less@4.2.0)(lightningcss@1.30.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(sass-embedded@1.93.2)(sass@1.93.2)(solid-js@1.9.5)(stylus@0.62.0)(terser@5.36.0)(tiny-invariant@1.3.3)(tsx@4.20.6)(yaml@2.8.1)
|
||||
specifier: 1.133.32
|
||||
version: 1.133.32(@tanstack/react-router@1.133.32(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(@tanstack/router-core@1.133.28)(@types/node@24.8.1)(csstype@3.1.3)(jiti@2.6.0)(less@4.2.0)(lightningcss@1.30.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(sass-embedded@1.93.2)(sass@1.93.2)(solid-js@1.9.5)(stylus@0.62.0)(terser@5.36.0)(tiny-invariant@1.3.3)(tsx@4.20.6)(yaml@2.8.1)
|
||||
'@tanstack/router-plugin':
|
||||
specifier: 1.133.13
|
||||
version: 1.133.13(@tanstack/react-router@1.133.13(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(vite@7.1.10(@types/node@24.8.1)(jiti@2.6.0)(less@4.2.0)(lightningcss@1.30.1)(sass-embedded@1.93.2)(sass@1.93.2)(stylus@0.62.0)(terser@5.36.0)(tsx@4.20.6)(yaml@2.8.1))
|
||||
specifier: 1.133.32
|
||||
version: 1.133.32(@tanstack/react-router@1.133.32(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(vite@7.1.10(@types/node@24.8.1)(jiti@2.6.0)(less@4.2.0)(lightningcss@1.30.1)(sass-embedded@1.93.2)(sass@1.93.2)(stylus@0.62.0)(terser@5.36.0)(tsx@4.20.6)(yaml@2.8.1))
|
||||
'@tauri-apps/plugin-clipboard-manager':
|
||||
specifier: 2.3.0
|
||||
version: 2.3.0
|
||||
@@ -493,8 +493,8 @@ importers:
|
||||
specifier: 5.0.4
|
||||
version: 5.0.4(vite@7.1.10(@types/node@24.8.1)(jiti@2.6.0)(less@4.2.0)(lightningcss@1.30.1)(sass-embedded@1.93.2)(sass@1.93.2)(stylus@0.62.0)(terser@5.36.0)(tsx@4.20.6)(yaml@2.8.1))
|
||||
ahooks:
|
||||
specifier: 3.9.5
|
||||
version: 3.9.5(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
|
||||
specifier: 3.9.6
|
||||
version: 3.9.6(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
|
||||
d3:
|
||||
specifier: 7.9.0
|
||||
version: 7.9.0
|
||||
@@ -1304,10 +1304,6 @@ packages:
|
||||
resolution: {integrity: sha512-vbavdySgbTTrmFE+EsiqUTzlOr5bzlnJtUv9PynGCAKvfQqjIXbvFdumPM/GxMDfyuGMJaJAU6TO4zc1Jf1i8Q==}
|
||||
engines: {node: '>=6.9.0'}
|
||||
|
||||
'@babel/runtime@7.28.2':
|
||||
resolution: {integrity: sha512-KHp2IflsnGywDjBWDkR9iEqiWSpc8GIi0lgTT3mOElT0PP1tG26P4tmFI2YvAdzgq9RGyoHZQEIEdZy6Ec5xCA==}
|
||||
engines: {node: '>=6.9.0'}
|
||||
|
||||
'@babel/runtime@7.28.3':
|
||||
resolution: {integrity: sha512-9uIQ10o0WGdpP6GDhXcdOJPJuDgFtIDtN/9+ArJQ2NAfAmiuhTQdzkaTGR33v43GYS2UrSA0eX2pPPHoFVvpxA==}
|
||||
engines: {node: '>=6.9.0'}
|
||||
@@ -3092,8 +3088,8 @@ packages:
|
||||
'@tailwindcss/postcss@4.1.14':
|
||||
resolution: {integrity: sha512-BdMjIxy7HUNThK87C7BC8I1rE8BVUsfNQSI5siQ4JK3iIa3w0XyVvVL9SXLWO//CtYTcp1v7zci0fYwJOjB+Zg==}
|
||||
|
||||
'@tanstack/history@1.133.3':
|
||||
resolution: {integrity: sha512-zFQnGdX0S4g5xRuS+95iiEXM+qlGvYG7ksmOKx7LaMv60lDWa0imR8/24WwXXvBWJT1KnwVdZcjvhCwz9IiJCw==}
|
||||
'@tanstack/history@1.133.28':
|
||||
resolution: {integrity: sha512-B7+x7eP2FFvi3fgd3rNH9o/Eixt+pp0zCIdGhnQbAJjFrlwIKGjGnwyJjhWJ5fMQlGks/E2LdDTqEV4W9Plx7g==}
|
||||
engines: {node: '>=12'}
|
||||
|
||||
'@tanstack/match-sorter-utils@8.19.4':
|
||||
@@ -3108,16 +3104,16 @@ packages:
|
||||
peerDependencies:
|
||||
react: ^18 || ^19
|
||||
|
||||
'@tanstack/react-router-devtools@1.133.13':
|
||||
resolution: {integrity: sha512-Bc7jap95WD32U0KSuPDZOehujwycNE8cUoroQ8/A2FIugTV6msxW7/fm1Dny7MzVv2lc8VgRIykFGt1vveZgVA==}
|
||||
'@tanstack/react-router-devtools@1.133.32':
|
||||
resolution: {integrity: sha512-dd0PzcAjzaDY9rPq9zoiItit3PKDVAekLgMLtNyXneyYrTXqPDSZwSge/l+cB0V1QcuAq6w+qx3LyFd3+zK40g==}
|
||||
engines: {node: '>=12'}
|
||||
peerDependencies:
|
||||
'@tanstack/react-router': ^1.133.13
|
||||
'@tanstack/react-router': ^1.133.32
|
||||
react: '>=18.0.0 || >=19.0.0'
|
||||
react-dom: '>=18.0.0 || >=19.0.0'
|
||||
|
||||
'@tanstack/react-router@1.133.13':
|
||||
resolution: {integrity: sha512-mVAj70mPOH/a60Hjlha3gHEWLFuE4kHeKau/AL5Xp6e5GtNk1JTRwN4sJ9QlSyLcClOUUtGfED1FoLj0D2W0Eg==}
|
||||
'@tanstack/react-router@1.133.32':
|
||||
resolution: {integrity: sha512-UqakhaFJ+r5S+b4/AvLux70Hk+1MpmwfKwbdV7vuM2bVRUSztM8xtcttVpzZwRV45Ls8YsStY58prEVdCpvkNg==}
|
||||
engines: {node: '>=12'}
|
||||
peerDependencies:
|
||||
react: '>=18.0.0 || >=19.0.0'
|
||||
@@ -3142,15 +3138,15 @@ packages:
|
||||
react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
|
||||
react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
|
||||
|
||||
'@tanstack/router-core@1.133.13':
|
||||
resolution: {integrity: sha512-zZptdlS/wSkqozb07Y3zX5gas2OapJdjEG6/Id0e/twNefVdR4EY2TK/mgvyhHtKIpCxIcnZz/3opypgeQi9bg==}
|
||||
'@tanstack/router-core@1.133.28':
|
||||
resolution: {integrity: sha512-HErb1X9F+u4VzguJKafX1p5fSnNnfo7aK8Xxh5cICFMShPBxt9i1K45nUbQaRkf45N1tg4gJ3l8mlmwWRm9WWA==}
|
||||
engines: {node: '>=12'}
|
||||
|
||||
'@tanstack/router-devtools-core@1.133.13':
|
||||
resolution: {integrity: sha512-NyXZws0sVeB6+410fa2fopitFAbEqKMhGZw1ojI4bp3DyVwL6l9cnIRHw6qew3gRUVa3SBn00puJ++LfZSYc7w==}
|
||||
'@tanstack/router-devtools-core@1.133.28':
|
||||
resolution: {integrity: sha512-V4wwfVV9dGJ+OoEkAvVF6LWyST+s6MMSt+N73453lNbIbzQrODu5xdVr5svnzsuH3Kt5Fms5dMBlvb77gRcn4w==}
|
||||
engines: {node: '>=12'}
|
||||
peerDependencies:
|
||||
'@tanstack/router-core': ^1.133.13
|
||||
'@tanstack/router-core': ^1.133.28
|
||||
csstype: ^3.0.10
|
||||
solid-js: '>=1.9.5'
|
||||
tiny-invariant: ^1.3.3
|
||||
@@ -3158,18 +3154,18 @@ packages:
|
||||
csstype:
|
||||
optional: true
|
||||
|
||||
'@tanstack/router-generator@1.133.13':
|
||||
resolution: {integrity: sha512-W5locmcYSz0dY+KEOIFijUeOdQEzjCxY+uT9ExY/YeQcOBcBFIk9/UnBkE6wRLCPOBb1gfURjPNc9rI93HGrOA==}
|
||||
'@tanstack/router-generator@1.133.29':
|
||||
resolution: {integrity: sha512-Nngp1i7ch22qqLkjsQwoyos8mawL5bG2GjHg8IMOzFbMR+dVQfh9gSkpkhUbLMv8TMb8Na31tyR0/tDr+E/NCA==}
|
||||
engines: {node: '>=12'}
|
||||
|
||||
'@tanstack/router-plugin@1.133.13':
|
||||
resolution: {integrity: sha512-R5cbCwdw5chQhgaVERE2JlPpGWcER4FuVkRGDbLaW/rpawIskJCjkAbhqyfgXPF8VsEUOs9+7FK6ocODnqM/qA==}
|
||||
'@tanstack/router-plugin@1.133.32':
|
||||
resolution: {integrity: sha512-4YtRrGs5nq/sZmwwT/jmS1LiucEevsWjxzTEilHRBtjeMgFbrhnQ7jBHHRPym71C40W/9tEgzcQS3dGq5LC5+g==}
|
||||
engines: {node: '>=12'}
|
||||
peerDependencies:
|
||||
'@rsbuild/core': '>=1.0.2'
|
||||
'@tanstack/react-router': ^1.133.13
|
||||
'@tanstack/react-router': ^1.133.32
|
||||
vite: '>=5.0.0 || >=6.0.0 || >=7.0.0'
|
||||
vite-plugin-solid: ^2.11.8
|
||||
vite-plugin-solid: ^2.11.10
|
||||
webpack: '>=5.92.0'
|
||||
peerDependenciesMeta:
|
||||
'@rsbuild/core':
|
||||
@@ -3183,8 +3179,8 @@ packages:
|
||||
webpack:
|
||||
optional: true
|
||||
|
||||
'@tanstack/router-utils@1.133.3':
|
||||
resolution: {integrity: sha512-miPFlt0aG6ID5VDolYuRXgLS7cofvbZGMvHwf2Wmyxjo6GLp/kxxpkQrfM4T1I5cwjwYZZAQmdUKbVHwFZz9sQ==}
|
||||
'@tanstack/router-utils@1.133.19':
|
||||
resolution: {integrity: sha512-WEp5D2gPxvlLDRXwD/fV7RXjYtqaqJNXKB/L6OyZEbT+9BG/Ib2d7oG9GSUZNNMGPGYAlhBUOi3xutySsk6rxA==}
|
||||
engines: {node: '>=12'}
|
||||
|
||||
'@tanstack/router-zod-adapter@1.81.5':
|
||||
@@ -3204,8 +3200,8 @@ packages:
|
||||
'@tanstack/virtual-core@3.13.9':
|
||||
resolution: {integrity: sha512-3jztt0jpaoJO5TARe2WIHC1UQC3VMLAFUW5mmMo0yrkwtDB2AQP0+sh10BVUpWrnvHjSLvzFizydtEGLCJKFoQ==}
|
||||
|
||||
'@tanstack/virtual-file-routes@1.133.3':
|
||||
resolution: {integrity: sha512-6d2AP9hAjEi8mcIew2RkxBX+wClH1xedhfaYhs8fUiX+V2Cedk7RBD9E9ww2z6BGUYD8Es4fS0OIrzXZWHKGhw==}
|
||||
'@tanstack/virtual-file-routes@1.133.19':
|
||||
resolution: {integrity: sha512-IKwZENsK7owmW1Lm5FhuHegY/SyQ8KqtL/7mTSnzoKJgfzhrrf9qwKB1rmkKkt+svUuy/Zw3uVEpZtUzQruWtA==}
|
||||
engines: {node: '>=12'}
|
||||
|
||||
'@taplo/core@0.2.0':
|
||||
@@ -3831,9 +3827,8 @@ packages:
|
||||
resolution: {integrity: sha512-TGw5yVi4saajsSEgz25grObGHEUaDrniwvA2qwSC060KfqGPdglhvPMA2lPIoxs3PQIItj2iag35fONcQqgUaQ==}
|
||||
engines: {node: '>=12.0'}
|
||||
|
||||
ahooks@3.9.5:
|
||||
resolution: {integrity: sha512-TrjXie49Q8HuHKTa84Fm9A+famMDAG1+7a9S9Gq6RQ0h90Jgqmiq3CkObuRjWT/C4d6nRZCw35Y2k2fmybb5eA==}
|
||||
engines: {node: '>=18'}
|
||||
ahooks@3.9.6:
|
||||
resolution: {integrity: sha512-Mr7f05swd5SmKlR9SZo5U6M0LsL4ErweLzpdgXjA1JPmnZ78Vr6wzx0jUtvoxrcqGKYnX0Yjc02iEASVxHFPjQ==}
|
||||
peerDependencies:
|
||||
react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
|
||||
react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
|
||||
@@ -9716,8 +9711,6 @@ snapshots:
|
||||
|
||||
'@babel/runtime@7.27.6': {}
|
||||
|
||||
'@babel/runtime@7.28.2': {}
|
||||
|
||||
'@babel/runtime@7.28.3': {}
|
||||
|
||||
'@babel/runtime@7.28.4': {}
|
||||
@@ -11434,7 +11427,7 @@ snapshots:
|
||||
postcss: 8.5.6
|
||||
tailwindcss: 4.1.14
|
||||
|
||||
'@tanstack/history@1.133.3': {}
|
||||
'@tanstack/history@1.133.28': {}
|
||||
|
||||
'@tanstack/match-sorter-utils@8.19.4':
|
||||
dependencies:
|
||||
@@ -11447,10 +11440,10 @@ snapshots:
|
||||
'@tanstack/query-core': 5.90.5
|
||||
react: 19.2.0
|
||||
|
||||
'@tanstack/react-router-devtools@1.133.13(@tanstack/react-router@1.133.13(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(@tanstack/router-core@1.133.13)(@types/node@24.8.1)(csstype@3.1.3)(jiti@2.6.0)(less@4.2.0)(lightningcss@1.30.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(sass-embedded@1.93.2)(sass@1.93.2)(solid-js@1.9.5)(stylus@0.62.0)(terser@5.36.0)(tiny-invariant@1.3.3)(tsx@4.20.6)(yaml@2.8.1)':
|
||||
'@tanstack/react-router-devtools@1.133.32(@tanstack/react-router@1.133.32(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(@tanstack/router-core@1.133.28)(@types/node@24.8.1)(csstype@3.1.3)(jiti@2.6.0)(less@4.2.0)(lightningcss@1.30.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(sass-embedded@1.93.2)(sass@1.93.2)(solid-js@1.9.5)(stylus@0.62.0)(terser@5.36.0)(tiny-invariant@1.3.3)(tsx@4.20.6)(yaml@2.8.1)':
|
||||
dependencies:
|
||||
'@tanstack/react-router': 1.133.13(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
|
||||
'@tanstack/router-devtools-core': 1.133.13(@tanstack/router-core@1.133.13)(@types/node@24.8.1)(csstype@3.1.3)(jiti@2.6.0)(less@4.2.0)(lightningcss@1.30.1)(sass-embedded@1.93.2)(sass@1.93.2)(solid-js@1.9.5)(stylus@0.62.0)(terser@5.36.0)(tiny-invariant@1.3.3)(tsx@4.20.6)(yaml@2.8.1)
|
||||
'@tanstack/react-router': 1.133.32(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
|
||||
'@tanstack/router-devtools-core': 1.133.28(@tanstack/router-core@1.133.28)(@types/node@24.8.1)(csstype@3.1.3)(jiti@2.6.0)(less@4.2.0)(lightningcss@1.30.1)(sass-embedded@1.93.2)(sass@1.93.2)(solid-js@1.9.5)(stylus@0.62.0)(terser@5.36.0)(tiny-invariant@1.3.3)(tsx@4.20.6)(yaml@2.8.1)
|
||||
react: 19.2.0
|
||||
react-dom: 19.2.0(react@19.2.0)
|
||||
vite: 7.1.10(@types/node@24.8.1)(jiti@2.6.0)(less@4.2.0)(lightningcss@1.30.1)(sass-embedded@1.93.2)(sass@1.93.2)(stylus@0.62.0)(terser@5.36.0)(tsx@4.20.6)(yaml@2.8.1)
|
||||
@@ -11471,11 +11464,11 @@ snapshots:
|
||||
- tsx
|
||||
- yaml
|
||||
|
||||
'@tanstack/react-router@1.133.13(react-dom@19.2.0(react@19.2.0))(react@19.2.0)':
|
||||
'@tanstack/react-router@1.133.32(react-dom@19.2.0(react@19.2.0))(react@19.2.0)':
|
||||
dependencies:
|
||||
'@tanstack/history': 1.133.3
|
||||
'@tanstack/history': 1.133.28
|
||||
'@tanstack/react-store': 0.7.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
|
||||
'@tanstack/router-core': 1.133.13
|
||||
'@tanstack/router-core': 1.133.28
|
||||
isbot: 5.1.28
|
||||
react: 19.2.0
|
||||
react-dom: 19.2.0(react@19.2.0)
|
||||
@@ -11501,9 +11494,9 @@ snapshots:
|
||||
react: 19.2.0
|
||||
react-dom: 19.2.0(react@19.2.0)
|
||||
|
||||
'@tanstack/router-core@1.133.13':
|
||||
'@tanstack/router-core@1.133.28':
|
||||
dependencies:
|
||||
'@tanstack/history': 1.133.3
|
||||
'@tanstack/history': 1.133.28
|
||||
'@tanstack/store': 0.7.0
|
||||
cookie-es: 2.0.0
|
||||
seroval: 1.3.2
|
||||
@@ -11511,9 +11504,9 @@ snapshots:
|
||||
tiny-invariant: 1.3.3
|
||||
tiny-warning: 1.0.3
|
||||
|
||||
'@tanstack/router-devtools-core@1.133.13(@tanstack/router-core@1.133.13)(@types/node@24.8.1)(csstype@3.1.3)(jiti@2.6.0)(less@4.2.0)(lightningcss@1.30.1)(sass-embedded@1.93.2)(sass@1.93.2)(solid-js@1.9.5)(stylus@0.62.0)(terser@5.36.0)(tiny-invariant@1.3.3)(tsx@4.20.6)(yaml@2.8.1)':
|
||||
'@tanstack/router-devtools-core@1.133.28(@tanstack/router-core@1.133.28)(@types/node@24.8.1)(csstype@3.1.3)(jiti@2.6.0)(less@4.2.0)(lightningcss@1.30.1)(sass-embedded@1.93.2)(sass@1.93.2)(solid-js@1.9.5)(stylus@0.62.0)(terser@5.36.0)(tiny-invariant@1.3.3)(tsx@4.20.6)(yaml@2.8.1)':
|
||||
dependencies:
|
||||
'@tanstack/router-core': 1.133.13
|
||||
'@tanstack/router-core': 1.133.28
|
||||
clsx: 2.1.1
|
||||
goober: 2.1.16(csstype@3.1.3)
|
||||
solid-js: 1.9.5
|
||||
@@ -11534,11 +11527,11 @@ snapshots:
|
||||
- tsx
|
||||
- yaml
|
||||
|
||||
'@tanstack/router-generator@1.133.13':
|
||||
'@tanstack/router-generator@1.133.29':
|
||||
dependencies:
|
||||
'@tanstack/router-core': 1.133.13
|
||||
'@tanstack/router-utils': 1.133.3
|
||||
'@tanstack/virtual-file-routes': 1.133.3
|
||||
'@tanstack/router-core': 1.133.28
|
||||
'@tanstack/router-utils': 1.133.19
|
||||
'@tanstack/virtual-file-routes': 1.133.19
|
||||
prettier: 3.6.2
|
||||
recast: 0.23.11
|
||||
source-map: 0.7.4
|
||||
@@ -11547,7 +11540,7 @@ snapshots:
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
'@tanstack/router-plugin@1.133.13(@tanstack/react-router@1.133.13(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(vite@7.1.10(@types/node@24.8.1)(jiti@2.6.0)(less@4.2.0)(lightningcss@1.30.1)(sass-embedded@1.93.2)(sass@1.93.2)(stylus@0.62.0)(terser@5.36.0)(tsx@4.20.6)(yaml@2.8.1))':
|
||||
'@tanstack/router-plugin@1.133.32(@tanstack/react-router@1.133.32(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(vite@7.1.10(@types/node@24.8.1)(jiti@2.6.0)(less@4.2.0)(lightningcss@1.30.1)(sass-embedded@1.93.2)(sass@1.93.2)(stylus@0.62.0)(terser@5.36.0)(tsx@4.20.6)(yaml@2.8.1))':
|
||||
dependencies:
|
||||
'@babel/core': 7.28.4
|
||||
'@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.4)
|
||||
@@ -11555,21 +11548,21 @@ snapshots:
|
||||
'@babel/template': 7.27.2
|
||||
'@babel/traverse': 7.28.4
|
||||
'@babel/types': 7.28.4
|
||||
'@tanstack/router-core': 1.133.13
|
||||
'@tanstack/router-generator': 1.133.13
|
||||
'@tanstack/router-utils': 1.133.3
|
||||
'@tanstack/virtual-file-routes': 1.133.3
|
||||
'@tanstack/router-core': 1.133.28
|
||||
'@tanstack/router-generator': 1.133.29
|
||||
'@tanstack/router-utils': 1.133.19
|
||||
'@tanstack/virtual-file-routes': 1.133.19
|
||||
babel-dead-code-elimination: 1.0.10
|
||||
chokidar: 3.6.0
|
||||
unplugin: 2.3.10
|
||||
zod: 3.25.76
|
||||
optionalDependencies:
|
||||
'@tanstack/react-router': 1.133.13(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
|
||||
'@tanstack/react-router': 1.133.32(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
|
||||
vite: 7.1.10(@types/node@24.8.1)(jiti@2.6.0)(less@4.2.0)(lightningcss@1.30.1)(sass-embedded@1.93.2)(sass@1.93.2)(stylus@0.62.0)(terser@5.36.0)(tsx@4.20.6)(yaml@2.8.1)
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
'@tanstack/router-utils@1.133.3':
|
||||
'@tanstack/router-utils@1.133.19':
|
||||
dependencies:
|
||||
'@babel/core': 7.28.4
|
||||
'@babel/generator': 7.28.3
|
||||
@@ -11582,9 +11575,9 @@ snapshots:
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
'@tanstack/router-zod-adapter@1.81.5(@tanstack/react-router@1.133.13(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(zod@4.1.12)':
|
||||
'@tanstack/router-zod-adapter@1.81.5(@tanstack/react-router@1.133.32(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(zod@4.1.12)':
|
||||
dependencies:
|
||||
'@tanstack/react-router': 1.133.13(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
|
||||
'@tanstack/react-router': 1.133.32(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
|
||||
zod: 4.1.12
|
||||
|
||||
'@tanstack/store@0.7.0': {}
|
||||
@@ -11593,7 +11586,7 @@ snapshots:
|
||||
|
||||
'@tanstack/virtual-core@3.13.9': {}
|
||||
|
||||
'@tanstack/virtual-file-routes@1.133.3': {}
|
||||
'@tanstack/virtual-file-routes@1.133.19': {}
|
||||
|
||||
'@taplo/core@0.2.0': {}
|
||||
|
||||
@@ -12283,9 +12276,9 @@ snapshots:
|
||||
|
||||
adm-zip@0.5.16: {}
|
||||
|
||||
ahooks@3.9.5(react-dom@19.2.0(react@19.2.0))(react@19.2.0):
|
||||
ahooks@3.9.6(react-dom@19.2.0(react@19.2.0))(react@19.2.0):
|
||||
dependencies:
|
||||
'@babel/runtime': 7.28.2
|
||||
'@babel/runtime': 7.28.4
|
||||
'@types/js-cookie': 3.0.6
|
||||
dayjs: 1.11.18
|
||||
intersection-observer: 0.12.2
|
||||
@@ -12524,7 +12517,7 @@ snapshots:
|
||||
|
||||
babel-plugin-macros@3.1.0:
|
||||
dependencies:
|
||||
'@babel/runtime': 7.28.2
|
||||
'@babel/runtime': 7.28.4
|
||||
cosmiconfig: 7.1.0
|
||||
resolve: 1.22.8
|
||||
|
||||
|
||||
@@ -1,67 +0,0 @@
|
||||
From d64c732dfc9edcd57feb693c23162117737e426b Mon Sep 17 00:00:00 2001
|
||||
From: Philipp Zabel <p.zabel@pengutronix.de>
|
||||
Date: Mon, 2 Jan 2023 18:29:34 +0100
|
||||
Subject: [PATCH] net: rfkill: gpio: add DT support
|
||||
|
||||
Allow probing rfkill-gpio via device tree. This hooks up the already
|
||||
existing support that was started in commit 262c91ee5e52 ("net:
|
||||
rfkill: gpio: prepare for DT and ACPI support") via the "rfkill-gpio"
|
||||
compatible, with the "name" and "type" properties renamed to "label"
|
||||
and "radio-type", respectively, in the device tree case.
|
||||
|
||||
Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
|
||||
Link: https://lore.kernel.org/r/20230102-rfkill-gpio-dt-v2-2-d1b83758c16d@pengutronix.de
|
||||
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
||||
---
|
||||
net/rfkill/rfkill-gpio.c | 20 ++++++++++++++++++--
|
||||
1 file changed, 18 insertions(+), 2 deletions(-)
|
||||
|
||||
--- a/net/rfkill/rfkill-gpio.c
|
||||
+++ b/net/rfkill/rfkill-gpio.c
|
||||
@@ -79,6 +79,8 @@ static int rfkill_gpio_probe(struct plat
|
||||
{
|
||||
struct rfkill_gpio_data *rfkill;
|
||||
struct gpio_desc *gpio;
|
||||
+ const char *name_property;
|
||||
+ const char *type_property;
|
||||
const char *type_name;
|
||||
int ret;
|
||||
|
||||
@@ -86,8 +88,15 @@ static int rfkill_gpio_probe(struct plat
|
||||
if (!rfkill)
|
||||
return -ENOMEM;
|
||||
|
||||
- device_property_read_string(&pdev->dev, "name", &rfkill->name);
|
||||
- device_property_read_string(&pdev->dev, "type", &type_name);
|
||||
+ if (dev_of_node(&pdev->dev)) {
|
||||
+ name_property = "label";
|
||||
+ type_property = "radio-type";
|
||||
+ } else {
|
||||
+ name_property = "name";
|
||||
+ type_property = "type";
|
||||
+ }
|
||||
+ device_property_read_string(&pdev->dev, name_property, &rfkill->name);
|
||||
+ device_property_read_string(&pdev->dev, type_property, &type_name);
|
||||
|
||||
if (!rfkill->name)
|
||||
rfkill->name = dev_name(&pdev->dev);
|
||||
@@ -169,12 +178,19 @@ static const struct acpi_device_id rfkil
|
||||
MODULE_DEVICE_TABLE(acpi, rfkill_acpi_match);
|
||||
#endif
|
||||
|
||||
+static const struct of_device_id rfkill_of_match[] __maybe_unused = {
|
||||
+ { .compatible = "rfkill-gpio", },
|
||||
+ { },
|
||||
+};
|
||||
+MODULE_DEVICE_TABLE(of, rfkill_of_match);
|
||||
+
|
||||
static struct platform_driver rfkill_gpio_driver = {
|
||||
.probe = rfkill_gpio_probe,
|
||||
.remove = rfkill_gpio_remove,
|
||||
.driver = {
|
||||
.name = "rfkill_gpio",
|
||||
.acpi_match_table = ACPI_PTR(rfkill_acpi_match),
|
||||
+ .of_match_table = of_match_ptr(rfkill_of_match),
|
||||
},
|
||||
};
|
||||
|
||||
-10
@@ -1,10 +0,0 @@
|
||||
--- a/arch/arm64/boot/dts/rockchip/rk3399-nanopi4.dtsi
|
||||
+++ b/arch/arm64/boot/dts/rockchip/rk3399-nanopi4.dtsi
|
||||
@@ -514,6 +514,7 @@
|
||||
num-lanes = <2>;
|
||||
vpcie0v9-supply = <&vcca0v9_s3>;
|
||||
vpcie1v8-supply = <&vcca1v8_s3>;
|
||||
+ bus-scan-delay-ms = <1000>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
-96
@@ -1,96 +0,0 @@
|
||||
--- a/Documentation/admin-guide/kernel-parameters.txt
|
||||
+++ b/Documentation/admin-guide/kernel-parameters.txt
|
||||
@@ -4967,6 +4967,14 @@
|
||||
nomsi Do not use MSI for native PCIe PME signaling (this makes
|
||||
all PCIe root ports use INTx for all services).
|
||||
|
||||
+ pcie_rockchip_host.bus_scan_delay= [PCIE] Delay in ms before
|
||||
+ scanning PCIe bus in Rockchip PCIe host driver. Some PCIe
|
||||
+ cards seem to need delays that can be several hundred ms.
|
||||
+ If set to greater than or equal to 0 this parameter will
|
||||
+ override delay that can be set in device tree.
|
||||
+ Values less than 0 mean that this parameter is ignored.
|
||||
+ default=-1
|
||||
+
|
||||
pcmv= [HW,PCMCIA] BadgePAD 4
|
||||
|
||||
pd_ignore_unused
|
||||
--- a/drivers/pci/controller/pcie-rockchip-host.c
|
||||
+++ b/drivers/pci/controller/pcie-rockchip-host.c
|
||||
@@ -32,10 +32,14 @@
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/reset.h>
|
||||
#include <linux/regmap.h>
|
||||
+#include <linux/moduleparam.h>
|
||||
|
||||
#include "../pci.h"
|
||||
#include "pcie-rockchip.h"
|
||||
|
||||
+static int bus_scan_delay = -1;
|
||||
+module_param_named(bus_scan_delay, bus_scan_delay, int, S_IRUGO);
|
||||
+
|
||||
static void rockchip_pcie_enable_bw_int(struct rockchip_pcie *rockchip)
|
||||
{
|
||||
u32 status;
|
||||
@@ -933,6 +937,7 @@ static int rockchip_pcie_probe(struct platform_device *pdev)
|
||||
struct device *dev = &pdev->dev;
|
||||
struct pci_host_bridge *bridge;
|
||||
int err;
|
||||
+ u32 delay = 0;
|
||||
|
||||
if (!dev->of_node)
|
||||
return -ENODEV;
|
||||
@@ -982,6 +987,26 @@ static int rockchip_pcie_probe(struct platform_device *pdev)
|
||||
bridge->sysdata = rockchip;
|
||||
bridge->ops = &rockchip_pcie_ops;
|
||||
|
||||
+ /* Checking if bus scan delay was given from command line and prefer
|
||||
+ * that over the value in device tree (which defaults to 0 if not set).
|
||||
+ */
|
||||
+ if (bus_scan_delay >= 0) {
|
||||
+ delay = bus_scan_delay;
|
||||
+ dev_info(dev, "wait %u ms (from command-line) before bus scan\n", delay);
|
||||
+ } else {
|
||||
+ delay = rockchip->bus_scan_delay;
|
||||
+ dev_info(dev, "wait %u ms (from device tree) before bus scan\n", delay);
|
||||
+ }
|
||||
+ /* Workaround for some devices crashing on pci_host_probe / pci_scan_root_bus_bridge
|
||||
+ * calls: sleep a bit before bus scan. Call trace gets to rockchip_pcie_rd_conf when
|
||||
+ * trying to read vendor id (pci_bus_generic_read_dev_vendor_id is in call stack)
|
||||
+ * before panicing. I have no idea why this works or what causes the panic. I just
|
||||
+ * found this hack by luck when trying to "make it break differently if possible".
|
||||
+ */
|
||||
+ if (delay > 0) {
|
||||
+ msleep(delay);
|
||||
+ }
|
||||
+
|
||||
err = rockchip_pcie_setup_irq(rockchip);
|
||||
if (err)
|
||||
goto err_remove_irq_domain;
|
||||
--- a/drivers/pci/controller/pcie-rockchip.c
|
||||
+++ b/drivers/pci/controller/pcie-rockchip.c
|
||||
@@ -102,6 +102,12 @@ int rockchip_pcie_parse_dt(struct rockchip_pcie *rockchip)
|
||||
return dev_err_probe(dev, rockchip->num_clks,
|
||||
"failed to get clocks\n");
|
||||
|
||||
+ err = of_property_read_u32(node, "bus-scan-delay-ms", &rockchip->bus_scan_delay);
|
||||
+ if (err) {
|
||||
+ dev_info(dev, "no bus scan delay, default to 0 ms\n");
|
||||
+ rockchip->bus_scan_delay = 0;
|
||||
+ }
|
||||
+
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(rockchip_pcie_parse_dt);
|
||||
--- a/drivers/pci/controller/pcie-rockchip.h
|
||||
+++ b/drivers/pci/controller/pcie-rockchip.h
|
||||
@@ -351,6 +351,8 @@ struct rockchip_pcie {
|
||||
phys_addr_t msg_bus_addr;
|
||||
bool is_rc;
|
||||
struct resource *mem_res;
|
||||
+ /* Bus scan delay is a workaround for some pcie devices causing crashes */
|
||||
+ u32 bus_scan_delay;
|
||||
};
|
||||
|
||||
static u32 rockchip_pcie_read(struct rockchip_pcie *rockchip, u32 reg)
|
||||
|
||||
-10
@@ -1,10 +0,0 @@
|
||||
--- a/arch/arm64/boot/dts/rockchip/rk3399-nanopi4.dtsi
|
||||
+++ b/arch/arm64/boot/dts/rockchip/rk3399-nanopi4.dtsi
|
||||
@@ -514,6 +514,7 @@
|
||||
num-lanes = <2>;
|
||||
vpcie0v9-supply = <&vcca0v9_s3>;
|
||||
vpcie1v8-supply = <&vcca1v8_s3>;
|
||||
+ bus-scan-delay-ms = <1000>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
-96
@@ -1,96 +0,0 @@
|
||||
--- a/Documentation/admin-guide/kernel-parameters.txt
|
||||
+++ b/Documentation/admin-guide/kernel-parameters.txt
|
||||
@@ -4967,6 +4967,14 @@
|
||||
nomsi Do not use MSI for native PCIe PME signaling (this makes
|
||||
all PCIe root ports use INTx for all services).
|
||||
|
||||
+ pcie_rockchip_host.bus_scan_delay= [PCIE] Delay in ms before
|
||||
+ scanning PCIe bus in Rockchip PCIe host driver. Some PCIe
|
||||
+ cards seem to need delays that can be several hundred ms.
|
||||
+ If set to greater than or equal to 0 this parameter will
|
||||
+ override delay that can be set in device tree.
|
||||
+ Values less than 0 mean that this parameter is ignored.
|
||||
+ default=-1
|
||||
+
|
||||
pcmv= [HW,PCMCIA] BadgePAD 4
|
||||
|
||||
pd_ignore_unused
|
||||
--- a/drivers/pci/controller/pcie-rockchip-host.c
|
||||
+++ b/drivers/pci/controller/pcie-rockchip-host.c
|
||||
@@ -32,10 +32,14 @@
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/reset.h>
|
||||
#include <linux/regmap.h>
|
||||
+#include <linux/moduleparam.h>
|
||||
|
||||
#include "../pci.h"
|
||||
#include "pcie-rockchip.h"
|
||||
|
||||
+static int bus_scan_delay = -1;
|
||||
+module_param_named(bus_scan_delay, bus_scan_delay, int, S_IRUGO);
|
||||
+
|
||||
static void rockchip_pcie_enable_bw_int(struct rockchip_pcie *rockchip)
|
||||
{
|
||||
u32 status;
|
||||
@@ -933,6 +937,7 @@ static int rockchip_pcie_probe(struct platform_device *pdev)
|
||||
struct device *dev = &pdev->dev;
|
||||
struct pci_host_bridge *bridge;
|
||||
int err;
|
||||
+ u32 delay = 0;
|
||||
|
||||
if (!dev->of_node)
|
||||
return -ENODEV;
|
||||
@@ -982,6 +987,26 @@ static int rockchip_pcie_probe(struct platform_device *pdev)
|
||||
bridge->sysdata = rockchip;
|
||||
bridge->ops = &rockchip_pcie_ops;
|
||||
|
||||
+ /* Checking if bus scan delay was given from command line and prefer
|
||||
+ * that over the value in device tree (which defaults to 0 if not set).
|
||||
+ */
|
||||
+ if (bus_scan_delay >= 0) {
|
||||
+ delay = bus_scan_delay;
|
||||
+ dev_info(dev, "wait %u ms (from command-line) before bus scan\n", delay);
|
||||
+ } else {
|
||||
+ delay = rockchip->bus_scan_delay;
|
||||
+ dev_info(dev, "wait %u ms (from device tree) before bus scan\n", delay);
|
||||
+ }
|
||||
+ /* Workaround for some devices crashing on pci_host_probe / pci_scan_root_bus_bridge
|
||||
+ * calls: sleep a bit before bus scan. Call trace gets to rockchip_pcie_rd_conf when
|
||||
+ * trying to read vendor id (pci_bus_generic_read_dev_vendor_id is in call stack)
|
||||
+ * before panicing. I have no idea why this works or what causes the panic. I just
|
||||
+ * found this hack by luck when trying to "make it break differently if possible".
|
||||
+ */
|
||||
+ if (delay > 0) {
|
||||
+ msleep(delay);
|
||||
+ }
|
||||
+
|
||||
err = rockchip_pcie_setup_irq(rockchip);
|
||||
if (err)
|
||||
goto err_remove_irq_domain;
|
||||
--- a/drivers/pci/controller/pcie-rockchip.c
|
||||
+++ b/drivers/pci/controller/pcie-rockchip.c
|
||||
@@ -102,6 +102,12 @@ int rockchip_pcie_parse_dt(struct rockchip_pcie *rockchip)
|
||||
return dev_err_probe(dev, rockchip->num_clks,
|
||||
"failed to get clocks\n");
|
||||
|
||||
+ err = of_property_read_u32(node, "bus-scan-delay-ms", &rockchip->bus_scan_delay);
|
||||
+ if (err) {
|
||||
+ dev_info(dev, "no bus scan delay, default to 0 ms\n");
|
||||
+ rockchip->bus_scan_delay = 0;
|
||||
+ }
|
||||
+
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(rockchip_pcie_parse_dt);
|
||||
--- a/drivers/pci/controller/pcie-rockchip.h
|
||||
+++ b/drivers/pci/controller/pcie-rockchip.h
|
||||
@@ -351,6 +351,8 @@ struct rockchip_pcie {
|
||||
phys_addr_t msg_bus_addr;
|
||||
bool is_rc;
|
||||
struct resource *mem_res;
|
||||
+ /* Bus scan delay is a workaround for some pcie devices causing crashes */
|
||||
+ u32 bus_scan_delay;
|
||||
};
|
||||
|
||||
static u32 rockchip_pcie_read(struct rockchip_pcie *rockchip, u32 reg)
|
||||
|
||||
+170
-163
@@ -34,6 +34,11 @@ PROJECT_NAME=$(shell basename "${ROOT}")
|
||||
# Use `tools/bump_version.sh` script to change all those files at one shot.
|
||||
VERSION="3.21.0"
|
||||
|
||||
# With .ONESHELL, each recipe is executed in a single shell instance.
|
||||
# This allows `cd` to affect subsequent commands in the same recipe.
|
||||
# .ONESHELL is supported in GNU Make version 3.82 and later.
|
||||
.ONESHELL:
|
||||
|
||||
# Build binaries and installation packages.
|
||||
.PHONY: build
|
||||
build: bin deb rpm
|
||||
@@ -82,16 +87,15 @@ client-android: client-android-arm64
|
||||
# Build Android arm64 client.
|
||||
.PHONY: client-android-arm64
|
||||
client-android-arm64:
|
||||
if [ ! -z $$(command -v gcc) ]; then\
|
||||
mkdir -p release/android/arm64;\
|
||||
env GOOS=android GOARCH=arm64 CGO_ENABLED=0 go build -trimpath -ldflags="-s -w" -o release/android/arm64/mieru cmd/mieru/mieru.go;\
|
||||
cd release/android/arm64;\
|
||||
sha256sum mieru > mieru_${VERSION}_android_arm64.sha256.txt;\
|
||||
tar -zcvf mieru_${VERSION}_android_arm64.tar.gz mieru;\
|
||||
sha256sum mieru_${VERSION}_android_arm64.tar.gz > mieru_${VERSION}_android_arm64.tar.gz.sha256.txt;\
|
||||
cd "${ROOT}";\
|
||||
mv release/android/arm64/mieru_${VERSION}_android_arm64.tar.gz release/;\
|
||||
mv release/android/arm64/mieru_${VERSION}_android_arm64.tar.gz.sha256.txt release/;\
|
||||
if [ ! -z $$(command -v gcc) ]; then
|
||||
mkdir -p release/android/arm64
|
||||
env GOOS=android GOARCH=arm64 CGO_ENABLED=0 go build -trimpath -ldflags="-s -w" -o release/android/arm64/mieru cmd/mieru/mieru.go
|
||||
cd release/android/arm64
|
||||
sha256sum mieru > mieru_${VERSION}_android_arm64.sha256.txt
|
||||
tar -zcvf mieru_${VERSION}_android_arm64.tar.gz mieru
|
||||
sha256sum mieru_${VERSION}_android_arm64.tar.gz > mieru_${VERSION}_android_arm64.tar.gz.sha256.txt
|
||||
mv mieru_${VERSION}_android_arm64.tar.gz ../../
|
||||
mv mieru_${VERSION}_android_arm64.tar.gz.sha256.txt ../../
|
||||
fi
|
||||
|
||||
# Build linux clients.
|
||||
@@ -103,48 +107,48 @@ client-linux: client-linux-amd64 client-linux-arm64 client-linux-armv7 client-li
|
||||
client-linux-amd64:
|
||||
mkdir -p release/linux/amd64
|
||||
env GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build -trimpath -ldflags="-s -w" -o release/linux/amd64/mieru cmd/mieru/mieru.go
|
||||
cd release/linux/amd64;\
|
||||
sha256sum mieru > mieru_${VERSION}_linux_amd64.sha256.txt;\
|
||||
tar -zcvf mieru_${VERSION}_linux_amd64.tar.gz mieru;\
|
||||
sha256sum mieru_${VERSION}_linux_amd64.tar.gz > mieru_${VERSION}_linux_amd64.tar.gz.sha256.txt
|
||||
mv release/linux/amd64/mieru_${VERSION}_linux_amd64.tar.gz release/
|
||||
mv release/linux/amd64/mieru_${VERSION}_linux_amd64.tar.gz.sha256.txt release/
|
||||
cd release/linux/amd64
|
||||
sha256sum mieru > mieru_${VERSION}_linux_amd64.sha256.txt
|
||||
tar -zcvf mieru_${VERSION}_linux_amd64.tar.gz mieru
|
||||
sha256sum mieru_${VERSION}_linux_amd64.tar.gz > mieru_${VERSION}_linux_amd64.tar.gz.sha256.txt
|
||||
mv mieru_${VERSION}_linux_amd64.tar.gz ../../
|
||||
mv mieru_${VERSION}_linux_amd64.tar.gz.sha256.txt ../../
|
||||
|
||||
# Build linux arm64 client.
|
||||
.PHONY: client-linux-arm64
|
||||
client-linux-arm64:
|
||||
mkdir -p release/linux/arm64
|
||||
env GOOS=linux GOARCH=arm64 CGO_ENABLED=0 go build -trimpath -ldflags="-s -w" -o release/linux/arm64/mieru cmd/mieru/mieru.go
|
||||
cd release/linux/arm64;\
|
||||
sha256sum mieru > mieru_${VERSION}_linux_arm64.sha256.txt;\
|
||||
tar -zcvf mieru_${VERSION}_linux_arm64.tar.gz mieru;\
|
||||
sha256sum mieru_${VERSION}_linux_arm64.tar.gz > mieru_${VERSION}_linux_arm64.tar.gz.sha256.txt
|
||||
mv release/linux/arm64/mieru_${VERSION}_linux_arm64.tar.gz release/
|
||||
mv release/linux/arm64/mieru_${VERSION}_linux_arm64.tar.gz.sha256.txt release/
|
||||
cd release/linux/arm64
|
||||
sha256sum mieru > mieru_${VERSION}_linux_arm64.sha256.txt
|
||||
tar -zcvf mieru_${VERSION}_linux_arm64.tar.gz mieru
|
||||
sha256sum mieru_${VERSION}_linux_arm64.tar.gz > mieru_${VERSION}_linux_arm64.tar.gz.sha256.txt
|
||||
mv mieru_${VERSION}_linux_arm64.tar.gz ../../
|
||||
mv mieru_${VERSION}_linux_arm64.tar.gz.sha256.txt ../../
|
||||
|
||||
# Build linux armv7 client.
|
||||
.PHONY: client-linux-armv7
|
||||
client-linux-armv7:
|
||||
mkdir -p release/linux/armv7
|
||||
env GOOS=linux GOARCH=arm GOARM=7 CGO_ENABLED=0 go build -trimpath -ldflags="-s -w" -o release/linux/armv7/mieru cmd/mieru/mieru.go
|
||||
cd release/linux/armv7;\
|
||||
sha256sum mieru > mieru_${VERSION}_linux_armv7.sha256.txt;\
|
||||
tar -zcvf mieru_${VERSION}_linux_armv7.tar.gz mieru;\
|
||||
sha256sum mieru_${VERSION}_linux_armv7.tar.gz > mieru_${VERSION}_linux_armv7.tar.gz.sha256.txt
|
||||
mv release/linux/armv7/mieru_${VERSION}_linux_armv7.tar.gz release/
|
||||
mv release/linux/armv7/mieru_${VERSION}_linux_armv7.tar.gz.sha256.txt release/
|
||||
cd release/linux/armv7
|
||||
sha256sum mieru > mieru_${VERSION}_linux_armv7.sha256.txt
|
||||
tar -zcvf mieru_${VERSION}_linux_armv7.tar.gz mieru
|
||||
sha256sum mieru_${VERSION}_linux_armv7.tar.gz > mieru_${VERSION}_linux_armv7.tar.gz.sha256.txt
|
||||
mv mieru_${VERSION}_linux_armv7.tar.gz ../../
|
||||
mv mieru_${VERSION}_linux_armv7.tar.gz.sha256.txt ../../
|
||||
|
||||
# Build linux riscv64 client.
|
||||
.PHONY: client-linux-riscv64
|
||||
client-linux-riscv64:
|
||||
mkdir -p release/linux/riscv64
|
||||
env GOOS=linux GOARCH=riscv64 CGO_ENABLED=0 go build -trimpath -ldflags="-s -w" -o release/linux/riscv64/mieru cmd/mieru/mieru.go
|
||||
cd release/linux/riscv64;\
|
||||
sha256sum mieru > mieru_${VERSION}_linux_riscv64.sha256.txt;\
|
||||
tar -zcvf mieru_${VERSION}_linux_riscv64.tar.gz mieru;\
|
||||
sha256sum mieru_${VERSION}_linux_riscv64.tar.gz > mieru_${VERSION}_linux_riscv64.tar.gz.sha256.txt
|
||||
mv release/linux/riscv64/mieru_${VERSION}_linux_riscv64.tar.gz release/
|
||||
mv release/linux/riscv64/mieru_${VERSION}_linux_riscv64.tar.gz.sha256.txt release/
|
||||
cd release/linux/riscv64
|
||||
sha256sum mieru > mieru_${VERSION}_linux_riscv64.sha256.txt
|
||||
tar -zcvf mieru_${VERSION}_linux_riscv64.tar.gz mieru
|
||||
sha256sum mieru_${VERSION}_linux_riscv64.tar.gz > mieru_${VERSION}_linux_riscv64.tar.gz.sha256.txt
|
||||
mv mieru_${VERSION}_linux_riscv64.tar.gz ../../
|
||||
mv mieru_${VERSION}_linux_riscv64.tar.gz.sha256.txt ../../
|
||||
|
||||
# Build MacOS clients.
|
||||
.PHONY: client-mac
|
||||
@@ -155,24 +159,24 @@ client-mac: client-mac-amd64 client-mac-arm64
|
||||
client-mac-amd64:
|
||||
mkdir -p release/macos/amd64
|
||||
env GOOS=darwin GOARCH=amd64 CGO_ENABLED=0 go build -trimpath -ldflags="-s -w" -o release/macos/amd64/mieru cmd/mieru/mieru.go
|
||||
cd release/macos/amd64;\
|
||||
sha256sum mieru > mieru_${VERSION}_macos_amd64.sha256.txt;\
|
||||
tar -zcvf mieru_${VERSION}_macos_amd64.tar.gz mieru;\
|
||||
sha256sum mieru_${VERSION}_macos_amd64.tar.gz > mieru_${VERSION}_macos_amd64.tar.gz.sha256.txt
|
||||
mv release/macos/amd64/mieru_${VERSION}_macos_amd64.tar.gz release/
|
||||
mv release/macos/amd64/mieru_${VERSION}_macos_amd64.tar.gz.sha256.txt release/
|
||||
cd release/macos/amd64
|
||||
sha256sum mieru > mieru_${VERSION}_macos_amd64.sha256.txt
|
||||
tar -zcvf mieru_${VERSION}_macos_amd64.tar.gz mieru
|
||||
sha256sum mieru_${VERSION}_macos_amd64.tar.gz > mieru_${VERSION}_macos_amd64.tar.gz.sha256.txt
|
||||
mv mieru_${VERSION}_macos_amd64.tar.gz ../../
|
||||
mv mieru_${VERSION}_macos_amd64.tar.gz.sha256.txt ../../
|
||||
|
||||
# Build MacOS arm64 client.
|
||||
.PHONY: client-mac-arm64
|
||||
client-mac-arm64:
|
||||
mkdir -p release/macos/arm64
|
||||
env GOOS=darwin GOARCH=arm64 CGO_ENABLED=0 go build -trimpath -ldflags="-s -w" -o release/macos/arm64/mieru cmd/mieru/mieru.go
|
||||
cd release/macos/arm64;\
|
||||
sha256sum mieru > mieru_${VERSION}_macos_arm64.sha256.txt;\
|
||||
tar -zcvf mieru_${VERSION}_macos_arm64.tar.gz mieru;\
|
||||
sha256sum mieru_${VERSION}_macos_arm64.tar.gz > mieru_${VERSION}_macos_arm64.tar.gz.sha256.txt
|
||||
mv release/macos/arm64/mieru_${VERSION}_macos_arm64.tar.gz release/
|
||||
mv release/macos/arm64/mieru_${VERSION}_macos_arm64.tar.gz.sha256.txt release/
|
||||
cd release/macos/arm64
|
||||
sha256sum mieru > mieru_${VERSION}_macos_arm64.sha256.txt
|
||||
tar -zcvf mieru_${VERSION}_macos_arm64.tar.gz mieru
|
||||
sha256sum mieru_${VERSION}_macos_arm64.tar.gz > mieru_${VERSION}_macos_arm64.tar.gz.sha256.txt
|
||||
mv mieru_${VERSION}_macos_arm64.tar.gz ../../
|
||||
mv mieru_${VERSION}_macos_arm64.tar.gz.sha256.txt ../../
|
||||
|
||||
# Build windows clients.
|
||||
.PHONY: client-windows
|
||||
@@ -183,24 +187,24 @@ client-windows: client-windows-x86 client-windows-amd64
|
||||
client-windows-x86:
|
||||
mkdir -p release/windows/386
|
||||
env GOOS=windows GOARCH=386 CGO_ENABLED=0 go build -trimpath -ldflags="-s -w" -o release/windows/386/mieru.exe cmd/mieru/mieru.go
|
||||
cd release/windows/386;\
|
||||
sha256sum mieru.exe > mieru_${VERSION}_windows_x86.exe.sha256.txt;\
|
||||
zip -r mieru_${VERSION}_windows_x86.zip mieru.exe;\
|
||||
sha256sum mieru_${VERSION}_windows_x86.zip > mieru_${VERSION}_windows_x86.zip.sha256.txt
|
||||
mv release/windows/386/mieru_${VERSION}_windows_x86.zip release/
|
||||
mv release/windows/386/mieru_${VERSION}_windows_x86.zip.sha256.txt release/
|
||||
cd release/windows/386
|
||||
sha256sum mieru.exe > mieru_${VERSION}_windows_x86.exe.sha256.txt
|
||||
zip -r mieru_${VERSION}_windows_x86.zip mieru.exe
|
||||
sha256sum mieru_${VERSION}_windows_x86.zip > mieru_${VERSION}_windows_x86.zip.sha256.txt
|
||||
mv mieru_${VERSION}_windows_x86.zip ../../
|
||||
mv mieru_${VERSION}_windows_x86.zip.sha256.txt ../../
|
||||
|
||||
# Build windows amd64 client.
|
||||
.PHONY: client-windows-amd64
|
||||
client-windows-amd64:
|
||||
mkdir -p release/windows/amd64
|
||||
env GOOS=windows GOARCH=amd64 CGO_ENABLED=0 go build -trimpath -ldflags="-s -w" -o release/windows/amd64/mieru.exe cmd/mieru/mieru.go
|
||||
cd release/windows/amd64;\
|
||||
sha256sum mieru.exe > mieru_${VERSION}_windows_amd64.exe.sha256.txt;\
|
||||
zip -r mieru_${VERSION}_windows_amd64.zip mieru.exe;\
|
||||
sha256sum mieru_${VERSION}_windows_amd64.zip > mieru_${VERSION}_windows_amd64.zip.sha256.txt
|
||||
mv release/windows/amd64/mieru_${VERSION}_windows_amd64.zip release/
|
||||
mv release/windows/amd64/mieru_${VERSION}_windows_amd64.zip.sha256.txt release/
|
||||
cd release/windows/amd64
|
||||
sha256sum mieru.exe > mieru_${VERSION}_windows_amd64.exe.sha256.txt
|
||||
zip -r mieru_${VERSION}_windows_amd64.zip mieru.exe
|
||||
sha256sum mieru_${VERSION}_windows_amd64.zip > mieru_${VERSION}_windows_amd64.zip.sha256.txt
|
||||
mv mieru_${VERSION}_windows_amd64.zip ../../
|
||||
mv mieru_${VERSION}_windows_amd64.zip.sha256.txt ../../
|
||||
|
||||
# Build linux servers.
|
||||
.PHONY: server-linux
|
||||
@@ -211,24 +215,24 @@ server-linux: server-linux-amd64 server-linux-arm64
|
||||
server-linux-amd64:
|
||||
mkdir -p release/linux/amd64
|
||||
env GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build -trimpath -ldflags="-s -w" -o release/linux/amd64/mita cmd/mita/mita.go
|
||||
cd release/linux/amd64;\
|
||||
sha256sum mita > mita_${VERSION}_linux_amd64.sha256.txt;\
|
||||
tar -zcvf mita_${VERSION}_linux_amd64.tar.gz mita;\
|
||||
sha256sum mita_${VERSION}_linux_amd64.tar.gz > mita_${VERSION}_linux_amd64.tar.gz.sha256.txt
|
||||
mv release/linux/amd64/mita_${VERSION}_linux_amd64.tar.gz release/
|
||||
mv release/linux/amd64/mita_${VERSION}_linux_amd64.tar.gz.sha256.txt release/
|
||||
cd release/linux/amd64
|
||||
sha256sum mita > mita_${VERSION}_linux_amd64.sha256.txt
|
||||
tar -zcvf mita_${VERSION}_linux_amd64.tar.gz mita
|
||||
sha256sum mita_${VERSION}_linux_amd64.tar.gz > mita_${VERSION}_linux_amd64.tar.gz.sha256.txt
|
||||
mv mita_${VERSION}_linux_amd64.tar.gz ../../
|
||||
mv mita_${VERSION}_linux_amd64.tar.gz.sha256.txt ../../
|
||||
|
||||
# Build linux arm64 server.
|
||||
.PHONY: server-linux-arm64
|
||||
server-linux-arm64:
|
||||
mkdir -p release/linux/arm64
|
||||
env GOOS=linux GOARCH=arm64 CGO_ENABLED=0 go build -trimpath -ldflags="-s -w" -o release/linux/arm64/mita cmd/mita/mita.go
|
||||
cd release/linux/arm64;\
|
||||
sha256sum mita > mita_${VERSION}_linux_arm64.sha256.txt;\
|
||||
tar -zcvf mita_${VERSION}_linux_arm64.tar.gz mita;\
|
||||
sha256sum mita_${VERSION}_linux_arm64.tar.gz > mita_${VERSION}_linux_arm64.tar.gz.sha256.txt
|
||||
mv release/linux/arm64/mita_${VERSION}_linux_arm64.tar.gz release/
|
||||
mv release/linux/arm64/mita_${VERSION}_linux_arm64.tar.gz.sha256.txt release/
|
||||
cd release/linux/arm64
|
||||
sha256sum mita > mita_${VERSION}_linux_arm64.sha256.txt
|
||||
tar -zcvf mita_${VERSION}_linux_arm64.tar.gz mita
|
||||
sha256sum mita_${VERSION}_linux_arm64.tar.gz > mita_${VERSION}_linux_arm64.tar.gz.sha256.txt
|
||||
mv mita_${VERSION}_linux_arm64.tar.gz ../../
|
||||
mv mita_${VERSION}_linux_arm64.tar.gz.sha256.txt ../../
|
||||
|
||||
# Build debian installation packages.
|
||||
.PHONY: deb
|
||||
@@ -237,61 +241,61 @@ deb: deb-client-amd64 deb-client-arm64 deb-server-amd64 deb-server-arm64
|
||||
# Build debian client amd64 installation package.
|
||||
.PHONY: deb-client-amd64
|
||||
deb-client-amd64: client-linux-amd64
|
||||
if [ ! -z $$(command -v dpkg-deb) ] && [ ! -z $$(command -v fakeroot) ]; then\
|
||||
rm -rf build/package/mieru/amd64/debian/usr/bin;\
|
||||
mkdir -p build/package/mieru/amd64/debian/usr/bin;\
|
||||
cp release/linux/amd64/mieru build/package/mieru/amd64/debian/usr/bin/;\
|
||||
cd build/package/mieru/amd64;\
|
||||
fakeroot dpkg-deb -Zxz --build debian .;\
|
||||
cd "${ROOT}";\
|
||||
mv build/package/mieru/amd64/mieru_${VERSION}_amd64.deb release/;\
|
||||
cd release;\
|
||||
sha256sum mieru_${VERSION}_amd64.deb > mieru_${VERSION}_amd64.deb.sha256.txt;\
|
||||
if [ ! -z $$(command -v dpkg-deb) ] && [ ! -z $$(command -v fakeroot) ]; then
|
||||
rm -rf build/package/mieru/amd64/debian/usr/bin
|
||||
mkdir -p build/package/mieru/amd64/debian/usr/bin
|
||||
cp release/linux/amd64/mieru build/package/mieru/amd64/debian/usr/bin/
|
||||
cd build/package/mieru/amd64
|
||||
fakeroot dpkg-deb -Zxz --build debian .
|
||||
cd "${ROOT}"
|
||||
mv build/package/mieru/amd64/mieru_${VERSION}_amd64.deb release/
|
||||
cd release
|
||||
sha256sum mieru_${VERSION}_amd64.deb > mieru_${VERSION}_amd64.deb.sha256.txt
|
||||
fi
|
||||
|
||||
# Build debian client arm64 installation package.
|
||||
.PHONY: deb-client-arm64
|
||||
deb-client-arm64: client-linux-arm64
|
||||
if [ ! -z $$(command -v dpkg-deb) ] && [ ! -z $$(command -v fakeroot) ]; then\
|
||||
rm -rf build/package/mieru/arm64/debian/usr/bin;\
|
||||
mkdir -p build/package/mieru/arm64/debian/usr/bin;\
|
||||
cp release/linux/arm64/mieru build/package/mieru/arm64/debian/usr/bin/;\
|
||||
cd build/package/mieru/arm64;\
|
||||
fakeroot dpkg-deb -Zxz --build debian .;\
|
||||
cd "${ROOT}";\
|
||||
mv build/package/mieru/arm64/mieru_${VERSION}_arm64.deb release/;\
|
||||
cd release;\
|
||||
sha256sum mieru_${VERSION}_arm64.deb > mieru_${VERSION}_arm64.deb.sha256.txt;\
|
||||
if [ ! -z $$(command -v dpkg-deb) ] && [ ! -z $$(command -v fakeroot) ]; then
|
||||
rm -rf build/package/mieru/arm64/debian/usr/bin
|
||||
mkdir -p build/package/mieru/arm64/debian/usr/bin
|
||||
cp release/linux/arm64/mieru build/package/mieru/arm64/debian/usr/bin/
|
||||
cd build/package/mieru/arm64
|
||||
fakeroot dpkg-deb -Zxz --build debian .
|
||||
cd "${ROOT}"
|
||||
mv build/package/mieru/arm64/mieru_${VERSION}_arm64.deb release/
|
||||
cd release
|
||||
sha256sum mieru_${VERSION}_arm64.deb > mieru_${VERSION}_arm64.deb.sha256.txt
|
||||
fi
|
||||
|
||||
# Build debian server amd64 installation package.
|
||||
.PHONY: deb-server-amd64
|
||||
deb-server-amd64: server-linux-amd64
|
||||
if [ ! -z $$(command -v dpkg-deb) ] && [ ! -z $$(command -v fakeroot) ]; then\
|
||||
rm -rf build/package/mita/amd64/debian/usr/bin;\
|
||||
mkdir -p build/package/mita/amd64/debian/usr/bin;\
|
||||
cp release/linux/amd64/mita build/package/mita/amd64/debian/usr/bin/;\
|
||||
cd build/package/mita/amd64;\
|
||||
fakeroot dpkg-deb -Zxz --build debian .;\
|
||||
cd "${ROOT}";\
|
||||
mv build/package/mita/amd64/mita_${VERSION}_amd64.deb release/;\
|
||||
cd release;\
|
||||
sha256sum mita_${VERSION}_amd64.deb > mita_${VERSION}_amd64.deb.sha256.txt;\
|
||||
if [ ! -z $$(command -v dpkg-deb) ] && [ ! -z $$(command -v fakeroot) ]; then
|
||||
rm -rf build/package/mita/amd64/debian/usr/bin
|
||||
mkdir -p build/package/mita/amd64/debian/usr/bin
|
||||
cp release/linux/amd64/mita build/package/mita/amd64/debian/usr/bin/
|
||||
cd build/package/mita/amd64
|
||||
fakeroot dpkg-deb -Zxz --build debian .
|
||||
cd "${ROOT}"
|
||||
mv build/package/mita/amd64/mita_${VERSION}_amd64.deb release/
|
||||
cd release
|
||||
sha256sum mita_${VERSION}_amd64.deb > mita_${VERSION}_amd64.deb.sha256.txt
|
||||
fi
|
||||
|
||||
# Build debian server arm64 installation package.
|
||||
.PHONY: deb-server-arm64
|
||||
deb-server-arm64: server-linux-arm64
|
||||
if [ ! -z $$(command -v dpkg-deb) ] && [ ! -z $$(command -v fakeroot) ]; then\
|
||||
rm -rf build/package/mita/arm64/debian/usr/bin;\
|
||||
mkdir -p build/package/mita/arm64/debian/usr/bin;\
|
||||
cp release/linux/arm64/mita build/package/mita/arm64/debian/usr/bin/;\
|
||||
cd build/package/mita/arm64;\
|
||||
fakeroot dpkg-deb -Zxz --build debian .;\
|
||||
cd "${ROOT}";\
|
||||
mv build/package/mita/arm64/mita_${VERSION}_arm64.deb release/;\
|
||||
cd release;\
|
||||
sha256sum mita_${VERSION}_arm64.deb > mita_${VERSION}_arm64.deb.sha256.txt;\
|
||||
if [ ! -z $$(command -v dpkg-deb) ] && [ ! -z $$(command -v fakeroot) ]; then
|
||||
rm -rf build/package/mita/arm64/debian/usr/bin
|
||||
mkdir -p build/package/mita/arm64/debian/usr/bin
|
||||
cp release/linux/arm64/mita build/package/mita/arm64/debian/usr/bin/
|
||||
cd build/package/mita/arm64
|
||||
fakeroot dpkg-deb -Zxz --build debian .
|
||||
cd "${ROOT}"
|
||||
mv build/package/mita/arm64/mita_${VERSION}_arm64.deb release/
|
||||
cd release
|
||||
sha256sum mita_${VERSION}_arm64.deb > mita_${VERSION}_arm64.deb.sha256.txt
|
||||
fi
|
||||
|
||||
# Build RPM installation packages.
|
||||
@@ -301,57 +305,57 @@ rpm: rpm-client-amd64 rpm-client-arm64 rpm-server-amd64 rpm-server-arm64
|
||||
# Build RPM client amd64 installation package.
|
||||
.PHONY: rpm-client-amd64
|
||||
rpm-client-amd64: client-linux-amd64
|
||||
if [ ! -z $$(command -v rpmbuild) ]; then\
|
||||
rm -rf build/package/mieru/amd64/rpm/mieru;\
|
||||
cp release/linux/amd64/mieru build/package/mieru/amd64/rpm/;\
|
||||
cd build/package/mieru/amd64/rpm;\
|
||||
rpmbuild -bb --target x86_64 --build-in-place --define "_topdir $$(pwd)" mieru.spec;\
|
||||
cd "${ROOT}";\
|
||||
mv build/package/mieru/amd64/rpm/RPMS/x86_64/mieru-${VERSION}-1.x86_64.rpm release/;\
|
||||
cd release;\
|
||||
sha256sum mieru-${VERSION}-1.x86_64.rpm > mieru-${VERSION}-1.x86_64.rpm.sha256.txt;\
|
||||
if [ ! -z $$(command -v rpmbuild) ]; then
|
||||
rm -rf build/package/mieru/amd64/rpm/mieru
|
||||
cp release/linux/amd64/mieru build/package/mieru/amd64/rpm/
|
||||
cd build/package/mieru/amd64/rpm
|
||||
rpmbuild -bb --target x86_64 --build-in-place --define "_topdir $$(pwd)" mieru.spec
|
||||
cd "${ROOT}"
|
||||
mv build/package/mieru/amd64/rpm/RPMS/x86_64/mieru-${VERSION}-1.x86_64.rpm release/
|
||||
cd release
|
||||
sha256sum mieru-${VERSION}-1.x86_64.rpm > mieru-${VERSION}-1.x86_64.rpm.sha256.txt
|
||||
fi
|
||||
|
||||
# Build RPM client arm64 installation package.
|
||||
.PHONY: rpm-client-arm64
|
||||
rpm-client-arm64: client-linux-arm64
|
||||
if [ ! -z $$(command -v rpmbuild) ]; then\
|
||||
rm -rf build/package/mieru/arm64/rpm/mieru;\
|
||||
cp release/linux/arm64/mieru build/package/mieru/arm64/rpm/;\
|
||||
cd build/package/mieru/arm64/rpm;\
|
||||
rpmbuild -bb --target aarch64 --build-in-place --define "_topdir $$(pwd)" mieru.spec;\
|
||||
cd "${ROOT}";\
|
||||
mv build/package/mieru/arm64/rpm/RPMS/aarch64/mieru-${VERSION}-1.aarch64.rpm release/;\
|
||||
cd release;\
|
||||
sha256sum mieru-${VERSION}-1.aarch64.rpm > mieru-${VERSION}-1.aarch64.rpm.sha256.txt;\
|
||||
if [ ! -z $$(command -v rpmbuild) ]; then
|
||||
rm -rf build/package/mieru/arm64/rpm/mieru
|
||||
cp release/linux/arm64/mieru build/package/mieru/arm64/rpm/
|
||||
cd build/package/mieru/arm64/rpm
|
||||
rpmbuild -bb --target aarch64 --build-in-place --define "_topdir $$(pwd)" mieru.spec
|
||||
cd "${ROOT}"
|
||||
mv build/package/mieru/arm64/rpm/RPMS/aarch64/mieru-${VERSION}-1.aarch64.rpm release/
|
||||
cd release
|
||||
sha256sum mieru-${VERSION}-1.aarch64.rpm > mieru-${VERSION}-1.aarch64.rpm.sha256.txt
|
||||
fi
|
||||
|
||||
# Build RPM server amd64 installation package.
|
||||
.PHONY: rpm-server-amd64
|
||||
rpm-server-amd64: server-linux-amd64
|
||||
if [ ! -z $$(command -v rpmbuild) ]; then\
|
||||
rm -rf build/package/mita/amd64/rpm/mita;\
|
||||
cp release/linux/amd64/mita build/package/mita/amd64/rpm/;\
|
||||
cd build/package/mita/amd64/rpm;\
|
||||
rpmbuild -bb --target x86_64 --build-in-place --define "_topdir $$(pwd)" mita.spec;\
|
||||
cd "${ROOT}";\
|
||||
mv build/package/mita/amd64/rpm/RPMS/x86_64/mita-${VERSION}-1.x86_64.rpm release/;\
|
||||
cd release;\
|
||||
sha256sum mita-${VERSION}-1.x86_64.rpm > mita-${VERSION}-1.x86_64.rpm.sha256.txt;\
|
||||
if [ ! -z $$(command -v rpmbuild) ]; then
|
||||
rm -rf build/package/mita/amd64/rpm/mita
|
||||
cp release/linux/amd64/mita build/package/mita/amd64/rpm/
|
||||
cd build/package/mita/amd64/rpm
|
||||
rpmbuild -bb --target x86_64 --build-in-place --define "_topdir $$(pwd)" mita.spec
|
||||
cd "${ROOT}"
|
||||
mv build/package/mita/amd64/rpm/RPMS/x86_64/mita-${VERSION}-1.x86_64.rpm release/
|
||||
cd release
|
||||
sha256sum mita-${VERSION}-1.x86_64.rpm > mita-${VERSION}-1.x86_64.rpm.sha256.txt
|
||||
fi
|
||||
|
||||
# Build RPM server arm64 installation package.
|
||||
.PHONY: rpm-server-arm64
|
||||
rpm-server-arm64: server-linux-arm64
|
||||
if [ ! -z $$(command -v rpmbuild) ]; then\
|
||||
rm -rf build/package/mita/arm64/rpm/mita;\
|
||||
cp release/linux/arm64/mita build/package/mita/arm64/rpm/;\
|
||||
cd build/package/mita/arm64/rpm;\
|
||||
rpmbuild -bb --target aarch64 --build-in-place --define "_topdir $$(pwd)" mita.spec;\
|
||||
cd "${ROOT}";\
|
||||
mv build/package/mita/arm64/rpm/RPMS/aarch64/mita-${VERSION}-1.aarch64.rpm release/;\
|
||||
cd release;\
|
||||
sha256sum mita-${VERSION}-1.aarch64.rpm > mita-${VERSION}-1.aarch64.rpm.sha256.txt;\
|
||||
if [ ! -z $$(command -v rpmbuild) ]; then
|
||||
rm -rf build/package/mita/arm64/rpm/mita
|
||||
cp release/linux/arm64/mita build/package/mita/arm64/rpm/
|
||||
cd build/package/mita/arm64/rpm
|
||||
rpmbuild -bb --target aarch64 --build-in-place --define "_topdir $$(pwd)" mita.spec
|
||||
cd "${ROOT}"
|
||||
mv build/package/mita/arm64/rpm/RPMS/aarch64/mita-${VERSION}-1.aarch64.rpm release/
|
||||
cd release
|
||||
sha256sum mita-${VERSION}-1.aarch64.rpm > mita-${VERSION}-1.aarch64.rpm.sha256.txt
|
||||
fi
|
||||
|
||||
# Build binaries used in integration tests.
|
||||
@@ -370,18 +374,18 @@ test-binary:
|
||||
# Build a docker image to run integration tests.
|
||||
.PHONY: test-container
|
||||
test-container: test-binary
|
||||
if [ ! -z $$(command -v docker) ]; then\
|
||||
docker build -t mieru_httptest:${SHORT_SHA} -f test/deploy/httptest/Dockerfile .;\
|
||||
docker build -t mieru_proxychain:${SHORT_SHA} -f test/deploy/proxychain/Dockerfile .;\
|
||||
if [ ! -z $$(command -v docker) ]; then
|
||||
docker build -t mieru_httptest:${SHORT_SHA} -f test/deploy/httptest/Dockerfile .
|
||||
docker build -t mieru_proxychain:${SHORT_SHA} -f test/deploy/proxychain/Dockerfile .
|
||||
fi
|
||||
rm -f exampleapiclient mieru mieru2 mita mita2 httpserver sockshttpclient socksudpclient udpserver
|
||||
|
||||
# Run docker integration tests.
|
||||
.PHONY: run-container-test
|
||||
run-container-test: test-container
|
||||
if [ ! -z $$(command -v docker) ]; then\
|
||||
docker run mieru_httptest:${SHORT_SHA};\
|
||||
docker run mieru_proxychain:${SHORT_SHA};\
|
||||
if [ ! -z $$(command -v docker) ]; then
|
||||
docker run mieru_httptest:${SHORT_SHA}
|
||||
docker run mieru_proxychain:${SHORT_SHA}
|
||||
fi
|
||||
|
||||
# Generate source code from protobuf.
|
||||
@@ -396,19 +400,19 @@ endif
|
||||
.PHONY: protobuf
|
||||
protobuf:
|
||||
# Download location: https://github.com/protocolbuffers/protobuf/releases
|
||||
if [ ! -x "${ROOT}/tools/build/protoc" ]; then\
|
||||
curl -o "${ROOT}/tools/build/protoc" https://raw.githubusercontent.com/enfein/buildtools/main/protoc/22.3/linux_${PROTOC_ARCH}/bin/protoc;\
|
||||
chmod 755 "${ROOT}/tools/build/protoc";\
|
||||
if [ ! -x "${ROOT}/tools/build/protoc" ]; then
|
||||
curl -o "${ROOT}/tools/build/protoc" https://raw.githubusercontent.com/enfein/buildtools/main/protoc/22.3/linux_${PROTOC_ARCH}/bin/protoc
|
||||
chmod 755 "${ROOT}/tools/build/protoc"
|
||||
fi
|
||||
# Download location: https://github.com/protocolbuffers/protobuf-go/releases
|
||||
if [ ! -x "${ROOT}/tools/build/protoc-gen-go" ]; then\
|
||||
curl -o "${ROOT}/tools/build/protoc-gen-go" https://raw.githubusercontent.com/enfein/buildtools/main/protoc-gen-go/1.30.0/linux_${PROTOC_ARCH}/protoc-gen-go;\
|
||||
chmod 755 "${ROOT}/tools/build/protoc-gen-go";\
|
||||
if [ ! -x "${ROOT}/tools/build/protoc-gen-go" ]; then
|
||||
curl -o "${ROOT}/tools/build/protoc-gen-go" https://raw.githubusercontent.com/enfein/buildtools/main/protoc-gen-go/1.30.0/linux_${PROTOC_ARCH}/protoc-gen-go
|
||||
chmod 755 "${ROOT}/tools/build/protoc-gen-go"
|
||||
fi
|
||||
# Download location: https://github.com/grpc/grpc-go/releases
|
||||
if [ ! -x "${ROOT}/tools/build/protoc-gen-go-grpc" ]; then\
|
||||
curl -o "${ROOT}/tools/build/protoc-gen-go-grpc" https://raw.githubusercontent.com/enfein/buildtools/main/protoc-gen-go-grpc/1.3.0/linux_${PROTOC_ARCH}/protoc-gen-go-grpc;\
|
||||
chmod 755 "${ROOT}/tools/build/protoc-gen-go-grpc";\
|
||||
if [ ! -x "${ROOT}/tools/build/protoc-gen-go-grpc" ]; then
|
||||
curl -o "${ROOT}/tools/build/protoc-gen-go-grpc" https://raw.githubusercontent.com/enfein/buildtools/main/protoc-gen-go-grpc/1.3.0/linux_${PROTOC_ARCH}/protoc-gen-go-grpc
|
||||
chmod 755 "${ROOT}/tools/build/protoc-gen-go-grpc"
|
||||
fi
|
||||
|
||||
PATH=${PATH}:"${ROOT}/tools/build" ${ROOT}/tools/build/protoc -I="${ROOT}/pkg" \
|
||||
@@ -434,8 +438,11 @@ protobuf:
|
||||
# Package source code.
|
||||
.PHONY: src
|
||||
src: clean
|
||||
cd ..; tar --exclude="${PROJECT_NAME}/.git" -zcvf source.tar.gz "${PROJECT_NAME}"; zip -r source.zip "${PROJECT_NAME}" -x \*.git\*
|
||||
mkdir -p release; mv ../source.tar.gz release; mv ../source.zip release
|
||||
(cd ..; tar --exclude="${PROJECT_NAME}/.git" -zcvf source.tar.gz "${PROJECT_NAME}")
|
||||
(cd ..; zip -r source.zip "${PROJECT_NAME}" -x "${PROJECT_NAME}/.git/*")
|
||||
mkdir -p release
|
||||
mv ../source.tar.gz release
|
||||
mv ../source.zip release
|
||||
|
||||
# Clean all the files outside the git repository.
|
||||
.PHONY: clean
|
||||
|
||||
@@ -145,7 +145,9 @@ func (mc *mieruClient) DialContext(ctx context.Context, addr net.Addr) (net.Conn
|
||||
return nil, fmt.Errorf("unsupported network type %s", netAddrSpec.Network())
|
||||
}
|
||||
req.DstAddr = netAddrSpec.AddrSpec
|
||||
return internal.NewEarlyConn(conn, req), nil
|
||||
earlyConn := internal.NewEarlyConn(conn)
|
||||
earlyConn.SetRequest(req)
|
||||
return earlyConn, nil
|
||||
}
|
||||
_, err = internal.PostDialHandshake(conn, netAddrSpec)
|
||||
return conn, err
|
||||
|
||||
@@ -18,43 +18,61 @@ package internal
|
||||
import (
|
||||
"bytes"
|
||||
"fmt"
|
||||
"io"
|
||||
"net"
|
||||
"sync"
|
||||
"sync/atomic"
|
||||
"time"
|
||||
|
||||
"github.com/enfein/mieru/v3/apis/constant"
|
||||
"github.com/enfein/mieru/v3/apis/model"
|
||||
)
|
||||
|
||||
// Socks5Writer is an interface for socks5 objects that can be written to a writer.
|
||||
type Socks5Writer interface {
|
||||
WriteToSocks5(writer io.Writer) error
|
||||
}
|
||||
|
||||
var _ Socks5Writer = (*model.Request)(nil)
|
||||
var _ Socks5Writer = (*model.Response)(nil)
|
||||
|
||||
// EarlyConn implements net.Conn interface.
|
||||
// When the Write() method on the net.Conn is called for the first time,
|
||||
// it performs the initial handshake and writes the request to the server.
|
||||
// it performs the initial handshake and writes
|
||||
// the request or response to the peer.
|
||||
type EarlyConn struct {
|
||||
net.Conn
|
||||
object Socks5Writer
|
||||
request atomic.Pointer[model.Request]
|
||||
response atomic.Pointer[model.Response]
|
||||
peerResponse atomic.Pointer[model.Response]
|
||||
handshakeOnce sync.Once
|
||||
handshakeErr error
|
||||
handshaked chan struct{}
|
||||
}
|
||||
|
||||
// NewEarlyConn creates a new EarlyConn.
|
||||
func NewEarlyConn(conn net.Conn, object Socks5Writer) *EarlyConn {
|
||||
func NewEarlyConn(conn net.Conn) *EarlyConn {
|
||||
return &EarlyConn{
|
||||
Conn: conn,
|
||||
object: object,
|
||||
handshaked: make(chan struct{}),
|
||||
}
|
||||
}
|
||||
|
||||
func (c *EarlyConn) SetRequest(request *model.Request) {
|
||||
if c.response.Load() != nil {
|
||||
panic("can't set request when response is not empty")
|
||||
}
|
||||
select {
|
||||
case <-c.handshaked:
|
||||
panic("can't set request when handshake already done")
|
||||
default:
|
||||
c.request.Store(request)
|
||||
}
|
||||
}
|
||||
|
||||
func (c *EarlyConn) SetResponse(response *model.Response) {
|
||||
if c.request.Load() != nil {
|
||||
panic("can't set response when request is not empty")
|
||||
}
|
||||
select {
|
||||
case <-c.handshaked:
|
||||
panic("can't set response when handshake already done")
|
||||
default:
|
||||
c.response.Store(response)
|
||||
}
|
||||
}
|
||||
|
||||
// Read will block until a message is received or an error occurs.
|
||||
// It waits for the handshake to complete.
|
||||
func (c *EarlyConn) Read(b []byte) (n int, err error) {
|
||||
@@ -103,10 +121,26 @@ func (c *EarlyConn) NeedHandshake() bool {
|
||||
}
|
||||
}
|
||||
|
||||
// PeerResponse returns the response from the peer.
|
||||
// It returns nil if the handshake has not been performed yet.
|
||||
func (c *EarlyConn) PeerResponse() *model.Response {
|
||||
return c.peerResponse.Load()
|
||||
}
|
||||
|
||||
func (c *EarlyConn) doHandshakeAndWrite(b []byte) error {
|
||||
var buf bytes.Buffer
|
||||
if err := c.object.WriteToSocks5(&buf); err != nil {
|
||||
return err
|
||||
request := c.request.Load()
|
||||
response := c.response.Load()
|
||||
if request != nil {
|
||||
if err := request.WriteToSocks5(&buf); err != nil {
|
||||
return err
|
||||
}
|
||||
} else if response != nil {
|
||||
if err := response.WriteToSocks5(&buf); err != nil {
|
||||
return err
|
||||
}
|
||||
} else {
|
||||
return fmt.Errorf("no request or response set")
|
||||
}
|
||||
if len(b) > 0 {
|
||||
buf.Write(b)
|
||||
@@ -116,8 +150,7 @@ func (c *EarlyConn) doHandshakeAndWrite(b []byte) error {
|
||||
}
|
||||
|
||||
// If this is a request, read the response.
|
||||
switch c.object.(type) {
|
||||
case *model.Request:
|
||||
if request != nil {
|
||||
c.Conn.SetReadDeadline(time.Now().Add(10 * time.Second))
|
||||
defer c.Conn.SetReadDeadline(time.Time{})
|
||||
|
||||
@@ -128,11 +161,7 @@ func (c *EarlyConn) doHandshakeAndWrite(b []byte) error {
|
||||
if resp.Reply != constant.Socks5ReplySuccess {
|
||||
return fmt.Errorf("server returned socks5 error code %d", resp.Reply)
|
||||
}
|
||||
case *model.Response:
|
||||
// No need to read anything.
|
||||
default:
|
||||
return fmt.Errorf("unsupported object type for EarlyConn: %T", c.object)
|
||||
c.peerResponse.Store(&resp)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -78,7 +78,8 @@ func TestEarlyConn_Request(t *testing.T) {
|
||||
Port: 80,
|
||||
},
|
||||
}
|
||||
conn := internal.NewEarlyConn(clientConn, req)
|
||||
conn := internal.NewEarlyConn(clientConn)
|
||||
conn.SetRequest(req)
|
||||
defer conn.Close()
|
||||
|
||||
// The first write triggers the handshake.
|
||||
@@ -143,7 +144,8 @@ func TestEarlyConn_Response(t *testing.T) {
|
||||
Port: 1080,
|
||||
},
|
||||
}
|
||||
conn := internal.NewEarlyConn(clientConn, resp)
|
||||
conn := internal.NewEarlyConn(clientConn)
|
||||
conn.SetResponse(resp)
|
||||
defer conn.Close()
|
||||
|
||||
// The first write triggers sending the response.
|
||||
|
||||
@@ -39,7 +39,7 @@ import (
|
||||
"github.com/metacubex/mihomo/listener/inner"
|
||||
"github.com/metacubex/mihomo/listener/tproxy"
|
||||
"github.com/metacubex/mihomo/log"
|
||||
"github.com/metacubex/mihomo/ntp"
|
||||
"github.com/metacubex/mihomo/ntp/ntp"
|
||||
"github.com/metacubex/mihomo/tunnel"
|
||||
)
|
||||
|
||||
|
||||
@@ -3,18 +3,18 @@ package ntp
|
||||
import (
|
||||
"context"
|
||||
"sync"
|
||||
"sync/atomic"
|
||||
"time"
|
||||
|
||||
"github.com/metacubex/mihomo/component/dialer"
|
||||
"github.com/metacubex/mihomo/component/proxydialer"
|
||||
"github.com/metacubex/mihomo/log"
|
||||
mihomoNtp "github.com/metacubex/mihomo/ntp"
|
||||
|
||||
M "github.com/metacubex/sing/common/metadata"
|
||||
"github.com/metacubex/sing/common/ntp"
|
||||
)
|
||||
|
||||
var globalSrv atomic.Pointer[Service]
|
||||
var globalSrv *Service
|
||||
var globalMu sync.Mutex
|
||||
|
||||
type Service struct {
|
||||
@@ -23,21 +23,20 @@ type Service struct {
|
||||
ticker *time.Ticker
|
||||
ctx context.Context
|
||||
cancel context.CancelFunc
|
||||
offset atomic.Int64 // [time.Duration]
|
||||
syncSystemTime bool
|
||||
}
|
||||
|
||||
func ReCreateNTPService(server string, interval time.Duration, dialerProxy string, syncSystemTime bool) {
|
||||
globalMu.Lock()
|
||||
defer globalMu.Unlock()
|
||||
if service := globalSrv.Swap(nil); service != nil {
|
||||
service.Stop()
|
||||
if globalSrv != nil {
|
||||
globalSrv.Stop()
|
||||
}
|
||||
if server == "" || interval <= 0 {
|
||||
return
|
||||
}
|
||||
ctx, cancel := context.WithCancel(context.Background())
|
||||
service := &Service{
|
||||
globalSrv = &Service{
|
||||
server: M.ParseSocksaddr(server),
|
||||
dialer: proxydialer.NewByNameSingDialer(dialerProxy, dialer.NewDialer()),
|
||||
ticker: time.NewTicker(interval * time.Minute),
|
||||
@@ -45,8 +44,7 @@ func ReCreateNTPService(server string, interval time.Duration, dialerProxy strin
|
||||
cancel: cancel,
|
||||
syncSystemTime: syncSystemTime,
|
||||
}
|
||||
service.Start()
|
||||
globalSrv.Store(service)
|
||||
globalSrv.Start()
|
||||
}
|
||||
|
||||
func (srv *Service) Start() {
|
||||
@@ -59,10 +57,6 @@ func (srv *Service) Stop() {
|
||||
srv.cancel()
|
||||
}
|
||||
|
||||
func (srv *Service) Offset() time.Duration {
|
||||
return time.Duration(srv.offset.Load())
|
||||
}
|
||||
|
||||
func (srv *Service) update() error {
|
||||
var response *ntp.Response
|
||||
var err error
|
||||
@@ -80,7 +74,7 @@ func (srv *Service) update() error {
|
||||
} else if offset < time.Duration(0) {
|
||||
log.Infoln("System clock is behind NTP time by %s", -offset)
|
||||
}
|
||||
srv.offset.Store(int64(offset))
|
||||
mihomoNtp.SetOffset(offset)
|
||||
if srv.syncSystemTime {
|
||||
timeNow := response.Time
|
||||
syncErr := setSystemTime(timeNow)
|
||||
@@ -97,7 +91,7 @@ func (srv *Service) update() error {
|
||||
}
|
||||
|
||||
func (srv *Service) loopUpdate() {
|
||||
defer srv.offset.Store(0)
|
||||
defer mihomoNtp.SetOffset(0)
|
||||
defer srv.ticker.Stop()
|
||||
for {
|
||||
err := srv.update()
|
||||
@@ -111,13 +105,3 @@ func (srv *Service) loopUpdate() {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func Now() time.Time {
|
||||
now := time.Now()
|
||||
if service := globalSrv.Load(); service != nil {
|
||||
if offset := service.Offset(); offset.Abs() > 0 {
|
||||
now = now.Add(offset)
|
||||
}
|
||||
}
|
||||
return now
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
// Package ntp provide time.Now
|
||||
//
|
||||
// DON'T import other package in mihomo to keep minimal internal dependencies
|
||||
package ntp
|
||||
|
||||
import (
|
||||
"time"
|
||||
|
||||
"sync/atomic"
|
||||
)
|
||||
|
||||
var _offset atomic.Int64 // [time.Duration]
|
||||
|
||||
func SetOffset(offset time.Duration) {
|
||||
_offset.Store(int64(offset))
|
||||
}
|
||||
|
||||
func GetOffset() time.Duration {
|
||||
return time.Duration(_offset.Load())
|
||||
}
|
||||
|
||||
func Now() time.Time {
|
||||
now := time.Now()
|
||||
if offset := GetOffset(); offset != 0 {
|
||||
now = now.Add(offset)
|
||||
}
|
||||
return now
|
||||
}
|
||||
@@ -34,7 +34,7 @@ func ConvertToMrs(buf []byte, behavior P.RuleBehavior, format P.RuleFormat, w io
|
||||
}
|
||||
|
||||
var encoder *zstd.Encoder
|
||||
encoder, err = zstd.NewWriter(w, zstd.WithEncoderLevel(zstd.SpeedBestCompression))
|
||||
encoder, err = zstd.NewWriter(w)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -1,213 +0,0 @@
|
||||
name: Update Third-Party Resources
|
||||
|
||||
on:
|
||||
schedule:
|
||||
- cron: '30 0 */3 * *'
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
update-resources:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout Repository
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 1
|
||||
ref: dev
|
||||
|
||||
- name: Set up environment
|
||||
run: |
|
||||
sudo apt-get update
|
||||
sudo apt-get -y install curl wget unzip git jq coreutils
|
||||
|
||||
- name: Set file paths
|
||||
run: |
|
||||
echo "CHNR_PATH=luci-app-openclash/root/etc/openclash/china_ip_route.ipset" >> $GITHUB_ENV
|
||||
echo "CHNR6_PATH=luci-app-openclash/root/etc/openclash/china_ip6_route.ipset" >> $GITHUB_ENV
|
||||
echo "YACD_PATH=luci-app-openclash/root/usr/share/openclash/ui/yacd" >> $GITHUB_ENV
|
||||
echo "ZASHBOARD_PATH=luci-app-openclash/root/usr/share/openclash/ui/zashboard" >> $GITHUB_ENV
|
||||
echo "METACUBEXD_PATH=luci-app-openclash/root/usr/share/openclash/ui/metacubexd" >> $GITHUB_ENV
|
||||
echo "GEOSITE_PATH=luci-app-openclash/root/etc/openclash/GeoSite.dat" >> $GITHUB_ENV
|
||||
echo "COUNTRY_MMDB_PATH=luci-app-openclash/root/etc/openclash/Country.mmdb" >> $GITHUB_ENV
|
||||
|
||||
- name: Update China IP Route Files
|
||||
id: chnr
|
||||
run: |
|
||||
mkdir -p tmp
|
||||
echo "Downloading China IP Route files..."
|
||||
curl -sSL https://ispip.clang.cn/all_cn.txt -o tmp/china_ip_route.ipset
|
||||
mkdir -p $(dirname $CHNR_PATH)
|
||||
UPDATED=0
|
||||
if [ -f "$CHNR_PATH" ]; then
|
||||
if ! cmp -s tmp/china_ip_route.ipset "$CHNR_PATH"; then
|
||||
echo "China IP Route list has been updated, replacing old version."
|
||||
cp tmp/china_ip_route.ipset "$CHNR_PATH"
|
||||
UPDATED=1
|
||||
else
|
||||
echo "China IP Route list is up to date."
|
||||
fi
|
||||
else
|
||||
echo "China IP Route list file doesn't exist, creating it."
|
||||
cp tmp/china_ip_route.ipset "$CHNR_PATH"
|
||||
UPDATED=1
|
||||
fi
|
||||
curl -sSL https://ispip.clang.cn/all_cn_ipv6.txt -o tmp/china_ip6_route.ipset
|
||||
mkdir -p $(dirname $CHNR6_PATH)
|
||||
UPDATED6=0
|
||||
if [ -f "$CHNR6_PATH" ]; then
|
||||
if ! cmp -s tmp/china_ip6_route.ipset "$CHNR6_PATH"; then
|
||||
echo "China IP6 Route list has been updated, replacing old version."
|
||||
cp tmp/china_ip6_route.ipset "$CHNR6_PATH"
|
||||
UPDATED6=1
|
||||
else
|
||||
echo "China IP6 Route list is up to date."
|
||||
fi
|
||||
else
|
||||
echo "China IP6 Route list file doesn't exist, creating it."
|
||||
cp tmp/china_ip6_route.ipset "$CHNR6_PATH"
|
||||
UPDATED6=1
|
||||
fi
|
||||
echo "updated=$UPDATED" >> $GITHUB_OUTPUT
|
||||
echo "updated6=$UPDATED6" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Update MetaCubeXD UI
|
||||
id: metacubexd
|
||||
run: |
|
||||
echo "Downloading latest MetaCubeXD UI zip from gh-pages branch..."
|
||||
mkdir -p tmp/metacubexd_zip
|
||||
curl -sSL https://github.com/MetaCubeX/metacubexd/archive/refs/heads/gh-pages.zip -o tmp/metacubexd.zip
|
||||
unzip -q -o tmp/metacubexd.zip -d tmp/metacubexd_zip
|
||||
METACUBEXD_UNZIP_PATH="tmp/metacubexd_zip/metacubexd-gh-pages"
|
||||
mkdir -p "$METACUBEXD_PATH"
|
||||
UPDATED=0
|
||||
if [ -d "$METACUBEXD_PATH" ]; then
|
||||
if diff -qr "$METACUBEXD_UNZIP_PATH"/ "$METACUBEXD_PATH"/ >/dev/null; then
|
||||
echo "MetaCubeXD UI is up to date."
|
||||
else
|
||||
echo "MetaCubeXD UI has been updated, replacing old version."
|
||||
rm -rf "$METACUBEXD_PATH"/*
|
||||
cp -rf "$METACUBEXD_UNZIP_PATH"/* "$METACUBEXD_PATH"
|
||||
UPDATED=1
|
||||
fi
|
||||
else
|
||||
echo "MetaCubeXD UI directory doesn't exist, creating it."
|
||||
mkdir -p "$METACUBEXD_PATH"
|
||||
cp -rf "$METACUBEXD_UNZIP_PATH"/* "$METACUBEXD_PATH"
|
||||
UPDATED=1
|
||||
fi
|
||||
echo "updated=$UPDATED" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Update Yacd UI
|
||||
id: yacd
|
||||
run: |
|
||||
echo "Downloading latest Yacd UI zip from gh-pages branch..."
|
||||
mkdir -p tmp/yacd_zip
|
||||
curl -sSL https://github.com/MetaCubeX/Yacd-meta/archive/refs/heads/gh-pages.zip -o tmp/yacd.zip
|
||||
unzip -q -o tmp/yacd.zip -d tmp/yacd_zip
|
||||
YACD_UNZIP_PATH="tmp/yacd_zip/Yacd-meta-gh-pages"
|
||||
mkdir -p "$YACD_PATH"
|
||||
UPDATED=0
|
||||
if [ -d "$YACD_PATH" ]; then
|
||||
if diff -qr "$YACD_UNZIP_PATH"/ "$YACD_PATH"/ >/dev/null; then
|
||||
echo "Yacd UI is up to date."
|
||||
else
|
||||
echo "Yacd UI has been updated, replacing old version."
|
||||
rm -rf "$YACD_PATH"/*
|
||||
cp -rf "$YACD_UNZIP_PATH"/* "$YACD_PATH"
|
||||
UPDATED=1
|
||||
fi
|
||||
else
|
||||
echo "Yacd UI directory doesn't exist, creating it."
|
||||
mkdir -p "$YACD_PATH"
|
||||
cp -rf "$YACD_UNZIP_PATH"/* "$YACD_PATH"
|
||||
UPDATED=1
|
||||
fi
|
||||
echo "updated=$UPDATED" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Update ZashBoard UI
|
||||
id: zashboard
|
||||
run: |
|
||||
echo "Downloading latest ZashBoard UI release zip..."
|
||||
mkdir -p tmp/zashboard_zip
|
||||
curl -sSL https://github.com/Zephyruso/zashboard/releases/latest/download/dist-cdn-fonts.zip -o tmp/zashboard.zip
|
||||
unzip -q -o tmp/zashboard.zip -d tmp/zashboard_zip
|
||||
mkdir -p "$ZASHBOARD_PATH"
|
||||
UPDATED=0
|
||||
if [ -d "$ZASHBOARD_PATH" ]; then
|
||||
if diff -qr tmp/zashboard_zip/dist/ "$ZASHBOARD_PATH"/ >/dev/null; then
|
||||
echo "ZashBoard UI is up to date."
|
||||
else
|
||||
echo "ZashBoard UI has been updated, replacing old version."
|
||||
rm -rf "$ZASHBOARD_PATH"/*
|
||||
cp -rf tmp/zashboard_zip/dist/* "$ZASHBOARD_PATH"
|
||||
UPDATED=1
|
||||
fi
|
||||
else
|
||||
echo "ZashBoard UI directory doesn't exist, creating it."
|
||||
mkdir -p "$ZASHBOARD_PATH"
|
||||
cp -rf tmp/zashboard_zip/dist/* "$ZASHBOARD_PATH"
|
||||
UPDATED=1
|
||||
fi
|
||||
echo "updated=$UPDATED" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Update GeoSite files
|
||||
id: geo
|
||||
run: |
|
||||
RULES_RELEASE=$(curl -s https://api.github.com/repos/Loyalsoldier/v2ray-rules-dat/releases/latest | jq -r '.tag_name')
|
||||
echo "Latest v2ray-rules-dat version: $RULES_RELEASE"
|
||||
curl -sSL "https://github.com/Loyalsoldier/v2ray-rules-dat/releases/download/${RULES_RELEASE}/geosite.dat" -o tmp/GeoSite.dat
|
||||
mkdir -p $(dirname "$GEOSITE_PATH")
|
||||
UPDATED_GEOSITE=0
|
||||
if [ -f "$GEOSITE_PATH" ]; then
|
||||
if ! cmp -s tmp/GeoSite.dat "$GEOSITE_PATH"; then
|
||||
echo "GeoSite.dat has been updated, replacing old version."
|
||||
cp tmp/GeoSite.dat "$GEOSITE_PATH"
|
||||
UPDATED_GEOSITE=1
|
||||
else
|
||||
echo "GeoSite.dat is up to date."
|
||||
fi
|
||||
else
|
||||
echo "GeoSite.dat file doesn't exist, creating it."
|
||||
cp tmp/GeoSite.dat "$GEOSITE_PATH"
|
||||
UPDATED_GEOSITE=1
|
||||
fi
|
||||
echo "geosite=$UPDATED_GEOSITE" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Update Country.mmdb
|
||||
id: mmdb
|
||||
run: |
|
||||
curl -sSL "https://github.com/alecthw/mmdb_china_ip_list/releases/latest/download/Country-lite.mmdb" -o tmp/Country.mmdb
|
||||
mkdir -p $(dirname "$COUNTRY_MMDB_PATH")
|
||||
UPDATED=0
|
||||
if [ -f "$COUNTRY_MMDB_PATH" ]; then
|
||||
if ! cmp -s tmp/Country.mmdb "$COUNTRY_MMDB_PATH"; then
|
||||
echo "Country.mmdb has been updated, replacing old version."
|
||||
cp tmp/Country.mmdb "$COUNTRY_MMDB_PATH"
|
||||
UPDATED=1
|
||||
else
|
||||
echo "Country.mmdb is up to date."
|
||||
fi
|
||||
else
|
||||
echo "Country.mmdb file doesn't exist, creating it."
|
||||
cp tmp/Country.mmdb "$COUNTRY_MMDB_PATH"
|
||||
UPDATED=1
|
||||
fi
|
||||
echo "updated=$UPDATED" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Commit changes
|
||||
if: |
|
||||
steps.chnr.outputs.updated == '1' ||
|
||||
steps.chnr.outputs.updated6 == '1' ||
|
||||
steps.metacubexd.outputs.updated == '1' ||
|
||||
steps.yacd.outputs.updated == '1' ||
|
||||
steps.zashboard.outputs.updated == '1' ||
|
||||
steps.geo.outputs.geosite == '1' ||
|
||||
steps.mmdb.outputs.updated == '1'
|
||||
run: |
|
||||
rm -rf tmp
|
||||
git config user.name 'github-actions[bot]'
|
||||
git config user.email 'github-actions[bot]@users.noreply.github.com'
|
||||
git add .
|
||||
UPDATE_MSG="Chore: update third-party resources"
|
||||
git commit -m "$UPDATE_MSG"
|
||||
git push
|
||||
@@ -1,7 +1,7 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=luci-app-openclash
|
||||
PKG_VERSION:=0.47.022
|
||||
PKG_VERSION:=0.47.024
|
||||
PKG_MAINTAINER:=vernesong <https://github.com/vernesong/OpenClash>
|
||||
|
||||
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)
|
||||
|
||||
@@ -651,10 +651,21 @@ do_run_file()
|
||||
|
||||
} >/dev/null 2>&1
|
||||
|
||||
container() {
|
||||
[ -f "/proc/1/cgroup" ] && grep -qiE "(docker|containerd|lxc|podman|kubepods|container)" /proc/1/cgroup 2>/dev/null && return 0
|
||||
[ -f "/proc/1/environ" ] && grep -qiE "(docker|containerd|lxc|podman|kubepods|container)" /proc/1/environ 2>/dev/null && return 0
|
||||
[ -f "/.dockerenv" ] && return 0
|
||||
env | grep -qiE "(docker|kubernetes|container)" && return 0
|
||||
return 1
|
||||
}
|
||||
|
||||
check_mod()
|
||||
{
|
||||
modprobe $1
|
||||
if [ -z "$(lsmod |awk '{print $1}' |grep ^$1$)" ]; then
|
||||
if container; then
|
||||
return 0
|
||||
fi
|
||||
modprobe $1 2>/dev/null
|
||||
if [ $? -ne 0 ]; then
|
||||
LOG_OUT "Error:【$1】module not found, please check your system depends and try again!"
|
||||
start_fail
|
||||
fi
|
||||
|
||||
@@ -137,9 +137,6 @@ jobs:
|
||||
|
||||
rm -rf temp_resp
|
||||
git clone -b master --single-branch https://github.com/openwrt/packages.git temp_resp
|
||||
cd temp_resp
|
||||
git checkout 2b99cd7d7637da0f152da378994f699aaf0dd44d
|
||||
cd ..
|
||||
echo "update golang version"
|
||||
rm -rf feeds/packages/lang/golang
|
||||
cp -r temp_resp/lang/golang feeds/packages/lang
|
||||
@@ -147,6 +144,11 @@ jobs:
|
||||
rm -rf feeds/packages/lang/rust
|
||||
cp -r temp_resp/lang/rust feeds/packages/lang
|
||||
rm -rf temp_resp
|
||||
|
||||
echo "update patch-kernel.sh"
|
||||
git clone -b main --single-branch https://github.com/openwrt/openwrt.git temp_resp
|
||||
cp -f temp_resp/scripts/patch-kernel.sh scripts/
|
||||
rm -rf temp_resp
|
||||
|
||||
echo "Patch application completed"
|
||||
#--------------------------------------end_patches--------------------------------------------
|
||||
@@ -324,9 +326,6 @@ jobs:
|
||||
|
||||
rm -rf temp_resp
|
||||
git clone -b master --single-branch https://github.com/openwrt/packages.git temp_resp
|
||||
cd temp_resp
|
||||
git checkout 2b99cd7d7637da0f152da378994f699aaf0dd44d
|
||||
cd ..
|
||||
echo "update golang version"
|
||||
rm -rf feeds/packages/lang/golang
|
||||
cp -r temp_resp/lang/golang feeds/packages/lang
|
||||
@@ -335,6 +334,10 @@ jobs:
|
||||
cp -r temp_resp/lang/rust feeds/packages/lang
|
||||
rm -rf temp_resp
|
||||
|
||||
git clone -b main --single-branch https://github.com/openwrt/openwrt.git temp_resp
|
||||
cp -f temp_resp/scripts/patch-kernel.sh scripts/
|
||||
rm -rf temp_resp
|
||||
|
||||
echo "fixed rust host build error"
|
||||
sed -i 's/--set=llvm\.download-ci-llvm=false/--set=llvm.download-ci-llvm=true/' feeds/packages/lang/rust/Makefile
|
||||
grep -q -- '--ci false \\' feeds/packages/lang/rust/Makefile || sed -i '/x\.py \\/a \ --ci false \\' feeds/packages/lang/rust/Makefile
|
||||
|
||||
@@ -29,7 +29,6 @@ o = s:option(DynamicList, "chnroute_url", translate("China IPs(chnroute) Update
|
||||
o:depends("geo2rule", false)
|
||||
o:value("https://fastly.jsdelivr.net/gh/gaoyifan/china-operator-ip@ip-lists/china.txt", translate("gaoyifan/china-operator-ip/china"))
|
||||
o:value("https://ispip.clang.cn/all_cn.txt", translate("Clang.CN"))
|
||||
o:value("https://ispip.clang.cn/all_cn_cidr.txt", translate("Clang.CN.CIDR"))
|
||||
o:value("https://fastly.jsdelivr.net/gh/soffchen/GeoIP2-CN@release/CN-ip-cidr.txt", translate("soffchen/GeoIP2-CN"))
|
||||
o:value("https://fastly.jsdelivr.net/gh/Hackl0us/GeoIP2-CN@release/CN-ip-cidr.txt", translate("Hackl0us/GeoIP2-CN"))
|
||||
o:value("https://fastly.jsdelivr.net/gh/blackmatrix7/ios_rule_script@master/rule/Clash/ChinaMax/ChinaMax_IP_No_IPv6.txt", translate("ios_rule_script/ChinaMax_IP_No_IPv6"))
|
||||
|
||||
@@ -136,9 +136,6 @@ jobs:
|
||||
|
||||
rm -rf temp_resp
|
||||
git clone -b master --single-branch https://github.com/openwrt/packages.git temp_resp
|
||||
cd temp_resp
|
||||
git checkout 2b99cd7d7637da0f152da378994f699aaf0dd44d
|
||||
cd ..
|
||||
echo "update golang version"
|
||||
rm -rf feeds/packages/lang/golang
|
||||
cp -r temp_resp/lang/golang feeds/packages/lang
|
||||
@@ -147,6 +144,11 @@ jobs:
|
||||
cp -r temp_resp/lang/rust feeds/packages/lang
|
||||
rm -rf temp_resp
|
||||
|
||||
echo "update patch-kernel.sh"
|
||||
git clone -b main --single-branch https://github.com/openwrt/openwrt.git temp_resp
|
||||
cp -f temp_resp/scripts/patch-kernel.sh scripts/
|
||||
rm -rf temp_resp
|
||||
|
||||
echo "Patch application completed"
|
||||
#--------------------------------------end_patches--------------------------------------------
|
||||
|
||||
@@ -323,9 +325,6 @@ jobs:
|
||||
|
||||
rm -rf temp_resp
|
||||
git clone -b master --single-branch https://github.com/openwrt/packages.git temp_resp
|
||||
cd temp_resp
|
||||
git checkout 2b99cd7d7637da0f152da378994f699aaf0dd44d
|
||||
cd ..
|
||||
echo "update golang version"
|
||||
rm -rf feeds/packages/lang/golang
|
||||
cp -r temp_resp/lang/golang feeds/packages/lang
|
||||
@@ -333,6 +332,11 @@ jobs:
|
||||
rm -rf feeds/packages/lang/rust
|
||||
cp -r temp_resp/lang/rust feeds/packages/lang
|
||||
rm -rf temp_resp
|
||||
|
||||
echo "update patch-kernel.sh"
|
||||
git clone -b main --single-branch https://github.com/openwrt/openwrt.git temp_resp
|
||||
cp -f temp_resp/scripts/patch-kernel.sh scripts/
|
||||
rm -rf temp_resp
|
||||
|
||||
echo "fixed rust host build error"
|
||||
sed -i 's/--set=llvm\.download-ci-llvm=false/--set=llvm.download-ci-llvm=true/' feeds/packages/lang/rust/Makefile
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
VERSION_CODE=584
|
||||
VERSION_NAME=1.12.11
|
||||
VERSION_CODE=587
|
||||
VERSION_NAME=1.12.12
|
||||
GO_VERSION=go1.25.3
|
||||
|
||||
@@ -2,6 +2,14 @@
|
||||
icon: material/alert-decagram
|
||||
---
|
||||
|
||||
#### 1.13.0-alpha.27
|
||||
|
||||
* Fixes and improvements
|
||||
|
||||
#### 1.12.12
|
||||
|
||||
* Fixes and improvements
|
||||
|
||||
#### 1.13.0-alpha.26
|
||||
|
||||
* Update quic-go to v0.55.0
|
||||
|
||||
+1
-1
@@ -29,7 +29,7 @@ require (
|
||||
github.com/sagernet/gomobile v0.1.8
|
||||
github.com/sagernet/gvisor v0.0.0-20250811.0-sing-box-mod.1
|
||||
github.com/sagernet/quic-go v0.55.0-sing-box-mod.2
|
||||
github.com/sagernet/sing v0.8.0-beta.5
|
||||
github.com/sagernet/sing v0.8.0-beta.6
|
||||
github.com/sagernet/sing-mux v0.3.3
|
||||
github.com/sagernet/sing-quic v0.6.0-beta.4
|
||||
github.com/sagernet/sing-shadowsocks v0.2.8
|
||||
|
||||
+2
-2
@@ -163,8 +163,8 @@ github.com/sagernet/nftables v0.3.0-beta.4/go.mod h1:OQXAjvjNGGFxaTgVCSTRIhYB5/l
|
||||
github.com/sagernet/quic-go v0.55.0-sing-box-mod.2 h1:I79gW4Xl5ciVARHfnp122lDAMhC0AwUCU765Q8Kxdfo=
|
||||
github.com/sagernet/quic-go v0.55.0-sing-box-mod.2/go.mod h1:IE9naq7Kekj0rPAdWc0GLW1ENR7gAOQV9VRTDlKN8Bk=
|
||||
github.com/sagernet/sing v0.6.9/go.mod h1:ARkL0gM13/Iv5VCZmci/NuoOlePoIsW0m7BWfln/Hak=
|
||||
github.com/sagernet/sing v0.8.0-beta.5 h1:Cm4CnLQGNyG5Jl1U9pKWAjFUcbjchGGqn1xeXzfI5kw=
|
||||
github.com/sagernet/sing v0.8.0-beta.5/go.mod h1:ARkL0gM13/Iv5VCZmci/NuoOlePoIsW0m7BWfln/Hak=
|
||||
github.com/sagernet/sing v0.8.0-beta.6 h1:GXv1j1xWHihx6ptyOXh0yp4jUqJoNjCqD8d+AI9rnLU=
|
||||
github.com/sagernet/sing v0.8.0-beta.6/go.mod h1:ARkL0gM13/Iv5VCZmci/NuoOlePoIsW0m7BWfln/Hak=
|
||||
github.com/sagernet/sing-mux v0.3.3 h1:YFgt9plMWzH994BMZLmyKL37PdIVaIilwP0Jg+EcLfw=
|
||||
github.com/sagernet/sing-mux v0.3.3/go.mod h1:pht8iFY4c9Xltj7rhVd208npkNaeCxzyXCgulDPLUDA=
|
||||
github.com/sagernet/sing-quic v0.6.0-beta.4 h1:2k/+Xrv/pjl7AYC7LD9tcB7y1lIgw04LjJjqTI8q5Xk=
|
||||
|
||||
+2
-1
@@ -38,7 +38,8 @@ endef
|
||||
|
||||
define Host/Configure
|
||||
$(PYTHON) $(HOST_BUILD_DIR)/build/gen.py \
|
||||
--no-last-commit-position
|
||||
--no-last-commit-position \
|
||||
--allow-warnings
|
||||
endef
|
||||
|
||||
define Host/Compile
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=luci-app-openclash
|
||||
PKG_VERSION:=0.47.022
|
||||
PKG_VERSION:=0.47.024
|
||||
PKG_MAINTAINER:=vernesong <https://github.com/vernesong/OpenClash>
|
||||
|
||||
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)
|
||||
|
||||
@@ -651,10 +651,21 @@ do_run_file()
|
||||
|
||||
} >/dev/null 2>&1
|
||||
|
||||
container() {
|
||||
[ -f "/proc/1/cgroup" ] && grep -qiE "(docker|containerd|lxc|podman|kubepods|container)" /proc/1/cgroup 2>/dev/null && return 0
|
||||
[ -f "/proc/1/environ" ] && grep -qiE "(docker|containerd|lxc|podman|kubepods|container)" /proc/1/environ 2>/dev/null && return 0
|
||||
[ -f "/.dockerenv" ] && return 0
|
||||
env | grep -qiE "(docker|kubernetes|container)" && return 0
|
||||
return 1
|
||||
}
|
||||
|
||||
check_mod()
|
||||
{
|
||||
modprobe $1
|
||||
if [ -z "$(lsmod |awk '{print $1}' |grep ^$1$)" ]; then
|
||||
if container; then
|
||||
return 0
|
||||
fi
|
||||
modprobe $1 2>/dev/null
|
||||
if [ $? -ne 0 ]; then
|
||||
LOG_OUT "Error:【$1】module not found, please check your system depends and try again!"
|
||||
start_fail
|
||||
fi
|
||||
|
||||
@@ -29,7 +29,6 @@ o = s:option(DynamicList, "chnroute_url", translate("China IPs(chnroute) Update
|
||||
o:depends("geo2rule", false)
|
||||
o:value("https://fastly.jsdelivr.net/gh/gaoyifan/china-operator-ip@ip-lists/china.txt", translate("gaoyifan/china-operator-ip/china"))
|
||||
o:value("https://ispip.clang.cn/all_cn.txt", translate("Clang.CN"))
|
||||
o:value("https://ispip.clang.cn/all_cn_cidr.txt", translate("Clang.CN.CIDR"))
|
||||
o:value("https://fastly.jsdelivr.net/gh/soffchen/GeoIP2-CN@release/CN-ip-cidr.txt", translate("soffchen/GeoIP2-CN"))
|
||||
o:value("https://fastly.jsdelivr.net/gh/Hackl0us/GeoIP2-CN@release/CN-ip-cidr.txt", translate("Hackl0us/GeoIP2-CN"))
|
||||
o:value("https://fastly.jsdelivr.net/gh/blackmatrix7/ios_rule_script@master/rule/Clash/ChinaMax/ChinaMax_IP_No_IPv6.txt", translate("ios_rule_script/ChinaMax_IP_No_IPv6"))
|
||||
|
||||
@@ -5,12 +5,12 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=sing-box
|
||||
PKG_VERSION:=1.12.11
|
||||
PKG_VERSION:=1.12.12
|
||||
PKG_RELEASE:=1
|
||||
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
||||
PKG_SOURCE_URL:=https://codeload.github.com/SagerNet/sing-box/tar.gz/v$(PKG_VERSION)?
|
||||
PKG_HASH:=14f5f106812b9e0c0c91432c1a6dd0b42d8bcd2fcf3789e4ceba0892967ac41e
|
||||
PKG_HASH:=f08add81eab7e4d6091195179bb39fa3f64dbb0326feaa022994566b702d1245
|
||||
|
||||
PKG_LICENSE:=GPL-3.0-or-later
|
||||
PKG_LICENSE_FILES:=LICENSE
|
||||
|
||||
@@ -21,16 +21,16 @@ define Download/geoip
|
||||
HASH:=c23ac8343e9796f8cc8b670c3aeb6df6d03d4e8914437a409961477f6b226098
|
||||
endef
|
||||
|
||||
GEOSITE_VER:=20251026063608
|
||||
GEOSITE_VER:=20251027071824
|
||||
GEOSITE_FILE:=dlc.dat.$(GEOSITE_VER)
|
||||
define Download/geosite
|
||||
URL:=https://github.com/v2fly/domain-list-community/releases/download/$(GEOSITE_VER)/
|
||||
URL_FILE:=dlc.dat
|
||||
FILE:=$(GEOSITE_FILE)
|
||||
HASH:=a8d4a7ae3b3fb1ece40eb3e5af8618fc7b86fe6f51eeda6efa08a390ed7de16c
|
||||
HASH:=e31ccd49c4c2b28e83a8124f764f711fa4d444da71c8f74d14958ae991b1e1bb
|
||||
endef
|
||||
|
||||
GEOSITE_IRAN_VER:=202510200041
|
||||
GEOSITE_IRAN_VER:=202510270042
|
||||
GEOSITE_IRAN_FILE:=iran.dat.$(GEOSITE_IRAN_VER)
|
||||
define Download/geosite-ir
|
||||
URL:=https://github.com/bootmortis/iran-hosted-domains/releases/download/$(GEOSITE_IRAN_VER)/
|
||||
|
||||
@@ -8,6 +8,7 @@ from ..utils import (
|
||||
try_get,
|
||||
unified_timestamp,
|
||||
)
|
||||
from ..utils.traversal import traverse_obj
|
||||
|
||||
|
||||
class URPlayIE(InfoExtractor):
|
||||
@@ -25,7 +26,7 @@ class URPlayIE(InfoExtractor):
|
||||
'upload_date': '20171214',
|
||||
'series': 'UR Samtiden - Livet, universum och rymdens märkliga musik',
|
||||
'duration': 2269,
|
||||
'categories': ['Vetenskap & teknik'],
|
||||
'categories': ['Kultur & historia'],
|
||||
'tags': ['Kritiskt tänkande', 'Vetenskap', 'Vetenskaplig verksamhet'],
|
||||
'episode': 'Om vetenskap, kritiskt tänkande och motstånd',
|
||||
'age_limit': 15,
|
||||
@@ -78,7 +79,7 @@ class URPlayIE(InfoExtractor):
|
||||
webpage = self._download_webpage(url, video_id)
|
||||
urplayer_data = self._search_nextjs_data(webpage, video_id, fatal=False) or {}
|
||||
if urplayer_data:
|
||||
urplayer_data = try_get(urplayer_data, lambda x: x['props']['pageProps']['program'], dict)
|
||||
urplayer_data = traverse_obj(urplayer_data, ('props', 'pageProps', 'productData', {dict}))
|
||||
if not urplayer_data:
|
||||
raise ExtractorError('Unable to parse __NEXT_DATA__')
|
||||
else:
|
||||
|
||||
Reference in New Issue
Block a user