mirror of
https://github.com/bolucat/Archive.git
synced 2025-09-26 20:21:35 +08:00
Update On Tue Apr 9 20:25:19 CEST 2024
This commit is contained in:
1
.github/update.log
vendored
1
.github/update.log
vendored
@@ -611,3 +611,4 @@ Update On Fri Apr 5 20:26:37 CEST 2024
|
||||
Update On Sat Apr 6 20:26:05 CEST 2024
|
||||
Update On Sun Apr 7 20:25:26 CEST 2024
|
||||
Update On Mon Apr 8 20:30:51 CEST 2024
|
||||
Update On Tue Apr 9 20:25:08 CEST 2024
|
||||
|
@@ -24,6 +24,7 @@ import (
|
||||
"os/signal"
|
||||
"path/filepath"
|
||||
"runtime"
|
||||
"strconv"
|
||||
"strings"
|
||||
"syscall"
|
||||
"time"
|
||||
@@ -69,7 +70,7 @@ func main() {
|
||||
},
|
||||
&cli.StringFlag{
|
||||
Name: "log",
|
||||
Usage: "Enable log. A valid value is file path or 'console'. If you want to debug SOCKS5 lib, set env SOCKS5_DEBUG=true",
|
||||
Usage: "Enable log. A valid value is file path or 'console'. Send SIGUSR1 to me to reset the log file on unix system. If you want to debug SOCKS5 lib, set env SOCKS5_DEBUG=true",
|
||||
},
|
||||
&cli.StringSliceFlag{
|
||||
Name: "tag",
|
||||
@@ -155,10 +156,22 @@ func main() {
|
||||
Name: "blockListUpdateInterval",
|
||||
Usage: "Update list --blockDomainList,--blockCIDR4List,--blockCIDR6List interval, second. default 0, only read one time on start",
|
||||
},
|
||||
&cli.StringFlag{
|
||||
Name: "pid",
|
||||
Usage: "A file path used to store pid",
|
||||
},
|
||||
}
|
||||
app.Before = func(c *cli.Context) error {
|
||||
brook.ClientHKDFInfo = []byte(c.String("clientHKDFInfo"))
|
||||
brook.ServerHKDFInfo = []byte(c.String("serverHKDFInfo"))
|
||||
if c.String("pid") != "" {
|
||||
if !filepath.IsAbs(c.String("pid")) {
|
||||
return errors.New("--pid must be with absolute path")
|
||||
}
|
||||
if err := os.WriteFile(c.String("pid"), []byte(strconv.Itoa(os.Getpid())), 0744); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
if c.String("pprof") != "" {
|
||||
p, err := pprof.NewPprof(c.String("pprof"))
|
||||
if err != nil {
|
||||
@@ -283,7 +296,7 @@ func main() {
|
||||
app.Commands = []*cli.Command{
|
||||
&cli.Command{
|
||||
Name: "server",
|
||||
Usage: "Run as brook server, both TCP and UDP",
|
||||
Usage: "Start a brook server that supports tcp and udp",
|
||||
BashComplete: func(c *cli.Context) {
|
||||
l := c.Command.VisibleFlags()
|
||||
for _, v := range l {
|
||||
@@ -389,7 +402,7 @@ func main() {
|
||||
},
|
||||
&cli.Command{
|
||||
Name: "client",
|
||||
Usage: "Run as brook client, both TCP and UDP, to start a socks5 proxy, [src <-> socks5 <-> $ brook client <-> $ brook server <-> dst]",
|
||||
Usage: "Start a brook client that supports tcp and udp. It can open a socks5 proxy, [src <-> socks5 <-> $ brook client <-> $ brook server <-> dst]",
|
||||
BashComplete: func(c *cli.Context) {
|
||||
l := c.Command.VisibleFlags()
|
||||
for _, v := range l {
|
||||
@@ -514,7 +527,7 @@ func main() {
|
||||
},
|
||||
&cli.Command{
|
||||
Name: "wsserver",
|
||||
Usage: "Run as brook wsserver, both TCP and UDP, it will start a standard http server and websocket server",
|
||||
Usage: "Start a brook wsserver that supports tcp and udp. It opens a standard http server and a websocket server",
|
||||
BashComplete: func(c *cli.Context) {
|
||||
l := c.Command.VisibleFlags()
|
||||
for _, v := range l {
|
||||
@@ -634,7 +647,7 @@ func main() {
|
||||
},
|
||||
&cli.Command{
|
||||
Name: "wsclient",
|
||||
Usage: "Run as brook wsclient, both TCP and UDP, to start a socks5 proxy, [src <-> socks5 <-> $ brook wsclient <-> $ brook wsserver <-> dst]",
|
||||
Usage: "Start a brook wsclient that supports tcp and udp. It can open a socks5 proxy, [src <-> socks5 <-> $ brook wsclient <-> $ brook wsserver <-> dst]",
|
||||
BashComplete: func(c *cli.Context) {
|
||||
l := c.Command.VisibleFlags()
|
||||
for _, v := range l {
|
||||
@@ -759,7 +772,7 @@ func main() {
|
||||
},
|
||||
&cli.Command{
|
||||
Name: "wssserver",
|
||||
Usage: "Run as brook wssserver, both TCP and UDP, it will start a standard https server and websocket server",
|
||||
Usage: "Start a brook wssserver that supports tcp and udp. It opens a standard https server and a websocket server",
|
||||
BashComplete: func(c *cli.Context) {
|
||||
l := c.Command.VisibleFlags()
|
||||
for _, v := range l {
|
||||
@@ -905,7 +918,7 @@ func main() {
|
||||
},
|
||||
&cli.Command{
|
||||
Name: "wssclient",
|
||||
Usage: "Run as brook wssclient, both TCP and UDP, to start a socks5 proxy, [src <-> socks5 <-> $ brook wssclient <-> $ brook wssserver <-> dst]",
|
||||
Usage: "Start a brook wssclient that supports tcp and udp. It can open a socks5 proxy, [src <-> socks5 <-> $ brook wssclient <-> $ brook wssserver <-> dst]",
|
||||
BashComplete: func(c *cli.Context) {
|
||||
l := c.Command.VisibleFlags()
|
||||
for _, v := range l {
|
||||
@@ -1030,7 +1043,7 @@ func main() {
|
||||
},
|
||||
&cli.Command{
|
||||
Name: "quicserver",
|
||||
Usage: "Run as brook quicserver, both TCP and UDP",
|
||||
Usage: "Start a brook quicserver that supports tcp and udp.",
|
||||
BashComplete: func(c *cli.Context) {
|
||||
l := c.Command.VisibleFlags()
|
||||
for _, v := range l {
|
||||
@@ -1171,7 +1184,7 @@ func main() {
|
||||
},
|
||||
&cli.Command{
|
||||
Name: "quicclient",
|
||||
Usage: "Run as brook quicclient, both TCP and UDP, to start a socks5 proxy, [src <-> socks5 <-> $ brook quicclient <-> $ brook quicserver <-> dst]. (Note that the global dial parameter is ignored now)",
|
||||
Usage: "Start a brook quicclient that supports tcp and udp. It can open a socks5 proxy, [src <-> socks5 <-> $ brook quicclient <-> $ brook quicserver <-> dst]. (The global-dial-parameter is ignored)",
|
||||
BashComplete: func(c *cli.Context) {
|
||||
l := c.Command.VisibleFlags()
|
||||
for _, v := range l {
|
||||
@@ -1296,7 +1309,7 @@ func main() {
|
||||
},
|
||||
&cli.Command{
|
||||
Name: "relayoverbrook",
|
||||
Usage: "Run as relay over brook, both TCP and UDP, this means access [from address] is equal to [to address], [src <-> from address <-> $ brook server/wsserver/wssserver/quicserver <-> to address]",
|
||||
Usage: "Relay network traffic over brook, which supports TCP and UDP. Accessing [from address] is equal to accessing [to address], [src <-> from address <-> $ brook server/wsserver/wssserver/quicserver <-> to address]",
|
||||
BashComplete: func(c *cli.Context) {
|
||||
l := c.Command.VisibleFlags()
|
||||
for _, v := range l {
|
||||
@@ -1400,7 +1413,7 @@ func main() {
|
||||
},
|
||||
&cli.Command{
|
||||
Name: "dnsserveroverbrook",
|
||||
Usage: "Run as dns server over brook, both TCP and UDP, [src <-> $ brook dnserversoverbrook <-> $ brook server/wsserver/wssserver/quicserver <-> dns] or [src <-> $ brook dnsserveroverbrook <-> dnsForBypass]",
|
||||
Usage: "Run a dns server over brook, which supports TCP and UDP, [src <-> $ brook dnserversoverbrook <-> $ brook server/wsserver/wssserver/quicserver <-> dns] or [src <-> $ brook dnsserveroverbrook <-> dnsForBypass]",
|
||||
BashComplete: func(c *cli.Context) {
|
||||
l := c.Command.VisibleFlags()
|
||||
for _, v := range l {
|
||||
@@ -1539,7 +1552,7 @@ func main() {
|
||||
},
|
||||
&cli.Command{
|
||||
Name: "link",
|
||||
Usage: "Generate brook link",
|
||||
Usage: "Generate a brook link",
|
||||
BashComplete: func(c *cli.Context) {
|
||||
l := c.Command.VisibleFlags()
|
||||
for _, v := range l {
|
||||
@@ -1680,7 +1693,7 @@ func main() {
|
||||
},
|
||||
&cli.Command{
|
||||
Name: "connect",
|
||||
Usage: "Run as client and connect to brook link, both TCP and UDP, to start a socks5 proxy, [src <-> socks5 <-> $ brook connect <-> $ brook server/wsserver/wssserver/quicserver <-> dst]",
|
||||
Usage: "Run a client and connect with a brook link, which supports TCP and UDP. It can start a socks5 proxy, [src <-> socks5 <-> $ brook connect <-> $ brook server/wsserver/wssserver/quicserver <-> dst]",
|
||||
BashComplete: func(c *cli.Context) {
|
||||
l := c.Command.VisibleFlags()
|
||||
for _, v := range l {
|
||||
@@ -1787,7 +1800,7 @@ func main() {
|
||||
},
|
||||
&cli.Command{
|
||||
Name: "relay",
|
||||
Usage: "Run as standalone relay, both TCP and UDP, this means access [from address] is equal to access [to address], [src <-> from address <-> to address]",
|
||||
Usage: "Run a standalone relay, which supports TCP and UDP. Accessing [from address] is equal to accessing [to address], [src <-> from address <-> to address]",
|
||||
BashComplete: func(c *cli.Context) {
|
||||
l := c.Command.VisibleFlags()
|
||||
for _, v := range l {
|
||||
@@ -1845,7 +1858,7 @@ func main() {
|
||||
},
|
||||
&cli.Command{
|
||||
Name: "dnsserver",
|
||||
Usage: "Run as standalone dns server",
|
||||
Usage: "Run a standalone dns server",
|
||||
BashComplete: func(c *cli.Context) {
|
||||
l := c.Command.VisibleFlags()
|
||||
for _, v := range l {
|
||||
@@ -2002,7 +2015,7 @@ func main() {
|
||||
},
|
||||
&cli.Command{
|
||||
Name: "dohserver",
|
||||
Usage: "Run as standalone doh server",
|
||||
Usage: "Run a standalone doh server",
|
||||
BashComplete: func(c *cli.Context) {
|
||||
l := c.Command.VisibleFlags()
|
||||
for _, v := range l {
|
||||
@@ -2206,7 +2219,7 @@ func main() {
|
||||
},
|
||||
&cli.Command{
|
||||
Name: "dhcpserver",
|
||||
Usage: "Run as standalone dhcp server. Note that you need to stop other dhcp servers, if there are.",
|
||||
Usage: "Run a standalone dhcp server. Other running dhcp servers need to be stopped.",
|
||||
BashComplete: func(c *cli.Context) {
|
||||
l := c.Command.VisibleFlags()
|
||||
for _, v := range l {
|
||||
@@ -2281,7 +2294,7 @@ func main() {
|
||||
},
|
||||
&cli.Command{
|
||||
Name: "socks5",
|
||||
Usage: "Run as standalone standard socks5 server, both TCP and UDP",
|
||||
Usage: "Run a standalone standard socks5 server, which supports TCP and UDP",
|
||||
BashComplete: func(c *cli.Context) {
|
||||
l := c.Command.VisibleFlags()
|
||||
for _, v := range l {
|
||||
@@ -2365,7 +2378,7 @@ func main() {
|
||||
},
|
||||
&cli.Command{
|
||||
Name: "socks5tohttp",
|
||||
Usage: "Convert socks5 to http proxy, [src <-> listen address(http proxy) <-> socks5 address <-> dst]",
|
||||
Usage: "Convert a socks5 proxy to a http proxy, [src <-> listen address(http proxy) <-> socks5 address <-> dst]",
|
||||
BashComplete: func(c *cli.Context) {
|
||||
l := c.Command.VisibleFlags()
|
||||
for _, v := range l {
|
||||
@@ -2426,7 +2439,7 @@ func main() {
|
||||
},
|
||||
&cli.Command{
|
||||
Name: "pac",
|
||||
Usage: "Run as PAC server or save PAC to file",
|
||||
Usage: "Run a PAC server or save PAC to a file",
|
||||
BashComplete: func(c *cli.Context) {
|
||||
l := c.Command.VisibleFlags()
|
||||
for _, v := range l {
|
||||
@@ -2488,7 +2501,7 @@ func main() {
|
||||
},
|
||||
&cli.Command{
|
||||
Name: "testsocks5",
|
||||
Usage: "Test UDP and TCP of socks5 server",
|
||||
Usage: "Test a socks5 server to see if it works properly",
|
||||
BashComplete: func(c *cli.Context) {
|
||||
l := c.Command.VisibleFlags()
|
||||
for _, v := range l {
|
||||
@@ -2545,7 +2558,7 @@ func main() {
|
||||
},
|
||||
&cli.Command{
|
||||
Name: "testbrook",
|
||||
Usage: "Test UDP and TCP of brook server/wsserver/wssserver/quicserver. (Note that the global dial parameter is ignored now)",
|
||||
Usage: "Test UDP and TCP of a brook server/wsserver/wssserver/quicserver connection. (The global-dial-parameter is ignored)",
|
||||
BashComplete: func(c *cli.Context) {
|
||||
l := c.Command.VisibleFlags()
|
||||
for _, v := range l {
|
||||
|
Binary file not shown.
Before Width: | Height: | Size: 259 KiB After Width: | Height: | Size: 286 KiB |
@@ -10,7 +10,7 @@ require (
|
||||
github.com/patrickmn/go-cache v2.1.0+incompatible
|
||||
github.com/phuslu/iploc v1.0.20231031
|
||||
github.com/prometheus/client_golang v1.17.0
|
||||
github.com/quic-go/quic-go v0.40.1
|
||||
github.com/quic-go/quic-go v0.42.0
|
||||
github.com/refraction-networking/utls v1.5.4
|
||||
github.com/tdewolff/minify v2.3.6+incompatible
|
||||
github.com/txthinking/runnergroup v0.0.0-20230325130830-408dc5853f86
|
||||
@@ -20,7 +20,6 @@ require (
|
||||
github.com/urfave/negroni v1.0.0
|
||||
golang.org/x/crypto v0.17.0
|
||||
golang.org/x/net v0.18.0
|
||||
golang.org/x/sys v0.15.0
|
||||
)
|
||||
|
||||
require (
|
||||
@@ -39,15 +38,15 @@ require (
|
||||
github.com/prometheus/client_model v0.4.1-0.20230718164431-9a2bf3000d16 // indirect
|
||||
github.com/prometheus/common v0.44.0 // indirect
|
||||
github.com/prometheus/procfs v0.11.1 // indirect
|
||||
github.com/quic-go/qtls-go1-20 v0.4.1 // indirect
|
||||
github.com/russross/blackfriday/v2 v2.1.0 // indirect
|
||||
github.com/tdewolff/parse v2.3.4+incompatible // indirect
|
||||
github.com/tdewolff/test v1.0.10 // indirect
|
||||
github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 // indirect
|
||||
go.uber.org/mock v0.3.0 // indirect
|
||||
go.uber.org/mock v0.4.0 // indirect
|
||||
golang.org/x/exp v0.0.0-20221205204356-47842c84f3db // indirect
|
||||
golang.org/x/mod v0.12.0 // indirect
|
||||
golang.org/x/sys v0.15.0 // indirect
|
||||
golang.org/x/text v0.14.0 // indirect
|
||||
golang.org/x/tools v0.13.0 // indirect
|
||||
google.golang.org/protobuf v1.31.0 // indirect
|
||||
google.golang.org/protobuf v1.33.0 // indirect
|
||||
)
|
||||
|
20
brook/go.sum
20
brook/go.sum
@@ -61,10 +61,8 @@ github.com/prometheus/common v0.44.0 h1:+5BrQJwiBB9xsMygAB3TNvpQKOwlkc25LbISbrdO
|
||||
github.com/prometheus/common v0.44.0/go.mod h1:ofAIvZbQ1e/nugmZGz4/qCb9Ap1VoSTIO7x0VV9VvuY=
|
||||
github.com/prometheus/procfs v0.11.1 h1:xRC8Iq1yyca5ypa9n1EZnWZkt7dwcoRPQwX/5gwaUuI=
|
||||
github.com/prometheus/procfs v0.11.1/go.mod h1:eesXgaPo1q7lBpVMoMy0ZOFTth9hBn4W/y0/p/ScXhY=
|
||||
github.com/quic-go/qtls-go1-20 v0.4.1 h1:D33340mCNDAIKBqXuAvexTNMUByrYmFYVfKfDN5nfFs=
|
||||
github.com/quic-go/qtls-go1-20 v0.4.1/go.mod h1:X9Nh97ZL80Z+bX/gUXMbipO6OxdiDi58b/fMC9mAL+k=
|
||||
github.com/quic-go/quic-go v0.40.1 h1:X3AGzUNFs0jVuO3esAGnTfvdgvL4fq655WaOi1snv1Q=
|
||||
github.com/quic-go/quic-go v0.40.1/go.mod h1:PeN7kuVJ4xZbxSv/4OX6S1USOX8MJvydwpTx31vx60c=
|
||||
github.com/quic-go/quic-go v0.42.0 h1:uSfdap0eveIl8KXnipv9K7nlwZ5IqLlYOpJ58u5utpM=
|
||||
github.com/quic-go/quic-go v0.42.0/go.mod h1:132kz4kL3F9vxhW3CtQJLDVwcFe5wdWeJXXijhsO57M=
|
||||
github.com/refraction-networking/utls v1.5.4 h1:9k6EO2b8TaOGsQ7Pl7p9w6PUhx18/ZCeT0WNTZ7Uw4o=
|
||||
github.com/refraction-networking/utls v1.5.4/go.mod h1:SPuDbBmgLGp8s+HLNc83FuavwZCFoMmExj+ltUHiHUw=
|
||||
github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk=
|
||||
@@ -83,10 +81,6 @@ github.com/txthinking/runnergroup v0.0.0-20230325130830-408dc5853f86 h1:EX/lPhI7
|
||||
github.com/txthinking/runnergroup v0.0.0-20230325130830-408dc5853f86/go.mod h1:cldYm15/XHcGt7ndItnEWHwFZo7dinU+2QoyjfErhsI=
|
||||
github.com/txthinking/socks5 v0.0.0-20230325130024-4230056ae301 h1:d/Wr/Vl/wiJHc3AHYbYs5I3PucJvRuw3SvbmlIRf+oM=
|
||||
github.com/txthinking/socks5 v0.0.0-20230325130024-4230056ae301/go.mod h1:ntmMHL/xPq1WLeKiw8p/eRATaae6PiVRNipHFJxI8PM=
|
||||
github.com/txthinking/x v0.0.0-20220929041811-1b4d914e9133 h1:fUw8+3ruX0uv2gAko4D0v6IpLmSI2soOkGl6YYmiBrM=
|
||||
github.com/txthinking/x v0.0.0-20220929041811-1b4d914e9133/go.mod h1:WgqbSEmUYSjEV3B1qmee/PpP2NYEz4bL9/+mF1ma+s4=
|
||||
github.com/txthinking/x v0.0.0-20231124080419-f3d4547df8ea h1:pD9ben9+HFrcRTaCApFXrn0YzVndrWHw4zSdb+ljeLg=
|
||||
github.com/txthinking/x v0.0.0-20231124080419-f3d4547df8ea/go.mod h1:WgqbSEmUYSjEV3B1qmee/PpP2NYEz4bL9/+mF1ma+s4=
|
||||
github.com/txthinking/x v0.0.0-20240301021728-6f68aba84c87 h1:ukVX+9jDc97QsREpOZbs5sXbxaChFOBz8b/6dlwnRzQ=
|
||||
github.com/txthinking/x v0.0.0-20240301021728-6f68aba84c87/go.mod h1:/hZBnjRcqz02ybkpqkkCx6LL7UpRTXnkE2pfZDh5t6g=
|
||||
github.com/urfave/cli/v2 v2.25.7 h1:VAzn5oq403l5pHjc4OhD54+XGO9cdKVL/7lDjF+iKUs=
|
||||
@@ -96,8 +90,8 @@ github.com/urfave/negroni v1.0.0/go.mod h1:Meg73S6kFm/4PpbYdq35yYWoCZ9mS/YSx+lKn
|
||||
github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 h1:bAn7/zixMGCfxrRTfdpNzjtPYqr8smhKouy9mxVdGPU=
|
||||
github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673/go.mod h1:N3UwUGtsrSj3ccvlPHLoLsHnpR27oXr4ZE984MbSER8=
|
||||
github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
|
||||
go.uber.org/mock v0.3.0 h1:3mUxI1No2/60yUYax92Pt8eNOEecx2D3lcXZh2NEZJo=
|
||||
go.uber.org/mock v0.3.0/go.mod h1:a6FSlNadKUHUa9IP5Vyt1zh4fC7uAwxMutEAscFbkZc=
|
||||
go.uber.org/mock v0.4.0 h1:VcM4ZOtdbR4f6VXfiOpwpVJDL6lCReaZ6mw31wqh7KU=
|
||||
go.uber.org/mock v0.4.0/go.mod h1:a6FSlNadKUHUa9IP5Vyt1zh4fC7uAwxMutEAscFbkZc=
|
||||
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
||||
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
|
||||
golang.org/x/crypto v0.17.0 h1:r8bRNjWL3GshPW3gkd+RpvzWrZAwPS49OmTGZ/uhM4k=
|
||||
@@ -138,6 +132,8 @@ golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
|
||||
golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
|
||||
golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ=
|
||||
golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
|
||||
golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk=
|
||||
golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM=
|
||||
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
||||
golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
|
||||
@@ -148,8 +144,8 @@ golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8T
|
||||
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||
google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
|
||||
google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
|
||||
google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8=
|
||||
google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
|
||||
google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI=
|
||||
google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos=
|
||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
|
||||
|
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"version": "20240404",
|
||||
"text": "Tips: Brook Troubleshooting Steps",
|
||||
"link": "https://www.txthinking.com/talks/articles/brook-troubleshooting-steps-en.article",
|
||||
"text_zh": "小提示: Brook 问题排查步骤",
|
||||
"link_zh": "https://www.txthinking.com/talks/articles/brook-troubleshooting-steps.article"
|
||||
"text": "Get $10-$50 AI balance",
|
||||
"link": "https://forms.gle/kjR5MccgzvGFGPp57",
|
||||
"text_zh": "Get $10-$50 AI balance",
|
||||
"link_zh": "https://forms.gle/kjR5MccgzvGFGPp57"
|
||||
}
|
||||
|
@@ -1 +1 @@
|
||||
`dialwithdns` plugin reslove domain with custom dns or doh, instead of local dns
|
||||
`dialwithdns` plugin resolve domain with custom dns or doh, instead of local dns
|
||||
|
@@ -31,6 +31,7 @@ import (
|
||||
|
||||
type Logger struct {
|
||||
F *os.File
|
||||
File string
|
||||
Lock *sync.Mutex
|
||||
Tags map[string]string
|
||||
}
|
||||
@@ -43,11 +44,11 @@ func NewLogger(tags map[string]string, file string) (*Logger, error) {
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &Logger{F: f, Tags: tags, Lock: &sync.Mutex{}}, nil
|
||||
return &Logger{F: f, File: file, Tags: tags, Lock: &sync.Mutex{}}, nil
|
||||
}
|
||||
|
||||
func (p *Logger) Close() error {
|
||||
if p.F == nil {
|
||||
if p.Lock == nil {
|
||||
return nil
|
||||
}
|
||||
p.Lock.Lock()
|
||||
@@ -55,7 +56,25 @@ func (p *Logger) Close() error {
|
||||
return p.F.Close()
|
||||
}
|
||||
|
||||
func (p *Logger) Reset() error {
|
||||
if p.Lock == nil {
|
||||
return nil
|
||||
}
|
||||
p.Lock.Lock()
|
||||
defer p.Lock.Unlock()
|
||||
err := p.F.Close()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
p.F, err = os.OpenFile(p.File, os.O_TRUNC|os.O_CREATE|os.O_WRONLY, 0644)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (p *Logger) TouchBrook() {
|
||||
go p.WatchReset()
|
||||
brook.Log = func(err error) {
|
||||
if _, ok := err.(brook.Error); !ok {
|
||||
err = brook.Error{"error": err.Error()}
|
||||
@@ -64,7 +83,7 @@ func (p *Logger) TouchBrook() {
|
||||
for k, v := range p.Tags {
|
||||
err.(brook.Error)[k] = v
|
||||
}
|
||||
if p.F == nil {
|
||||
if p.Lock == nil {
|
||||
fmt.Println(err)
|
||||
return
|
||||
}
|
||||
|
21
brook/plugins/logger/logger_unix.go
Normal file
21
brook/plugins/logger/logger_unix.go
Normal file
@@ -0,0 +1,21 @@
|
||||
//go:build !windows
|
||||
|
||||
package logger
|
||||
|
||||
import (
|
||||
"log"
|
||||
"os"
|
||||
"os/signal"
|
||||
"syscall"
|
||||
)
|
||||
|
||||
func (p *Logger) WatchReset() {
|
||||
for {
|
||||
sigs := make(chan os.Signal, 1)
|
||||
signal.Notify(sigs, syscall.SIGUSR1)
|
||||
<-sigs
|
||||
if err := p.Reset(); err != nil {
|
||||
log.Println(err)
|
||||
}
|
||||
}
|
||||
}
|
4
brook/plugins/logger/logger_windows.go
Normal file
4
brook/plugins/logger/logger_windows.go
Normal file
@@ -0,0 +1,4 @@
|
||||
package logger
|
||||
|
||||
func (p *Logger) WatchReset() {
|
||||
}
|
@@ -89,14 +89,14 @@ func (d *dnsPacketConn) WriteTo(p []byte, addr net.Addr) (n int, err error) {
|
||||
return len(p), nil
|
||||
}
|
||||
|
||||
ctx, cancel := context.WithTimeout(d.ctx, resolver.DefaultDnsRelayTimeout)
|
||||
defer cancel()
|
||||
|
||||
buf := pool.Get(resolver.SafeDnsPacketSize)
|
||||
put := func() { _ = pool.Put(buf) }
|
||||
copy(buf, p) // avoid p be changed after WriteTo returned
|
||||
|
||||
go func() { // don't block the WriteTo function
|
||||
ctx, cancel := context.WithTimeout(d.ctx, resolver.DefaultDnsRelayTimeout)
|
||||
defer cancel()
|
||||
|
||||
buf, err = resolver.RelayDnsPacket(ctx, buf[:len(p)], buf)
|
||||
if err != nil {
|
||||
put()
|
||||
|
@@ -46,7 +46,7 @@ func RelayDnsConn(ctx context.Context, conn net.Conn, readTimeout time.Duration)
|
||||
ctx, cancel := context.WithTimeout(ctx, DefaultDnsRelayTimeout)
|
||||
defer cancel()
|
||||
inData := buff[:n]
|
||||
msg, err := RelayDnsPacket(ctx, inData, buff)
|
||||
msg, err := relayDnsPacket(ctx, inData, buff, 0)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -69,7 +69,7 @@ func RelayDnsConn(ctx context.Context, conn net.Conn, readTimeout time.Duration)
|
||||
return nil
|
||||
}
|
||||
|
||||
func RelayDnsPacket(ctx context.Context, payload []byte, target []byte) ([]byte, error) {
|
||||
func relayDnsPacket(ctx context.Context, payload []byte, target []byte, maxSize int) ([]byte, error) {
|
||||
msg := &D.Msg{}
|
||||
if err := msg.Unpack(payload); err != nil {
|
||||
return nil, err
|
||||
@@ -83,6 +83,14 @@ func RelayDnsPacket(ctx context.Context, payload []byte, target []byte) ([]byte,
|
||||
}
|
||||
|
||||
r.SetRcode(msg, r.Rcode)
|
||||
if maxSize > 0 {
|
||||
r.Truncate(maxSize)
|
||||
}
|
||||
r.Compress = true
|
||||
return r.PackBuffer(target)
|
||||
}
|
||||
|
||||
// RelayDnsPacket will truncate udp message up to SafeDnsPacketSize
|
||||
func RelayDnsPacket(ctx context.Context, payload []byte, target []byte) ([]byte, error) {
|
||||
return relayDnsPacket(ctx, payload, target, SafeDnsPacketSize)
|
||||
}
|
||||
|
@@ -20,7 +20,7 @@ require (
|
||||
github.com/mdlayher/netlink v1.7.2
|
||||
github.com/metacubex/gopacket v1.1.20-0.20230608035415-7e2f98a3e759
|
||||
github.com/metacubex/quic-go v0.42.1-0.20240319071510-a251e5c66a5c
|
||||
github.com/metacubex/sing-quic v0.0.0-20240310154810-47bca850fc01
|
||||
github.com/metacubex/sing-quic v0.0.0-20240409064816-c16ac6b1f4b4
|
||||
github.com/metacubex/sing-shadowsocks v0.2.6
|
||||
github.com/metacubex/sing-shadowsocks2 v0.2.0
|
||||
github.com/metacubex/sing-tun v0.2.6
|
||||
|
@@ -108,8 +108,8 @@ github.com/metacubex/quic-go v0.42.1-0.20240319071510-a251e5c66a5c h1:AhaPKvVqF3
|
||||
github.com/metacubex/quic-go v0.42.1-0.20240319071510-a251e5c66a5c/go.mod h1:iGx3Y1zynls/FjFgykLSqDcM81U0IKePRTXEz5g3iiQ=
|
||||
github.com/metacubex/sing v0.0.0-20240408015159-aa61c96df764 h1:+czGKoynxYA90YaL3NlCAIJHnlqwoUlLWgmOhdm5ZU8=
|
||||
github.com/metacubex/sing v0.0.0-20240408015159-aa61c96df764/go.mod h1:+60H3Cm91RnL9dpVGWDPHt0zTQImO9Vfqt9a4rSambI=
|
||||
github.com/metacubex/sing-quic v0.0.0-20240310154810-47bca850fc01 h1:5INHs85Gp1JZsdF7fQp1pXUjfJOX2dhwZjuUQWJVSt8=
|
||||
github.com/metacubex/sing-quic v0.0.0-20240310154810-47bca850fc01/go.mod h1:WyY0zYxv+o+18R/Ece+QFontlgXoobKbNqbtYn2zjz8=
|
||||
github.com/metacubex/sing-quic v0.0.0-20240409064816-c16ac6b1f4b4 h1:JB+BgUgQVicS1oGiw63c0xQWEAkUeuTylDy5WIaco7o=
|
||||
github.com/metacubex/sing-quic v0.0.0-20240409064816-c16ac6b1f4b4/go.mod h1:WyY0zYxv+o+18R/Ece+QFontlgXoobKbNqbtYn2zjz8=
|
||||
github.com/metacubex/sing-shadowsocks v0.2.6 h1:6oEB3QcsFYnNiFeoevcXrCwJ3sAablwVSgtE9R3QeFQ=
|
||||
github.com/metacubex/sing-shadowsocks v0.2.6/go.mod h1:zIkMeSnb8Mbf4hdqhw0pjzkn1d99YJ3JQm/VBg5WMTg=
|
||||
github.com/metacubex/sing-shadowsocks2 v0.2.0 h1:hqwT/AfI5d5UdPefIzR6onGHJfDXs5zgOM5QSgaM/9A=
|
||||
|
8
clash-nyanpasu/backend/Cargo.lock
generated
8
clash-nyanpasu/backend/Cargo.lock
generated
@@ -2538,7 +2538,7 @@ dependencies = [
|
||||
"iana-time-zone-haiku",
|
||||
"js-sys",
|
||||
"wasm-bindgen",
|
||||
"windows-core 0.52.0",
|
||||
"windows-core 0.51.1",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -3041,7 +3041,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "0c2a198fb6b0eada2a8df47933734e6d35d350665a33a3593d7164fa52c75c19"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"windows-targets 0.52.4",
|
||||
"windows-targets 0.48.5",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -5563,9 +5563,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "sysinfo"
|
||||
version = "0.30.8"
|
||||
version = "0.30.9"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "4b1a378e48fb3ce3a5cf04359c456c9c98ff689bcf1c1bc6e6a31f247686f275"
|
||||
checksum = "e9a84fe4cfc513b41cb2596b624e561ec9e7e1c4b46328e496ed56a53514ef2a"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"core-foundation-sys",
|
||||
|
@@ -2,7 +2,7 @@
|
||||
"manifest_version": 1,
|
||||
"latest": {
|
||||
"mihomo": "v1.18.3",
|
||||
"mihomo_alpha": "alpha-f3e23b1",
|
||||
"mihomo_alpha": "alpha-72df27b",
|
||||
"clash_rs": "v0.1.15",
|
||||
"clash_premium": "2023-09-05-gdcc8d87"
|
||||
},
|
||||
@@ -36,5 +36,5 @@
|
||||
"darwin-x64": "clash-darwin-amd64-n{}.gz"
|
||||
}
|
||||
},
|
||||
"updated_at": "2024-04-07T22:18:47.774Z"
|
||||
"updated_at": "2024-04-08T22:20:44.727Z"
|
||||
}
|
||||
|
@@ -69,7 +69,7 @@
|
||||
"@dnd-kit/utilities": "3.2.2",
|
||||
"@emotion/react": "11.11.4",
|
||||
"@emotion/styled": "11.11.5",
|
||||
"@generouted/react-router": "1.18.7",
|
||||
"@generouted/react-router": "1.18.8",
|
||||
"@juggle/resize-observer": "3.4.0",
|
||||
"@mui/icons-material": "5.15.15",
|
||||
"@mui/lab": "5.0.0-alpha.170",
|
||||
@@ -104,12 +104,12 @@
|
||||
"@types/fs-extra": "11.0.4",
|
||||
"@types/js-cookie": "3.0.6",
|
||||
"@types/lodash-es": "4.17.12",
|
||||
"@types/node": "20.12.5",
|
||||
"@types/react": "18.2.74",
|
||||
"@types/node": "20.12.6",
|
||||
"@types/react": "18.2.75",
|
||||
"@types/react-dom": "18.2.24",
|
||||
"@types/react-transition-group": "4.4.10",
|
||||
"@typescript-eslint/eslint-plugin": "7.5.0",
|
||||
"@typescript-eslint/parser": "7.5.0",
|
||||
"@typescript-eslint/eslint-plugin": "7.6.0",
|
||||
"@typescript-eslint/parser": "7.6.0",
|
||||
"@vitejs/plugin-react": "4.2.1",
|
||||
"adm-zip": "0.5.12",
|
||||
"autoprefixer": "10.4.19",
|
||||
|
321
clash-nyanpasu/pnpm-lock.yaml
generated
321
clash-nyanpasu/pnpm-lock.yaml
generated
@@ -19,28 +19,28 @@ dependencies:
|
||||
version: 3.2.2(react@18.2.0)
|
||||
'@emotion/react':
|
||||
specifier: 11.11.4
|
||||
version: 11.11.4(@types/react@18.2.74)(react@18.2.0)
|
||||
version: 11.11.4(@types/react@18.2.75)(react@18.2.0)
|
||||
'@emotion/styled':
|
||||
specifier: 11.11.5
|
||||
version: 11.11.5(@emotion/react@11.11.4)(@types/react@18.2.74)(react@18.2.0)
|
||||
version: 11.11.5(@emotion/react@11.11.4)(@types/react@18.2.75)(react@18.2.0)
|
||||
'@generouted/react-router':
|
||||
specifier: 1.18.7
|
||||
version: 1.18.7(react-router-dom@6.22.3)(react@18.2.0)(vite@5.2.8)
|
||||
specifier: 1.18.8
|
||||
version: 1.18.8(react-router-dom@6.22.3)(react@18.2.0)(vite@5.2.8)
|
||||
'@juggle/resize-observer':
|
||||
specifier: 3.4.0
|
||||
version: 3.4.0
|
||||
'@mui/icons-material':
|
||||
specifier: 5.15.15
|
||||
version: 5.15.15(@mui/material@5.15.15)(@types/react@18.2.74)(react@18.2.0)
|
||||
version: 5.15.15(@mui/material@5.15.15)(@types/react@18.2.75)(react@18.2.0)
|
||||
'@mui/lab':
|
||||
specifier: 5.0.0-alpha.170
|
||||
version: 5.0.0-alpha.170(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@mui/material@5.15.15)(@types/react@18.2.74)(react-dom@18.2.0)(react@18.2.0)
|
||||
version: 5.0.0-alpha.170(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@mui/material@5.15.15)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0)
|
||||
'@mui/material':
|
||||
specifier: 5.15.15
|
||||
version: 5.15.15(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@types/react@18.2.74)(react-dom@18.2.0)(react@18.2.0)
|
||||
version: 5.15.15(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0)
|
||||
'@mui/x-data-grid':
|
||||
specifier: 7.1.1
|
||||
version: 7.1.1(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@mui/material@5.15.15)(@types/react@18.2.74)(react-dom@18.2.0)(react@18.2.0)
|
||||
version: 7.1.1(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@mui/material@5.15.15)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0)
|
||||
'@tauri-apps/api':
|
||||
specifier: 1.5.3
|
||||
version: 1.5.3
|
||||
@@ -67,7 +67,7 @@ dependencies:
|
||||
version: 0.47.0
|
||||
mui-color-input:
|
||||
specifier: 2.0.3
|
||||
version: 2.0.3(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@mui/material@5.15.15)(@types/react@18.2.74)(react-dom@18.2.0)(react@18.2.0)
|
||||
version: 2.0.3(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@mui/material@5.15.15)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0)
|
||||
react:
|
||||
specifier: 18.2.0
|
||||
version: 18.2.0
|
||||
@@ -85,7 +85,7 @@ dependencies:
|
||||
version: 14.1.0(i18next@23.11.0)(react-dom@18.2.0)(react@18.2.0)
|
||||
react-markdown:
|
||||
specifier: 9.0.1
|
||||
version: 9.0.1(@types/react@18.2.74)(react@18.2.0)
|
||||
version: 9.0.1(@types/react@18.2.75)(react@18.2.0)
|
||||
react-router-dom:
|
||||
specifier: 6.22.3
|
||||
version: 6.22.3(react-dom@18.2.0)(react@18.2.0)
|
||||
@@ -108,7 +108,7 @@ devDependencies:
|
||||
version: 6.0.0
|
||||
'@commitlint/cli':
|
||||
specifier: 19.2.1
|
||||
version: 19.2.1(@types/node@20.12.5)(typescript@5.4.4)
|
||||
version: 19.2.1(@types/node@20.12.6)(typescript@5.4.4)
|
||||
'@commitlint/config-conventional':
|
||||
specifier: 19.1.0
|
||||
version: 19.1.0
|
||||
@@ -125,11 +125,11 @@ devDependencies:
|
||||
specifier: 4.17.12
|
||||
version: 4.17.12
|
||||
'@types/node':
|
||||
specifier: 20.12.5
|
||||
version: 20.12.5
|
||||
specifier: 20.12.6
|
||||
version: 20.12.6
|
||||
'@types/react':
|
||||
specifier: 18.2.74
|
||||
version: 18.2.74
|
||||
specifier: 18.2.75
|
||||
version: 18.2.75
|
||||
'@types/react-dom':
|
||||
specifier: 18.2.24
|
||||
version: 18.2.24
|
||||
@@ -137,11 +137,11 @@ devDependencies:
|
||||
specifier: 4.4.10
|
||||
version: 4.4.10
|
||||
'@typescript-eslint/eslint-plugin':
|
||||
specifier: 7.5.0
|
||||
version: 7.5.0(@typescript-eslint/parser@7.5.0)(eslint@8.57.0)(typescript@5.4.4)
|
||||
specifier: 7.6.0
|
||||
version: 7.6.0(@typescript-eslint/parser@7.6.0)(eslint@8.57.0)(typescript@5.4.4)
|
||||
'@typescript-eslint/parser':
|
||||
specifier: 7.5.0
|
||||
version: 7.5.0(eslint@8.57.0)(typescript@5.4.4)
|
||||
specifier: 7.6.0
|
||||
version: 7.6.0(eslint@8.57.0)(typescript@5.4.4)
|
||||
'@vitejs/plugin-react':
|
||||
specifier: 4.2.1
|
||||
version: 4.2.1(vite@5.2.8)
|
||||
@@ -183,7 +183,7 @@ devDependencies:
|
||||
version: 8.0.0
|
||||
eslint-plugin-import:
|
||||
specifier: 2.29.1
|
||||
version: 2.29.1(@typescript-eslint/parser@7.5.0)(eslint@8.57.0)
|
||||
version: 2.29.1(@typescript-eslint/parser@7.6.0)(eslint@8.57.0)
|
||||
eslint-plugin-n:
|
||||
specifier: 16.6.2
|
||||
version: 16.6.2(eslint@8.57.0)
|
||||
@@ -273,7 +273,7 @@ devDependencies:
|
||||
version: 5.4.4
|
||||
vite:
|
||||
specifier: 5.2.8
|
||||
version: 5.2.8(@types/node@20.12.5)(sass@1.74.1)
|
||||
version: 5.2.8(@types/node@20.12.6)(sass@1.74.1)
|
||||
vite-plugin-monaco-editor:
|
||||
specifier: npm:vite-plugin-monaco-editor-new@1.1.3
|
||||
version: /vite-plugin-monaco-editor-new@1.1.3(monaco-editor@0.47.0)
|
||||
@@ -549,14 +549,14 @@ packages:
|
||||
'@babel/helper-validator-identifier': 7.22.20
|
||||
to-fast-properties: 2.0.0
|
||||
|
||||
/@commitlint/cli@19.2.1(@types/node@20.12.5)(typescript@5.4.4):
|
||||
/@commitlint/cli@19.2.1(@types/node@20.12.6)(typescript@5.4.4):
|
||||
resolution: {integrity: sha512-cbkYUJsLqRomccNxvoJTyv5yn0bSy05BBizVyIcLACkRbVUqYorC351Diw/XFSWC/GtpwiwT2eOvQgFZa374bg==}
|
||||
engines: {node: '>=v18'}
|
||||
hasBin: true
|
||||
dependencies:
|
||||
'@commitlint/format': 19.0.3
|
||||
'@commitlint/lint': 19.1.0
|
||||
'@commitlint/load': 19.2.0(@types/node@20.12.5)(typescript@5.4.4)
|
||||
'@commitlint/load': 19.2.0(@types/node@20.12.6)(typescript@5.4.4)
|
||||
'@commitlint/read': 19.2.1
|
||||
'@commitlint/types': 19.0.3
|
||||
execa: 8.0.1
|
||||
@@ -625,7 +625,7 @@ packages:
|
||||
'@commitlint/types': 19.0.3
|
||||
dev: true
|
||||
|
||||
/@commitlint/load@19.2.0(@types/node@20.12.5)(typescript@5.4.4):
|
||||
/@commitlint/load@19.2.0(@types/node@20.12.6)(typescript@5.4.4):
|
||||
resolution: {integrity: sha512-XvxxLJTKqZojCxaBQ7u92qQLFMMZc4+p9qrIq/9kJDy8DOrEa7P1yx7Tjdc2u2JxIalqT4KOGraVgCE7eCYJyQ==}
|
||||
engines: {node: '>=v18'}
|
||||
dependencies:
|
||||
@@ -635,7 +635,7 @@ packages:
|
||||
'@commitlint/types': 19.0.3
|
||||
chalk: 5.3.0
|
||||
cosmiconfig: 9.0.0(typescript@5.4.4)
|
||||
cosmiconfig-typescript-loader: 5.0.0(@types/node@20.12.5)(cosmiconfig@9.0.0)(typescript@5.4.4)
|
||||
cosmiconfig-typescript-loader: 5.0.0(@types/node@20.12.6)(cosmiconfig@9.0.0)(typescript@5.4.4)
|
||||
lodash.isplainobject: 4.0.6
|
||||
lodash.merge: 4.6.2
|
||||
lodash.uniq: 4.5.0
|
||||
@@ -838,7 +838,7 @@ packages:
|
||||
resolution: {integrity: sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==}
|
||||
dev: false
|
||||
|
||||
/@emotion/react@11.11.4(@types/react@18.2.74)(react@18.2.0):
|
||||
/@emotion/react@11.11.4(@types/react@18.2.75)(react@18.2.0):
|
||||
resolution: {integrity: sha512-t8AjMlF0gHpvvxk5mAtCqR4vmxiGHCeJBaQO6gncUSdklELOgtwjerNY2yuJNfwnc6vi16U/+uMF+afIawJ9iw==}
|
||||
peerDependencies:
|
||||
'@types/react': '*'
|
||||
@@ -854,7 +854,7 @@ packages:
|
||||
'@emotion/use-insertion-effect-with-fallbacks': 1.0.1(react@18.2.0)
|
||||
'@emotion/utils': 1.2.1
|
||||
'@emotion/weak-memoize': 0.3.1
|
||||
'@types/react': 18.2.74
|
||||
'@types/react': 18.2.75
|
||||
hoist-non-react-statics: 3.3.2
|
||||
react: 18.2.0
|
||||
dev: false
|
||||
@@ -883,7 +883,7 @@ packages:
|
||||
resolution: {integrity: sha512-0QBtGvaqtWi+nx6doRwDdBIzhNdZrXUppvTM4dtZZWEGTXL/XE/yJxLMGlDT1Gt+UHH5IX1n+jkXyytE/av7OA==}
|
||||
dev: false
|
||||
|
||||
/@emotion/styled@11.11.5(@emotion/react@11.11.4)(@types/react@18.2.74)(react@18.2.0):
|
||||
/@emotion/styled@11.11.5(@emotion/react@11.11.4)(@types/react@18.2.75)(react@18.2.0):
|
||||
resolution: {integrity: sha512-/ZjjnaNKvuMPxcIiUkf/9SHoG4Q196DRl1w82hQ3WCsjo1IUR8uaGWrC6a87CrYAW0Kb/pK7hk8BnLgLRi9KoQ==}
|
||||
peerDependencies:
|
||||
'@emotion/react': ^11.0.0-rc.0
|
||||
@@ -896,11 +896,11 @@ packages:
|
||||
'@babel/runtime': 7.24.1
|
||||
'@emotion/babel-plugin': 11.11.0
|
||||
'@emotion/is-prop-valid': 1.2.2
|
||||
'@emotion/react': 11.11.4(@types/react@18.2.74)(react@18.2.0)
|
||||
'@emotion/react': 11.11.4(@types/react@18.2.75)(react@18.2.0)
|
||||
'@emotion/serialize': 1.1.4
|
||||
'@emotion/use-insertion-effect-with-fallbacks': 1.0.1(react@18.2.0)
|
||||
'@emotion/utils': 1.2.1
|
||||
'@types/react': 18.2.74
|
||||
'@types/react': 18.2.75
|
||||
react: 18.2.0
|
||||
dev: false
|
||||
|
||||
@@ -1385,18 +1385,18 @@ packages:
|
||||
resolution: {integrity: sha512-9TANp6GPoMtYzQdt54kfAyMmz1+osLlXdg2ENroU7zzrtflTLrrC/lgrIfaSe+Wu0b89GKccT7vxXA0MoAIO+Q==}
|
||||
dev: false
|
||||
|
||||
/@generouted/react-router@1.18.7(react-router-dom@6.22.3)(react@18.2.0)(vite@5.2.8):
|
||||
resolution: {integrity: sha512-bT3IMnEfkRPSJ7CkEEzrnGhKxbDDF0RpnAOEDToHdJDVw/mfjZ51F8H5v3fCgQSpOeMuxaQo/TIjqOaE012PGg==}
|
||||
/@generouted/react-router@1.18.8(react-router-dom@6.22.3)(react@18.2.0)(vite@5.2.8):
|
||||
resolution: {integrity: sha512-LN1mIF1Akj7t3mvTeDlBZCa8a0wFPooLHDKam9YcG/UcgOEMTn+Y63tV5AGdcM33xtOYeE+pTX+ud+GR3yNe0g==}
|
||||
peerDependencies:
|
||||
react: '>=18'
|
||||
react-router-dom: '>=6'
|
||||
vite: '>=4'
|
||||
dependencies:
|
||||
fast-glob: 3.3.2
|
||||
generouted: 1.18.7(vite@5.2.8)
|
||||
generouted: 1.18.8(vite@5.2.8)
|
||||
react: 18.2.0
|
||||
react-router-dom: 6.22.3(react-dom@18.2.0)(react@18.2.0)
|
||||
vite: 5.2.8(@types/node@20.12.5)(sass@1.74.1)
|
||||
vite: 5.2.8(@types/node@20.12.6)(sass@1.74.1)
|
||||
dev: false
|
||||
|
||||
/@humanwhocodes/config-array@0.11.14:
|
||||
@@ -1465,7 +1465,7 @@ packages:
|
||||
resolution: {integrity: sha512-dfLbk+PwWvFzSxwk3n5ySL0hfBog779o8h68wK/7/APo/7cgyWp5jcXockbxdk5kFRkbeXWm4Fbi9FrdN381sA==}
|
||||
dev: false
|
||||
|
||||
/@mui/base@5.0.0-beta.40(@types/react@18.2.74)(react-dom@18.2.0)(react@18.2.0):
|
||||
/@mui/base@5.0.0-beta.40(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0):
|
||||
resolution: {integrity: sha512-I/lGHztkCzvwlXpjD2+SNmvNQvB4227xBXhISPjEaJUXGImOQ9f3D2Yj/T3KasSI/h0MLWy74X0J6clhPmsRbQ==}
|
||||
engines: {node: '>=12.0.0'}
|
||||
peerDependencies:
|
||||
@@ -1478,10 +1478,10 @@ packages:
|
||||
dependencies:
|
||||
'@babel/runtime': 7.24.1
|
||||
'@floating-ui/react-dom': 2.0.8(react-dom@18.2.0)(react@18.2.0)
|
||||
'@mui/types': 7.2.14(@types/react@18.2.74)
|
||||
'@mui/utils': 5.15.14(@types/react@18.2.74)(react@18.2.0)
|
||||
'@mui/types': 7.2.14(@types/react@18.2.75)
|
||||
'@mui/utils': 5.15.14(@types/react@18.2.75)(react@18.2.0)
|
||||
'@popperjs/core': 2.11.8
|
||||
'@types/react': 18.2.74
|
||||
'@types/react': 18.2.75
|
||||
clsx: 2.1.0
|
||||
prop-types: 15.8.1
|
||||
react: 18.2.0
|
||||
@@ -1492,7 +1492,7 @@ packages:
|
||||
resolution: {integrity: sha512-aXnw29OWQ6I5A47iuWEI6qSSUfH6G/aCsW9KmW3LiFqr7uXZBK4Ks+z8G+qeIub8k0T5CMqlT2q0L+ZJTMrqpg==}
|
||||
dev: false
|
||||
|
||||
/@mui/icons-material@5.15.15(@mui/material@5.15.15)(@types/react@18.2.74)(react@18.2.0):
|
||||
/@mui/icons-material@5.15.15(@mui/material@5.15.15)(@types/react@18.2.75)(react@18.2.0):
|
||||
resolution: {integrity: sha512-kkeU/pe+hABcYDH6Uqy8RmIsr2S/y5bP2rp+Gat4CcRjCcVne6KudS1NrZQhUCRysrTDCAhcbcf9gt+/+pGO2g==}
|
||||
engines: {node: '>=12.0.0'}
|
||||
peerDependencies:
|
||||
@@ -1504,12 +1504,12 @@ packages:
|
||||
optional: true
|
||||
dependencies:
|
||||
'@babel/runtime': 7.24.1
|
||||
'@mui/material': 5.15.15(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@types/react@18.2.74)(react-dom@18.2.0)(react@18.2.0)
|
||||
'@types/react': 18.2.74
|
||||
'@mui/material': 5.15.15(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0)
|
||||
'@types/react': 18.2.75
|
||||
react: 18.2.0
|
||||
dev: false
|
||||
|
||||
/@mui/lab@5.0.0-alpha.170(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@mui/material@5.15.15)(@types/react@18.2.74)(react-dom@18.2.0)(react@18.2.0):
|
||||
/@mui/lab@5.0.0-alpha.170(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@mui/material@5.15.15)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0):
|
||||
resolution: {integrity: sha512-0bDVECGmrNjd3+bLdcLiwYZ0O4HP5j5WSQm5DV6iA/Z9kr8O6AnvZ1bv9ImQbbX7Gj3pX4o43EKwCutj3EQxQg==}
|
||||
engines: {node: '>=12.0.0'}
|
||||
peerDependencies:
|
||||
@@ -1528,21 +1528,21 @@ packages:
|
||||
optional: true
|
||||
dependencies:
|
||||
'@babel/runtime': 7.24.1
|
||||
'@emotion/react': 11.11.4(@types/react@18.2.74)(react@18.2.0)
|
||||
'@emotion/styled': 11.11.5(@emotion/react@11.11.4)(@types/react@18.2.74)(react@18.2.0)
|
||||
'@mui/base': 5.0.0-beta.40(@types/react@18.2.74)(react-dom@18.2.0)(react@18.2.0)
|
||||
'@mui/material': 5.15.15(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@types/react@18.2.74)(react-dom@18.2.0)(react@18.2.0)
|
||||
'@mui/system': 5.15.15(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@types/react@18.2.74)(react@18.2.0)
|
||||
'@mui/types': 7.2.14(@types/react@18.2.74)
|
||||
'@mui/utils': 5.15.14(@types/react@18.2.74)(react@18.2.0)
|
||||
'@types/react': 18.2.74
|
||||
'@emotion/react': 11.11.4(@types/react@18.2.75)(react@18.2.0)
|
||||
'@emotion/styled': 11.11.5(@emotion/react@11.11.4)(@types/react@18.2.75)(react@18.2.0)
|
||||
'@mui/base': 5.0.0-beta.40(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0)
|
||||
'@mui/material': 5.15.15(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0)
|
||||
'@mui/system': 5.15.15(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@types/react@18.2.75)(react@18.2.0)
|
||||
'@mui/types': 7.2.14(@types/react@18.2.75)
|
||||
'@mui/utils': 5.15.14(@types/react@18.2.75)(react@18.2.0)
|
||||
'@types/react': 18.2.75
|
||||
clsx: 2.1.0
|
||||
prop-types: 15.8.1
|
||||
react: 18.2.0
|
||||
react-dom: 18.2.0(react@18.2.0)
|
||||
dev: false
|
||||
|
||||
/@mui/material@5.15.15(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@types/react@18.2.74)(react-dom@18.2.0)(react@18.2.0):
|
||||
/@mui/material@5.15.15(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0):
|
||||
resolution: {integrity: sha512-3zvWayJ+E1kzoIsvwyEvkTUKVKt1AjchFFns+JtluHCuvxgKcLSRJTADw37k0doaRtVAsyh8bz9Afqzv+KYrIA==}
|
||||
engines: {node: '>=12.0.0'}
|
||||
peerDependencies:
|
||||
@@ -1560,14 +1560,14 @@ packages:
|
||||
optional: true
|
||||
dependencies:
|
||||
'@babel/runtime': 7.24.1
|
||||
'@emotion/react': 11.11.4(@types/react@18.2.74)(react@18.2.0)
|
||||
'@emotion/styled': 11.11.5(@emotion/react@11.11.4)(@types/react@18.2.74)(react@18.2.0)
|
||||
'@mui/base': 5.0.0-beta.40(@types/react@18.2.74)(react-dom@18.2.0)(react@18.2.0)
|
||||
'@emotion/react': 11.11.4(@types/react@18.2.75)(react@18.2.0)
|
||||
'@emotion/styled': 11.11.5(@emotion/react@11.11.4)(@types/react@18.2.75)(react@18.2.0)
|
||||
'@mui/base': 5.0.0-beta.40(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0)
|
||||
'@mui/core-downloads-tracker': 5.15.15
|
||||
'@mui/system': 5.15.15(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@types/react@18.2.74)(react@18.2.0)
|
||||
'@mui/types': 7.2.14(@types/react@18.2.74)
|
||||
'@mui/utils': 5.15.14(@types/react@18.2.74)(react@18.2.0)
|
||||
'@types/react': 18.2.74
|
||||
'@mui/system': 5.15.15(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@types/react@18.2.75)(react@18.2.0)
|
||||
'@mui/types': 7.2.14(@types/react@18.2.75)
|
||||
'@mui/utils': 5.15.14(@types/react@18.2.75)(react@18.2.0)
|
||||
'@types/react': 18.2.75
|
||||
'@types/react-transition-group': 4.4.10
|
||||
clsx: 2.1.0
|
||||
csstype: 3.1.3
|
||||
@@ -1578,7 +1578,7 @@ packages:
|
||||
react-transition-group: 4.4.5(react-dom@18.2.0)(react@18.2.0)
|
||||
dev: false
|
||||
|
||||
/@mui/private-theming@5.15.14(@types/react@18.2.74)(react@18.2.0):
|
||||
/@mui/private-theming@5.15.14(@types/react@18.2.75)(react@18.2.0):
|
||||
resolution: {integrity: sha512-UH0EiZckOWcxiXLX3Jbb0K7rC8mxTr9L9l6QhOZxYc4r8FHUkefltV9VDGLrzCaWh30SQiJvAEd7djX3XXY6Xw==}
|
||||
engines: {node: '>=12.0.0'}
|
||||
peerDependencies:
|
||||
@@ -1589,8 +1589,8 @@ packages:
|
||||
optional: true
|
||||
dependencies:
|
||||
'@babel/runtime': 7.24.1
|
||||
'@mui/utils': 5.15.14(@types/react@18.2.74)(react@18.2.0)
|
||||
'@types/react': 18.2.74
|
||||
'@mui/utils': 5.15.14(@types/react@18.2.75)(react@18.2.0)
|
||||
'@types/react': 18.2.75
|
||||
prop-types: 15.8.1
|
||||
react: 18.2.0
|
||||
dev: false
|
||||
@@ -1610,14 +1610,14 @@ packages:
|
||||
dependencies:
|
||||
'@babel/runtime': 7.24.1
|
||||
'@emotion/cache': 11.11.0
|
||||
'@emotion/react': 11.11.4(@types/react@18.2.74)(react@18.2.0)
|
||||
'@emotion/styled': 11.11.5(@emotion/react@11.11.4)(@types/react@18.2.74)(react@18.2.0)
|
||||
'@emotion/react': 11.11.4(@types/react@18.2.75)(react@18.2.0)
|
||||
'@emotion/styled': 11.11.5(@emotion/react@11.11.4)(@types/react@18.2.75)(react@18.2.0)
|
||||
csstype: 3.1.3
|
||||
prop-types: 15.8.1
|
||||
react: 18.2.0
|
||||
dev: false
|
||||
|
||||
/@mui/system@5.15.15(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@types/react@18.2.74)(react@18.2.0):
|
||||
/@mui/system@5.15.15(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@types/react@18.2.75)(react@18.2.0):
|
||||
resolution: {integrity: sha512-aulox6N1dnu5PABsfxVGOZffDVmlxPOVgj56HrUnJE8MCSh8lOvvkd47cebIVQQYAjpwieXQXiDPj5pwM40jTQ==}
|
||||
engines: {node: '>=12.0.0'}
|
||||
peerDependencies:
|
||||
@@ -1634,20 +1634,20 @@ packages:
|
||||
optional: true
|
||||
dependencies:
|
||||
'@babel/runtime': 7.24.1
|
||||
'@emotion/react': 11.11.4(@types/react@18.2.74)(react@18.2.0)
|
||||
'@emotion/styled': 11.11.5(@emotion/react@11.11.4)(@types/react@18.2.74)(react@18.2.0)
|
||||
'@mui/private-theming': 5.15.14(@types/react@18.2.74)(react@18.2.0)
|
||||
'@emotion/react': 11.11.4(@types/react@18.2.75)(react@18.2.0)
|
||||
'@emotion/styled': 11.11.5(@emotion/react@11.11.4)(@types/react@18.2.75)(react@18.2.0)
|
||||
'@mui/private-theming': 5.15.14(@types/react@18.2.75)(react@18.2.0)
|
||||
'@mui/styled-engine': 5.15.14(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(react@18.2.0)
|
||||
'@mui/types': 7.2.14(@types/react@18.2.74)
|
||||
'@mui/utils': 5.15.14(@types/react@18.2.74)(react@18.2.0)
|
||||
'@types/react': 18.2.74
|
||||
'@mui/types': 7.2.14(@types/react@18.2.75)
|
||||
'@mui/utils': 5.15.14(@types/react@18.2.75)(react@18.2.0)
|
||||
'@types/react': 18.2.75
|
||||
clsx: 2.1.0
|
||||
csstype: 3.1.3
|
||||
prop-types: 15.8.1
|
||||
react: 18.2.0
|
||||
dev: false
|
||||
|
||||
/@mui/types@7.2.14(@types/react@18.2.74):
|
||||
/@mui/types@7.2.14(@types/react@18.2.75):
|
||||
resolution: {integrity: sha512-MZsBZ4q4HfzBsywtXgM1Ksj6HDThtiwmOKUXH1pKYISI9gAVXCNHNpo7TlGoGrBaYWZTdNoirIN7JsQcQUjmQQ==}
|
||||
peerDependencies:
|
||||
'@types/react': ^17.0.0 || ^18.0.0
|
||||
@@ -1655,10 +1655,10 @@ packages:
|
||||
'@types/react':
|
||||
optional: true
|
||||
dependencies:
|
||||
'@types/react': 18.2.74
|
||||
'@types/react': 18.2.75
|
||||
dev: false
|
||||
|
||||
/@mui/utils@5.15.14(@types/react@18.2.74)(react@18.2.0):
|
||||
/@mui/utils@5.15.14(@types/react@18.2.75)(react@18.2.0):
|
||||
resolution: {integrity: sha512-0lF/7Hh/ezDv5X7Pry6enMsbYyGKjADzvHyo3Qrc/SSlTsQ1VkbDMbH0m2t3OR5iIVLwMoxwM7yGd+6FCMtTFA==}
|
||||
engines: {node: '>=12.0.0'}
|
||||
peerDependencies:
|
||||
@@ -1670,13 +1670,13 @@ packages:
|
||||
dependencies:
|
||||
'@babel/runtime': 7.24.1
|
||||
'@types/prop-types': 15.7.11
|
||||
'@types/react': 18.2.74
|
||||
'@types/react': 18.2.75
|
||||
prop-types: 15.8.1
|
||||
react: 18.2.0
|
||||
react-is: 18.2.0
|
||||
dev: false
|
||||
|
||||
/@mui/x-data-grid@7.1.1(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@mui/material@5.15.15)(@types/react@18.2.74)(react-dom@18.2.0)(react@18.2.0):
|
||||
/@mui/x-data-grid@7.1.1(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@mui/material@5.15.15)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0):
|
||||
resolution: {integrity: sha512-hNvz927lkAznFdy45QPE7mIZVyQhlqveHmTK9+SD0N1us4sSTij90uUJ/roTNDod0VA9f5GqWmNz+5h8ihpz6Q==}
|
||||
engines: {node: '>=14.0.0'}
|
||||
peerDependencies:
|
||||
@@ -1685,9 +1685,9 @@ packages:
|
||||
react-dom: ^17.0.0 || ^18.0.0
|
||||
dependencies:
|
||||
'@babel/runtime': 7.24.1
|
||||
'@mui/material': 5.15.15(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@types/react@18.2.74)(react-dom@18.2.0)(react@18.2.0)
|
||||
'@mui/system': 5.15.15(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@types/react@18.2.74)(react@18.2.0)
|
||||
'@mui/utils': 5.15.14(@types/react@18.2.74)(react@18.2.0)
|
||||
'@mui/material': 5.15.15(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0)
|
||||
'@mui/system': 5.15.15(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@types/react@18.2.75)(react@18.2.0)
|
||||
'@mui/utils': 5.15.14(@types/react@18.2.75)(react@18.2.0)
|
||||
clsx: 2.1.0
|
||||
prop-types: 15.8.1
|
||||
react: 18.2.0
|
||||
@@ -2226,7 +2226,7 @@ packages:
|
||||
/@types/conventional-commits-parser@5.0.0:
|
||||
resolution: {integrity: sha512-loB369iXNmAZglwWATL+WRe+CRMmmBPtpolYzIebFaX4YA3x+BEfLqhUAV9WanycKI3TG1IMr5bMJDajDKLlUQ==}
|
||||
dependencies:
|
||||
'@types/node': 20.12.5
|
||||
'@types/node': 20.12.6
|
||||
dev: true
|
||||
|
||||
/@types/debug@4.1.12:
|
||||
@@ -2248,7 +2248,7 @@ packages:
|
||||
resolution: {integrity: sha512-yTbItCNreRooED33qjunPthRcSjERP1r4MqCZc7wv0u2sUkzTFp45tgUfS5+r7FrZPdmCCNflLhVSP/o+SemsQ==}
|
||||
dependencies:
|
||||
'@types/jsonfile': 6.1.4
|
||||
'@types/node': 20.12.5
|
||||
'@types/node': 20.12.6
|
||||
dev: true
|
||||
|
||||
/@types/hast@3.0.4:
|
||||
@@ -2272,7 +2272,7 @@ packages:
|
||||
/@types/jsonfile@6.1.4:
|
||||
resolution: {integrity: sha512-D5qGUYwjvnNNextdU59/+fI+spnwtTFmyQP0h+PfIOSkNfpU6AOICUOkm4i0OnSk+NyjdPJrxCDro0sJsWlRpQ==}
|
||||
dependencies:
|
||||
'@types/node': 20.12.5
|
||||
'@types/node': 20.12.6
|
||||
dev: true
|
||||
|
||||
/@types/lodash-es@4.17.12:
|
||||
@@ -2295,8 +2295,8 @@ packages:
|
||||
resolution: {integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==}
|
||||
dev: false
|
||||
|
||||
/@types/node@20.12.5:
|
||||
resolution: {integrity: sha512-BD+BjQ9LS/D8ST9p5uqBxghlN+S42iuNxjsUGjeZobe/ciXzk2qb1B6IXc6AnRLS+yFJRpN2IPEHMzwspfDJNw==}
|
||||
/@types/node@20.12.6:
|
||||
resolution: {integrity: sha512-3KurE8taB8GCvZBPngVbp0lk5CKi8M9f9k1rsADh0Evdz5SzJ+Q+Hx9uHoFGsLnLnd1xmkDQr2hVhlA0Mn0lKQ==}
|
||||
dependencies:
|
||||
undici-types: 5.26.5
|
||||
|
||||
@@ -2310,22 +2310,22 @@ packages:
|
||||
/@types/react-dom@18.2.24:
|
||||
resolution: {integrity: sha512-cN6upcKd8zkGy4HU9F1+/s98Hrp6D4MOcippK4PoE8OZRngohHZpbJn1GsaDLz87MqvHNoT13nHvNqM9ocRHZg==}
|
||||
dependencies:
|
||||
'@types/react': 18.2.74
|
||||
'@types/react': 18.2.75
|
||||
dev: true
|
||||
|
||||
/@types/react-transition-group@4.4.10:
|
||||
resolution: {integrity: sha512-hT/+s0VQs2ojCX823m60m5f0sL5idt9SO6Tj6Dg+rdphGPIeJbJ6CxvBYkgkGKrYeDjvIpKTR38UzmtHJOGW3Q==}
|
||||
dependencies:
|
||||
'@types/react': 18.2.74
|
||||
'@types/react': 18.2.75
|
||||
|
||||
/@types/react@18.2.74:
|
||||
resolution: {integrity: sha512-9AEqNZZyBx8OdZpxzQlaFEVCSFUM2YXJH46yPOiOpm078k6ZLOCcuAzGum/zK8YBwY+dbahVNbHrbgrAwIRlqw==}
|
||||
/@types/react@18.2.75:
|
||||
resolution: {integrity: sha512-+DNnF7yc5y0bHkBTiLKqXFe+L4B3nvOphiMY3tuA5X10esmjqk7smyBZzbGTy2vsiy/Bnzj8yFIBL8xhRacoOg==}
|
||||
dependencies:
|
||||
'@types/prop-types': 15.7.11
|
||||
csstype: 3.1.3
|
||||
|
||||
/@types/semver@7.5.6:
|
||||
resolution: {integrity: sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A==}
|
||||
/@types/semver@7.5.8:
|
||||
resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==}
|
||||
dev: true
|
||||
|
||||
/@types/unist@2.0.10:
|
||||
@@ -2336,8 +2336,8 @@ packages:
|
||||
resolution: {integrity: sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==}
|
||||
dev: false
|
||||
|
||||
/@typescript-eslint/eslint-plugin@7.5.0(@typescript-eslint/parser@7.5.0)(eslint@8.57.0)(typescript@5.4.4):
|
||||
resolution: {integrity: sha512-HpqNTH8Du34nLxbKgVMGljZMG0rJd2O9ecvr2QLYp+7512ty1j42KnsFwspPXg1Vh8an9YImf6CokUBltisZFQ==}
|
||||
/@typescript-eslint/eslint-plugin@7.6.0(@typescript-eslint/parser@7.6.0)(eslint@8.57.0)(typescript@5.4.4):
|
||||
resolution: {integrity: sha512-gKmTNwZnblUdnTIJu3e9kmeRRzV2j1a/LUO27KNNAnIC5zjy1aSvXSRp4rVNlmAoHlQ7HzX42NbKpcSr4jF80A==}
|
||||
engines: {node: ^18.18.0 || >=20.0.0}
|
||||
peerDependencies:
|
||||
'@typescript-eslint/parser': ^7.0.0
|
||||
@@ -2348,25 +2348,25 @@ packages:
|
||||
optional: true
|
||||
dependencies:
|
||||
'@eslint-community/regexpp': 4.10.0
|
||||
'@typescript-eslint/parser': 7.5.0(eslint@8.57.0)(typescript@5.4.4)
|
||||
'@typescript-eslint/scope-manager': 7.5.0
|
||||
'@typescript-eslint/type-utils': 7.5.0(eslint@8.57.0)(typescript@5.4.4)
|
||||
'@typescript-eslint/utils': 7.5.0(eslint@8.57.0)(typescript@5.4.4)
|
||||
'@typescript-eslint/visitor-keys': 7.5.0
|
||||
'@typescript-eslint/parser': 7.6.0(eslint@8.57.0)(typescript@5.4.4)
|
||||
'@typescript-eslint/scope-manager': 7.6.0
|
||||
'@typescript-eslint/type-utils': 7.6.0(eslint@8.57.0)(typescript@5.4.4)
|
||||
'@typescript-eslint/utils': 7.6.0(eslint@8.57.0)(typescript@5.4.4)
|
||||
'@typescript-eslint/visitor-keys': 7.6.0
|
||||
debug: 4.3.4
|
||||
eslint: 8.57.0
|
||||
graphemer: 1.4.0
|
||||
ignore: 5.3.1
|
||||
natural-compare: 1.4.0
|
||||
semver: 7.6.0
|
||||
ts-api-utils: 1.0.3(typescript@5.4.4)
|
||||
ts-api-utils: 1.3.0(typescript@5.4.4)
|
||||
typescript: 5.4.4
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
dev: true
|
||||
|
||||
/@typescript-eslint/parser@7.5.0(eslint@8.57.0)(typescript@5.4.4):
|
||||
resolution: {integrity: sha512-cj+XGhNujfD2/wzR1tabNsidnYRaFfEkcULdcIyVBYcXjBvBKOes+mpMBP7hMpOyk+gBcfXsrg4NBGAStQyxjQ==}
|
||||
/@typescript-eslint/parser@7.6.0(eslint@8.57.0)(typescript@5.4.4):
|
||||
resolution: {integrity: sha512-usPMPHcwX3ZoPWnBnhhorc14NJw9J4HpSXQX4urF2TPKG0au0XhJoZyX62fmvdHONUkmyUe74Hzm1//XA+BoYg==}
|
||||
engines: {node: ^18.18.0 || >=20.0.0}
|
||||
peerDependencies:
|
||||
eslint: ^8.56.0
|
||||
@@ -2375,10 +2375,10 @@ packages:
|
||||
typescript:
|
||||
optional: true
|
||||
dependencies:
|
||||
'@typescript-eslint/scope-manager': 7.5.0
|
||||
'@typescript-eslint/types': 7.5.0
|
||||
'@typescript-eslint/typescript-estree': 7.5.0(typescript@5.4.4)
|
||||
'@typescript-eslint/visitor-keys': 7.5.0
|
||||
'@typescript-eslint/scope-manager': 7.6.0
|
||||
'@typescript-eslint/types': 7.6.0
|
||||
'@typescript-eslint/typescript-estree': 7.6.0(typescript@5.4.4)
|
||||
'@typescript-eslint/visitor-keys': 7.6.0
|
||||
debug: 4.3.4
|
||||
eslint: 8.57.0
|
||||
typescript: 5.4.4
|
||||
@@ -2386,16 +2386,16 @@ packages:
|
||||
- supports-color
|
||||
dev: true
|
||||
|
||||
/@typescript-eslint/scope-manager@7.5.0:
|
||||
resolution: {integrity: sha512-Z1r7uJY0MDeUlql9XJ6kRVgk/sP11sr3HKXn268HZyqL7i4cEfrdFuSSY/0tUqT37l5zT0tJOsuDP16kio85iA==}
|
||||
/@typescript-eslint/scope-manager@7.6.0:
|
||||
resolution: {integrity: sha512-ngttyfExA5PsHSx0rdFgnADMYQi+Zkeiv4/ZxGYUWd0nLs63Ha0ksmp8VMxAIC0wtCFxMos7Lt3PszJssG/E6w==}
|
||||
engines: {node: ^18.18.0 || >=20.0.0}
|
||||
dependencies:
|
||||
'@typescript-eslint/types': 7.5.0
|
||||
'@typescript-eslint/visitor-keys': 7.5.0
|
||||
'@typescript-eslint/types': 7.6.0
|
||||
'@typescript-eslint/visitor-keys': 7.6.0
|
||||
dev: true
|
||||
|
||||
/@typescript-eslint/type-utils@7.5.0(eslint@8.57.0)(typescript@5.4.4):
|
||||
resolution: {integrity: sha512-A021Rj33+G8mx2Dqh0nMO9GyjjIBK3MqgVgZ2qlKf6CJy51wY/lkkFqq3TqqnH34XyAHUkq27IjlUkWlQRpLHw==}
|
||||
/@typescript-eslint/type-utils@7.6.0(eslint@8.57.0)(typescript@5.4.4):
|
||||
resolution: {integrity: sha512-NxAfqAPNLG6LTmy7uZgpK8KcuiS2NZD/HlThPXQRGwz6u7MDBWRVliEEl1Gj6U7++kVJTpehkhZzCJLMK66Scw==}
|
||||
engines: {node: ^18.18.0 || >=20.0.0}
|
||||
peerDependencies:
|
||||
eslint: ^8.56.0
|
||||
@@ -2404,23 +2404,23 @@ packages:
|
||||
typescript:
|
||||
optional: true
|
||||
dependencies:
|
||||
'@typescript-eslint/typescript-estree': 7.5.0(typescript@5.4.4)
|
||||
'@typescript-eslint/utils': 7.5.0(eslint@8.57.0)(typescript@5.4.4)
|
||||
'@typescript-eslint/typescript-estree': 7.6.0(typescript@5.4.4)
|
||||
'@typescript-eslint/utils': 7.6.0(eslint@8.57.0)(typescript@5.4.4)
|
||||
debug: 4.3.4
|
||||
eslint: 8.57.0
|
||||
ts-api-utils: 1.0.3(typescript@5.4.4)
|
||||
ts-api-utils: 1.3.0(typescript@5.4.4)
|
||||
typescript: 5.4.4
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
dev: true
|
||||
|
||||
/@typescript-eslint/types@7.5.0:
|
||||
resolution: {integrity: sha512-tv5B4IHeAdhR7uS4+bf8Ov3k793VEVHd45viRRkehIUZxm0WF82VPiLgHzA/Xl4TGPg1ZD49vfxBKFPecD5/mg==}
|
||||
/@typescript-eslint/types@7.6.0:
|
||||
resolution: {integrity: sha512-h02rYQn8J+MureCvHVVzhl69/GAfQGPQZmOMjG1KfCl7o3HtMSlPaPUAPu6lLctXI5ySRGIYk94clD/AUMCUgQ==}
|
||||
engines: {node: ^18.18.0 || >=20.0.0}
|
||||
dev: true
|
||||
|
||||
/@typescript-eslint/typescript-estree@7.5.0(typescript@5.4.4):
|
||||
resolution: {integrity: sha512-YklQQfe0Rv2PZEueLTUffiQGKQneiIEKKnfIqPIOxgM9lKSZFCjT5Ad4VqRKj/U4+kQE3fa8YQpskViL7WjdPQ==}
|
||||
/@typescript-eslint/typescript-estree@7.6.0(typescript@5.4.4):
|
||||
resolution: {integrity: sha512-+7Y/GP9VuYibecrCQWSKgl3GvUM5cILRttpWtnAu8GNL9j11e4tbuGZmZjJ8ejnKYyBRb2ddGQ3rEFCq3QjMJw==}
|
||||
engines: {node: ^18.18.0 || >=20.0.0}
|
||||
peerDependencies:
|
||||
typescript: '*'
|
||||
@@ -2428,31 +2428,31 @@ packages:
|
||||
typescript:
|
||||
optional: true
|
||||
dependencies:
|
||||
'@typescript-eslint/types': 7.5.0
|
||||
'@typescript-eslint/visitor-keys': 7.5.0
|
||||
'@typescript-eslint/types': 7.6.0
|
||||
'@typescript-eslint/visitor-keys': 7.6.0
|
||||
debug: 4.3.4
|
||||
globby: 11.1.0
|
||||
is-glob: 4.0.3
|
||||
minimatch: 9.0.3
|
||||
minimatch: 9.0.4
|
||||
semver: 7.6.0
|
||||
ts-api-utils: 1.0.3(typescript@5.4.4)
|
||||
ts-api-utils: 1.3.0(typescript@5.4.4)
|
||||
typescript: 5.4.4
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
dev: true
|
||||
|
||||
/@typescript-eslint/utils@7.5.0(eslint@8.57.0)(typescript@5.4.4):
|
||||
resolution: {integrity: sha512-3vZl9u0R+/FLQcpy2EHyRGNqAS/ofJ3Ji8aebilfJe+fobK8+LbIFmrHciLVDxjDoONmufDcnVSF38KwMEOjzw==}
|
||||
/@typescript-eslint/utils@7.6.0(eslint@8.57.0)(typescript@5.4.4):
|
||||
resolution: {integrity: sha512-x54gaSsRRI+Nwz59TXpCsr6harB98qjXYzsRxGqvA5Ue3kQH+FxS7FYU81g/omn22ML2pZJkisy6Q+ElK8pBCA==}
|
||||
engines: {node: ^18.18.0 || >=20.0.0}
|
||||
peerDependencies:
|
||||
eslint: ^8.56.0
|
||||
dependencies:
|
||||
'@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0)
|
||||
'@types/json-schema': 7.0.15
|
||||
'@types/semver': 7.5.6
|
||||
'@typescript-eslint/scope-manager': 7.5.0
|
||||
'@typescript-eslint/types': 7.5.0
|
||||
'@typescript-eslint/typescript-estree': 7.5.0(typescript@5.4.4)
|
||||
'@types/semver': 7.5.8
|
||||
'@typescript-eslint/scope-manager': 7.6.0
|
||||
'@typescript-eslint/types': 7.6.0
|
||||
'@typescript-eslint/typescript-estree': 7.6.0(typescript@5.4.4)
|
||||
eslint: 8.57.0
|
||||
semver: 7.6.0
|
||||
transitivePeerDependencies:
|
||||
@@ -2460,11 +2460,11 @@ packages:
|
||||
- typescript
|
||||
dev: true
|
||||
|
||||
/@typescript-eslint/visitor-keys@7.5.0:
|
||||
resolution: {integrity: sha512-mcuHM/QircmA6O7fy6nn2w/3ditQkj+SgtOc8DW3uQ10Yfj42amm2i+6F2K4YAOPNNTmE6iM1ynM6lrSwdendA==}
|
||||
/@typescript-eslint/visitor-keys@7.6.0:
|
||||
resolution: {integrity: sha512-4eLB7t+LlNUmXzfOu1VAIAdkjbu5xNSerURS9X/S5TUKWFRpXRQZbmtPqgKmYx8bj3J0irtQXSiWAOY82v+cgw==}
|
||||
engines: {node: ^18.18.0 || >=20.0.0}
|
||||
dependencies:
|
||||
'@typescript-eslint/types': 7.5.0
|
||||
'@typescript-eslint/types': 7.6.0
|
||||
eslint-visitor-keys: 3.4.3
|
||||
dev: true
|
||||
|
||||
@@ -2482,7 +2482,7 @@ packages:
|
||||
'@babel/plugin-transform-react-jsx-source': 7.23.3(@babel/core@7.23.6)
|
||||
'@types/babel__core': 7.20.5
|
||||
react-refresh: 0.14.0
|
||||
vite: 5.2.8(@types/node@20.12.5)(sass@1.74.1)
|
||||
vite: 5.2.8(@types/node@20.12.6)(sass@1.74.1)
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
dev: true
|
||||
@@ -3115,7 +3115,7 @@ packages:
|
||||
resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==}
|
||||
dev: true
|
||||
|
||||
/cosmiconfig-typescript-loader@5.0.0(@types/node@20.12.5)(cosmiconfig@9.0.0)(typescript@5.4.4):
|
||||
/cosmiconfig-typescript-loader@5.0.0(@types/node@20.12.6)(cosmiconfig@9.0.0)(typescript@5.4.4):
|
||||
resolution: {integrity: sha512-+8cK7jRAReYkMwMiG+bxhcNKiHJDM6bR9FD/nGBXOWdMLuYawjF5cGrtLilJ+LGd3ZjCXnJjR5DkfWPoIVlqJA==}
|
||||
engines: {node: '>=v16'}
|
||||
peerDependencies:
|
||||
@@ -3123,7 +3123,7 @@ packages:
|
||||
cosmiconfig: '>=8.2'
|
||||
typescript: '>=4'
|
||||
dependencies:
|
||||
'@types/node': 20.12.5
|
||||
'@types/node': 20.12.6
|
||||
cosmiconfig: 9.0.0(typescript@5.4.4)
|
||||
jiti: 1.21.0
|
||||
typescript: 5.4.4
|
||||
@@ -3691,7 +3691,7 @@ packages:
|
||||
eslint-plugin-promise: ^6.0.0
|
||||
dependencies:
|
||||
eslint: 8.57.0
|
||||
eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.5.0)(eslint@8.57.0)
|
||||
eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.6.0)(eslint@8.57.0)
|
||||
eslint-plugin-n: 16.6.2(eslint@8.57.0)
|
||||
eslint-plugin-promise: 6.1.1(eslint@8.57.0)
|
||||
dev: true
|
||||
@@ -3702,7 +3702,7 @@ packages:
|
||||
peerDependencies:
|
||||
eslint-plugin-import: '>=1.4.0'
|
||||
dependencies:
|
||||
eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.5.0)(eslint@8.57.0)
|
||||
eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.6.0)(eslint@8.57.0)
|
||||
dev: true
|
||||
|
||||
/eslint-import-resolver-node@0.3.9:
|
||||
@@ -3715,7 +3715,7 @@ packages:
|
||||
- supports-color
|
||||
dev: true
|
||||
|
||||
/eslint-module-utils@2.8.0(@typescript-eslint/parser@7.5.0)(eslint-import-resolver-node@0.3.9)(eslint@8.57.0):
|
||||
/eslint-module-utils@2.8.0(@typescript-eslint/parser@7.6.0)(eslint-import-resolver-node@0.3.9)(eslint@8.57.0):
|
||||
resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==}
|
||||
engines: {node: '>=4'}
|
||||
peerDependencies:
|
||||
@@ -3736,7 +3736,7 @@ packages:
|
||||
eslint-import-resolver-webpack:
|
||||
optional: true
|
||||
dependencies:
|
||||
'@typescript-eslint/parser': 7.5.0(eslint@8.57.0)(typescript@5.4.4)
|
||||
'@typescript-eslint/parser': 7.6.0(eslint@8.57.0)(typescript@5.4.4)
|
||||
debug: 3.2.7
|
||||
eslint: 8.57.0
|
||||
eslint-import-resolver-node: 0.3.9
|
||||
@@ -3763,7 +3763,7 @@ packages:
|
||||
htmlparser2: 9.1.0
|
||||
dev: true
|
||||
|
||||
/eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.5.0)(eslint@8.57.0):
|
||||
/eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.6.0)(eslint@8.57.0):
|
||||
resolution: {integrity: sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==}
|
||||
engines: {node: '>=4'}
|
||||
peerDependencies:
|
||||
@@ -3773,7 +3773,7 @@ packages:
|
||||
'@typescript-eslint/parser':
|
||||
optional: true
|
||||
dependencies:
|
||||
'@typescript-eslint/parser': 7.5.0(eslint@8.57.0)(typescript@5.4.4)
|
||||
'@typescript-eslint/parser': 7.6.0(eslint@8.57.0)(typescript@5.4.4)
|
||||
array-includes: 3.1.7
|
||||
array.prototype.findlastindex: 1.2.3
|
||||
array.prototype.flat: 1.3.2
|
||||
@@ -3782,7 +3782,7 @@ packages:
|
||||
doctrine: 2.1.0
|
||||
eslint: 8.57.0
|
||||
eslint-import-resolver-node: 0.3.9
|
||||
eslint-module-utils: 2.8.0(@typescript-eslint/parser@7.5.0)(eslint-import-resolver-node@0.3.9)(eslint@8.57.0)
|
||||
eslint-module-utils: 2.8.0(@typescript-eslint/parser@7.6.0)(eslint-import-resolver-node@0.3.9)(eslint@8.57.0)
|
||||
hasown: 2.0.0
|
||||
is-core-module: 2.13.1
|
||||
is-glob: 4.0.3
|
||||
@@ -4241,12 +4241,12 @@ packages:
|
||||
resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==}
|
||||
dev: true
|
||||
|
||||
/generouted@1.18.7(vite@5.2.8):
|
||||
resolution: {integrity: sha512-n8u9Ml1aWKaXL1EldqUqHRmcCyotx0q1xcVeBH65BZMKuPT74AW2Ncw89pgonPDSYb19R7Kiuw3243FTU4DP0Q==}
|
||||
/generouted@1.18.8(vite@5.2.8):
|
||||
resolution: {integrity: sha512-iaKHLtR/ziZEJT+0n0+6RMTRFSkPsnF7GvnDvM5xYOjKvFjFZO/u5HRQpKIlBhNC0IGu6JSdHlcu9EJcLOQXvA==}
|
||||
peerDependencies:
|
||||
vite: '>=3'
|
||||
dependencies:
|
||||
vite: 5.2.8(@types/node@20.12.5)(sass@1.74.1)
|
||||
vite: 5.2.8(@types/node@20.12.6)(sass@1.74.1)
|
||||
dev: false
|
||||
|
||||
/gensync@1.0.0-beta.2:
|
||||
@@ -5612,6 +5612,13 @@ packages:
|
||||
brace-expansion: 2.0.1
|
||||
dev: true
|
||||
|
||||
/minimatch@9.0.4:
|
||||
resolution: {integrity: sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==}
|
||||
engines: {node: '>=16 || 14 >=14.17'}
|
||||
dependencies:
|
||||
brace-expansion: 2.0.1
|
||||
dev: true
|
||||
|
||||
/minimist@1.2.8:
|
||||
resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==}
|
||||
dev: true
|
||||
@@ -5632,7 +5639,7 @@ packages:
|
||||
/ms@2.1.2:
|
||||
resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==}
|
||||
|
||||
/mui-color-input@2.0.3(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@mui/material@5.15.15)(@types/react@18.2.74)(react-dom@18.2.0)(react@18.2.0):
|
||||
/mui-color-input@2.0.3(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@mui/material@5.15.15)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0):
|
||||
resolution: {integrity: sha512-rAd040qQ0Y+8dk4gE8kkCiJ/vCgA0j4vv1quJ43BfORTFE3uHarHj0xY1Vo9CPbojtx1f5vW+CjckYPRIZPIRg==}
|
||||
peerDependencies:
|
||||
'@emotion/react': ^11.5.0
|
||||
@@ -5646,10 +5653,10 @@ packages:
|
||||
optional: true
|
||||
dependencies:
|
||||
'@ctrl/tinycolor': 4.0.3
|
||||
'@emotion/react': 11.11.4(@types/react@18.2.74)(react@18.2.0)
|
||||
'@emotion/styled': 11.11.5(@emotion/react@11.11.4)(@types/react@18.2.74)(react@18.2.0)
|
||||
'@mui/material': 5.15.15(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@types/react@18.2.74)(react-dom@18.2.0)(react@18.2.0)
|
||||
'@types/react': 18.2.74
|
||||
'@emotion/react': 11.11.4(@types/react@18.2.75)(react@18.2.0)
|
||||
'@emotion/styled': 11.11.5(@emotion/react@11.11.4)(@types/react@18.2.75)(react@18.2.0)
|
||||
'@mui/material': 5.15.15(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0)
|
||||
'@types/react': 18.2.75
|
||||
react: 18.2.0
|
||||
react-dom: 18.2.0(react@18.2.0)
|
||||
dev: false
|
||||
@@ -6187,14 +6194,14 @@ packages:
|
||||
resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==}
|
||||
dev: false
|
||||
|
||||
/react-markdown@9.0.1(@types/react@18.2.74)(react@18.2.0):
|
||||
/react-markdown@9.0.1(@types/react@18.2.75)(react@18.2.0):
|
||||
resolution: {integrity: sha512-186Gw/vF1uRkydbsOIkcGXw7aHq0sZOCRFFjGrr7b9+nVZg4UfA4enXCaxm4fUzecU38sWfrNDitGhshuU7rdg==}
|
||||
peerDependencies:
|
||||
'@types/react': '>=18'
|
||||
react: '>=18'
|
||||
dependencies:
|
||||
'@types/hast': 3.0.4
|
||||
'@types/react': 18.2.74
|
||||
'@types/react': 18.2.75
|
||||
devlop: 1.1.0
|
||||
hast-util-to-jsx-runtime: 2.3.0
|
||||
html-url-attributes: 3.0.0
|
||||
@@ -7056,9 +7063,9 @@ packages:
|
||||
resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==}
|
||||
dev: false
|
||||
|
||||
/ts-api-utils@1.0.3(typescript@5.4.4):
|
||||
resolution: {integrity: sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==}
|
||||
engines: {node: '>=16.13.0'}
|
||||
/ts-api-utils@1.3.0(typescript@5.4.4):
|
||||
resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==}
|
||||
engines: {node: '>=16'}
|
||||
peerDependencies:
|
||||
typescript: '>=4.2.0'
|
||||
dependencies:
|
||||
@@ -7367,7 +7374,7 @@ packages:
|
||||
postcss-js: 4.0.1(postcss@8.4.38)
|
||||
prettier: 3.2.5
|
||||
sass: 1.74.1
|
||||
vite: 5.2.8(@types/node@20.12.5)(sass@1.74.1)
|
||||
vite: 5.2.8(@types/node@20.12.6)(sass@1.74.1)
|
||||
dev: true
|
||||
|
||||
/vite-plugin-svgr@4.2.0(typescript@5.4.4)(vite@5.2.8):
|
||||
@@ -7378,7 +7385,7 @@ packages:
|
||||
'@rollup/pluginutils': 5.0.5
|
||||
'@svgr/core': 8.1.0(typescript@5.4.4)
|
||||
'@svgr/plugin-jsx': 8.1.0(@svgr/core@8.1.0)
|
||||
vite: 5.2.8(@types/node@20.12.5)(sass@1.74.1)
|
||||
vite: 5.2.8(@types/node@20.12.6)(sass@1.74.1)
|
||||
transitivePeerDependencies:
|
||||
- rollup
|
||||
- supports-color
|
||||
@@ -7396,13 +7403,13 @@ packages:
|
||||
debug: 4.3.4
|
||||
globrex: 0.1.2
|
||||
tsconfck: 3.0.3(typescript@5.4.4)
|
||||
vite: 5.2.8(@types/node@20.12.5)(sass@1.74.1)
|
||||
vite: 5.2.8(@types/node@20.12.6)(sass@1.74.1)
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
- typescript
|
||||
dev: true
|
||||
|
||||
/vite@5.2.8(@types/node@20.12.5)(sass@1.74.1):
|
||||
/vite@5.2.8(@types/node@20.12.6)(sass@1.74.1):
|
||||
resolution: {integrity: sha512-OyZR+c1CE8yeHw5V5t59aXsUPPVTHMDjEZz8MgguLL/Q7NblxhZUlTu9xSPqlsUO/y+X7dlU05jdhvyycD55DA==}
|
||||
engines: {node: ^18.0.0 || >=20.0.0}
|
||||
hasBin: true
|
||||
@@ -7430,7 +7437,7 @@ packages:
|
||||
terser:
|
||||
optional: true
|
||||
dependencies:
|
||||
'@types/node': 20.12.5
|
||||
'@types/node': 20.12.6
|
||||
esbuild: 0.20.2
|
||||
postcss: 8.4.38
|
||||
rollup: 4.13.0
|
||||
|
@@ -29,21 +29,23 @@ export const LayoutTraffic = () => {
|
||||
// setup log ws during layout
|
||||
useLogSetup();
|
||||
|
||||
const { connect, disconnect } = useWebsocket((event) => {
|
||||
const data = JSON.parse(event.data) as ITrafficItem;
|
||||
trafficRef.current?.appendData(data);
|
||||
setTraffic(data);
|
||||
});
|
||||
const trafficWs = useWebsocket(
|
||||
(event) => {
|
||||
const data = JSON.parse(event.data) as ITrafficItem;
|
||||
trafficRef.current?.appendData(data);
|
||||
setTraffic(data);
|
||||
},
|
||||
{ onError: () => setTraffic({ up: 0, down: 0 }), errorCount: 10 }
|
||||
);
|
||||
|
||||
useEffect(() => {
|
||||
if (!clashInfo || !pageVisible) return;
|
||||
|
||||
const { server = "", secret = "" } = clashInfo;
|
||||
connect(`ws://${server}/traffic?token=${encodeURIComponent(secret)}`);
|
||||
|
||||
return () => {
|
||||
disconnect();
|
||||
};
|
||||
trafficWs.connect(
|
||||
`ws://${server}/traffic?token=${encodeURIComponent(secret)}`
|
||||
);
|
||||
return () => trafficWs.disconnect();
|
||||
}, [clashInfo, pageVisible]);
|
||||
|
||||
/* --------- meta memory information --------- */
|
||||
@@ -54,7 +56,7 @@ export const LayoutTraffic = () => {
|
||||
(event) => {
|
||||
setMemory(JSON.parse(event.data));
|
||||
},
|
||||
{ onError: () => setMemory({ inuse: 0 }) }
|
||||
{ onError: () => setMemory({ inuse: 0 }), errorCount: 10 }
|
||||
);
|
||||
|
||||
useEffect(() => {
|
||||
|
@@ -6,6 +6,7 @@ import {
|
||||
providerHealthCheck,
|
||||
updateProxy,
|
||||
deleteConnection,
|
||||
getGroupProxyDelays,
|
||||
} from "@/services/api";
|
||||
import { Box } from "@mui/material";
|
||||
import { useProfiles } from "@/hooks/use-profiles";
|
||||
@@ -33,7 +34,7 @@ export const ProxyGroups = (props: Props) => {
|
||||
// 切换分组的节点代理
|
||||
const handleChangeProxy = useLockFn(
|
||||
async (group: IProxyGroupItem, proxy: IProxyItem) => {
|
||||
if (group.type !== "Selector" && group.type !== "Fallback") return;
|
||||
if (!["Selector", "URLTest", "Fallback"].includes(group.type)) return;
|
||||
|
||||
const { name, now } = group;
|
||||
await updateProxy(name, proxy.name);
|
||||
@@ -85,7 +86,11 @@ export const ProxyGroups = (props: Props) => {
|
||||
}
|
||||
|
||||
const names = proxies.filter((p) => !p!.provider).map((p) => p!.name);
|
||||
await delayManager.checkListDelay(names, groupName, timeout);
|
||||
|
||||
await Promise.race([
|
||||
delayManager.checkListDelay(names, groupName, timeout),
|
||||
getGroupProxyDelays(groupName, delayManager.getUrl(groupName), timeout), // 查询group delays 将清除fixed(不关注调用结果)
|
||||
]);
|
||||
|
||||
onProxies();
|
||||
});
|
||||
|
@@ -7,7 +7,7 @@ import delayManager from "@/services/delay";
|
||||
import { useVerge } from "@/hooks/use-verge";
|
||||
|
||||
interface Props {
|
||||
groupName: string;
|
||||
group: IProxyGroupItem;
|
||||
proxy: IProxyItem;
|
||||
selected: boolean;
|
||||
showType?: boolean;
|
||||
@@ -16,7 +16,7 @@ interface Props {
|
||||
|
||||
// 多列布局
|
||||
export const ProxyItemMini = (props: Props) => {
|
||||
const { groupName, proxy, selected, showType = true, onClick } = props;
|
||||
const { group, proxy, selected, showType = true, onClick } = props;
|
||||
|
||||
// -1/<=0 为 不显示
|
||||
// -2 为 loading
|
||||
@@ -25,21 +25,21 @@ export const ProxyItemMini = (props: Props) => {
|
||||
const timeout = verge?.default_latency_timeout || 10000;
|
||||
|
||||
useEffect(() => {
|
||||
delayManager.setListener(proxy.name, groupName, setDelay);
|
||||
delayManager.setListener(proxy.name, group.name, setDelay);
|
||||
|
||||
return () => {
|
||||
delayManager.removeListener(proxy.name, groupName);
|
||||
delayManager.removeListener(proxy.name, group.name);
|
||||
};
|
||||
}, [proxy.name, groupName]);
|
||||
}, [proxy.name, group.name]);
|
||||
|
||||
useEffect(() => {
|
||||
if (!proxy) return;
|
||||
setDelay(delayManager.getDelayFix(proxy, groupName));
|
||||
setDelay(delayManager.getDelayFix(proxy, group.name));
|
||||
}, [proxy]);
|
||||
|
||||
const onDelay = useLockFn(async () => {
|
||||
setDelay(-2);
|
||||
setDelay(await delayManager.checkDelay(proxy.name, groupName, timeout));
|
||||
setDelay(await delayManager.checkDelay(proxy.name, group.name, timeout));
|
||||
});
|
||||
|
||||
return (
|
||||
@@ -65,6 +65,12 @@ export const ProxyItemMini = (props: Props) => {
|
||||
"&:hover .the-check": { display: !showDelay ? "block" : "none" },
|
||||
"&:hover .the-delay": { display: showDelay ? "block" : "none" },
|
||||
"&:hover .the-icon": { display: "none" },
|
||||
"& .the-pin, & .the-unpin": {
|
||||
position: "absolute",
|
||||
top: "-8px",
|
||||
right: "-8px",
|
||||
},
|
||||
"& .the-unpin": { filter: "grayscale(1)" },
|
||||
"&.Mui-selected": {
|
||||
width: `calc(100% + 3px)`,
|
||||
marginLeft: `-3px`,
|
||||
@@ -147,14 +153,12 @@ export const ProxyItemMini = (props: Props) => {
|
||||
</Box>
|
||||
)}
|
||||
</Box>
|
||||
|
||||
<Box sx={{ ml: 0.5, color: "primary.main" }}>
|
||||
{delay === -2 && (
|
||||
<Widget>
|
||||
<BaseLoading />
|
||||
</Widget>
|
||||
)}
|
||||
|
||||
{!proxy.provider && delay !== -2 && (
|
||||
// provider的节点不支持检测
|
||||
<Widget
|
||||
@@ -193,7 +197,6 @@ export const ProxyItemMini = (props: Props) => {
|
||||
{delayManager.formatDelay(delay, timeout)}
|
||||
</Widget>
|
||||
)}
|
||||
|
||||
{delay !== -2 && delay <= 0 && selected && (
|
||||
// 展示已选择的icon
|
||||
<CheckCircleOutlineRounded
|
||||
@@ -202,6 +205,13 @@ export const ProxyItemMini = (props: Props) => {
|
||||
/>
|
||||
)}
|
||||
</Box>
|
||||
|
||||
{group.fixed && group.fixed === proxy.name && (
|
||||
// 展示fixed状态
|
||||
<span className={proxy.name === group.now ? "the-pin" : "the-unpin"}>
|
||||
📌
|
||||
</span>
|
||||
)}
|
||||
</ListItemButton>
|
||||
);
|
||||
};
|
||||
|
@@ -17,7 +17,7 @@ import delayManager from "@/services/delay";
|
||||
import { useVerge } from "@/hooks/use-verge";
|
||||
|
||||
interface Props {
|
||||
groupName: string;
|
||||
group: IProxyGroupItem;
|
||||
proxy: IProxyItem;
|
||||
selected: boolean;
|
||||
showType?: boolean;
|
||||
@@ -44,7 +44,7 @@ const TypeBox = styled(Box)(({ theme }) => ({
|
||||
}));
|
||||
|
||||
export const ProxyItem = (props: Props) => {
|
||||
const { groupName, proxy, selected, showType = true, sx, onClick } = props;
|
||||
const { group, proxy, selected, showType = true, sx, onClick } = props;
|
||||
|
||||
// -1/<=0 为 不显示
|
||||
// -2 为 loading
|
||||
@@ -52,21 +52,21 @@ export const ProxyItem = (props: Props) => {
|
||||
const { verge } = useVerge();
|
||||
const timeout = verge?.default_latency_timeout || 10000;
|
||||
useEffect(() => {
|
||||
delayManager.setListener(proxy.name, groupName, setDelay);
|
||||
delayManager.setListener(proxy.name, group.name, setDelay);
|
||||
|
||||
return () => {
|
||||
delayManager.removeListener(proxy.name, groupName);
|
||||
delayManager.removeListener(proxy.name, group.name);
|
||||
};
|
||||
}, [proxy.name, groupName]);
|
||||
}, [proxy.name, group.name]);
|
||||
|
||||
useEffect(() => {
|
||||
if (!proxy) return;
|
||||
setDelay(delayManager.getDelayFix(proxy, groupName));
|
||||
setDelay(delayManager.getDelayFix(proxy, group.name));
|
||||
}, [proxy]);
|
||||
|
||||
const onDelay = useLockFn(async () => {
|
||||
setDelay(-2);
|
||||
setDelay(await delayManager.checkDelay(proxy.name, groupName, timeout));
|
||||
setDelay(await delayManager.checkDelay(proxy.name, group.name, timeout));
|
||||
});
|
||||
|
||||
return (
|
||||
|
@@ -142,7 +142,7 @@ export const ProxyRender = (props: RenderProps) => {
|
||||
if (type === 2 && !group.hidden) {
|
||||
return (
|
||||
<ProxyItem
|
||||
groupName={group.name}
|
||||
group={group}
|
||||
proxy={proxy!}
|
||||
selected={group.now === proxy?.name}
|
||||
showType={headState?.showType}
|
||||
@@ -186,7 +186,7 @@ export const ProxyRender = (props: RenderProps) => {
|
||||
{proxyCol?.map((proxy) => (
|
||||
<ProxyItemMini
|
||||
key={item.key + proxy.name}
|
||||
groupName={group.name}
|
||||
group={group}
|
||||
proxy={proxy!}
|
||||
selected={group.now === proxy.name}
|
||||
showType={headState?.showType}
|
||||
|
@@ -5,7 +5,8 @@ export type WsMsgFn = (event: MessageEvent<any>) => void;
|
||||
export interface WsOptions {
|
||||
errorCount?: number; // default is 5
|
||||
retryInterval?: number; // default is 2500
|
||||
onError?: () => void;
|
||||
onError?: (event: Event) => void;
|
||||
onClose?: (event: CloseEvent) => void;
|
||||
}
|
||||
|
||||
export const useWebsocket = (onMessage: WsMsgFn, options?: WsOptions) => {
|
||||
@@ -33,17 +34,23 @@ export const useWebsocket = (onMessage: WsMsgFn, options?: WsOptions) => {
|
||||
const ws = new WebSocket(url);
|
||||
wsRef.current = ws;
|
||||
|
||||
ws.addEventListener("message", onMessage);
|
||||
ws.addEventListener("error", () => {
|
||||
ws.addEventListener("message", (event) => {
|
||||
errorCount = 0; // reset counter
|
||||
onMessage(event);
|
||||
});
|
||||
ws.addEventListener("error", (event) => {
|
||||
errorCount -= 1;
|
||||
|
||||
if (errorCount >= 0) {
|
||||
timerRef.current = setTimeout(connectHelper, 2500);
|
||||
} else {
|
||||
disconnect();
|
||||
options?.onError?.();
|
||||
options?.onError?.(event);
|
||||
}
|
||||
});
|
||||
ws.addEventListener("close", (event) => {
|
||||
options?.onClose?.(event);
|
||||
});
|
||||
};
|
||||
|
||||
connectHelper();
|
||||
|
@@ -75,9 +75,13 @@ export const getRules = async () => {
|
||||
};
|
||||
|
||||
/// Get Proxy delay
|
||||
export const getProxyDelay = async (name: string, url?: string) => {
|
||||
export const getProxyDelay = async (
|
||||
name: string,
|
||||
url?: string,
|
||||
timeout?: number
|
||||
) => {
|
||||
const params = {
|
||||
timeout: 10000,
|
||||
timeout: timeout || 10000,
|
||||
url: url || "http://1.1.1.1",
|
||||
};
|
||||
const instance = await getAxios();
|
||||
@@ -237,3 +241,21 @@ export const closeAllConnections = async () => {
|
||||
const instance = await getAxios();
|
||||
await instance.delete<any, any>(`/connections`);
|
||||
};
|
||||
|
||||
// Get Group Proxy Delays
|
||||
export const getGroupProxyDelays = async (
|
||||
groupName: string,
|
||||
url?: string,
|
||||
timeout?: number
|
||||
) => {
|
||||
const params = {
|
||||
timeout: timeout || 10000,
|
||||
url: url || "http://1.1.1.1",
|
||||
};
|
||||
const instance = await getAxios();
|
||||
const result = await instance.get(
|
||||
`/group/${encodeURIComponent(groupName)}/delay`,
|
||||
{ params }
|
||||
);
|
||||
return result as any as Record<string, number>;
|
||||
};
|
||||
|
1
clash-verge-rev/src/services/types.d.ts
vendored
1
clash-verge-rev/src/services/types.d.ts
vendored
@@ -64,6 +64,7 @@ interface IProxyItem {
|
||||
hidden?: boolean;
|
||||
icon?: string;
|
||||
provider?: string; // 记录是否来自provider
|
||||
fixed?: string; // 记录固定(优先)的节点
|
||||
}
|
||||
|
||||
type IProxyGroupItem = Omit<IProxyItem, "all"> & {
|
||||
|
@@ -159,6 +159,7 @@ mmc_get_mac_ascii() {
|
||||
part=$(find_mmc_part "$part_name")
|
||||
if [ -z "$part" ]; then
|
||||
echo "mmc_get_mac_ascii: partition $part_name not found!" >&2
|
||||
return
|
||||
fi
|
||||
|
||||
get_mac_ascii "$part" "$key"
|
||||
|
@@ -3,94 +3,99 @@
|
||||
# Copyright (C) 2021-2023 ImmortalWrt.org
|
||||
|
||||
include $(TOPDIR)/rules.mk
|
||||
include $(INCLUDE_DIR)/trusted-firmware-a.mk
|
||||
|
||||
PKG_NAME:=rkbin
|
||||
PKG_NAME:=arm-trusted-firmware-rockchip-vendor
|
||||
PKG_RELEASE:=1
|
||||
|
||||
PKG_SOURCE_PROTO:=git
|
||||
PKG_SOURCE_URL:=https://gitlab.com/rk3588_linux/rk/rkbin.git
|
||||
PKG_SOURCE_DATE:=2023-08-04
|
||||
PKG_SOURCE_VERSION:=1a417bbf7d05c3491ee9613be12a9905fbb8ccb7
|
||||
PKG_MIRROR_HASH:=5ca2f3b759759ed7c5be70e7ec5e1f0c8d82b6db8265e83f637a55b2b3d61fe5
|
||||
PKG_SOURCE_URL:=https://github.com/rockchip-linux/rkbin.git
|
||||
PKG_SOURCE_DATE:=2024-02-22
|
||||
PKG_SOURCE_VERSION:=a2a0b89b6c8c612dca5ed9ed8a68db8a07f68bc0
|
||||
PKG_MIRROR_HASH:=ada1db5d73938c61847b3608844bb5a95d26a92574677e21322327d4438db19f
|
||||
|
||||
PKG_MAINTAINER:=Tianling Shen <cnsztl@immortalwrt.org>
|
||||
|
||||
MAKE_PATH:=$(PKG_NAME)
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
include ./atf-version.mk
|
||||
|
||||
define Trusted-Firmware-A/Default
|
||||
NAME:=Rockchip $(1)
|
||||
BUILD_TARGET:=rockchip
|
||||
define Package/arm-trusted-firmware-rockchip-vendor
|
||||
SECTION:=boot
|
||||
CATEGORY:=Boot Loaders
|
||||
TITLE:=ARM Trusted Firmware for Rockchip
|
||||
endef
|
||||
|
||||
define Trusted-Firmware-A/rk3328
|
||||
ATF:=rk33/$(RK3328_ATF)
|
||||
DDR:=rk33/$(RK3328_DDR)
|
||||
LOADER:=rk33/$(RK3328_LOADER)
|
||||
define Package/arm-trusted-firmware-rk3328
|
||||
$(Package/arm-trusted-firmware-rockchip-vendor)
|
||||
DEPENDS:=@TARGET_rockchip_armv8
|
||||
VARIANT:=rk3328
|
||||
endef
|
||||
|
||||
define Trusted-Firmware-A/rk3399
|
||||
ATF:=rk33/$(RK3399_ATF)
|
||||
DDR:=rk33/$(RK3399_DDR)
|
||||
LOADER:=rk33/$(RK3399_LOADER)
|
||||
define Package/arm-trusted-firmware-rk3399
|
||||
$(Package/arm-trusted-firmware-rockchip-vendor)
|
||||
DEPENDS:=@TARGET_rockchip_armv8
|
||||
VARIANT:=rk3399
|
||||
endef
|
||||
|
||||
define Trusted-Firmware-A/rk3528
|
||||
ATF:=rk35/$(RK3528_ATF)
|
||||
DDR:=rk35/$(RK3528_DDR)
|
||||
define Package/arm-trusted-firmware-rk3528
|
||||
$(Package/arm-trusted-firmware-rockchip-vendor)
|
||||
DEPENDS:=@TARGET_rockchip_armv8
|
||||
VARIANT:=rk3528
|
||||
endef
|
||||
|
||||
define Trusted-Firmware-A/rk3566
|
||||
ATF:=rk35/$(RK3568_ATF)
|
||||
DDR:=rk35/$(RK3566_DDR)
|
||||
define Package/arm-trusted-firmware-rk3566
|
||||
$(Package/arm-trusted-firmware-rockchip-vendor)
|
||||
DEPENDS:=@TARGET_rockchip_armv8
|
||||
VARIANT:=rk3566
|
||||
endef
|
||||
|
||||
define Trusted-Firmware-A/rk3568
|
||||
ATF:=rk35/$(RK3568_ATF)
|
||||
DDR:=rk35/$(RK3568_DDR)
|
||||
define Package/arm-trusted-firmware-rk3568
|
||||
$(Package/arm-trusted-firmware-rockchip-vendor)
|
||||
DEPENDS:=@TARGET_rockchip_armv8
|
||||
VARIANT:=rk3568
|
||||
endef
|
||||
|
||||
define Trusted-Firmware-A/rk3588
|
||||
ATF:=rk35/$(RK3588_ATF)
|
||||
DDR:=rk35/$(RK3588_DDR)
|
||||
define Package/arm-trusted-firmware-rk3588
|
||||
$(Package/arm-trusted-firmware-rockchip-vendor)
|
||||
DEPENDS:=@TARGET_rockchip_armv8
|
||||
VARIANT:=rk3588
|
||||
endef
|
||||
|
||||
TFA_TARGETS:= \
|
||||
rk3328 \
|
||||
rk3399 \
|
||||
rk3528 \
|
||||
rk3566 \
|
||||
rk3568 \
|
||||
rk3588
|
||||
define Build/Configure
|
||||
$(SED) 's,$$$$(PKG_BUILD_DIR),$(PKG_BUILD_DIR),g' $(PKG_BUILD_DIR)/trust.ini
|
||||
$(SED) 's,$$$$(VARIANT),$(BUILD_VARIANT),g' $(PKG_BUILD_DIR)/trust.ini
|
||||
$(call Build/Configure/Default)
|
||||
endef
|
||||
|
||||
define Build/Compile
|
||||
# This comment is the workaround for "extraneous 'endif'" error
|
||||
ifneq ($(LOADER),)
|
||||
( \
|
||||
pushd $(PKG_BUILD_DIR) ; \
|
||||
$(SED) 's,$$$$(PKG_BUILD_DIR),$(PKG_BUILD_DIR),g' trust.ini ; \
|
||||
$(SED) 's,$$$$(VARIANT),$(BUILD_VARIANT),g' trust.ini ; \
|
||||
./tools/mkimage -n $(BUILD_VARIANT) -T rksd -d bin/$(DDR) \
|
||||
$(BUILD_VARIANT)-idbloader.bin ; \
|
||||
cat bin/$(LOADER) >> $(BUILD_VARIANT)-idbloader.bin ; \
|
||||
./tools/trust_merger --replace bl31.elf bin/$(ATF) trust.ini ; \
|
||||
popd ; \
|
||||
)
|
||||
endif
|
||||
$(CURDIR)/pack-firmware.sh build $(BUILD_VARIANT) '$(PKG_BUILD_DIR)'
|
||||
endef
|
||||
|
||||
define Package/trusted-firmware-a/install
|
||||
$(INSTALL_DIR) $(STAGING_DIR_IMAGE)
|
||||
|
||||
$(CP) $(PKG_BUILD_DIR)/bin/$(ATF) $(STAGING_DIR_IMAGE)/
|
||||
ifneq ($(LOADER),)
|
||||
$(CP) $(PKG_BUILD_DIR)/tools/loaderimage $(STAGING_DIR_IMAGE)/
|
||||
$(CP) $(PKG_BUILD_DIR)/$(BUILD_VARIANT)-idbloader.bin $(STAGING_DIR_IMAGE)/
|
||||
$(CP) $(PKG_BUILD_DIR)/$(BUILD_VARIANT)-trust.bin $(STAGING_DIR_IMAGE)/
|
||||
else
|
||||
$(CP) $(PKG_BUILD_DIR)/bin/$(DDR) $(STAGING_DIR_IMAGE)/
|
||||
endif
|
||||
define Build/InstallDev
|
||||
$(CURDIR)/pack-firmware.sh install $(BUILD_VARIANT) '$(PKG_BUILD_DIR)' '$(STAGING_DIR_IMAGE)'
|
||||
endef
|
||||
|
||||
$(eval $(call BuildPackage/Trusted-Firmware-A))
|
||||
define Package/arm-trusted-firmware-rk3328/install
|
||||
endef
|
||||
|
||||
define Package/arm-trusted-firmware-rk3399/install
|
||||
endef
|
||||
|
||||
define Package/arm-trusted-firmware-rk3528/install
|
||||
endef
|
||||
|
||||
define Package/arm-trusted-firmware-rk3566/install
|
||||
endef
|
||||
|
||||
define Package/arm-trusted-firmware-rk3568/install
|
||||
endef
|
||||
|
||||
define Package/arm-trusted-firmware-rk3588/install
|
||||
endef
|
||||
|
||||
$(eval $(call BuildPackage,arm-trusted-firmware-rk3328))
|
||||
$(eval $(call BuildPackage,arm-trusted-firmware-rk3399))
|
||||
$(eval $(call BuildPackage,arm-trusted-firmware-rk3528))
|
||||
$(eval $(call BuildPackage,arm-trusted-firmware-rk3566))
|
||||
$(eval $(call BuildPackage,arm-trusted-firmware-rk3568))
|
||||
$(eval $(call BuildPackage,arm-trusted-firmware-rk3588))
|
||||
|
@@ -14,4 +14,4 @@ RK3568_DDR:=rk3568_ddr_1560MHz_v1.18.bin
|
||||
RK3566_DDR:=rk3566_ddr_1056MHz_v1.18.bin
|
||||
|
||||
RK3588_ATF:=rk3588_bl31_v1.41.elf
|
||||
RK3588_DDR:=rk3588_ddr_lp4_2112MHz_lp5_2736MHz_v1.13.bin
|
||||
RK3588_DDR:=rk3588_ddr_lp4_2112MHz_lp5_2736MHz_v1.13.bin
|
||||
|
68
lede/package/boot/arm-trusted-firmware-rockchip-vendor/pack-firmware.sh
Executable file
68
lede/package/boot/arm-trusted-firmware-rockchip-vendor/pack-firmware.sh
Executable file
@@ -0,0 +1,68 @@
|
||||
#!/bin/bash
|
||||
# Copyright (C) 2021 ImmortalWrt.org
|
||||
|
||||
ACTION="$1"
|
||||
VARIANT="$2"
|
||||
PKG_BUILD_DIR="$3"
|
||||
STAGING_DIR_IMAGE="$4"
|
||||
|
||||
case "$VARIANT" in
|
||||
"rk3328")
|
||||
ATF="rk33/rk322xh_bl31_v1.49.elf"
|
||||
DDR="rk33/rk3328_ddr_333MHz_v1.19.bin"
|
||||
LOADER="rk33/rk322xh_miniloader_v2.50.bin"
|
||||
;;
|
||||
"rk3399")
|
||||
ATF="rk33/rk3399_bl31_v1.36.elf"
|
||||
DDR="rk33/rk3399_ddr_800MHz_v1.30.bin"
|
||||
LOADER="rk33/rk3399_miniloader_v1.30.bin"
|
||||
;;
|
||||
"rk3528")
|
||||
ATF="rk35/rk3528_bl31_v1.17.elf"
|
||||
DDR="rk35/rk3528_ddr_1056MHz_v1.09.bin"
|
||||
;;
|
||||
"rk3566")
|
||||
ATF="rk35/rk3568_bl31_v1.44.elf"
|
||||
DDR="rk35/rk3566_ddr_1056MHz_v1.21.bin"
|
||||
;;
|
||||
"rk3568")
|
||||
ATF="rk35/rk3568_bl31_v1.44.elf"
|
||||
DDR="rk35/rk3568_ddr_1560MHz_v1.21.bin"
|
||||
;;
|
||||
"rk3588")
|
||||
ATF="rk35/rk3588_bl31_v1.45.elf"
|
||||
DDR="rk35/rk3588_ddr_lp4_2112MHz_lp5_2400MHz_v1.16.bin"
|
||||
;;
|
||||
*)
|
||||
echo -e "Not compatible with your platform: $VARIANT."
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
set -x
|
||||
if [ "$ACTION" == "build" ]; then
|
||||
case "$VARIANT" in
|
||||
rk33*)
|
||||
mkimage -n "$VARIANT" -T "rksd" -d "$PKG_BUILD_DIR/bin/$DDR" "$PKG_BUILD_DIR/$VARIANT-idbloader.bin"
|
||||
cat "$PKG_BUILD_DIR/bin/$LOADER" >> "$PKG_BUILD_DIR/$VARIANT-idbloader.bin"
|
||||
"$PKG_BUILD_DIR/tools/trust_merger" --replace "bl31.elf" "$PKG_BUILD_DIR/bin/$ATF" "$PKG_BUILD_DIR/trust.ini"
|
||||
;;
|
||||
esac
|
||||
elif [ "$ACTION" == "install" ]; then
|
||||
mkdir -p "$STAGING_DIR_IMAGE"
|
||||
cp -fp "$PKG_BUILD_DIR/bin/$ATF" "$STAGING_DIR_IMAGE"/
|
||||
case "$VARIANT" in
|
||||
rk33*)
|
||||
cp -fp "$PKG_BUILD_DIR/tools/loaderimage" "$STAGING_DIR_IMAGE"/
|
||||
cp -fp "$PKG_BUILD_DIR/$VARIANT-idbloader.bin" "$STAGING_DIR_IMAGE"/
|
||||
cp -fp "$PKG_BUILD_DIR/$VARIANT-trust.bin" "$STAGING_DIR_IMAGE"/
|
||||
;;
|
||||
rk35*)
|
||||
cp -fp "$PKG_BUILD_DIR/bin/$DDR" "$STAGING_DIR_IMAGE"/
|
||||
;;
|
||||
esac
|
||||
else
|
||||
echo -e "Unknown operation: $ACTION."
|
||||
exit 1
|
||||
fi
|
||||
set +x
|
@@ -29,7 +29,7 @@ define U-Boot/nanopi-r2c-rk3328
|
||||
NAME:=NanoPi R2C
|
||||
BUILD_DEVICES:= \
|
||||
friendlyarm_nanopi-r2c
|
||||
DEPENDS:=+PACKAGE_u-boot-nanopi-r2c-rk3328:trusted-firmware-a-rk3328
|
||||
DEPENDS:=+PACKAGE_u-boot-nanopi-r2c-rk3328:arm-trusted-firmware-rk3328
|
||||
PKG_BUILD_DEPENDS:=arm-trusted-firmware-rockchip-vendor
|
||||
ATF:=rk322xh_bl31_v1.49.elf
|
||||
USE_RKBIN:=1
|
||||
@@ -41,7 +41,7 @@ define U-Boot/nanopi-r2s-rk3328
|
||||
BUILD_DEVICES:= \
|
||||
friendlyarm_nanopi-r2s \
|
||||
friendlyarm_nanopi-neo3
|
||||
DEPENDS:=+PACKAGE_u-boot-nanopi-r2s-rk3328:trusted-firmware-a-rk3328
|
||||
DEPENDS:=+PACKAGE_u-boot-nanopi-r2s-rk3328:arm-trusted-firmware-rk3328
|
||||
PKG_BUILD_DEPENDS:=arm-trusted-firmware-rockchip-vendor
|
||||
ATF:=rk322xh_bl31_v1.49.elf
|
||||
USE_RKBIN:=1
|
||||
@@ -52,7 +52,7 @@ define U-Boot/orangepi-r1-plus-rk3328
|
||||
NAME:=Orange Pi R1 Plus
|
||||
BUILD_DEVICES:= \
|
||||
xunlong_orangepi-r1-plus
|
||||
DEPENDS:=+PACKAGE_u-boot-orangepi-r1-plus-rk3328:trusted-firmware-a-rk3328
|
||||
DEPENDS:=+PACKAGE_u-boot-orangepi-r1-plus-rk3328:arm-trusted-firmware-rk3328
|
||||
PKG_BUILD_DEPENDS:=arm-trusted-firmware-rockchip-vendor
|
||||
ATF:=rk322xh_bl31_v1.49.elf
|
||||
USE_RKBIN:=1
|
||||
@@ -63,7 +63,7 @@ define U-Boot/orangepi-r1-plus-lts-rk3328
|
||||
NAME:=Orange Pi R1 Plus LTS
|
||||
BUILD_DEVICES:= \
|
||||
xunlong_orangepi-r1-plus-lts
|
||||
DEPENDS:=+PACKAGE_u-boot-orangepi-r1-plus-lts-rk3328:trusted-firmware-a-rk3328
|
||||
DEPENDS:=+PACKAGE_u-boot-orangepi-r1-plus-lts-rk3328:arm-trusted-firmware-rk3328
|
||||
PKG_BUILD_DEPENDS:=arm-trusted-firmware-rockchip-vendor
|
||||
ATF:=rk322xh_bl31_v1.49.elf
|
||||
USE_RKBIN:=1
|
||||
@@ -87,7 +87,7 @@ define U-Boot/nanopi-r4s-rk3399
|
||||
NAME:=NanoPi R4S
|
||||
BUILD_DEVICES:= \
|
||||
friendlyarm_nanopi-r4s
|
||||
DEPENDS:=+PACKAGE_u-boot-nanopi-r4s-rk3399:trusted-firmware-a-rk3399
|
||||
DEPENDS:=+PACKAGE_u-boot-nanopi-r4s-rk3399:arm-trusted-firmware-rk3399
|
||||
PKG_BUILD_DEPENDS:=arm-trusted-firmware-rockchip-vendor
|
||||
ATF:=rk3399_bl31_v1.36.elf
|
||||
USE_RKBIN:=1
|
||||
@@ -98,7 +98,7 @@ define U-Boot/nanopi-r4se-rk3399
|
||||
NAME:=NanoPi R4SE
|
||||
BUILD_DEVICES:= \
|
||||
friendlyarm_nanopi-r4se
|
||||
DEPENDS:=+PACKAGE_u-boot-nanopi-r4se-rk3399:trusted-firmware-a-rk3399
|
||||
DEPENDS:=+PACKAGE_u-boot-nanopi-r4se-rk3399:arm-trusted-firmware-rk3399
|
||||
PKG_BUILD_DEPENDS:=arm-trusted-firmware-rockchip-vendor
|
||||
ATF:=rk3399_bl31_v1.36.elf
|
||||
USE_RKBIN:=1
|
||||
@@ -129,7 +129,7 @@ define U-Boot/rongpin-king3399-rk3399
|
||||
NAME:=Rongpin King3399
|
||||
BUILD_DEVICES:= \
|
||||
rongpin_king3399
|
||||
DEPENDS:=+PACKAGE_u-boot-rongpin-king3399-rk3399:trusted-firmware-a-rk3399
|
||||
DEPENDS:=+PACKAGE_u-boot-rongpin-king3399-rk3399:arm-trusted-firmware-rk3399
|
||||
PKG_BUILD_DEPENDS:=arm-trusted-firmware-rockchip-vendor
|
||||
ATF:=rk3399_bl31_v1.36.elf
|
||||
USE_RKBIN:=1
|
||||
@@ -140,7 +140,7 @@ define U-Boot/rocktech-mpc1903-rk3399
|
||||
NAME:=Rocktech MPC1903
|
||||
BUILD_DEVICES:= \
|
||||
rocktech_mpc1903
|
||||
DEPENDS:=+PACKAGE_u-boot-rocktech-mpc1903-rk3399:trusted-firmware-a-rk3399
|
||||
DEPENDS:=+PACKAGE_u-boot-rocktech-mpc1903-rk3399:arm-trusted-firmware-rk3399
|
||||
PKG_BUILD_DEPENDS:=arm-trusted-firmware-rockchip-vendor
|
||||
ATF:=rk3399_bl31_v1.36.elf
|
||||
USE_RKBIN:=1
|
||||
@@ -151,7 +151,7 @@ define U-Boot/sharevdi-h3399pc-rk3399
|
||||
NAME:=SHAREVDI H3399PC
|
||||
BUILD_DEVICES:= \
|
||||
sharevdi_h3399pc
|
||||
DEPENDS:=+PACKAGE_u-boot-sharevdi-h3399pc-rk3399:trusted-firmware-a-rk3399
|
||||
DEPENDS:=+PACKAGE_u-boot-sharevdi-h3399pc-rk3399:arm-trusted-firmware-rk3399
|
||||
PKG_BUILD_DEPENDS:=arm-trusted-firmware-rockchip-vendor
|
||||
ATF:=rk3399_bl31_v1.36.elf
|
||||
USE_RKBIN:=1
|
||||
@@ -162,7 +162,7 @@ define U-Boot/dilusense-dlfr100-rk3399
|
||||
NAME:=Dilusense DLFR100
|
||||
BUILD_DEVICES:= \
|
||||
dilusense_dlfr100
|
||||
DEPENDS:=+PACKAGE_u-boot-dilusense-dlfr100-rk3399:trusted-firmware-a-rk3399
|
||||
DEPENDS:=+PACKAGE_u-boot-dilusense-dlfr100-rk3399:arm-trusted-firmware-rk3399
|
||||
PKG_BUILD_DEPENDS:=arm-trusted-firmware-rockchip-vendor
|
||||
ATF:=rk3399_bl31_v1.36.elf
|
||||
USE_RKBIN:=1
|
||||
@@ -173,7 +173,7 @@ define U-Boot/xiaobao-nas-v1-rk3399
|
||||
NAME:=Codinge Xiaobao NAS-I
|
||||
BUILD_DEVICES:= \
|
||||
codinge_xiaobao-nas-v1
|
||||
DEPENDS:=+PACKAGE_u-boot-xiaobao-nas-v1-rk3399:trusted-firmware-a-rk3399
|
||||
DEPENDS:=+PACKAGE_u-boot-xiaobao-nas-v1-rk3399:arm-trusted-firmware-rk3399
|
||||
PKG_BUILD_DEPENDS:=arm-trusted-firmware-rockchip-vendor
|
||||
ATF:=rk3399_bl31_v1.36.elf
|
||||
USE_RKBIN:=1
|
||||
@@ -186,7 +186,7 @@ define U-Boot/panther-x2-rk3566
|
||||
NAME:=Panther X2
|
||||
BUILD_DEVICES:= \
|
||||
panther_x2
|
||||
DEPENDS:=+PACKAGE_u-boot-panther-x2-rk3566:trusted-firmware-a-rk3566
|
||||
DEPENDS:=+PACKAGE_u-boot-panther-x2-rk3566:arm-trusted-firmware-rk3566
|
||||
PKG_BUILD_DEPENDS:=arm-trusted-firmware-rockchip-vendor
|
||||
ATF:=rk3568_bl31_v1.43.elf
|
||||
DDR:=rk3566_ddr_1056MHz_v1.18.bin
|
||||
@@ -199,7 +199,7 @@ define U-Boot/lyt-t68m-rk3568
|
||||
NAME:=LYT T68M
|
||||
BUILD_DEVICES:= \
|
||||
lyt_t68m
|
||||
DEPENDS:=+PACKAGE_u-boot-lyt-t68m-rk3568:trusted-firmware-a-rk3568
|
||||
DEPENDS:=+PACKAGE_u-boot-lyt-t68m-rk3568:arm-trusted-firmware-rk3568
|
||||
PKG_BUILD_DEPENDS:=arm-trusted-firmware-rockchip-vendor
|
||||
ATF:=rk3568_bl31_v1.43.elf
|
||||
DDR:=rk3568_ddr_1560MHz_v1.18.bin
|
||||
@@ -211,7 +211,7 @@ define U-Boot/mrkaio-m68s-rk3568
|
||||
BUILD_DEVICES:= \
|
||||
ezpro_mrkaio-m68s \
|
||||
ezpro_mrkaio-m68s-plus
|
||||
DEPENDS:=+PACKAGE_u-boot-mrkaio-m68s-rk3568:trusted-firmware-a-rk3568
|
||||
DEPENDS:=+PACKAGE_u-boot-mrkaio-m68s-rk3568:arm-trusted-firmware-rk3568
|
||||
PKG_BUILD_DEPENDS:=arm-trusted-firmware-rockchip-vendor
|
||||
ATF:=rk3568_bl31_v1.43.elf
|
||||
DDR:=rk3568_ddr_1560MHz_v1.18.bin
|
||||
@@ -223,7 +223,7 @@ define U-Boot/nanopi-r5s-rk3568
|
||||
BUILD_DEVICES:= \
|
||||
friendlyarm_nanopi-r5c \
|
||||
friendlyarm_nanopi-r5s
|
||||
DEPENDS:=+PACKAGE_u-boot-nanopi-r5s-rk3568:trusted-firmware-a-rk3568
|
||||
DEPENDS:=+PACKAGE_u-boot-nanopi-r5s-rk3568:arm-trusted-firmware-rk3568
|
||||
PKG_BUILD_DEPENDS:=arm-trusted-firmware-rockchip-vendor
|
||||
ATF:=rk3568_bl31_v1.43.elf
|
||||
DDR:=rk3568_ddr_1560MHz_v1.18.bin
|
||||
@@ -236,7 +236,7 @@ define U-Boot/opc-h68k-rk3568
|
||||
hinlink_opc-h66k \
|
||||
hinlink_opc-h68k \
|
||||
hinlink_opc-h69k
|
||||
DEPENDS:=+PACKAGE_u-boot-opc-h68k-rk3568:trusted-firmware-a-rk3568
|
||||
DEPENDS:=+PACKAGE_u-boot-opc-h68k-rk3568:arm-trusted-firmware-rk3568
|
||||
PKG_BUILD_DEPENDS:=arm-trusted-firmware-rockchip-vendor
|
||||
ATF:=rk3568_bl31_v1.43.elf
|
||||
DDR:=rk3568_ddr_1560MHz_v1.18.bin
|
||||
@@ -247,7 +247,7 @@ define U-Boot/photonicat-rk3568
|
||||
NAME:=Ariaboard Photonicat
|
||||
BUILD_DEVICES:= \
|
||||
ariaboard_photonicat
|
||||
DEPENDS:=+PACKAGE_u-boot-photonicat-rk3568:trusted-firmware-a-rk3568
|
||||
DEPENDS:=+PACKAGE_u-boot-photonicat-rk3568:arm-trusted-firmware-rk3568
|
||||
PKG_BUILD_DEPENDS:=arm-trusted-firmware-rockchip-vendor
|
||||
ATF:=rk3568_bl31_v1.43.elf
|
||||
DDR:=rk3568_ddr_1560MHz_v1.18.bin
|
||||
@@ -258,7 +258,7 @@ define U-Boot/radxa-e25-rk3568
|
||||
NAME:=Radxa E25
|
||||
BUILD_DEVICES:= \
|
||||
radxa_e25
|
||||
DEPENDS:=+PACKAGE_u-boot-radxa-e25-rk3568:trusted-firmware-a-rk3568
|
||||
DEPENDS:=+PACKAGE_u-boot-radxa-e25-rk3568:arm-trusted-firmware-rk3568
|
||||
PKG_BUILD_DEPENDS:=arm-trusted-firmware-rockchip-vendor
|
||||
ATF:=rk3568_bl31_v1.43.elf
|
||||
DDR:=rk3568_ddr_1560MHz_v1.18.bin
|
||||
@@ -269,7 +269,7 @@ define U-Boot/rock-3a-rk3568
|
||||
NAME:=ROCK3 Model A
|
||||
BUILD_DEVICES:= \
|
||||
radxa_rock-3a
|
||||
DEPENDS:=+PACKAGE_u-boot-rock-3a-rk3568:trusted-firmware-a-rk3568
|
||||
DEPENDS:=+PACKAGE_u-boot-rock-3a-rk3568:arm-trusted-firmware-rk3568
|
||||
PKG_BUILD_DEPENDS:=arm-trusted-firmware-rockchip-vendor
|
||||
ATF:=rk3568_bl31_v1.43.elf
|
||||
DDR:=rk3568_ddr_1560MHz_v1.18.bin
|
||||
@@ -281,7 +281,7 @@ define U-Boot/r66s-rk3568
|
||||
BUILD_DEVICES:= \
|
||||
fastrhino_r66s \
|
||||
fastrhino_r68s
|
||||
DEPENDS:=+PACKAGE_u-boot-r66s-rk3568:trusted-firmware-a-rk3568
|
||||
DEPENDS:=+PACKAGE_u-boot-r66s-rk3568:arm-trusted-firmware-rk3568
|
||||
PKG_BUILD_DEPENDS:=arm-trusted-firmware-rockchip-vendor
|
||||
ATF:=rk3568_bl31_v1.43.elf
|
||||
DDR:=rk3568_ddr_1560MHz_v1.18.bin
|
||||
@@ -292,7 +292,7 @@ define U-Boot/seewo-sv21-rk3568
|
||||
NAME:=Seewo sv21-rk3568
|
||||
BUILD_DEVICES:= \
|
||||
seewo_sv21-rk3568
|
||||
DEPENDS:=+PACKAGE_u-boot-seewo-sv21-rk3568:trusted-firmware-a-rk3568
|
||||
DEPENDS:=+PACKAGE_u-boot-seewo-sv21-rk3568:arm-trusted-firmware-rk3568
|
||||
PKG_BUILD_DEPENDS:=arm-trusted-firmware-rockchip-vendor
|
||||
ATF:=rk3568_bl31_v1.43.elf
|
||||
DDR:=rk3568_ddr_1560MHz_v1.18.bin
|
||||
@@ -303,7 +303,7 @@ define U-Boot/station-p2-rk3568
|
||||
NAME:=StationP2
|
||||
BUILD_DEVICES:= \
|
||||
firefly_station-p2
|
||||
DEPENDS:=+PACKAGE_u-boot-station-p2-rk3568:trusted-firmware-a-rk3568
|
||||
DEPENDS:=+PACKAGE_u-boot-station-p2-rk3568:arm-trusted-firmware-rk3568
|
||||
PKG_BUILD_DEPENDS:=arm-trusted-firmware-rockchip-vendor
|
||||
ATF:=rk3568_bl31_v1.43.elf
|
||||
DDR:=rk3568_ddr_1560MHz_v1.18.bin
|
||||
@@ -314,7 +314,7 @@ define U-Boot/advantech-rsb4810-rk3568
|
||||
NAME:=Advantech RSB4810
|
||||
BUILD_DEVICES:= \
|
||||
advantech_rsb4810
|
||||
DEPENDS:=+PACKAGE_u-boot-advantech-rsb4810-rk3568:trusted-firmware-a-rk3568
|
||||
DEPENDS:=+PACKAGE_u-boot-advantech-rsb4810-rk3568:arm-trusted-firmware-rk3568
|
||||
PKG_BUILD_DEPENDS:=arm-trusted-firmware-rockchip-vendor
|
||||
ATF:=rk3568_bl31_v1.43.elf
|
||||
DDR:=rk3568_ddr_1560MHz_v1.18.bin
|
||||
@@ -354,12 +354,12 @@ UBOOT_MAKE_FLAGS += \
|
||||
PATH=$(STAGING_DIR_HOST)/bin:$(PATH) \
|
||||
BL31=$(STAGING_DIR_IMAGE)/$(ATF)
|
||||
|
||||
ifeq ($(CONFIG_PACKAGE_trusted-firmware-a-rk3568),y)
|
||||
ifeq ($(CONFIG_PACKAGE_arm-trusted-firmware-rk3566),y)
|
||||
UBOOT_MAKE_FLAGS += \
|
||||
ROCKCHIP_TPL=$(STAGING_DIR_IMAGE)/$(DDR)
|
||||
endif
|
||||
|
||||
ifeq ($(CONFIG_PACKAGE_trusted-firmware-a-rk3566),y)
|
||||
ifeq ($(CONFIG_PACKAGE_arm-trusted-firmware-rk3568),y)
|
||||
UBOOT_MAKE_FLAGS += \
|
||||
ROCKCHIP_TPL=$(STAGING_DIR_IMAGE)/$(DDR)
|
||||
endif
|
||||
|
@@ -8,16 +8,16 @@ include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=automake
|
||||
PKG_CPE_ID:=cpe:/a:gnu:automake
|
||||
PKG_VERSION:=1.15.1
|
||||
PKG_VERSION:=1.16.5
|
||||
PKG_API_VERSION:=$(word 2,$(subst ., ,$(PKG_VERSION)))
|
||||
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
||||
PKG_SOURCE_URL:=@GNU/automake
|
||||
PKG_HASH:=af6ba39142220687c500f79b4aa2f181d9b24e4f8d8ec497cea4ba26c64bedaf
|
||||
PKG_HASH:=07bd24ad08a64bc17250ce09ec56e921d6343903943e99ccf63bbf0705e34605
|
||||
|
||||
include $(INCLUDE_DIR)/host-build.mk
|
||||
|
||||
HOST_CONFIGURE_ARGS += \
|
||||
--datarootdir=$(STAGING_DIR_HOST)/share \
|
||||
--disable-silent-rules
|
||||
|
||||
HOST_CONFIGURE_VARS += \
|
||||
@@ -31,20 +31,23 @@ endef
|
||||
|
||||
define Host/Install
|
||||
# remove old automake resources to avoid version conflicts
|
||||
rm -rf $(STAGING_DIR_HOST)/share/aclocal-[0-9]*
|
||||
rm -rf $(STAGING_DIR_HOST)/share/automake-[0-9]*
|
||||
$(MAKE) -C $(HOST_BUILD_DIR) install
|
||||
$(call Host/Uninstall)
|
||||
$(call Host/Compile/Default,install)
|
||||
mv $(STAGING_DIR_HOST)/bin/aclocal $(STAGING_DIR_HOST)/bin/aclocal.real
|
||||
$(INSTALL_BIN) ./files/aclocal $(STAGING_DIR_HOST)/bin
|
||||
ln -sf aclocal $(STAGING_DIR_HOST)/bin/aclocal-1.9
|
||||
ln -sf aclocal $(STAGING_DIR_HOST)/bin/aclocal-1.10
|
||||
ln -sf aclocal $(STAGING_DIR_HOST)/bin/aclocal-1.11
|
||||
ln -sf aclocal $(STAGING_DIR_HOST)/bin/aclocal-1.11.6
|
||||
ln -sf aclocal $(STAGING_DIR_HOST)/bin/aclocal-1.15
|
||||
( \
|
||||
api=$(PKG_API_VERSION); \
|
||||
while [ "$$$$api" -ge 11 ]; do \
|
||||
ln -sf aclocal "$(STAGING_DIR_HOST)/bin/aclocal-1.$$$$api"; \
|
||||
api=$$$$(($$$$api - 1)); \
|
||||
done; \
|
||||
)
|
||||
endef
|
||||
|
||||
define Host/Uninstall
|
||||
-$(call Host/Compile/Default,uninstall)
|
||||
rm -rf $(STAGING_DIR_HOST)/share/aclocal-[0-9]*
|
||||
rm -rf $(STAGING_DIR_HOST)/share/automake-[0-9]*
|
||||
endef
|
||||
|
||||
$(eval $(call HostBuild))
|
||||
|
@@ -1,44 +1,34 @@
|
||||
--- a/lib/Automake/Config.in
|
||||
+++ b/lib/Automake/Config.in
|
||||
@@ -32,7 +32,7 @@ our $PACKAGE = '@PACKAGE@';
|
||||
@@ -34,7 +34,7 @@ our $PACKAGE = '@PACKAGE@';
|
||||
our $PACKAGE_BUGREPORT = '@PACKAGE_BUGREPORT@';
|
||||
our $VERSION = '@VERSION@';
|
||||
our $RELEASE_YEAR = '@RELEASE_YEAR@';
|
||||
-our $libdir = '@datadir@/@PACKAGE@-@APIVERSION@';
|
||||
-our $libdir = $ENV{"AUTOMAKE_LIBDIR"} || '@datadir@/@PACKAGE@-@APIVERSION@';
|
||||
+our $libdir = $ENV{'STAGING_DIR_HOST'} ? $ENV{'STAGING_DIR_HOST'} . '/share/@PACKAGE@-@APIVERSION@' : '@datadir@/@PACKAGE@-@APIVERSION@';
|
||||
|
||||
our $perl_threads = 0;
|
||||
# We need at least this version for CLONE support.
|
||||
--- a/bin/aclocal.in
|
||||
+++ b/bin/aclocal.in
|
||||
@@ -1,10 +1,12 @@
|
||||
-#!@PERL@ -w
|
||||
+#!@PERL@
|
||||
# -*- perl -*-
|
||||
# @configure_input@
|
||||
|
||||
eval 'case $# in 0) exec @PERL@ -S "$0";; *) exec @PERL@ -S "$0" "$@";; esac'
|
||||
if 0;
|
||||
@@ -23,9 +23,11 @@ use 5.006;
|
||||
use strict;
|
||||
use warnings FATAL => 'all';
|
||||
|
||||
+$^W = 1;
|
||||
+
|
||||
# aclocal - create aclocal.m4 by scanning configure.ac
|
||||
|
||||
# Copyright (C) 1996-2017 Free Software Foundation, Inc.
|
||||
@@ -27,7 +29,7 @@ eval 'case $# in 0) exec @PERL@ -S "$0";
|
||||
|
||||
BEGIN
|
||||
{
|
||||
- @Aclocal::perl_libdirs = ('@datadir@/@PACKAGE@-@APIVERSION@')
|
||||
+ @Aclocal::perl_libdirs = ($ENV{'STAGING_DIR_HOST'} ? $ENV{'STAGING_DIR_HOST'} . '/share/@PACKAGE@-@APIVERSION@' : '@datadir@/@PACKAGE@-@APIVERSION@')
|
||||
unless @Aclocal::perl_libdirs;
|
||||
unshift @INC, @Aclocal::perl_libdirs;
|
||||
- unshift (@INC, '@datadir@/@PACKAGE@-@APIVERSION@')
|
||||
+ unshift (@INC, ($ENV{'STAGING_DIR_HOST'} ? $ENV{'STAGING_DIR_HOST'} . '/share/@PACKAGE@-@APIVERSION@' : '@datadir@/@PACKAGE@-@APIVERSION@'))
|
||||
unless $ENV{AUTOMAKE_UNINSTALLED};
|
||||
}
|
||||
@@ -69,8 +71,8 @@ $perl_threads = 0;
|
||||
|
||||
@@ -65,8 +67,8 @@ $perl_threads = 0;
|
||||
# ACLOCAL_PATH environment variable, and reset with the '--system-acdir'
|
||||
# option.
|
||||
my @user_includes = ();
|
||||
-my @automake_includes = ("@datadir@/aclocal-$APIVERSION");
|
||||
-my @automake_includes = ('@datadir@/aclocal-' . $APIVERSION);
|
||||
-my @system_includes = ('@datadir@/aclocal');
|
||||
+my @automake_includes = ($ENV{'STAGING_DIR_HOST'} ? $ENV{'STAGING_DIR_HOST'} . "/share/aclocal-$APIVERSION" : "@datadir@/aclocal-$APIVERSION");
|
||||
+my @system_includes = ($ENV{'STAGING_DIR_HOST'} ? $ENV{'STAGING_DIR_HOST'} . '/share/aclocal' : '@datadir@/aclocal');
|
||||
@@ -47,50 +37,16 @@
|
||||
my $install = 0;
|
||||
--- a/bin/automake.in
|
||||
+++ b/bin/automake.in
|
||||
@@ -1,10 +1,12 @@
|
||||
-#!@PERL@ -w
|
||||
+#!@PERL@
|
||||
# -*- perl -*-
|
||||
# @configure_input@
|
||||
|
||||
eval 'case $# in 0) exec @PERL@ -S "$0";; *) exec @PERL@ -S "$0" "$@";; esac'
|
||||
if 0;
|
||||
@@ -26,9 +26,11 @@ use 5.006;
|
||||
use strict;
|
||||
use warnings FATAL => 'all';
|
||||
|
||||
+$^W = 1;
|
||||
+
|
||||
# automake - create Makefile.in from Makefile.am
|
||||
# Copyright (C) 1994-2017 Free Software Foundation, Inc.
|
||||
|
||||
@@ -31,7 +33,7 @@ use strict;
|
||||
|
||||
BEGIN
|
||||
{
|
||||
- @Automake::perl_libdirs = ('@datadir@/@PACKAGE@-@APIVERSION@')
|
||||
+ @Automake::perl_libdirs = ($ENV{'STAGING_DIR_HOST'} ? $ENV{'STAGING_DIR_HOST'} . '/share/@PACKAGE@-@APIVERSION@' : '@datadir@/@PACKAGE@-@APIVERSION@')
|
||||
unless @Automake::perl_libdirs;
|
||||
unshift @INC, @Automake::perl_libdirs;
|
||||
- unshift (@INC, '@datadir@/@PACKAGE@-@APIVERSION@')
|
||||
+ unshift (@INC, ($ENV{'STAGING_DIR_HOST'} ? $ENV{'STAGING_DIR_HOST'} . '/share/@PACKAGE@-@APIVERSION@' : '@datadir@/@PACKAGE@-@APIVERSION@'))
|
||||
unless $ENV{AUTOMAKE_UNINSTALLED};
|
||||
|
||||
--- a/t/wrap/aclocal.in
|
||||
+++ b/t/wrap/aclocal.in
|
||||
@@ -1,6 +1,8 @@
|
||||
-#!@PERL@ -w
|
||||
+#!@PERL@
|
||||
# @configure_input@
|
||||
|
||||
+$^W = 1;
|
||||
+
|
||||
# Copyright (C) 2012-2017 Free Software Foundation, Inc.
|
||||
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
--- a/t/wrap/automake.in
|
||||
+++ b/t/wrap/automake.in
|
||||
@@ -1,6 +1,8 @@
|
||||
-#!@PERL@ -w
|
||||
+#!@PERL@
|
||||
# @configure_input@
|
||||
|
||||
+$^W = 1;
|
||||
+
|
||||
# Copyright (C) 2012-2017 Free Software Foundation, Inc.
|
||||
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# Override SHELL. This is required on DJGPP so that system() uses
|
||||
|
@@ -1,6 +1,6 @@
|
||||
--- a/bin/aclocal.in
|
||||
+++ b/bin/aclocal.in
|
||||
@@ -356,6 +356,12 @@ sub scan_m4_dirs ($$@)
|
||||
@@ -371,6 +371,12 @@ sub scan_m4_dirs ($$@)
|
||||
|
||||
foreach my $m4dir (@dirlist)
|
||||
{
|
||||
|
29
lede/tools/automake/patches/101-do-not-require-files.patch
Normal file
29
lede/tools/automake/patches/101-do-not-require-files.patch
Normal file
@@ -0,0 +1,29 @@
|
||||
--- a/bin/automake.in
|
||||
+++ b/bin/automake.in
|
||||
@@ -4513,7 +4513,7 @@ sub handle_gettext ()
|
||||
&& grep ($_ eq 'intl', @subdirs));
|
||||
}
|
||||
|
||||
- require_file ($ac_gettext_location, GNU, 'ABOUT-NLS');
|
||||
+ require_file ($ac_gettext_location, GNITS, 'ABOUT-NLS');
|
||||
}
|
||||
|
||||
# Emit makefile footer.
|
||||
@@ -5641,7 +5641,7 @@ sub check_gnu_standards ()
|
||||
# otherwise require non-.md.
|
||||
my $required
|
||||
= (! -f $file && -f "$file.md") ? "$file.md" : $file;
|
||||
- require_file ("$am_file.am", GNU, $required);
|
||||
+ require_file ("$am_file.am", GNITS, $required);
|
||||
}
|
||||
|
||||
# Accept one of these three licenses; default to COPYING.
|
||||
@@ -5655,7 +5655,7 @@ sub check_gnu_standards ()
|
||||
last;
|
||||
}
|
||||
}
|
||||
- require_file ("$am_file.am", GNU, 'COPYING')
|
||||
+ require_file ("$am_file.am", GNITS, 'COPYING')
|
||||
unless $license;
|
||||
}
|
||||
|
@@ -0,0 +1,59 @@
|
||||
From: Bogdan Drozdowski <bogdandr AT op.pl>
|
||||
Date: Sat, 31 Dec 2022 20:17:35 +0100
|
||||
Subject: [PATCH] Allow other V values for verbosity
|
||||
|
||||
---
|
||||
m4/silent.m4 | 2 +-
|
||||
t/silent-gen.sh | 24 ++++++++++++++++++++++++
|
||||
2 files changed, 25 insertions(+), 1 deletion(-)
|
||||
|
||||
--- a/m4/silent.m4
|
||||
+++ b/m4/silent.m4
|
||||
@@ -43,7 +43,7 @@ else
|
||||
fi])
|
||||
if test $am_cv_make_support_nested_variables = yes; then
|
||||
dnl Using '$V' instead of '$(V)' breaks IRIX make.
|
||||
- AM_V='$(V)'
|
||||
+ AM_V='$(shell if ( test "x$(V)" = "x0" ); then echo 0; elif ( test "x$(V)" = "x" ); then echo $(AM_DEFAULT_VERBOSITY); else echo 1; fi)'
|
||||
AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
|
||||
else
|
||||
AM_V=$AM_DEFAULT_VERBOSITY
|
||||
--- a/t/silent-gen.sh
|
||||
+++ b/t/silent-gen.sh
|
||||
@@ -54,6 +54,18 @@ grep 'cp ' stdout
|
||||
grep 'echo ' stdout
|
||||
|
||||
$MAKE clean
|
||||
+run_make -O V=99
|
||||
+grep 'GEN ' stdout && exit 1
|
||||
+grep 'cp ' stdout
|
||||
+grep 'echo ' stdout
|
||||
+
|
||||
+$MAKE clean
|
||||
+run_make -O V=vvv
|
||||
+grep 'GEN ' stdout && exit 1
|
||||
+grep 'cp ' stdout
|
||||
+grep 'echo ' stdout
|
||||
+
|
||||
+$MAKE clean
|
||||
run_make -O V=0
|
||||
grep 'GEN .*foo' stdout
|
||||
grep 'cp ' stdout && exit 1
|
||||
@@ -78,5 +90,17 @@ run_make -O V=1
|
||||
grep 'GEN ' stdout && exit 1
|
||||
grep 'cp ' stdout
|
||||
grep 'echo ' stdout
|
||||
+
|
||||
+$MAKE clean
|
||||
+run_make -O V=99
|
||||
+grep 'GEN ' stdout && exit 1
|
||||
+grep 'cp ' stdout
|
||||
+grep 'echo ' stdout
|
||||
+
|
||||
+$MAKE clean
|
||||
+run_make -O V=v
|
||||
+grep 'GEN ' stdout && exit 1
|
||||
+grep 'cp ' stdout
|
||||
+grep 'echo ' stdout
|
||||
|
||||
:
|
@@ -89,14 +89,14 @@ func (d *dnsPacketConn) WriteTo(p []byte, addr net.Addr) (n int, err error) {
|
||||
return len(p), nil
|
||||
}
|
||||
|
||||
ctx, cancel := context.WithTimeout(d.ctx, resolver.DefaultDnsRelayTimeout)
|
||||
defer cancel()
|
||||
|
||||
buf := pool.Get(resolver.SafeDnsPacketSize)
|
||||
put := func() { _ = pool.Put(buf) }
|
||||
copy(buf, p) // avoid p be changed after WriteTo returned
|
||||
|
||||
go func() { // don't block the WriteTo function
|
||||
ctx, cancel := context.WithTimeout(d.ctx, resolver.DefaultDnsRelayTimeout)
|
||||
defer cancel()
|
||||
|
||||
buf, err = resolver.RelayDnsPacket(ctx, buf[:len(p)], buf)
|
||||
if err != nil {
|
||||
put()
|
||||
|
@@ -46,7 +46,7 @@ func RelayDnsConn(ctx context.Context, conn net.Conn, readTimeout time.Duration)
|
||||
ctx, cancel := context.WithTimeout(ctx, DefaultDnsRelayTimeout)
|
||||
defer cancel()
|
||||
inData := buff[:n]
|
||||
msg, err := RelayDnsPacket(ctx, inData, buff)
|
||||
msg, err := relayDnsPacket(ctx, inData, buff, 0)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -69,7 +69,7 @@ func RelayDnsConn(ctx context.Context, conn net.Conn, readTimeout time.Duration)
|
||||
return nil
|
||||
}
|
||||
|
||||
func RelayDnsPacket(ctx context.Context, payload []byte, target []byte) ([]byte, error) {
|
||||
func relayDnsPacket(ctx context.Context, payload []byte, target []byte, maxSize int) ([]byte, error) {
|
||||
msg := &D.Msg{}
|
||||
if err := msg.Unpack(payload); err != nil {
|
||||
return nil, err
|
||||
@@ -83,6 +83,14 @@ func RelayDnsPacket(ctx context.Context, payload []byte, target []byte) ([]byte,
|
||||
}
|
||||
|
||||
r.SetRcode(msg, r.Rcode)
|
||||
if maxSize > 0 {
|
||||
r.Truncate(maxSize)
|
||||
}
|
||||
r.Compress = true
|
||||
return r.PackBuffer(target)
|
||||
}
|
||||
|
||||
// RelayDnsPacket will truncate udp message up to SafeDnsPacketSize
|
||||
func RelayDnsPacket(ctx context.Context, payload []byte, target []byte) ([]byte, error) {
|
||||
return relayDnsPacket(ctx, payload, target, SafeDnsPacketSize)
|
||||
}
|
||||
|
@@ -20,7 +20,7 @@ require (
|
||||
github.com/mdlayher/netlink v1.7.2
|
||||
github.com/metacubex/gopacket v1.1.20-0.20230608035415-7e2f98a3e759
|
||||
github.com/metacubex/quic-go v0.42.1-0.20240319071510-a251e5c66a5c
|
||||
github.com/metacubex/sing-quic v0.0.0-20240310154810-47bca850fc01
|
||||
github.com/metacubex/sing-quic v0.0.0-20240409064816-c16ac6b1f4b4
|
||||
github.com/metacubex/sing-shadowsocks v0.2.6
|
||||
github.com/metacubex/sing-shadowsocks2 v0.2.0
|
||||
github.com/metacubex/sing-tun v0.2.6
|
||||
|
@@ -108,8 +108,8 @@ github.com/metacubex/quic-go v0.42.1-0.20240319071510-a251e5c66a5c h1:AhaPKvVqF3
|
||||
github.com/metacubex/quic-go v0.42.1-0.20240319071510-a251e5c66a5c/go.mod h1:iGx3Y1zynls/FjFgykLSqDcM81U0IKePRTXEz5g3iiQ=
|
||||
github.com/metacubex/sing v0.0.0-20240408015159-aa61c96df764 h1:+czGKoynxYA90YaL3NlCAIJHnlqwoUlLWgmOhdm5ZU8=
|
||||
github.com/metacubex/sing v0.0.0-20240408015159-aa61c96df764/go.mod h1:+60H3Cm91RnL9dpVGWDPHt0zTQImO9Vfqt9a4rSambI=
|
||||
github.com/metacubex/sing-quic v0.0.0-20240310154810-47bca850fc01 h1:5INHs85Gp1JZsdF7fQp1pXUjfJOX2dhwZjuUQWJVSt8=
|
||||
github.com/metacubex/sing-quic v0.0.0-20240310154810-47bca850fc01/go.mod h1:WyY0zYxv+o+18R/Ece+QFontlgXoobKbNqbtYn2zjz8=
|
||||
github.com/metacubex/sing-quic v0.0.0-20240409064816-c16ac6b1f4b4 h1:JB+BgUgQVicS1oGiw63c0xQWEAkUeuTylDy5WIaco7o=
|
||||
github.com/metacubex/sing-quic v0.0.0-20240409064816-c16ac6b1f4b4/go.mod h1:WyY0zYxv+o+18R/Ece+QFontlgXoobKbNqbtYn2zjz8=
|
||||
github.com/metacubex/sing-shadowsocks v0.2.6 h1:6oEB3QcsFYnNiFeoevcXrCwJ3sAablwVSgtE9R3QeFQ=
|
||||
github.com/metacubex/sing-shadowsocks v0.2.6/go.mod h1:zIkMeSnb8Mbf4hdqhw0pjzkn1d99YJ3JQm/VBg5WMTg=
|
||||
github.com/metacubex/sing-shadowsocks2 v0.2.0 h1:hqwT/AfI5d5UdPefIzR6onGHJfDXs5zgOM5QSgaM/9A=
|
||||
|
@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
|
||||
PKG_NAME:=alist
|
||||
PKG_VERSION:=3.33.0
|
||||
PKG_WEB_VERSION:=3.33.0
|
||||
PKG_RELEASE:=5
|
||||
PKG_RELEASE:=6
|
||||
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
||||
PKG_SOURCE_URL:=https://codeload.github.com/alist-org/alist/tar.gz/v$(PKG_VERSION)?
|
||||
@@ -58,6 +58,14 @@ define Package/$(PKG_NAME)/description
|
||||
A file list program that supports multiple storage, powered by Gin and Solidjs.
|
||||
endef
|
||||
|
||||
ifeq ($(ARCH),arm)
|
||||
ARM_CPU_FEATURES:=$(word 2,$(subst +,$(space),$(call qstrip,$(CONFIG_CPU_TYPE))))
|
||||
ifeq ($(ARM_CPU_FEATURES),)
|
||||
TARGET_CFLAGS:=
|
||||
TARGET_LDFLAGS:=
|
||||
endif
|
||||
endif
|
||||
|
||||
ifneq ($(CONFIG_USE_MUSL),)
|
||||
TARGET_CFLAGS += -D_LARGEFILE64_SOURCE
|
||||
endif
|
||||
|
@@ -7,8 +7,8 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=luci-app-ddns-go
|
||||
PKG_VERSION:=1.4.2
|
||||
PKG_RELEASE:=20240227
|
||||
PKG_VERSION:=1.4.5
|
||||
PKG_RELEASE:=20240409
|
||||
|
||||
LUCI_TITLE:=LuCI Support for Dynamic ddns-go Client
|
||||
LUCI_DEPENDS:=+ddns-go
|
||||
|
@@ -28,16 +28,22 @@ o.default=5
|
||||
o = s:option(Flag,"skipverify",translate("Skip verifying certificates"))
|
||||
o.default = 0
|
||||
|
||||
o = s:option(ListValue, "dns",translate("Specify DNS resolution server"))
|
||||
o = s:option(Value, "dns",translate("Specify DNS resolution server"))
|
||||
o:value("223.5.5.5", ""..translate("Ali").." DNS (223.5.5.5)")
|
||||
o:value("223.6.6.6", ""..translate("Ali").." DNS (223.6.6.6)")
|
||||
o:value("119.29.29.29", ""..translate("Tencent").." DNS (119.29.29.29)")
|
||||
o:value("1.1.1.1", translate("CloudFlare DNS(1.1.1.1)"))
|
||||
o:value("8.8.4.4", ""..translate("Google").." DNS(8.8.4.4)")
|
||||
o:value("8.8.8.8", ""..translate("Google").." DNS(8.8.8.8)")
|
||||
o.default = "223.5.5.5"
|
||||
|
||||
o = s:option(Flag,"noweb",translate("Do not start web services"))
|
||||
o.default = 0
|
||||
|
||||
o = s:option(Value, "delay", translate("Delayed Start (seconds)"))
|
||||
o.datatype = "and(uinteger,min(0))"
|
||||
o.default = "60"
|
||||
|
||||
m.apply_on_parse = true
|
||||
m.on_after_apply = function(self,map)
|
||||
luci.sys.exec("/etc/init.d/ddns-go restart")
|
||||
|
@@ -55,3 +55,5 @@ msgstr "指定DNS解析服务器"
|
||||
msgid "Do not start web services"
|
||||
msgstr "不启动web服务"
|
||||
|
||||
msgid "Delayed Start (seconds)"
|
||||
msgstr "开机延时启动(秒)"
|
||||
|
@@ -55,3 +55,5 @@ msgstr "指定DNS解析服务器"
|
||||
msgid "Do not start web services"
|
||||
msgstr "不启动web服务"
|
||||
|
||||
msgid "Delayed Start (seconds)"
|
||||
msgstr "开机延时启动(秒)"
|
||||
|
@@ -276,7 +276,7 @@ if api.fs.access(gfwlist_path) then
|
||||
end
|
||||
|
||||
if api.fs.access(chnlist_path) then
|
||||
s:tab("chn_list", translate("China List"))
|
||||
s:tab("chn_list", translate("China List") .. "(" .. translate("Domain") .. ")")
|
||||
o = s:taboption("chn_list", TextValue, "chn_list", "")
|
||||
o.readonly = true
|
||||
o.rows = 45
|
||||
@@ -287,7 +287,7 @@ if api.fs.access(chnlist_path) then
|
||||
end
|
||||
|
||||
if api.fs.access(chnroute_path) then
|
||||
s:tab("chnroute_list", translate("China List"))
|
||||
s:tab("chnroute_list", translate("China List") .. "(IP)")
|
||||
o = s:taboption("chnroute_list", TextValue, "chnroute_list", "")
|
||||
o.readonly = true
|
||||
o.rows = 45
|
||||
|
@@ -56,11 +56,12 @@ o.rewrite_option = o.option
|
||||
o = s:option(Value, option_name("hop_interval"), translate("Hop Interval"))
|
||||
o.rewrite_option = o.option
|
||||
|
||||
o = s:option(Value, option_name("recv_window"), translate("QUIC stream receive window"))
|
||||
o.rewrite_option = o.option
|
||||
|
||||
o = s:option(Value, option_name("recv_window_conn"), translate("QUIC connection receive window"))
|
||||
o.rewrite_option = o.option
|
||||
|
||||
o = s:option(Value, option_name("recv_window"), translate("QUIC stream receive window"))
|
||||
o.rewrite_option = o.option
|
||||
|
||||
o = s:option(Value, option_name("idle_timeout"), translate("Idle Timeout"))
|
||||
o.rewrite_option = o.option
|
||||
|
@@ -56,10 +56,10 @@ o.rewrite_option = o.option
|
||||
o = s:option(Value, option_name("hop_interval"), translate("Hop Interval"))
|
||||
o.rewrite_option = o.option
|
||||
|
||||
o = s:option(Value, option_name("recv_window_conn"), translate("QUIC stream receive window"))
|
||||
o = s:option(Value, option_name("recv_window"), translate("QUIC stream receive window"))
|
||||
o.rewrite_option = o.option
|
||||
|
||||
o = s:option(Value, option_name("recv_window"), translate("QUIC connection receive window"))
|
||||
o = s:option(Value, option_name("recv_window_conn"), translate("QUIC connection receive window"))
|
||||
o.rewrite_option = o.option
|
||||
|
||||
o = s:option(Value, option_name("idle_timeout"), translate("Idle Timeout"))
|
||||
|
@@ -818,7 +818,7 @@ add_firewall_rule() {
|
||||
|
||||
[ "$accept_icmpv6" = "1" ] && {
|
||||
nft "add rule inet fw4 PSW2_ICMP_REDIRECT oif lo meta l4proto icmpv6 ip6 daddr $FAKE_IP_6 counter redirect"
|
||||
nft "add rule inet fw4 PSW2_ICMP_REDIRECT oif lo meta l4proto counter redirect"
|
||||
nft "add rule inet fw4 PSW2_ICMP_REDIRECT oif lo meta l4proto icmpv6 counter redirect"
|
||||
nft "add rule inet fw4 PSW2_ICMP_REDIRECT oif lo meta l4proto icmpv6 counter return"
|
||||
}
|
||||
|
||||
|
@@ -2426,7 +2426,11 @@ namespace ARMeilleure.Instructions
|
||||
}
|
||||
else if (Optimizations.FastFP && Optimizations.UseSse41 && sizeF == 0)
|
||||
{
|
||||
Operand res = EmitSse41Round32Exp8OpF(context, context.AddIntrinsic(Intrinsic.X86Rsqrtss, GetVec(op.Rn)), scalar: true);
|
||||
// RSQRTSS handles subnormals as zero, which differs from Arm, so we can't use it here.
|
||||
|
||||
Operand res = context.AddIntrinsic(Intrinsic.X86Sqrtss, GetVec(op.Rn));
|
||||
res = context.AddIntrinsic(Intrinsic.X86Rcpss, res);
|
||||
res = EmitSse41Round32Exp8OpF(context, res, scalar: true);
|
||||
|
||||
context.Copy(GetVec(op.Rd), context.VectorZeroUpper96(res));
|
||||
}
|
||||
@@ -2451,7 +2455,11 @@ namespace ARMeilleure.Instructions
|
||||
}
|
||||
else if (Optimizations.FastFP && Optimizations.UseSse41 && sizeF == 0)
|
||||
{
|
||||
Operand res = EmitSse41Round32Exp8OpF(context, context.AddIntrinsic(Intrinsic.X86Rsqrtps, GetVec(op.Rn)), scalar: false);
|
||||
// RSQRTPS handles subnormals as zero, which differs from Arm, so we can't use it here.
|
||||
|
||||
Operand res = context.AddIntrinsic(Intrinsic.X86Sqrtps, GetVec(op.Rn));
|
||||
res = context.AddIntrinsic(Intrinsic.X86Rcpps, res);
|
||||
res = EmitSse41Round32Exp8OpF(context, res, scalar: false);
|
||||
|
||||
if (op.RegisterSize == RegisterSize.Simd64)
|
||||
{
|
||||
|
@@ -29,7 +29,7 @@ namespace ARMeilleure.Translation.PTC
|
||||
private const string OuterHeaderMagicString = "PTCohd\0\0";
|
||||
private const string InnerHeaderMagicString = "PTCihd\0\0";
|
||||
|
||||
private const uint InternalVersion = 6613; //! To be incremented manually for each change to the ARMeilleure project.
|
||||
private const uint InternalVersion = 6634; //! To be incremented manually for each change to the ARMeilleure project.
|
||||
|
||||
private const string ActualDir = "0";
|
||||
private const string BackupDir = "1";
|
||||
|
@@ -224,7 +224,8 @@ namespace Ryujinx.Graphics.Gpu.Image
|
||||
/// Synchronizes memory for all textures in the array.
|
||||
/// </summary>
|
||||
/// <param name="isStore">Indicates if the texture may be modified by the access</param>
|
||||
public void SynchronizeMemory(bool isStore)
|
||||
/// <param name="blacklistScale">Indicates if the texture should be blacklisted for scaling</param>
|
||||
public void SynchronizeMemory(bool isStore, bool blacklistScale)
|
||||
{
|
||||
foreach (Texture texture in Textures.Keys)
|
||||
{
|
||||
@@ -234,6 +235,13 @@ namespace Ryujinx.Graphics.Gpu.Image
|
||||
{
|
||||
texture.SignalModified();
|
||||
}
|
||||
|
||||
if (blacklistScale && texture.ScaleMode != TextureScaleMode.Blacklisted)
|
||||
{
|
||||
// Scaling textures used on arrays is currently not supported.
|
||||
|
||||
texture.BlacklistScale();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -467,6 +475,7 @@ namespace Ryujinx.Graphics.Gpu.Image
|
||||
|
||||
bool poolsModified = entry.PoolsModified();
|
||||
bool isStore = bindingInfo.Flags.HasFlag(TextureUsageFlags.ImageStore);
|
||||
bool resScaleUnsupported = bindingInfo.Flags.HasFlag(TextureUsageFlags.ResScaleUnsupported);
|
||||
|
||||
ReadOnlySpan<int> cachedTextureBuffer;
|
||||
ReadOnlySpan<int> cachedSamplerBuffer;
|
||||
@@ -475,7 +484,7 @@ namespace Ryujinx.Graphics.Gpu.Image
|
||||
{
|
||||
if (entry.MatchesSequenceNumber(_context.SequenceNumber))
|
||||
{
|
||||
entry.SynchronizeMemory(isStore);
|
||||
entry.SynchronizeMemory(isStore, resScaleUnsupported);
|
||||
|
||||
if (isImage)
|
||||
{
|
||||
@@ -504,7 +513,7 @@ namespace Ryujinx.Graphics.Gpu.Image
|
||||
|
||||
if (entry.MatchesBufferData(cachedTextureBuffer, cachedSamplerBuffer, separateSamplerBuffer, samplerWordOffset))
|
||||
{
|
||||
entry.SynchronizeMemory(isStore);
|
||||
entry.SynchronizeMemory(isStore, resScaleUnsupported);
|
||||
|
||||
if (isImage)
|
||||
{
|
||||
@@ -569,6 +578,13 @@ namespace Ryujinx.Graphics.Gpu.Image
|
||||
{
|
||||
texture.SignalModified();
|
||||
}
|
||||
|
||||
if (resScaleUnsupported && texture.ScaleMode != TextureScaleMode.Blacklisted)
|
||||
{
|
||||
// Scaling textures used on arrays is currently not supported.
|
||||
|
||||
texture.BlacklistScale();
|
||||
}
|
||||
}
|
||||
|
||||
Sampler sampler = samplerPool?.Get(samplerId);
|
||||
|
@@ -247,6 +247,10 @@ namespace Ryujinx.Graphics.Gpu.Image
|
||||
{
|
||||
return TextureMatchQuality.FormatAlias;
|
||||
}
|
||||
else if (lhs.FormatInfo.Format == Format.D32FloatS8Uint && rhs.FormatInfo.Format == Format.R32G32Float)
|
||||
{
|
||||
return TextureMatchQuality.FormatAlias;
|
||||
}
|
||||
}
|
||||
|
||||
return lhs.FormatInfo.Format == rhs.FormatInfo.Format ? TextureMatchQuality.Perfect : TextureMatchQuality.NoMatch;
|
||||
|
@@ -61,6 +61,9 @@ namespace Ryujinx.Horizon.Sdk.Audio.Detail
|
||||
[Buffer(HipcBufferFlags.Out | HipcBufferFlags.MapAlias)] Memory<byte> performanceOutput,
|
||||
[Buffer(HipcBufferFlags.In | HipcBufferFlags.MapAlias)] ReadOnlySequence<byte> input)
|
||||
{
|
||||
using MemoryHandle outputHandle = output.Pin();
|
||||
using MemoryHandle performanceOutputHandle = performanceOutput.Pin();
|
||||
|
||||
Result result = new Result((int)_renderSystem.Update(output, performanceOutput, input));
|
||||
|
||||
return result;
|
||||
|
@@ -276,7 +276,7 @@ if api.fs.access(gfwlist_path) then
|
||||
end
|
||||
|
||||
if api.fs.access(chnlist_path) then
|
||||
s:tab("chn_list", translate("China List"))
|
||||
s:tab("chn_list", translate("China List") .. "(" .. translate("Domain") .. ")")
|
||||
o = s:taboption("chn_list", TextValue, "chn_list", "")
|
||||
o.readonly = true
|
||||
o.rows = 45
|
||||
@@ -287,7 +287,7 @@ if api.fs.access(chnlist_path) then
|
||||
end
|
||||
|
||||
if api.fs.access(chnroute_path) then
|
||||
s:tab("chnroute_list", translate("China List"))
|
||||
s:tab("chnroute_list", translate("China List") .. "(IP)")
|
||||
o = s:taboption("chnroute_list", TextValue, "chnroute_list", "")
|
||||
o.readonly = true
|
||||
o.rows = 45
|
||||
|
@@ -56,11 +56,12 @@ o.rewrite_option = o.option
|
||||
o = s:option(Value, option_name("hop_interval"), translate("Hop Interval"))
|
||||
o.rewrite_option = o.option
|
||||
|
||||
o = s:option(Value, option_name("recv_window"), translate("QUIC stream receive window"))
|
||||
o.rewrite_option = o.option
|
||||
|
||||
o = s:option(Value, option_name("recv_window_conn"), translate("QUIC connection receive window"))
|
||||
o.rewrite_option = o.option
|
||||
|
||||
o = s:option(Value, option_name("recv_window"), translate("QUIC stream receive window"))
|
||||
o.rewrite_option = o.option
|
||||
|
||||
o = s:option(Value, option_name("idle_timeout"), translate("Idle Timeout"))
|
||||
o.rewrite_option = o.option
|
||||
|
@@ -56,10 +56,10 @@ o.rewrite_option = o.option
|
||||
o = s:option(Value, option_name("hop_interval"), translate("Hop Interval"))
|
||||
o.rewrite_option = o.option
|
||||
|
||||
o = s:option(Value, option_name("recv_window_conn"), translate("QUIC stream receive window"))
|
||||
o = s:option(Value, option_name("recv_window"), translate("QUIC stream receive window"))
|
||||
o.rewrite_option = o.option
|
||||
|
||||
o = s:option(Value, option_name("recv_window"), translate("QUIC connection receive window"))
|
||||
o = s:option(Value, option_name("recv_window_conn"), translate("QUIC connection receive window"))
|
||||
o.rewrite_option = o.option
|
||||
|
||||
o = s:option(Value, option_name("idle_timeout"), translate("Idle Timeout"))
|
||||
|
@@ -818,7 +818,7 @@ add_firewall_rule() {
|
||||
|
||||
[ "$accept_icmpv6" = "1" ] && {
|
||||
nft "add rule inet fw4 PSW2_ICMP_REDIRECT oif lo meta l4proto icmpv6 ip6 daddr $FAKE_IP_6 counter redirect"
|
||||
nft "add rule inet fw4 PSW2_ICMP_REDIRECT oif lo meta l4proto counter redirect"
|
||||
nft "add rule inet fw4 PSW2_ICMP_REDIRECT oif lo meta l4proto icmpv6 counter redirect"
|
||||
nft "add rule inet fw4 PSW2_ICMP_REDIRECT oif lo meta l4proto icmpv6 counter return"
|
||||
}
|
||||
|
||||
|
@@ -6,12 +6,12 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=sing-box
|
||||
PKG_VERSION:=1.8.10
|
||||
PKG_VERSION:=1.8.11
|
||||
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:=a959f9a40148ed4166b8161072672f3ce1532957adef7717132c7277bb96dcf6
|
||||
PKG_HASH:=d6c33792c694b817ac86c9baa5d73a8112deea341d4a36c83fe782efa8bf3548
|
||||
|
||||
PKG_LICENSE:=GPL-3.0-or-later
|
||||
PKG_LICENSE_FILES:=LICENSE
|
||||
|
@@ -25,7 +25,7 @@ require (
|
||||
golang.org/x/sync v0.7.0
|
||||
golang.org/x/sys v0.19.0
|
||||
golang.zx2c4.com/wireguard v0.0.0-20231211153847-12269c276173
|
||||
google.golang.org/grpc v1.63.0
|
||||
google.golang.org/grpc v1.63.2
|
||||
google.golang.org/protobuf v1.33.0
|
||||
gvisor.dev/gvisor v0.0.0-20231104011432-48a6d7d5bd0b
|
||||
h12.io/socks v1.0.3
|
||||
|
@@ -275,8 +275,8 @@ google.golang.org/grpc v1.14.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmE
|
||||
google.golang.org/grpc v1.16.0/go.mod h1:0JHn/cJsOMiMfNA9+DeHDlAU7KAAB5GDlYFpa9MZMio=
|
||||
google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs=
|
||||
google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
|
||||
google.golang.org/grpc v1.63.0 h1:WjKe+dnvABXyPJMD7KDNLxtoGk5tgk+YFWN6cBWjZE8=
|
||||
google.golang.org/grpc v1.63.0/go.mod h1:WAX/8DgncnokcFUldAxq7GeB5DXHDbMF+lLvDomNkRA=
|
||||
google.golang.org/grpc v1.63.2 h1:MUeiw1B2maTVZthpU5xvASfTh3LDbxHd6IJ6QQVU+xM=
|
||||
google.golang.org/grpc v1.63.2/go.mod h1:WAX/8DgncnokcFUldAxq7GeB5DXHDbMF+lLvDomNkRA=
|
||||
google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI=
|
||||
google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos=
|
||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||
|
@@ -373,12 +373,19 @@ option(USE_BALSA_HTTP_PARSER "Build with balsa http parser" ON)
|
||||
option(USE_ICU "Build with icu" OFF)
|
||||
option(USE_LEVELDB "Build with leveldb" OFF)
|
||||
option(USE_SQLITE "Build with sqlite" OFF)
|
||||
option(USE_OLD_SYSTEMD_SERVICE "Install with old systemd service files" OFF)
|
||||
|
||||
option(ENABLE_FORTIFY "Enable build with Fortify Source" ON)
|
||||
option(ENABLE_LTO "Enable build with LTO" ON)
|
||||
option(ENABLE_LLD "Enable build with LLD" ON)
|
||||
option(ENABLE_GOLD "Enable build with GOLD" ON)
|
||||
|
||||
# Dynamic users are supported from version 235
|
||||
# see https://0pointer.net/blog/dynamic-users-with-systemd.html
|
||||
if (USE_OLD_SYSTEMD_SERVICE)
|
||||
set(SYSTEMD_SERVICE_SUFFIX ".old")
|
||||
endif()
|
||||
|
||||
if (ENABLE_LLD AND (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" OR LINKER_LLD) AND NOT COMPILER_APPLE_CLANG)
|
||||
# skipping apple clang
|
||||
set(USE_LLD ON)
|
||||
@@ -1980,7 +1987,6 @@ elseif (OHOS AND GUI)
|
||||
set(GUI_LIBRARY_DIRS "")
|
||||
set(GUI_LIBRARIES "libace_napi.z.so")
|
||||
elseif (WIN32 AND GUI)
|
||||
message(STATUS "Compiling with GUI support: Windows")
|
||||
set(GUI_FLAVOUR "windows")
|
||||
set(GUI_USE_FILE "")
|
||||
set(GUI_INCLUDE_DIRS "")
|
||||
@@ -1993,7 +1999,6 @@ elseif (WIN32 AND GUI)
|
||||
set(GUI_LIBRARIES wininet winmm gdi32 comdlg32 ole32 comctl32 shell32)
|
||||
endif()
|
||||
elseif (APPLE AND GUI AND NOT IOS)
|
||||
message(STATUS "Compiling with GUI support: Cocoa")
|
||||
find_library(COCOA_LIBRARY Cocoa REQUIRED)
|
||||
# Locate Interface Builder Tool, needed to build things like Storyboards outside of Xcode.
|
||||
if(NOT ${CMAKE_GENERATOR} MATCHES "^Xcode.*")
|
||||
@@ -2015,7 +2020,6 @@ elseif (APPLE AND GUI AND NOT IOS)
|
||||
set(GUI_LIBRARY_DIRS "")
|
||||
set(GUI_LIBRARIES "${COCOA_LIBRARY}")
|
||||
elseif (IOS AND GUI)
|
||||
message(STATUS "Compiling with GUI support: IOS")
|
||||
find_library(UIKIT_LIBRARY UIKit REQUIRED)
|
||||
# Locate Interface Builder Tool, needed to build things like Storyboards outside of Xcode.
|
||||
if(NOT ${CMAKE_GENERATOR} MATCHES "^Xcode.*")
|
||||
@@ -2037,7 +2041,6 @@ elseif (IOS AND GUI)
|
||||
set(GUI_LIBRARY_DIRS "")
|
||||
set(GUI_LIBRARIES "${UIKIT_LIBRARY}")
|
||||
elseif (GUI)
|
||||
message(STATUS "Compiling with GUI support: GTK+")
|
||||
find_package(PkgConfig)
|
||||
if (NOT PKG_CONFIG_FOUND)
|
||||
message(WARNING "pkg-config (required to search gtk+ path) not found, disabling GUI build")
|
||||
@@ -2106,6 +2109,12 @@ elseif (GUI)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if (GUI)
|
||||
message(STATUS "Compiling with GUI support: ${GUI_FLAVOUR}")
|
||||
else()
|
||||
message(STATUS "Compiling with no GUI support")
|
||||
endif()
|
||||
|
||||
# *****************************************************************************************
|
||||
# Compiler compiler and link flags (common)
|
||||
# *****************************************************************************************
|
||||
@@ -3833,10 +3842,10 @@ if (CLI)
|
||||
# TODO add freebsd rc files
|
||||
if (CMAKE_SYSTEM_NAME STREQUAL "Linux" AND NOT ANDROID AND NOT OHOS)
|
||||
install(FILES yass.json.sample RENAME config.json DESTINATION ${CMAKE_INSTALL_SYSCONFDIR}/yass)
|
||||
install(FILES yass.service RENAME yass.service DESTINATION lib/systemd/system)
|
||||
install(FILES yass${SYSTEMD_SERVICE_SUFFIX}.service RENAME yass.service DESTINATION lib/systemd/system)
|
||||
|
||||
install(FILES yass-redir.json.sample RENAME redir.json DESTINATION ${CMAKE_INSTALL_SYSCONFDIR}/yass)
|
||||
install(FILES yass-redir.service RENAME yass-redir.service DESTINATION lib/systemd/system)
|
||||
install(FILES yass-redir${SYSTEMD_SERVICE_SUFFIX}.service RENAME yass-redir.service DESTINATION lib/systemd/system)
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
@@ -3874,7 +3883,7 @@ if (SERVER)
|
||||
install(FILES doc/yass_server.1 DESTINATION share/man/man1)
|
||||
if (CMAKE_SYSTEM_NAME STREQUAL "Linux" AND NOT ANDROID AND NOT OHOS)
|
||||
install(FILES yass-server.json.sample RENAME server.json DESTINATION ${CMAKE_INSTALL_SYSCONFDIR}/yass)
|
||||
install(FILES yass-server.service RENAME yass-server.service DESTINATION lib/systemd/system)
|
||||
install(FILES yass-server${SYSTEMD_SERVICE_SUFFIX}.service RENAME yass-server.service DESTINATION lib/systemd/system)
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
|
@@ -57,6 +57,7 @@ override_dh_auto_configure: PKG_CONFIG = ${DEB_HOST_GNU_TYPE}-pkg-config
|
||||
endif
|
||||
|
||||
override_dh_auto_configure: CMAKE_OPTIONS += -DCMAKE_SYSTEM_NAME=Linux -DCMAKE_SYSTEM_PROCESSOR=$(DEB_HOST_ARCH)
|
||||
override_dh_auto_configure: CMAKE_OPTIONS += -DUSE_OLD_SYSTEMD_SERVICE=on
|
||||
|
||||
override_dh_auto_configure:
|
||||
dh_auto_configure ${DEB_BUILD_SYSTEM_OPTIONS} -- -DCMAKE_BUILD_TYPE=Release -DBUILD_BENCHMARKS=on -DBUILD_TESTS=on $(CMAKE_OPTIONS) -DCLI=on -DSERVER=on -DUSE_BUILTIN_CA_BUNDLE_CRT=off -DUSE_TCMALLOC=on
|
||||
|
@@ -9,9 +9,9 @@ SERVICE_WRITE_PID=1
|
||||
SERVICE_DAEMONIZE=1
|
||||
|
||||
start() {
|
||||
service_start /usr/bin/$APP -c /etc/yass/config.json
|
||||
service_start /usr/bin/$APP -c /etc/yass/config.json -log_dir=/var/log
|
||||
}
|
||||
|
||||
stop() {
|
||||
service_stop /usr/bin/$APP -c /etc/yass/config.json
|
||||
service_stop /usr/bin/$APP -c /etc/yass/config.json -log_dir=/var/log
|
||||
}
|
||||
|
@@ -9,9 +9,9 @@ SERVICE_WRITE_PID=1
|
||||
SERVICE_DAEMONIZE=1
|
||||
|
||||
start() {
|
||||
service_start /usr/bin/$APP -c /etc/yass/redir.json --redir_mode
|
||||
service_start /usr/bin/$APP -c /etc/yass/redir.json -log_dir=/var/log --redir_mode
|
||||
}
|
||||
|
||||
stop() {
|
||||
service_stop /usr/bin/$APP -c /etc/yass/redir.json --redir_mode
|
||||
service_stop /usr/bin/$APP -c /etc/yass/redir.json -log_dir=/var/log --redir_mode
|
||||
}
|
||||
|
@@ -9,7 +9,6 @@
|
||||
#include <absl/debugging/symbolize.h>
|
||||
#include <absl/flags/flag.h>
|
||||
#include <absl/flags/parse.h>
|
||||
#include <absl/flags/usage.h>
|
||||
#include <absl/strings/str_cat.h>
|
||||
#include <build/build_config.h>
|
||||
#include <locale.h>
|
||||
@@ -79,14 +78,7 @@ int main(int argc, const char* argv[]) {
|
||||
absl::FailureSignalHandlerOptions failure_handle_options;
|
||||
absl::InstallFailureSignalHandler(failure_handle_options);
|
||||
|
||||
absl::SetProgramUsageMessage(absl::StrCat(
|
||||
"Usage: ", Basename(exec_path), " [options ...]\n", " -K, --config <file> Read config from a file\n",
|
||||
" --server_host <host> Remote server on given host\n", " --server_port <port> Remote server on given port\n",
|
||||
" --local_host <host> Local proxy server on given host\n"
|
||||
" --local_port <port> Local proxy server on given port\n"
|
||||
" --username <username> Server user\n",
|
||||
" --password <pasword> Server password\n", " --method <method> Specify encrypt of method to use"));
|
||||
|
||||
config::SetClientUsageMessage(exec_path);
|
||||
config::ReadConfigFileOption(argc, argv);
|
||||
config::ReadConfig();
|
||||
absl::ParseCommandLine(argc, const_cast<char**>(argv));
|
||||
|
@@ -8,6 +8,7 @@
|
||||
|
||||
#include <absl/flags/flag.h>
|
||||
#include <absl/flags/internal/program_name.h>
|
||||
#include <absl/flags/usage.h>
|
||||
#include <absl/strings/str_cat.h>
|
||||
|
||||
#include "core/logging.hpp"
|
||||
@@ -207,6 +208,22 @@ void ReadConfigFileOption(int argc, const char** argv) {
|
||||
argv[pos + 1] = "";
|
||||
pos += 2;
|
||||
continue;
|
||||
} else if (pos + 1 < argc && (arg == "-log_dir" || arg == "--log_dir")) {
|
||||
absl::SetFlag(&FLAGS_log_dir, argv[pos + 1]);
|
||||
argv[pos] = "";
|
||||
argv[pos + 1] = "";
|
||||
pos += 2;
|
||||
continue;
|
||||
} else if (strncmp(argv[pos], "-log_dir=", sizeof("-log_dir=")-1) == 0) {
|
||||
absl::SetFlag(&FLAGS_log_dir, argv[pos] + sizeof("-log_dir=")-1);
|
||||
argv[pos] = "";
|
||||
pos += 1;
|
||||
continue;
|
||||
} else if (strncmp(argv[pos], "--log_dir=", sizeof("--log_dir=")-1) == 0) {
|
||||
absl::SetFlag(&FLAGS_log_dir, argv[pos] + sizeof("--log_dir=")-1);
|
||||
argv[pos] = "";
|
||||
pos += 1;
|
||||
continue;
|
||||
} else if (arg == "--ipv4") {
|
||||
absl::SetFlag(&FLAGS_ipv6_mode, false);
|
||||
argv[pos] = "";
|
||||
@@ -558,4 +575,33 @@ std::string ReadConfigFromArgument(const std::string& server_host,
|
||||
return ret;
|
||||
}
|
||||
|
||||
void SetClientUsageMessage(const std::string& exec_path) {
|
||||
absl::SetProgramUsageMessage(absl::StrCat(
|
||||
"Usage: ", Basename(exec_path), " [options ...]\n", R"(
|
||||
-K, --config <file> Read config from a file
|
||||
--server_host <host> Remote server on given host
|
||||
--server_port <port> Remote server on given port
|
||||
--local_host <host> Local proxy server on given host
|
||||
--local_port <port> Local proxy server on given port
|
||||
--username <username> Server user
|
||||
--password <pasword> Server password
|
||||
--method <method> Specify encrypt of method to use
|
||||
)"));
|
||||
}
|
||||
|
||||
void SetServerUsageMessage(const std::string& exec_path) {
|
||||
absl::SetProgramUsageMessage(absl::StrCat(
|
||||
"Usage: ", Basename(exec_path), " [options ...]\n", R"(
|
||||
-K, --config <file> Read config from a file
|
||||
--certificate_chain_file <file> (TLS) Certificate Chain File Path
|
||||
--private_key_file <file> (TLS) Private Key File Path
|
||||
--private_key_password <password> (TLS) Private Key Password
|
||||
--server_host <host> Server on given host
|
||||
--server_port <port> Server on given port
|
||||
--username <username> Server user
|
||||
--password <pasword> Server password
|
||||
--method <method> Specify encrypt of method to use
|
||||
)"));
|
||||
}
|
||||
|
||||
} // namespace config
|
||||
|
@@ -104,6 +104,10 @@ std::string ReadConfigFromArgument(const std::string& server_host,
|
||||
const std::string& doh_url,
|
||||
const std::string& dot_host,
|
||||
const std::string& connect_timeout);
|
||||
|
||||
void SetClientUsageMessage(const std::string& exec_path);
|
||||
void SetServerUsageMessage(const std::string& exec_path);
|
||||
|
||||
} // namespace config
|
||||
|
||||
#endif // H_CONFIG_CONFIG
|
||||
|
@@ -424,10 +424,10 @@ static void GetHostName(std::string* hostname) {
|
||||
}
|
||||
*hostname = buf.nodename;
|
||||
#elif BUILDFLAG(IS_WIN)
|
||||
char buf[MAX_COMPUTERNAME_LENGTH + 1];
|
||||
wchar_t buf[MAX_COMPUTERNAME_LENGTH + 1];
|
||||
DWORD len = MAX_COMPUTERNAME_LENGTH + 1;
|
||||
if (GetComputerNameA(buf, &len)) {
|
||||
*hostname = buf;
|
||||
if (GetComputerNameW(buf, &len)) {
|
||||
*hostname = SysWideToUTF8(std::wstring(buf, len));
|
||||
} else {
|
||||
hostname->clear();
|
||||
}
|
||||
@@ -2370,9 +2370,9 @@ static void GetTempDirectories(std::vector<std::string>* list) {
|
||||
// C:/TEMP/
|
||||
// C:/WINDOWS/ or C:/WINNT/
|
||||
// .
|
||||
char tmp[MAX_PATH];
|
||||
if (GetTempPathA(MAX_PATH, tmp))
|
||||
list->push_back(tmp);
|
||||
wchar_t tmp[MAX_PATH];
|
||||
if (DWORD len = GetTempPathW(MAX_PATH, tmp))
|
||||
list->push_back(SysWideToUTF8(std::wstring(tmp, len)));
|
||||
list->push_back("C:\\tmp\\");
|
||||
list->push_back("C:\\temp\\");
|
||||
#else
|
||||
@@ -2422,9 +2422,9 @@ const std::vector<std::string>& GetLoggingDirectories() {
|
||||
} else {
|
||||
GetTempDirectories(logging_directories_list);
|
||||
#if BUILDFLAG(IS_WIN)
|
||||
char tmp[MAX_PATH];
|
||||
if (GetWindowsDirectoryA(tmp, MAX_PATH)) {
|
||||
logging_directories_list->push_back(tmp);
|
||||
wchar_t tmp[MAX_PATH];
|
||||
if (UINT len = GetWindowsDirectoryW(tmp, MAX_PATH)) {
|
||||
logging_directories_list->push_back(SysWideToUTF8(std::wstring(tmp, len)));
|
||||
}
|
||||
logging_directories_list->push_back(".\\");
|
||||
#else
|
||||
|
@@ -9,7 +9,6 @@
|
||||
#include <absl/debugging/symbolize.h>
|
||||
#include <absl/flags/flag.h>
|
||||
#include <absl/flags/parse.h>
|
||||
#include <absl/flags/usage.h>
|
||||
#include <absl/strings/str_cat.h>
|
||||
#include <fontconfig/fontconfig.h>
|
||||
#include <glib-2.0/glib-unix.h>
|
||||
@@ -60,14 +59,7 @@ int main(int argc, const char** argv) {
|
||||
absl::InstallFailureSignalHandler(failure_handle_options);
|
||||
#endif
|
||||
|
||||
absl::SetProgramUsageMessage(absl::StrCat(
|
||||
"Usage: ", Basename(exec_path), " [options ...]\n", " -K, --config <file> Read config from a file\n",
|
||||
" --server_host <host> Remote server on given host\n", " --server_port <port> Remote server on given port\n",
|
||||
" --local_host <host> Local proxy server on given host\n"
|
||||
" --local_port <port> Local proxy server on given port\n"
|
||||
" --username <username> Server user\n",
|
||||
" --password <pasword> Server password\n", " --method <method> Specify encrypt of method to use"));
|
||||
|
||||
config::SetClientUsageMessage(exec_path);
|
||||
config::ReadConfigFileOption(argc, argv);
|
||||
config::ReadConfig();
|
||||
absl::ParseCommandLine(argc, const_cast<char**>(argv));
|
||||
|
@@ -9,7 +9,6 @@
|
||||
#include <absl/debugging/symbolize.h>
|
||||
#include <absl/flags/flag.h>
|
||||
#include <absl/flags/parse.h>
|
||||
#include <absl/flags/usage.h>
|
||||
#include <absl/strings/str_cat.h>
|
||||
#include <fontconfig/fontconfig.h>
|
||||
#include <glib-2.0/glib-unix.h>
|
||||
@@ -111,14 +110,7 @@ int main(int argc, const char** argv) {
|
||||
absl::InstallFailureSignalHandler(failure_handle_options);
|
||||
#endif
|
||||
|
||||
absl::SetProgramUsageMessage(absl::StrCat(
|
||||
"Usage: ", Basename(exec_path), " [options ...]\n", " -K, --config <file> Read config from a file\n",
|
||||
" --server_host <host> Remote server on given host\n", " --server_port <port> Remote server on given port\n",
|
||||
" --local_host <host> Local proxy server on given host\n"
|
||||
" --local_port <port> Local proxy server on given port\n"
|
||||
" --username <username> Server user\n",
|
||||
" --password <pasword> Server password\n", " --method <method> Specify encrypt of method to use"));
|
||||
|
||||
config::SetClientUsageMessage(exec_path);
|
||||
config::ReadConfigFileOption(argc, argv);
|
||||
config::ReadConfig();
|
||||
absl::ParseCommandLine(argc, const_cast<char**>(argv));
|
||||
|
@@ -12,7 +12,6 @@
|
||||
#include <absl/debugging/symbolize.h>
|
||||
#include <absl/flags/flag.h>
|
||||
#include <absl/flags/parse.h>
|
||||
#include <absl/flags/usage.h>
|
||||
#include <absl/strings/str_cat.h>
|
||||
|
||||
#include "config/config.hpp"
|
||||
@@ -43,14 +42,7 @@ int main(int argc, const char** argv) {
|
||||
absl::InstallFailureSignalHandler(failure_handle_options);
|
||||
#endif
|
||||
|
||||
absl::SetProgramUsageMessage(absl::StrCat(
|
||||
"Usage: ", Basename(exec_path), " [options ...]\n", " -K, --config <file> Read config from a file\n",
|
||||
" --server_host <host> Remote server on given host\n", " --server_port <port> Remote server on given port\n",
|
||||
" --local_host <host> Local proxy server on given host\n"
|
||||
" --local_port <port> Local proxy server on given port\n"
|
||||
" --username <username> Server user\n",
|
||||
" --password <pasword> Server password\n", " --method <method> Specify encrypt of method to use"));
|
||||
|
||||
config::SetClientUsageMessage(exec_path);
|
||||
config::ReadConfigFileOption(argc, argv);
|
||||
config::ReadConfig();
|
||||
absl::ParseCommandLine(argc, const_cast<char**>(argv));
|
||||
|
@@ -12,7 +12,6 @@
|
||||
#include <absl/debugging/symbolize.h>
|
||||
#include <absl/flags/flag.h>
|
||||
#include <absl/flags/parse.h>
|
||||
#include <absl/flags/usage.h>
|
||||
#include <absl/strings/str_cat.h>
|
||||
#include <openssl/crypto.h>
|
||||
|
||||
@@ -58,14 +57,7 @@ int main(int argc, const char** argv) {
|
||||
absl::InstallFailureSignalHandler(failure_handle_options);
|
||||
#endif
|
||||
|
||||
absl::SetProgramUsageMessage(absl::StrCat(
|
||||
"Usage: ", Basename(exec_path), " [options ...]\n", " -K, --config <file> Read config from a file\n",
|
||||
" --server_host <host> Remote server on given host\n", " --server_port <port> Remote server on given port\n",
|
||||
" --local_host <host> Local proxy server on given host\n"
|
||||
" --local_port <port> Local proxy server on given port\n"
|
||||
" --username <username> Server user\n",
|
||||
" --password <pasword> Server password\n", " --method <method> Specify encrypt of method to use"));
|
||||
|
||||
config::SetClientUsageMessage(exec_path);
|
||||
config::ReadConfigFileOption(argc, argv);
|
||||
config::ReadConfig();
|
||||
absl::ParseCommandLine(argc, const_cast<char**>(argv));
|
||||
|
@@ -113,7 +113,7 @@ void DoTRequest::OnSSLConnect() {
|
||||
|
||||
scoped_refptr<DoTRequest> self(this);
|
||||
|
||||
recv_buf_ = IOBuf::create(UINT16_MAX);
|
||||
recv_buf_ = IOBuf::create(sizeof(length) + UINT16_MAX);
|
||||
ssl_socket_->WaitWrite([this, self](asio::error_code ec) { OnSSLWritable(ec); });
|
||||
ssl_socket_->WaitRead([this, self](asio::error_code ec) { OnSSLReadable(ec); });
|
||||
}
|
||||
|
@@ -9,7 +9,6 @@
|
||||
#include <absl/debugging/symbolize.h>
|
||||
#include <absl/flags/flag.h>
|
||||
#include <absl/flags/parse.h>
|
||||
#include <absl/flags/usage.h>
|
||||
#include <absl/strings/str_cat.h>
|
||||
#include <locale.h>
|
||||
#include <openssl/crypto.h>
|
||||
@@ -58,14 +57,7 @@ int main(int argc, const char* argv[]) {
|
||||
absl::FailureSignalHandlerOptions failure_handle_options;
|
||||
absl::InstallFailureSignalHandler(failure_handle_options);
|
||||
|
||||
absl::SetProgramUsageMessage(absl::StrCat(
|
||||
"Usage: ", Basename(exec_path), " [options ...]\n", " -K, --config <file> Read config from a file\n",
|
||||
" --certificate_chain_file <file> (TLS) Certificate Chain File Path\n",
|
||||
" --private_key_file <file> (TLS) Private Key File Path\n",
|
||||
" --private_key_password <password> (TLS) Private Key Password\n", " --server_host <host> Server on given host\n",
|
||||
" --server_port <port> Server on given port\n", " --username <username> Server user\n",
|
||||
" --password <pasword> Server password\n", " --method <method> Specify encrypt of method to use"));
|
||||
|
||||
config::SetServerUsageMessage(exec_path);
|
||||
config::ReadConfigFileOption(argc, argv);
|
||||
config::ReadConfig();
|
||||
absl::ParseCommandLine(argc, const_cast<char**>(argv));
|
||||
|
@@ -39,37 +39,40 @@ const char kConnectResponse[] = "HTTP/1.1 200 Connection established\r\n\r\n";
|
||||
const int kIOLoopCount = 1;
|
||||
|
||||
// openssl req -newkey rsa:1024 -keyout pkey.pem -x509 -out cert.crt -days 3650 -nodes -subj /C=XX
|
||||
const char kCertificate[] =
|
||||
"-----BEGIN CERTIFICATE-----\n"
|
||||
"MIIB9jCCAV+gAwIBAgIUM03bTKd+A2WwrfolXJC+L9AsxI8wDQYJKoZIhvcNAQEL\n"
|
||||
"BQAwDTELMAkGA1UEBhMCWFgwHhcNMjMwMTI5MjA1MDU5WhcNMzMwMTI2MjA1MDU5\n"
|
||||
"WjANMQswCQYDVQQGEwJYWDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA3GGZ\n"
|
||||
"pQbdPh22uCMIes5GUJfDqsAda5I7JeUt1Uq0KebsQ1rxM9QUgzsvVktYqKGxZW57\n"
|
||||
"djPlcWthfUGlUQAPpZ3/njWter81vy7oj/SfiEvZXk9LyrEA7vf9XIpFJhVrucpI\n"
|
||||
"wzX1KmQAJdpc0yYmVvG+59PNI9SF6mGUWDGBhukCAwEAAaNTMFEwHQYDVR0OBBYE\n"
|
||||
"FPFt885ocZzO8rQ7gu6vr+i/nrEEMB8GA1UdIwQYMBaAFPFt885ocZzO8rQ7gu6v\n"
|
||||
"r+i/nrEEMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQELBQADgYEApAMdus13\n"
|
||||
"9A4wGjtSmI1qsh/+nBeVrQWUOQH8eb0Oe7dDYg58EtzjhlvpLQ7nAOVO8fsioja7\n"
|
||||
"Hine/sjADd7nGUrsIP+JIxplayLXcrP37KwaWxyRHoh/Bqa+7D3RpCv0SrNsIvlt\n"
|
||||
"yyvnIm8njIJSin7Vf4tD1PfY6Obyc8ygUSw=\n"
|
||||
"-----END CERTIFICATE-----\n";
|
||||
const char kPrivateKey[] =
|
||||
"-----BEGIN PRIVATE KEY-----\n"
|
||||
"MIICdQIBADANBgkqhkiG9w0BAQEFAASCAl8wggJbAgEAAoGBANxhmaUG3T4dtrgj\n"
|
||||
"CHrORlCXw6rAHWuSOyXlLdVKtCnm7ENa8TPUFIM7L1ZLWKihsWVue3Yz5XFrYX1B\n"
|
||||
"pVEAD6Wd/541rXq/Nb8u6I/0n4hL2V5PS8qxAO73/VyKRSYVa7nKSMM19SpkACXa\n"
|
||||
"XNMmJlbxvufTzSPUhephlFgxgYbpAgMBAAECgYBprRuB+NKqcJEnpxTv3m31Q3D+\n"
|
||||
"NfVlmc9nEohx2MqftS3h9n/m/HGBpCXE2YiABFkObHYjbis9weITsCDXwJG/UtEO\n"
|
||||
"yv8DqTEVcFYAg7fBu6dRaPsAvuDt4MDnk82/M9ZbtXqG7REp7hMxk3uKSThUfMoR\n"
|
||||
"lIJiUhu2TCHHsw25IQJBAPzNPtn4peug9wXQcd7n1fFXOvjELHX011JFgAYQRoJu\n"
|
||||
"Jmdfpz0+mzqLaagIPEENqwfGAMYkfOSPJWQhfcpeq70CQQDfK1qNNCqJzciGD/K7\n"
|
||||
"xBEliKFGTKBI0Ru5FVPJQjEzorez/sIjsPqqEvfenJ6LyyfKgeaoWpsB5sRnn+Li\n"
|
||||
"ZESdAkANa3vVqFxueLoERf91fMsfp6jKwec2T8wKYwQbzktf6ycAv9Qp7SPiZLo0\n"
|
||||
"IFPKhEY7AGjUG+XBYFP0z85UqtflAkBSp8r8+3I54dbAGI4NjzvOjAE3eU/wSEqd\n"
|
||||
"TVHf+70fY8foSZX8BCOC9E2LzLRIEHFnZp9YgV5h4OejfatZsEtdAkAZU+hVlaJD\n"
|
||||
"GxqmgkJNSUluJFKduxyhdSB/cPmN0N/CFPxgfMEuRuJW3+POWfzQvLCxQ6m1+BpG\n"
|
||||
"kMmiIVi25B8z\n"
|
||||
"-----END PRIVATE KEY-----\n";
|
||||
constexpr const char kCertificate[] = R"(
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIB9jCCAV+gAwIBAgIUM03bTKd+A2WwrfolXJC+L9AsxI8wDQYJKoZIhvcNAQEL
|
||||
BQAwDTELMAkGA1UEBhMCWFgwHhcNMjMwMTI5MjA1MDU5WhcNMzMwMTI2MjA1MDU5
|
||||
WjANMQswCQYDVQQGEwJYWDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA3GGZ
|
||||
pQbdPh22uCMIes5GUJfDqsAda5I7JeUt1Uq0KebsQ1rxM9QUgzsvVktYqKGxZW57
|
||||
djPlcWthfUGlUQAPpZ3/njWter81vy7oj/SfiEvZXk9LyrEA7vf9XIpFJhVrucpI
|
||||
wzX1KmQAJdpc0yYmVvG+59PNI9SF6mGUWDGBhukCAwEAAaNTMFEwHQYDVR0OBBYE
|
||||
FPFt885ocZzO8rQ7gu6vr+i/nrEEMB8GA1UdIwQYMBaAFPFt885ocZzO8rQ7gu6v
|
||||
r+i/nrEEMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQELBQADgYEApAMdus13
|
||||
9A4wGjtSmI1qsh/+nBeVrQWUOQH8eb0Oe7dDYg58EtzjhlvpLQ7nAOVO8fsioja7
|
||||
Hine/sjADd7nGUrsIP+JIxplayLXcrP37KwaWxyRHoh/Bqa+7D3RpCv0SrNsIvlt
|
||||
yyvnIm8njIJSin7Vf4tD1PfY6Obyc8ygUSw=
|
||||
-----END CERTIFICATE-----
|
||||
)";
|
||||
|
||||
constexpr char kPrivateKey[] = R"(
|
||||
-----BEGIN PRIVATE KEY-----
|
||||
MIICdQIBADANBgkqhkiG9w0BAQEFAASCAl8wggJbAgEAAoGBANxhmaUG3T4dtrgj
|
||||
CHrORlCXw6rAHWuSOyXlLdVKtCnm7ENa8TPUFIM7L1ZLWKihsWVue3Yz5XFrYX1B
|
||||
pVEAD6Wd/541rXq/Nb8u6I/0n4hL2V5PS8qxAO73/VyKRSYVa7nKSMM19SpkACXa
|
||||
XNMmJlbxvufTzSPUhephlFgxgYbpAgMBAAECgYBprRuB+NKqcJEnpxTv3m31Q3D+
|
||||
NfVlmc9nEohx2MqftS3h9n/m/HGBpCXE2YiABFkObHYjbis9weITsCDXwJG/UtEO
|
||||
yv8DqTEVcFYAg7fBu6dRaPsAvuDt4MDnk82/M9ZbtXqG7REp7hMxk3uKSThUfMoR
|
||||
lIJiUhu2TCHHsw25IQJBAPzNPtn4peug9wXQcd7n1fFXOvjELHX011JFgAYQRoJu
|
||||
Jmdfpz0+mzqLaagIPEENqwfGAMYkfOSPJWQhfcpeq70CQQDfK1qNNCqJzciGD/K7
|
||||
xBEliKFGTKBI0Ru5FVPJQjEzorez/sIjsPqqEvfenJ6LyyfKgeaoWpsB5sRnn+Li
|
||||
ZESdAkANa3vVqFxueLoERf91fMsfp6jKwec2T8wKYwQbzktf6ycAv9Qp7SPiZLo0
|
||||
IFPKhEY7AGjUG+XBYFP0z85UqtflAkBSp8r8+3I54dbAGI4NjzvOjAE3eU/wSEqd
|
||||
TVHf+70fY8foSZX8BCOC9E2LzLRIEHFnZp9YgV5h4OejfatZsEtdAkAZU+hVlaJD
|
||||
GxqmgkJNSUluJFKduxyhdSB/cPmN0N/CFPxgfMEuRuJW3+POWfzQvLCxQ6m1+BpG
|
||||
kMmiIVi25B8z
|
||||
-----END PRIVATE KEY-----
|
||||
)";
|
||||
|
||||
void GenerateRandContent(int size) {
|
||||
g_send_buffer.clear();
|
||||
@@ -607,7 +610,6 @@ int main(int argc, char** argv) {
|
||||
absl::InstallFailureSignalHandler(failure_handle_options);
|
||||
|
||||
absl::SetFlag(&FLAGS_v, 0);
|
||||
absl::SetFlag(&FLAGS_log_thread_id, 1);
|
||||
absl::SetFlag(&FLAGS_ipv6_mode, false);
|
||||
|
||||
::benchmark::Initialize(&argc, argv);
|
||||
|
@@ -48,37 +48,40 @@ std::unique_ptr<IOBuf> g_recv_buffer;
|
||||
constexpr const char kConnectResponse[] = "HTTP/1.1 200 Connection established\r\n\r\n";
|
||||
|
||||
// openssl req -newkey rsa:1024 -keyout pkey.pem -x509 -out cert.crt -days 3650 -nodes -subj /C=XX
|
||||
constexpr const char kCertificate[] =
|
||||
"-----BEGIN CERTIFICATE-----\n"
|
||||
"MIIB9jCCAV+gAwIBAgIUM03bTKd+A2WwrfolXJC+L9AsxI8wDQYJKoZIhvcNAQEL\n"
|
||||
"BQAwDTELMAkGA1UEBhMCWFgwHhcNMjMwMTI5MjA1MDU5WhcNMzMwMTI2MjA1MDU5\n"
|
||||
"WjANMQswCQYDVQQGEwJYWDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA3GGZ\n"
|
||||
"pQbdPh22uCMIes5GUJfDqsAda5I7JeUt1Uq0KebsQ1rxM9QUgzsvVktYqKGxZW57\n"
|
||||
"djPlcWthfUGlUQAPpZ3/njWter81vy7oj/SfiEvZXk9LyrEA7vf9XIpFJhVrucpI\n"
|
||||
"wzX1KmQAJdpc0yYmVvG+59PNI9SF6mGUWDGBhukCAwEAAaNTMFEwHQYDVR0OBBYE\n"
|
||||
"FPFt885ocZzO8rQ7gu6vr+i/nrEEMB8GA1UdIwQYMBaAFPFt885ocZzO8rQ7gu6v\n"
|
||||
"r+i/nrEEMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQELBQADgYEApAMdus13\n"
|
||||
"9A4wGjtSmI1qsh/+nBeVrQWUOQH8eb0Oe7dDYg58EtzjhlvpLQ7nAOVO8fsioja7\n"
|
||||
"Hine/sjADd7nGUrsIP+JIxplayLXcrP37KwaWxyRHoh/Bqa+7D3RpCv0SrNsIvlt\n"
|
||||
"yyvnIm8njIJSin7Vf4tD1PfY6Obyc8ygUSw=\n"
|
||||
"-----END CERTIFICATE-----\n";
|
||||
constexpr char kPrivateKey[] =
|
||||
"-----BEGIN PRIVATE KEY-----\n"
|
||||
"MIICdQIBADANBgkqhkiG9w0BAQEFAASCAl8wggJbAgEAAoGBANxhmaUG3T4dtrgj\n"
|
||||
"CHrORlCXw6rAHWuSOyXlLdVKtCnm7ENa8TPUFIM7L1ZLWKihsWVue3Yz5XFrYX1B\n"
|
||||
"pVEAD6Wd/541rXq/Nb8u6I/0n4hL2V5PS8qxAO73/VyKRSYVa7nKSMM19SpkACXa\n"
|
||||
"XNMmJlbxvufTzSPUhephlFgxgYbpAgMBAAECgYBprRuB+NKqcJEnpxTv3m31Q3D+\n"
|
||||
"NfVlmc9nEohx2MqftS3h9n/m/HGBpCXE2YiABFkObHYjbis9weITsCDXwJG/UtEO\n"
|
||||
"yv8DqTEVcFYAg7fBu6dRaPsAvuDt4MDnk82/M9ZbtXqG7REp7hMxk3uKSThUfMoR\n"
|
||||
"lIJiUhu2TCHHsw25IQJBAPzNPtn4peug9wXQcd7n1fFXOvjELHX011JFgAYQRoJu\n"
|
||||
"Jmdfpz0+mzqLaagIPEENqwfGAMYkfOSPJWQhfcpeq70CQQDfK1qNNCqJzciGD/K7\n"
|
||||
"xBEliKFGTKBI0Ru5FVPJQjEzorez/sIjsPqqEvfenJ6LyyfKgeaoWpsB5sRnn+Li\n"
|
||||
"ZESdAkANa3vVqFxueLoERf91fMsfp6jKwec2T8wKYwQbzktf6ycAv9Qp7SPiZLo0\n"
|
||||
"IFPKhEY7AGjUG+XBYFP0z85UqtflAkBSp8r8+3I54dbAGI4NjzvOjAE3eU/wSEqd\n"
|
||||
"TVHf+70fY8foSZX8BCOC9E2LzLRIEHFnZp9YgV5h4OejfatZsEtdAkAZU+hVlaJD\n"
|
||||
"GxqmgkJNSUluJFKduxyhdSB/cPmN0N/CFPxgfMEuRuJW3+POWfzQvLCxQ6m1+BpG\n"
|
||||
"kMmiIVi25B8z\n"
|
||||
"-----END PRIVATE KEY-----\n";
|
||||
constexpr const char kCertificate[] = R"(
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIB9jCCAV+gAwIBAgIUM03bTKd+A2WwrfolXJC+L9AsxI8wDQYJKoZIhvcNAQEL
|
||||
BQAwDTELMAkGA1UEBhMCWFgwHhcNMjMwMTI5MjA1MDU5WhcNMzMwMTI2MjA1MDU5
|
||||
WjANMQswCQYDVQQGEwJYWDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA3GGZ
|
||||
pQbdPh22uCMIes5GUJfDqsAda5I7JeUt1Uq0KebsQ1rxM9QUgzsvVktYqKGxZW57
|
||||
djPlcWthfUGlUQAPpZ3/njWter81vy7oj/SfiEvZXk9LyrEA7vf9XIpFJhVrucpI
|
||||
wzX1KmQAJdpc0yYmVvG+59PNI9SF6mGUWDGBhukCAwEAAaNTMFEwHQYDVR0OBBYE
|
||||
FPFt885ocZzO8rQ7gu6vr+i/nrEEMB8GA1UdIwQYMBaAFPFt885ocZzO8rQ7gu6v
|
||||
r+i/nrEEMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQELBQADgYEApAMdus13
|
||||
9A4wGjtSmI1qsh/+nBeVrQWUOQH8eb0Oe7dDYg58EtzjhlvpLQ7nAOVO8fsioja7
|
||||
Hine/sjADd7nGUrsIP+JIxplayLXcrP37KwaWxyRHoh/Bqa+7D3RpCv0SrNsIvlt
|
||||
yyvnIm8njIJSin7Vf4tD1PfY6Obyc8ygUSw=
|
||||
-----END CERTIFICATE-----
|
||||
)";
|
||||
|
||||
constexpr char kPrivateKey[] = R"(
|
||||
-----BEGIN PRIVATE KEY-----
|
||||
MIICdQIBADANBgkqhkiG9w0BAQEFAASCAl8wggJbAgEAAoGBANxhmaUG3T4dtrgj
|
||||
CHrORlCXw6rAHWuSOyXlLdVKtCnm7ENa8TPUFIM7L1ZLWKihsWVue3Yz5XFrYX1B
|
||||
pVEAD6Wd/541rXq/Nb8u6I/0n4hL2V5PS8qxAO73/VyKRSYVa7nKSMM19SpkACXa
|
||||
XNMmJlbxvufTzSPUhephlFgxgYbpAgMBAAECgYBprRuB+NKqcJEnpxTv3m31Q3D+
|
||||
NfVlmc9nEohx2MqftS3h9n/m/HGBpCXE2YiABFkObHYjbis9weITsCDXwJG/UtEO
|
||||
yv8DqTEVcFYAg7fBu6dRaPsAvuDt4MDnk82/M9ZbtXqG7REp7hMxk3uKSThUfMoR
|
||||
lIJiUhu2TCHHsw25IQJBAPzNPtn4peug9wXQcd7n1fFXOvjELHX011JFgAYQRoJu
|
||||
Jmdfpz0+mzqLaagIPEENqwfGAMYkfOSPJWQhfcpeq70CQQDfK1qNNCqJzciGD/K7
|
||||
xBEliKFGTKBI0Ru5FVPJQjEzorez/sIjsPqqEvfenJ6LyyfKgeaoWpsB5sRnn+Li
|
||||
ZESdAkANa3vVqFxueLoERf91fMsfp6jKwec2T8wKYwQbzktf6ycAv9Qp7SPiZLo0
|
||||
IFPKhEY7AGjUG+XBYFP0z85UqtflAkBSp8r8+3I54dbAGI4NjzvOjAE3eU/wSEqd
|
||||
TVHf+70fY8foSZX8BCOC9E2LzLRIEHFnZp9YgV5h4OejfatZsEtdAkAZU+hVlaJD
|
||||
GxqmgkJNSUluJFKduxyhdSB/cPmN0N/CFPxgfMEuRuJW3+POWfzQvLCxQ6m1+BpG
|
||||
kMmiIVi25B8z
|
||||
-----END PRIVATE KEY-----
|
||||
)";
|
||||
|
||||
void GenerateRandContent(int size) {
|
||||
g_send_buffer.clear();
|
||||
@@ -753,7 +756,6 @@ int main(int argc, char** argv) {
|
||||
absl::InstallFailureSignalHandler(failure_handle_options);
|
||||
|
||||
absl::SetFlag(&FLAGS_v, 0);
|
||||
absl::SetFlag(&FLAGS_log_thread_id, 1);
|
||||
absl::SetFlag(&FLAGS_ipv6_mode, false);
|
||||
|
||||
::testing::InitGoogleTest(&argc, argv);
|
||||
|
@@ -11,7 +11,6 @@
|
||||
#include <absl/debugging/symbolize.h>
|
||||
#include <absl/flags/flag.h>
|
||||
#include <absl/flags/parse.h>
|
||||
#include <absl/flags/usage.h>
|
||||
#include <absl/strings/str_cat.h>
|
||||
#include <locale.h>
|
||||
#include <openssl/crypto.h>
|
||||
@@ -58,14 +57,6 @@ int APIENTRY wWinMain(_In_ HINSTANCE hInstance,
|
||||
LOG(WARNING) << "Failed to set up utf-8 locale";
|
||||
}
|
||||
|
||||
absl::SetProgramUsageMessage(absl::StrCat(
|
||||
"Usage: ", Basename(exec_path), " [options ...]\n", " -K, --config <file> Read config from a file\n",
|
||||
" --server_host <host> Remote server on given host\n", " --server_port <port> Remote server on given port\n",
|
||||
" --local_host <host> Local proxy server on given host\n"
|
||||
" --local_port <port> Local proxy server on given port\n"
|
||||
" --username <username> Server user\n",
|
||||
" --password <pasword> Server password\n", " --method <method> Specify encrypt of method to use"));
|
||||
|
||||
absl::InitializeSymbolizer(exec_path.c_str());
|
||||
#ifdef HAVE_CRASHPAD
|
||||
CHECK(InitializeCrashpad(exec_path));
|
||||
@@ -92,6 +83,7 @@ int APIENTRY wWinMain(_In_ HINSTANCE hInstance,
|
||||
absl::SetFlag(&FLAGS_logtostderr, false);
|
||||
argv[0] = exec_path.data();
|
||||
|
||||
config::SetClientUsageMessage(exec_path);
|
||||
config::ReadConfigFileOption(argc, &argv[0]);
|
||||
config::ReadConfig();
|
||||
absl::ParseCommandLine(argv.size(), const_cast<char**>(&argv[0]));
|
||||
|
14
yass/yass-redir.old.service
Normal file
14
yass/yass-redir.old.service
Normal file
@@ -0,0 +1,14 @@
|
||||
[Unit]
|
||||
Description=Yet Another Shadow Socket
|
||||
After=network-online.target nss-lookup.target
|
||||
Wants=network-online.target
|
||||
|
||||
[Service]
|
||||
Type=exec
|
||||
User=nobody
|
||||
ExecStart=/usr/bin/yass_cli -c /etc/yass/redir.json -logtostderr --redir_mode
|
||||
Restart=on-failure
|
||||
RestartPreventExitStatus=23
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
@@ -5,8 +5,9 @@ Wants=network-online.target
|
||||
|
||||
[Service]
|
||||
Type=exec
|
||||
User=nobody
|
||||
ExecStart=/usr/bin/yass_cli -c /etc/yass/redir.json -logtostderr --redir_mode
|
||||
DynamicUser=yes
|
||||
LogsDirectory=yass-redir
|
||||
ExecStart=/usr/bin/yass_cli -c /etc/yass/redir.json -log_dir=/var/log/yass-redir --redir_mode
|
||||
Restart=on-failure
|
||||
RestartPreventExitStatus=23
|
||||
|
||||
|
20
yass/yass-server.old.service
Normal file
20
yass/yass-server.old.service
Normal file
@@ -0,0 +1,20 @@
|
||||
[Unit]
|
||||
Description=Yet Another Shadow Socket Server
|
||||
After=network-online.target nss-lookup.target
|
||||
Wants=network-online.target
|
||||
|
||||
[Service]
|
||||
Type=exec
|
||||
User=root
|
||||
ExecStart=/usr/bin/yass_server -c /etc/yass/server.json -logtostderr --private_key_file /etc/yass/private_key.pem --certificate_chain_file /etc/yass/pubkey.crt --user nobody --group nogroup
|
||||
Restart=on-failure
|
||||
RestartSec=5s
|
||||
RestartPreventExitStatus=23
|
||||
TimeoutStopSec=5s
|
||||
LimitNOFILE=1048576
|
||||
LimitNPROC=512
|
||||
PrivateTmp=true
|
||||
ProtectSystem=full
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
@@ -5,8 +5,10 @@ Wants=network-online.target
|
||||
|
||||
[Service]
|
||||
Type=exec
|
||||
User=root
|
||||
ExecStart=/usr/bin/yass_server -c /etc/yass/server.json -logtostderr --private_key_file /etc/yass/private_key.pem --certificate_chain_file /etc/yass/pubkey.crt --user nobody --group nogroup
|
||||
DynamicUser=yes
|
||||
LogsDirectory=yass-server
|
||||
ExecStart=/usr/bin/yass_server -c /etc/yass/server.json -log_dir=/var/log/yass-server --private_key_file /etc/yass/private_key.pem --certificate_chain_file /etc/yass/pubkey.crt
|
||||
AmbientCapabilities=CAP_NET_BIND_SERVICE
|
||||
Restart=on-failure
|
||||
RestartSec=5s
|
||||
RestartPreventExitStatus=23
|
||||
|
14
yass/yass.old.service
Normal file
14
yass/yass.old.service
Normal file
@@ -0,0 +1,14 @@
|
||||
[Unit]
|
||||
Description=Yet Another Shadow Socket
|
||||
After=network-online.target nss-lookup.target
|
||||
Wants=network-online.target
|
||||
|
||||
[Service]
|
||||
Type=exec
|
||||
User=nobody
|
||||
ExecStart=/usr/bin/yass_cli -c /etc/yass/config.json -logtostderr
|
||||
Restart=on-failure
|
||||
RestartPreventExitStatus=23
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
@@ -5,8 +5,9 @@ Wants=network-online.target
|
||||
|
||||
[Service]
|
||||
Type=exec
|
||||
User=nobody
|
||||
ExecStart=/usr/bin/yass_cli -c /etc/yass/config.json -logtostderr
|
||||
DynamicUser=yes
|
||||
LogsDirectory=yass
|
||||
ExecStart=/usr/bin/yass_cli -c /etc/yass/config.json -log_dir=/var/log/yass
|
||||
Restart=on-failure
|
||||
RestartPreventExitStatus=23
|
||||
|
||||
|
@@ -63,6 +63,13 @@
|
||||
%global enable_lld_opt on
|
||||
%endif
|
||||
|
||||
# force use old systemd unit files
|
||||
%if 0%{?rhel} == 7
|
||||
%global use_old_systemd_service on
|
||||
%else
|
||||
%global use_old_systemd_service off
|
||||
%endif
|
||||
|
||||
Name: yass
|
||||
Version: __VERSION__
|
||||
Release: __SUBVERSION__%{?dist}
|
||||
@@ -138,6 +145,7 @@ cd build
|
||||
# old c-ares doesn't contain ares_getaddrinfo api
|
||||
%cmake_alias -G Ninja -DCMAKE_BUILD_TYPE=Release \
|
||||
-DBUILD_BENCHMARKS=on -DBUILD_TESTS=on -DGUI=on -DCLI=on -DSERVER=on \
|
||||
-DUSE_OLD_SYSTEMD_SERVICE="%use_old_systemd_service" \
|
||||
-DUSE_TCMALLOC=on \
|
||||
-DUSE_SYSTEM_ZLIB=on \
|
||||
-DUSE_SYSTEM_NGHTTP2="%enable_system_nghttp2_opt" \
|
||||
|
2
yt-dlp/.github/workflows/build.yml
vendored
2
yt-dlp/.github/workflows/build.yml
vendored
@@ -320,7 +320,7 @@ jobs:
|
||||
run: |
|
||||
brew install coreutils
|
||||
python3 devscripts/install_deps.py --user -o --include build
|
||||
python3 devscripts/install_deps.py --user --include pyinstaller --include curl_cffi
|
||||
python3 devscripts/install_deps.py --user --include pyinstaller
|
||||
|
||||
- name: Prepare
|
||||
run: |
|
||||
|
2
yt-dlp/.github/workflows/quick-test.yml
vendored
2
yt-dlp/.github/workflows/quick-test.yml
vendored
@@ -27,6 +27,8 @@ jobs:
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/setup-python@v5
|
||||
with:
|
||||
python-version: '3.8'
|
||||
- name: Install flake8
|
||||
run: python3 ./devscripts/install_deps.py -o --include dev
|
||||
- name: Make lazy extractors
|
||||
|
@@ -600,3 +600,13 @@ xpadev-net
|
||||
Xpl0itU
|
||||
YoshichikaAAA
|
||||
zhijinwuu
|
||||
alb
|
||||
hruzgar
|
||||
kasper93
|
||||
leoheitmannruiz
|
||||
luiso1979
|
||||
nipotan
|
||||
Offert4324
|
||||
sta1us
|
||||
Tomoka1
|
||||
trwstin
|
||||
|
@@ -4,6 +4,101 @@
|
||||
# To create a release, dispatch the https://github.com/yt-dlp/yt-dlp/actions/workflows/release.yml workflow on master
|
||||
-->
|
||||
|
||||
### 2024.04.09
|
||||
|
||||
#### Important changes
|
||||
- Security: [[CVE-2024-22423](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2024-22423)] [Prevent RCE when using `--exec` with `%q` on Windows](https://github.com/yt-dlp/yt-dlp/security/advisories/GHSA-hjq6-52gw-2g7p)
|
||||
- The shell escape function now properly escapes `%`, `\` and `\n`.
|
||||
- `utils.Popen` has been patched accordingly.
|
||||
|
||||
#### Core changes
|
||||
- [Add new option `--progress-delta`](https://github.com/yt-dlp/yt-dlp/commit/9590cc6b4768e190183d7d071a6c78170889116a) ([#9082](https://github.com/yt-dlp/yt-dlp/issues/9082)) by [Grub4K](https://github.com/Grub4K)
|
||||
- [Add new options `--impersonate` and `--list-impersonate-targets`](https://github.com/yt-dlp/yt-dlp/commit/0b81d4d252bd065ccd352722987ea34fe17f9244) by [bashonly](https://github.com/bashonly), [coletdjnz](https://github.com/coletdjnz), [Grub4K](https://github.com/Grub4K), [pukkandan](https://github.com/pukkandan)
|
||||
- [Add option `--no-break-on-existing`](https://github.com/yt-dlp/yt-dlp/commit/16be117729150b2784f3b17755c886cb0cf73374) ([#9610](https://github.com/yt-dlp/yt-dlp/issues/9610)) by [bashonly](https://github.com/bashonly)
|
||||
- [Fix `filesize_approx` calculation](https://github.com/yt-dlp/yt-dlp/commit/86e3b82261e8ebc6c6707c09544c9dfb8907c0fd) ([#9560](https://github.com/yt-dlp/yt-dlp/issues/9560)) by [pukkandan](https://github.com/pukkandan), [seproDev](https://github.com/seproDev)
|
||||
- [Infer `acodec` for single-codec containers](https://github.com/yt-dlp/yt-dlp/commit/86a972033e05fea80e5fe7f2aff6723dbe2f3952) by [pukkandan](https://github.com/pukkandan)
|
||||
- [Prevent RCE when using `--exec` with `%q` (CVE-2024-22423)](https://github.com/yt-dlp/yt-dlp/commit/ff07792676f404ffff6ee61b5638c9dc1a33a37a) by [Grub4K](https://github.com/Grub4K)
|
||||
- **cookies**: [Add `--cookies-from-browser` support for Firefox Flatpak](https://github.com/yt-dlp/yt-dlp/commit/2ab2651a4a7be18939e2b4cb21be79fe477c797a) ([#9619](https://github.com/yt-dlp/yt-dlp/issues/9619)) by [un-def](https://github.com/un-def)
|
||||
- **utils**
|
||||
- `traverse_obj`
|
||||
- [Allow unbranching using `all` and `any`](https://github.com/yt-dlp/yt-dlp/commit/3699eeb67cad333272b14a42dd3843d93fda1a2e) ([#9571](https://github.com/yt-dlp/yt-dlp/issues/9571)) by [Grub4K](https://github.com/Grub4K)
|
||||
- [Convenience improvements](https://github.com/yt-dlp/yt-dlp/commit/32abfb00bdbd119ca675fdc6d1719331f0a2741a) ([#9577](https://github.com/yt-dlp/yt-dlp/issues/9577)) by [Grub4K](https://github.com/Grub4K)
|
||||
|
||||
#### Extractor changes
|
||||
- [Add extractor impersonate API](https://github.com/yt-dlp/yt-dlp/commit/50c29352312f5662acf9a64b0012766f5c40af61) ([#9474](https://github.com/yt-dlp/yt-dlp/issues/9474)) by [bashonly](https://github.com/bashonly), [Grub4K](https://github.com/Grub4K), [pukkandan](https://github.com/pukkandan)
|
||||
- **afreecatv**
|
||||
- [Overhaul extractor](https://github.com/yt-dlp/yt-dlp/commit/9415f1a5ef88482ebafe3083e8bcb778ac512df7) ([#9566](https://github.com/yt-dlp/yt-dlp/issues/9566)) by [bashonly](https://github.com/bashonly), [Tomoka1](https://github.com/Tomoka1)
|
||||
- live: [Fix extractor](https://github.com/yt-dlp/yt-dlp/commit/9073ae6458f4c6a832aa832c67174c61852869be) ([#9348](https://github.com/yt-dlp/yt-dlp/issues/9348)) by [hui1601](https://github.com/hui1601)
|
||||
- **asobistage**: [Add extractor](https://github.com/yt-dlp/yt-dlp/commit/0284f1fee202302a78888420f933deae19d9f4e1) ([#8735](https://github.com/yt-dlp/yt-dlp/issues/8735)) by [pzhlkj6612](https://github.com/pzhlkj6612)
|
||||
- **box**: [Support URLs without file IDs](https://github.com/yt-dlp/yt-dlp/commit/07f5b2f7570fd9ac85aed17f4c0118f6eac77beb) ([#9504](https://github.com/yt-dlp/yt-dlp/issues/9504)) by [shreyasminocha](https://github.com/shreyasminocha)
|
||||
- **cbc.ca**: player: [Support new URL format](https://github.com/yt-dlp/yt-dlp/commit/b49d5ffc53a72d8245ba319ff07bdc5b8c6a4f0c) ([#9561](https://github.com/yt-dlp/yt-dlp/issues/9561)) by [trainman261](https://github.com/trainman261)
|
||||
- **crunchyroll**
|
||||
- [Extract `vo_adaptive_hls` formats by default](https://github.com/yt-dlp/yt-dlp/commit/be77923ffe842f667971019460f6005f3cad01eb) ([#9447](https://github.com/yt-dlp/yt-dlp/issues/9447)) by [bashonly](https://github.com/bashonly)
|
||||
- [Fix extractor](https://github.com/yt-dlp/yt-dlp/commit/954e57e405f79188450eb30103a9308732cd318f) ([#9615](https://github.com/yt-dlp/yt-dlp/issues/9615)) by [bytedream](https://github.com/bytedream)
|
||||
- **dropbox**: [Fix formats extraction](https://github.com/yt-dlp/yt-dlp/commit/a48cc86d6f6b20427553620c2ddb990ede6a4b41) ([#9627](https://github.com/yt-dlp/yt-dlp/issues/9627)) by [bashonly](https://github.com/bashonly)
|
||||
- **fathom**: [Add extractor](https://github.com/yt-dlp/yt-dlp/commit/bc2b8c0596fd6b75af24822c4f0f1da6783d71f7) ([#9495](https://github.com/yt-dlp/yt-dlp/issues/9495)) by [src-tinkerer](https://github.com/src-tinkerer)
|
||||
- **gofile**: [Fix extractor](https://github.com/yt-dlp/yt-dlp/commit/0da66980d3193cad3dae0120cddddbfcabddf7a1) ([#9446](https://github.com/yt-dlp/yt-dlp/issues/9446)) by [jazz1611](https://github.com/jazz1611)
|
||||
- **imgur**: [Fix extraction](https://github.com/yt-dlp/yt-dlp/commit/86d2f4d24849af0d1f3af7c0e2ac43bf8a058f74) ([#9471](https://github.com/yt-dlp/yt-dlp/issues/9471)) by [trwstin](https://github.com/trwstin)
|
||||
- **jiosaavn**
|
||||
- [Extract artists](https://github.com/yt-dlp/yt-dlp/commit/0ae16ceb1846cc4e609b70ce7c5d8e7458efceb2) ([#9612](https://github.com/yt-dlp/yt-dlp/issues/9612)) by [bashonly](https://github.com/bashonly)
|
||||
- [Fix format extensions](https://github.com/yt-dlp/yt-dlp/commit/443e206ec41e64ca2aef61d8ef91640fb69b3113) ([#9609](https://github.com/yt-dlp/yt-dlp/issues/9609)) by [bashonly](https://github.com/bashonly)
|
||||
- [Support playlists](https://github.com/yt-dlp/yt-dlp/commit/2e94602f241f6e41bdc48576c61089435529339b) ([#9622](https://github.com/yt-dlp/yt-dlp/issues/9622)) by [bashonly](https://github.com/bashonly)
|
||||
- **joqrag**: [Fix live status detection](https://github.com/yt-dlp/yt-dlp/commit/f2fd449b46c4058222e1744f7a35caa20b2d003d) ([#9624](https://github.com/yt-dlp/yt-dlp/issues/9624)) by [pzhlkj6612](https://github.com/pzhlkj6612)
|
||||
- **kick**: [Support browser impersonation](https://github.com/yt-dlp/yt-dlp/commit/c8a61a910096c77ce08dad5e1b2fbda5eb964156) ([#9611](https://github.com/yt-dlp/yt-dlp/issues/9611)) by [bashonly](https://github.com/bashonly)
|
||||
- **loom**: [Add extractors](https://github.com/yt-dlp/yt-dlp/commit/f859ed3ba1e8b129ae6a467592c65687e73fbca1) ([#8686](https://github.com/yt-dlp/yt-dlp/issues/8686)) by [bashonly](https://github.com/bashonly), [hruzgar](https://github.com/hruzgar)
|
||||
- **medici**: [Fix extractor](https://github.com/yt-dlp/yt-dlp/commit/4cd9e251b9abada107b10830de997bf4d79ca369) ([#9518](https://github.com/yt-dlp/yt-dlp/issues/9518)) by [Offert4324](https://github.com/Offert4324)
|
||||
- **mixch**
|
||||
- [Fix extractor](https://github.com/yt-dlp/yt-dlp/commit/4c3b7a0769706f7f0ea24adf1f219d5ae82d2b07) ([#9608](https://github.com/yt-dlp/yt-dlp/issues/9608)) by [bashonly](https://github.com/bashonly), [nipotan](https://github.com/nipotan)
|
||||
- archive: [Fix extractor](https://github.com/yt-dlp/yt-dlp/commit/c59de48e2bb4c681b03b93b584a05f52609ce4a0) ([#8761](https://github.com/yt-dlp/yt-dlp/issues/8761)) by [pzhlkj6612](https://github.com/pzhlkj6612)
|
||||
- **nhk**: [Fix NHK World extractors](https://github.com/yt-dlp/yt-dlp/commit/4af9d5c2f6aa81403ae2a8a5ae3cc824730f0b86) ([#9623](https://github.com/yt-dlp/yt-dlp/issues/9623)) by [bashonly](https://github.com/bashonly)
|
||||
- **patreon**: [Do not extract dead embed URLs](https://github.com/yt-dlp/yt-dlp/commit/36b240f9a72af57eb2c9d927ebb7fd1c917ebf18) ([#9613](https://github.com/yt-dlp/yt-dlp/issues/9613)) by [johnvictorfs](https://github.com/johnvictorfs)
|
||||
- **radio1be**: [Add extractor](https://github.com/yt-dlp/yt-dlp/commit/36baaa10e06715ccba06b78885b2042c4844c826) ([#9122](https://github.com/yt-dlp/yt-dlp/issues/9122)) by [HobbyistDev](https://github.com/HobbyistDev)
|
||||
- **sharepoint**: [Add extractor](https://github.com/yt-dlp/yt-dlp/commit/ff349ff94aae0b2b148bd3670f7c91d39c2f1d8e) ([#6531](https://github.com/yt-dlp/yt-dlp/issues/6531)) by [bashonly](https://github.com/bashonly), [C0D3D3V](https://github.com/C0D3D3V)
|
||||
- **sonylivseries**: [Fix season extraction](https://github.com/yt-dlp/yt-dlp/commit/f2868b26e917354203f82a370ad2396646edb813) ([#9423](https://github.com/yt-dlp/yt-dlp/issues/9423)) by [bashonly](https://github.com/bashonly)
|
||||
- **soundcloud**
|
||||
- [Adjust format sorting](https://github.com/yt-dlp/yt-dlp/commit/a2d0840739cddd585d24e0ce4796394fc8a4fa2e) ([#9584](https://github.com/yt-dlp/yt-dlp/issues/9584)) by [bashonly](https://github.com/bashonly)
|
||||
- [Support cookies](https://github.com/yt-dlp/yt-dlp/commit/97362712a1f2b04e735bdf54f749ad99165a62fe) ([#9586](https://github.com/yt-dlp/yt-dlp/issues/9586)) by [bashonly](https://github.com/bashonly)
|
||||
- [Support retries for API rate-limit](https://github.com/yt-dlp/yt-dlp/commit/246571ae1d867df8bf31a056bdf3bbbfd398366a) ([#9585](https://github.com/yt-dlp/yt-dlp/issues/9585)) by [bashonly](https://github.com/bashonly)
|
||||
- **thisoldhouse**: [Support Brightcove embeds](https://github.com/yt-dlp/yt-dlp/commit/0df63cce69026d2f4c0cbb4dd36163e83eac93dc) ([#9576](https://github.com/yt-dlp/yt-dlp/issues/9576)) by [bashonly](https://github.com/bashonly)
|
||||
- **tiktok**
|
||||
- [Fix API extraction](https://github.com/yt-dlp/yt-dlp/commit/cb61e20c266facabb7a30f9ce53bd79dfc158475) ([#9548](https://github.com/yt-dlp/yt-dlp/issues/9548)) by [bashonly](https://github.com/bashonly), [Grub4K](https://github.com/Grub4K)
|
||||
- [Prefer non-bytevc2 formats](https://github.com/yt-dlp/yt-dlp/commit/63f685f341f35f6f02b0368d1ba53bdb5b520410) ([#9575](https://github.com/yt-dlp/yt-dlp/issues/9575)) by [bashonly](https://github.com/bashonly)
|
||||
- [Restore `carrier_region` API parameter](https://github.com/yt-dlp/yt-dlp/commit/fc53ec13ff1ee926a3e533a68cfca8acc887b661) ([#9637](https://github.com/yt-dlp/yt-dlp/issues/9637)) by [bashonly](https://github.com/bashonly)
|
||||
- [Update API hostname](https://github.com/yt-dlp/yt-dlp/commit/8c05b3ebae23c5b444857549a85b84004c01a536) ([#9444](https://github.com/yt-dlp/yt-dlp/issues/9444)) by [bashonly](https://github.com/bashonly)
|
||||
- **twitch**: [Extract AV1 and HEVC formats](https://github.com/yt-dlp/yt-dlp/commit/02f93ff51b3ff9436d60c4993562b366eaae8851) ([#9158](https://github.com/yt-dlp/yt-dlp/issues/9158)) by [kasper93](https://github.com/kasper93)
|
||||
- **vkplay**: [Fix `_VALID_URL`](https://github.com/yt-dlp/yt-dlp/commit/b15b0c1d2106437ec61a5c436c543e8760eac160) ([#9636](https://github.com/yt-dlp/yt-dlp/issues/9636)) by [bashonly](https://github.com/bashonly)
|
||||
- **xvideos**: [Support new URL format](https://github.com/yt-dlp/yt-dlp/commit/aa7e9ae4f48276bd5d0173966c77db9484f65a0a) ([#9502](https://github.com/yt-dlp/yt-dlp/issues/9502)) by [sta1us](https://github.com/sta1us)
|
||||
- **youtube**
|
||||
- [Calculate more accurate `filesize`](https://github.com/yt-dlp/yt-dlp/commit/a25a424323267e3f6f9f63c0b62df499bd7b8d46) by [pukkandan](https://github.com/pukkandan)
|
||||
- [Update `android` params](https://github.com/yt-dlp/yt-dlp/commit/e7b17fce14775bd2448695c8eb7379b8d31d3537) by [pukkandan](https://github.com/pukkandan)
|
||||
- search: [Fix params for uncensored results](https://github.com/yt-dlp/yt-dlp/commit/17d248a58781e2588d18a5ebe00c441d10011fcd) ([#9456](https://github.com/yt-dlp/yt-dlp/issues/9456)) by [alb](https://github.com/alb), [pukkandan](https://github.com/pukkandan)
|
||||
|
||||
#### Downloader changes
|
||||
- **ffmpeg**: [Accept output args from info dict](https://github.com/yt-dlp/yt-dlp/commit/9c42b7eef547e826e9fcc7beb6706a2523949d05) ([#9278](https://github.com/yt-dlp/yt-dlp/issues/9278)) by [bashonly](https://github.com/bashonly)
|
||||
|
||||
#### Networking changes
|
||||
- [Respect `SSLKEYLOGFILE` environment variable](https://github.com/yt-dlp/yt-dlp/commit/79a451e5763eda8b10d00684d5d3378f3255ee01) ([#9543](https://github.com/yt-dlp/yt-dlp/issues/9543)) by [luiso1979](https://github.com/luiso1979)
|
||||
- **Request Handler**
|
||||
- curlcffi: [Add support for `curl_cffi`](https://github.com/yt-dlp/yt-dlp/commit/52f5be1f1e0dc45bb397ab950f564721976a39bf) by [bashonly](https://github.com/bashonly), [coletdjnz](https://github.com/coletdjnz), [Grub4K](https://github.com/Grub4K), [pukkandan](https://github.com/pukkandan)
|
||||
- websockets: [Workaround race condition causing issues on PyPy](https://github.com/yt-dlp/yt-dlp/commit/e5d4f11104ce7ea1717a90eea82c0f7d230ea5d5) ([#9514](https://github.com/yt-dlp/yt-dlp/issues/9514)) by [coletdjnz](https://github.com/coletdjnz)
|
||||
|
||||
#### Misc. changes
|
||||
- **build**
|
||||
- [Do not include `curl_cffi` in `macos_legacy`](https://github.com/yt-dlp/yt-dlp/commit/b19ae095fdddd43c2a2c67d10fbe0d9a645bb98f) ([#9653](https://github.com/yt-dlp/yt-dlp/issues/9653)) by [bashonly](https://github.com/bashonly)
|
||||
- [Optional dependencies cleanup](https://github.com/yt-dlp/yt-dlp/commit/58dd0f8d1eee6bc9fdc57f1923bed772fa3c946d) ([#9550](https://github.com/yt-dlp/yt-dlp/issues/9550)) by [bashonly](https://github.com/bashonly)
|
||||
- [Print SHA sums to GHA logs](https://github.com/yt-dlp/yt-dlp/commit/e8032503b9517465b0e86d776fc1e60d8795d673) ([#9582](https://github.com/yt-dlp/yt-dlp/issues/9582)) by [bashonly](https://github.com/bashonly)
|
||||
- [Update changelog for tarball and sdist](https://github.com/yt-dlp/yt-dlp/commit/17b96974a334688f76b57d350e07cae8cda46877) ([#9425](https://github.com/yt-dlp/yt-dlp/issues/9425)) by [bashonly](https://github.com/bashonly)
|
||||
- **cleanup**
|
||||
- [Standardize `import datetime as dt`](https://github.com/yt-dlp/yt-dlp/commit/c305a25c1b16bcf7a5ec499c3b786ed1e2c748da) ([#8978](https://github.com/yt-dlp/yt-dlp/issues/8978)) by [pukkandan](https://github.com/pukkandan)
|
||||
- ie: [No `from` stdlib imports in extractors](https://github.com/yt-dlp/yt-dlp/commit/e3a3ed8a981d9395c4859b6ef56cd02bc3148db2) by [pukkandan](https://github.com/pukkandan)
|
||||
- Miscellaneous: [216f6a3](https://github.com/yt-dlp/yt-dlp/commit/216f6a3cb57824e6a3c859649ce058c199b1b247) by [bashonly](https://github.com/bashonly), [pukkandan](https://github.com/pukkandan)
|
||||
- **docs**
|
||||
- [Update yt-dlp tagline](https://github.com/yt-dlp/yt-dlp/commit/388c979ac63a8774339fac2516fe1cc852b4276e) ([#9481](https://github.com/yt-dlp/yt-dlp/issues/9481)) by [bashonly](https://github.com/bashonly), [coletdjnz](https://github.com/coletdjnz), [Grub4K](https://github.com/Grub4K), [pukkandan](https://github.com/pukkandan), [seproDev](https://github.com/seproDev)
|
||||
- [Various manpage fixes](https://github.com/yt-dlp/yt-dlp/commit/df0e138fc02ae2764a44f2f59fc93c756c4d3ee2) by [leoheitmannruiz](https://github.com/leoheitmannruiz)
|
||||
- **test**
|
||||
- [Workaround websocket server hanging](https://github.com/yt-dlp/yt-dlp/commit/f849d77ab54788446b995d256e1ee0894c4fb927) ([#9467](https://github.com/yt-dlp/yt-dlp/issues/9467)) by [coletdjnz](https://github.com/coletdjnz)
|
||||
- `traversal`: [Separate traversal tests](https://github.com/yt-dlp/yt-dlp/commit/979ce2e786f2ee3fc783b6dc1ef4188d8805c923) ([#9574](https://github.com/yt-dlp/yt-dlp/issues/9574)) by [Grub4K](https://github.com/Grub4K)
|
||||
|
||||
### 2024.03.10
|
||||
|
||||
#### Core changes
|
||||
|
@@ -10,9 +10,12 @@ tar: yt-dlp.tar.gz
|
||||
# intended use: when building a source distribution,
|
||||
# make pypi-files && python3 -m build -sn .
|
||||
pypi-files: AUTHORS Changelog.md LICENSE README.md README.txt supportedsites \
|
||||
completions yt-dlp.1 pyproject.toml setup.cfg devscripts/* test/*
|
||||
completions yt-dlp.1 pyproject.toml setup.cfg devscripts/* test/*
|
||||
|
||||
.PHONY: all clean install test tar pypi-files completions ot offlinetest codetest supportedsites
|
||||
.PHONY: all clean clean-all clean-test clean-dist clean-cache \
|
||||
completions completion-bash completion-fish completion-zsh \
|
||||
doc issuetemplates supportedsites ot offlinetest codetest test \
|
||||
tar pypi-files lazy-extractors install uninstall
|
||||
|
||||
clean-test:
|
||||
rm -rf test/testdata/sigs/player-*.js tmp/ *.annotations.xml *.aria2 *.description *.dump *.frag \
|
||||
|
@@ -158,6 +158,7 @@ When using `--update`/`-U`, a release binary will only update to its current cha
|
||||
You may also use `--update-to <repository>` (`<owner>/<repository>`) to update to a channel on a completely different repository. Be careful with what repository you are updating to though, there is no verification done for binaries from different repositories.
|
||||
|
||||
Example usage:
|
||||
|
||||
* `yt-dlp --update-to master` switch to the `master` channel and update to its latest release
|
||||
* `yt-dlp --update-to stable@2023.07.06` upgrade/downgrade to release to `stable` channel tag `2023.07.06`
|
||||
* `yt-dlp --update-to 2023.10.07` upgrade/downgrade to tag `2023.10.07` if it exists on the current channel
|
||||
@@ -202,7 +203,7 @@ The following provide support for impersonating browser requests. This may be re
|
||||
|
||||
* [**curl_cffi**](https://github.com/yifeikong/curl_cffi) (recommended) - Python binding for [curl-impersonate](https://github.com/lwthiker/curl-impersonate). Provides impersonation targets for Chrome, Edge and Safari. Licensed under [MIT](https://github.com/yifeikong/curl_cffi/blob/main/LICENSE)
|
||||
* Can be installed with the `curl_cffi` group, e.g. `pip install yt-dlp[default,curl_cffi]`
|
||||
* Only included in `yt-dlp.exe`, `yt-dlp_macos` and `yt-dlp_macos_legacy` builds
|
||||
* Currently only included in `yt-dlp.exe` and `yt-dlp_macos` builds
|
||||
|
||||
|
||||
### Metadata
|
||||
@@ -757,6 +758,7 @@ If you fork the project on GitHub, you can run your fork's [build workflow](.git
|
||||
accessible under "progress" key. E.g.
|
||||
--console-title --progress-template
|
||||
"download-title:%(info.id)s-%(progress.eta)s"
|
||||
--progress-delta SECONDS Time between progress output (default: 0)
|
||||
-v, --verbose Print various debugging information
|
||||
--dump-pages Print downloaded pages encoded using base64
|
||||
to debug problems (very verbose)
|
||||
@@ -1892,6 +1894,7 @@ Plugins can be installed using various methods and locations.
|
||||
|
||||
|
||||
`.zip`, `.egg` and `.whl` archives containing a `yt_dlp_plugins` namespace folder in their root are also supported as plugin packages.
|
||||
|
||||
* e.g. `${XDG_CONFIG_HOME}/yt-dlp/plugins/mypluginpkg.zip` where `mypluginpkg.zip` contains `yt_dlp_plugins/<type>/myplugin.py`
|
||||
|
||||
Run yt-dlp with `--verbose` to check if the plugin has been loaded.
|
||||
|
@@ -127,8 +127,25 @@
|
||||
"short": "[ie] Support multi-period MPD streams (#6654)",
|
||||
"authors": ["alard", "pukkandan"]
|
||||
},
|
||||
{
|
||||
"action": "change",
|
||||
"when": "aa7e9ae4f48276bd5d0173966c77db9484f65a0a",
|
||||
"short": "[ie/xvideos] Support new URL format (#9502)",
|
||||
"authors": ["sta1us"]
|
||||
},
|
||||
{
|
||||
"action": "remove",
|
||||
"when": "22e4dfacb61f62dfbb3eb41b31c7b69ba1059b80"
|
||||
},
|
||||
{
|
||||
"action": "change",
|
||||
"when": "e3a3ed8a981d9395c4859b6ef56cd02bc3148db2",
|
||||
"short": "[cleanup:ie] No `from` stdlib imports in extractors",
|
||||
"authors": ["pukkandan"]
|
||||
},
|
||||
{
|
||||
"action": "add",
|
||||
"when": "9590cc6b4768e190183d7d071a6c78170889116a",
|
||||
"short": "[priority] Security: [[CVE-2024-22423](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2024-22423)] [Prevent RCE when using `--exec` with `%q` on Windows](https://github.com/yt-dlp/yt-dlp/security/advisories/GHSA-hjq6-52gw-2g7p)\n - The shell escape function now properly escapes `%`, `\\` and `\\n`.\n - `utils.Popen` has been patched accordingly."
|
||||
}
|
||||
]
|
||||
|
@@ -43,6 +43,27 @@ def filter_excluded_sections(readme):
|
||||
'', readme)
|
||||
|
||||
|
||||
def _convert_code_blocks(readme):
|
||||
current_code_block = None
|
||||
|
||||
for line in readme.splitlines(True):
|
||||
if current_code_block:
|
||||
if line == current_code_block:
|
||||
current_code_block = None
|
||||
yield '\n'
|
||||
else:
|
||||
yield f' {line}'
|
||||
elif line.startswith('```'):
|
||||
current_code_block = line.count('`') * '`' + '\n'
|
||||
yield '\n'
|
||||
else:
|
||||
yield line
|
||||
|
||||
|
||||
def convert_code_blocks(readme):
|
||||
return ''.join(_convert_code_blocks(readme))
|
||||
|
||||
|
||||
def move_sections(readme):
|
||||
MOVE_TAG_TEMPLATE = '<!-- MANPAGE: MOVE "%s" SECTION HERE -->'
|
||||
sections = re.findall(r'(?m)^%s$' % (
|
||||
@@ -65,8 +86,10 @@ def move_sections(readme):
|
||||
|
||||
def filter_options(readme):
|
||||
section = re.search(r'(?sm)^# USAGE AND OPTIONS\n.+?(?=^# )', readme).group(0)
|
||||
section_new = section.replace('*', R'\*')
|
||||
|
||||
options = '# OPTIONS\n'
|
||||
for line in section.split('\n')[1:]:
|
||||
for line in section_new.split('\n')[1:]:
|
||||
mobj = re.fullmatch(r'''(?x)
|
||||
\s{4}(?P<opt>-(?:,\s|[^\s])+)
|
||||
(?:\s(?P<meta>(?:[^\s]|\s(?!\s))+))?
|
||||
@@ -86,7 +109,7 @@ def filter_options(readme):
|
||||
return readme.replace(section, options, 1)
|
||||
|
||||
|
||||
TRANSFORM = compose_functions(filter_excluded_sections, move_sections, filter_options)
|
||||
TRANSFORM = compose_functions(filter_excluded_sections, convert_code_blocks, move_sections, filter_options)
|
||||
|
||||
|
||||
def main():
|
||||
|
@@ -47,7 +47,7 @@
|
||||
- **aenetworks:show**
|
||||
- **AeonCo**
|
||||
- **afreecatv**: [*afreecatv*](## "netrc machine") afreecatv.com
|
||||
- **afreecatv:live**: [*afreecatv*](## "netrc machine") afreecatv.com
|
||||
- **afreecatv:live**: [*afreecatv*](## "netrc machine") afreecatv.com livestreams
|
||||
- **afreecatv:user**
|
||||
- **AirTV**
|
||||
- **AitubeKZVideo**
|
||||
@@ -105,6 +105,7 @@
|
||||
- **ArteTVPlaylist**
|
||||
- **asobichannel**: ASOBI CHANNEL
|
||||
- **asobichannel:tag**: ASOBI CHANNEL
|
||||
- **AsobiStage**: ASOBISTAGE (アソビステージ)
|
||||
- **AtresPlayer**: [*atresplayer*](## "netrc machine")
|
||||
- **AtScaleConfEvent**
|
||||
- **ATVAt**
|
||||
@@ -436,6 +437,7 @@
|
||||
- **FacebookPluginsVideo**
|
||||
- **fancode:live**: [*fancode*](## "netrc machine") (**Currently broken**)
|
||||
- **fancode:vod**: [*fancode*](## "netrc machine") (**Currently broken**)
|
||||
- **Fathom**
|
||||
- **faz.net**
|
||||
- **fc2**: [*fc2*](## "netrc machine")
|
||||
- **fc2:embed**
|
||||
@@ -633,8 +635,9 @@
|
||||
- **Jamendo**
|
||||
- **JamendoAlbum**
|
||||
- **JeuxVideo**: (**Currently broken**)
|
||||
- **JioSaavnAlbum**
|
||||
- **JioSaavnSong**
|
||||
- **jiosaavn:album**
|
||||
- **jiosaavn:playlist**
|
||||
- **jiosaavn:song**
|
||||
- **Joj**
|
||||
- **JoqrAg**: 超!A&G+ 文化放送 (f.k.a. AGQR) Nippon Cultural Broadcasting, Inc. (JOQR)
|
||||
- **Jove**
|
||||
@@ -716,6 +719,8 @@
|
||||
- **Lnk**
|
||||
- **LnkGo**
|
||||
- **loc**: Library of Congress
|
||||
- **loom**
|
||||
- **loom:folder**
|
||||
- **LoveHomePorn**
|
||||
- **LRTStream**
|
||||
- **LRTVOD**
|
||||
@@ -1136,6 +1141,7 @@
|
||||
- **Radiko**
|
||||
- **RadikoRadio**
|
||||
- **radio.de**: (**Currently broken**)
|
||||
- **Radio1Be**
|
||||
- **radiocanada**
|
||||
- **radiocanada:audiovideo**
|
||||
- **RadioComercial**
|
||||
@@ -1288,6 +1294,7 @@
|
||||
- **SeznamZpravyArticle**
|
||||
- **Shahid**: [*shahid*](## "netrc machine")
|
||||
- **ShahidShow**
|
||||
- **SharePoint**
|
||||
- **ShareVideosEmbed**
|
||||
- **ShemarooMe**
|
||||
- **ShowRoomLive**
|
||||
|
@@ -26,27 +26,6 @@ _TEST_DATA = {
|
||||
|
||||
|
||||
class TestTraversal:
|
||||
def test_dict_get(self):
|
||||
FALSE_VALUES = {
|
||||
'none': None,
|
||||
'false': False,
|
||||
'zero': 0,
|
||||
'empty_string': '',
|
||||
'empty_list': [],
|
||||
}
|
||||
d = {**FALSE_VALUES, 'a': 42}
|
||||
assert dict_get(d, 'a') == 42
|
||||
assert dict_get(d, 'b') is None
|
||||
assert dict_get(d, 'b', 42) == 42
|
||||
assert dict_get(d, ('a',)) == 42
|
||||
assert dict_get(d, ('b', 'a')) == 42
|
||||
assert dict_get(d, ('b', 'c', 'a', 'd')) == 42
|
||||
assert dict_get(d, ('b', 'c')) is None
|
||||
assert dict_get(d, ('b', 'c'), 42) == 42
|
||||
for key, false_value in FALSE_VALUES.items():
|
||||
assert dict_get(d, ('b', 'c', key)) is None
|
||||
assert dict_get(d, ('b', 'c', key), skip_false_values=False) == false_value
|
||||
|
||||
def test_traversal_base(self):
|
||||
assert traverse_obj(_TEST_DATA, ('str',)) == 'str', \
|
||||
'allow tuple path'
|
||||
@@ -440,3 +419,26 @@ class TestTraversal:
|
||||
'function key should yield all values'
|
||||
assert traverse_obj(morsel, [(None,), any]) == morsel, \
|
||||
'Morsel should not be implicitly changed to dict on usage'
|
||||
|
||||
|
||||
class TestDictGet:
|
||||
def test_dict_get(self):
|
||||
FALSE_VALUES = {
|
||||
'none': None,
|
||||
'false': False,
|
||||
'zero': 0,
|
||||
'empty_string': '',
|
||||
'empty_list': [],
|
||||
}
|
||||
d = {**FALSE_VALUES, 'a': 42}
|
||||
assert dict_get(d, 'a') == 42
|
||||
assert dict_get(d, 'b') is None
|
||||
assert dict_get(d, 'b', 42) == 42
|
||||
assert dict_get(d, ('a',)) == 42
|
||||
assert dict_get(d, ('b', 'a')) == 42
|
||||
assert dict_get(d, ('b', 'c', 'a', 'd')) == 42
|
||||
assert dict_get(d, ('b', 'c')) is None
|
||||
assert dict_get(d, ('b', 'c'), 42) == 42
|
||||
for key, false_value in FALSE_VALUES.items():
|
||||
assert dict_get(d, ('b', 'c', key)) is None
|
||||
assert dict_get(d, ('b', 'c', key), skip_false_values=False) == false_value
|
||||
|
@@ -2069,6 +2069,10 @@ Line 1
|
||||
|
||||
# Test escaping
|
||||
assert run_shell(['echo', 'test"&']) == '"test""&"\n'
|
||||
assert run_shell(['echo', '%CMDCMDLINE:~-1%&']) == '"%CMDCMDLINE:~-1%&"\n'
|
||||
assert run_shell(['echo', 'a\nb']) == '"a"\n"b"\n'
|
||||
assert run_shell(['echo', '"']) == '""""\n'
|
||||
assert run_shell(['echo', '\\']) == '\\\n'
|
||||
# Test if delayed expansion is disabled
|
||||
assert run_shell(['echo', '^!']) == '"^!"\n'
|
||||
assert run_shell('echo "^!"') == '"^!"\n'
|
||||
|
@@ -25,7 +25,7 @@ import unicodedata
|
||||
|
||||
from .cache import Cache
|
||||
from .compat import functools, urllib # isort: split
|
||||
from .compat import compat_os_name, compat_shlex_quote, urllib_req_to_req
|
||||
from .compat import compat_os_name, urllib_req_to_req
|
||||
from .cookies import LenientSimpleCookie, load_cookies
|
||||
from .downloader import FFmpegFD, get_suitable_downloader, shorten_protocol_name
|
||||
from .downloader.rtmp import rtmpdump_version
|
||||
@@ -102,7 +102,6 @@ from .utils import (
|
||||
UserNotLive,
|
||||
YoutubeDLError,
|
||||
age_restricted,
|
||||
args_to_str,
|
||||
bug_reports_message,
|
||||
date_from_str,
|
||||
deprecation_warning,
|
||||
@@ -141,6 +140,7 @@ from .utils import (
|
||||
sanitize_filename,
|
||||
sanitize_path,
|
||||
sanitize_url,
|
||||
shell_quote,
|
||||
str_or_none,
|
||||
strftime_or_none,
|
||||
subtitles_filename,
|
||||
@@ -481,7 +481,7 @@ class YoutubeDL:
|
||||
nopart, updatetime, buffersize, ratelimit, throttledratelimit, min_filesize,
|
||||
max_filesize, test, noresizebuffer, retries, file_access_retries, fragment_retries,
|
||||
continuedl, xattr_set_filesize, hls_use_mpegts, http_chunk_size,
|
||||
external_downloader_args, concurrent_fragment_downloads.
|
||||
external_downloader_args, concurrent_fragment_downloads, progress_delta.
|
||||
|
||||
The following options are used by the post processors:
|
||||
ffmpeg_location: Location of the ffmpeg/avconv binary; either the path
|
||||
@@ -823,7 +823,7 @@ class YoutubeDL:
|
||||
self.report_warning(
|
||||
'Long argument string detected. '
|
||||
'Use -- to separate parameters and URLs, like this:\n%s' %
|
||||
args_to_str(correct_argv))
|
||||
shell_quote(correct_argv))
|
||||
|
||||
def add_info_extractor(self, ie):
|
||||
"""Add an InfoExtractor object to the end of the list."""
|
||||
@@ -1355,7 +1355,7 @@ class YoutubeDL:
|
||||
value, fmt = escapeHTML(str(value)), str_fmt
|
||||
elif fmt[-1] == 'q': # quoted
|
||||
value = map(str, variadic(value) if '#' in flags else [value])
|
||||
value, fmt = ' '.join(map(compat_shlex_quote, value)), str_fmt
|
||||
value, fmt = shell_quote(value, shell=True), str_fmt
|
||||
elif fmt[-1] == 'B': # bytes
|
||||
value = f'%{str_fmt}'.encode() % str(value).encode()
|
||||
value, fmt = value.decode('utf-8', 'ignore'), 's'
|
||||
|
@@ -836,6 +836,7 @@ def parse_options(argv=None):
|
||||
'noprogress': opts.quiet if opts.noprogress is None else opts.noprogress,
|
||||
'progress_with_newline': opts.progress_with_newline,
|
||||
'progress_template': opts.progress_template,
|
||||
'progress_delta': opts.progress_delta,
|
||||
'playliststart': opts.playliststart,
|
||||
'playlistend': opts.playlistend,
|
||||
'playlistreverse': opts.playlist_reverse,
|
||||
|
@@ -27,12 +27,9 @@ def compat_etree_fromstring(text):
|
||||
compat_os_name = os._name if os.name == 'java' else os.name
|
||||
|
||||
|
||||
if compat_os_name == 'nt':
|
||||
def compat_shlex_quote(s):
|
||||
import re
|
||||
return s if re.match(r'^[-_\w./]+$', s) else s.replace('"', '""').join('""')
|
||||
else:
|
||||
from shlex import quote as compat_shlex_quote # noqa: F401
|
||||
def compat_shlex_quote(s):
|
||||
from ..utils import shell_quote
|
||||
return shell_quote(s)
|
||||
|
||||
|
||||
def compat_ord(c):
|
||||
|
@@ -4,6 +4,7 @@ import functools
|
||||
import os
|
||||
import random
|
||||
import re
|
||||
import threading
|
||||
import time
|
||||
|
||||
from ..minicurses import (
|
||||
@@ -63,6 +64,7 @@ class FileDownloader:
|
||||
min_filesize: Skip files smaller than this size
|
||||
max_filesize: Skip files larger than this size
|
||||
xattr_set_filesize: Set ytdl.filesize user xattribute with expected size.
|
||||
progress_delta: The minimum time between progress output, in seconds
|
||||
external_downloader_args: A dictionary of downloader keys (in lower case)
|
||||
and a list of additional command-line arguments for the
|
||||
executable. Use 'default' as the name for arguments to be
|
||||
@@ -88,6 +90,9 @@ class FileDownloader:
|
||||
self.params = params
|
||||
self._prepare_multiline_status()
|
||||
self.add_progress_hook(self.report_progress)
|
||||
if self.params.get('progress_delta'):
|
||||
self._progress_delta_lock = threading.Lock()
|
||||
self._progress_delta_time = time.monotonic()
|
||||
|
||||
def _set_ydl(self, ydl):
|
||||
self.ydl = ydl
|
||||
@@ -366,6 +371,12 @@ class FileDownloader:
|
||||
if s['status'] != 'downloading':
|
||||
return
|
||||
|
||||
if update_delta := self.params.get('progress_delta'):
|
||||
with self._progress_delta_lock:
|
||||
if time.monotonic() < self._progress_delta_time:
|
||||
return
|
||||
self._progress_delta_time += update_delta
|
||||
|
||||
s.update({
|
||||
'_eta_str': self.format_eta(s.get('eta')).strip(),
|
||||
'_speed_str': self.format_speed(s.get('speed')),
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user