├── CNAME
├── README.md
├── _config.yml
├── _layouts
└── default.html
├── _sass
└── variables.scss
├── assets
├── 1tg_logo_rgb_pos.png
├── atg.png
├── atg1.png
├── css
│ └── main.css
└── openssp-eco.png
├── faq
└── index.html
├── features
└── index.html
├── getstarted
└── index.html
└── imprint
└── index.html
/CNAME:
--------------------------------------------------------------------------------
1 | openssp.org
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | ## OpenSSP by One Tech Group
2 |
3 | ### This is an open-source supply-side platform for general use with full OpenRTB support.
4 |
5 | OpenSSP is a so-called multi-channel SSP which means that not only does it support RTB, but also channels to ad server and further SSP implementation. The RTB support is a core feature and needs no extra definition.
6 |
7 | OpenSSP supports the power of the OpenRTB standard, and can be used to deliver banner impressions, videoad impressions etc.
8 | Feel free to examine the code and modify it as you need.
9 |
10 |
11 | 
12 |
13 | ### General SSP Functionality:
14 | - A tag with a link to OpenSSP needs to be placed on a website that contains the ad placement. This link may contain a set of parameters (depending on your preferences).
15 | - OpenSSP is then called from the tag and the parameters are extracted and validated.
16 | - OpenSSP resolves the request data, e.g. the website or publisher which is identified by an ID and loads additional data from cache (more information on data caching).
17 | - OpenSSP starts the ExchangeServer and the ExecutorService to call a demand service (DSP, SSP, Adserver etc.) and waits for the response to start the auction.
18 | - After the auction is finished, the winner is evaluated and a response to the client will be sent.
19 |
20 | Feel free to use the code, modify it and improve it!
21 |
22 | Comments, proposals and suggestions are welcome.
23 |
24 | OTG, May 2017.
25 |
--------------------------------------------------------------------------------
/_config.yml:
--------------------------------------------------------------------------------
1 | theme: jekyll-theme-cayman
2 |
3 | gems:
4 | - jekyll-seo-tag
5 |
6 | description: The open source Supply Side Platform
7 | author: André Schmer
8 | publisher: ATG - ad-tech-group GmbH
9 | version: "Actual OpenSSP Version is V0.2"
10 |
--------------------------------------------------------------------------------
/_layouts/default.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
7 |
8 |
9 |
Features
10 |
11 |
12 |
Multi channel support
13 |
14 | Multi channel support means that not only RTB demand provided by a Demand Side Platform
15 | will be considered in the auction, but also demand from an optional ad server.
16 | OpenSSP also offers the opportunity to implement adapters to other SSP's,
17 | sending them requests corresponding to the bidrequest and considering their responses in the set of auctionable bids.
18 |
19 |
20 |
Second Price Sealed Bid
21 |
22 | OpenSSP mainly supports Second Price Sealed Bid.
23 | What does that mean? The bidder with the highest bid wins the auction but only has to pay the price of the second best bidder plus 1 cent.
24 |
25 |
26 |
Deal bids
27 |
28 | As the OpenRTB specification describes the bahviour of the private marketplace,
29 | OpenSSP is also able to handle deal bids which was struck a priori between buyer and seller.
30 |
31 |
32 |
Runtime configurable
33 |
34 | OpenSSP is built to be configured during runtime via properties config files.
35 | A Watchdog observes a directory and specific files for changes permanently and reloads
36 | after detecting a change the properties into the application context.
37 |
38 |
39 |
Data Caching
40 |
41 | OpenSSP uses predefined data to enrich the incoming requests and build the various bid requests.
42 | This data e.g. for websites has to be loaded in an asynchronous manner.
43 | The data will be loaded via a RESTful service, usually due to the fact that calling a database in realtime is not feasible.
44 | Therefore, OpenSSP loads the data from a web service periodically and stores that data in a memory based key-value store called the cache.
45 |
46 |
47 |
48 |
--------------------------------------------------------------------------------
/getstarted/index.html:
--------------------------------------------------------------------------------
1 | ---
2 | layout: default
3 | title: Get Started
4 | ---
5 |
6 |
7 |
8 |
9 |
Get Started
10 |
11 |
12 |
13 |
Local environment
14 |
15 | - Download the Zip file or clone the project if you would like to contribute to the project.
16 | - Import the project into your desired IDE via Maven Import.
17 | - Build the project from the parent with Maven Goal
mvn clean install
.
A war file will be generated within the target folder of the core project.
18 | - Run OpenSSP from the core project with Maven Goal
mvn tomcat7:run-war
.
19 | - OpenSSP is now ready to retrieve requests on port 8080 for developing, testing and debugging purposes.
20 |
21 |
22 |
23 |
24 |
Server setup
25 |
26 | Prerequisites:
27 |
28 |
29 |
30 | - Required: Install and configure a Servlet Container e.g. Apache Tomcat.
31 | - Required: Set up a
properties
directory for storage the resource files global.runtime.xml
, local.runtime.xml
and log4j2.xml (optional)
.
32 | For example, if you choose Apache Tomcat as your Servlet Container, create the properties folder where the CATALINA_HOME is located.
33 | - Recommended: Set up the runtime files
global.runtime.xml
and local.runtime.xml
.
34 | These files will be read during startup process. A Watchdog observes these files for changes and starts the load process to store the values. See the runtime files for more information.
35 | - Optional: Set up a log structure for customized logs. Default logging is console logging.
36 | - Define a request tag and place it within the ad space.
37 | The ad space is the placeholder on the publisher's site for a markup which will be served by the SSP.
38 | The definition of the tag and the parameters depend on your requirements.
39 | - Adjust the
com.atg.openssp.core.entry.EntryValidator
to read the values and store this data in the SessionAgent.
40 | - You need an external data source in order to enrich the bid request to a demand side with the required data as the OpenRTB protocol prescribes.
41 | A common way is to setup a service (e.g. RESTful service) which periodically loads the data of publishers, websites etc.
42 | This data comes from a database and will be stored onto the memory of the SSP (cache).
43 | Example: Define a request parameter e.g. &publisher=1234
with ID of the publisher as it is stored in your database.
44 | Read the cached data with the key of 1234
and you will retrieve further information about the publisher which you can put into the bid request.
45 |
46 | Update v0.2: to increase the user experience and avoid to set up an external data service for a test implementation of OpenSSP
47 | , we provide some new example JSON based datastructures and its corresponding DataBroker.
48 | With these structures it is very easy to setup the data you need to fill a valid and complete bidrequest.
49 | Additionally the payload of SSP request is reduced to only one parameter.
50 | Copy the JSON files site_db.json, price_layer.json
and supplier_db.json
into the properties
folder.
51 |
52 | Example: a call to OpenSSP with ?site=1
will map to an entry within site_db.json
and loads its data from cache.
53 |
54 | - Of course, you first need a demand partner to send the bid request to. Therefore, it is also recommended to create a service to load data regarding to the partner.
55 | The RTB
com.atg.openssp.core.exchange.channel.rtb.DemandService
will load the demand partner (also called supplier), send the bid request to them and wait for an answer.
56 |
57 |
58 |
59 |
60 |
61 |
Deployment to Server
62 |
63 | After finishing your setup, you are only a few steps away from succesfully running the system.
64 |
65 |
66 | - Build the project from the parent with Maven Goal
mvn clean install
.
67 | - Deploy the war file into the webapps folder.
68 | - Run the Servlet Container.
69 |
70 |
71 |
72 |
73 |
Test your installation
74 |
75 | After finishing your deployment, you can test if OpenSSP works correctly.
76 | Open your browser and type
77 | https://yourserverip:8080/open-ssp/SupplyVideoService?site=1&test=1
78 | If OpenSSP is successfully installed and running you should see an output similar to:
79 | {\"result\":\"Success\", \"message\":\"OpenSSP is working.\"}
80 |
81 |
82 |
83 |
84 |
85 | Thats all you need to do. Now you can send requests to your SSP.
86 |
87 |
88 |
89 |
--------------------------------------------------------------------------------
/imprint/index.html:
--------------------------------------------------------------------------------
1 | ---
2 | layout: default
3 | title: Open-SSP | Imprint
4 | ---
5 |
6 |
7 |
Imprint
8 |
9 | One Tech Group GmbH
10 |
11 |
12 |
13 | Friedensallee 38
14 | 22765 Hamburg
15 | Germany
16 | T +49 (0)40 675 8675 0
17 | E info[at]onetech.group
18 |
19 | District Court Hamburg HRB 121595 One Tech Group GmbH
20 | Represented by: Daniel Siegmund, Lucas Lingens
21 |
22 |
23 |
24 |
25 |
--------------------------------------------------------------------------------