mirror of
https://github.com/WJQSERVER-STUDIO/ghproxy.git
synced 2026-02-03 08:11:11 +08:00
update match
This commit is contained in:
parent
ae234e64a8
commit
4fa91b67cf
3 changed files with 35 additions and 30 deletions
|
|
@ -64,9 +64,11 @@ type GitCloneConfig struct {
|
||||||
/*
|
/*
|
||||||
[shell]
|
[shell]
|
||||||
editor = true
|
editor = true
|
||||||
|
rewriteAPI = false
|
||||||
*/
|
*/
|
||||||
type ShellConfig struct {
|
type ShellConfig struct {
|
||||||
Editor bool `toml:"editor"`
|
Editor bool `toml:"editor"`
|
||||||
|
RewriteAPI bool `toml:"rewriteAPI"`
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
||||||
|
|
@ -19,6 +19,7 @@ ForceH2C = false
|
||||||
|
|
||||||
[shell]
|
[shell]
|
||||||
editor = false
|
editor = false
|
||||||
|
rewriteAPI = false
|
||||||
|
|
||||||
[pages]
|
[pages]
|
||||||
mode = "internal" # "internal" or "external"
|
mode = "internal" # "internal" or "external"
|
||||||
|
|
|
||||||
|
|
@ -46,6 +46,19 @@ func Matcher(rawPath string, cfg *config.Config) (string, string, string, error)
|
||||||
repo string
|
repo string
|
||||||
matcher string
|
matcher string
|
||||||
)
|
)
|
||||||
|
// 匹配 "https://raw"开头的链接
|
||||||
|
if strings.HasPrefix(rawPath, "https://raw") {
|
||||||
|
remainingPath := strings.TrimPrefix(rawPath, "https://")
|
||||||
|
parts := strings.Split(remainingPath, "/")
|
||||||
|
if len(parts) <= 3 {
|
||||||
|
return "", "", "", ErrInvalidURL
|
||||||
|
}
|
||||||
|
user = parts[1]
|
||||||
|
repo = parts[2]
|
||||||
|
matcher = "raw"
|
||||||
|
|
||||||
|
return user, repo, matcher, nil
|
||||||
|
}
|
||||||
// 匹配 "https://github.com"开头的链接
|
// 匹配 "https://github.com"开头的链接
|
||||||
if strings.HasPrefix(rawPath, "https://github.com") {
|
if strings.HasPrefix(rawPath, "https://github.com") {
|
||||||
remainingPath := strings.TrimPrefix(rawPath, "https://github.com")
|
remainingPath := strings.TrimPrefix(rawPath, "https://github.com")
|
||||||
|
|
@ -75,19 +88,6 @@ func Matcher(rawPath string, cfg *config.Config) (string, string, string, error)
|
||||||
}
|
}
|
||||||
return user, repo, matcher, nil
|
return user, repo, matcher, nil
|
||||||
}
|
}
|
||||||
// 匹配 "https://raw"开头的链接
|
|
||||||
if strings.HasPrefix(rawPath, "https://raw") {
|
|
||||||
remainingPath := strings.TrimPrefix(rawPath, "https://")
|
|
||||||
parts := strings.Split(remainingPath, "/")
|
|
||||||
if len(parts) <= 3 {
|
|
||||||
return "", "", "", ErrInvalidURL
|
|
||||||
}
|
|
||||||
user = parts[1]
|
|
||||||
repo = parts[2]
|
|
||||||
matcher = "raw"
|
|
||||||
|
|
||||||
return user, repo, matcher, nil
|
|
||||||
}
|
|
||||||
// 匹配 "https://gist"开头的链接
|
// 匹配 "https://gist"开头的链接
|
||||||
if strings.HasPrefix(rawPath, "https://gist") {
|
if strings.HasPrefix(rawPath, "https://gist") {
|
||||||
remainingPath := strings.TrimPrefix(rawPath, "https://")
|
remainingPath := strings.TrimPrefix(rawPath, "https://")
|
||||||
|
|
@ -100,25 +100,27 @@ func Matcher(rawPath string, cfg *config.Config) (string, string, string, error)
|
||||||
matcher = "gist"
|
matcher = "gist"
|
||||||
return user, repo, matcher, nil
|
return user, repo, matcher, nil
|
||||||
}
|
}
|
||||||
// 匹配 "https://api.github.com/"开头的链接
|
if cfg.Shell.RewriteAPI {
|
||||||
if strings.HasPrefix(rawPath, "https://api.github.com/") {
|
// 匹配 "https://api.github.com/"开头的链接
|
||||||
matcher = "api"
|
if strings.HasPrefix(rawPath, "https://api.github.com/") {
|
||||||
remainingPath := strings.TrimPrefix(rawPath, "https://api.github.com/")
|
matcher = "api"
|
||||||
|
remainingPath := strings.TrimPrefix(rawPath, "https://api.github.com/")
|
||||||
|
|
||||||
parts := strings.Split(remainingPath, "/")
|
parts := strings.Split(remainingPath, "/")
|
||||||
if parts[0] == "repos" {
|
if parts[0] == "repos" {
|
||||||
user = parts[1]
|
user = parts[1]
|
||||||
repo = parts[2]
|
repo = parts[2]
|
||||||
}
|
|
||||||
if parts[0] == "users" {
|
|
||||||
user = parts[1]
|
|
||||||
}
|
|
||||||
if !cfg.Auth.ForceAllowApi {
|
|
||||||
if cfg.Auth.AuthMethod != "header" || !cfg.Auth.Enabled {
|
|
||||||
return "", "", "", ErrAuthHeaderUnavailable
|
|
||||||
}
|
}
|
||||||
|
if parts[0] == "users" {
|
||||||
|
user = parts[1]
|
||||||
|
}
|
||||||
|
if !cfg.Auth.ForceAllowApi {
|
||||||
|
if cfg.Auth.AuthMethod != "header" || !cfg.Auth.Enabled {
|
||||||
|
return "", "", "", ErrAuthHeaderUnavailable
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return user, repo, matcher, nil
|
||||||
}
|
}
|
||||||
return user, repo, matcher, nil
|
|
||||||
}
|
}
|
||||||
return "", "", "", ErrInvalidURL
|
return "", "", "", ErrInvalidURL
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue