[#607] Improve wallet path param

Made it configurable in yaml

Signed-off-by: Angira Kekteeva <kira@nspcc.ru>
This commit is contained in:
Angira Kekteeva 2022-07-28 17:26:42 +04:00 committed by Kirillov Denis
parent 57ce0f25bf
commit 7bd824f3fa
6 changed files with 28 additions and 19 deletions

View file

@ -34,7 +34,7 @@ Minimalistic S3 gateway setup needs:
`S3_GW_PEERS_<N>_WEIGHT` environment variables (gateway supports multiple
NeoFS nodes with weighted load balancing).
* a wallet used to fetch key and communicate with NeoFS nodes
Passed via `--wallet` parameter or `S3_GW_WALLET` environment variable.
Passed via `--wallet` parameter or `S3_GW_WALLET_PATH` environment variable.
These two commands are functionally equivalent, they run the gate with one
backend node, some keys and otherwise default settings:

View file

@ -102,7 +102,7 @@ func newApp(ctx context.Context, l *zap.Logger, v *viper.Viper) *App {
}
password := wallet.GetPassword(v, cfgWalletPassphrase)
if key, err = wallet.GetKeyFromPath(v.GetString(cfgWallet), v.GetString(cfgAddress), password); err != nil {
if key, err = wallet.GetKeyFromPath(v.GetString(cfgWalletPath), v.GetString(cfgWalletAddress), password); err != nil {
l.Fatal("could not load NeoFS private key", zap.Error(err))
}

View file

@ -34,9 +34,11 @@ const ( // Settings.
cfgLoggerLevel = "logger.level"
// Wallet.
cfgWallet = "wallet"
cfgAddress = "address"
cfgWalletPath = "wallet.path"
cfgWalletAddress = "wallet.address"
cfgWalletPassphrase = "wallet.passphrase"
cmdWallet = "wallet"
cmdAddress = "address"
// HTTPS/TLS.
cfgTLSKeyFile = "tls.key_file"
@ -187,8 +189,8 @@ func newSettings() *viper.Viper {
help := flags.BoolP(cmdHelp, "h", false, "show help")
versionFlag := flags.BoolP(cmdVersion, "v", false, "show version")
flags.StringP(cfgWallet, "w", "", `path to the wallet`)
flags.String(cfgAddress, "", `address of wallet account`)
flags.StringP(cmdWallet, "w", "", `path to the wallet`)
flags.String(cmdAddress, "", `address of wallet account`)
config := flags.String(cmdConfig, "", "config path")
flags.Duration(cfgHealthcheckTimeout, defaultHealthcheckTimeout, "set timeout to check node health during rebalance")
@ -232,6 +234,13 @@ func newSettings() *viper.Viper {
panic(err)
}
if err := v.BindPFlag(cfgWalletPath, flags.Lookup(cmdWallet)); err != nil {
panic(err)
}
if err := v.BindPFlag(cfgWalletAddress, flags.Lookup(cmdAddress)); err != nil {
panic(err)
}
if err := flags.Parse(os.Args); err != nil {
panic(err)
}

View file

@ -1,8 +1,8 @@
# Wallet
# Path to wallet
S3_GW_WALLET=/path/to/wallet.json
S3_GW_WALLET_PATH=/path/to/wallet.json
# Account address. If omitted default one will be used.
S3_GW_ADDRESS=NfgHwwTi3wHAS8aFAN243C5vGbkYDpqLHP
S3_GW_WALLET_ADDRESS=NfgHwwTi3wHAS8aFAN243C5vGbkYDpqLHP
# Passphrase to decrypt wallet.
S3_GW_WALLET_PASSPHRASE=s3

View file

@ -1,9 +1,8 @@
# Wallet address, path to the wallet must be set as cli parameter or environment variable
wallet:
passphrase: "" # Passphrase to decrypt wallet.
# Account address. If omitted default one will be used.
address: NfgHwwTi3wHAS8aFAN243C5vGbkYDpqLHP
path: /path/to/wallet.json # Path to wallet
passphrase: "" # Passphrase to decrypt wallet. If you're using a wallet without a password, place '' here.
address: NfgHwwTi3wHAS8aFAN243C5vGbkYDpqLHP # Account address. If omitted default one will be used.
# Nodes configuration
# This configuration makes the gateway use the first node (grpc://s01.neofs.devenv:8080)

View file

@ -137,8 +137,6 @@ There are some custom types used for brevity:
### General section
```yaml
address: NfgHwwTi3wHAS8aFAN243C5vGbkYDpqLHP
listen_address: 0.0.0.0:8084
rpc_endpoint: http://morph-chain.neofs.devenv:30333
@ -159,7 +157,6 @@ default_policy: REP 3
| Parameter | Type | Default value | Description |
|------------------------|------------|----------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `address` | `string` | | Account address to get from wallet. If omitted default one will be used. |
| `listen_address` | `string` | `0.0.0.0:8080` | The address that the gateway is listening on. |
| `rpc_endpoint` | `string` | | The address of the RPC host to which the gateway connects to resolve bucket names (required to use the `nns` resolver). |
| `resolve_order` | `[]string` | `[dns]` | Order of bucket name resolvers to use. Available resolvers: `dns`, `nns`. | |
@ -175,12 +172,16 @@ default_policy: REP 3
```yaml
wallet:
passphrase: "password"
path: /path/to/wallet.json # Path to wallet
passphrase: "" # Passphrase to decrypt wallet.
address: NfgHwwTi3wHAS8aFAN243C5vGbkYDpqLHP
```
| Parameter | Type | Default value | Description |
|--------------|----------|---------------|-------------------------------|
| `passphrase` | `string` | | Passphrase to decrypt wallet. |
| Parameter | Type | Default value | Description |
|--------------|----------|---------------|---------------------------------------------------------------------------|
| `path` | `string` | | Path to wallet |
| `passphrase` | `string` | | Passphrase to decrypt wallet. |
| `address` | `string` | | Account address to get from wallet. If omitted default one will be used. |
### `peers` section