commit
1fe4f3b573
@ -0,0 +1,51 @@
|
||||
kind: pipeline
|
||||
type: ssh # 使用SSH
|
||||
name: go-privoxy
|
||||
|
||||
server:
|
||||
host:
|
||||
from_secret: ssh_host
|
||||
user:
|
||||
from_secret: ssh_user
|
||||
password:
|
||||
from_secret: ssh_password
|
||||
|
||||
clone:
|
||||
disable: true
|
||||
|
||||
steps:
|
||||
- name: build
|
||||
commands:
|
||||
- echo build start
|
||||
- date
|
||||
- export PATH=$PATH:/usr/local/go/bin
|
||||
- cd /root
|
||||
- rm -rf goPrivoxy
|
||||
- git clone https://git.sre.ink/go/goPrivoxy.git
|
||||
- cd goPrivoxy
|
||||
- make build-linux-arm64
|
||||
- date
|
||||
- echo build end
|
||||
- name: package
|
||||
commands:
|
||||
- echo package start
|
||||
- date
|
||||
- cd /root/goPrivoxy
|
||||
- docker build -t sre/goprivoxy:arm64 .
|
||||
- date
|
||||
- echo package end
|
||||
- name: deploy
|
||||
commands:
|
||||
- echo deploy start
|
||||
- date
|
||||
- export KUBECONFIG=/etc/kubernetes/admin.conf
|
||||
- kubectl -n sre rollout restart deployment go-privoxy
|
||||
- date
|
||||
- echo deploy end
|
||||
- name: alert
|
||||
commands:
|
||||
- echo alert start
|
||||
- date
|
||||
- echo deploy ok
|
||||
- date
|
||||
- echo alert end
|
||||
@ -0,0 +1,10 @@
|
||||
.idea
|
||||
go.sum
|
||||
main.exe
|
||||
eth.exe
|
||||
monitor.exe
|
||||
log.txt
|
||||
logs
|
||||
*.log
|
||||
uploads
|
||||
gin.log
|
||||
@ -0,0 +1,13 @@
|
||||
all: build-linux-arm64 build-linux-amd64
|
||||
|
||||
build-linux-arm64:
|
||||
CGO_ENABLED=0 GOOS=linux GOARCH=arm64 GO111MODULE=on go mod tidy
|
||||
CGO_ENABLED=0 GOOS=linux GOARCH=arm64 GO111MODULE=on go build -v -a -o privoxy.bin main.go
|
||||
|
||||
build-linux-amd64:
|
||||
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 GO111MODULE=on go mod tidy
|
||||
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 GO111MODULE=on go build -v -a -o privoxy.bin main.go
|
||||
docker build -t sre/goprivoxy:arm64 .
|
||||
docker rm -f goprivoxy
|
||||
docker run --name goprivoxy --restart always --net=host -d sre/goprivoxy:arm64
|
||||
docker logs -f goprivoxy
|
||||
@ -0,0 +1,63 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"io"
|
||||
"log"
|
||||
"net"
|
||||
"net/http"
|
||||
"strings"
|
||||
)
|
||||
|
||||
/*
|
||||
*
|
||||
@author: sre
|
||||
@date: 2022/8/21 0021
|
||||
@desc: todo
|
||||
*
|
||||
*/
|
||||
|
||||
type goPrivoxy struct {
|
||||
}
|
||||
|
||||
func (p *goPrivoxy) ServeHTTP(w http.ResponseWriter, req *http.Request) {
|
||||
log.Printf("接受请求 %s %s %s\n", req.Method, req.Host, req.RemoteAddr)
|
||||
|
||||
transport := http.DefaultTransport
|
||||
|
||||
// 第一步: 代理接受到客户端的请求,复制原来的请求对象,并根据数据配置新请求的各种参数(添加上X-Forward-For头部等)
|
||||
outReq := new(http.Request)
|
||||
*outReq = *req // 这只是一个浅层拷贝
|
||||
|
||||
clientIP, _, err := net.SplitHostPort(req.RemoteAddr)
|
||||
if err == nil {
|
||||
prior, ok := outReq.Header["X-Forwarded-For"]
|
||||
if ok {
|
||||
clientIP = strings.Join(prior, ", ") + ", " + clientIP
|
||||
}
|
||||
outReq.Header.Set("X-Forwarded-For", clientIP)
|
||||
}
|
||||
|
||||
// 第二步: 把新请求复制到服务器端,并接收到服务器端返回的响应
|
||||
res, err := transport.RoundTrip(outReq)
|
||||
if err != nil {
|
||||
w.WriteHeader(http.StatusBadGateway) // 502
|
||||
return
|
||||
}
|
||||
|
||||
// 第三步:代理服务器对响应做一些处理,然后返回给客户端
|
||||
for key, value := range res.Header {
|
||||
for _, v := range value {
|
||||
w.Header().Add(key, v)
|
||||
}
|
||||
}
|
||||
|
||||
w.WriteHeader(res.StatusCode)
|
||||
io.Copy(w, res.Body)
|
||||
res.Body.Close()
|
||||
}
|
||||
|
||||
func main() {
|
||||
log.Println("goPrivoxy start at 0.0.0.0:8118")
|
||||
http.Handle("/", &goPrivoxy{})
|
||||
http.ListenAndServe("0.0.0.0:8118", nil)
|
||||
}
|
||||
@ -0,0 +1,21 @@
|
||||
https://github.com/fenggolang/go-proxy
|
||||
|
||||
## build arm64 on oracle k8s
|
||||
```bash
|
||||
cd /root
|
||||
rm -rf goPrivoxy
|
||||
git clone https://git.sre.ink/go/goPrivoxy.git
|
||||
cd goPrivoxy
|
||||
make build-linux-arm64
|
||||
docker build -t sre/goprivoxy:arm64 .
|
||||
kubectl -n sre rollout restart deployment go-privoxy
|
||||
```
|
||||
|
||||
## build amd64 on vm
|
||||
```bash
|
||||
cd /root
|
||||
rm -rf goPrivoxy
|
||||
git clone https://git.sre.ink/go/goPrivoxy.git
|
||||
cd goPrivoxy
|
||||
make build-linux-amd64
|
||||
```
|
||||
Loading…
Reference in new issue