Browse Source

Merge remote-tracking branch 'origin/master'

master v0.0.56
RealXLFD 1 month ago
parent
commit
e6c04cd422
  1. 14
      cli/logger/index.go
  2. 8
      cli/logger/options.go
  3. 4
      cli/logger/writer.go
  4. 2
      cli/spinner/internal.go
  5. 5
      go.mod
  6. 11
      go.sum
  7. 97
      net/apis/cookiecloud/index.go
  8. 2
      net/apps/reverse_proxy/logger.go
  9. 55
      utils/str/types.go

14
cli/logger/index.go

@ -8,7 +8,7 @@ import (
"github.com/gookit/color"
)
type Logger struct {
type L struct {
Level Level // 日志级别
HideTime bool // 是否隐藏时间戳
LengthLimit int // 设置logger消息长度限制
@ -47,15 +47,15 @@ var (
}
)
func New(opts ...Option) *Logger {
logger := &Logger{}
func New(opts ...Option) *L {
logger := &L{}
for _, opt := range opts {
opt(logger)
}
return logger
}
func (l Logger) Info(msgs ...string) *Logger {
func (l L) Info(msgs ...string) *L {
msg := str.Join(msgs...)
if l.Level < LevelInfo {
return &l
@ -71,7 +71,7 @@ func (l Logger) Info(msgs ...string) *Logger {
return &l
}
func (l Logger) Debug(msgs ...string) *Logger {
func (l L) Debug(msgs ...string) *L {
msg := str.Join(msgs...)
if l.Level < LevelDebug {
return &l
@ -87,7 +87,7 @@ func (l Logger) Debug(msgs ...string) *Logger {
return &l
}
func (l Logger) Warn(msgs ...string) *Logger {
func (l L) Warn(msgs ...string) *L {
msg := str.Join(msgs...)
if l.Level < LevelWarn {
return &l
@ -103,7 +103,7 @@ func (l Logger) Warn(msgs ...string) *Logger {
return &l
}
func (l Logger) Error(msgs ...string) *Logger {
func (l L) Error(msgs ...string) *L {
msg := str.Join(msgs...)
if l.Level < LevelError {
return &l

8
cli/logger/options.go

@ -1,21 +1,21 @@
package logger
type Option func(*Logger)
type Option func(*L)
func WithLevel(level Level) Option {
return func(logger *Logger) {
return func(logger *L) {
logger.Level = level
}
}
func WithHideTime() Option {
return func(logger *Logger) {
return func(logger *L) {
logger.HideTime = true
}
}
func WithLengthLimit(limit int) Option {
return func(logger *Logger) {
return func(logger *L) {
logger.LengthLimit = limit
}
}

4
cli/logger/writer.go

@ -5,11 +5,11 @@ import (
)
type ErrorWriter struct {
logger *Logger
logger *L
}
// ToErrorWriter 将记录器转换为io.Writer
func (l Logger) ToErrorWriter() *ErrorWriter {
func (l L) ToErrorWriter() *ErrorWriter {
return &ErrorWriter{logger: &l}
}

2
cli/spinner/internal.go

@ -43,7 +43,7 @@ func upzero(i int) int {
}
func render(s *Spinner, content string) {
s.lock.Lock()
fmt.Print(content)
fmt.Print(str.TrimMiddle(content, s.Conf.MsgMaxLength))
s.lock.Unlock()
}
func launch(s *Spinner) {

5
go.mod

@ -6,8 +6,8 @@ require (
github.com/PuerkitoBio/goquery v1.9.1
github.com/dustin/go-humanize v1.0.1
github.com/eiannone/keyboard v0.0.0-20220611211555-0d226195f203
github.com/fsnotify/fsnotify v1.7.0
github.com/gookit/color v1.5.4
github.com/k0kubun/pp/v3 v3.2.0
github.com/parnurzeal/gorequest v0.3.0
github.com/rs/xid v1.5.0
github.com/stretchr/testify v1.8.4
@ -21,8 +21,6 @@ require (
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
github.com/elazarl/goproxy v0.0.0-20231117061959-7cc037d33fb5 // indirect
github.com/google/go-cmp v0.5.9 // indirect
github.com/mattn/go-colorable v0.1.13 // indirect
github.com/mattn/go-isatty v0.0.16 // indirect
github.com/moul/http2curl v1.0.0 // indirect
github.com/pkg/errors v0.9.1 // indirect
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect
@ -31,6 +29,5 @@ require (
github.com/xo/terminfo v0.0.0-20210125001918-ca9a967f8778 // indirect
golang.org/x/net v0.22.0 // indirect
golang.org/x/sys v0.18.0 // indirect
golang.org/x/text v0.14.0 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
)

11
go.sum

@ -25,6 +25,8 @@ github.com/eiannone/keyboard v0.0.0-20220611211555-0d226195f203/go.mod h1:E1jcSv
github.com/elazarl/goproxy v0.0.0-20231117061959-7cc037d33fb5 h1:m62nsMU279qRD9PQSWD1l66kmkXzuYcnVJqL4XLeV2M=
github.com/elazarl/goproxy v0.0.0-20231117061959-7cc037d33fb5/go.mod h1:Ro8st/ElPeALwNFlcTpWmkr6IoMFfkjXAvTHpevnDsM=
github.com/elazarl/goproxy/ext v0.0.0-20190711103511-473e67f1d7d2/go.mod h1:gNh8nYJoAm43RfaxurUnxr+N1PwuFV3ZMl/efxlIlY8=
github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA=
github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM=
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58=
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
@ -54,12 +56,6 @@ github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ
github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU=
github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo=
github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU=
github.com/k0kubun/pp/v3 v3.2.0 h1:h33hNTZ9nVFNP3u2Fsgz8JXiF5JINoZfFq4SvKJwNcs=
github.com/k0kubun/pp/v3 v3.2.0/go.mod h1:ODtJQbQcIRfAD3N+theGCV1m/CBxweERz2dapdz1EwA=
github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA=
github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg=
github.com/mattn/go-isatty v0.0.16 h1:bq3VjFmv/sOjHtdEhmkEV4x1AJtvUvOJ2PFAZ5+peKQ=
github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
github.com/moul/http2curl v1.0.0 h1:dRMWoAtb+ePxMlLkrCbAqh4TlPHXvoGUSQ323/9Zahs=
github.com/moul/http2curl v1.0.0/go.mod h1:8UbvGypXm98wA/IqH45anm5Y2Z6ep6O31QGOAZ3H0fQ=
github.com/parnurzeal/gorequest v0.3.0 h1:SoFyqCDC9COr1xuS6VA8fC8RU7XyrJZN2ona1kEX7FI=
@ -140,7 +136,6 @@ golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7w
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.18.0 h1:DBdB3niSjOA/O0blCZBqDefyWNYveAYMNF1Wum0DYQ4=
@ -156,8 +151,6 @@ golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
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.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=

97
net/apis/cookiecloud/index.go

@ -0,0 +1,97 @@
package cookiecloud
import (
"bytes"
"encoding/json"
"io"
"net/http"
"net/url"
"strings"
"git.realxlfd.cc/RealXLFD/golib/utils/str"
)
var (
data *Data
)
type Data struct {
CookieData map[string][]CookieDatum `json:"cookie_data"`
LocalStorageData struct{} `json:"local_storage_data"`
UpdateTime string `json:"update_time"`
}
type CookieDatum struct {
Domain string `json:"domain"`
ExpirationDate *float64 `json:"expirationDate,omitempty"`
HostOnly bool `json:"hostOnly"`
HTTPOnly bool `json:"httpOnly"`
Name string `json:"name"`
Path string `json:"path"`
SameSite SameSite `json:"sameSite"`
Secure bool `json:"secure"`
Session bool `json:"session"`
StoreID string `json:"storeId"`
Value string `json:"value"`
}
type SameSite string
const (
Lax SameSite = "lax"
NoRestriction SameSite = "no_restriction"
Strict SameSite = "strict"
Unspecified SameSite = "unspecified"
)
func GetData(URL, id, pwd string, proxy ...string) error {
var proxyURL *url.URL
var err error
if len(proxy) != 0 {
proxyURL, err = url.Parse(proxy[0])
}
if err != nil {
panic(str.T("invalid proxy url: {}", URL))
}
target, err := url.Parse(URL)
if err != nil {
panic(str.T("invalid url: {}", URL))
}
requestData := str.Map{"password": pwd}.Json()
request, err := http.NewRequest(
"POST",
target.JoinPath("/get", id).String(),
bytes.NewBuffer(requestData),
)
if err != nil {
return err
}
request.Header.Set("Content-Type", "application/json")
client := &http.Client{Transport: &http.Transport{Proxy: http.ProxyURL(proxyURL)}}
resp, err := client.Do(request)
if err != nil {
return err
}
body, err := io.ReadAll(resp.Body)
if err != nil {
return err
}
data = &Data{}
return json.Unmarshal(body, data)
}
func Get(site string) (cookie string, ok bool) {
if len(data.CookieData) == 0 {
return "", false
}
cookies, ok := data.CookieData[str.Join(".", site)]
if !ok {
return "", ok
}
builder := &strings.Builder{}
for i := range cookies {
k, v := cookies[i].Name, cookies[i].Value
builder.WriteString(str.T("{}={};", k, v))
}
return builder.String(), true
}

2
net/apps/reverse_proxy/logger.go

@ -7,7 +7,7 @@ import (
)
var (
Logger = &logger.Logger{}
Logger = &logger.L{}
)
func SetLogLevel(level logger.Level) {

55
utils/str/types.go

@ -0,0 +1,55 @@
package str
import (
"encoding/json"
"sync"
)
type Map map[string]string
func (m Map) Json() []byte {
result, err := json.Marshal(m)
if err != nil {
panic(err)
}
return result
}
func KeyFrom(args ...string) *Key {
key := &Key{
data: map[string]struct{}{},
lock: &sync.Mutex{},
}
for i := range args {
key.data[args[i]] = struct{}{}
}
return key
}
type Key struct {
data map[string]struct{}
lock *sync.Mutex
}
func (k *Key) Add(args ...string) *Key {
k.lock.Lock()
defer k.lock.Unlock()
for i := range args {
k.data[args[i]] = struct{}{}
}
return k
}
func (k *Key) Has(key string) bool {
_, ok := k.data[key]
return ok
}
func (k *Key) Del(keys ...string) *Key {
k.lock.Lock()
defer k.lock.Unlock()
for i := range keys {
delete(k.data, keys[i])
}
return k
}
Loading…
Cancel
Save