Git Product home page Git Product logo

pairmesh / pairmesh Goto Github PK

View Code? Open in Web Editor NEW
178.0 18.0 40.0 3.13 MB

The next-generation security Mesh VPN implementation based on Golang.

Home Page: https://www.pairmesh.com

License: Apache License 2.0

Makefile 0.33% Go 81.06% Shell 0.17% C 0.12% Objective-C 1.82% JavaScript 1.15% HTML 0.11% Vue 4.58% NSIS 0.83% Rich Text Format 9.83%
vpn p2p-network noise-protocol golang mesh mesh-networks mesh-vpn p2p-vpn

pairmesh's Issues

{connect: address already in use} after externalAddressChanged

Bug Report

Please answer these questions before submitting your issue. Thanks!

  1. What did you do and what did you see?

Just started pairmesh and logged in. Got:

jiachen@Jiachens-Mini pairmesh % sudo ./bin/pairmesh -k <pmkey>

2022-03-19T00:05:56.356-0700    INFO    Startup node successfully
2022-03-19T00:05:56.356-0700    INFO    Driver initialized successfully
2022-03-19T00:06:36.492-0700    INFO    Receive login callback  {"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhY2Nlc3NfdXVpZCI6IjYzYWI1ZWVmLWI1YzgtNDI4OC1iM2NkLTdmYTg2ZjFjZDhmOSIsImF1dGhfa2V5X2lkIjowLCJhdXRob3JpemVkIjp0cnVlLCJleHAiOjE2NDg2NzM1OTYsIm1hY2hpbmVfaWQiOiJmOWMwZDc3YmQxODI4OTFlN2E0YjRkYjNiMDhkMWQ4NDMzOTY0NjA3MTJlMDZlNGIyMzJlNTQ5NjIyZWM0N2FjIiwidXNlcl9pZCI6IjE0OTE3MDI1NjQ5NTYxNDc3MTIiLCJ2ZW5kb3IiOjB9.SjiVSOVhiwUAd0YxZ0HmgFVXkb1C0NcmR2XqHEsd3IM"}
2022-03-19T00:06:36.494-0700    INFO    Save the latest configuration   {"path": "/Users/jiachen/Library/Application Support/pairmesh/pairmesh.conf", "config": {"token":"Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhY2Nlc3NfdXVpZCI6IjYzYWI1ZWVmLWI1YzgtNDI4OC1iM2NkLTdmYTg2ZjFjZDhmOSIsImF1dGhfa2V5X2lkIjowLCJhdXRob3JpemVkIjp0cnVlLCJleHAiOjE2NDg2NzM1OTYsIm1hY2hpbmVfaWQiOiJmOWMwZDc3YmQxODI4OTFlN2E0YjRkYjNiMDhkMWQ4NDMzOTY0NjA3MTJlMDZlNGIyMzJlNTQ5NjIyZWM0N2FjIiwidXNlcl9pZCI6IjE0OTE3MDI1NjQ5NTYxNDc3MTIiLCJ2ZW5kb3IiOjB9.SjiVSOVhiwUAd0YxZ0HmgFVXkb1C0NcmR2XqHEsd3IM","fast_key":"","dh_key":{"Private":"AwyNLVFXOG85So6vSpmY+WrA0TSTk27n4H+ts9vJQ0s=","Public":"uHgRD2zB2aHK3s/mvk4FmQJWA+kwQt2urwtZpF6MvlU="},"port":61683,"machine_id":"f9c0d77bd182891e7a4b4db3b08d1d843396460712e06e4b232e549622ec47ac","once_alert":false}}
2022-03-19T00:06:37.878-0700    INFO    Preflight request successful
2022-03-19T00:06:37.935-0700    INFO    Set virtual device address finished     {"address": "100.68.80.110"}
2022-03-19T00:06:37.935-0700    INFO    Driver preflight finished
2022-03-19T00:06:37.935-0700    INFO    All background threads running
2022-03-19T00:06:39.410-0700    INFO    Relay client noise protocol handshake is finished
2022-03-19T00:06:39.730-0700    INFO    Relay client noise protocol handshake is finished
2022-03-19T00:06:48.086-0700    INFO    ExternalAddressChanged  {"address": "207.6.111.156:61683"}
2022-03-19T00:11:10.080-0700    ERROR   Dial remote address failed      {"address": "207.6.111.156:55889", "error": "dial udp 0.0.0.0:61683->207.6.111.156:55889: connect: address already in use"}
2022-03-19T00:11:10.080-0700    ERROR   Dial remote address failed      {"address": "192.168.50.129:34542", "error": "dial udp 0.0.0.0:61683->192.168.50.129:34542: connect: address already in use"}
2022-03-19T00:11:40.080-0700    ERROR   Dial remote address failed      {"address": "207.6.111.156:55889", "error": "dial udp 0.0.0.0:61683->207.6.111.156:55889: connect: address already in use"}
2022-03-19T00:11:40.080-0700    ERROR   Dial remote address failed      {"address": "192.168.50.129:34542", "error": "dial udp 0.0.0.0:61683->192.168.50.129:34542: connect: address already in use"}
2022-03-19T00:12:10.082-0700    ERROR   Dial remote address failed      {"address": "207.6.111.156:55889", "error": "dial udp 0.0.0.0:61683->207.6.111.156:55889: connect: address already in use"}
2022-03-19T00:12:10.082-0700    ERROR   Dial remote address failed      {"address": "192.168.50.129:34542", "error": "dial udp 0.0.0.0:61683->192.168.50.129:34542: connect: address already in use"}
2022-03-19T00:12:40.081-0700    ERROR   Dial remote address failed      {"address": "207.6.111.156:55889", "error": "dial udp 0.0.0.0:61683->207.6.111.156:55889: connect: address already in use"}
2022-03-19T00:12:40.081-0700    ERROR   Dial remote address failed      {"address": "192.168.50.129:34542", "error": "dial udp 0.0.0.0:61683->192.168.50.129:34542: connect: address already in use"}
2022-03-19T00:13:10.081-0700    ERROR   Dial remote address failed      {"address": "207.6.111.156:55889", "error": "dial udp 0.0.0.0:61683->207.6.111.156:55889: connect: address already in use"}
2022-03-19T00:13:10.081-0700    ERROR   Dial remote address failed      {"address": "192.168.50.129:34542", "error": "dial udp 0.0.0.0:61683->192.168.50.129:34542: connect: address already in use"}
2022-03-19T00:13:40.081-0700    ERROR   Dial remote address failed      {"address": "207.6.111.156:55889", "error": "dial udp 0.0.0.0:61683->207.6.111.156:55889: connect: address already in use"}
2022-03-19T00:13:40.081-0700    ERROR   Dial remote address failed      {"address": "192.168.50.129:34542", "error": "dial udp 0.0.0.0:61683->192.168.50.129:34542: connect: address already in use"}
2022-03-19T00:14:10.081-0700    ERROR   Dial remote address failed      {"address": "207.6.111.156:55889", "error": "dial udp 0.0.0.0:61683->207.6.111.156:55889: connect: address already in use"}
2022-03-19T00:14:10.084-0700    ERROR   Dial remote address failed      {"address": "192.168.50.129:34542", "error": "dial udp 0.0.0.0:61683->192.168.50.129:34542: connect: address already in use"}
2022-03-19T00:14:40.082-0700    ERROR   Dial remote address failed      {"address": "207.6.111.156:55889", "error": "dial udp 0.0.0.0:61683->207.6.111.156:55889: connect: address already in use"}
2022-03-19T00:14:40.082-0700    ERROR   Dial remote address failed      {"address": "192.168.50.129:34542", "error": "dial udp 0.0.0.0:61683->192.168.50.129:34542: connect: address already in use"}
2022-03-19T00:15:10.082-0700    ERROR   Dial remote address failed      {"address": "207.6.111.156:55889", "error": "dial udp 0.0.0.0:61683->207.6.111.156:55889: connect: address already in use"}
2022-03-19T00:15:10.085-0700    ERROR   Dial remote address failed      {"address": "192.168.50.129:34542", "error": "dial udp 0.0.0.0:61683->192.168.50.129:34542: connect: address already in use"}
  1. What version of PairMesh are you using?
    PairMesh version baby alpha. OS M1 macOS Monterey

Support switch languages in the context menu

Feature Request

The current context menu is default to Chinese and it's better to provide a menu item to support switch to other languages. Further more, we can detect system language as the initial language.

Deep dive - Windows wintun driver uninstall error

Bug Report

Please answer these questions before submitting your issue. Thanks!

  1. What did you do?
    Try to start PairMesh.exe binary.

  2. What did you expect to see?
    Shoud be able to start and see icon in systray

  3. What did you see instead?
    Program exited with error notes

  4. What version of PairMesh are you using (PairMesh --version)?
    PairMesh v0.0.1 on Windows 11, AMD Ryzen 5 3500U CPU

Support customize api/web gateway address for MacOS

Feature Request

Is your feature request related to a problem? Please describe:

Describe the feature you'd like:

Describe alternatives you've considered:

Teachability, Documentation, Adoption, Migration Strategy:

compile error

General Question

env:
CentOS Linux release 7.9.2009 (Core)
Linux 3.10.0-1160.21.1.el7.x86_64 #1 SMP Tue Mar 16 18:28:22 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux

make error:
gofmt (simplify)
GO111MODULE=on CGO_ENABLED=1 GOOS=linux GOARCH=amd64 go build -ldflags '-w -s -X "github.com/pairmesh/pairmesh/version.GitHash=a39b637" -X "github.com/pairmesh/pairmesh/version.GitBranch=master" ' -o bin/pairmesh ./cmd/pairmesh
cmd/pairmesh/main.go:17:8: //go:build comment without // +build comment
make: *** [pairmesh] error 1

Provide guide: how to deploy PairMesh on Kubernetes

Feature Request

Is your feature request related to a problem? Please describe:

Describe the feature you'd like:

Describe alternatives you've considered:

Teachability, Documentation, Adoption, Migration Strategy:

Add badges for PairMesh repository

Reference: https://github.com/pingcap/tidb

[![LICENSE](https://img.shields.io/github/license/pingcap/tidb.svg)](https://github.com/pingcap/tidb/blob/master/LICENSE)
[![Language](https://img.shields.io/badge/Language-Go-blue.svg)](https://golang.org/)
[![Build Status](https://travis-ci.org/pingcap/tidb.svg?branch=master)](https://travis-ci.org/pingcap/tidb)
[![Go Report Card](https://goreportcard.com/badge/github.com/pingcap/tidb)](https://goreportcard.com/report/github.com/pingcap/tidb)
[![GitHub release](https://img.shields.io/github/tag/pingcap/tidb.svg?label=release)](https://github.com/pingcap/tidb/releases)
[![GitHub release date](https://img.shields.io/github/release-date/pingcap/tidb.svg)](https://github.com/pingcap/tidb/releases)
[![CircleCI Status](https://circleci.com/gh/pingcap/tidb.svg?style=shield)](https://circleci.com/gh/pingcap/tidb)
[![Coverage Status](https://codecov.io/gh/pingcap/tidb/branch/master/graph/badge.svg)](https://codecov.io/gh/pingcap/tidb)
[![GoDoc](https://img.shields.io/badge/Godoc-reference-blue.svg)](https://godoc.org/github.com/pingcap/tidb)

Many virtual network interfaces left

Bug Report

Please answer these questions before submitting your issue. Thanks!

  1. What did you do?
    Just keep starting and stopping pairmesh

  2. What did you expect to see?
    virtual network interfaces should be automatically cleaned up

  3. What did you see instead?

jiachen@Jiachens-Mini pairmesh % ifconfig
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
	options=1203<RXCSUM,TXCSUM,TXSTATUS,SW_TIMESTAMP>
	inet 127.0.0.1 netmask 0xff000000
	inet6 ::1 prefixlen 128
	inet6 fe80::1%lo0 prefixlen 64 scopeid 0x1
	nd6 options=201<PERFORMNUD,DAD>
gif0: flags=8010<POINTOPOINT,MULTICAST> mtu 1280
stf0: flags=0<> mtu 1280
anpi1: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
	options=400<CHANNEL_IO>
	ether 4e:af:59:d2:5e:25
	inet6 fe80::4caf:59ff:fed2:5e25%anpi1 prefixlen 64 scopeid 0x4
	nd6 options=201<PERFORMNUD,DAD>
	media: none
	status: inactive
anpi0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
	options=400<CHANNEL_IO>
	ether 4e:af:59:d2:5e:24
	inet6 fe80::4caf:59ff:fed2:5e24%anpi0 prefixlen 64 scopeid 0x5
	nd6 options=201<PERFORMNUD,DAD>
	media: none
	status: inactive
en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
	options=50b<RXCSUM,TXCSUM,VLAN_HWTAGGING,AV,CHANNEL_IO>
	ether 14:98:77:76:9a:3a
	nd6 options=201<PERFORMNUD,DAD>
	media: autoselect (none)
	status: inactive
en4: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
	options=400<CHANNEL_IO>
	ether 4e:af:59:d2:5e:04
	nd6 options=201<PERFORMNUD,DAD>
	media: none
	status: inactive
en5: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
	options=400<CHANNEL_IO>
	ether 4e:af:59:d2:5e:05
	nd6 options=201<PERFORMNUD,DAD>
	media: none
	status: inactive
en2: flags=8963<UP,BROADCAST,SMART,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500
	options=460<TSO4,TSO6,CHANNEL_IO>
	ether 36:bb:a6:33:61:c0
	media: autoselect <full-duplex>
	status: inactive
en3: flags=8963<UP,BROADCAST,SMART,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500
	options=460<TSO4,TSO6,CHANNEL_IO>
	ether 36:bb:a6:33:61:c4
	media: autoselect <full-duplex>
	status: inactive
ap1: flags=8802<BROADCAST,SIMPLEX,MULTICAST> mtu 1500
	options=400<CHANNEL_IO>
	ether 36:98:77:82:e7:99
	media: autoselect
	status: inactive
en1: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
	options=6463<RXCSUM,TXCSUM,TSO4,TSO6,CHANNEL_IO,PARTIAL_CSUM,ZEROINVERT_CSUM>
	ether 14:98:77:82:e7:99
	inet6 fe80::40e:593:1af2:21e6%en1 prefixlen 64 secured scopeid 0xc
	inet 192.168.0.128 netmask 0xffffff00 broadcast 192.168.0.255
	nd6 options=201<PERFORMNUD,DAD>
	media: autoselect
	status: active
en6: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
	options=6467<RXCSUM,TXCSUM,VLAN_MTU,TSO4,TSO6,CHANNEL_IO,PARTIAL_CSUM,ZEROINVERT_CSUM>
	ether c8:d9:d2:dc:36:eb
	nd6 options=201<PERFORMNUD,DAD>
	media: autoselect (none)
	status: inactive
bridge0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
	options=63<RXCSUM,TXCSUM,TSO4,TSO6>
	ether 36:bb:a6:33:61:c0
	Configuration:
		id 0:0:0:0:0:0 priority 0 hellotime 0 fwddelay 0
		maxage 0 holdcnt 0 proto stp maxaddr 100 timeout 1200
		root id 0:0:0:0:0:0 priority 0 ifcost 0 port 0
		ipfilter disabled flags 0x0
	member: en2 flags=3<LEARNING,DISCOVER>
	        ifmaxaddr 0 port 9 priority 0 path cost 0
	member: en3 flags=3<LEARNING,DISCOVER>
	        ifmaxaddr 0 port 10 priority 0 path cost 0
	nd6 options=201<PERFORMNUD,DAD>
	media: <unknown type>
	status: inactive
awdl0: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500
	options=400<CHANNEL_IO>
	ether 46:d2:2f:f3:f7:84
	inet6 fe80::44d2:2fff:fef3:f784%awdl0 prefixlen 64 scopeid 0xf
	nd6 options=201<PERFORMNUD,DAD>
	media: autoselect
	status: active
llw0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
	options=400<CHANNEL_IO>
	ether 46:d2:2f:f3:f7:84
	inet6 fe80::44d2:2fff:fef3:f784%llw0 prefixlen 64 scopeid 0x10
	nd6 options=201<PERFORMNUD,DAD>
	media: autoselect
	status: active
utun0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1380
	inet6 fe80::1407:b59a:58ff:88f0%utun0 prefixlen 64 scopeid 0x11
	nd6 options=201<PERFORMNUD,DAD>
utun1: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 2000
	inet6 fe80::c023:f6c7:52:81b%utun1 prefixlen 64 scopeid 0x12
	nd6 options=201<PERFORMNUD,DAD>
utun2: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1000
	inet6 fe80::ce81:b1c:bd2c:69e%utun2 prefixlen 64 scopeid 0x13
	nd6 options=201<PERFORMNUD,DAD>
  1. What version of PairMesh are you using (PairMesh --version)?
    0.0.1 on mac m1

Support sqlite in debug mode

Feature Request

Is your feature request related to a problem? Please describe:

Describe the feature you'd like:

Describe alternatives you've considered:

Teachability, Documentation, Adoption, Migration Strategy:

ubuntu 18.04 使用报错

Bug Report

Please answer these questions before submitting your issue. Thanks!

  1. What did you do?
sudo bin/pairmesh -k <secrety-key>
  1. What did you expect to see?
    success

  2. What did you see instead?

/opt/pairmesh/pairmesh: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.32' not found (required by /opt/pairmesh/pairmesh)
/opt/pairmesh/pairmesh: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.34' not found (required by /opt/pairmesh/pairmesh)
ubuntu@VM-0-3-ubuntu /o/pairmesh> lsb_release 
  1. What version of PairMesh are you using (PairMesh --version)?
    v0.0.1 release

Support shortcut for Windows

Feature Request

Is your feature request related to a problem? Please describe:

Describe the feature you'd like:

Describe alternatives you've considered:

Teachability, Documentation, Adoption, Migration Strategy:

Support Windows on ARM64

Build failed:

D:\devel\pairmesh\pairmesh> go build -o bin/PairMesh.exe  -ldflags "-s -w -H=windowsgui -X github.com/pairmesh/pairmesh/version.GitHash=$(git describe --no-match --always --dirty) -X github.com/pairmesh/pairmesh/version.GitBranch=$(git rev-parse --abbrev-ref HEAD)" ./cmd/pairmesh
# github.com/pairmesh/pairmesh/node/entry
node\entry\entry_gui.go:268:13: app.baseApp.auto.IsEnabled undefined (type *autostart.App has no field or method IsEnabled)
node\entry\entry_gui.go:269:22: app.baseApp.auto.Disable undefined (type *autostart.App has no field or method Disable)
node\entry\entry_gui.go:271:22: app.baseApp.auto.Enable undefined (type *autostart.App has no field or method Enable)
node\entry\entry_gui.go:280:91: app.baseApp.auto.IsEnabled undefined (type *autostart.App has no field or method IsEnabled)
node\entry\gui_windows.go:119:31: app.baseApp.auto.IsEnabled undefined (type *autostart.App has no field or method IsEnabled)
node\entry\gui_windows.go:263:31: app.baseApp.auto.IsEnabled undefined (type *autostart.App has no field or method IsEnabled)
PS D:\devel\pairmesh\pairmesh> cd go-build\cb\cb976874e6582a71ec640a70371007756633f7bf7c07bd69d26161438c20729a-d(pairmesh_windows)

Re-assign primary relay server for a device after relay server changed

Feature Request

Is your feature request related to a problem? Please describe:

  1. Start a portal, start a relay server, say server 1
  2. A node tries to log in. Portal assigns its primary server as server 1, and stores it in database
  3. Then relay server failover or something similar happens, say server 1 is no longer online. We have a new server 2.
  4. But the node still keeps getting server 1 as its primary server when getting information from portal.
  5. The node tries to reconnect to grab graph, do connections, etc, but just could not go through,
  6. So we need to automatically re-assign the new server 2 as node's primary relay server.

Describe the feature you'd like:
Whenever node greps primary server information for itself, the portal would check if the server is up online.
If yes, then just return this valid server.
If not, then automatically choose another valid one as the node's new primary relay server.

Describe alternatives you've considered:
N/A

Teachability, Documentation, Adoption, Migration Strategy:
As described above

Support local storage cache in debug mode

Feature Request

Is your feature request related to a problem? Please describe:

Describe the feature you'd like:

Describe alternatives you've considered:

Teachability, Documentation, Adoption, Migration Strategy:

Endpoint params for nodes

Feature Request

Is your feature request related to a problem? Please describe:
env variable is not reliable. MacOS and Windows have different ways of setting and handling env. And it's not a sustainable way of deploying to many users.

Describe the feature you'd like:
Let's YAML the nodes, just like how we YAML portal and relay

Describe alternatives you've considered:
N/A

Teachability, Documentation, Adoption, Migration Strategy:
N/A

Tracking issue for network unstable

Feature Request

Is your feature request related to a problem? Please describe:

Describe the feature you'd like:

Describe alternatives you've considered:

Teachability, Documentation, Adoption, Migration Strategy:

Support Linux on ARM64

Feature Request

Is your feature request related to a problem? Please describe:

Describe the feature you'd like:

Describe alternatives you've considered:

Teachability, Documentation, Adoption, Migration Strategy:

Replace the wintun dependence

Feature Request

Is your feature request related to a problem? Please describe:

Describe the feature you'd like:

Describe alternatives you've considered:

Teachability, Documentation, Adoption, Migration Strategy:

Support FreeBSD

Feature Request

Is your feature request related to a problem? Please describe:

Describe the feature you'd like:

Describe alternatives you've considered:

Teachability, Documentation, Adoption, Migration Strategy:

Add documentation: how to benchmark PairMesh

Feature Request

Is your feature request related to a problem? Please describe:

Describe the feature you'd like:

Describe alternatives you've considered:

Teachability, Documentation, Adoption, Migration Strategy:

Better documentation on setup configs

Feature Request

Is your feature request related to a problem? Please describe:
N/A

Describe the feature you'd like:
A better documented config guidelines for service bootcamps and setups

Describe alternatives you've considered:
N/A

Teachability, Documentation, Adoption, Migration Strategy:
N/A

Linux taking too long exiting and cleaning up

Bug Report

Please answer these questions before submitting your issue. Thanks!

  1. What did you do?
    ctrl + c to a running pairmesh node.

  2. What did you expect to see?
    Should be pretty fast to shut and do the clean up.

  3. What did you see instead?
    Taking quite a while.

  4. What version of PairMesh are you using (PairMesh --version)?
    0.0.1 on Ubuntu 21.10, amd64, kernel 5.13.0-37-generic

Panicked on linux

Bug Report

Please answer these questions before submitting your issue. Thanks!

  1. What did you do?
./bin/pairmesh -k <key>
  1. What did you expect to see?

Normal running

  1. What did you see instead?4.
2022-04-04T05:40:29.736+0800    WARN    Client connection transporter terminated        {"addr": "139.198.29.15:2328"}
panic: send on closed channel

goroutine 38 [running]:
github.com/pairmesh/pairmesh/internal/relay.(*Client).Send(0xc000280300, 0x2, {0x961280, 0xc000280440})
        /home/lonng/devel/pairmesh/pairmesh/internal/relay/client.go:63 +0xb8
github.com/pairmesh/pairmesh/node/mesh.(*Manager).probePeers(0xc00059c280)
        /home/lonng/devel/pairmesh/pairmesh/node/mesh/manager.go:273 +0x37c
github.com/pairmesh/pairmesh/node/mesh.(*Manager).Tick(...)
        /home/lonng/devel/pairmesh/pairmesh/node/mesh/manager.go:167
github.com/pairmesh/pairmesh/node/driver.(*NodeDriver).pullPeerGraph(0xc00051c120, {0x96bef8, 0xc0002de540})
        /home/lonng/devel/pairmesh/pairmesh/node/driver/pull_peers.go:84 +0x445
created by github.com/pairmesh/pairmesh/node/driver.(*NodeDriver).Drive
        /home/lonng/devel/pairmesh/pairmesh/node/driver/driver.go:218 +0x191
  1. What version of PairMesh are you using (PairMesh --version)?

Support shortcut for MacOS

Feature Request

Is your feature request related to a problem? Please describe:

Describe the feature you'd like:

Describe alternatives you've considered:

Teachability, Documentation, Adoption, Migration Strategy:

Support customize api/web gateway address for Windows

Feature Request

Is your feature request related to a problem? Please describe:

Describe the feature you'd like:

Describe alternatives you've considered:

Teachability, Documentation, Adoption, Migration Strategy:

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.