From a52cec6e4c00d192695b2e420d90920b2f8d0129 Mon Sep 17 00:00:00 2001 From: Anton Nikityuk Date: Fri, 15 Sep 2023 15:21:34 +0700 Subject: [PATCH 1/2] host validation (us, eu, apac) --- adapters/silvermob/silvermob.go | 22 +++++++- .../supplemental/invalid-host.json | 53 +++++++++++++++++++ 2 files changed, 73 insertions(+), 2 deletions(-) create mode 100644 adapters/silvermob/silvermobtest/supplemental/invalid-host.json diff --git a/adapters/silvermob/silvermob.go b/adapters/silvermob/silvermob.go index 9130ab4d96a..3a365432566 100644 --- a/adapters/silvermob/silvermob.go +++ b/adapters/silvermob/silvermob.go @@ -18,6 +18,18 @@ type SilverMobAdapter struct { endpoint *template.Template } +func isValidHost(host string) bool { + validHosts := map[string]bool{ + "eu": true, + "us": true, + "apac": true, + } + + _, ok := validHosts[host] + + return ok +} + // Builder builds a new instance of the SilverMob adapter for the given bidder with the given config. func Builder(bidderName openrtb_ext.BidderName, config config.Adapter, server config.Server) (adapters.Bidder, error) { template, err := template.New("endpointTemplate").Parse(config.Endpoint) @@ -121,8 +133,14 @@ func (a *SilverMobAdapter) getImpressionExt(imp *openrtb2.Imp) (*openrtb_ext.Ext } func (a *SilverMobAdapter) buildEndpointURL(params *openrtb_ext.ExtSilverMob) (string, error) { - endpointParams := macros.EndpointTemplateParams{ZoneID: params.ZoneID, Host: params.Host} - return macros.ResolveMacros(a.endpoint, endpointParams) + if isValidHost(params.Host) { + endpointParams := macros.EndpointTemplateParams{ZoneID: params.ZoneID, Host: params.Host} + return macros.ResolveMacros(a.endpoint, endpointParams) + } else { + return "", &errortypes.BadInput{ + Message: fmt.Sprintf("invalid host %s", params.Host), + } + } } func (a *SilverMobAdapter) MakeBids( diff --git a/adapters/silvermob/silvermobtest/supplemental/invalid-host.json b/adapters/silvermob/silvermobtest/supplemental/invalid-host.json new file mode 100644 index 00000000000..f8b2cd3442f --- /dev/null +++ b/adapters/silvermob/silvermobtest/supplemental/invalid-host.json @@ -0,0 +1,53 @@ +{ + "mockBidRequest": { + "id": "some-request-id", + "device": { + "ua": "test-user-agent", + "ip": "123.123.123.123", + "language": "en", + "dnt": 0 + }, + "tmax": 1000, + "user": { + "buyeruid": "awesome-user" + }, + "app": { + "publisher": { + "id": "123456789" + }, + "cat": [ + "IAB22-1" + ], + "bundle": "com.app.awesome", + "name": "Awesome App", + "domain": "awesomeapp.com", + "id": "123456789" + }, + "imp": [ + { + "id": "some-impression-id", + "tagid": "ogTAGID", + "banner": { + "w":320, + "h":50 + }, + "ext": { + "bidder": { + "host": "some_host", + "zoneid": "0" + } + } + } + ] + }, + "httpCalls": [ + ], + "expectedBidResponses": [ + ], + "expectedMakeRequestsErrors": [ + { + "value": "invalid host some_host", + "comparison": "literal" + } + ] + } \ No newline at end of file From 0ffb7cc77619b6180caa5cdfbeaf52850aad9a9a Mon Sep 17 00:00:00 2001 From: freemmy Date: Wed, 20 Sep 2023 19:35:16 +0700 Subject: [PATCH 2/2] Code optimizations --- adapters/silvermob/silvermob.go | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/adapters/silvermob/silvermob.go b/adapters/silvermob/silvermob.go index 3a365432566..d4a1b55b45f 100644 --- a/adapters/silvermob/silvermob.go +++ b/adapters/silvermob/silvermob.go @@ -19,15 +19,7 @@ type SilverMobAdapter struct { } func isValidHost(host string) bool { - validHosts := map[string]bool{ - "eu": true, - "us": true, - "apac": true, - } - - _, ok := validHosts[host] - - return ok + return host == "eu" || host == "us" || host == "apac" } // Builder builds a new instance of the SilverMob adapter for the given bidder with the given config.