Цей код є веб-додатком, створеним за допомогою FastAPI, який надає інтерфейс для перегляду, пошуку та фільтрації даних про вразливості (CVE). Він використовує шаблони HTML для створення сторінок, а також обробляє дані з JSON-файлу cve_data.json
.
FastAPI
,Query
,HTMLResponse
– для створення веб-API.StaticFiles
,Jinja2Templates
– для роботи з веб-інтерфейсом.Request
– для отримання інформації про запит.datetime
,timedelta
– для роботи з датами.json
– для роботи із JSON-форматом.
app = FastAPI()
– створює FastAPI-додаток.app.mount("/static", StaticFiles(directory="static"), name="static")
– підключає папкуstatic
для роботи зі статичними файлами (у нашому випадку, CSS).templates = Jinja2Templates(directory="templates")
– підключає папкуtemplates
для HTML-шаблонів.
DATA_FILE = "cve_data.json"
– вказує файл, який містить список вразливостей у форматі JSON.
-
load_data
:- Завантажує дані з
cve_data.json
. - Повертає вміст файлу у вигляді Python-об'єкта.
- Завантажує дані з
-
filter_date
:- Фільтрує вразливості за датою.
- Враховує тільки ті вразливості, які були додані за останні
days
. max_items
– обмежує кількість результатів.
-
filter_keyword
:- Шукає вразливості, що містять вказане ключове слово в будь-якому полі.
- Повертає не більше
max_items
результатів.
-
filter_known
:- Фільтрує вразливості, позначені як "knownRansomwareCampaignUse: known".
- Повертає не більше
max_items
результатів.
-
Головна сторінка
@app.get("/")
– відображає головну сторінку за допомогою шаблонуindex.html
.
-
Інформаційна сторінка
@app.get("/info")
– відображає інформаційну сторінку через шаблонinfo.html
.
-
Список усіх вразливостей
@app.get("/get/all")
:- Завантажує дані з файлу.
- Фільтрує вразливості, додані за останні 5 днів, обмежуючи результат 40 елементами.
- Відображає результати через шаблон
all.html
.
-
Нові вразливості
@app.get("/get/new")
:- Завантажує дані з файлу.
- Сортує їх за датою додавання.
- Виводить перші 10 нових вразливостей через шаблон
new.html
.
-
Відомі програми-вимагачі
@app.get("/get/known")
:- Завантажує дані з файлу.
- Відбирає вразливості, позначені як "known".
- Відображає через шаблон
known.html
.
-
Пошук вразливостей
@app.get("/get")
:- Отримує параметр
query
через URL-запит. - Якщо
query
вказано, завантажує дані та шукає вразливості за ключовим словом. - Відображає результати через шаблон
search.html
.
- Отримує параметр
- Веб-додаток завантажує дані про вразливості із JSON-файлу.
- На основі запитів користувача фільтрує ці дані за датою, ключовими словами або параметрами.
- Результати відображаються у вигляді HTML-сторінок, створених на основі шаблонів Jinja2.
- Встановіть залежності з файлу
requirements.txt
:pip install -r requirements.txt
- Запустіть сервер:
uvicorn main:app --reload --port 5000
- Відкрийте браузер і перейдіть за адресою:
http://127.0.0.1:5000
/
/info
/get/all
/get/new
/get/know
/get