Backend
The OONI Backend (or OONIB) will mainly accomplish two tasks: assisting probes in running tests (TestHelper), collecting reports from OONI-probes or third party censorship related testing systems (Reports, PacketCapture)
Test Helpers
This backend infrastructure will be distributed and will run at least the following services:
- UDP and TCP Echo (doc/OONI/Backend/TCPUDPEcho)
- Two way traceroute helper (doc/OONI/Tests/TwoWayTraceroute)
- HTTP Server (doc/OONI/Backend/HTTPServer)
- DNS resolver (doc/OONI/Backend/DNSResolver)
Reporting system
The reporting system will expose an HTTP RESTful API over HTTPS or HTTPO (a.k.a. HTTP/.onion). This API will allow probes that are interested in sending a report to an OONIB node to do so.
REST API spec
/report/do
Responsible for creating and updating reports.
:POST
Creates a new report with the input
* Request
{'software_name': 'XXX',
'software_version': 'XXX',
'test_name': 'XXX',
'test_version': 'XXX',
}
Optional:
'test_helper': 'XXX'
'client_ip': 'XXX'
* Response
{'backend_version': 'XXX', 'report_id': 'XXX'}
Required parameters
software_name: This is a string specifying the name of the software that is submitting a report (for example "OONI-probe")
software_version: This is a string representing the version number of the software submitting the report
test_name: This is the name of the test for which the report is being submitted
test_version: This is the version of the test for which a report is being created
Optional Parameters
test_helper: specifies which test helper we are interested in using
client_ip: is required when using test helpers to allow the matching up of client submitted reports with backend generated reports in OONIB.
:PUT
Update an already existing report.
{'report_id': 'XXX',
'report': 'XXX'
}
/report/pcap
This is the async pcap reporting system. It requires the client to have created a report already, but can work independently from test progress.
/testhelper/
This part of the API is used for signaling with the Test helper backend
/controlchannel/
This part of the API is used for configuring the control channel part of the backend.