diff --git a/main.go b/main.go index 9f832c04c6b713eab21abe6365185a9c9d4b69dc..c51e880060dd135c8f4aa88b159bff8bf0595a96 100644 --- a/main.go +++ b/main.go @@ -22,6 +22,7 @@ import ( "github.com/iotaledger/goshimmer/plugins/spa" "github.com/iotaledger/goshimmer/plugins/tangle" "github.com/iotaledger/goshimmer/plugins/webapi" + webapi_broadcastData "github.com/iotaledger/goshimmer/plugins/webapi/broadcastData" webapi_gtta "github.com/iotaledger/goshimmer/plugins/webapi/gtta" webapi_spammer "github.com/iotaledger/goshimmer/plugins/webapi/spammer" webapi_auth "github.com/iotaledger/goshimmer/plugins/webauth" @@ -60,11 +61,11 @@ func main() { webapi_auth.PLUGIN, webapi_gtta.PLUGIN, webapi_spammer.PLUGIN, + webapi_broadcastData.PLUGIN, spa.PLUGIN, /* - webapi_broadcastData.PLUGIN, webapi_getTransactionTrytesByHash.PLUGIN, webapi_getTransactionObjectsByHash.PLUGIN, webapi_findTransactionHashes.PLUGIN, diff --git a/out.png b/out.png index 791e95508b8a43cf8e9c0cc509a1f15ef5a53ed7..bd230abdd676a7fec1b003bc17ec6c0189d20dd0 100644 Binary files a/out.png and b/out.png differ diff --git a/packages/binary/tangle/transactionparser/builtinfilters/recently_seen_bytes_filter.go b/packages/binary/tangle/transactionparser/builtinfilters/recently_seen_bytes_filter.go index 8dec31ea41c4575574c161869586d5fbaffa50d7..fbcc969816af831da14d62ad0b6a2d9699c9a174 100644 --- a/packages/binary/tangle/transactionparser/builtinfilters/recently_seen_bytes_filter.go +++ b/packages/binary/tangle/transactionparser/builtinfilters/recently_seen_bytes_filter.go @@ -14,7 +14,7 @@ var ErrReceivedDuplicateBytes = fmt.Errorf("received duplicate bytes") type RecentlySeenBytesFilter struct { bytesFilter *bytesfilter.BytesFilter onAcceptCallback func(bytes []byte, peer *peer.Peer) - onRejectCallback func(bytes []byte, err error) + onRejectCallback func(bytes []byte, err error, peer *peer.Peer) workerPool async.WorkerPool onAcceptCallbackMutex sync.RWMutex @@ -34,7 +34,7 @@ func (filter *RecentlySeenBytesFilter) Filter(bytes []byte, peer *peer.Peer) { if filter.bytesFilter.Add(bytes) { filter.getAcceptCallback()(bytes, peer) } else { - filter.getRejectCallback()(bytes, ErrReceivedDuplicateBytes) + filter.getRejectCallback()(bytes, ErrReceivedDuplicateBytes, peer) } }) } @@ -45,7 +45,7 @@ func (filter *RecentlySeenBytesFilter) OnAccept(callback func(bytes []byte, peer filter.onAcceptCallbackMutex.Unlock() } -func (filter *RecentlySeenBytesFilter) OnReject(callback func(bytes []byte, err error)) { +func (filter *RecentlySeenBytesFilter) OnReject(callback func(bytes []byte, err error, peer *peer.Peer)) { filter.onRejectCallbackMutex.Lock() filter.onRejectCallback = callback filter.onRejectCallbackMutex.Unlock() @@ -59,7 +59,7 @@ func (filter *RecentlySeenBytesFilter) getAcceptCallback() (result func(bytes [] return } -func (filter *RecentlySeenBytesFilter) getRejectCallback() (result func(bytes []byte, err error)) { +func (filter *RecentlySeenBytesFilter) getRejectCallback() (result func(bytes []byte, err error, peer *peer.Peer)) { filter.onRejectCallbackMutex.Lock() result = filter.onRejectCallback filter.onRejectCallbackMutex.Unlock() diff --git a/packages/binary/tangle/transactionparser/builtinfilters/transaction_signature_filter.go b/packages/binary/tangle/transactionparser/builtinfilters/transaction_signature_filter.go index 469864ba8b8f7f529df9c8e5db4911f73349b82b..132ca46ece65ecfc6c2bc6ebc6fa50bb64b29171 100644 --- a/packages/binary/tangle/transactionparser/builtinfilters/transaction_signature_filter.go +++ b/packages/binary/tangle/transactionparser/builtinfilters/transaction_signature_filter.go @@ -14,7 +14,7 @@ var ErrInvalidSignature = fmt.Errorf("invalid signature") type TransactionSignatureFilter struct { onAcceptCallback func(tx *transaction.Transaction, peer *peer.Peer) - onRejectCallback func(tx *transaction.Transaction, err error) + onRejectCallback func(tx *transaction.Transaction, err error, peer *peer.Peer) workerPool async.WorkerPool onAcceptCallbackMutex sync.RWMutex @@ -32,7 +32,7 @@ func (filter *TransactionSignatureFilter) Filter(tx *transaction.Transaction, pe if tx.VerifySignature() { filter.getAcceptCallback()(tx, peer) } else { - filter.getRejectCallback()(tx, ErrInvalidSignature) + filter.getRejectCallback()(tx, ErrInvalidSignature, peer) } }) } @@ -43,7 +43,7 @@ func (filter *TransactionSignatureFilter) OnAccept(callback func(tx *transaction filter.onAcceptCallbackMutex.Unlock() } -func (filter *TransactionSignatureFilter) OnReject(callback func(tx *transaction.Transaction, err error)) { +func (filter *TransactionSignatureFilter) OnReject(callback func(tx *transaction.Transaction, err error, peer *peer.Peer)) { filter.onRejectCallbackMutex.Lock() filter.onRejectCallback = callback filter.onRejectCallbackMutex.Unlock() @@ -61,7 +61,7 @@ func (filter *TransactionSignatureFilter) getAcceptCallback() (result func(tx *t return } -func (filter *TransactionSignatureFilter) getRejectCallback() (result func(tx *transaction.Transaction, err error)) { +func (filter *TransactionSignatureFilter) getRejectCallback() (result func(tx *transaction.Transaction, err error, peer *peer.Peer)) { filter.onRejectCallbackMutex.RLock() result = filter.onRejectCallback filter.onRejectCallbackMutex.RUnlock() diff --git a/packages/binary/tangle/transactionparser/bytes_filter.go b/packages/binary/tangle/transactionparser/bytes_filter.go index 277c2da119fdd8ea355ab18ef7ce599ffe38250a..2a84169ce7d19dcc3f5f66cbcafc7d7a04eb8811 100644 --- a/packages/binary/tangle/transactionparser/bytes_filter.go +++ b/packages/binary/tangle/transactionparser/bytes_filter.go @@ -7,6 +7,6 @@ import ( type BytesFilter interface { Filter(bytes []byte, peer *peer.Peer) OnAccept(callback func(bytes []byte, peer *peer.Peer)) - OnReject(callback func(bytes []byte, err error)) + OnReject(callback func(bytes []byte, err error, peer *peer.Peer)) Shutdown() } diff --git a/packages/binary/tangle/transactionparser/transaction_filter.go b/packages/binary/tangle/transactionparser/transaction_filter.go index 2898afde8b30468ed2b1041126395436f18686f7..ac63d23c5bc21fa673bdd4c8dd0062ac7aa23431 100644 --- a/packages/binary/tangle/transactionparser/transaction_filter.go +++ b/packages/binary/tangle/transactionparser/transaction_filter.go @@ -9,6 +9,6 @@ import ( type TransactionFilter interface { Filter(tx *transaction.Transaction, peer *peer.Peer) OnAccept(callback func(tx *transaction.Transaction, peer *peer.Peer)) - OnReject(callback func(tx *transaction.Transaction, err error)) + OnReject(callback func(tx *transaction.Transaction, err error, peer *peer.Peer)) Shutdown() } diff --git a/packages/binary/tangle/transactionparser/transactionparser.go b/packages/binary/tangle/transactionparser/transactionparser.go index a144746d28f73cf16b9eca88cf5fee6005f7172f..f1568d49796a6b1dd9fc16917b3fdac6daeade91 100644 --- a/packages/binary/tangle/transactionparser/transactionparser.go +++ b/packages/binary/tangle/transactionparser/transactionparser.go @@ -30,13 +30,13 @@ func New() (result *TransactionParser) { Events: transactionParserEvents{ BytesRejected: events.NewEvent(func(handler interface{}, params ...interface{}) { - handler.(func([]byte, error))(params[0].([]byte), params[1].(error)) + handler.(func([]byte, error, *peer.Peer))(params[0].([]byte), params[1].(error), params[2].(*peer.Peer)) }), TransactionParsed: events.NewEvent(func(handler interface{}, params ...interface{}) { handler.(func(*transaction.Transaction, *peer.Peer))(params[0].(*transaction.Transaction), params[1].(*peer.Peer)) }), TransactionRejected: events.NewEvent(func(handler interface{}, params ...interface{}) { - handler.(func(*transaction.Transaction, error))(params[0].(*transaction.Transaction), params[1].(error)) + handler.(func(*transaction.Transaction, error, *peer.Peer))(params[0].(*transaction.Transaction), params[1].(error), params[2].(*peer.Peer)) }), }, } @@ -101,8 +101,8 @@ func (transactionParser *TransactionParser) setupBytesFilterDataFlow() { } else { transactionParser.bytesFilters[i].OnAccept(transactionParser.bytesFilters[i+1].Filter) } - transactionParser.bytesFilters[i].OnReject(func(bytes []byte, err error) { - transactionParser.Events.BytesRejected.Trigger(bytes, err) + transactionParser.bytesFilters[i].OnReject(func(bytes []byte, err error, peer *peer.Peer) { + transactionParser.Events.BytesRejected.Trigger(bytes, err, peer) }) } } @@ -127,8 +127,8 @@ func (transactionParser *TransactionParser) setupTransactionsFilterDataFlow() { } else { transactionParser.transactionFilters[i].OnAccept(transactionParser.transactionFilters[i+1].Filter) } - transactionParser.transactionFilters[i].OnReject(func(tx *transaction.Transaction, err error) { - transactionParser.Events.TransactionRejected.Trigger(tx, err) + transactionParser.transactionFilters[i].OnReject(func(tx *transaction.Transaction, err error, peer *peer.Peer) { + transactionParser.Events.TransactionRejected.Trigger(tx, err, peer) }) } } @@ -137,7 +137,7 @@ func (transactionParser *TransactionParser) setupTransactionsFilterDataFlow() { func (transactionParser *TransactionParser) parseTransaction(bytes []byte, peer *peer.Peer) { if parsedTransaction, err := transaction.FromBytes(bytes); err != nil { - transactionParser.Events.BytesRejected.Trigger(bytes, err) + transactionParser.Events.BytesRejected.Trigger(bytes, err, peer) } else { transactionParser.transactionFilters[0].Filter(parsedTransaction, peer) } diff --git a/plugins/tangle/plugin.go b/plugins/tangle/plugin.go index acc998fe3a0e6801f6337f0a120a91683fb0bab7..4afcbb6c40d8b2c2dacc9e1fdae0308a3419c01d 100644 --- a/plugins/tangle/plugin.go +++ b/plugins/tangle/plugin.go @@ -42,6 +42,7 @@ func configure(*node.Plugin) { // setup TransactionParser TransactionParser.Events.TransactionParsed.Attach(events.NewClosure(func(transaction *transaction.Transaction, peer *peer.Peer) { + peer.PublicKey() // TODO: ADD PEER Instance.AttachTransaction(transaction) diff --git a/plugins/webapi/broadcastData/plugin.go b/plugins/webapi/broadcastData/plugin.go index 180144daece29905658d1e667c5521ed0cb838c2..ab2631a54d6aae375f58f13d64a10f4c1762e6b4 100644 --- a/plugins/webapi/broadcastData/plugin.go +++ b/plugins/webapi/broadcastData/plugin.go @@ -29,7 +29,6 @@ func configure(plugin *node.Plugin) { // broadcastData creates a data (0-value) transaction given an input of bytes and // broadcasts it to the node's neighbors. It returns the transaction hash if successful. func broadcastData(c echo.Context) error { - var request Request if err := c.Bind(&request); err != nil { log.Info(err.Error())