2022-10-14 08:50:36 +00:00
|
|
|
package requests
|
|
|
|
|
|
|
|
import (
|
2024-03-28 15:57:59 +00:00
|
|
|
"github.com/pkg/errors"
|
|
|
|
|
|
|
|
utils "github.com/status-im/status-go/common"
|
2024-06-02 18:28:55 +00:00
|
|
|
"github.com/status-im/status-go/params"
|
2022-10-14 08:50:36 +00:00
|
|
|
)
|
|
|
|
|
|
|
|
var ErrCreateAccountInvalidDisplayName = errors.New("create-account: invalid display name")
|
|
|
|
var ErrCreateAccountInvalidPassword = errors.New("create-account: invalid password")
|
2023-03-22 17:48:42 +00:00
|
|
|
var ErrCreateAccountInvalidCustomizationColor = errors.New("create-account: invalid customization color")
|
2023-03-16 14:49:25 +00:00
|
|
|
var ErrCreateAccountInvalidRootKeystoreDir = errors.New("create-account: invalid root keystore directory")
|
2024-06-05 13:03:34 +00:00
|
|
|
var ErrCreateAccountInvalidRootDataDir = errors.New("create-account: invalid root data directory")
|
2024-03-28 15:01:44 +00:00
|
|
|
|
|
|
|
type ImageCropRectangle struct {
|
|
|
|
Ax int `json:"ax"`
|
|
|
|
Ay int `json:"ay"`
|
|
|
|
Bx int `json:"bx"`
|
|
|
|
By int `json:"by"`
|
|
|
|
}
|
2022-10-14 08:50:36 +00:00
|
|
|
|
2024-04-09 15:44:43 +00:00
|
|
|
type APIConfig struct {
|
2024-07-04 10:48:40 +00:00
|
|
|
APIModules string `json:"apiModules"`
|
|
|
|
ConnectorEnabled bool `json:"connectorEnabled"`
|
|
|
|
HTTPEnabled bool `json:"httpEnabled"`
|
|
|
|
HTTPHost string `json:"httpHost"`
|
|
|
|
HTTPPort int `json:"httpPort"`
|
|
|
|
HTTPVirtualHosts []string `json:"httpVirtualHosts"`
|
|
|
|
WSEnabled bool `json:"wsEnabled"`
|
|
|
|
WSHost string `json:"wsHost"`
|
|
|
|
WSPort int `json:"wsPort"`
|
2024-04-09 15:44:43 +00:00
|
|
|
}
|
|
|
|
|
2022-10-14 08:50:36 +00:00
|
|
|
type CreateAccount struct {
|
2024-06-05 13:03:34 +00:00
|
|
|
// RootDataDir is an absolute path to the root directory where all data will be stored.
|
|
|
|
RootDataDir string `json:"rootDataDir"`
|
|
|
|
KdfIterations int `json:"kdfIterations"`
|
2023-04-25 12:00:17 +00:00
|
|
|
|
2024-03-28 15:01:44 +00:00
|
|
|
DeviceName string `json:"deviceName"`
|
|
|
|
DisplayName string `json:"displayName"`
|
|
|
|
Password string `json:"password"`
|
|
|
|
ImagePath string `json:"imagePath"`
|
|
|
|
ImageCropRectangle *ImageCropRectangle `json:"imageCropRectangle"`
|
|
|
|
CustomizationColor string `json:"customizationColor"`
|
2023-04-25 12:00:17 +00:00
|
|
|
|
2024-07-11 09:57:56 +00:00
|
|
|
WakuV2Nameserver *string `json:"wakuV2Nameserver"`
|
|
|
|
WakuV2LightClient bool `json:"wakuV2LightClient"`
|
|
|
|
WakuV2EnableStoreConfirmationForMessagesSent bool `json:"wakuV2EnableStoreConfirmationForMessagesSent"`
|
2024-07-26 19:19:19 +00:00
|
|
|
WakuV2EnableMissingMessageVerification bool `json:"wakuV2EnableMissingMessageVerification"`
|
2024-07-11 09:57:56 +00:00
|
|
|
WakuV2Fleet string `json:"wakuV2Fleet"`
|
2023-04-25 12:00:17 +00:00
|
|
|
|
|
|
|
LogLevel *string `json:"logLevel"`
|
2024-06-05 13:03:34 +00:00
|
|
|
LogFilePath string `json:"logFilePath"` // absolute path
|
2023-04-25 12:00:17 +00:00
|
|
|
LogEnabled bool `json:"logEnabled"`
|
|
|
|
|
|
|
|
PreviewPrivacy bool `json:"previewPrivacy"`
|
2023-03-16 14:49:25 +00:00
|
|
|
|
|
|
|
VerifyTransactionURL *string `json:"verifyTransactionURL"`
|
|
|
|
VerifyENSURL *string `json:"verifyENSURL"`
|
|
|
|
VerifyENSContractAddress *string `json:"verifyENSContractAddress"`
|
|
|
|
VerifyTransactionChainID *int64 `json:"verifyTransactionChainID"`
|
2023-03-28 14:47:58 +00:00
|
|
|
UpstreamConfig string `json:"upstreamConfig"`
|
2023-04-25 12:00:17 +00:00
|
|
|
|
2024-03-28 15:01:44 +00:00
|
|
|
// Deprecated: CurrentNetwork is deprecated. It was passed and not used, so nothing should be passed instead.
|
|
|
|
// If you want to use non-default network, use NetworkID.
|
2024-06-02 18:28:55 +00:00
|
|
|
CurrentNetwork string `json:"currentNetwork"`
|
|
|
|
NetworkID *uint64 `json:"networkId"`
|
test_: Code Migration from status-cli-tests
author shashankshampi <shashank.sanket1995@gmail.com> 1729780155 +0530
committer shashankshampi <shashank.sanket1995@gmail.com> 1730274350 +0530
test: Code Migration from status-cli-tests
fix_: functional tests (#5979)
* fix_: generate on test-functional
* chore(test)_: fix functional test assertion
---------
Co-authored-by: Siddarth Kumar <siddarthkay@gmail.com>
feat(accounts)_: cherry-pick Persist acceptance of Terms of Use & Privacy policy (#5766) (#5977)
* feat(accounts)_: Persist acceptance of Terms of Use & Privacy policy (#5766)
The original GH issue https://github.com/status-im/status-mobile/issues/21113
came from a request from the Legal team. We must show to Status v1 users the new
terms (Terms of Use & Privacy Policy) right after they upgrade to Status v2
from the stores.
The solution we use is to create a flag in the accounts table, named
hasAcceptedTerms. The flag will be set to true on the first account ever
created in v2 and we provide a native call in mobile/status.go#AcceptTerms,
which allows the client to persist the user's choice in case they are upgrading
(from v1 -> v2, or from a v2 older than this PR).
This solution is not the best because we should store the setting in a separate
table, not in the accounts table.
Related Mobile PR https://github.com/status-im/status-mobile/pull/21124
* fix(test)_: Compare addresses using uppercased strings
---------
Co-authored-by: Icaro Motta <icaro.ldm@gmail.com>
test_: restore account (#5960)
feat_: `LogOnPanic` linter (#5969)
* feat_: LogOnPanic linter
* fix_: add missing defer LogOnPanic
* chore_: make vendor
* fix_: tests, address pr comments
* fix_: address pr comments
fix(ci)_: remove workspace and tmp dir
This ensures we do not encounter weird errors like:
```
+ ln -s /home/jenkins/workspace/go_prs_linux_x86_64_main_PR-5907 /home/jenkins/workspace/go_prs_linux_x86_64_main_PR-5907@tmp/go/src/github.com/status-im/status-go
ln: failed to create symbolic link '/home/jenkins/workspace/go_prs_linux_x86_64_main_PR-5907@tmp/go/src/github.com/status-im/status-go': File exists
script returned exit code 1
```
Signed-off-by: Jakub Sokołowski <jakub@status.im>
chore_: enable windows and macos CI build (#5840)
- Added support for Windows and macOS in CI pipelines
- Added missing dependencies for Windows and x86-64-darwin
- Resolved macOS SDK version compatibility for darwin-x86_64
The `mkShell` override was necessary to ensure compatibility with the newer
macOS SDK (version 11.0) for x86_64. The default SDK (10.12) was causing build failures
because of the missing libs and frameworks. OverrideSDK creates a mapping from
the default SDK in all package categories to the requested SDK (11.0).
fix(contacts)_: fix trust status not being saved to cache when changed (#5965)
Fixes https://github.com/status-im/status-desktop/issues/16392
cleanup
added logger and cleanup
review comments changes
fix_: functional tests (#5979)
* fix_: generate on test-functional
* chore(test)_: fix functional test assertion
---------
Co-authored-by: Siddarth Kumar <siddarthkay@gmail.com>
feat(accounts)_: cherry-pick Persist acceptance of Terms of Use & Privacy policy (#5766) (#5977)
* feat(accounts)_: Persist acceptance of Terms of Use & Privacy policy (#5766)
The original GH issue https://github.com/status-im/status-mobile/issues/21113
came from a request from the Legal team. We must show to Status v1 users the new
terms (Terms of Use & Privacy Policy) right after they upgrade to Status v2
from the stores.
The solution we use is to create a flag in the accounts table, named
hasAcceptedTerms. The flag will be set to true on the first account ever
created in v2 and we provide a native call in mobile/status.go#AcceptTerms,
which allows the client to persist the user's choice in case they are upgrading
(from v1 -> v2, or from a v2 older than this PR).
This solution is not the best because we should store the setting in a separate
table, not in the accounts table.
Related Mobile PR https://github.com/status-im/status-mobile/pull/21124
* fix(test)_: Compare addresses using uppercased strings
---------
Co-authored-by: Icaro Motta <icaro.ldm@gmail.com>
test_: restore account (#5960)
feat_: `LogOnPanic` linter (#5969)
* feat_: LogOnPanic linter
* fix_: add missing defer LogOnPanic
* chore_: make vendor
* fix_: tests, address pr comments
* fix_: address pr comments
chore_: enable windows and macos CI build (#5840)
- Added support for Windows and macOS in CI pipelines
- Added missing dependencies for Windows and x86-64-darwin
- Resolved macOS SDK version compatibility for darwin-x86_64
The `mkShell` override was necessary to ensure compatibility with the newer
macOS SDK (version 11.0) for x86_64. The default SDK (10.12) was causing build failures
because of the missing libs and frameworks. OverrideSDK creates a mapping from
the default SDK in all package categories to the requested SDK (11.0).
fix(contacts)_: fix trust status not being saved to cache when changed (#5965)
Fixes https://github.com/status-im/status-desktop/issues/16392
test_: remove port bind
chore(wallet)_: move route execution code to separate module
chore_: replace geth logger with zap logger (#5962)
closes: #6002
feat(telemetry)_: add metrics for message reliability (#5899)
* feat(telemetry)_: track message reliability
Add metrics for dial errors, missed messages,
missed relevant messages, and confirmed delivery.
* fix_: handle error from json marshal
chore_: use zap logger as request logger
iterates: status-im/status-desktop#16536
test_: unique project per run
test_: use docker compose v2, more concrete project name
fix(codecov)_: ignore folders without tests
Otherwise Codecov reports incorrect numbers when making changes.
https://docs.codecov.com/docs/ignoring-paths
Signed-off-by: Jakub Sokołowski <jakub@status.im>
test_: verify schema of signals during init; fix schema verification warnings (#5947)
fix_: update defaultGorushURL (#6011)
fix(tests)_: use non-standard port to avoid conflicts
We have observed `nimbus-eth2` build failures reporting this port:
```json
{
"lvl": "NTC",
"ts": "2024-10-28 13:51:32.308+00:00",
"msg": "REST HTTP server could not be started",
"topics": "beacnde",
"address": "127.0.0.1:5432",
"reason": "(98) Address already in use"
}
```
https://ci.status.im/job/nimbus-eth2/job/platforms/job/linux/job/x86_64/job/main/job/PR-6683/3/
Signed-off-by: Jakub Sokołowski <jakub@status.im>
fix_: create request logger ad-hoc in tests
Fixes `TestCall` failing when run concurrently.
chore_: configure codecov (#6005)
* chore_: configure codecov
* fix_: after_n_builds
2024-10-24 14:29:15 +00:00
|
|
|
TestOverrideNetworks []params.Network `json:"networksOverride"` // This is used for testing purposes only
|
2023-05-24 15:02:53 +00:00
|
|
|
|
2024-03-26 11:38:16 +00:00
|
|
|
TestNetworksEnabled bool `json:"testNetworksEnabled"`
|
|
|
|
|
2023-05-24 15:02:53 +00:00
|
|
|
WalletSecretsConfig
|
2024-03-28 15:01:44 +00:00
|
|
|
|
|
|
|
TorrentConfigEnabled *bool
|
|
|
|
TorrentConfigPort *int
|
2024-04-09 15:44:43 +00:00
|
|
|
|
2024-05-22 22:01:54 +00:00
|
|
|
TelemetryServerURL string `json:"telemetryServerURL"`
|
|
|
|
|
2024-04-09 15:44:43 +00:00
|
|
|
APIConfig *APIConfig `json:"apiConfig"`
|
2024-06-26 11:14:27 +00:00
|
|
|
|
|
|
|
KeycardInstanceUID string `json:"keycardInstanceUID"`
|
|
|
|
KeycardPairingDataFile *string `json:"keycardPairingDataFile"`
|
2024-07-31 06:21:11 +00:00
|
|
|
StatusProxyEnabled bool `json:"statusProxyEnabled"`
|
2023-05-24 15:02:53 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
type WalletSecretsConfig struct {
|
2023-10-12 19:40:13 +00:00
|
|
|
PoktToken string `json:"poktToken"`
|
|
|
|
InfuraToken string `json:"infuraToken"`
|
|
|
|
InfuraSecret string `json:"infuraSecret"`
|
|
|
|
OpenseaAPIKey string `json:"openseaApiKey"`
|
|
|
|
RaribleMainnetAPIKey string `json:"raribleMainnetApiKey"`
|
|
|
|
RaribleTestnetAPIKey string `json:"raribleTestnetApiKey"`
|
2023-04-25 12:00:17 +00:00
|
|
|
|
2024-08-14 15:35:48 +00:00
|
|
|
AlchemyEthereumMainnetToken string `json:"alchemyEthereumMainnetToken"`
|
|
|
|
AlchemyEthereumSepoliaToken string `json:"alchemyEthereumSepoliaToken"`
|
|
|
|
AlchemyArbitrumMainnetToken string `json:"alchemyArbitrumMainnetToken"`
|
|
|
|
AlchemyArbitrumSepoliaToken string `json:"alchemyArbitrumSepoliaToken"`
|
|
|
|
AlchemyOptimismMainnetToken string `json:"alchemyOptimismMainnetToken"`
|
|
|
|
AlchemyOptimismSepoliaToken string `json:"alchemyOptimismSepoliaToken"`
|
|
|
|
|
|
|
|
StatusProxyStageName string `json:"statusProxyStageName"`
|
2024-07-31 06:21:11 +00:00
|
|
|
StatusProxyMarketUser string `json:"statusProxyMarketUser"`
|
|
|
|
StatusProxyMarketPassword string `json:"statusProxyMarketPassword"`
|
|
|
|
StatusProxyBlockchainUser string `json:"statusProxyBlockchainUser"`
|
|
|
|
StatusProxyBlockchainPassword string `json:"statusProxyBlockchainPassword"`
|
2024-07-30 13:48:22 +00:00
|
|
|
|
|
|
|
// Testing
|
|
|
|
GanacheURL string `json:"ganacheURL"`
|
2022-10-14 08:50:36 +00:00
|
|
|
}
|
|
|
|
|
2024-03-28 15:01:44 +00:00
|
|
|
func (c *CreateAccount) Validate(validation *CreateAccountValidation) error {
|
2022-10-14 08:50:36 +00:00
|
|
|
// TODO(cammellos): Add proper validation for password/displayname/etc
|
2024-03-28 15:01:44 +00:00
|
|
|
// Empty display name is allowed during account restore
|
|
|
|
if len(c.DisplayName) == 0 && !validation.AllowEmptyDisplayName {
|
2022-10-14 08:50:36 +00:00
|
|
|
return ErrCreateAccountInvalidDisplayName
|
|
|
|
}
|
|
|
|
|
2024-03-28 15:57:59 +00:00
|
|
|
if err := utils.ValidateDisplayName(&c.DisplayName); err != nil {
|
|
|
|
return errors.Wrap(ErrCreateAccountInvalidDisplayName, err.Error())
|
|
|
|
}
|
|
|
|
|
2024-08-14 20:10:19 +00:00
|
|
|
if len(c.Password) == 0 && !validation.AllowEmptyPassword {
|
2022-10-14 08:50:36 +00:00
|
|
|
return ErrCreateAccountInvalidPassword
|
|
|
|
}
|
|
|
|
|
2024-08-14 20:10:19 +00:00
|
|
|
if len(c.CustomizationColor) == 0 && !validation.AllowEmptyCustomizationColor {
|
2023-03-22 17:48:42 +00:00
|
|
|
return ErrCreateAccountInvalidCustomizationColor
|
2022-10-14 08:50:36 +00:00
|
|
|
}
|
|
|
|
|
2024-06-05 13:03:34 +00:00
|
|
|
if len(c.RootDataDir) == 0 {
|
2024-08-07 12:59:43 +00:00
|
|
|
return ErrCreateAccountInvalidRootDataDir
|
2023-03-16 14:49:25 +00:00
|
|
|
}
|
|
|
|
|
2022-10-14 08:50:36 +00:00
|
|
|
return nil
|
2024-03-28 15:01:44 +00:00
|
|
|
}
|
2022-10-14 08:50:36 +00:00
|
|
|
|
2024-03-28 15:01:44 +00:00
|
|
|
// NOTE: Reasoning for this struct here: https://github.com/status-im/status-go/pull/4980#discussion_r1539219099
|
|
|
|
type CreateAccountValidation struct {
|
2024-08-14 20:10:19 +00:00
|
|
|
AllowEmptyDisplayName bool
|
|
|
|
AllowEmptyPassword bool
|
|
|
|
AllowEmptyCustomizationColor bool
|
2022-10-14 08:50:36 +00:00
|
|
|
}
|