Victims Web Service
Project description
The victims web application.
Report an Issue
If you find an issue with the service at http://victi.ms or the code, either
Create a new issue at https://github.com/victims/victims-web/issues
Email vicitms@librelist.com
Contributing
pep8 --repeat .
Using PyPI Package
You can install and use the server by installing the PyPI Package and use the provided entrypoint. Do ensure that the required database services are available and/or configured.
pip install --user victims-web
victims-web-server
Development
This is short guide on how to work on this code base using the provided docker-compose configuration and development Dockerfile. Note that the Dockerfile provided in the base directory is not to be used in production and is only for development use.
Docker builds
Building the image
The image can be built to provide a working environment with all dependencies installed.
docker build -t local/victims-web .
Using the docker image
The docker image built as shown above will not contain the application source code but it expects the working directory to be mounted at /opt/source.
docker run --rm -it -v `pwd`:/opt/source local/victims-web
Docker Compose
The docker-compose.yml file defines services required to run a working copy of the server on your local machine. Starting the server via docker-compose will;
start a supported version of MongoDB instance
seed the database with test data
start the web server using python -m victims.web
bind to port 5000 on your localhost
Starting a server
This will start an instance of the server as described above. Note that this is started with both DEBUG and TESTING enabled. This will also ensure that your code is auto re-loaded if changed.
docker-compose up server
Executing tests against your working copy
In order to execute tests against your working copy of code, you may use the test service as described in the docker-compose.yml file. This will start up dependant services, load seed data and then execute application tests and pep8.
docker-compose up test
Usage
Secured API Access
Submission endpoints like /service/submit/archive/java are secured by an implementation similar to what is used by AWS. The authentication token is expected in a HTTP header configured via the VICTIMS_API_HEADER configuration (default: X-Victims-Api). If this is not present or if validation/authentication fails, then it falls back to BASIC AUTH.
An example using curl is as follows:
$ curl -v -X PUT -H "X-Victims-Api: $APIKEY:$SIGNATURE" -H "Date: Thu, 22 Aug 2013 15:20:37 GMT" -F archive=@$ARCHIVE https://$VICTIMS_SERVER/service/submit/archive/java?version=VID\&groupId=GID\&artifactId=AID\&cves=CVE-2013-0000,CVE-2013-0001
This can also be done using BASIC-AUTH as follows:
curl -v -u $USERNAME:$PASSWORD -X PUT -F archive=@$ARCHIVE_FILE https://$VICTIMS_SERVER/service/submit/archive/java?version=VID\&groupId=GID\&artifactId=AID\&cves=CVE-2013-0000,CVE-2013-0001
API Key and Client Secret Key
Each account on victi.ms is allocated an API Key and Secret key by default. This can be retrieved by visiting https://victi.ms/account. These can be regenerated using the form at https://victi.ms/account_edit.
Signature
The signature is generated using HTTP Method, Path, Date and the MD5 hexdigest.
Notes:
The Path includes the query string parameters, e.g: /service/submit/archive/java?cves=CVE-0000-0000
The MD5 checksum includes the data (if available) of all files that are being submitted. The checksums are sorted in ascending order before adding to the string.
The date is expected to be in GMT. Eg: Thu, 22 Aug 2013 15:20:37 GMT.
The following is a reference implementation in python:
from hmac import HMAC
def generate_signature(secret, method, path, date, md5sums):
md5sums.sort()
ordered = [method, path, date] + md5sums
string = ''
for content in ordered:
if content is None:
raise ValueError('Required header not found')
string += str(content)
return HMAC(
key=bytes(secret),
msg=string.lower(),
digestmod=sha512
).hexdigest().upper()
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file victims-web-2.2.1.tar.gz
.
File metadata
- Download URL: victims-web-2.2.1.tar.gz
- Upload date:
- Size: 49.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5841c274ea7441f5e28fc1c08442dac0bf6087db7951a2cafba5c9b2bbaed748 |
|
MD5 | 02210bb46e26bc39678f228a5c853ab1 |
|
BLAKE2b-256 | f0aa7876d63c8f3e3d69867da431087505c9416dd35c1ce99d2f36ae72c599d5 |
File details
Details for the file victims_web-2.2.1-py2-none-any.whl
.
File metadata
- Download URL: victims_web-2.2.1-py2-none-any.whl
- Upload date:
- Size: 105.6 kB
- Tags: Python 2
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | edfbf9c92ee4049fb4c729439a300db086be977b00ec9f3a9896eef05a135794 |
|
MD5 | ab250f043ed6575cbd77a340519b8d91 |
|
BLAKE2b-256 | 84f7e8a681469b541ce16469c67edc94ee5e7464c73982ce725d90f9f12503da |