|
@@ -2,8 +2,10 @@
|
|
package logic
|
|
package logic
|
|
|
|
|
|
import (
|
|
import (
|
|
|
|
+ crand "crypto/rand"
|
|
"encoding/base64"
|
|
"encoding/base64"
|
|
"encoding/json"
|
|
"encoding/json"
|
|
|
|
+ "math/big"
|
|
"math/rand"
|
|
"math/rand"
|
|
"strconv"
|
|
"strconv"
|
|
"strings"
|
|
"strings"
|
|
@@ -278,7 +280,7 @@ func GetPeersList(networkName string, excludeRelayed bool, relayedNodeAddr strin
|
|
|
|
|
|
// RandomString - returns a random string in a charset
|
|
// RandomString - returns a random string in a charset
|
|
func RandomString(length int) string {
|
|
func RandomString(length int) string {
|
|
- const charset = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
|
|
|
|
|
|
+ const charset = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ123456789"
|
|
|
|
|
|
var seededRand *rand.Rand = rand.New(rand.NewSource(time.Now().UnixNano()))
|
|
var seededRand *rand.Rand = rand.New(rand.NewSource(time.Now().UnixNano()))
|
|
|
|
|
|
@@ -289,6 +291,21 @@ func RandomString(length int) string {
|
|
return string(b)
|
|
return string(b)
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+// GenerateRandomString - generates random string of n length
|
|
|
|
+func GenerateRandomString(n int) (string, error) {
|
|
|
|
+ const chars = "123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-"
|
|
|
|
+ ret := make([]byte, n)
|
|
|
|
+ for i := range ret {
|
|
|
|
+ num, err := crand.Int(crand.Reader, big.NewInt(int64(len(chars))))
|
|
|
|
+ if err != nil {
|
|
|
|
+ return "", err
|
|
|
|
+ }
|
|
|
|
+ ret[i] = chars[num.Int64()]
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ return string(ret), nil
|
|
|
|
+}
|
|
|
|
+
|
|
// == Private Methods ==
|
|
// == Private Methods ==
|
|
|
|
|
|
func getNetworkEgressAndNodes(networkName string) ([]models.Node, []models.Node, error) {
|
|
func getNetworkEgressAndNodes(networkName string) ([]models.Node, []models.Node, error) {
|