forked from ms/transocks
Enable Go modules.
* github.com/cybozu-go/cmd was moved to github.com/cybozu-go/well * use CircleCI to replace TravisCI
This commit is contained in:
parent
e3b3eb6602
commit
1848d3812c
19
.circleci/config.yml
Normal file
19
.circleci/config.yml
Normal file
@ -0,0 +1,19 @@
|
||||
version: 2
|
||||
jobs:
|
||||
build:
|
||||
docker:
|
||||
- image: quay.io/cybozu/golang:1.11-bionic
|
||||
working_directory: /work
|
||||
steps:
|
||||
- checkout
|
||||
- run: test -z "$(gofmt -s -l . | grep -v '^vendor' | tee /dev/stderr)"
|
||||
- run: golint -set_exit_status .
|
||||
- run: go build ./...
|
||||
- run: go test -race -v ./...
|
||||
- run: go vet ./...
|
||||
|
||||
workflows:
|
||||
version: 2
|
||||
main:
|
||||
jobs:
|
||||
- build
|
14
.travis.yml
14
.travis.yml
@ -1,14 +0,0 @@
|
||||
sudo: false
|
||||
language: go
|
||||
go:
|
||||
- stable
|
||||
- master
|
||||
|
||||
before_install:
|
||||
- go get github.com/golang/lint/golint
|
||||
|
||||
script:
|
||||
- go install ./...
|
||||
- go test -v ./...
|
||||
- go vet -x ./...
|
||||
- $HOME/gopath/bin/golint -set_exit_status -min_confidence 0.81 ./...
|
@ -7,15 +7,15 @@ import (
|
||||
"net/url"
|
||||
|
||||
"github.com/BurntSushi/toml"
|
||||
"github.com/cybozu-go/cmd"
|
||||
"github.com/cybozu-go/log"
|
||||
"github.com/cybozu-go/transocks"
|
||||
"github.com/cybozu-go/well"
|
||||
)
|
||||
|
||||
type tomlConfig struct {
|
||||
Listen string `toml:"listen"`
|
||||
ProxyURL string `toml:"proxy_url"`
|
||||
Log cmd.LogConfig `toml:"log"`
|
||||
Listen string `toml:"listen"`
|
||||
ProxyURL string `toml:"proxy_url"`
|
||||
Log well.LogConfig `toml:"log"`
|
||||
}
|
||||
|
||||
const (
|
||||
@ -65,8 +65,8 @@ func serve(lns []net.Listener, c *transocks.Config) {
|
||||
for _, ln := range lns {
|
||||
s.Serve(ln)
|
||||
}
|
||||
err = cmd.Wait()
|
||||
if err != nil && !cmd.IsSignaled(err) {
|
||||
err = well.Wait()
|
||||
if err != nil && !well.IsSignaled(err) {
|
||||
log.ErrorExit(err)
|
||||
}
|
||||
}
|
||||
@ -79,7 +79,7 @@ func main() {
|
||||
log.ErrorExit(err)
|
||||
}
|
||||
|
||||
g := &cmd.Graceful{
|
||||
g := &well.Graceful{
|
||||
Listen: func() ([]net.Listener, error) {
|
||||
return transocks.Listeners(c)
|
||||
},
|
||||
@ -89,8 +89,8 @@ func main() {
|
||||
}
|
||||
g.Run()
|
||||
|
||||
err = cmd.Wait()
|
||||
if err != nil && !cmd.IsSignaled(err) {
|
||||
err = well.Wait()
|
||||
if err != nil && !well.IsSignaled(err) {
|
||||
log.ErrorExit(err)
|
||||
}
|
||||
}
|
||||
|
@ -7,8 +7,8 @@ import (
|
||||
"net/url"
|
||||
"time"
|
||||
|
||||
"github.com/cybozu-go/cmd"
|
||||
"github.com/cybozu-go/log"
|
||||
"github.com/cybozu-go/well"
|
||||
)
|
||||
|
||||
const (
|
||||
@ -58,9 +58,9 @@ type Config struct {
|
||||
// If nil, the default logger is used.
|
||||
Logger *log.Logger
|
||||
|
||||
// Env can be used to specify a cmd.Environment on which the server runs.
|
||||
// Env can be used to specify a well.Environment on which the server runs.
|
||||
// If nil, the server will run on the global environment.
|
||||
Env *cmd.Environment
|
||||
Env *well.Environment
|
||||
}
|
||||
|
||||
// NewConfig creates and initializes a new Config.
|
||||
|
12
defs_linux.go
Normal file
12
defs_linux.go
Normal file
@ -0,0 +1,12 @@
|
||||
// Code generated by hand. DO NOT EDIT.
|
||||
// +build linux
|
||||
|
||||
package transocks
|
||||
|
||||
const (
|
||||
// SO_ORIGINAL_DST is a Linux getsockopt optname.
|
||||
SO_ORIGINAL_DST = 80
|
||||
|
||||
// IP6T_SO_ORIGINAL_DST a Linux getsockopt optname.
|
||||
IP6T_SO_ORIGINAL_DST = 80
|
||||
)
|
9
go.mod
Normal file
9
go.mod
Normal file
@ -0,0 +1,9 @@
|
||||
module github.com/cybozu-go/transocks
|
||||
|
||||
require (
|
||||
github.com/BurntSushi/toml v0.3.1
|
||||
github.com/cybozu-go/log v1.5.0
|
||||
github.com/cybozu-go/netutil v1.2.0
|
||||
github.com/cybozu-go/well v1.8.1
|
||||
golang.org/x/net v0.0.0-20180911220305-26e67e76b6c3
|
||||
)
|
47
go.sum
Normal file
47
go.sum
Normal file
@ -0,0 +1,47 @@
|
||||
github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ=
|
||||
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
|
||||
github.com/cybozu-go/log v1.5.0 h1:cjLr+pNga4NL5sj5vnnG00xKmKXSWx0grQQ4LnV1Ris=
|
||||
github.com/cybozu-go/log v1.5.0/go.mod h1:zpfovuCgUx+a/ErvQrThoT+/z1RVQoLDOf95wkBeRiw=
|
||||
github.com/cybozu-go/netutil v1.2.0 h1:UBO0+hB43zd5mIXRfD195eBMHvgWlHP2mYuQ2F5Yxtg=
|
||||
github.com/cybozu-go/netutil v1.2.0/go.mod h1:Wx92iF1dPrtuSzLUMEidtrKTFiDWpLcsYvbQ1lHSmxY=
|
||||
github.com/cybozu-go/well v1.8.1 h1:YlEPreiDBI+KxE5rcAkkaB5j/Iyow6nIVmUpq3u5DYQ=
|
||||
github.com/cybozu-go/well v1.8.1/go.mod h1:9PK1AltjltFwZBtTWVXnCJ0fIeZMxGovYfLmCcZxQog=
|
||||
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
|
||||
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||
github.com/fsnotify/fsnotify v1.4.7 h1:IXs+QLmnXW2CcXuY+8Mzv/fWEsPGWxqefPtCP5CnV9I=
|
||||
github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
|
||||
github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4=
|
||||
github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ=
|
||||
github.com/magiconair/properties v1.8.0 h1:LLgXmsheXeRoUOBOjtwPQCWIYqM/LU1ayDtDePerRcY=
|
||||
github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ=
|
||||
github.com/mitchellh/mapstructure v1.0.0 h1:vVpGvMXJPqSDh2VYHF7gsfQj8Ncx+Xw5Y1KHeTRY+7I=
|
||||
github.com/mitchellh/mapstructure v1.0.0/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y=
|
||||
github.com/pelletier/go-toml v1.2.0 h1:T5zMGML61Wp+FlcbWjRDT7yAxhJNAiPPLOFECq181zc=
|
||||
github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic=
|
||||
github.com/pkg/errors v0.8.0 h1:WdK/asTD0HN+q6hsWO3/vpuAkAr+tw6aNJNDFFf0+qw=
|
||||
github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
||||
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
||||
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
||||
github.com/spf13/afero v1.1.2 h1:m8/z1t7/fwjysjQRYbP0RD+bUIF/8tJwPdEZsI83ACI=
|
||||
github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ=
|
||||
github.com/spf13/cast v1.2.0 h1:HHl1DSRbEQN2i8tJmtS6ViPyHx35+p51amrdsiTCrkg=
|
||||
github.com/spf13/cast v1.2.0/go.mod h1:r2rcYCSwa1IExKTDiTfzaxqT2FNHs8hODu4LnUfgKEg=
|
||||
github.com/spf13/jwalterweatherman v1.0.0 h1:XHEdyB+EcvlqZamSM4ZOMGlc93t6AcsBEu9Gc1vn7yk=
|
||||
github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo=
|
||||
github.com/spf13/pflag v1.0.2/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4=
|
||||
github.com/spf13/pflag v1.0.3 h1:zPAT6CGy6wXeQ7NtTnaTerfKOsV6V6F8agHXFiazDkg=
|
||||
github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4=
|
||||
github.com/spf13/viper v1.2.1 h1:bIcUwXqLseLF3BDAZduuNfekWG87ibtFxi59Bq+oI9M=
|
||||
github.com/spf13/viper v1.2.1/go.mod h1:P4AexN0a+C9tGAnUFNwDMYYZv3pjFuvmeiMyKRaNVlI=
|
||||
github.com/stretchr/testify v1.2.2 h1:bSDNvY7ZPG5RlJ8otE/7V6gMiyenm9RtJ7IUVIAoJ1w=
|
||||
github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
|
||||
golang.org/x/net v0.0.0-20180911220305-26e67e76b6c3 h1:czFLhve3vsQetD6JOJ8NZZvGQIXlnN3/yXxbT6/awxI=
|
||||
golang.org/x/net v0.0.0-20180911220305-26e67e76b6c3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
golang.org/x/sys v0.0.0-20180906133057-8cf3aee42992 h1:BH3eQWeGbwRU2+wxxuuPOdFBmaiBH81O8BugSjHeTFg=
|
||||
golang.org/x/sys v0.0.0-20180906133057-8cf3aee42992/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg=
|
||||
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
|
||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||
gopkg.in/yaml.v2 v2.2.1 h1:mUhvW9EsL+naU5Q3cakzfE91YhliOondGd6ZrsDBHQE=
|
||||
gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
@ -9,14 +9,6 @@ import (
|
||||
"unsafe"
|
||||
)
|
||||
|
||||
const (
|
||||
// SO_ORIGINAL_DST is a Linux getsockopt optname.
|
||||
SO_ORIGINAL_DST = 80
|
||||
|
||||
// IP6T_SO_ORIGINAL_DST a Linux getsockopt optname.
|
||||
IP6T_SO_ORIGINAL_DST = 80
|
||||
)
|
||||
|
||||
func getsockopt(s int, level int, optname int, optval unsafe.Pointer, optlen *uint32) (err error) {
|
||||
_, _, e := syscall.Syscall6(
|
||||
syscall.SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(optname),
|
||||
|
12
server.go
12
server.go
@ -7,9 +7,9 @@ import (
|
||||
"sync"
|
||||
"time"
|
||||
|
||||
"github.com/cybozu-go/cmd"
|
||||
"github.com/cybozu-go/log"
|
||||
"github.com/cybozu-go/netutil"
|
||||
"github.com/cybozu-go/well"
|
||||
"golang.org/x/net/proxy"
|
||||
)
|
||||
|
||||
@ -29,7 +29,7 @@ func Listeners(c *Config) ([]net.Listener, error) {
|
||||
|
||||
// Server provides transparent proxy server functions.
|
||||
type Server struct {
|
||||
cmd.Server
|
||||
well.Server
|
||||
mode Mode
|
||||
logger *log.Logger
|
||||
dialer proxy.Dialer
|
||||
@ -60,7 +60,7 @@ func NewServer(c *Config) (*Server, error) {
|
||||
}
|
||||
|
||||
s := &Server{
|
||||
Server: cmd.Server{
|
||||
Server: well.Server{
|
||||
ShutdownTimeout: c.ShutdownTimeout,
|
||||
Env: c.Env,
|
||||
},
|
||||
@ -86,7 +86,7 @@ func (s *Server) handleConnection(ctx context.Context, conn net.Conn) {
|
||||
return
|
||||
}
|
||||
|
||||
fields := cmd.FieldsFromContext(ctx)
|
||||
fields := well.FieldsFromContext(ctx)
|
||||
fields[log.FnType] = "access"
|
||||
fields["client_addr"] = conn.RemoteAddr().String()
|
||||
|
||||
@ -117,7 +117,7 @@ func (s *Server) handleConnection(ctx context.Context, conn net.Conn) {
|
||||
|
||||
// do proxy
|
||||
st := time.Now()
|
||||
env := cmd.NewEnvironment(ctx)
|
||||
env := well.NewEnvironment(ctx)
|
||||
env.Go(func(ctx context.Context) error {
|
||||
buf := s.pool.Get().([]byte)
|
||||
_, err := io.CopyBuffer(destConn, tc, buf)
|
||||
@ -141,7 +141,7 @@ func (s *Server) handleConnection(ctx context.Context, conn net.Conn) {
|
||||
env.Stop()
|
||||
err = env.Wait()
|
||||
|
||||
fields = cmd.FieldsFromContext(ctx)
|
||||
fields = well.FieldsFromContext(ctx)
|
||||
fields["elapsed"] = time.Since(st).Seconds()
|
||||
if err != nil {
|
||||
fields[log.FnError] = err.Error()
|
||||
|
Loading…
Reference in New Issue
Block a user