mirror of
https://github.com/schollz/croc.git
synced 2025-10-11 13:21:00 +02:00
encrypt external ip
This commit is contained in:
parent
d5846bc88d
commit
5fce2a2e27
3 changed files with 35 additions and 10 deletions
|
@ -644,7 +644,6 @@ func (c *Client) procesMesssagePake(m message.Message) (err error) {
|
||||||
err = message.Send(c.conn[0], c.Key, message.Message{
|
err = message.Send(c.conn[0], c.Key, message.Message{
|
||||||
Type: "salt",
|
Type: "salt",
|
||||||
Bytes: salt,
|
Bytes: salt,
|
||||||
Message: c.ExternalIP,
|
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
|
@ -686,7 +685,6 @@ func (c *Client) processMessageSalt(m message.Message) (done bool, err error) {
|
||||||
err = message.Send(c.conn[0], c.Key, message.Message{
|
err = message.Send(c.conn[0], c.Key, message.Message{
|
||||||
Type: "salt",
|
Type: "salt",
|
||||||
Bytes: m.Bytes,
|
Bytes: m.Bytes,
|
||||||
Message: c.ExternalIP,
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
log.Debugf("session key is verified, generating encryption with salt: %x", m.Bytes)
|
log.Debugf("session key is verified, generating encryption with salt: %x", m.Bytes)
|
||||||
|
@ -699,6 +697,27 @@ func (c *Client) processMessageSalt(m message.Message) (done bool, err error) {
|
||||||
return true, err
|
return true, err
|
||||||
}
|
}
|
||||||
log.Debugf("key = %+x", c.Key)
|
log.Debugf("key = %+x", c.Key)
|
||||||
|
if c.Options.IsSender {
|
||||||
|
log.Debug("sending external IP")
|
||||||
|
err = message.Send(c.conn[0], c.Key, message.Message{
|
||||||
|
Type: "externalip",
|
||||||
|
Bytes: m.Bytes,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *Client) processExternalIP(m message.Message) (done bool, err error) {
|
||||||
|
log.Debug("received external IP")
|
||||||
|
if !c.Options.IsSender {
|
||||||
|
err = message.Send(c.conn[0], c.Key, message.Message{
|
||||||
|
Type: "externalip",
|
||||||
|
Message: c.ExternalIP,
|
||||||
|
})
|
||||||
|
if err != nil {
|
||||||
|
return true, err
|
||||||
|
}
|
||||||
|
}
|
||||||
if c.ExternalIPConnected == "" {
|
if c.ExternalIPConnected == "" {
|
||||||
// it can be preset by the local relay
|
// it can be preset by the local relay
|
||||||
c.ExternalIPConnected = m.Message
|
c.ExternalIPConnected = m.Message
|
||||||
|
@ -711,6 +730,7 @@ func (c *Client) processMessageSalt(m message.Message) (done bool, err error) {
|
||||||
func (c *Client) processMessage(payload []byte) (done bool, err error) {
|
func (c *Client) processMessage(payload []byte) (done bool, err error) {
|
||||||
m, err := message.Decode(c.Key, payload)
|
m, err := message.Decode(c.Key, payload)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
err = fmt.Errorf("problem with decoding: %s", err.Error())
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -726,6 +746,8 @@ func (c *Client) processMessage(payload []byte) (done bool, err error) {
|
||||||
err = c.procesMesssagePake(m)
|
err = c.procesMesssagePake(m)
|
||||||
case "salt":
|
case "salt":
|
||||||
done, err = c.processMessageSalt(m)
|
done, err = c.processMessageSalt(m)
|
||||||
|
case "externalip":
|
||||||
|
done, err = c.processExternalIP(m)
|
||||||
case "error":
|
case "error":
|
||||||
// c.spinner.Stop()
|
// c.spinner.Stop()
|
||||||
fmt.Print("\r")
|
fmt.Print("\r")
|
||||||
|
|
|
@ -12,15 +12,18 @@ import (
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestCroc(t *testing.T) {
|
func init() {
|
||||||
log.SetLevel("trace")
|
log.SetLevel("trace")
|
||||||
defer os.Remove("README.md")
|
|
||||||
go tcp.Run("debug", "8081", "pass123", "8082,8083,8084,8085")
|
go tcp.Run("debug", "8081", "pass123", "8082,8083,8084,8085")
|
||||||
go tcp.Run("debug", "8082", "pass123")
|
go tcp.Run("debug", "8082", "pass123")
|
||||||
go tcp.Run("debug", "8083", "pass123")
|
go tcp.Run("debug", "8083", "pass123")
|
||||||
go tcp.Run("debug", "8084", "pass123")
|
go tcp.Run("debug", "8084", "pass123")
|
||||||
go tcp.Run("debug", "8085", "pass123")
|
go tcp.Run("debug", "8085", "pass123")
|
||||||
time.Sleep(1 * time.Second)
|
time.Sleep(5 * time.Second)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestCrocReadme(t *testing.T) {
|
||||||
|
defer os.Remove("README.md")
|
||||||
|
|
||||||
log.Debug("setting up sender")
|
log.Debug("setting up sender")
|
||||||
sender, err := New(Options{
|
sender, err := New(Options{
|
||||||
|
|
|
@ -24,11 +24,11 @@ func (m Message) String() string {
|
||||||
|
|
||||||
// Send will send out
|
// Send will send out
|
||||||
func Send(c *comm.Comm, key []byte, m Message) (err error) {
|
func Send(c *comm.Comm, key []byte, m Message) (err error) {
|
||||||
|
log.Debugf("writing %s message", m.Type)
|
||||||
mSend, err := Encode(key, m)
|
mSend, err := Encode(key, m)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
log.Debugf("writing %s message (%d bytes)", m.Type, len(mSend))
|
|
||||||
_, err = c.Write(mSend)
|
_, err = c.Write(mSend)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue