diff --git a/.dockerignore b/.dockerignore
new file mode 100644
index 000000000..59f41f37a
--- /dev/null
+++ b/.dockerignore
@@ -0,0 +1,4 @@
+.git
+.github
+
+venv
diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
index 8d2ce0882..542c83a17 100644
--- a/.github/workflows/main.yml
+++ b/.github/workflows/main.yml
@@ -7,50 +7,28 @@ jobs:
runs-on: ubuntu-latest
steps:
- - name: Check out repository code
+ - name: Checkout code
uses: actions/checkout@v2
- - name: Set up Python 3.8
+ - name: Set up Python 3.8.11
uses: actions/setup-python@v2
with:
- python-version: 3.8
-
- - name: Restore cache
- uses: actions/cache@v2
- with:
- path: .venv
- key: ${{ runner.os }}-venv-${{ hashFiles('**/requirements*.txt') }}
- restore-keys: |
- ${{ runner.os }}-venv-
+ python-version: 3.8.11
- name: Install dependencies
run: |
- sudo apt install python3-dev postgresql libpq-dev build-essential libxml2-dev libxslt1-dev postgresql ncat
- python -m pip install --upgrade pip
+ sudo apt-get install -y postgresql python3-dev libpq-dev build-essential
+ make dev envfile
- - uses: syphar/restore-virtualenv@v1
- id: cache-virtualenv
- with:
- requirement_files: requirements*.txt # this is optional
+ - name: Validate code format
+ run: make check
- - uses: syphar/restore-pip-download-cache@v1
- if: steps.cache-virtualenv.outputs.cache-hit != 'true'
-
- - run: pip install -r requirements.txt -r requirements-dev.txt
- if: steps.cache-virtualenv.outputs.cache-hit != 'true'
-
- name: Setup database
- env:
- PGPASSWORD: vulnerablecode
run: |
sudo systemctl start postgresql
- sudo -Eu postgres psql -c "CREATE ROLE vulnerablecode WITH PASSWORD '$PGPASSWORD' NOSUPERUSER CREATEDB NOCREATEROLE INHERIT LOGIN;"
- sudo systemctl status postgresql
- createdb --encoding=utf-8 --owner=vulnerablecode --user=vulnerablecode \
- --host=localhost --port=5432 vulnerablecode
+ make postgres
- name: Run tests
- run: python -m pytest -v -m "not webtest"
+ run: make test
env:
- DJANGO_DEV: 1
GH_TOKEN: 1
diff --git a/.github/workflows/upstream_test.yml b/.github/workflows/upstream_test.yml
index d918463e5..d634a8418 100644
--- a/.github/workflows/upstream_test.yml
+++ b/.github/workflows/upstream_test.yml
@@ -48,5 +48,4 @@ jobs:
POSTGRES_HOST: localhost
VC_DB_USER: postgres
POSTGRES_PORT: 5432
- DJANGO_DEV: 1
- GH_TOKEN: 1
\ No newline at end of file
+ GH_TOKEN: 1
diff --git a/.travis.yml b/.travis.yml
deleted file mode 100644
index dce1e0932..000000000
--- a/.travis.yml
+++ /dev/null
@@ -1,30 +0,0 @@
-language: python
-python: 3.8
-
-services:
- - postgresql
-
-install:
- - pip install -e . -r requirements.txt -r requirements-dev.txt
-
-env:
- global:
- - SECRET_KEY="i1bn=oly)w*2yl-5yc&f!vvgt)p)fh3_2$r#spa!*sw36f5ov7"
- - GH_TOKEN="dummygithubtoken"
-
-before_script:
- - psql -c "CREATE DATABASE vulnerablecode;" -U postgres
- - ./manage.py migrate
-
-script:
- - ./manage.py collectstatic
- - python -m pytest -v -m "not webtest"
-
-notifications:
- email: false
- webhooks:
- urls:
- - https://webhooks.gitter.im/e/b119fa557626081e1f36
- on_success: change # options: [always|never|change] default: always
- on_failure: always # options: [always|never|change] default: always
- on_start: never # options: [always|never|change] default: always
diff --git a/Dockerfile b/Dockerfile
index c4308986e..4a70b68df 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,15 +1,11 @@
-FROM python@sha256:e9b7e3b4e9569808066c5901b8a9ad315a9f14ae8d3949ece22ae339fff2cad0
+FROM python:3.8
-# PYTHONUNBUFFERED=1 ensures that the python output is set straight
-# to the terminal without buffering it first
+# Force unbuffered stdout and stderr (i.e. they are flushed to terminal immediately)
ENV PYTHONUNBUFFERED 1
-RUN mkdir /vulnerablecode
-WORKDIR /vulnerablecode
-ADD . /vulnerablecode/
-RUN pip install -r requirements.txt && \
- DJANGO_DEV=1 python manage.py collectstatic
-LABEL "base_image": "pkg:docker/python@sha256%3Ae9b7e3b4e9569808066c5901b8a9ad315a9f14ae8d3949ece22ae339fff2cad0"
-LABEL "dockerfile_url": "https://github.com/nexB/vulnerablecode/blob/develop/Dockerfile"
-LABEL "homepage_url": "https://github.com/nexB/vulnerablecode"
-LABEL "license": "Apache-2.0"
\ No newline at end of file
+RUN mkdir /opt/vulnerablecode && \
+ mkdir -p /var/vulnerablecode/static/
+WORKDIR /opt/vulnerablecode
+COPY . .
+RUN python -m pip install --upgrade pip && \
+ pip install -r requirements.txt
diff --git a/Makefile b/Makefile
new file mode 100644
index 000000000..3fb472bc6
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,117 @@
+# SPDX-License-Identifier: Apache-2.0
+#
+# http://nexb.com and https://github.com/nexB/scancode.io
+# The ScanCode.io software is licensed under the Apache License version 2.0.
+# Data generated with ScanCode.io is provided as-is without warranties.
+# ScanCode is a trademark of nexB Inc.
+#
+# You may not use this software except in compliance with the License.
+# You may obtain a copy of the License at: http://apache.org/licenses/LICENSE-2.0
+# Unless required by applicable law or agreed to in writing, software distributed
+# under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
+# CONDITIONS OF ANY KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations under the License.
+#
+# Data Generated with ScanCode.io is provided on an "AS IS" BASIS, WITHOUT WARRANTIES
+# OR CONDITIONS OF ANY KIND, either express or implied. No content created from
+# ScanCode.io should be considered or used as legal advice. Consult an Attorney
+# for any legal advice.
+#
+# ScanCode.io is a free software code scanning tool from nexB Inc. and others.
+# Visit https://github.com/nexB/scancode.io for support and download.
+# Modified for VulnerableCode use
+
+# Python version can be specified with `$ PYTHON_EXE=python3.x make conf`
+PYTHON_EXE?=python3
+VENV=venv
+ACTIVATE?=. ${VENV}/bin/activate;
+VIRTUALENV_PYZ=etc/thirdparty/virtualenv.pyz
+BLACK_ARGS=-l 100 .
+# Do not depend on Python to generate the SECRET_KEY
+GET_SECRET_KEY=`base64 /dev/urandom | head -c50`
+# Customize with `$ make envfile ENV_FILE=/etc/vulnerablecode/.env`
+ENV_FILE=.env
+# Customize with `$ make postgres VULNERABLECODE_DB_PASSWORD=YOUR_PASSWORD`
+VULNERABLECODE_DB_PASSWORD=vulnerablecode
+
+# Use sudo for postgres, but only on Linux
+UNAME := $(shell uname)
+ifeq ($(UNAME), Linux)
+ SUDO_POSTGRES=sudo -u postgres
+else
+ SUDO_POSTGRES=
+endif
+
+virtualenv:
+ @echo "-> Bootstrap the virtualenv with PYTHON_EXE=${PYTHON_EXE}"
+ @${PYTHON_EXE} ${VIRTUALENV_PYZ} --never-download --no-periodic-update ${VENV}
+
+conf: virtualenv
+ @echo "-> Install dependencies"
+ @${ACTIVATE} pip install -r requirements.txt
+
+dev: conf
+ @echo "-> Configure and install development dependencies"
+ @${ACTIVATE} pip install -r requirements-dev.txt
+
+envfile:
+ @echo "-> Create the .env file and generate a secret key"
+ @if test -f ${ENV_FILE}; then echo ".env file exists already"; exit 1; fi
+ @mkdir -p $(shell dirname ${ENV_FILE}) && touch ${ENV_FILE}
+ @echo SECRET_KEY=\"${GET_SECRET_KEY}\" > ${ENV_FILE}
+
+check:
+ @echo "-> Run black validation"
+ @${ACTIVATE} black --check ${BLACK_ARGS}
+
+black:
+ @echo "-> Apply black code formatter"
+ ${VENV}/bin/black ${BLACK_ARGS}
+
+valid: black
+
+clean:
+ @echo "-> Clean the Python env"
+ rm -rm ${VENV}
+
+migrate:
+ @echo "-> Apply database migrations"
+ ${ACTIVATE} ./manage.py migrate
+
+postgres:
+ @echo "-> Configure PostgreSQL database"
+ @echo "-> Create database user 'vulnerablecode'"
+ ${SUDO_POSTGRES} createuser --no-createrole --no-superuser --login --inherit --createdb vulnerablecode || true
+ ${SUDO_POSTGRES} psql -c "alter user vulnerablecode with encrypted password '${VULNERABLECODE_DB_PASSWORD}';" || true
+ @echo "-> Drop 'vulnerablecode' database"
+ ${SUDO_POSTGRES} dropdb vulnerablecode || true
+ @echo "-> Create 'vulnerablecode' database"
+ ${SUDO_POSTGRES} createdb --encoding=utf-8 --owner=vulnerablecode vulnerablecode
+ @$(MAKE) migrate
+
+sqlite:
+ @echo "-> Configure SQLite database"
+ @echo VULNERABLECODE_DB_ENGINE=\"django.db.backends.sqlite3\" >> ${ENV_FILE}
+ @echo VULNERABLECODE_DB_NAME=\"sqlite3.db\" >> ${ENV_FILE}
+ @$(MAKE) migrate
+
+run:
+ ${ACTIVATE} ./manage.py runserver
+
+test:
+ @echo "-> Run the test suite"
+ ${ACTIVATE} ${PYTHON_EXE} -m pytest -v -m "not webtest"
+
+package: conf
+ @echo "-> Create a VulnerableCode package for offline installation"
+ @echo "-> Fetch dependencies in thirdparty/ for offline installation"
+ rm -rf thirdparty && mkdir thirdparty
+ ${VENV}/bin/pip download -r requirements.txt --no-cache-dir --dest thirdparty
+ @echo "-> Create package in dist/ for offline installation"
+ ${VENV}/bin/python setup.py sdist
+
+install: virtualenv
+ @echo "-> Install and configure the Python env with base dependencies, offline"
+ ${VENV}/bin/pip install --upgrade --no-index --no-cache-dir --find-links=thirdparty -e .
+
+.PHONY: virtualenv conf dev envfile install check valid clean migrate postgres sqlite run test package
diff --git a/README.rst b/README.rst
index a80551a2f..d35028e46 100644
--- a/README.rst
+++ b/README.rst
@@ -90,29 +90,10 @@ First clone the source code::
cd vulnerablecode
-
-
Using Docker Compose
-~~~~~~~~~~~~~~~~~~~~
-
-An easy way to set up VulnerableCode is with docker containers and docker
-compose. For this you need to have the following installed.
-
-- Docker Engine. Find instructions to install it
- `here `__
-- Docker Compose. Find instructions to install it
- `here `__
-
-Use ``sudo docker-compose up`` to start VulnerableCode. Then access
-VulnerableCode at http://localhost:8000/ or at http://127.0.0.1:8000/
-
-**Important**: Don't forget to run ``sudo docker-compose up -d --no-deps --build web`` to sync your instance after every ``git pull``.
-
-
-Use ``sudo docker-compose exec web bash`` to access the VulnerableCode
-container. From here you can access ``manage.py`` and run management commands
-to import data as specified below.
+---------------------
+Please find the docker documentation in `Docker Installation `__
Without Docker Compose
~~~~~~~~~~~~~~~~~~~~~~
@@ -159,11 +140,13 @@ for this purpose::
SECRET_KEY=$(python -c "from django.core.management import utils; print(utils.get_random_secret_key())")
-You will also need to setup the VC_ALLOWED_HOSTS environment variable to match the hostname where the app is deployed::
+You will also need to setup the `ALLOWED_HOSTS` array inside `vulnerablecode/settings.py` according to
+[django specifications](https://docs.djangoproject.com/en/3.2/ref/settings/#allowed-hosts). One example would be:
+.. code-block:: python
- VC_ALLOWED_HOSTS=vulnerablecode.your.domain.example.com
+ ALLOWED_HOSTS = ['vulnerablecode.your.domain.example.com']
-You can specify several host by separating them with a colon `:`
+You can specify several hosts by separating them with a comma (`,`)
Using Nix
~~~~~~~~~
@@ -213,6 +196,8 @@ Use these commands to run code style checks and the test suite::
python -m pytest
+.. _Data import:
+
Data import
-----------
@@ -266,7 +251,6 @@ If you want to run the import periodically, you can use a systemd timer::
[Service]
Type=oneshot
- Environment="DJANGO_DEV=1"
ExecStart=/path/to/venv/bin/python /path/to/vulnerablecode/manage.py import --all
$ cat ~/.config/systemd/user/vulnerablecode.timer
diff --git a/docker-compose.yml b/docker-compose.yml
index c09057371..756a117c0 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -1,22 +1,41 @@
version: '3'
services:
- web:
- environment:
- - DJANGO_DEV=1
- - VC_DB_HOST=db
+ db:
+ image: postgres
+ env_file:
+ - docker.env
+ volumes:
+ - db_data:/var/lib/postgresql/data/
+
+ vulnerablecode:
build: .
- command: bash -c "python manage.py migrate && python manage.py runserver 0.0.0.0:8000"
- container_name: "vulnerablecode"
+ command: /bin/sh -c "
+ ./manage.py migrate &&
+ ./manage.py collectstatic --no-input --clear &&
+ gunicorn vulnerablecode.wsgi:application -u nobody -g nogroup --bind :8000 --timeout 600 --workers 2"
+ env_file:
+ - docker.env
volumes:
- - .:/vulnerablecode
- ports:
- - "8000:8000"
+ - static:/var/vulnerablecode/static/
+ restart: on-failure
depends_on:
- db
- db:
- image: postgres
- environment:
- - POSTGRES_DB=vulnerablecode
- - POSTGRES_USER=vulnerablecode
- - POSTGRES_PASSWORD=vulnerablecode
\ No newline at end of file
+
+ nginx:
+ image: nginx
+ env_file:
+ - docker.env
+ volumes:
+ - static:/var/vulnerablecode/static/
+ - ./etc/nginx/templates/:/etc/nginx/templates/
+ ports:
+ - ${NGINX_PORT:-8000}:80
+ depends_on:
+ - vulnerablecode
+
+
+volumes:
+ static:
+ db_data:
+
diff --git a/docker.env b/docker.env
new file mode 100644
index 000000000..4a06ac2ac
--- /dev/null
+++ b/docker.env
@@ -0,0 +1,8 @@
+POSTGRES_DB=vulnerablecode
+POSTGRES_USER=vulnerablecode
+POSTGRES_PASSWORD=vulnerablecode
+
+DJANGO_SETTINGS_MODULE=vulnerablecode.settings
+VULNERABLECODE_DB_HOST=db
+
+GUNICORN_SERVER=vulnerablecode
diff --git a/etc/nginx/templates/default.conf.template b/etc/nginx/templates/default.conf.template
new file mode 100644
index 000000000..84b153ce2
--- /dev/null
+++ b/etc/nginx/templates/default.conf.template
@@ -0,0 +1,20 @@
+upstream gunicorn_app {
+ server ${GUNICORN_SERVER}:8000;
+}
+
+server {
+ listen 80;
+
+ location / {
+ proxy_pass http://gunicorn_app;
+ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+ proxy_set_header Host $host;
+ proxy_redirect off;
+ client_max_body_size 10G;
+ proxy_read_timeout 600s;
+ }
+
+ location /static/ {
+ alias /var/vulnerablecode/static/;
+ }
+}
diff --git a/etc/nix/flake.nix b/etc/nix/flake.nix
index fb783de06..9f45a5a41 100644
--- a/etc/nix/flake.nix
+++ b/etc/nix/flake.nix
@@ -138,7 +138,6 @@
buildPhase = ''
source ${libSh}
initPostgres $(pwd)
- export DJANGO_DEV=1
${vulnerablecode}/manage.py migrate
'';
diff --git a/etc/nix/test-import-using-nix.sh b/etc/nix/test-import-using-nix.sh
index 641289ecb..37ceadeb4 100755
--- a/etc/nix/test-import-using-nix.sh
+++ b/etc/nix/test-import-using-nix.sh
@@ -10,7 +10,6 @@ THIS_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
DEFAULT_INSTALL_DIR=$VULNERABLECODE_INSTALL_DIR # in the Nix store, see flake.nix
INSTALL_DIR=${INSTALL_DIR:-$DEFAULT_INSTALL_DIR}
ARGS=$(if [ $# -eq 0 ]; then echo "--all"; else echo "$@"; fi)
-export DJANGO_DEV=${DJANGO_DEV:-1}
TEMPDIR=$(mktemp -d -p "$THIS_DIR")
export TEMPDIR
diff --git a/etc/thirdparty/virtualenv.pyz b/etc/thirdparty/virtualenv.pyz
new file mode 100644
index 000000000..3058a0883
Binary files /dev/null and b/etc/thirdparty/virtualenv.pyz differ
diff --git a/requirements.txt b/requirements.txt
index 114703d31..57dc4ad21 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -15,3 +15,5 @@ beautifulsoup4>=4.9.3
python-dateutil>=2.8.1
toml>=0.10.2
lxml>=4.6.3
+gunicorn>=20.1.0
+django-environ==0.4.5
diff --git a/vulnerablecode/settings.py b/vulnerablecode/settings.py
index daf76ed89..6107d6cdf 100644
--- a/vulnerablecode/settings.py
+++ b/vulnerablecode/settings.py
@@ -1,35 +1,21 @@
-"""
-Django settings for app project.
+from pathlib import Path
-Generated by 'django-admin startproject' using Django 1.11.
+import environ
-For more information on this file, see
-https://docs.djangoproject.com/en/1.11/topics/settings/
+PROJECT_DIR = Path(__file__).resolve().parent
+ROOT_DIR = PROJECT_DIR.parent
-For the full list of settings and their values, see
-https://docs.djangoproject.com/en/1.11/ref/settings/
-"""
+# Environment
-import os
+env_file = str(ROOT_DIR.joinpath(".env"))
+if Path(env_file).exists():
+ environ.Env.read_env(env_file)
+env = environ.Env(TRAVIS=(bool, False))
-# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
-BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
+SECRET_KEY = env.str("SECRET_KEY")
-# Quick-start development settings - unsuitable for production
-# See https://docs.djangoproject.com/en/1.11/howto/deployment/checklist/
-
-# SECURITY WARNING: keep the secret key used in production secret!
-DEBUG = False
-SECRET_KEY = os.environ.get(
- "SECRET_KEY", default="this-is-a-dummy-key-and-its-overridden-for-prod-servers"
-)
-
-# SECURITY WARNING: don't run with debug turned on in production!
-
-DEBUG_PROPAGATE_EXCEPTIONS = True
-
-ALLOWED_HOSTS = os.environ.get("VC_ALLOWED_HOSTS", "*").split(":")
+ALLOWED_HOSTS = env.list("ALLOWED_HOSTS", default=[".localhost", "127.0.0.1", "[::1]"])
# Application definition
@@ -62,7 +48,7 @@
TEMPLATES = [
{
"BACKEND": "django.template.backends.django.DjangoTemplates",
- "DIRS": [os.path.join(BASE_DIR, "templates")],
+ "DIRS": [str(PROJECT_DIR.joinpath("templates"))],
"APP_DIRS": True,
"OPTIONS": {
"debug": False,
@@ -81,20 +67,19 @@
# Database
-# https://docs.djangoproject.com/en/1.11/ref/settings/#databases
DATABASES = {
"default": {
- "ENGINE": "django.db.backends.postgresql",
- "NAME": os.environ.get("VC_DB_NAME", "vulnerablecode"),
- "USER": os.environ.get("VC_DB_USER", "vulnerablecode"),
- "PASSWORD": os.environ.get("VC_DB_PASSWORD", "vulnerablecode"),
- "HOST": os.environ.get("VC_DB_HOST", "localhost"),
- "PORT": os.environ.get("VC_DB_PORT", "5432"),
+ "ENGINE": env.str("VULNERABLECODE_DB_ENGINE", "django.db.backends.postgresql"),
+ "NAME": env.str("VULNERABLECODE_DB_NAME", "vulnerablecode"),
+ "USER": env.str("VULNERABLECODE_DB_USER", "vulnerablecode"),
+ "PASSWORD": env.str("VULNERABLECODE_DB_PASSWORD", "vulnerablecode"),
+ "HOST": env.str("VULNERABLECODE_DB_HOST", "localhost"),
+ "PORT": env.str("VULNERABLECODE_DB_PORT", "5432"),
}
}
-if "TRAVIS" in os.environ:
+if env("TRAVIS"):
DATABASES["default"]["USER"] = "postgres"
DATABASES["default"]["PASSWORD"] = ""
@@ -122,7 +107,6 @@
# Internationalization
-# https://docs.djangoproject.com/en/1.11/topics/i18n/
LANGUAGE_CODE = "en-us"
@@ -136,11 +120,15 @@
# Static files (CSS, JavaScript, Images)
-# https://docs.djangoproject.com/en/1.11/howto/static-files/
-STATIC_ROOT = os.path.join(BASE_DIR, "staticfiles")
STATIC_URL = "/static/"
+STATIC_ROOT = "/var/vulnerablecode/static"
+
+STATICFILES_DIRS = [
+ str(PROJECT_DIR.joinpath("static")),
+]
+
# REST API
REST_FRAMEWORK = {
"DEFAULT_FILTER_BACKENDS": ("django_filters.rest_framework.DjangoFilterBackend",),
diff --git a/vulnerabilities/static/css/bulma.css b/vulnerablecode/static/css/bulma.css
similarity index 100%
rename from vulnerabilities/static/css/bulma.css
rename to vulnerablecode/static/css/bulma.css
diff --git a/vulnerabilities/static/css/bulma.css.ABOUT b/vulnerablecode/static/css/bulma.css.ABOUT
similarity index 100%
rename from vulnerabilities/static/css/bulma.css.ABOUT
rename to vulnerablecode/static/css/bulma.css.ABOUT
diff --git a/vulnerabilities/static/css/bulma.css.LICENSE b/vulnerablecode/static/css/bulma.css.LICENSE
similarity index 100%
rename from vulnerabilities/static/css/bulma.css.LICENSE
rename to vulnerablecode/static/css/bulma.css.LICENSE
diff --git a/vulnerabilities/static/css/custom.css b/vulnerablecode/static/css/custom.css
similarity index 100%
rename from vulnerabilities/static/css/custom.css
rename to vulnerablecode/static/css/custom.css
diff --git a/vulnerabilities/static/css/font-awesome.css b/vulnerablecode/static/css/font-awesome.css
similarity index 100%
rename from vulnerabilities/static/css/font-awesome.css
rename to vulnerablecode/static/css/font-awesome.css
diff --git a/vulnerabilities/static/css/font-awesome.css.ABOUT b/vulnerablecode/static/css/font-awesome.css.ABOUT
similarity index 100%
rename from vulnerabilities/static/css/font-awesome.css.ABOUT
rename to vulnerablecode/static/css/font-awesome.css.ABOUT
diff --git a/vulnerabilities/static/css/font-awesome.css.LICENSE b/vulnerablecode/static/css/font-awesome.css.LICENSE
similarity index 100%
rename from vulnerabilities/static/css/font-awesome.css.LICENSE
rename to vulnerablecode/static/css/font-awesome.css.LICENSE
diff --git a/vulnerabilities/static/fonts/FontAwesome.otf b/vulnerablecode/static/fonts/FontAwesome.otf
similarity index 100%
rename from vulnerabilities/static/fonts/FontAwesome.otf
rename to vulnerablecode/static/fonts/FontAwesome.otf
diff --git a/vulnerabilities/static/fonts/FontAwesome.otf.ABOUT b/vulnerablecode/static/fonts/FontAwesome.otf.ABOUT
similarity index 100%
rename from vulnerabilities/static/fonts/FontAwesome.otf.ABOUT
rename to vulnerablecode/static/fonts/FontAwesome.otf.ABOUT
diff --git a/vulnerabilities/static/fonts/fontawesome-webfont.eot b/vulnerablecode/static/fonts/fontawesome-webfont.eot
similarity index 100%
rename from vulnerabilities/static/fonts/fontawesome-webfont.eot
rename to vulnerablecode/static/fonts/fontawesome-webfont.eot
diff --git a/vulnerabilities/static/fonts/fontawesome-webfont.eot.ABOUT b/vulnerablecode/static/fonts/fontawesome-webfont.eot.ABOUT
similarity index 100%
rename from vulnerabilities/static/fonts/fontawesome-webfont.eot.ABOUT
rename to vulnerablecode/static/fonts/fontawesome-webfont.eot.ABOUT
diff --git a/vulnerabilities/static/fonts/fontawesome-webfont.svg b/vulnerablecode/static/fonts/fontawesome-webfont.svg
similarity index 100%
rename from vulnerabilities/static/fonts/fontawesome-webfont.svg
rename to vulnerablecode/static/fonts/fontawesome-webfont.svg
diff --git a/vulnerabilities/static/fonts/fontawesome-webfont.svg.ABOUT b/vulnerablecode/static/fonts/fontawesome-webfont.svg.ABOUT
similarity index 100%
rename from vulnerabilities/static/fonts/fontawesome-webfont.svg.ABOUT
rename to vulnerablecode/static/fonts/fontawesome-webfont.svg.ABOUT
diff --git a/vulnerabilities/static/fonts/fontawesome-webfont.ttf b/vulnerablecode/static/fonts/fontawesome-webfont.ttf
similarity index 100%
rename from vulnerabilities/static/fonts/fontawesome-webfont.ttf
rename to vulnerablecode/static/fonts/fontawesome-webfont.ttf
diff --git a/vulnerabilities/static/fonts/fontawesome-webfont.ttf.ABOUT b/vulnerablecode/static/fonts/fontawesome-webfont.ttf.ABOUT
similarity index 100%
rename from vulnerabilities/static/fonts/fontawesome-webfont.ttf.ABOUT
rename to vulnerablecode/static/fonts/fontawesome-webfont.ttf.ABOUT
diff --git a/vulnerabilities/static/fonts/fontawesome-webfont.woff b/vulnerablecode/static/fonts/fontawesome-webfont.woff
similarity index 100%
rename from vulnerabilities/static/fonts/fontawesome-webfont.woff
rename to vulnerablecode/static/fonts/fontawesome-webfont.woff
diff --git a/vulnerabilities/static/fonts/fontawesome-webfont.woff.ABOUT b/vulnerablecode/static/fonts/fontawesome-webfont.woff.ABOUT
similarity index 100%
rename from vulnerabilities/static/fonts/fontawesome-webfont.woff.ABOUT
rename to vulnerablecode/static/fonts/fontawesome-webfont.woff.ABOUT
diff --git a/vulnerabilities/static/fonts/fontawesome-webfont.woff2 b/vulnerablecode/static/fonts/fontawesome-webfont.woff2
similarity index 100%
rename from vulnerabilities/static/fonts/fontawesome-webfont.woff2
rename to vulnerablecode/static/fonts/fontawesome-webfont.woff2
diff --git a/vulnerabilities/static/fonts/fontawesome-webfont.woff2.ABOUT b/vulnerablecode/static/fonts/fontawesome-webfont.woff2.ABOUT
similarity index 100%
rename from vulnerabilities/static/fonts/fontawesome-webfont.woff2.ABOUT
rename to vulnerablecode/static/fonts/fontawesome-webfont.woff2.ABOUT
diff --git a/vulnerabilities/static/fonts/fontawesome.LICENSE b/vulnerablecode/static/fonts/fontawesome.LICENSE
similarity index 100%
rename from vulnerabilities/static/fonts/fontawesome.LICENSE
rename to vulnerablecode/static/fonts/fontawesome.LICENSE