├── config ├── .gitignore └── 00-default.conf ├── pacman ├── .gitignore └── arch │ └── x86_64 │ └── pacman.conf ├── test-requirements.txt ├── tracker ├── templates │ ├── feed.html │ ├── navbar.html │ ├── error.html │ ├── log │ │ ├── cve_log.html │ │ ├── group_log.html │ │ ├── advisory_log.html │ │ ├── log.html │ │ ├── user_log.html │ │ ├── advisory_log_table.html │ │ ├── cve_log_table.html │ │ └── group_log_table.html │ ├── form │ │ ├── publish.html │ │ ├── profile.html │ │ ├── advisory.html │ │ ├── delete_advisory.html │ │ ├── delete_group.html │ │ ├── cve.html │ │ ├── delete_cve.html │ │ └── group.html │ ├── login.html │ ├── admin │ │ ├── form │ │ │ ├── delete_user.html │ │ │ └── user.html │ │ └── user.html │ ├── advisory.html │ ├── bug.txt │ ├── base.html │ ├── index.html │ ├── advisories.html │ ├── advisory.txt │ ├── group.html │ ├── stats.html │ ├── package.html │ ├── cve.html │ └── _formhelpers.html ├── static │ ├── normalize.css │ ├── favicon.ico │ ├── archlogo.8a05bc7f6cd1.svg │ ├── opensans.woff │ ├── opensans.woff2 │ └── feed.svg ├── form │ ├── __init__.py │ ├── confirm.py │ ├── base.py │ ├── login.py │ ├── cve.py │ ├── advisory.py │ ├── user.py │ ├── admin.py │ ├── group.py │ └── validators.py ├── cli │ ├── __init__.py │ ├── util.py │ ├── shell.py │ ├── update.py │ ├── run.py │ ├── db.py │ └── setup.py ├── model │ ├── __init__.py │ ├── cvegrouppackage.py │ ├── cvegroupentry.py │ ├── advisory.py │ ├── cvegroup.py │ ├── user.py │ ├── package.py │ ├── cve.py │ └── enum.py ├── view │ ├── __init__.py │ ├── error.py │ ├── user.py │ ├── copy.py │ ├── blueprint.py │ ├── index.py │ ├── admin.py │ └── login.py ├── symbol.py ├── util.py ├── pacman.py ├── maintenance.py ├── user.py └── __init__.py ├── migrations ├── README ├── script.py.mako ├── versions │ ├── 2a69a8406f71_add_user_idp_id_attribute.py │ └── d0b4cb352ca1_drop_package_md5sum_column.py ├── alembic.ini └── env.py ├── .isort.cfg ├── trackerctl ├── test ├── __init__.py ├── util.py ├── test_index.py ├── test_package.py ├── data │ └── openid-client.json ├── test_login.py └── test_profile.py ├── .gitignore ├── requirements.txt ├── .gitmodules ├── .editorconfig ├── .github └── workflows │ └── test.yml ├── LICENSE ├── Makefile ├── CONTRIBUTING.md ├── README.md └── config.py /config/.gitignore: -------------------------------------------------------------------------------- 1 | *.local.conf 2 | -------------------------------------------------------------------------------- /pacman/.gitignore: -------------------------------------------------------------------------------- 1 | cache/ 2 | arch/*/db/ 3 | log/ 4 | -------------------------------------------------------------------------------- /test-requirements.txt: -------------------------------------------------------------------------------- 1 | isort 2 | pytest 3 | pytest-cov 4 | -------------------------------------------------------------------------------- /tracker/templates/feed.html: -------------------------------------------------------------------------------- 1 |
{{ content }}
2 |
--------------------------------------------------------------------------------
/migrations/README:
--------------------------------------------------------------------------------
1 | Generic single-database configuration.
2 |
--------------------------------------------------------------------------------
/tracker/static/normalize.css:
--------------------------------------------------------------------------------
1 | ../../.external/normalize.css/normalize.css
--------------------------------------------------------------------------------
/.isort.cfg:
--------------------------------------------------------------------------------
1 | [settings]
2 | force_single_line = 1
3 | skip = migrations/env.py
4 |
--------------------------------------------------------------------------------
/tracker/static/favicon.ico:
--------------------------------------------------------------------------------
1 | ../../.external/archlinux-common-style/img/favicon.ico
--------------------------------------------------------------------------------
/tracker/templates/navbar.html:
--------------------------------------------------------------------------------
1 | ../../.external/archlinux-common-style/html/navbar.html
--------------------------------------------------------------------------------
/tracker/static/archlogo.8a05bc7f6cd1.svg:
--------------------------------------------------------------------------------
1 | ../../.external/archlinux-common-style/img/archlogo.8a05bc7f6cd1.svg
--------------------------------------------------------------------------------
/tracker/form/__init__.py:
--------------------------------------------------------------------------------
1 | from .cve import CVEForm
2 | from .group import GroupForm
3 | from .login import LoginForm
4 |
--------------------------------------------------------------------------------
/tracker/static/opensans.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/archlinux/arch-security-tracker/HEAD/tracker/static/opensans.woff
--------------------------------------------------------------------------------
/trackerctl:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env python
2 | from tracker.cli import cli
3 |
4 | if __name__ == '__main__':
5 | cli.main()
6 |
--------------------------------------------------------------------------------
/tracker/static/opensans.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/archlinux/arch-security-tracker/HEAD/tracker/static/opensans.woff2
--------------------------------------------------------------------------------
/test/__init__.py:
--------------------------------------------------------------------------------
1 | from os import environ
2 |
3 | # ignore local configs during test run
4 | environ['TRACKER_CONFIG_LOCAL'] = 'false'
5 |
--------------------------------------------------------------------------------
/tracker/cli/__init__.py:
--------------------------------------------------------------------------------
1 | from .db import *
2 | from .run import *
3 | from .setup import *
4 | from .shell import *
5 | from .update import *
6 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | __pycache__/
2 | tracker.db
3 | tracker.db*
4 | .cache
5 | .virtualenv
6 | .coverage
7 | .pytest_cache/
8 | test/coverage
9 | Makefile.local
10 |
--------------------------------------------------------------------------------
/tracker/cli/util.py:
--------------------------------------------------------------------------------
1 | from flask.cli import FlaskGroup
2 |
3 | from tracker import create_app
4 |
5 | cli = FlaskGroup(add_default_commands=True, create_app=create_app)
6 |
--------------------------------------------------------------------------------
/tracker/form/confirm.py:
--------------------------------------------------------------------------------
1 | from wtforms import SubmitField
2 |
3 | from .base import BaseForm
4 |
5 |
6 | class ConfirmForm(BaseForm):
7 | confirm = SubmitField(u'confirm')
8 | abort = SubmitField(u'abort')
9 |
--------------------------------------------------------------------------------
/tracker/templates/error.html:
--------------------------------------------------------------------------------
1 | {%- extends "base.html" -%}
2 | {% block content %}
3 | {{ smiley }}
5 |{{ text }}
6 | | {{ log_transaction_header(advisory, can_watch_user_log) }} | 6 ||
|---|---|
| Workaround | 12 |13 | {{- colorize_diff(advisory.previous.workaround, diff_content(advisory, advisory.workaround)) }} 14 | | 15 |
| Impact | 20 |21 | {{- colorize_diff(advisory.previous.impact, diff_content(advisory, advisory.impact)) }} 22 | | 23 |
| [{{ advisory.id }}] {{package.pkgname}}: {{advisory.advisory_type}} | 25 |
|---|
|
30 | {{ raw_asa|safe|urlize }}
31 | |
32 |
| User | 8 |Role | 10 | {%- if current_user.role.is_administrator %} 11 |Active | 12 | {%- if not SSO_ENABLED %} 13 |Action | 14 | {%- endif %} 15 | {%- endif %} 16 ||
|---|---|---|---|---|
| {{ user.name }} | 22 |{{ user.email }} | 23 |{{ user.role }} | 24 | {%- if current_user.role.is_administrator %} 25 |26 | | 27 | {%- if not SSO_ENABLED %} 28 | edit 29 | delete 30 | {%- endif %} 31 | | 32 | {%- endif %} 33 |