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:
ymmt 2018-11-13 11:19:00 +09:00
parent e3b3eb6602
commit 1848d3812c
9 changed files with 105 additions and 40 deletions

19
.circleci/config.yml Normal file
View 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

View File

@ -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 ./...

View File

@ -7,15 +7,15 @@ import (
"net/url" "net/url"
"github.com/BurntSushi/toml" "github.com/BurntSushi/toml"
"github.com/cybozu-go/cmd"
"github.com/cybozu-go/log" "github.com/cybozu-go/log"
"github.com/cybozu-go/transocks" "github.com/cybozu-go/transocks"
"github.com/cybozu-go/well"
) )
type tomlConfig struct { type tomlConfig struct {
Listen string `toml:"listen"` Listen string `toml:"listen"`
ProxyURL string `toml:"proxy_url"` ProxyURL string `toml:"proxy_url"`
Log cmd.LogConfig `toml:"log"` Log well.LogConfig `toml:"log"`
} }
const ( const (
@ -65,8 +65,8 @@ func serve(lns []net.Listener, c *transocks.Config) {
for _, ln := range lns { for _, ln := range lns {
s.Serve(ln) s.Serve(ln)
} }
err = cmd.Wait() err = well.Wait()
if err != nil && !cmd.IsSignaled(err) { if err != nil && !well.IsSignaled(err) {
log.ErrorExit(err) log.ErrorExit(err)
} }
} }
@ -79,7 +79,7 @@ func main() {
log.ErrorExit(err) log.ErrorExit(err)
} }
g := &cmd.Graceful{ g := &well.Graceful{
Listen: func() ([]net.Listener, error) { Listen: func() ([]net.Listener, error) {
return transocks.Listeners(c) return transocks.Listeners(c)
}, },
@ -89,8 +89,8 @@ func main() {
} }
g.Run() g.Run()
err = cmd.Wait() err = well.Wait()
if err != nil && !cmd.IsSignaled(err) { if err != nil && !well.IsSignaled(err) {
log.ErrorExit(err) log.ErrorExit(err)
} }
} }

View File

@ -7,8 +7,8 @@ import (
"net/url" "net/url"
"time" "time"
"github.com/cybozu-go/cmd"
"github.com/cybozu-go/log" "github.com/cybozu-go/log"
"github.com/cybozu-go/well"
) )
const ( const (
@ -58,9 +58,9 @@ type Config struct {
// If nil, the default logger is used. // If nil, the default logger is used.
Logger *log.Logger 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. // If nil, the server will run on the global environment.
Env *cmd.Environment Env *well.Environment
} }
// NewConfig creates and initializes a new Config. // NewConfig creates and initializes a new Config.

12
defs_linux.go Normal file
View 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
View 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
View 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=

View File

@ -9,14 +9,6 @@ import (
"unsafe" "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) { func getsockopt(s int, level int, optname int, optval unsafe.Pointer, optlen *uint32) (err error) {
_, _, e := syscall.Syscall6( _, _, e := syscall.Syscall6(
syscall.SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(optname), syscall.SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(optname),

View File

@ -7,9 +7,9 @@ import (
"sync" "sync"
"time" "time"
"github.com/cybozu-go/cmd"
"github.com/cybozu-go/log" "github.com/cybozu-go/log"
"github.com/cybozu-go/netutil" "github.com/cybozu-go/netutil"
"github.com/cybozu-go/well"
"golang.org/x/net/proxy" "golang.org/x/net/proxy"
) )
@ -29,7 +29,7 @@ func Listeners(c *Config) ([]net.Listener, error) {
// Server provides transparent proxy server functions. // Server provides transparent proxy server functions.
type Server struct { type Server struct {
cmd.Server well.Server
mode Mode mode Mode
logger *log.Logger logger *log.Logger
dialer proxy.Dialer dialer proxy.Dialer
@ -60,7 +60,7 @@ func NewServer(c *Config) (*Server, error) {
} }
s := &Server{ s := &Server{
Server: cmd.Server{ Server: well.Server{
ShutdownTimeout: c.ShutdownTimeout, ShutdownTimeout: c.ShutdownTimeout,
Env: c.Env, Env: c.Env,
}, },
@ -86,7 +86,7 @@ func (s *Server) handleConnection(ctx context.Context, conn net.Conn) {
return return
} }
fields := cmd.FieldsFromContext(ctx) fields := well.FieldsFromContext(ctx)
fields[log.FnType] = "access" fields[log.FnType] = "access"
fields["client_addr"] = conn.RemoteAddr().String() fields["client_addr"] = conn.RemoteAddr().String()
@ -117,7 +117,7 @@ func (s *Server) handleConnection(ctx context.Context, conn net.Conn) {
// do proxy // do proxy
st := time.Now() st := time.Now()
env := cmd.NewEnvironment(ctx) env := well.NewEnvironment(ctx)
env.Go(func(ctx context.Context) error { env.Go(func(ctx context.Context) error {
buf := s.pool.Get().([]byte) buf := s.pool.Get().([]byte)
_, err := io.CopyBuffer(destConn, tc, buf) _, err := io.CopyBuffer(destConn, tc, buf)
@ -141,7 +141,7 @@ func (s *Server) handleConnection(ctx context.Context, conn net.Conn) {
env.Stop() env.Stop()
err = env.Wait() err = env.Wait()
fields = cmd.FieldsFromContext(ctx) fields = well.FieldsFromContext(ctx)
fields["elapsed"] = time.Since(st).Seconds() fields["elapsed"] = time.Since(st).Seconds()
if err != nil { if err != nil {
fields[log.FnError] = err.Error() fields[log.FnError] = err.Error()