Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
93 commits
Select commit Hold shift + click to select a range
398adcc
updated default production deployment to http://dmsg.discovery.skywir…
FrappeFortyTwo Mar 23, 2021
a26d6d3
dmsgpty-host looks for config.json by default
FrappeFortyTwo Mar 23, 2021
be1ffad
sk is generated in case a new conf is generated and stored in "config…
FrappeFortyTwo Mar 23, 2021
b0fc7de
sk is set via config file
FrappeFortyTwo Mar 23, 2021
d2e3d75
disabled usage of --sk and --skgen and added deprecation message
FrappeFortyTwo Mar 23, 2021
b04989a
confpath flag shortened to -c
FrappeFortyTwo Mar 23, 2021
a278c92
disabled --wl flag & added support to specify whitlist in config file
FrappeFortyTwo Mar 23, 2021
cffaf04
whitelist-add pushes pk to whitelist & whitelist-remove pops pk from …
FrappeFortyTwo Mar 23, 2021
7e7393e
debugged errors
FrappeFortyTwo Mar 24, 2021
346cf2e
fixed dmsgpty-host --confpath error
FrappeFortyTwo Mar 24, 2021
cd5ef92
added --confpath flag to dmsgpty-cli to specify config file for white…
FrappeFortyTwo Mar 24, 2021
f70e7dd
added log messages
FrappeFortyTwo Mar 24, 2021
d590ac7
refactored code
FrappeFortyTwo Mar 24, 2021
2e3b0e1
Updated Integration Readme #58
ersonp Apr 13, 2021
0a68a8d
Cancelabel Downloads
ersonp Apr 14, 2021
11fda34
changed default to bash in makefile
ersonp Apr 14, 2021
1bae800
Merge pull request #63 from ersonp/integration-readme-updates
jdknives Apr 14, 2021
a5e0796
solved shell error
ersonp Apr 14, 2021
777e97c
added wl field in confgen
ersonp Apr 15, 2021
9a97bd5
fixed whitelist nil pointer error
ersonp Apr 15, 2021
0a0a910
removed testing gitignore entry
ersonp Apr 15, 2021
84a6829
Merge pull request #68 from ersonp/makefile-default
jdknives Apr 19, 2021
55626ad
removed viper
ersonp Apr 19, 2021
490f984
fix merge conflicts
ersonp Apr 19, 2021
f56c00f
fix merge conflicts 2
ersonp Apr 19, 2021
3e77c7e
Added dmsgpty docs and updated creack/pty lib
ersonp Apr 19, 2021
60d0841
solved merge conflicts
ersonp Apr 19, 2021
a3a9e1e
removed ci_scripts
ersonp Apr 20, 2021
a9c6895
updates
ersonp Apr 20, 2021
eeef288
Merge pull request #71 from ersonp/remove-golangcli-lint
jdknives Apr 20, 2021
f228dd2
Updated makefile and terminal import
ersonp Apr 21, 2021
d44bb75
Updated go to 1.6
ersonp Apr 21, 2021
3347aa5
Updated go to 1.6
ersonp Apr 21, 2021
191ba15
Merge pull request #72 from ersonp/makefile-changes
jdknives Apr 21, 2021
5a7e4bf
updated readme
ersonp Apr 21, 2021
22f1231
added pk to confgen
ersonp Apr 21, 2021
fe35dd5
sk from config
ersonp Apr 21, 2021
3d8bbc8
removed --sk flag
ersonp Apr 21, 2021
d88e60c
code refactoring
ersonp Apr 21, 2021
2858f89
Resolve Conflict
ersonp Apr 21, 2021
30a4e28
large files fix
ersonp Apr 22, 2021
8a6d009
Readme update
ersonp Apr 22, 2021
b012488
Public Key bug Solved and Code Refactored
ersonp Apr 22, 2021
152470d
Public key rejected by whitelist Fix
ersonp Apr 22, 2021
9b175e3
Removed old WL code
ersonp Apr 22, 2021
861b30c
Readme updated for dmsgpty
ersonp Apr 22, 2021
d9b3c13
Show WL on host init
ersonp Apr 22, 2021
e674c7d
Readme update
ersonp Apr 22, 2021
9ada622
Readme update 2
ersonp Apr 22, 2021
7ba5726
Readme update 3
ersonp Apr 22, 2021
b3f6e22
Added make install
ersonp Apr 22, 2021
9771db8
Merge pull request #74 from ersonp/make-install
jdknives Apr 23, 2021
13e8ff4
Merge pull request #67 from ersonp/stop-download
jdknives Apr 23, 2021
724b03f
Config info update
ersonp Apr 23, 2021
ca29e92
Remove duplicate PK, SK, WL
ersonp Apr 23, 2021
e7953cc
Remove print sk on startup
ersonp Apr 24, 2021
0414000
Dmsgty host test
ersonp Apr 26, 2021
f3f05d8
Merge pull request #69 from ersonp/pty-improvements
jdknives Apr 27, 2021
2aae1d0
Remove discord hook
ersonp Apr 30, 2021
ac70250
Merge pull request #77 from ersonp/remove-discord-hook
jdknives Apr 30, 2021
4e74822
cmdutil fixes for windows
alexadhy May 28, 2021
11d1c03
format, linters (enable revive / disable golint since it's deprecated)
alexadhy May 28, 2021
c2f38d9
refactor done
alexadhy May 28, 2021
0972a8c
update golangci-lint, fix linterss
alexadhy May 28, 2021
ad3c710
update golangci-lint version
alexadhy May 28, 2021
a7e3907
fix lint
alexadhy May 28, 2021
ffc0967
point to production server, and sets maxSessions to 2048
alexadhy May 31, 2021
06f0ca9
fix goimports
alexadhy May 31, 2021
c468f9c
WIP: bring back in-memory dmsgpty whitelist function
alexadhy May 31, 2021
ced78d8
config whitelist: create file if it doesn't exist
alexadhy May 31, 2021
c5e0ac5
marshal config on file size == 0
alexadhy May 31, 2021
1fb46ea
check error whitelist, fixes errors.Is
alexadhy May 31, 2021
3627ed7
requested changes
alexadhy May 31, 2021
3cba29f
Merge pull request #85 from alexadhy/in-memory-whitelist-dmsgpty
jdknives Jun 3, 2021
b8d15aa
Merge remote-tracking branch 'upstream/develop' into develop
alexadhy Jun 4, 2021
5b17a2e
added documentation
alexadhy Jun 5, 2021
b94ea98
Update dmsg-discovery heartbeat rate
ersonp Jun 7, 2021
7d7f186
Remove keepalive header
ersonp Jun 7, 2021
0c02e58
Merge pull request #86 from ersonp/heartbeat-update
jdknives Jun 7, 2021
62467ff
Increase default timeout of dmsg-discovery
ersonp Jun 7, 2021
7bafc96
Merge pull request #88 from ersonp/disc-timeout
jdknives Jun 7, 2021
1488b72
ctrl-c to quit
Jun 9, 2021
4c6e791
handle Ctrl-C dmsg-discovery, update readme
Jun 9, 2021
acdd657
Merge pull request #82 from alexadhy/feature/docker-refactorings
jdknives Jun 9, 2021
1c7b3df
Merge remote-tracking branch 'upstream/develop' into develop
alexadhy Jun 12, 2021
7ea4af4
build with -mod=vendor
alexadhy Jun 17, 2021
76babe0
dmsg docker push fixes
Jun 17, 2021
5f70248
Merge pull request #94 from alexadhy/vendor-flag
jdknives Jun 17, 2021
c6a532c
Merge pull request #95 from alexadhy/dmsg-docker-push
jdknives Jun 17, 2021
7a2419d
Merge pull request #83 from alexadhy/feature/windows-cmdutil
jdknives Jun 21, 2021
fd2b4b2
Merge remote-tracking branch 'upstream/develop' into develop
alexadhy Jun 28, 2021
b279cb7
health endpoint
alexadhy Jun 28, 2021
f43904c
Merge pull request #99 from alexadhy/health-endpoint
jdknives Jul 1, 2021
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
4 changes: 2 additions & 2 deletions .golangci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ linters-settings:
# 2. you use go >= 1.10
# 3. you do repeated runs (false for CI) or cache $GOPATH/pkg or `go env GOCACHE` dir in CI.
use-installed-packages: false
golint:
revive:
# minimal confidence for issues, default is 0.8
min-confidence: 0.8
gofmt:
Expand Down Expand Up @@ -139,7 +139,7 @@ linters-settings:

linters:
enable:
- golint
- revive
- goimports
- varcheck
- unparam
Expand Down
19 changes: 16 additions & 3 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
language: go
go:
# - "1.11.x" At minimum the code should run make check on the latest two go versions in the default linux environment provided by Travis.
- "1.14.x"
- "1.16.x"

dist: xenial

matrix:
Expand All @@ -15,8 +15,21 @@ matrix:

install:
- go get -u github.com/FiloSottile/vendorcheck
- curl -sfL https://install.goreleaser.com/github.com/golangci/golangci-lint.sh | sh -s -- -b $GOPATH/bin v1.31.0
- curl -sfL https://install.goreleaser.com/github.com/golangci/golangci-lint.sh | sh -s -- -b $GOPATH/bin v1.40.1
- go mod vendor

script:
- make check

deploy:
- provider: script
script: bash ./docker/scripts/docker-push.sh -t "$TRAVIS_BRANCH" -p
on:
branch: master
condition: $TRAVIS_PULL_REQUEST = false
- provider: script
script: bash ./docker/scripts/docker-push.sh -t "$TRAVIS_BRANCH" -p
on:
branch: develop
condition: $TRAVIS_PULL_REQUEST = false

17 changes: 12 additions & 5 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
SHELL := /bin/bash

.DEFAULT_GOAL := help
.PHONY : check lint install-linters dep test build

Expand Down Expand Up @@ -29,8 +31,8 @@ BUILDINFO_COMMIT := -X $(BUILDINFO_PATH).commit=$(COMMIT)

BUILDINFO?=$(BUILDINFO_VERSION) $(BUILDINFO_DATE) $(BUILDINFO_COMMIT)

BUILD_OPTS?="-ldflags=$(BUILDINFO)"
BUILD_OPTS_DEPLOY?="-ldflags=$(BUILDINFO) -w -s"
BUILD_OPTS?=-mod=vendor "-ldflags=$(BUILDINFO)"
BUILD_OPTS_DEPLOY?=-mod=vendor "-ldflags=$(BUILDINFO) -w -s"

check: lint test ## Run linters and tests

Expand All @@ -47,13 +49,12 @@ test: ## Run tests
${OPTS} go test ${TEST_OPTS} ./...

install-linters: ## Install linters
- VERSION=1.23.1 ./ci_scripts/install-golangci-lint.sh
# GO111MODULE=off go get -u github.com/FiloSottile/vendorcheck
# For some reason this install method is not recommended, see https://github.com/golangci/golangci-lint#install
# However, they suggest `curl ... | bash` which we should not do
# ${OPTS} go get -u github.com/golangci/golangci-lint/cmd/golangci-lint
${OPTS} go get -u github.com/golangci/golangci-lint/cmd/golangci-lint
${OPTS} go get -u golang.org/x/tools/cmd/goimports
${OPTS} go get -u github.com/incu6us/goimports-reviser
${OPTS} go get -u github.com/incu6us/goimports-reviser/v2

format: ## Formats the code. Must have goimports and goimports-reviser installed (use make install-linters).
${OPTS} goimports -w -local ${DMSG_REPO} .
Expand All @@ -62,13 +63,19 @@ dep: ## Sorts dependencies
${OPTS} go mod download
${OPTS} go mod tidy -v

install: ## Install `dmsg-discovery`, `dmsg-server`, `dmsgget`,`dmsgpty-cli`, `dmsgpty-host`, `dmsgpty-ui`
${OPTS} go install ${BUILD_OPTS} ./cmd/*

build: ## Build binaries into ./bin
mkdir -p ${BIN}; go build ${BUILD_OPTS} -o ${BIN} ./cmd/*

build-deploy: ## Build for deployment Docker images
go build -tags netgo ${BUILD_OPTS_DEPLOY} -o /release/dmsg-discovery ./cmd/dmsg-discovery
go build -tags netgo ${BUILD_OPTS_DEPLOY} -o /release/dmsg-server ./cmd/dmsg-server

build-docker:
./docker/scripts/docker-push.sh -t "develop" -b

start-db: ## Init local database env.
source ./integration/env.sh && init_redis

Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ The connection between a `dmsg.Client` and `dmsg.Server` is called a `dmsg.Sessi
## Dmsg tools and libraries

- [`dmsgget`](./docs/dmsgget.md) - Simplified `wget` over `dmsg`.

- [`dmsgpty`](./docs/dmsgpty.md) - Simplified `SSH` over `dmsg`.
## Additional resources
- [`dmsg` examples.](./examples)
- [`dmsg.Discovery` documentation.](./cmd/dmsg-discovery/README.md)
Expand Down
17 changes: 0 additions & 17 deletions ci_scripts/install-golangci-lint.sh

This file was deleted.

10 changes: 0 additions & 10 deletions cmd/dmsg-discovery/commands/root.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@ import (
"github.com/skycoin/dmsg/cmd/dmsg-discovery/internal/store"
"github.com/skycoin/dmsg/cmdutil"
"github.com/skycoin/dmsg/discmetrics"
"github.com/skycoin/dmsg/discord"
"github.com/skycoin/dmsg/metricsutil"
)

Expand Down Expand Up @@ -52,15 +51,6 @@ var rootCmd = &cobra.Command{

log := sf.Logger()

if discordWebhookURL := discord.GetWebhookURLFromEnv(); discordWebhookURL != "" {
// Workaround for Discord logger hook. Actually, it's Info.
log.Error(discord.StartLogMessage)
defer log.Error(discord.StopLogMessage)
} else {
log.Info(discord.StartLogMessage)
defer log.Info(discord.StopLogMessage)
}

metricsutil.ServeHTTPMetrics(log, sf.MetricsAddr)

db := prepareDB(log)
Expand Down
2 changes: 1 addition & 1 deletion cmd/dmsg-discovery/internal/store/storer.go
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ type Config struct {
// Config defaults.
const (
DefaultURL = "redis://localhost:6379"
DefaultTimeout = time.Minute
DefaultTimeout = time.Minute * 3
)

// DefaultConfig returns a config with default values.
Expand Down
4 changes: 2 additions & 2 deletions cmd/dmsg-discovery/internal/store/testing.go
Original file line number Diff line number Diff line change
Expand Up @@ -117,8 +117,8 @@ func (ms *MockStore) AvailableServers(ctx context.Context, maxCount int) ([]*dis

// CountEntries implements Storer CountEntries method for MockStore
func (ms *MockStore) CountEntries(ctx context.Context) (int64, int64, error) {
var numberOfServers int64 = 0
var numberOfClients int64 = 0
var numberOfServers int64
var numberOfClients int64
ms.serversLock.RLock()
defer ms.serversLock.RUnlock()

Expand Down
69 changes: 49 additions & 20 deletions cmd/dmsg-server/commands/root.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,17 @@ package commands

import (
"context"
"fmt"
"io"
"io/ioutil"
"log"
"net"
"os"
"time"

"github.com/go-chi/chi"
"github.com/go-chi/chi/middleware"
jsoniter "github.com/json-iterator/go"
"github.com/pires/go-proxyproto"
"github.com/spf13/cobra"

Expand All @@ -18,17 +22,22 @@ import (
"github.com/skycoin/dmsg/cmd/dmsg-server/internal/api"
"github.com/skycoin/dmsg/cmdutil"
"github.com/skycoin/dmsg/disc"
"github.com/skycoin/dmsg/discord"
"github.com/skycoin/dmsg/metricsutil"
"github.com/skycoin/dmsg/servermetrics"
)

const (
defaultDiscoveryURL = "https://dmsg.discovery.skywire.skycoin.com"
defaultPort = ":8081"
defaultConfigPath = "config.json"
)

var (
sf cmdutil.ServiceFlags
)

func init() {
sf.Init(rootCmd, "dmsg_srv", "config.json")
sf.Init(rootCmd, "dmsg_srv", defaultConfigPath)
}

var rootCmd = &cobra.Command{
Expand All @@ -42,18 +51,9 @@ var rootCmd = &cobra.Command{

log := sf.Logger()

if discordWebhookURL := discord.GetWebhookURLFromEnv(); discordWebhookURL != "" {
// Workaround for Discord logger hook. Actually, it's Info.
log.Error(discord.StartLogMessage)
defer log.Error(discord.StopLogMessage)
} else {
log.Info(discord.StartLogMessage)
defer log.Info(discord.StopLogMessage)
}

var conf Config
if err := sf.ParseConfig(os.Args, true, &conf); err != nil {
log.WithError(err).Fatal()
if err := sf.ParseConfig(os.Args, true, &conf, genDefaultConfig); err != nil {
log.WithError(err).Fatal("parsing config failed, generating default one...")
}

var m servermetrics.Metrics
Expand All @@ -71,15 +71,19 @@ var rootCmd = &cobra.Command{
r.Use(middleware.Logger)
r.Use(middleware.Recoverer)

a := api.New(r, log, m)
r.Get("/health", a.Health)
api := api.New(r, log, m)
ln, err := net.Listen("tcp", conf.LocalAddress)
if err != nil {
log.Fatalf("Error listening on %s: %v", conf.LocalAddress, err)
}

lis := &proxyproto.Listener{Listener: ln}
defer lis.Close() // nolint:errcheck
defer func(lis *proxyproto.Listener) {
err = lis.Close()
if err != nil {
log.Warnf("Error closing listener: %v", err)
}
}(lis)

if err != nil {
log.Fatalf("Error creating proxy on %s: %v", conf.LocalAddress, err)
Expand All @@ -92,15 +96,15 @@ var rootCmd = &cobra.Command{
srv := dmsg.NewServer(conf.PubKey, conf.SecKey, disc.NewHTTP(conf.Discovery), &srvConf, m)
srv.SetLogger(log)

a.SetDmsgServer(srv)
defer func() { log.WithError(srv.Close()).Info("Closed server.") }()
api.SetDmsgServer(srv)
defer func() { log.WithError(api.Close()).Info("Closed server.") }()

ctx, cancel := cmdutil.SignalContext(context.Background(), log)
defer cancel()

go a.RunBackgroundTasks(ctx)
go api.RunBackgroundTasks(ctx)
go func() {
if err := srv.Serve(lis, conf.PublicAddress); err != nil {
if err := api.Serve(lis, conf.PublicAddress); err != nil {
log.Errorf("Serve: %v", err)
cancel()
}
Expand All @@ -122,6 +126,31 @@ type Config struct {
LogLevel string `json:"log_level"`
}

func genDefaultConfig() (io.ReadCloser, error) {
pk, sk := cipher.GenerateKeyPair()

cfg := Config{
PubKey: pk,
SecKey: sk,
Discovery: defaultDiscoveryURL,
LocalAddress: fmt.Sprintf("localhost%s", defaultPort),
PublicAddress: defaultPort,
MaxSessions: 2048,
LogLevel: "info",
}

configData, err := jsoniter.MarshalIndent(&cfg, "", " ")
if err != nil {
return nil, fmt.Errorf("failed to marshal default json config: %v", err)
}

if err = ioutil.WriteFile(defaultConfigPath, configData, 0600); err != nil {
return nil, err
}

return os.Open(defaultConfigPath)
}

// Execute executes root CLI command.
func Execute() {
if err := rootCmd.Execute(); err != nil {
Expand Down
26 changes: 25 additions & 1 deletion cmd/dmsg-server/internal/api/api.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import (
"encoding/json"
"math"
"math/big"
"net"
"net/http"
"sync"
"time"
Expand All @@ -30,6 +31,7 @@ type API struct {
minuteEncValues map[*dmsg.SessionCommon]uint64
secondDecValues map[*dmsg.SessionCommon]uint64
secondEncValues map[*dmsg.SessionCommon]uint64
router *chi.Mux
}

// HealthCheckResponse is struct of /health endpoint
Expand All @@ -47,8 +49,10 @@ func New(r *chi.Mux, log *logging.Logger, m servermetrics.Metrics) *API {
minuteEncValues: make(map[*dmsg.SessionCommon]uint64),
secondDecValues: make(map[*dmsg.SessionCommon]uint64),
secondEncValues: make(map[*dmsg.SessionCommon]uint64),
router: r,
}
r.Use(httputil.SetLoggerMiddleware(log))
r.Get("/health", api.health)
return api
}

Expand Down Expand Up @@ -80,8 +84,28 @@ func (a *API) SetDmsgServer(srv *dmsg.Server) {
a.dmsgServer = srv
}

// Serve runs dmsg Serve function alongside health endpoint in the same port
func (a *API) Serve(lis net.Listener, addr string) error {
errCh := make(chan error)

go func(l net.Listener, address string) {
if err := a.dmsgServer.Serve(l, address); err != nil {
errCh <- err
}
}(lis, addr)
if err := http.Serve(lis, a.router); err != nil {
errCh <- err
}
return <-errCh
}

// Close closes connection to both http server and dmsg server
func (a *API) Close() error {
return a.dmsgServer.Close()
}

// Health serves health page
func (a *API) Health(w http.ResponseWriter, r *http.Request) {
func (a *API) health(w http.ResponseWriter, r *http.Request) {
info := buildinfo.Get()
a.writeJSON(w, r, http.StatusOK, HealthCheckResponse{
BuildInfo: info,
Expand Down
Loading