Skip to content

Commit 7a1c756

Browse files
committed
feat: add deny web page requests support
1 parent b23b224 commit 7a1c756

File tree

2 files changed

+26
-12
lines changed

2 files changed

+26
-12
lines changed

README.md

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,14 @@ Usage:
1111
git-proxy [flags]
1212

1313
Flags:
14-
-l, --bandwidth-limit int set total bandwidth limit (MB/s), 0 as no limit (default 0)
15-
-b, --blacklist-path string set repository blacklist (default "blacklist.txt")
16-
--disable-color disable color output
17-
-d, --domain-list-path string set accept domain (default "domainlist.txt")
18-
-h, --help help for git-proxy
19-
-p, --running-port int disable color output (default 30000)
20-
14+
-l, --bandwidth-limit int set total bandwidth limit (MB/s), 0 as no limit
15+
-b, --blacklist-path string set repository blacklist (default "blacklist.txt")
16+
--deny-web-page deny web page requests
17+
--deny-web-page-list strings deny web page requests list (default [github.com,gist.github.com])
18+
--disable-color disable color output
19+
-d, --domain-list-path string set accept domain (default "domainlist.txt")
20+
-h, --help help for git-proxy
21+
-p, --running-port int disable color output (default 30000)
2122
```
2223

2324
### URL scheme

main.go

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -41,11 +41,13 @@ var log = L.NewDefaultFactory(
4141
).Logger()
4242

4343
var (
44-
disableColor bool
45-
runningPort int
46-
domainListPath string
47-
blacklistPath string
48-
bandwidthLimit int
44+
disableColor bool
45+
runningPort int
46+
domainListPath string
47+
blacklistPath string
48+
bandwidthLimit int
49+
denyWebPage bool
50+
denyWebPageList []string
4951
)
5052

5153
var BandwidthLimiter *R.Bucket
@@ -75,6 +77,8 @@ func init() {
7577
command.PersistentFlags().StringVarP(&domainListPath, "domain-list-path", "d", "domainlist.txt", "set accept domain")
7678
command.PersistentFlags().StringVarP(&blacklistPath, "blacklist-path", "b", "blacklist.txt", "set repository blacklist")
7779
command.PersistentFlags().IntVarP(&bandwidthLimit, "bandwidth-limit", "l", 0, "set total bandwidth limit (MB/s), 0 as no limit")
80+
command.PersistentFlags().BoolVarP(&denyWebPage, "deny-web-page", "", false, "deny web page requests")
81+
command.PersistentFlags().StringSliceVarP(&denyWebPageList, "deny-web-page-list", "", []string{"github.com", "gist.github.com"}, "deny web page requests list")
7882
}
7983

8084
func main() {
@@ -104,6 +108,9 @@ func run(*cobra.Command, []string) {
104108
BandwidthLimiter = R.NewBucketWithRate(float64(bandwidthLimit*1024*1024), int64(bandwidthLimit*1024*1024))
105109
log.Info("Bandwidth limit is set as ", bandwidthLimit, "MB/s")
106110
}
111+
if denyWebPage && len(denyWebPageList) > 0 {
112+
log.Info("Denying web page requests, domain list: [", strings.Join(denyWebPageList, ", "), "]")
113+
}
107114
if watcher, err := loadDomainList(); err == nil {
108115
err = watcher.Start()
109116
if err == nil {
@@ -525,6 +532,12 @@ func sendRequestWithURL(URL *url.URL) http.Handler {
525532
return
526533
}
527534
defer response.Body.Close()
535+
if denyWebPage && len(denyWebPageList) > 0 && common.Any(denyWebPageList, func(it string) bool {
536+
return strings.ToLower(it) == strings.ToLower(URL.Host)
537+
}) && response.StatusCode > 199 && response.StatusCode < 300 && strings.Contains(strings.ToLower(response.Header.Get("Content-Type")), "text/html") {
538+
responseWithError(E.New("Refuse to serve web page")).ServeHTTP(w, r)
539+
return
540+
}
528541
for key, values := range response.Header {
529542
delete(w.Header(), key)
530543
for _, value := range values {

0 commit comments

Comments
 (0)