Compare commits
4 Commits
proxy_v2_i
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e08e336efe | ||
|
|
3918cf39ac | ||
|
|
92b5233257 | ||
|
|
a849603d8b |
@@ -7,7 +7,7 @@ COPY . .
|
||||
|
||||
RUN go mod download
|
||||
|
||||
RUN make build
|
||||
RUN CGO_ENABLED=0 GOOS=linux go build -o ladder cmd/main.go
|
||||
|
||||
FROM debian:12-slim as release
|
||||
|
||||
@@ -18,4 +18,8 @@ RUN chmod +x /app/ladder
|
||||
|
||||
RUN apt update && apt install -y ca-certificates && rm -rf /var/lib/apt/lists/*
|
||||
|
||||
#EXPOSE 8080
|
||||
|
||||
#ENTRYPOINT ["/usr/bin/dumb-init", "--"]
|
||||
|
||||
CMD ["sh", "-c", "/app/ladder"]
|
||||
@@ -6,7 +6,7 @@
|
||||
<div><img alt="License" src="https://img.shields.io/github/license/everywall/ladder"> <img alt="go.mod Go version " src="https://img.shields.io/github/go-mod/go-version/everywall/ladder"> <img alt="GitHub tag (with filter)" src="https://img.shields.io/github/v/tag/everywall/ladder"> <img alt="GitHub (Pre-)Release Date" src="https://img.shields.io/github/release-date-pre/everywall/ladder"> <img alt="GitHub Downloads all releases" src="https://img.shields.io/github/downloads/everywall/ladder/total"> <img alt="GitHub Build Status (with event)" src="https://img.shields.io/github/actions/workflow/status/everywall/ladder/release-binaries.yaml"></div>
|
||||
|
||||
|
||||
*Ladder is a web proxy to help bypass paywalls.* This is a selfhosted version of [1ft.io](https://1ft.io) and [12ft.io](https://12ft.io). It is inspired by [13ft](https://github.com/wasi-master/13ft).
|
||||
*Ladder is a http web proxy.* This is a selfhosted version of [1ft.io](https://1ft.io) and [12ft.io](https://12ft.io). It is inspired by [13ft](https://github.com/wasi-master/13ft).
|
||||
|
||||
### Why
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@ services:
|
||||
ladder:
|
||||
image: ghcr.io/everywall/ladder:latest
|
||||
container_name: ladder
|
||||
build: .
|
||||
#build: .
|
||||
#restart: always
|
||||
#command: sh -c ./ladder
|
||||
environment:
|
||||
|
||||
@@ -8,7 +8,9 @@ import (
|
||||
"net/url"
|
||||
"os"
|
||||
"regexp"
|
||||
"strconv"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"ladder/pkg/ruleset"
|
||||
|
||||
@@ -21,6 +23,7 @@ var (
|
||||
ForwardedFor = getenv("X_FORWARDED_FOR", "66.249.66.1")
|
||||
rulesSet = ruleset.NewRulesetFromEnv()
|
||||
allowedDomains = []string{}
|
||||
defaultTimeout = 15 // in seconds
|
||||
)
|
||||
|
||||
func init() {
|
||||
@@ -28,6 +31,9 @@ func init() {
|
||||
if os.Getenv("ALLOWED_DOMAINS_RULESET") == "true" {
|
||||
allowedDomains = append(allowedDomains, rulesSet.Domains()...)
|
||||
}
|
||||
if timeoutStr := os.Getenv("HTTP_TIMEOUT"); timeoutStr != "" {
|
||||
defaultTimeout, _ = strconv.Atoi(timeoutStr)
|
||||
}
|
||||
}
|
||||
|
||||
// extracts a URL from the request ctx. If the URL in the request
|
||||
@@ -181,7 +187,9 @@ func fetchSite(urlpath string, queries map[string]string) (string, *http.Request
|
||||
}
|
||||
|
||||
// Fetch the site
|
||||
client := &http.Client{}
|
||||
client := &http.Client{
|
||||
Timeout: time.Second * time.Duration(defaultTimeout),
|
||||
}
|
||||
req, _ := http.NewRequest("GET", url, nil)
|
||||
|
||||
if rule.Headers.UserAgent != "" {
|
||||
|
||||
Reference in New Issue
Block a user