diff --git a/README.md b/README.md
index 7c5094ee..406c3091 100644
--- a/README.md
+++ b/README.md
@@ -353,8 +353,9 @@ docker exec -it razor-go razor vote --address
run vote command in background
```
-docker exec -it -d razor-go razor vote --address
+docker exec -it -d razor-go razor vote --address --password /root/.razor/
```
+>**_NOTE:_** To run command with password flag with the help of docker, password file should present in $HOME/.razor/ directory
Example:
@@ -678,6 +679,8 @@ docker
docker exec -it razor-go razor collectionList
```
+Note : _All the commands have an additional --password flag that you can provide with the file path from which password must be picked._
+
### Expose Metrics
Expose Prometheus-based metrics for monitoring
@@ -929,6 +932,13 @@ $ ./razor contractAddresses
```bash
#Provide password through CLI
docker-compose run razor-go /usr/local/bin/razor addStake --address --value 50000
+
+ #Provide password through File
+
+ #Create file and put password string
+ vi ~/.razor/pass
+ #Start Staking
+ docker-compose run razor-go /usr/local/bin/razor addStake --address --value 50000 --password /root/.razor/pass
```
9. To Start **Voting**,
@@ -938,6 +948,9 @@ $ ./razor contractAddresses
```bash
# Run process in foreground and provide password through cli
docker-compose run razor-go /usr/local/bin/razor vote --address
+
+ # Run process in background and provide password through file
+ docker-compose run -d razor-go /usr/local/bin/razor vote --address --password /root/.razor/pass
```
```bash
@@ -949,6 +962,9 @@ $ ./razor contractAddresses
```bash
#Provide password with cli
docker-compose run razor-go /usr/local/bin/razor setDelegation --address --status true --commission 10
+
+ #provide password through file
+ docker-compose run razor-go /usr/local/bin/razor setDelegation --address --status true --commission 10 --password /root/.razor/pass
```
### Contribute to razor-go
diff --git a/cmd/addStake.go b/cmd/addStake.go
index 5069bde6..f5c2469b 100644
--- a/cmd/addStake.go
+++ b/cmd/addStake.go
@@ -40,7 +40,7 @@ func (*UtilsStruct) ExecuteStake(flagSet *pflag.FlagSet) {
config, err := cmdUtils.GetConfigData()
utils.CheckError("Error in getting config: ", err)
- password := razorUtils.AssignPassword()
+ password := razorUtils.AssignPassword(flagSet)
client := razorUtils.ConnectToClient(config.Provider)
balance, err := razorUtils.FetchBalance(client, address)
utils.CheckError("Error in fetching razor balance for account: "+address, err)
@@ -111,11 +111,13 @@ func init() {
var (
Amount string
Address string
+ Password string
WeiRazor bool
)
stakeCmd.Flags().StringVarP(&Amount, "value", "v", "0", "amount of Razors to stake")
stakeCmd.Flags().StringVarP(&Address, "address", "a", "", "address of the staker")
+ stakeCmd.Flags().StringVarP(&Password, "password", "", "", "password path of staker to protect the keystore")
stakeCmd.Flags().BoolVarP(&WeiRazor, "weiRazor", "", false, "value can be passed in wei")
amountErr := stakeCmd.MarkFlagRequired("value")
diff --git a/cmd/addStake_test.go b/cmd/addStake_test.go
index fe90e5db..f2cd062f 100644
--- a/cmd/addStake_test.go
+++ b/cmd/addStake_test.go
@@ -314,7 +314,7 @@ func TestExecuteStake(t *testing.T) {
utilsMock.On("AssignLogFile", mock.AnythingOfType("*pflag.FlagSet"))
cmdUtilsMock.On("GetConfigData").Return(tt.args.config, tt.args.configErr)
- utilsMock.On("AssignPassword").Return(tt.args.password)
+ utilsMock.On("AssignPassword", mock.AnythingOfType("*pflag.FlagSet")).Return(tt.args.password)
flagSetUtilsMock.On("GetStringAddress", mock.AnythingOfType("*pflag.FlagSet")).Return(tt.args.address, tt.args.addressErr)
utilsMock.On("ConnectToClient", mock.AnythingOfType("string")).Return(client)
utilsMock.On("WaitForBlockCompletion", mock.AnythingOfType("*ethclient.Client"), mock.AnythingOfType("string")).Return(nil)
diff --git a/cmd/claimBounty.go b/cmd/claimBounty.go
index 474fc7eb..0541ed71 100644
--- a/cmd/claimBounty.go
+++ b/cmd/claimBounty.go
@@ -43,7 +43,7 @@ func (*UtilsStruct) ExecuteClaimBounty(flagSet *pflag.FlagSet) {
config, err := cmdUtils.GetConfigData()
utils.CheckError("Error in getting config: ", err)
- password := razorUtils.AssignPassword()
+ password := razorUtils.AssignPassword(flagSet)
client := razorUtils.ConnectToClient(config.Provider)
@@ -183,10 +183,12 @@ func init() {
rootCmd.AddCommand(claimBountyCmd)
var (
Address string
+ Password string
BountyId uint32
)
claimBountyCmd.Flags().StringVarP(&Address, "address", "a", "", "address of the staker")
+ claimBountyCmd.Flags().StringVarP(&Password, "password", "", "", "password path of staker to protect the keystore")
claimBountyCmd.Flags().Uint32VarP(&BountyId, "bountyId", "", 0, "bountyId of the bounty hunter")
addrErr := claimBountyCmd.MarkFlagRequired("address")
diff --git a/cmd/claimBounty_test.go b/cmd/claimBounty_test.go
index 3d2490cc..05f23f8f 100644
--- a/cmd/claimBounty_test.go
+++ b/cmd/claimBounty_test.go
@@ -136,7 +136,7 @@ func TestExecuteClaimBounty(t *testing.T) {
utilsMock.On("AssignLogFile", mock.AnythingOfType("*pflag.FlagSet"))
cmdUtilsMock.On("GetConfigData").Return(tt.args.config, tt.args.configErr)
- utilsMock.On("AssignPassword").Return(tt.args.password)
+ utilsMock.On("AssignPassword", mock.AnythingOfType("*pflag.FlagSet")).Return(tt.args.password)
flagSetUtilsMock.On("GetStringAddress", mock.AnythingOfType("*pflag.FlagSet")).Return(tt.args.address, tt.args.addressErr)
flagSetUtilsMock.On("GetUint32BountyId", mock.AnythingOfType("*pflag.FlagSet")).Return(tt.args.bountyId, tt.args.bountyIdErr)
utilsMock.On("ConnectToClient", mock.AnythingOfType("string")).Return(client)
diff --git a/cmd/claimCommission.go b/cmd/claimCommission.go
index bc40db58..cdf2d9e2 100644
--- a/cmd/claimCommission.go
+++ b/cmd/claimCommission.go
@@ -34,7 +34,7 @@ func (*UtilsStruct) ClaimCommission(flagSet *pflag.FlagSet) {
config, err := cmdUtils.GetConfigData()
utils.CheckError("Error in getting config: ", err)
- password := razorUtils.AssignPassword()
+ password := razorUtils.AssignPassword(flagSet)
client := razorUtils.ConnectToClient(config.Provider)
razorUtils.CheckEthBalanceIsZero(client, address)
@@ -76,10 +76,12 @@ func init() {
rootCmd.AddCommand(claimCommissionCmd)
var (
- Address string
+ Address string
+ Password string
)
claimCommissionCmd.Flags().StringVarP(&Address, "address", "a", "", "address of the staker")
+ claimCommissionCmd.Flags().StringVarP(&Password, "password", "", "", "password path of staker to protect the keystore")
addrErr := claimCommissionCmd.MarkFlagRequired("address")
utils.CheckError("Address error: ", addrErr)
diff --git a/cmd/claimCommission_test.go b/cmd/claimCommission_test.go
index 0f4fdedb..1db00526 100644
--- a/cmd/claimCommission_test.go
+++ b/cmd/claimCommission_test.go
@@ -218,7 +218,7 @@ func TestUtilsStruct_ClaimCommission(t *testing.T) {
utilsMock.On("AssignLogFile", mock.AnythingOfType("*pflag.FlagSet"))
utilsMock.On("GetStakerId", mock.AnythingOfType("*ethclient.Client"), mock.AnythingOfType("string")).Return(tt.args.stakerId, tt.args.stakerIdErr)
utilsMock.On("GetOptions").Return(callOpts)
- utilsMock.On("AssignPassword").Return(tt.args.password)
+ utilsMock.On("AssignPassword", mock.AnythingOfType("*pflag.FlagSet")).Return(tt.args.password)
utilsMock.On("ConnectToClient", mock.AnythingOfType("string")).Return(client)
utilsMock.On("CheckEthBalanceIsZero", mock.AnythingOfType("*ethclient.Client"), mock.AnythingOfType("string")).Return()
utilsMock.On("GetTxnOpts", mock.AnythingOfType("types.TransactionOptions")).Return(txnOpts)
diff --git a/cmd/create.go b/cmd/create.go
index f7efa29a..999fe1f2 100644
--- a/cmd/create.go
+++ b/cmd/create.go
@@ -30,7 +30,7 @@ func initialiseCreate(cmd *cobra.Command, args []string) {
func (*UtilsStruct) ExecuteCreate(flagSet *pflag.FlagSet) {
razorUtils.AssignLogFile(flagSet)
log.Info("The password should be of minimum 8 characters containing least 1 uppercase, lowercase, digit and special character.")
- password := razorUtils.AssignPassword()
+ password := razorUtils.AssignPassword(flagSet)
account, err := cmdUtils.Create(password)
utils.CheckError("Create error: ", err)
log.Info("Account address: ", account.Address)
@@ -51,4 +51,10 @@ func (*UtilsStruct) Create(password string) (accounts.Account, error) {
func init() {
rootCmd.AddCommand(createCmd)
+
+ var (
+ Password string
+ )
+
+ createCmd.Flags().StringVarP(&Password, "password", "", "", "password file path to protect the keystore")
}
diff --git a/cmd/createCollection.go b/cmd/createCollection.go
index 43fb1752..35175e5d 100644
--- a/cmd/createCollection.go
+++ b/cmd/createCollection.go
@@ -43,7 +43,7 @@ func (*UtilsStruct) ExecuteCreateCollection(flagSet *pflag.FlagSet) {
config, err := cmdUtils.GetConfigData()
utils.CheckError("Error in getting config: ", err)
- password := razorUtils.AssignPassword()
+ password := razorUtils.AssignPassword(flagSet)
name, err := flagSetUtils.GetStringName(flagSet)
utils.CheckError("Error in getting name: ", err)
@@ -114,6 +114,7 @@ func init() {
Account string
JobIds []uint
AggregationMethod uint32
+ Password string
Power int8
Tolerance uint32
)
@@ -124,6 +125,7 @@ func init() {
createCollectionCmd.Flags().Uint32VarP(&AggregationMethod, "aggregation", "", 1, "aggregation method to be used")
createCollectionCmd.Flags().Uint32VarP(&Tolerance, "tolerance", "", 0, "tolerance")
createCollectionCmd.Flags().Int8VarP(&Power, "power", "", 0, "multiplier for the collection")
+ createCollectionCmd.Flags().StringVarP(&Password, "password", "", "", "password path of job creator to protect the keystore")
nameErr := createCollectionCmd.MarkFlagRequired("name")
utils.CheckError("Name error: ", nameErr)
diff --git a/cmd/createCollection_test.go b/cmd/createCollection_test.go
index 4e3ab38b..27206fbb 100644
--- a/cmd/createCollection_test.go
+++ b/cmd/createCollection_test.go
@@ -302,7 +302,7 @@ func TestExecuteCreateCollection(t *testing.T) {
utilsMock.On("AssignLogFile", mock.AnythingOfType("*pflag.FlagSet"))
cmdUtilsMock.On("GetConfigData").Return(tt.args.config, tt.args.configErr)
- utilsMock.On("AssignPassword").Return(tt.args.password)
+ utilsMock.On("AssignPassword", flagSet).Return(tt.args.password)
flagsetUtilsMock.On("GetStringAddress", flagSet).Return(tt.args.address, tt.args.addressErr)
flagsetUtilsMock.On("GetStringName", flagSet).Return(tt.args.name, tt.args.nameErr)
flagsetUtilsMock.On("GetUintSliceJobIds", flagSet).Return(tt.args.jobId, tt.args.jobIdErr)
diff --git a/cmd/createJob.go b/cmd/createJob.go
index 25f4cd74..b66ddbfa 100644
--- a/cmd/createJob.go
+++ b/cmd/createJob.go
@@ -44,7 +44,7 @@ func (*UtilsStruct) ExecuteCreateJob(flagSet *pflag.FlagSet) {
config, err := cmdUtils.GetConfigData()
utils.CheckError("Error in getting config: ", err)
- password := razorUtils.AssignPassword()
+ password := razorUtils.AssignPassword(flagSet)
name, err := flagSetUtils.GetStringName(flagSet)
utils.CheckError("Error in getting name: ", err)
@@ -117,6 +117,7 @@ func init() {
Name string
Power int8
Account string
+ Password string
Weight uint8
)
@@ -127,6 +128,7 @@ func init() {
createJobCmd.Flags().Int8VarP(&Power, "power", "", 0, "power")
createJobCmd.Flags().Uint8VarP(&Weight, "weight", "", 0, "weight assigned to the job")
createJobCmd.Flags().StringVarP(&Account, "address", "a", "", "address of the job creator")
+ createJobCmd.Flags().StringVarP(&Password, "password", "", "", "password path of job creator to protect the keystore")
urlErr := createJobCmd.MarkFlagRequired("url")
utils.CheckError("URL error: ", urlErr)
diff --git a/cmd/createJob_test.go b/cmd/createJob_test.go
index 5bb77b54..14baa81f 100644
--- a/cmd/createJob_test.go
+++ b/cmd/createJob_test.go
@@ -320,7 +320,7 @@ func TestExecuteCreateJob(t *testing.T) {
utilsMock.On("AssignLogFile", mock.AnythingOfType("*pflag.FlagSet"))
cmdUtilsMock.On("GetConfigData").Return(tt.args.config, tt.args.configErr)
- utilsMock.On("AssignPassword").Return(tt.args.password)
+ utilsMock.On("AssignPassword", flagSet).Return(tt.args.password)
flagsetUtilsMock.On("GetStringAddress", flagSet).Return(tt.args.address, tt.args.addressErr)
flagsetUtilsMock.On("GetStringName", flagSet).Return(tt.args.name, tt.args.nameErr)
flagsetUtilsMock.On("GetStringUrl", flagSet).Return(tt.args.url, tt.args.urlErr)
diff --git a/cmd/create_test.go b/cmd/create_test.go
index 0c8d40d7..0df1acd2 100644
--- a/cmd/create_test.go
+++ b/cmd/create_test.go
@@ -144,7 +144,7 @@ func TestExecuteCreate(t *testing.T) {
cmdUtils = cmdUtilsMock
utilsMock.On("AssignLogFile", mock.AnythingOfType("*pflag.FlagSet"))
- utilsMock.On("AssignPassword").Return(tt.args.password)
+ utilsMock.On("AssignPassword", mock.AnythingOfType("*pflag.FlagSet")).Return(tt.args.password)
cmdUtilsMock.On("Create", mock.AnythingOfType("string")).Return(tt.args.account, tt.args.accountErr)
utils := &UtilsStruct{}
diff --git a/cmd/delegate.go b/cmd/delegate.go
index 9d2fd838..de55cf40 100644
--- a/cmd/delegate.go
+++ b/cmd/delegate.go
@@ -41,7 +41,7 @@ func (*UtilsStruct) ExecuteDelegate(flagSet *pflag.FlagSet) {
config, err := cmdUtils.GetConfigData()
utils.CheckError("Error in getting config: ", err)
- password := razorUtils.AssignPassword()
+ password := razorUtils.AssignPassword(flagSet)
stakerId, err := flagSetUtils.GetUint32StakerId(flagSet)
utils.CheckError("Error in getting stakerId: ", err)
@@ -104,12 +104,14 @@ func init() {
Amount string
Address string
StakerId uint32
+ Password string
WeiRazor bool
)
delegateCmd.Flags().StringVarP(&Amount, "value", "v", "0", "amount to stake (in Wei)")
delegateCmd.Flags().StringVarP(&Address, "address", "a", "", "your account address")
delegateCmd.Flags().Uint32VarP(&StakerId, "stakerId", "", 0, "staker id")
+ delegateCmd.Flags().StringVarP(&Password, "password", "", "", "password path to protect the keystore")
delegateCmd.Flags().BoolVarP(&WeiRazor, "weiRazor", "", false, "value can be passed in wei")
valueErr := delegateCmd.MarkFlagRequired("value")
diff --git a/cmd/delegate_test.go b/cmd/delegate_test.go
index db2b43ef..8973b06a 100644
--- a/cmd/delegate_test.go
+++ b/cmd/delegate_test.go
@@ -265,7 +265,7 @@ func TestExecuteDelegate(t *testing.T) {
utilsMock.On("AssignLogFile", mock.AnythingOfType("*pflag.FlagSet"))
cmdUtilsMock.On("GetConfigData").Return(tt.args.config, tt.args.configErr)
- utilsMock.On("AssignPassword").Return(tt.args.password)
+ utilsMock.On("AssignPassword", flagSet).Return(tt.args.password)
flagSetUtilsMock.On("GetStringAddress", mock.AnythingOfType("*pflag.FlagSet")).Return(tt.args.address, tt.args.addressErr)
flagSetUtilsMock.On("GetUint32StakerId", flagSet).Return(tt.args.stakerId, tt.args.stakerIdErr)
utilsMock.On("ConnectToClient", mock.AnythingOfType("string")).Return(client)
diff --git a/cmd/initiateWithdraw.go b/cmd/initiateWithdraw.go
index d998306e..5bb9580d 100644
--- a/cmd/initiateWithdraw.go
+++ b/cmd/initiateWithdraw.go
@@ -40,7 +40,7 @@ func (*UtilsStruct) ExecuteInitiateWithdraw(flagSet *pflag.FlagSet) {
config, err := cmdUtils.GetConfigData()
utils.CheckError("Error in getting config: ", err)
- password := razorUtils.AssignPassword()
+ password := razorUtils.AssignPassword(flagSet)
client := razorUtils.ConnectToClient(config.Provider)
@@ -149,10 +149,12 @@ func init() {
var (
Address string
+ Password string
StakerId uint32
)
initiateWithdrawCmd.Flags().StringVarP(&Address, "address", "a", "", "address of the user")
+ initiateWithdrawCmd.Flags().StringVarP(&Password, "password", "", "", "password path of user to protect the keystore")
initiateWithdrawCmd.Flags().Uint32VarP(&StakerId, "stakerId", "", 0, "password path of user to protect the keystore")
addrErr := initiateWithdrawCmd.MarkFlagRequired("address")
diff --git a/cmd/initiateWithdraw_test.go b/cmd/initiateWithdraw_test.go
index 087f9494..fe2472f8 100644
--- a/cmd/initiateWithdraw_test.go
+++ b/cmd/initiateWithdraw_test.go
@@ -423,7 +423,7 @@ func TestExecuteWithdraw(t *testing.T) {
utilsMock.On("AssignLogFile", mock.AnythingOfType("*pflag.FlagSet"))
cmdUtilsMock.On("GetConfigData").Return(tt.args.config, tt.args.configErr)
- utilsMock.On("AssignPassword").Return(tt.args.password)
+ utilsMock.On("AssignPassword", flagSet).Return(tt.args.password)
flagSetUtilsMock.On("GetStringAddress", flagSet).Return(tt.args.address, tt.args.addressErr)
utilsMock.On("CheckEthBalanceIsZero", mock.AnythingOfType("*ethclient.Client"), mock.AnythingOfType("string")).Return()
utilsMock.On("AssignStakerId", flagSet, mock.AnythingOfType("*ethclient.Client"), mock.Anything).Return(tt.args.stakerId, tt.args.stakerIdErr)
diff --git a/cmd/interface.go b/cmd/interface.go
index 3f1fa501..539045d6 100644
--- a/cmd/interface.go
+++ b/cmd/interface.go
@@ -60,7 +60,7 @@ type UtilsInterface interface {
GetOptions() bind.CallOpts
CalculateBlockTime(client *ethclient.Client) int64
GetTxnOpts(transactionData types.TransactionOptions) *bind.TransactOpts
- AssignPassword() string
+ AssignPassword(flagSet *pflag.FlagSet) string
GetStringAddress(flagSet *pflag.FlagSet) (string, error)
GetUint32BountyId(flagSet *pflag.FlagSet) (uint32, error)
ConnectToClient(provider string) *ethclient.Client
diff --git a/cmd/mocks/utils_cmd_interface.go b/cmd/mocks/utils_cmd_interface.go
index 7c0c3a81..d30f7d1e 100644
--- a/cmd/mocks/utils_cmd_interface.go
+++ b/cmd/mocks/utils_cmd_interface.go
@@ -904,13 +904,13 @@ func (_m *UtilsCmdInterface) GetWaitTime() (int32, error) {
return r0, r1
}
-// GiveSorted provides a mock function with given fields: client, blockManager, txnOpts, epoch, assetId, sortedStakers
-func (_m *UtilsCmdInterface) GiveSorted(client *ethclient.Client, blockManager *bindings.BlockManager, txnOpts *bind.TransactOpts, epoch uint32, assetId uint16, sortedStakers []*big.Int) error {
- ret := _m.Called(client, blockManager, txnOpts, epoch, assetId, sortedStakers)
+// GiveSorted provides a mock function with given fields: client, blockManager, txnArgs, epoch, assetId, sortedStakers
+func (_m *UtilsCmdInterface) GiveSorted(client *ethclient.Client, blockManager *bindings.BlockManager, txnArgs *bind.TransactOpts, epoch uint32, assetId uint16, sortedStakers []*big.Int) error {
+ ret := _m.Called(client, blockManager, txnArgs, epoch, assetId, sortedStakers)
var r0 error
if rf, ok := ret.Get(0).(func(*ethclient.Client, *bindings.BlockManager, *bind.TransactOpts, uint32, uint16, []*big.Int) error); ok {
- r0 = rf(client, blockManager, txnOpts, epoch, assetId, sortedStakers)
+ r0 = rf(client, blockManager, txnArgs, epoch, assetId, sortedStakers)
} else {
r0 = ret.Error(0)
}
diff --git a/cmd/mocks/utils_interface.go b/cmd/mocks/utils_interface.go
index 510153f5..babe15ad 100644
--- a/cmd/mocks/utils_interface.go
+++ b/cmd/mocks/utils_interface.go
@@ -57,13 +57,13 @@ func (_m *UtilsInterface) AssignLogFile(flagSet *pflag.FlagSet) {
_m.Called(flagSet)
}
-// AssignPassword provides a mock function with given fields:
-func (_m *UtilsInterface) AssignPassword() string {
- ret := _m.Called()
+// AssignPassword provides a mock function with given fields: flagSet
+func (_m *UtilsInterface) AssignPassword(flagSet *pflag.FlagSet) string {
+ ret := _m.Called(flagSet)
var r0 string
- if rf, ok := ret.Get(0).(func() string); ok {
- r0 = rf()
+ if rf, ok := ret.Get(0).(func(*pflag.FlagSet) string); ok {
+ r0 = rf(flagSet)
} else {
r0 = ret.Get(0).(string)
}
diff --git a/cmd/modifyCollectionStatus.go b/cmd/modifyCollectionStatus.go
index 188b8f75..f6bdedac 100644
--- a/cmd/modifyCollectionStatus.go
+++ b/cmd/modifyCollectionStatus.go
@@ -48,7 +48,7 @@ func (*UtilsStruct) ExecuteModifyCollectionStatus(flagSet *pflag.FlagSet) {
status, err := stringUtils.ParseBool(statusString)
utils.CheckError("Error in parsing status: ", err)
- password := razorUtils.AssignPassword()
+ password := razorUtils.AssignPassword(flagSet)
client := razorUtils.ConnectToClient(config.Provider)
@@ -117,11 +117,13 @@ func init() {
Address string
CollectionId uint16
Status string
+ Password string
)
modifyCollectionStatusCmd.Flags().StringVarP(&Address, "address", "a", "", "address of the user")
modifyCollectionStatusCmd.Flags().Uint16VarP(&CollectionId, "collectionId", "", 0, "collectionId of the collection")
modifyCollectionStatusCmd.Flags().StringVarP(&Status, "status", "", "true", "active status of the collection")
+ modifyCollectionStatusCmd.Flags().StringVarP(&Password, "password", "", "", "password path of user to protect the keystore")
addressErr := modifyCollectionStatusCmd.MarkFlagRequired("address")
utils.CheckError("Address error: ", addressErr)
diff --git a/cmd/modifyCollectionStatus_test.go b/cmd/modifyCollectionStatus_test.go
index 7e2a253e..bf473e9f 100644
--- a/cmd/modifyCollectionStatus_test.go
+++ b/cmd/modifyCollectionStatus_test.go
@@ -357,7 +357,7 @@ func TestExecuteModifyAssetStatus(t *testing.T) {
flagsetUtilsMock.On("GetStringAddress", flagSet).Return(tt.args.address, tt.args.addressErr)
flagsetUtilsMock.On("GetUint16CollectionId", flagSet).Return(tt.args.collectionId, tt.args.collectionIdErr)
flagsetUtilsMock.On("GetStringStatus", flagSet).Return(tt.args.status, tt.args.statusErr)
- utilsMock.On("AssignPassword").Return(tt.args.password)
+ utilsMock.On("AssignPassword", flagSet).Return(tt.args.password)
stringMock.On("ParseBool", mock.AnythingOfType("string")).Return(tt.args.parseStatus, tt.args.parseStatusErr)
utilsMock.On("ConnectToClient", mock.AnythingOfType("string")).Return(client)
cmdUtilsMock.On("ModifyCollectionStatus", mock.Anything, mock.Anything, mock.Anything).Return(tt.args.ModifyCollectionStatusHash, tt.args.ModifyCollectionStatusErr)
diff --git a/cmd/resetUnstakeLock.go b/cmd/resetUnstakeLock.go
index 198389b8..07b54d11 100644
--- a/cmd/resetUnstakeLock.go
+++ b/cmd/resetUnstakeLock.go
@@ -42,7 +42,7 @@ func (*UtilsStruct) ExecuteExtendLock(flagSet *pflag.FlagSet) {
config, err := cmdUtils.GetConfigData()
utils.CheckError("Error in getting config data: ", err)
- password := razorUtils.AssignPassword()
+ password := razorUtils.AssignPassword(flagSet)
client := razorUtils.ConnectToClient(config.Provider)
@@ -88,10 +88,12 @@ func init() {
var (
Address string
+ Password string
StakerId uint32
)
extendUnstakeLockCmd.Flags().StringVarP(&Address, "address", "a", "", "address of the user")
+ extendUnstakeLockCmd.Flags().StringVarP(&Password, "password", "", "", "password path of the user to protect the keystore")
extendUnstakeLockCmd.Flags().Uint32VarP(&StakerId, "stakerId", "", 0, "staker id")
addrErr := extendUnstakeLockCmd.MarkFlagRequired("address")
diff --git a/cmd/resetUnstakeLock_test.go b/cmd/resetUnstakeLock_test.go
index f6790b6f..55b1f4fa 100644
--- a/cmd/resetUnstakeLock_test.go
+++ b/cmd/resetUnstakeLock_test.go
@@ -196,7 +196,7 @@ func TestExecuteExtendLock(t *testing.T) {
utilsMock.On("AssignLogFile", mock.AnythingOfType("*pflag.FlagSet"))
cmdUtilsMock.On("GetConfigData").Return(tt.args.config, tt.args.configErr)
- utilsMock.On("AssignPassword").Return(tt.args.password)
+ utilsMock.On("AssignPassword", flagSet).Return(tt.args.password)
flagSetUtilsMock.On("GetStringAddress", mock.AnythingOfType("*pflag.FlagSet")).Return(tt.args.address, tt.args.addressErr)
utilsMock.On("AssignStakerId", flagSet, mock.AnythingOfType("*ethclient.Client"), mock.Anything).Return(tt.args.stakerId, tt.args.stakerIdErr)
utilsMock.On("ConnectToClient", mock.AnythingOfType("string")).Return(client)
diff --git a/cmd/setDelegation.go b/cmd/setDelegation.go
index fca629e6..eb9c9580 100644
--- a/cmd/setDelegation.go
+++ b/cmd/setDelegation.go
@@ -42,7 +42,7 @@ func (*UtilsStruct) ExecuteSetDelegation(flagSet *pflag.FlagSet) {
config, err := cmdUtils.GetConfigData()
utils.CheckError("Error in getting config: ", err)
- password := razorUtils.AssignPassword()
+ password := razorUtils.AssignPassword(flagSet)
statusString, err := flagSetUtils.GetStringStatus(flagSet)
utils.CheckError("Error in getting status: ", err)
@@ -127,11 +127,13 @@ func init() {
var (
Status string
Address string
+ Password string
Commission uint8
)
setDelegationCmd.Flags().StringVarP(&Status, "status", "s", "true", "true for accepting delegation and false for not accepting")
setDelegationCmd.Flags().StringVarP(&Address, "address", "a", "", "your account address")
+ setDelegationCmd.Flags().StringVarP(&Password, "password", "", "", "password path to protect the keystore")
setDelegationCmd.Flags().Uint8VarP(&Commission, "commission", "c", 0, "commission")
addrErr := setDelegationCmd.MarkFlagRequired("address")
diff --git a/cmd/setDelegation_test.go b/cmd/setDelegation_test.go
index 1c3208e7..9e7bf53c 100644
--- a/cmd/setDelegation_test.go
+++ b/cmd/setDelegation_test.go
@@ -414,7 +414,7 @@ func TestExecuteSetDelegation(t *testing.T) {
utilsMock.On("AssignLogFile", mock.AnythingOfType("*pflag.FlagSet"))
cmdUtilsMock.On("GetConfigData").Return(tt.args.config, tt.args.configErr)
- utilsMock.On("AssignPassword").Return(tt.args.password)
+ utilsMock.On("AssignPassword", flagSet).Return(tt.args.password)
flagSetUtilsMock.On("GetStringAddress", flagSet).Return(tt.args.address, tt.args.addressErr)
flagSetUtilsMock.On("GetStringStatus", flagSet).Return(tt.args.status, tt.args.statusErr)
flagSetUtilsMock.On("GetUint8Commission", flagSet).Return(tt.args.commission, tt.args.commissionErr)
diff --git a/cmd/struct-utils.go b/cmd/struct-utils.go
index 52b9b0f9..aa5bed41 100644
--- a/cmd/struct-utils.go
+++ b/cmd/struct-utils.go
@@ -87,8 +87,8 @@ func (u Utils) GetConfigData() (types.Configurations, error) {
}
//This function assigns the password
-func (u Utils) AssignPassword() string {
- return utils.AssignPassword()
+func (u Utils) AssignPassword(flagSet *pflag.FlagSet) string {
+ return utils.AssignPassword(flagSet)
}
//This function returns the string address
diff --git a/cmd/transfer.go b/cmd/transfer.go
index 11f11bef..ca383640 100644
--- a/cmd/transfer.go
+++ b/cmd/transfer.go
@@ -40,7 +40,7 @@ func (*UtilsStruct) ExecuteTransfer(flagSet *pflag.FlagSet) {
config, err := cmdUtils.GetConfigData()
utils.CheckError("Error in getting config: ", err)
- password := razorUtils.AssignPassword()
+ password := razorUtils.AssignPassword(flagSet)
toAddress, err := flagSetUtils.GetStringTo(flagSet)
utils.CheckError("Error in getting toAddress: ", err)
@@ -101,12 +101,14 @@ func init() {
Amount string
From string
To string
+ Password string
WeiRazor bool
)
transferCmd.Flags().StringVarP(&Amount, "value", "v", "0", "value to transfer")
transferCmd.Flags().StringVarP(&From, "from", "", "", "transfer from")
transferCmd.Flags().StringVarP(&To, "to", "", "", "transfer to")
+ transferCmd.Flags().StringVarP(&Password, "password", "", "", "password path to protect the keystore")
transferCmd.Flags().BoolVarP(&WeiRazor, "weiRazor", "", false, "value can be passed in wei")
amountErr := transferCmd.MarkFlagRequired("value")
diff --git a/cmd/transfer_test.go b/cmd/transfer_test.go
index b6f00c9d..968b3896 100644
--- a/cmd/transfer_test.go
+++ b/cmd/transfer_test.go
@@ -267,7 +267,7 @@ func TestExecuteTransfer(t *testing.T) {
utilsMock.On("AssignLogFile", mock.AnythingOfType("*pflag.FlagSet"))
cmdUtilsMock.On("GetConfigData").Return(tt.args.config, tt.args.configErr)
- utilsMock.On("AssignPassword").Return(tt.args.password)
+ utilsMock.On("AssignPassword", flagSet).Return(tt.args.password)
flagsetUtilsMock.On("GetStringFrom", flagSet).Return(tt.args.from, tt.args.fromErr)
flagsetUtilsMock.On("GetStringTo", flagSet).Return(tt.args.to, tt.args.toErr)
cmdUtilsMock.On("AssignAmountInWei", flagSet).Return(tt.args.amount, tt.args.amountErr)
diff --git a/cmd/unlockWithdraw.go b/cmd/unlockWithdraw.go
index 94a6821e..05f66c1c 100644
--- a/cmd/unlockWithdraw.go
+++ b/cmd/unlockWithdraw.go
@@ -40,7 +40,7 @@ func (*UtilsStruct) ExecuteUnlockWithdraw(flagSet *pflag.FlagSet) {
config, err := cmdUtils.GetConfigData()
utils.CheckError("Error in getting config: ", err)
- password := razorUtils.AssignPassword()
+ password := razorUtils.AssignPassword(flagSet)
client := razorUtils.ConnectToClient(config.Provider)
@@ -116,10 +116,12 @@ func init() {
rootCmd.AddCommand(unlockWithdrawCmd)
var (
Address string
+ Password string
StakerId uint32
)
unlockWithdrawCmd.Flags().StringVarP(&Address, "address", "a", "", "address of the user")
+ unlockWithdrawCmd.Flags().StringVarP(&Password, "password", "", "", "password path of user to protect the keystore")
unlockWithdrawCmd.Flags().Uint32VarP(&StakerId, "stakerId", "", 0, "password path of user to protect the keystore")
addrErr := unlockWithdrawCmd.MarkFlagRequired("address")
diff --git a/cmd/unlockWithdraw_test.go b/cmd/unlockWithdraw_test.go
index 87b6c36a..3d45424f 100644
--- a/cmd/unlockWithdraw_test.go
+++ b/cmd/unlockWithdraw_test.go
@@ -109,7 +109,7 @@ func TestExecuteUnlockWithdraw(t *testing.T) {
utilsMock.On("AssignLogFile", mock.AnythingOfType("*pflag.FlagSet"))
flagSetUtilsMock.On("GetStringAddress", mock.AnythingOfType("*pflag.FlagSet")).Return(tt.args.address, tt.args.addressErr)
cmdUtilsMock.On("GetConfigData").Return(tt.args.config, tt.args.configErr)
- utilsMock.On("AssignPassword").Return(tt.args.password)
+ utilsMock.On("AssignPassword", flagSet).Return(tt.args.password)
utilsMock.On("ConnectToClient", mock.AnythingOfType("string")).Return(client)
utilsMock.On("CheckEthBalanceIsZero", mock.AnythingOfType("*ethclient.Client"), mock.AnythingOfType("string")).Return()
utilsMock.On("AssignStakerId", mock.Anything, mock.Anything, mock.Anything).Return(tt.args.stakerId, tt.args.stakerIdErr)
diff --git a/cmd/unstake.go b/cmd/unstake.go
index 271a1b79..312f1ea7 100644
--- a/cmd/unstake.go
+++ b/cmd/unstake.go
@@ -44,7 +44,7 @@ func (*UtilsStruct) ExecuteUnstake(flagSet *pflag.FlagSet) {
config, err := cmdUtils.GetConfigData()
utils.CheckError("Error in getting config: ", err)
- password := razorUtils.AssignPassword()
+ password := razorUtils.AssignPassword(flagSet)
client := razorUtils.ConnectToClient(config.Provider)
@@ -148,12 +148,14 @@ func init() {
var (
Address string
AmountToUnStake string
+ Password string
WeiRazor bool
StakerId uint32
)
unstakeCmd.Flags().StringVarP(&Address, "address", "a", "", "user's address")
unstakeCmd.Flags().StringVarP(&AmountToUnStake, "value", "v", "0", "value of sRazors to un-stake")
+ unstakeCmd.Flags().StringVarP(&Password, "password", "", "", "password path to protect the keystore")
unstakeCmd.Flags().BoolVarP(&WeiRazor, "weiRazor", "", false, "value can be passed in wei")
unstakeCmd.Flags().Uint32VarP(&StakerId, "stakerId", "", 0, "staker id")
diff --git a/cmd/unstake_test.go b/cmd/unstake_test.go
index 053db6db..c594cc62 100644
--- a/cmd/unstake_test.go
+++ b/cmd/unstake_test.go
@@ -317,7 +317,7 @@ func TestExecuteUnstake(t *testing.T) {
utilsMock.On("AssignLogFile", mock.AnythingOfType("*pflag.FlagSet"))
cmdUtilsMock.On("GetConfigData").Return(tt.args.config, tt.args.configErr)
- utilsMock.On("AssignPassword").Return(tt.args.password)
+ utilsMock.On("AssignPassword", flagSet).Return(tt.args.password)
flagSetUtilsMock.On("GetStringAddress", flagSet).Return(tt.args.address, tt.args.addressErr)
utilsMock.On("ConnectToClient", mock.AnythingOfType("string")).Return(client)
cmdUtilsMock.On("AssignAmountInWei", flagSet).Return(tt.args.value, tt.args.valueErr)
diff --git a/cmd/updateCollection.go b/cmd/updateCollection.go
index 28b1b8d0..b5bb61f8 100644
--- a/cmd/updateCollection.go
+++ b/cmd/updateCollection.go
@@ -43,7 +43,7 @@ func (*UtilsStruct) ExecuteUpdateCollection(flagSet *pflag.FlagSet) {
config, err := cmdUtils.GetConfigData()
utils.CheckError("Error in getting config: ", err)
- password := razorUtils.AssignPassword()
+ password := razorUtils.AssignPassword(flagSet)
collectionId, err := flagSetUtils.GetUint16CollectionId(flagSet)
utils.CheckError("Error in getting collectionID: ", err)
@@ -112,6 +112,7 @@ func init() {
Account string
CollectionId uint16
AggregationMethod uint32
+ Password string
Power int8
JobIds []uint
Tolerance uint16
@@ -121,6 +122,7 @@ func init() {
updateCollectionCmd.Flags().Uint16VarP(&CollectionId, "collectionId", "", 0, "collection id to be modified")
updateCollectionCmd.Flags().Uint32VarP(&AggregationMethod, "aggregation", "", 1, "aggregation method to be used")
updateCollectionCmd.Flags().Int8VarP(&Power, "power", "", 0, "multiplier for the collection")
+ updateCollectionCmd.Flags().StringVarP(&Password, "password", "", "", "password path of job creator to protect the keystore")
updateCollectionCmd.Flags().UintSliceVarP(&JobIds, "jobIds", "", []uint{}, "job ids for the collection")
updateCollectionCmd.Flags().Uint16VarP(&Tolerance, "tolerance", "", 0, "tolerance")
diff --git a/cmd/updateCollection_test.go b/cmd/updateCollection_test.go
index 31a420fb..a3d0b724 100644
--- a/cmd/updateCollection_test.go
+++ b/cmd/updateCollection_test.go
@@ -302,7 +302,7 @@ func TestExecuteUpdateCollection(t *testing.T) {
utilsMock.On("AssignLogFile", mock.AnythingOfType("*pflag.FlagSet"))
cmdUtilsMock.On("GetConfigData").Return(tt.args.config, tt.args.configErr)
- utilsMock.On("AssignPassword").Return(tt.args.password)
+ utilsMock.On("AssignPassword", flagSet).Return(tt.args.password)
flagsetUtilsMock.On("GetStringAddress", flagSet).Return(tt.args.address, tt.args.addressErr)
flagsetUtilsMock.On("GetUint16CollectionId", flagSet).Return(tt.args.collectionId, tt.args.collectionIdErr)
flagsetUtilsMock.On("GetUintSliceJobIds", flagSet).Return(tt.args.jobId, tt.args.jobIdErr)
diff --git a/cmd/updateCommission.go b/cmd/updateCommission.go
index 2c6fdf6a..f835be7a 100644
--- a/cmd/updateCommission.go
+++ b/cmd/updateCommission.go
@@ -41,7 +41,7 @@ func (*UtilsStruct) ExecuteUpdateCommission(flagSet *pflag.FlagSet) {
utils.CheckError("Error in getting config", err)
client := razorUtils.ConnectToClient(config.Provider)
- password := razorUtils.AssignPassword()
+ password := razorUtils.AssignPassword(flagSet)
commission, err := flagSetUtils.GetUint8Commission(flagSet)
utils.CheckError("Error in getting commission", err)
@@ -128,12 +128,14 @@ func init() {
var (
Address string
Commission uint8
+ Password string
)
rootCmd.AddCommand(updateCommissionCmd)
updateCommissionCmd.Flags().StringVarP(&Address, "address", "a", "", "your account address")
updateCommissionCmd.Flags().Uint8VarP(&Commission, "commission", "c", 0, "commission")
+ updateCommissionCmd.Flags().StringVarP(&Password, "password", "", "", "password path to protect the keystore")
addrErr := updateCommissionCmd.MarkFlagRequired("address")
utils.CheckError("Address error: ", addrErr)
diff --git a/cmd/updateCommission_test.go b/cmd/updateCommission_test.go
index 2f126ed8..c9095feb 100644
--- a/cmd/updateCommission_test.go
+++ b/cmd/updateCommission_test.go
@@ -356,7 +356,7 @@ func TestExecuteUpdateCommission(t *testing.T) {
utilsMock.On("AssignLogFile", mock.AnythingOfType("*pflag.FlagSet"))
cmdUtilsMock.On("GetConfigData").Return(tt.args.config, tt.args.configErr)
flagsetUtilsMock.On("GetStringAddress", flagSet).Return(tt.args.address, tt.args.addressErr)
- utilsMock.On("AssignPassword").Return(tt.args.password)
+ utilsMock.On("AssignPassword", flagSet).Return(tt.args.password)
flagsetUtilsMock.On("GetUint8Commission", flagSet).Return(tt.args.commission, tt.args.commissionErr)
utilsMock.On("GetStakerId", mock.AnythingOfType("*ethclient.Client"), mock.AnythingOfType("string")).Return(tt.args.stakerId, tt.args.stakerIdErr)
utilsMock.On("ConnectToClient", mock.AnythingOfType("string")).Return(client)
diff --git a/cmd/updateJob.go b/cmd/updateJob.go
index cb63a264..3a0f7603 100644
--- a/cmd/updateJob.go
+++ b/cmd/updateJob.go
@@ -43,7 +43,7 @@ func (*UtilsStruct) ExecuteUpdateJob(flagSet *pflag.FlagSet) {
config, err := cmdUtils.GetConfigData()
utils.CheckError("Error in getting config: ", err)
- password := razorUtils.AssignPassword()
+ password := razorUtils.AssignPassword(flagSet)
jobId, err := flagSetUtils.GetUint16JobId(flagSet)
utils.CheckError("Error in getting jobId: ", err)
@@ -118,6 +118,7 @@ func init() {
Power int8
Weight uint8
Account string
+ Password string
)
updateJobCmd.Flags().Uint16VarP(&JobId, "jobId", "", 0, "job id")
@@ -127,6 +128,7 @@ func init() {
updateJobCmd.Flags().Int8VarP(&Power, "power", "", 0, "power")
updateJobCmd.Flags().Uint8VarP(&Weight, "weight", "", 0, "weight")
updateJobCmd.Flags().StringVarP(&Account, "address", "a", "", "address of the job creator")
+ updateJobCmd.Flags().StringVarP(&Password, "password", "", "", "password path of job creator to protect the keystore")
jobIdErr := updateJobCmd.MarkFlagRequired("jobId")
utils.CheckError("Job Id error: ", jobIdErr)
diff --git a/cmd/updateJob_test.go b/cmd/updateJob_test.go
index df6c7332..7292bcae 100644
--- a/cmd/updateJob_test.go
+++ b/cmd/updateJob_test.go
@@ -348,7 +348,7 @@ func TestExecuteUpdateJob(t *testing.T) {
utilsMock.On("AssignLogFile", mock.AnythingOfType("*pflag.FlagSet"))
cmdUtilsMock.On("GetConfigData").Return(tt.args.config, tt.args.configErr)
- utilsMock.On("AssignPassword").Return(tt.args.password)
+ utilsMock.On("AssignPassword", flagSet).Return(tt.args.password)
flagsetUtilsMock.On("GetStringAddress", flagSet).Return(tt.args.address, tt.args.addressErr)
flagsetUtilsMock.On("GetStringUrl", flagSet).Return(tt.args.url, tt.args.urlErr)
flagsetUtilsMock.On("GetStringSelector", flagSet).Return(tt.args.selector, tt.args.selectorErr)
diff --git a/cmd/vote.go b/cmd/vote.go
index b5bdeeab..31895f14 100644
--- a/cmd/vote.go
+++ b/cmd/vote.go
@@ -53,7 +53,7 @@ func (*UtilsStruct) ExecuteVote(flagSet *pflag.FlagSet) {
config, err := cmdUtils.GetConfigData()
utils.CheckError("Error in fetching config details: ", err)
- password := razorUtils.AssignPassword()
+ password := razorUtils.AssignPassword(flagSet)
isRogue, err := flagSetUtils.GetBoolRogue(flagSet)
utils.CheckError("Error in getting rogue status: ", err)
@@ -549,12 +549,14 @@ func init() {
Address string
Rogue bool
RogueMode []string
+ Password string
AutoClaimBounty bool
)
voteCmd.Flags().StringVarP(&Address, "address", "a", "", "address of the staker")
voteCmd.Flags().BoolVarP(&Rogue, "rogue", "r", false, "enable rogue mode to report wrong values")
voteCmd.Flags().StringSliceVarP(&RogueMode, "rogueMode", "", []string{}, "type of rogue mode")
+ voteCmd.Flags().StringVarP(&Password, "password", "", "", "password path of the staker to protect the keystore")
voteCmd.Flags().BoolVarP(&AutoClaimBounty, "autoClaimBounty", "", false, "auto claim bounty")
addrErr := voteCmd.MarkFlagRequired("address")
diff --git a/cmd/vote_test.go b/cmd/vote_test.go
index e8c27fdb..42b38813 100644
--- a/cmd/vote_test.go
+++ b/cmd/vote_test.go
@@ -136,7 +136,7 @@ func TestExecuteVote(t *testing.T) {
utilsMock.On("AssignLogFile", mock.AnythingOfType("*pflag.FlagSet"))
cmdUtilsMock.On("GetConfigData").Return(tt.args.config, tt.args.configErr)
- utilsMock.On("AssignPassword").Return(tt.args.password)
+ utilsMock.On("AssignPassword", flagSet).Return(tt.args.password)
flagSetUtilsMock.On("GetStringAddress", mock.AnythingOfType("*pflag.FlagSet")).Return(tt.args.address, tt.args.addressErr)
utilsMock.On("ConnectToClient", mock.AnythingOfType("string")).Return(client)
flagSetUtilsMock.On("GetBoolRogue", mock.AnythingOfType("*pflag.FlagSet")).Return(tt.args.rogueStatus, tt.args.rogueErr)
diff --git a/password.txt b/password.txt
new file mode 100644
index 00000000..e69de29b
diff --git a/utils/password.go b/utils/password.go
index 5d1979a8..cade81b7 100644
--- a/utils/password.go
+++ b/utils/password.go
@@ -1,8 +1,11 @@
package utils
import (
+ "bufio"
"errors"
"github.com/manifoldco/promptui"
+ "github.com/spf13/pflag"
+ "os"
"unicode"
)
@@ -46,7 +49,31 @@ func validatePrivateKey(input string) error {
return nil
}
-func AssignPassword() string {
+func GetPasswordFromFile(path string) string {
+ file, err := os.Open(path)
+ if err != nil {
+ log.Fatal(err)
+ }
+ log.Info("Getting password from the first line of file at described location")
+ defer file.Close()
+
+ scanner := bufio.NewScanner(file)
+ for scanner.Scan() {
+ return scanner.Text()
+ }
+ if err := scanner.Err(); err != nil {
+ log.Fatal(err)
+ }
+ return ""
+}
+
+func AssignPassword(flagSet *pflag.FlagSet) string {
+ if UtilsInterface.IsFlagPassed("password") {
+ log.Warn("Password flag is passed")
+ log.Warn("This is a unsecure way to use razor-go")
+ passwordPath, _ := flagSet.GetString("password")
+ return GetPasswordFromFile(passwordPath)
+ }
return PasswordPrompt()
}