BidderΒΆ
The Bidder engine is the key component of the RTB4FREE platform. It interfaces directly with the SSP exchanges using OpenRTB protocols or proprietary protocols, if necessary, such as Google AdX or OpenX.
The bidder is is a Java version 1.8, and supports OpenRTB version 2.5. The source code with program description can be found here: https://github.com/benmfaul/XRTB
The Bidder features include:
- OpenRTB 2.5 Compliant.
- Supports many SSPs.
- Supports SSL.
- Supports GZIP Compressed Bids.
- Simplified standalone Bidder Management.
The Bidder can operate as a stand-alone system. Campaigns and Exchange interfaces can be defined in its configuration files - see the github source or the demo instructions on this site for detail on how to set up these files.
A sample configuration file, stored at Campaigns/payday.json.
{
"NOfraud" : {
"type" : "forensiq",
"threshhold" : 0,
"ck" : "none",
"endpoint" : "",
"bidOnError" : false,
"db" : "local/GeoIP2-ISP.mmdb",
"watchlist" : [ "Hetzner", "Amazon web services", "Linode", "Digital Ocean", "Vultr" ]
},
"app" : {
"indexPage": "$INDEXPAGE",
"concurrency" : "3",
"threads": "2000",
"stopped" : false,
"deadmanswitch": "$ACCOUNTING",
"ttl" : 300,
"pixel-tracking-url" : "$EXTERNAL/pixel",
"winurl" : "$EXTERNAL/rtb/win",
"redirect-url" : "$EXTERNAL/redirect",
"vasturl" : "$EXTERNAL/vast",
"eventurl" : "$EXTERNAL/track",
"postbackurl" : "$EXTERNAL/postback",
"adminPort" : "$ADMINPORT",
"adminSSL" : false,
"password" : "startrekisbetterthanstarwars",
"zeromq" : {
"bidchannel" : "kafka://[$BROKERLIST]&topic=bids",
"winchannel" : "kafka://[$BROKERLIST]&topic=wins",
"requests" : "kafka://[$BROKERLIST]&topic=requests",
"clicks" : "kafka://[$BROKERLIST]&topic=clicks",
"pixels" : "kafka://[$BROKERLIST]&topic=pixels",
"videoevents": "kafka://[$BROKERLIST]&topic=videoevents",
"postbackevents": "kafka://[$BROKERLIST]&topic=postbackevents",
"status" : "kafka://[$BROKERLIST]&topic=status",
"reasons" : "kafka://[$BROKERLIST]&topic=reasons",
"commands": "tcp://$PUBSUB:6001&commands",
"responses": "tcp://$PUBSUB:6000&responses",
"xfrport": "6002",
"frequencygoverner": "$FREQGOV",
"requeststrategy" : "$REQUESTSTRATEGY"
},
"template" : {
"default" : "{creative_forward_url}",
"exchange" : {
"adx" : "",
"mobclix" : "",
"nexage" : "",
"smartyads" : "{creative_forward_url}",
"atomx" : "{creative_forward_url}",
"adventurefeeds" : "{creative_forward_url}",
"gotham" : "{creative_forward_url}",
"epomx" : "{creative_forward_url}",
"citenko" : "{creative_forward_url}",
"kadam" : "{creative_forward_url}",
"taggify" : "{creative_forward_url}",
"cappture" : "cappture/{creative_forward_url}",
"republer" : "{creative_forward_url}",
"admedia" : "{creative_forward_url}",
"ssphwy" : "{creative_forward_url}",
"privatex" : "",
"smaato" : "richMediaBeacon='%%smaato_ct_url%%'; script='{creative_forward_url}'; clickurl='{redirect_url}/exchange={pub}/{ad_id}/creative_id={creative_id}/price=${AUCTION_PRICE}/lat={lat}/lon={lon}/bid_id={bid_id}?url={creative_forward_url}'; imageurl='{creative_image_url}'; pixelurl='{pixel_url}/exchange={pub}/ad_id={ad_id}/creative_id={creative_id}/{bid_id}/price=${AUCTION_PRICE}/lat={lat}/lon={lon}/bid_id={bid_id}';",
"smaato-builtin" : "{creative_forward_url}",
"pubmatic" : "{creative_forward_url}"
}
},
"campaigns" : [ "" ]
},
"seats" : [ {
"name" : "google",
"id" : "google-id",
"bid" : "/rtb/bids/google=com.jacamars.dsp.rtb.exchanges.google.OpenRTB",
"extension" : {
"e_key" : "$GOOGLE_EKEY",
"i_key" : "$GOOGLE_IKEY"
}
}, {
"name" : "openx",
"id" : "openx-id",
"bid" : "/rtb/bids/openx=com.jacamars.dsp.rtb.exchanges.openx.OpenX",
"extension" : {
"e_key" : "$OPENX_EKEY",
"i_key" : "$OPENX_IKEY"
}
}, {
"name" : "appnexus",
"id" : "test-appnexus-id",
"bid" : "/rtb/bids/appnexus=com.jacamars.dsp.rtb.exchanges.appnexus.Appnexus"
}, {
"name" : "adx",
"id" : "adx-seat-id",
"bid" : "/rtb/bids/adx=com.jacamars.dsp.rtb.exchanges.adx.DoubleClick",
"extension" : {
"e_key" : "$ADX_EKEY",
"i_key" : "$ADX_IKEY"
}
}, {
"name" : "c1xus",
"id" : "c1xus",
"bid" : "/rtb/bids/c1xus=com.jacamars.dsp.rtb.exchanges.C1XUS&usesPiggyBackWins"
}, {
"name" : "stroer",
"id" : "stroer-id",
"bid" : "/rtb/bids/stroer=com.jacamars.dsp.rtb.exchanges.Stroer"
}, {
"name" : "waardx",
"id" : "waardx-id",
"bid" : "/rtb/bids/waardx=com.jacamars.dsp.rtb.exchanges.Generic&!usesEncodedAdm"
}, {
"name" : "index",
"id" : "index-id",
"bid" : "/rtb/bids/index=com.jacamars.dsp.rtb.exchanges.Generic"
}, {
"name" : "intango",
"id" : "intango-id",
"bid" : "/rtb/bids/intango=com.jacamars.dsp.rtb.exchanges.Generic"
}, {
"name" : "vdopia",
"id" : "vdopia-id",
"bid" : "/rtb/bids/vdopia=com.jacamars.dsp.rtb.exchanges.Generic"
}, {
"name" : "vertamedia",
"id" : "vertamedia-id",
"bid" : "/rtb/bids/vertamedia=com.jacamars.dsp.rtb.exchanges.Generic&!usesEncodedAdm&usesPiggyBackWins"
}, {
"name" : "ventuno",
"id" : "ventuno-id",
"bid" : "/rtb/bids/ventuno=com.jacamars.dsp.rtb.exchanges.Generic"
}, {
"name" : "medianexusnetwork",
"id" : "mnn-id",
"bid" : "/rtb/bids/medianexusnetwork=com.jacamars.dsp.rtb.exchanges.Generic"
}, {
"name" : "wideorbit",
"id" : "wideorbit-id",
"bid" : "/rtb/bids/wideorbit=com.jacamars.dsp.rtb.exchanges.Generic"
}, {
"name" : "smartadserver",
"id" : "smartadserver-id",
"bid" : "/rtb/bids/smartadserver=com.jacamars.dsp.rtb.exchanges.Generic"
}, {
"name" : "c1x",
"id" : "c1x",
"bid" : "/rtb/bids/c1x=com.jacamars.dsp.rtb.exchanges.C1X&usesPiggyBackWins"
}, {
"name" : "axonix",
"id" : "axonix-id",
"bid" : "/rtb/bids/axonix=com.jacamars.dsp.rtb.exchanges.Generic"
}, {
"name" : "adventurefeeds",
"id" : "adventurefeedid",
"bid" : "/rtb/bids/adventurefeeds=com.jacamars.dsp.rtb.exchanges.Adventurefeeds"
}, {
"name" : "adprudence",
"id" : "adprudenceid",
"bid" : "/rtb/bids/adprudence=com.jacamars.dsp.rtb.exchanges.Adprudence"
}, {
"name" : "citenko",
"id" : "citenkoid",
"bid" : "/rtb/bids/citenko=com.jacamars.dsp.rtb.exchanges.Citenko"
}, {
"name" : "kadam",
"id" : "kadamid",
"bid" : "/rtb/bids/kadam=com.jacamars.dsp.rtb.exchanges.Kadam"
}, {
"name" : "gotham",
"id" : "gothamid",
"bid" : "/rtb/bids/gotham=com.jacamars.dsp.rtb.exchanges.Gotham"
}, {
"name" : "atomx",
"id" : "atomxseatid",
"bid" : "/rtb/bids/atomx=com.jacamars.dsp.rtb.exchanges.Atomx"
}, {
"name" : "smartyads",
"id" : "smartypants",
"bid" : "/rtb/bids/smartyads=com.jacamars.dsp.rtb.exchanges.Smartyads"
}, {
"name" : "nexage",
"id" : "99999999",
"bid" : "/rtb/bids/nexage=com.jacamars.dsp.rtb.exchanges.Nexage"
}, {
"name" : "privatex",
"id" : "5555555",
"bid" : "/rtb/bids/privatex=com.jacamars.dsp.rtb.exchanges.Privatex"
}, {
"name" : "fyber",
"id" : "seat1",
"bid" : "/rtb/bids/fyber=com.jacamars.dsp.rtb.exchanges.Fyber"
}, {
"name" : "smaato-builtin",
"id" : "seat1",
"bid" : "/rtb/bids/smaato-builtin=com.jacamars.dsp.rtb.exchanges.Smaato"
}, {
"name" : "smaato",
"id" : "seat1",
"bid" : "/rtb/bids/smaato=com.jacamars.dsp.rtb.exchanges.Smaato"
}, {
"name" : "epomx",
"id" : "seat1",
"bid" : "/rtb/bids/epomx=com.jacamars.dsp.rtb.exchanges.Epomx"
}, {
"name" : "cappture",
"id" : "capptureseatid",
"bid" : "/rtb/bids/cappture=com.jacamars.dsp.rtb.exchanges.Cappture"
}, {
"name" : "taggify",
"id" : "taggifyid",
"bid" : "/rtb/bids/taggify=com.jacamars.dsp.rtb.exchanges.Taggify"
}, {
"name" : "republer",
"id" : "republerid",
"bid" : "/rtb/bids/republer=com.jacamars.dsp.rtb.exchanges.Republer"
}, {
"name" : "admedia",
"id" : "admediaid",
"bid" : "/rtb/bids/admedia=com.jacamars.dsp.rtb.exchanges.AdMedia"
}, {
"name" : "ssphwy",
"id" : "ssphwyid",
"bid" : "/rtb/bids/ssphwy=com.jacamars.dsp.rtb.exchanges.SSPHwy"
}, {
"name" : "pubmatic",
"id" : "pubmaticid",
"bid" : "/rtb/bids/pubmatic=com.jacamars.dsp.rtb.exchanges.Pubmatic"
}, {
"name" : "xapads",
"id" : "xapads-id",
"bid" : "/rtb/bids/xapads=com.jacamars.dsp.rtb.exchanges.Generic&!usesEncodedAdm"
}, {
"name" : "admedia",
"id" : "admedia-id",
"bid" : "/rtb/bids/admedia=com.jacamars.dsp.rtb.exchanges.Generic&!usesEncodedAdm"
}],
"NOs3" : {
"access_key_id" : "$S3ACCESSKEY",
"secret_access_key" : "S3SECRETKEY",
"region" : "S3REGION",
"bucket" : "S3BUCKET",
"NOproxyprotocol" : "http",
"NOproxyhost" : "edgecache.kdc3-dt",
"NOproxyport" : 9000
},
"lists" : [ {
"filename" : "data/adxgeo.csv",
"name" : "@ISO2-3",
"type" : "com.jacamars.dsp.rtb.tools.IsoTwo2Iso3"
}, {
"filename" : "data/METHBOT.txt",
"name" : "@CIDR",
"type" : "CidrMap"
}, {
"filename" : "data/adxgeo.csv",
"name" : "@ADXGEO",
"type" : "com.jacamars.dsp.rtb.exchanges.adx.AdxGeoCodes"
}, {
"filename" : "data/zip_codes_states.csv",
"name" : "@ZIPCODES",
"type" : "com.jacamars.dsp.rtb.tools.LookingGlass"
} ]
}