Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
G
Geth-Modification
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
张蕾
Geth-Modification
Commits
dd5ae4fd
Commit
dd5ae4fd
authored
Dec 19, 2017
by
Janos Guljas
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
cmd/swarm: add validation for EnsAPIs configuration parameter
parent
0d6a735a
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
130 additions
and
0 deletions
+130
-0
config.go
cmd/swarm/config.go
+35
-0
config_test.go
cmd/swarm/config_test.go
+95
-0
No files found.
cmd/swarm/config.go
View file @
dd5ae4fd
...
...
@@ -102,6 +102,8 @@ func buildConfig(ctx *cli.Context) (config *bzzapi.Config, err error) {
config
=
envVarsOverride
(
config
)
//override settings provided by command line
config
=
cmdLineOverride
(
config
,
ctx
)
//validate configuration parameters
err
=
validateConfig
(
config
)
return
}
...
...
@@ -319,6 +321,39 @@ func checkDeprecated(ctx *cli.Context) {
}
}
//validate configuration parameters
func
validateConfig
(
cfg
*
bzzapi
.
Config
)
(
err
error
)
{
for
_
,
ensAPI
:=
range
cfg
.
EnsAPIs
{
if
ensAPI
!=
""
{
if
err
:=
validateEnsAPIs
(
ensAPI
);
err
!=
nil
{
return
fmt
.
Errorf
(
"invalid format [tld:][contract-addr@]url for ENS API endpoint configuration %q: %v"
,
ensAPI
,
err
)
}
}
}
return
nil
}
//validate EnsAPIs configuration parameter
func
validateEnsAPIs
(
s
string
)
(
err
error
)
{
// missing contract address
if
strings
.
HasPrefix
(
s
,
"@"
)
{
return
errors
.
New
(
"missing contract address"
)
}
// missing url
if
strings
.
HasSuffix
(
s
,
"@"
)
{
return
errors
.
New
(
"missing url"
)
}
// missing tld
if
strings
.
HasPrefix
(
s
,
":"
)
{
return
errors
.
New
(
"missing tld"
)
}
// missing url
if
strings
.
HasSuffix
(
s
,
":"
)
{
return
errors
.
New
(
"missing url"
)
}
return
nil
}
//print a Config as string
func
printConfig
(
config
*
bzzapi
.
Config
)
string
{
out
,
err
:=
tomlSettings
.
Marshal
(
&
config
)
...
...
cmd/swarm/config_test.go
View file @
dd5ae4fd
...
...
@@ -457,3 +457,98 @@ func TestCmdLineOverridesFile(t *testing.T) {
node
.
Shutdown
()
}
func
TestValidateConfig
(
t
*
testing
.
T
)
{
for
_
,
c
:=
range
[]
struct
{
cfg
*
api
.
Config
err
string
}{
{
cfg
:
&
api
.
Config
{
EnsAPIs
:
[]
string
{
"/data/testnet/geth.ipc"
,
}},
},
{
cfg
:
&
api
.
Config
{
EnsAPIs
:
[]
string
{
"http://127.0.0.1:1234"
,
}},
},
{
cfg
:
&
api
.
Config
{
EnsAPIs
:
[]
string
{
"ws://127.0.0.1:1234"
,
}},
},
{
cfg
:
&
api
.
Config
{
EnsAPIs
:
[]
string
{
"test:/data/testnet/geth.ipc"
,
}},
},
{
cfg
:
&
api
.
Config
{
EnsAPIs
:
[]
string
{
"test:ws://127.0.0.1:1234"
,
}},
},
{
cfg
:
&
api
.
Config
{
EnsAPIs
:
[]
string
{
"314159265dD8dbb310642f98f50C066173C1259b@/data/testnet/geth.ipc"
,
}},
},
{
cfg
:
&
api
.
Config
{
EnsAPIs
:
[]
string
{
"314159265dD8dbb310642f98f50C066173C1259b@http://127.0.0.1:1234"
,
}},
},
{
cfg
:
&
api
.
Config
{
EnsAPIs
:
[]
string
{
"314159265dD8dbb310642f98f50C066173C1259b@ws://127.0.0.1:1234"
,
}},
},
{
cfg
:
&
api
.
Config
{
EnsAPIs
:
[]
string
{
"test:314159265dD8dbb310642f98f50C066173C1259b@/data/testnet/geth.ipc"
,
}},
},
{
cfg
:
&
api
.
Config
{
EnsAPIs
:
[]
string
{
"eth:314159265dD8dbb310642f98f50C066173C1259b@http://127.0.0.1:1234"
,
}},
},
{
cfg
:
&
api
.
Config
{
EnsAPIs
:
[]
string
{
"eth:314159265dD8dbb310642f98f50C066173C1259b@ws://127.0.0.1:12344"
,
}},
},
{
cfg
:
&
api
.
Config
{
EnsAPIs
:
[]
string
{
"eth:"
,
}},
err
:
"invalid format [tld:][contract-addr@]url for ENS API endpoint configuration
\"
eth:
\"
: missing url"
,
},
{
cfg
:
&
api
.
Config
{
EnsAPIs
:
[]
string
{
"314159265dD8dbb310642f98f50C066173C1259b@"
,
}},
err
:
"invalid format [tld:][contract-addr@]url for ENS API endpoint configuration
\"
314159265dD8dbb310642f98f50C066173C1259b@
\"
: missing url"
,
},
{
cfg
:
&
api
.
Config
{
EnsAPIs
:
[]
string
{
":314159265dD8dbb310642f98f50C066173C1259"
,
}},
err
:
"invalid format [tld:][contract-addr@]url for ENS API endpoint configuration
\"
:314159265dD8dbb310642f98f50C066173C1259
\"
: missing tld"
,
},
{
cfg
:
&
api
.
Config
{
EnsAPIs
:
[]
string
{
"@/data/testnet/geth.ipc"
,
}},
err
:
"invalid format [tld:][contract-addr@]url for ENS API endpoint configuration
\"
@/data/testnet/geth.ipc
\"
: missing contract address"
,
},
}
{
err
:=
validateConfig
(
c
.
cfg
)
if
c
.
err
!=
""
&&
err
.
Error
()
!=
c
.
err
{
t
.
Errorf
(
"expected error %q, got %q"
,
c
.
err
,
err
)
}
if
c
.
err
==
""
&&
err
!=
nil
{
t
.
Errorf
(
"unexpected error %q"
,
err
)
}
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment