init
This commit is contained in:
commit
6554299a18
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
.idea/
|
18
go.mod
Normal file
18
go.mod
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
module git.tcp.direct/kayos/door5
|
||||||
|
|
||||||
|
go 1.21.4
|
||||||
|
|
||||||
|
require (
|
||||||
|
git.tcp.direct/kayos/zwrap v0.4.2
|
||||||
|
github.com/cretz/bine v0.2.0
|
||||||
|
github.com/davecgh/go-spew v1.1.0
|
||||||
|
github.com/rs/zerolog v1.31.0
|
||||||
|
golang.org/x/crypto v0.0.0-20210513164829-c07d793c2f9a
|
||||||
|
)
|
||||||
|
|
||||||
|
require (
|
||||||
|
github.com/mattn/go-colorable v0.1.13 // indirect
|
||||||
|
github.com/mattn/go-isatty v0.0.19 // indirect
|
||||||
|
golang.org/x/net v0.0.0-20210525063256-abc453219eb5 // indirect
|
||||||
|
golang.org/x/sys v0.12.0 // indirect
|
||||||
|
)
|
45
go.sum
Normal file
45
go.sum
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
git.tcp.direct/kayos/zwrap v0.4.2 h1:yXO21VNkAb+iMi3dOAythw42dvv1bVzXw+TJJXENVdQ=
|
||||||
|
git.tcp.direct/kayos/zwrap v0.4.2/go.mod h1:SA9+Sww1LBKMw54Gjot5t4AhwEgRX1lFhy6pv5Mm78Q=
|
||||||
|
github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc=
|
||||||
|
github.com/cretz/bine v0.2.0 h1:8GiDRGlTgz+o8H9DSnsl+5MeBK4HsExxgl6WgzOCuZo=
|
||||||
|
github.com/cretz/bine v0.2.0/go.mod h1:WU4o9QR9wWp8AVKtTM1XD5vUHkEqnf2vVSo6dBqbetI=
|
||||||
|
github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8=
|
||||||
|
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||||
|
github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
|
||||||
|
github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4=
|
||||||
|
github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA=
|
||||||
|
github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg=
|
||||||
|
github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94=
|
||||||
|
github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
|
||||||
|
github.com/mattn/go-isatty v0.0.19 h1:JITubQf0MOLdlGRuRq+jtsDlekdYPia9ZFsB8h/APPA=
|
||||||
|
github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
|
||||||
|
github.com/pkg/errors v0.9.1/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/rs/xid v1.5.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg=
|
||||||
|
github.com/rs/zerolog v1.30.0/go.mod h1:/tk+P47gFdPXq4QYjvCmT5/Gsug2nagsFWBWhAiSi1w=
|
||||||
|
github.com/rs/zerolog v1.31.0 h1:FcTR3NnLWW+NnTwwhFWiJSZr4ECLpqCm6QsEnyvbV4A=
|
||||||
|
github.com/rs/zerolog v1.31.0/go.mod h1:/7mN4D5sKwJLZQ2b/znpjC3/GQWY/xaDXUM0kKWRHss=
|
||||||
|
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
||||||
|
github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY=
|
||||||
|
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
||||||
|
golang.org/x/crypto v0.0.0-20210513164829-c07d793c2f9a h1:kr2P4QFmQr29mSLA43kwrOcgcReGTfbE9N577tCTuBc=
|
||||||
|
golang.org/x/crypto v0.0.0-20210513164829-c07d793c2f9a/go.mod h1:P+XmwS30IXTQdn5tA2iutPOUgjI07+tq3H3K9MVA1s8=
|
||||||
|
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
|
||||||
|
golang.org/x/net v0.0.0-20210525063256-abc453219eb5 h1:wjuX4b5yYQnEQHzd+CBcrcC6OVR2J1CN6mUy0oSxIPo=
|
||||||
|
golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
|
||||||
|
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
|
golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
|
golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
|
golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
|
golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
|
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
|
golang.org/x/sys v0.12.0 h1:CM0HF96J0hcLAwsHPJZjfdNzs0gftsLfgKt57wWHJ0o=
|
||||||
|
golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
|
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
|
||||||
|
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||||
|
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||||
|
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||||
|
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||||
|
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo=
|
||||||
|
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
BIN
lib/libs.zip
Normal file
BIN
lib/libs.zip
Normal file
Binary file not shown.
62
logger/log.go
Normal file
62
logger/log.go
Normal file
@ -0,0 +1,62 @@
|
|||||||
|
package logger
|
||||||
|
|
||||||
|
import (
|
||||||
|
"io"
|
||||||
|
"os"
|
||||||
|
"runtime"
|
||||||
|
"sync"
|
||||||
|
|
||||||
|
"git.tcp.direct/kayos/zwrap"
|
||||||
|
"github.com/rs/zerolog"
|
||||||
|
)
|
||||||
|
|
||||||
|
var (
|
||||||
|
logger zerolog.Logger
|
||||||
|
setupOnce = &sync.Once{}
|
||||||
|
)
|
||||||
|
|
||||||
|
func Get() *zwrap.Logger {
|
||||||
|
setupOnce.Do(func() {
|
||||||
|
if err := Setup("", zerolog.InfoLevel); err != nil {
|
||||||
|
println(err.Error())
|
||||||
|
os.Exit(1)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
return zwrap.Wrap(logger)
|
||||||
|
}
|
||||||
|
|
||||||
|
//goland:noinspection GoBoolExpressions
|
||||||
|
func consoleWriter() zerolog.ConsoleWriter {
|
||||||
|
return zerolog.ConsoleWriter{
|
||||||
|
Out: os.Stdout,
|
||||||
|
NoColor: runtime.GOOS == "windows",
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func fileWriter(path string) (io.Writer, error) {
|
||||||
|
if path == "" {
|
||||||
|
return io.Discard, nil
|
||||||
|
}
|
||||||
|
var err error
|
||||||
|
if err = os.MkdirAll(path, 0755); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
var f *os.File
|
||||||
|
if f, err = os.OpenFile(path+"/openspa.log", os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return f, nil
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
func Setup(path string, level zerolog.Level) error {
|
||||||
|
var err error
|
||||||
|
var fw io.Writer
|
||||||
|
if fw, err = fileWriter(path); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
cw := consoleWriter()
|
||||||
|
mw := zerolog.MultiLevelWriter(cw, fw)
|
||||||
|
logger = zerolog.New(mw).With().Timestamp().Logger().Level(level)
|
||||||
|
return nil
|
||||||
|
}
|
74
main.go
Normal file
74
main.go
Normal file
@ -0,0 +1,74 @@
|
|||||||
|
//go:build linux
|
||||||
|
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"github.com/cretz/bine/process/embedded"
|
||||||
|
"github.com/cretz/bine/tor"
|
||||||
|
"github.com/davecgh/go-spew/spew"
|
||||||
|
|
||||||
|
"git.tcp.direct/kayos/door5/logger"
|
||||||
|
)
|
||||||
|
|
||||||
|
func MemoryMapOSFolder() (path string, err error) {
|
||||||
|
// create memory mapped folder for tor data directory (linux)
|
||||||
|
// un
|
||||||
|
return "", nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewOnion() (*tor.Tor, error) {
|
||||||
|
log := logger.Get()
|
||||||
|
|
||||||
|
log.Logger.Info().Msg("starting and registering onion service...")
|
||||||
|
|
||||||
|
t, err := tor.Start(nil, &tor.StartConf{
|
||||||
|
ProcessCreator: embedded.NewCreator(),
|
||||||
|
UseEmbeddedControlConn: true,
|
||||||
|
RetainTempDataDir: false,
|
||||||
|
DebugWriter: logger.Get().With().Str("module", "tor").Logger(),
|
||||||
|
|
||||||
|
NoAutoSocksPort: false,
|
||||||
|
GeoIPFileReader: nil,
|
||||||
|
})
|
||||||
|
if err != nil {
|
||||||
|
log.Panicf("Unable to start Tor: %v", err)
|
||||||
|
}
|
||||||
|
defer func(t *tor.Tor) {
|
||||||
|
if err = t.Close(); err != nil {
|
||||||
|
log.Panicf("Unable to close Tor: %v", err)
|
||||||
|
}
|
||||||
|
}(t)
|
||||||
|
|
||||||
|
// Wait at most a few minutes to publish the service
|
||||||
|
listenCtx, listenCancel := context.WithTimeout(context.Background(), 2*time.Minute)
|
||||||
|
defer listenCancel()
|
||||||
|
|
||||||
|
// Create a v3 onion service to listen on any port but show as 80
|
||||||
|
onion, err := t.Listen(listenCtx, &tor.ListenConf{RemotePorts: []int{80}})
|
||||||
|
if err != nil {
|
||||||
|
log.Panicf("Unable to create onion service: %v", err)
|
||||||
|
}
|
||||||
|
defer func(onion *tor.OnionService) {
|
||||||
|
if err = onion.Close(); err != nil {
|
||||||
|
log.Panicf("Unable to close onion service: %v", err)
|
||||||
|
}
|
||||||
|
}(onion)
|
||||||
|
|
||||||
|
log.Logger.Info().Msgf("live: %v.onion", onion.ID)
|
||||||
|
return t, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
o, e := NewOnion()
|
||||||
|
if e != nil {
|
||||||
|
panic(e)
|
||||||
|
}
|
||||||
|
pi, err := o.Control.ProtocolInfo()
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
spew.Dump(pi)
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user