Skip to content

Commit

Permalink
refactor_: add more default node config values for frontend when doin…
Browse files Browse the repository at this point in the history
…g local pair sync
  • Loading branch information
qfrank committed Apr 26, 2024
1 parent 90b18d4 commit 9ab9fb9
Show file tree
Hide file tree
Showing 7 changed files with 130 additions and 69 deletions.
48 changes: 26 additions & 22 deletions api/defaults.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,12 +26,20 @@ const defaultMnemonicLength = 12
const shardsTestClusterID = 16
const walletAccountDefaultName = "Account 1"
const keystoreRelativePath = "keystore"
const defaultKeycardPairingDataFile = "/ethereum/mainnet_rpc/keycard/pairings.json"
const DefaultKeycardPairingDataFile = "/ethereum/mainnet_rpc/keycard/pairings.json"

const defaultArchivesRelativePath = "data/archivedata"
const defaultTorrentTorrentsRelativePath = "data/torrents"
const DefaultArchivesRelativePath = "data/archivedata"
const DefaultTorrentTorrentsRelativePath = "data/torrents"

const DefaultDataDir = "/ethereum/mainnet_rpc"
const DefaultNodeName = "StatusIM"
const DefaultLogFile = "geth.log"
const DefaultLogLevel = "ERROR"
const DefaultMaxPeers = 20
const DefaultMaxPendingPeers = 20
const DefaultListenAddr = ":0"
const DefaultMaxMessageDeliveryAttempts = 6
const DefaultVerifyTransactionChainID = 1

var paths = []string{pathWalletRoot, pathEIP1581, pathDefaultChat, pathDefaultWallet}

Expand Down Expand Up @@ -125,12 +133,16 @@ func SetDefaultFleet(nodeConfig *params.NodeConfig) error {
}

func SetFleet(fleet string, nodeConfig *params.NodeConfig) error {
specifiedWakuV2Config := nodeConfig.WakuV2Config
nodeConfig.WakuV2Config = params.WakuV2Config{
Enabled: true,
EnableDiscV5: true,
DiscoveryLimit: 20,
Host: "0.0.0.0",
AutoUpdate: true,
// mobile may need override following options
LightClient: specifiedWakuV2Config.LightClient,
Nameserver: specifiedWakuV2Config.Nameserver,
}

clusterConfig, err := params.LoadClusterConfigFromFleet(fleet)
Expand Down Expand Up @@ -211,11 +223,11 @@ func defaultNodeConfig(installationID string, request *requests.CreateAccount) (
// Set mainnet
nodeConfig := &params.NodeConfig{}
nodeConfig.LogEnabled = request.LogEnabled
nodeConfig.LogFile = "geth.log"
nodeConfig.LogFile = DefaultLogFile
nodeConfig.LogDir = request.LogFilePath
nodeConfig.LogLevel = "ERROR"
nodeConfig.LogLevel = DefaultLogLevel
nodeConfig.DataDir = DefaultDataDir
nodeConfig.KeycardPairingDataFile = defaultKeycardPairingDataFile
nodeConfig.KeycardPairingDataFile = DefaultKeycardPairingDataFile
nodeConfig.ProcessBackedupMessages = false

if request.LogLevel != nil {
Expand Down Expand Up @@ -243,11 +255,11 @@ func defaultNodeConfig(installationID string, request *requests.CreateAccount) (
nodeConfig.UpstreamConfig.Enabled = true
}

nodeConfig.Name = "StatusIM"
nodeConfig.Name = DefaultNodeName
nodeConfig.Rendezvous = false
nodeConfig.NoDiscovery = true
nodeConfig.MaxPeers = 20
nodeConfig.MaxPendingPeers = 20
nodeConfig.MaxPeers = DefaultMaxPeers
nodeConfig.MaxPendingPeers = DefaultMaxPendingPeers

nodeConfig.WalletConfig = buildWalletConfig(&request.WalletSecretsConfig)

Expand All @@ -256,7 +268,7 @@ func defaultNodeConfig(installationID string, request *requests.CreateAccount) (
nodeConfig.PermissionsConfig = params.PermissionsConfig{Enabled: true}
nodeConfig.MailserversConfig = params.MailserversConfig{Enabled: true}

nodeConfig.ListenAddr = ":0"
nodeConfig.ListenAddr = DefaultListenAddr

err := SetDefaultFleet(nodeConfig)
if err != nil {
Expand All @@ -274,9 +286,9 @@ func defaultNodeConfig(installationID string, request *requests.CreateAccount) (
nodeConfig.ShhextConfig = params.ShhextConfig{
BackupDisabledDataDir: request.BackupDisabledDataDir,
InstallationID: installationID,
MaxMessageDeliveryAttempts: 6,
MaxMessageDeliveryAttempts: DefaultMaxMessageDeliveryAttempts,
MailServerConfirmations: true,
VerifyTransactionChainID: 1,
VerifyTransactionChainID: DefaultVerifyTransactionChainID,
DataSyncEnabled: true,
PFSEnabled: true,
}
Expand All @@ -301,23 +313,15 @@ func defaultNodeConfig(installationID string, request *requests.CreateAccount) (
nodeConfig.ShhextConfig.VerifyENSContractAddress = *request.VerifyENSContractAddress
}

if request.LogLevel != nil {
nodeConfig.LogLevel = *request.LogLevel
nodeConfig.LogEnabled = true

} else {
nodeConfig.LogEnabled = false
}

if request.NetworkID != nil {
nodeConfig.NetworkID = *request.NetworkID
}

nodeConfig.TorrentConfig = params.TorrentConfig{
Enabled: false,
Port: 0,
DataDir: filepath.Join(nodeConfig.RootDataDir, defaultArchivesRelativePath),
TorrentDir: filepath.Join(nodeConfig.RootDataDir, defaultTorrentTorrentsRelativePath),
DataDir: filepath.Join(nodeConfig.RootDataDir, DefaultArchivesRelativePath),
TorrentDir: filepath.Join(nodeConfig.RootDataDir, DefaultTorrentTorrentsRelativePath),
}

if request.TorrentConfigEnabled != nil {
Expand Down
2 changes: 1 addition & 1 deletion api/geth_backend.go
Original file line number Diff line number Diff line change
Expand Up @@ -617,7 +617,7 @@ func (b *GethStatusBackend) loginAccount(request *requests.Login) error {

defaultCfg := &params.NodeConfig{
// why we need this? relate PR: https://github.com/status-im/status-go/pull/4014
KeycardPairingDataFile: defaultKeycardPairingDataFile,
KeycardPairingDataFile: DefaultKeycardPairingDataFile,
}

defaultCfg.WalletConfig = buildWalletConfig(&request.WalletSecretsConfig)
Expand Down
4 changes: 2 additions & 2 deletions cmd/ping-community/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -371,12 +371,12 @@ func defaultNodeConfig(installationID string) (*params.NodeConfig, error) {
nodeConfig.ShhextConfig = params.ShhextConfig{
BackupDisabledDataDir: "",
InstallationID: installationID,
MaxMessageDeliveryAttempts: 6,
MaxMessageDeliveryAttempts: api.DefaultMaxMessageDeliveryAttempts,
MailServerConfirmations: true,
VerifyTransactionURL: "",
VerifyENSURL: "",
VerifyENSContractAddress: "",
VerifyTransactionChainID: 1,
VerifyTransactionChainID: api.DefaultVerifyTransactionChainID,
DataSyncEnabled: true,
PFSEnabled: true,
}
Expand Down
4 changes: 2 additions & 2 deletions cmd/populate-db/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -420,12 +420,12 @@ func defaultNodeConfig(installationID string) (*params.NodeConfig, error) {
nodeConfig.ShhextConfig = params.ShhextConfig{
BackupDisabledDataDir: "",
InstallationID: installationID,
MaxMessageDeliveryAttempts: 6,
MaxMessageDeliveryAttempts: api.DefaultMaxMessageDeliveryAttempts,
MailServerConfirmations: true,
VerifyTransactionURL: "",
VerifyENSURL: "",
VerifyENSContractAddress: "",
VerifyTransactionChainID: 1,
VerifyTransactionChainID: api.DefaultVerifyTransactionChainID,
DataSyncEnabled: true,
PFSEnabled: true,
}
Expand Down
4 changes: 2 additions & 2 deletions cmd/spiff-workflow/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -311,12 +311,12 @@ func defaultNodeConfig(installationID string) (*params.NodeConfig, error) {
nodeConfig.ShhextConfig = params.ShhextConfig{
BackupDisabledDataDir: "",
InstallationID: installationID,
MaxMessageDeliveryAttempts: 6,
MaxMessageDeliveryAttempts: api.DefaultMaxMessageDeliveryAttempts,
MailServerConfirmations: true,
VerifyTransactionURL: "",
VerifyENSURL: "",
VerifyENSContractAddress: "",
VerifyTransactionChainID: 1,
VerifyTransactionChainID: api.DefaultVerifyTransactionChainID,
DataSyncEnabled: true,
PFSEnabled: true,
}
Expand Down
96 changes: 87 additions & 9 deletions server/pairing/common.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@ import (
"regexp"
"strings"

"github.com/google/uuid"

"github.com/status-im/status-go/params"
"github.com/status-im/status-go/protocol/requests"

Expand Down Expand Up @@ -246,6 +248,10 @@ func validateKeystoreFilesConfig(backend *api.GethStatusBackend, conf interface{
return nil
}

// setDefaultNodeConfig sets default values for the node configuration.
// Config Values still needed from the mobile include
// VerifyTransactionURL/VerifyENSURL/VerifyENSContractAddress/VerifyTransactionChainID
// LogEnabled/LogDir/RootDataDir/LightClient/Nameserver
func setDefaultNodeConfig(c *params.NodeConfig) error {
if c == nil {
return nil
Expand All @@ -256,22 +262,94 @@ func setDefaultNodeConfig(c *params.NodeConfig) error {
return err
}

if len(c.Networks) == 0 {
// following specifiedXXX variables are used to check if frontend has specified the value
// if not, the default value is set. NOTE: we also check 2 extra fields: WakuV2Config(LightClient|Nameserver)
// see api.SetFleet for more details
specifiedVerifyTransactionURL := c.ShhextConfig.VerifyTransactionURL
specifiedVerifyENSURL := c.ShhextConfig.VerifyENSURL
specifiedVerifyENSContractAddress := c.ShhextConfig.VerifyENSContractAddress
specifiedVerifyTransactionChainID := c.ShhextConfig.VerifyTransactionChainID
specifiedNetworkID := c.NetworkID
specifiedNetworks := c.Networks
specifiedUpstreamConfigURL := c.UpstreamConfig.URL
specifiedLogEnabled := c.LogEnabled
specifiedLogLevel := c.LogLevel
specifiedFleet := c.ClusterConfig.Fleet
specifiedInstallationID := c.ShhextConfig.InstallationID
specifiedTorrentConfigEnabled := c.TorrentConfig.Enabled
specifiedTorrentConfigPort := c.TorrentConfig.Port

if len(specifiedNetworks) == 0 {
c.Networks = api.BuildDefaultNetworks(&requests.WalletSecretsConfig{})
}

if c.NetworkID == 0 {
// because PR https://github.com/status-im/status-mobile/pull/19467/files removed :networks/networks,
// we need to set the networkID and RPCURL here to make local pairing work again
if specifiedNetworkID == 0 {
c.NetworkID = c.Networks[0].ChainID
c.UpstreamConfig = params.UpstreamRPCConfig{
URL: c.Networks[0].RPCURL,
Enabled: true,
}

c.UpstreamConfig.Enabled = true
if specifiedUpstreamConfigURL == "" {
c.UpstreamConfig.URL = c.Networks[0].RPCURL
}

if specifiedLogEnabled && specifiedLogLevel == "" {
c.LogLevel = api.DefaultLogLevel
}
c.LogFile = api.DefaultLogFile

c.Name = api.DefaultNodeName
c.DataDir = api.DefaultDataDir
c.KeycardPairingDataFile = api.DefaultKeycardPairingDataFile
c.Rendezvous = false
c.NoDiscovery = true
c.MaxPeers = api.DefaultMaxPeers
c.MaxPendingPeers = api.DefaultMaxPendingPeers

c.LocalNotificationsConfig = params.LocalNotificationsConfig{Enabled: true}
c.BrowsersConfig = params.BrowsersConfig{Enabled: true}
c.PermissionsConfig = params.PermissionsConfig{Enabled: true}
c.MailserversConfig = params.MailserversConfig{Enabled: true}

c.ListenAddr = api.DefaultListenAddr

if specifiedFleet == "" {
err = api.SetDefaultFleet(c)
if err != nil {
return err
}
}

if c.DataDir == "" {
c.DataDir = api.DefaultDataDir
if specifiedInstallationID == "" {
specifiedInstallationID = uuid.New().String()
}

c.ShhextConfig = params.ShhextConfig{
BackupDisabledDataDir: c.RootDataDir,
InstallationID: specifiedInstallationID,
MaxMessageDeliveryAttempts: api.DefaultMaxMessageDeliveryAttempts,
MailServerConfirmations: true,
DataSyncEnabled: true,
PFSEnabled: true,
VerifyTransactionURL: specifiedVerifyTransactionURL,
VerifyENSURL: specifiedVerifyENSURL,
VerifyENSContractAddress: specifiedVerifyENSContractAddress,
}
if specifiedVerifyTransactionChainID == 0 {
c.ShhextConfig.VerifyTransactionChainID = int64(c.Networks[0].ChainID)
}

if specifiedVerifyTransactionURL == "" {
c.ShhextConfig.VerifyTransactionURL = c.Networks[0].FallbackURL
}
if specifiedVerifyENSURL == "" {
c.ShhextConfig.VerifyENSURL = c.Networks[0].FallbackURL
}

c.TorrentConfig = params.TorrentConfig{
Enabled: specifiedTorrentConfigEnabled,
Port: specifiedTorrentConfigPort,
DataDir: filepath.Join(c.RootDataDir, api.DefaultArchivesRelativePath),
TorrentDir: filepath.Join(c.RootDataDir, api.DefaultTorrentTorrentsRelativePath),
}

return nil
Expand Down
41 changes: 10 additions & 31 deletions server/pairing/sync_device_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -115,13 +115,9 @@ func (s *SyncDeviceSuite) prepareBackendWithAccount(mnemonic, tmpdir string) *ap
account.Name = settings.Name

nodeConfig, err := nodeConfigForLocalPairSync(settings.InstallationID, account.KeyUID, tmpdir)
nodeConfig.RootDataDir = tmpdir
require.NoError(s.T(), err)
nodeConfig.NetworkID = 1
nodeConfig.UpstreamConfig = params.UpstreamRPCConfig{
Enabled: true,
URL: "https://mainnet.infura.io/v3/800c641949d64d768a5070a1b0511938",
}
nodeConfig.DataDir = api.DefaultDataDir
require.NoError(s.T(), setDefaultNodeConfig(nodeConfig))

walletDerivedAccount := derivedAddresses[pathDefaultWallet]
walletAccount := &accounts.Account{
Expand Down Expand Up @@ -733,40 +729,23 @@ func defaultSettings(generatedAccountInfo generator.GeneratedAccountInfo, derive
func nodeConfigForLocalPairSync(installationID, keyUID, tmpDir string) (*params.NodeConfig, error) {
// Set mainnet
nodeConfig := &params.NodeConfig{}
nodeConfig.LogEnabled = true
nodeConfig.LogLevel = "DEBUG"
nodeConfig.LogDir = tmpDir
nodeConfig.KeyStoreDir = filepath.Join(keystoreDir, keyUID)
nodeConfig.KeycardPairingDataFile = filepath.Join("keycard", "pairings.json")
nodeConfig.Name = "StatusIM"
nodeConfig.ShhextConfig = params.ShhextConfig{
InstallationID: installationID,
}

// need specify cluster config here, otherwise TestPairingThreeDevices will fail due to no messages(CR) received
// TODO(frank) need to figure out why above happen
clusterConfig, err := params.LoadClusterConfigFromFleet("eth.prod")
if err != nil {
return nil, err
}
nodeConfig.ClusterConfig = *clusterConfig

nodeConfig.WalletConfig = params.WalletConfig{Enabled: false}
nodeConfig.LocalNotificationsConfig = params.LocalNotificationsConfig{Enabled: true}
nodeConfig.BrowsersConfig = params.BrowsersConfig{Enabled: false}
nodeConfig.PermissionsConfig = params.PermissionsConfig{Enabled: true}
nodeConfig.MailserversConfig = params.MailserversConfig{Enabled: true}
nodeConfig.WakuConfig = params.WakuConfig{
Enabled: true,
LightClient: true,
MinimumPoW: 0.000001,
}

nodeConfig.ShhextConfig = params.ShhextConfig{
BackupDisabledDataDir: tmpDir,
InstallationID: installationID,
MaxMessageDeliveryAttempts: 6,
MailServerConfirmations: true,
VerifyTransactionURL: "",
VerifyENSURL: "",
VerifyENSContractAddress: "",
VerifyTransactionChainID: 1,
DataSyncEnabled: true,
PFSEnabled: true,
}

return nodeConfig, nil
}

Expand Down

0 comments on commit 9ab9fb9

Please sign in to comment.