Просмотр исходного кода

Fixed whisper "to" filtering. Closes #283

obscuren 10 лет назад
Родитель
Сommit
7bd2fbe2b1
4 измененных файлов с 16 добавлено и 4 удалено
  1. 10 0
      cmd/mist/assets/examples/whisper.html
  2. 2 2
      whisper/message.go
  3. 1 1
      whisper/whisper.go
  4. 3 1
      xeth/whisper.go

+ 10 - 0
cmd/mist/assets/examples/whisper.html

@@ -10,6 +10,7 @@
 <h1>Whisper test</h1>
 
 <button onclick="test()">Send</button>
+<button onclick="test2()">Private send</button>
 
 <table width="100%" id="table">
 	<tr>
@@ -44,10 +45,19 @@
 		document.querySelector("#table").innerHTML += "<tr><td colspan='2'>"+JSON.stringify(message)+"</td></tr>";
 	});
 
+	var selfWatch = shh.watch({to: id, topics: ["test"]})
+	selfWatch.arrived(function(message) {
+		document.querySelector("#table").innerHTML += "<tr><td>To me</td><td>"+JSON.stringify(message)+"</td></tr>";
+	});
+
 	function test() {
 		shh.post({topics: ["test"], payload: web3.fromAscii("test it")});
 		count();
+	}
 
+	function test2() {
+		shh.post({to: id, topics: ["test"], payload: web3.fromAscii("Private")});
+		count();
 	}
 
 	function count() {

+ 2 - 2
whisper/message.go

@@ -11,11 +11,11 @@ type Message struct {
 	Flags     byte
 	Signature []byte
 	Payload   []byte
-	Sent      uint64
+	Sent      int64
 }
 
 func NewMessage(payload []byte) *Message {
-	return &Message{Flags: 0, Payload: payload}
+	return &Message{Flags: 0, Payload: payload, Sent: time.Now().Unix()}
 }
 
 func (self *Message) hash() []byte {

+ 1 - 1
whisper/whisper.go

@@ -269,7 +269,7 @@ func (self *Whisper) Protocol() p2p.Protocol {
 
 func createFilter(message *Message, topics [][]byte, key *ecdsa.PrivateKey) filter.Filter {
 	return filter.Generic{
-		Str1: string(crypto.FromECDSA(key)), Str2: string(crypto.FromECDSAPub(message.Recover())),
+		Str1: string(crypto.FromECDSAPub(&key.PublicKey)), Str2: string(crypto.FromECDSAPub(message.Recover())),
 		Data: bytesToMap(topics),
 	}
 }

+ 3 - 1
xeth/whisper.go

@@ -2,6 +2,7 @@ package xeth
 
 import (
 	"errors"
+	"fmt"
 	"time"
 
 	"github.com/ethereum/go-ethereum/crypto"
@@ -31,6 +32,7 @@ func (self *Whisper) Post(payload string, to, from string, topics []string, prio
 
 	pk := crypto.ToECDSAPub(fromHex(from))
 	if key := self.Whisper.GetIdentity(pk); key != nil || len(from) == 0 {
+		fmt.Println("POST:", to)
 		msg := whisper.NewMessage(fromHex(payload))
 		envelope, err := msg.Seal(time.Duration(priority*100000), whisper.Opts{
 			Ttl:    time.Duration(ttl) * time.Second,
@@ -101,7 +103,7 @@ type WhisperMessage struct {
 	ref     *whisper.Message
 	Payload string `json:"payload"`
 	From    string `json:"from"`
-	Sent    uint64 `json:"time"`
+	Sent    int64  `json:"time"`
 }
 
 func NewWhisperMessage(msg *whisper.Message) WhisperMessage {