From ca297713fa6d63042a7caf1726c7a8eb27b9c258 Mon Sep 17 00:00:00 2001 From: Richard Ramos Date: Thu, 6 Jul 2023 17:40:57 -0400 Subject: [PATCH] refactor: move app code to cmd/waku --- cmd/waku/flags.go | 4 ++-- cmd/waku/{no_rln.go => flags_no_rln.go} | 0 cmd/waku/{rln.go => flags_rln.go} | 0 cmd/waku/main.go | 7 +++---- {waku => cmd/waku}/node.go | 13 +++++++------ {waku => cmd/waku}/node_no_rln.go | 2 +- {waku => cmd/waku}/node_rln.go | 2 +- {waku => cmd/waku}/options.go | 8 ++++++-- {waku => cmd/waku}/sys_not_unix.go | 2 +- {waku => cmd/waku}/sys_unix.go | 2 +- {waku => cmd/waku}/sys_windows.go | 2 +- examples/c-bindings/main.c | 1 - mobile/api.go | 4 ++-- waku/{ => persistence/utils}/db.go | 3 ++- 14 files changed, 27 insertions(+), 23 deletions(-) rename cmd/waku/{no_rln.go => flags_no_rln.go} (100%) rename cmd/waku/{rln.go => flags_rln.go} (100%) rename {waku => cmd/waku}/node.go (98%) rename {waku => cmd/waku}/node_no_rln.go (94%) rename {waku => cmd/waku}/node_rln.go (98%) rename {waku => cmd/waku}/options.go (94%) rename {waku => cmd/waku}/sys_not_unix.go (95%) rename {waku => cmd/waku}/sys_unix.go (95%) rename {waku => cmd/waku}/sys_windows.go (86%) rename waku/{ => persistence/utils}/db.go (87%) diff --git a/cmd/waku/flags.go b/cmd/waku/flags.go index 23cf8039..f4430590 100644 --- a/cmd/waku/flags.go +++ b/cmd/waku/flags.go @@ -79,11 +79,11 @@ var ( Destination: &options.Websocket.CertPath, EnvVars: []string{"WAKUNODE2_WEBSOCKET_SECURE_CERT_PATH"}, }) - Dns4DomainName = altsrc.NewStringFlag(&cli.StringFlag{ + DNS4DomainName = altsrc.NewStringFlag(&cli.StringFlag{ Name: "dns4-domain-name", Value: "", Usage: "The domain name resolving to the node's public IPv4 address", - Destination: &options.Dns4DomainName, + Destination: &options.DNS4DomainName, EnvVars: []string{"WAKUNODE2_WEBSOCKET_DNS4_DOMAIN_NAME"}, }) NodeKey = cliutils.NewGenericFlagSingleValue(&cli.GenericFlag{ diff --git a/cmd/waku/no_rln.go b/cmd/waku/flags_no_rln.go similarity index 100% rename from cmd/waku/no_rln.go rename to cmd/waku/flags_no_rln.go diff --git a/cmd/waku/rln.go b/cmd/waku/flags_rln.go similarity index 100% rename from cmd/waku/rln.go rename to cmd/waku/flags_rln.go diff --git a/cmd/waku/main.go b/cmd/waku/main.go index c2469645..8df1cab6 100644 --- a/cmd/waku/main.go +++ b/cmd/waku/main.go @@ -5,11 +5,10 @@ import ( cli "github.com/urfave/cli/v2" "github.com/urfave/cli/v2/altsrc" - "github.com/waku-org/go-waku/waku" "github.com/waku-org/go-waku/waku/v2/node" ) -var options waku.Options +var options Options func main() { // Defaults @@ -27,7 +26,7 @@ func main() { WebsocketSecureSupport, WebsocketSecureKeyPath, WebsocketSecureCertPath, - Dns4DomainName, + DNS4DomainName, NodeKey, KeyFile, KeyPassword, @@ -110,7 +109,7 @@ func main() { Before: altsrc.InitInputSourceWithContext(cliFlags, altsrc.NewTomlSourceFromFlagFunc("config-file")), Flags: cliFlags, Action: func(c *cli.Context) error { - waku.Execute(options) + Execute(options) return nil }, } diff --git a/waku/node.go b/cmd/waku/node.go similarity index 98% rename from waku/node.go rename to cmd/waku/node.go index 688f0302..313ec6ae 100644 --- a/waku/node.go +++ b/cmd/waku/node.go @@ -1,4 +1,4 @@ -package waku +package main import ( "context" @@ -18,6 +18,7 @@ import ( "github.com/pbnjay/memory" "github.com/waku-org/go-waku/waku/persistence/sqlite" + dbutils "github.com/waku-org/go-waku/waku/persistence/utils" wmetrics "github.com/waku-org/go-waku/waku/v2/metrics" "github.com/waku-org/go-waku/waku/v2/peers" "github.com/waku-org/go-waku/waku/v2/rendezvous" @@ -104,7 +105,7 @@ func Execute(options Options) { var db *sql.DB var migrationFn func(*sql.DB) error if requiresDB(options) { - db, migrationFn, err = ExtractDBAndMigration(options.Store.DatabaseURL) + db, migrationFn, err = dbutils.ExtractDBAndMigration(options.Store.DatabaseURL) failOnErr(err, "Could not connect to DB") } @@ -141,8 +142,8 @@ func Execute(options Options) { nodeOpts = append(nodeOpts, node.WithExternalIP(ip)) } - if options.Dns4DomainName != "" { - nodeOpts = append(nodeOpts, node.WithDns4Domain(options.Dns4DomainName)) + if options.DNS4DomainName != "" { + nodeOpts = append(nodeOpts, node.WithDns4Domain(options.DNS4DomainName)) } libp2pOpts := node.DefaultLibP2POptions @@ -386,12 +387,12 @@ func Execute(options Options) { if options.PeerExchange.Enable && options.PeerExchange.Node != nil { logger.Info("retrieving peer info via peer exchange protocol") - peerId, err := wakuNode.AddPeer(*options.PeerExchange.Node, peers.Static, peer_exchange.PeerExchangeID_v20alpha1) + peerID, err := wakuNode.AddPeer(*options.PeerExchange.Node, peers.Static, peer_exchange.PeerExchangeID_v20alpha1) if err != nil { logger.Error("adding peer exchange peer", logging.MultiAddrs("node", *options.PeerExchange.Node), zap.Error(err)) } else { desiredOutDegree := wakuNode.Relay().Params().D - if err = wakuNode.PeerExchange().Request(ctx, desiredOutDegree, peer_exchange.WithPeer(peerId)); err != nil { + if err = wakuNode.PeerExchange().Request(ctx, desiredOutDegree, peer_exchange.WithPeer(peerID)); err != nil { logger.Error("requesting peers via peer exchange", zap.Error(err)) } } diff --git a/waku/node_no_rln.go b/cmd/waku/node_no_rln.go similarity index 94% rename from waku/node_no_rln.go rename to cmd/waku/node_no_rln.go index a76349f9..c29c3cab 100644 --- a/waku/node_no_rln.go +++ b/cmd/waku/node_no_rln.go @@ -1,7 +1,7 @@ //go:build !gowaku_rln // +build !gowaku_rln -package waku +package main import ( "github.com/waku-org/go-waku/waku/v2/node" diff --git a/waku/node_rln.go b/cmd/waku/node_rln.go similarity index 98% rename from waku/node_rln.go rename to cmd/waku/node_rln.go index 8449c40b..282d5189 100644 --- a/waku/node_rln.go +++ b/cmd/waku/node_rln.go @@ -1,7 +1,7 @@ //go:build gowaku_rln // +build gowaku_rln -package waku +package main import ( "crypto/ecdsa" diff --git a/waku/options.go b/cmd/waku/options.go similarity index 94% rename from waku/options.go rename to cmd/waku/options.go index 2d964187..bec9492d 100644 --- a/waku/options.go +++ b/cmd/waku/options.go @@ -1,4 +1,4 @@ -package waku +package main import ( "crypto/ecdsa" @@ -30,6 +30,9 @@ type RelayOptions struct { MinRelayPeersToPublish int } +// RLNRelayOptions are settings used to enable RLN Relay. This is a protocol +// used to rate limit messages and penalize those attempting to send more than +// N messages per epoch type RLNRelayOptions struct { Enable bool CredentialsPath string @@ -134,6 +137,7 @@ type PeerExchangeOptions struct { Node *multiaddr.Multiaddr } +// RendezvousOptions are settings used with the rendezvous protocol type RendezvousOptions struct { Enable bool Server bool @@ -145,7 +149,7 @@ type RendezvousOptions struct { type Options struct { Port int Address string - Dns4DomainName string + DNS4DomainName string NodeKey *ecdsa.PrivateKey KeyFile string KeyPasswd string diff --git a/waku/sys_not_unix.go b/cmd/waku/sys_not_unix.go similarity index 95% rename from waku/sys_not_unix.go rename to cmd/waku/sys_not_unix.go index 23028ce5..6fb98064 100644 --- a/waku/sys_not_unix.go +++ b/cmd/waku/sys_not_unix.go @@ -1,6 +1,6 @@ //go:build !linux && !darwin && !windows -package waku +package main import "runtime" diff --git a/waku/sys_unix.go b/cmd/waku/sys_unix.go similarity index 95% rename from waku/sys_unix.go rename to cmd/waku/sys_unix.go index 473fd877..fdca16b2 100644 --- a/waku/sys_unix.go +++ b/cmd/waku/sys_unix.go @@ -1,6 +1,6 @@ //go:build linux || darwin -package waku +package main import ( "fmt" diff --git a/waku/sys_windows.go b/cmd/waku/sys_windows.go similarity index 86% rename from waku/sys_windows.go rename to cmd/waku/sys_windows.go index ad5e36f8..08637d17 100644 --- a/waku/sys_windows.go +++ b/cmd/waku/sys_windows.go @@ -1,6 +1,6 @@ //go:build windows -package waku +package main import ( "math" diff --git a/examples/c-bindings/main.c b/examples/c-bindings/main.c index 9f7690d6..9d1fa39a 100644 --- a/examples/c-bindings/main.c +++ b/examples/c-bindings/main.c @@ -107,7 +107,6 @@ int main(int argc, char *argv[]) return 1; printf("%s\n",response); */ - response = waku_relay_subscribe(NULL); if (isError(response)) return 1; diff --git a/mobile/api.go b/mobile/api.go index d588cd19..f6be85b3 100644 --- a/mobile/api.go +++ b/mobile/api.go @@ -25,8 +25,8 @@ import ( "github.com/libp2p/go-libp2p/core/peer" libp2pProtocol "github.com/libp2p/go-libp2p/core/protocol" "github.com/multiformats/go-multiaddr" - "github.com/waku-org/go-waku/waku" "github.com/waku-org/go-waku/waku/persistence" + dbutils "github.com/waku-org/go-waku/waku/persistence/utils" "github.com/waku-org/go-waku/waku/v2/node" "github.com/waku-org/go-waku/waku/v2/payload" "github.com/waku-org/go-waku/waku/v2/peers" @@ -115,7 +115,7 @@ func NewNode(configJSON string) string { if *config.EnableStore { var db *sql.DB var migrationFn func(*sql.DB) error - db, migrationFn, err = waku.ExtractDBAndMigration(*config.DatabaseURL) + db, migrationFn, err = dbutils.ExtractDBAndMigration(*config.DatabaseURL) if err != nil { return MakeJSONResponse(err) } diff --git a/waku/db.go b/waku/persistence/utils/db.go similarity index 87% rename from waku/db.go rename to waku/persistence/utils/db.go index f3a4a62c..5d58ee62 100644 --- a/waku/db.go +++ b/waku/persistence/utils/db.go @@ -1,4 +1,4 @@ -package waku +package utils import ( "database/sql" @@ -18,6 +18,7 @@ func validateDBUrl(val string) error { return nil } +// ExtractDBAndMigration will return a database connection, and migration function that should be used depending on a database connection string func ExtractDBAndMigration(databaseURL string) (*sql.DB, func(*sql.DB) error, error) { var db *sql.DB var migrationFn func(*sql.DB) error