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