Update public source
This commit is contained in:
@@ -0,0 +1,95 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="ru">
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
|
||||
<meta
|
||||
name="viewport"
|
||||
content="width=device-width, initial-scale=1.0"
|
||||
>
|
||||
|
||||
<title>
|
||||
{% block title %}
|
||||
CrackLab
|
||||
{% endblock %}
|
||||
</title>
|
||||
|
||||
<link
|
||||
rel="stylesheet"
|
||||
href="{{ url_for('cracklab.static', filename='cracklab.css') }}"
|
||||
>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<header class="cracklab-header">
|
||||
|
||||
<div class="cracklab-header-inner">
|
||||
|
||||
<a
|
||||
class="cracklab-brand"
|
||||
href="{{ url_for('cracklab.dashboard') }}"
|
||||
>
|
||||
<span class="cracklab-brand-title">
|
||||
WiFi GPS Mapper
|
||||
</span>
|
||||
|
||||
<span class="cracklab-brand-subtitle">
|
||||
CrackLab
|
||||
</span>
|
||||
</a>
|
||||
|
||||
<nav class="cracklab-nav">
|
||||
|
||||
<a
|
||||
class="{% if active_page == 'dashboard' %}active{% endif %}"
|
||||
href="{{ url_for('cracklab.dashboard') }}"
|
||||
>
|
||||
Dashboard
|
||||
</a>
|
||||
|
||||
<a
|
||||
class="{% if active_page == 'jobs' %}active{% endif %}"
|
||||
href="{{ url_for('cracklab.jobs_page') }}"
|
||||
>
|
||||
Jobs
|
||||
</a>
|
||||
|
||||
<a
|
||||
class="{% if active_page == 'methods' %}active{% endif %}"
|
||||
href="{{ url_for('cracklab.methods_page') }}"
|
||||
>
|
||||
Methods
|
||||
</a>
|
||||
|
||||
<a
|
||||
class="{% if active_page == 'clients' %}active{% endif %}"
|
||||
href="{{ url_for('cracklab.clients_page') }}"
|
||||
>
|
||||
Clients
|
||||
</a>
|
||||
|
||||
<a
|
||||
class="{% if active_page == 'results' %}active{% endif %}"
|
||||
href="{{ url_for('cracklab.results_page') }}"
|
||||
>
|
||||
Results
|
||||
</a>
|
||||
|
||||
</nav>
|
||||
|
||||
</div>
|
||||
|
||||
</header>
|
||||
|
||||
<main class="cracklab-content">
|
||||
|
||||
{% block content %}
|
||||
{% endblock %}
|
||||
|
||||
</main>
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@@ -0,0 +1,215 @@
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% block title %}
|
||||
CrackLab — Dashboard
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
<h1 class="page-title">
|
||||
CrackLab
|
||||
</h1>
|
||||
|
||||
<div class="page-description">
|
||||
Job and cracking coverage management.
|
||||
</div>
|
||||
|
||||
|
||||
<div class="stats-grid">
|
||||
|
||||
<div class="stat-card">
|
||||
<div class="stat-value">
|
||||
{{ methods_count }}
|
||||
</div>
|
||||
|
||||
<div class="stat-title">
|
||||
Methods
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="stat-card">
|
||||
<div class="stat-value">
|
||||
{{ jobs_count }}
|
||||
</div>
|
||||
|
||||
<div class="stat-title">
|
||||
Jobs
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="stat-card">
|
||||
<div class="stat-value">
|
||||
{{ active_jobs_count }}
|
||||
</div>
|
||||
|
||||
<div class="stat-title">
|
||||
Active Jobs
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="stat-card">
|
||||
<div class="stat-value">
|
||||
{{ clients_count }}
|
||||
</div>
|
||||
|
||||
<div class="stat-title">
|
||||
Clients
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="stat-card">
|
||||
<div class="stat-value">
|
||||
{{ results_count }}
|
||||
</div>
|
||||
|
||||
<div class="stat-title">
|
||||
Results
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div class="dashboard-grid">
|
||||
|
||||
<section class="card">
|
||||
|
||||
<h2>
|
||||
Job Status
|
||||
</h2>
|
||||
|
||||
<div class="status-list">
|
||||
|
||||
{% for status in (
|
||||
"CREATED",
|
||||
"QUEUED",
|
||||
"RUNNING",
|
||||
"PARTIAL",
|
||||
"COMPLETED",
|
||||
"FAILED",
|
||||
"CANCELLED"
|
||||
) %}
|
||||
|
||||
<div class="status-row">
|
||||
|
||||
<span>
|
||||
<span class="badge badge-{{ status|lower }}">
|
||||
{{ status }}
|
||||
</span>
|
||||
</span>
|
||||
|
||||
<strong>
|
||||
{{ job_statuses.get(status, 0) }}
|
||||
</strong>
|
||||
|
||||
</div>
|
||||
|
||||
{% endfor %}
|
||||
|
||||
</div>
|
||||
|
||||
</section>
|
||||
|
||||
|
||||
<section class="card">
|
||||
|
||||
<h2>
|
||||
Recent Jobs
|
||||
</h2>
|
||||
|
||||
{% if recent_jobs %}
|
||||
|
||||
<div class="table-container">
|
||||
|
||||
<table>
|
||||
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Job</th>
|
||||
<th>Method</th>
|
||||
<th>Status</th>
|
||||
<th>Hashes</th>
|
||||
<th>Client</th>
|
||||
</tr>
|
||||
</thead>
|
||||
|
||||
<tbody>
|
||||
|
||||
{% for job in recent_jobs %}
|
||||
|
||||
<tr>
|
||||
|
||||
<td>
|
||||
<a
|
||||
href="{{ url_for(
|
||||
'cracklab.jobs_page'
|
||||
) }}"
|
||||
>
|
||||
{{ job["id"] }}
|
||||
</a>
|
||||
</td>
|
||||
|
||||
<td>
|
||||
{{ method_names.get(
|
||||
job["method_id"],
|
||||
job["method_id"]
|
||||
) }}
|
||||
<span class="muted">
|
||||
v{{ job["method_version"] }}
|
||||
</span>
|
||||
</td>
|
||||
|
||||
<td>
|
||||
<span
|
||||
class="badge badge-{{
|
||||
job["status"]|lower
|
||||
}}"
|
||||
>
|
||||
{{ job["status"] }}
|
||||
</span>
|
||||
</td>
|
||||
|
||||
<td>
|
||||
{{ job["hash_count"] }}
|
||||
</td>
|
||||
|
||||
<td>
|
||||
{% if job["client_id"] %}
|
||||
{{ client_names.get(
|
||||
job["client_id"],
|
||||
job["client_id"]
|
||||
) }}
|
||||
{% else %}
|
||||
<span class="muted">
|
||||
—
|
||||
</span>
|
||||
{% endif %}
|
||||
</td>
|
||||
|
||||
</tr>
|
||||
|
||||
{% endfor %}
|
||||
|
||||
</tbody>
|
||||
|
||||
</table>
|
||||
|
||||
</div>
|
||||
|
||||
{% else %}
|
||||
|
||||
<div class="empty-state">
|
||||
No jobs have been issued yet.
|
||||
</div>
|
||||
|
||||
{% endif %}
|
||||
|
||||
</section>
|
||||
|
||||
</div>
|
||||
|
||||
{% endblock %}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,128 @@
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% block title %}
|
||||
CrackLab — Methods
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
<div class="methods-page">
|
||||
|
||||
<div class="methods-page-header">
|
||||
|
||||
<div>
|
||||
<h1 class="page-title">
|
||||
Methods
|
||||
</h1>
|
||||
|
||||
<div class="page-description">
|
||||
Рабочие методы перебора, сохранённые в базе данных.
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{% if methods %}
|
||||
<a
|
||||
class="methods-button"
|
||||
href="{{ url_for('cracklab.method_create_page') }}"
|
||||
>
|
||||
+ Создать метод
|
||||
</a>
|
||||
{% endif %}
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
{% if methods %}
|
||||
|
||||
<section class="methods-list">
|
||||
|
||||
{% for method in methods %}
|
||||
|
||||
<article class="method-card">
|
||||
|
||||
<div class="method-card-main">
|
||||
|
||||
<div class="method-card-title">
|
||||
{{ method.name }}
|
||||
</div>
|
||||
|
||||
{% if method.description %}
|
||||
<div class="method-card-description">
|
||||
{{ method.description }}
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
<div class="method-card-id">
|
||||
{{ method.id }}
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div class="method-card-meta">
|
||||
|
||||
<div class="method-meta-item">
|
||||
<span>Version</span>
|
||||
|
||||
<strong>
|
||||
{% if method.version %}
|
||||
{{ method.version }}
|
||||
{% else %}
|
||||
—
|
||||
{% endif %}
|
||||
</strong>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="method-meta-item">
|
||||
<span>Steps</span>
|
||||
|
||||
<strong>
|
||||
{{ method.steps_count }}
|
||||
</strong>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="method-meta-item">
|
||||
<span>Created</span>
|
||||
|
||||
<strong>
|
||||
{{ method.created_at }}
|
||||
</strong>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</article>
|
||||
|
||||
{% endfor %}
|
||||
|
||||
</section>
|
||||
|
||||
{% else %}
|
||||
|
||||
<section class="method-empty">
|
||||
|
||||
<div class="method-empty-title">
|
||||
Методов пока нет
|
||||
</div>
|
||||
|
||||
<div class="method-empty-description">
|
||||
Создайте первый метод, чтобы начать
|
||||
выдавать задания CrackLab.
|
||||
</div>
|
||||
|
||||
<a
|
||||
class="methods-button"
|
||||
href="{{ url_for('cracklab.method_create_page') }}"
|
||||
>
|
||||
+ Создать метод
|
||||
</a>
|
||||
|
||||
</section>
|
||||
|
||||
{% endif %}
|
||||
|
||||
</div>
|
||||
|
||||
{% endblock %}
|
||||
@@ -0,0 +1,25 @@
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% block title %}
|
||||
CrackLab — {{ title }}
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
<h1 class="page-title">
|
||||
{{ title }}
|
||||
</h1>
|
||||
|
||||
<div class="page-description">
|
||||
{{ description }}
|
||||
</div>
|
||||
|
||||
<section class="card">
|
||||
|
||||
<div class="empty-state">
|
||||
This section is under development.
|
||||
</div>
|
||||
|
||||
</section>
|
||||
|
||||
{% endblock %}
|
||||
Reference in New Issue
Block a user