2022-05-12 14:41:14 +01:00
|
|
|
{% from "icons.html.j2" import icon %}
|
2022-03-10 14:26:22 +00:00
|
|
|
<!doctype html>
|
|
|
|
<html lang="en">
|
|
|
|
<head>
|
|
|
|
{% block head %}
|
|
|
|
<!-- Required meta tags -->
|
|
|
|
<meta charset="utf-8">
|
|
|
|
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
|
|
|
<meta name="generator" content="Bypass Censorship Portal">
|
|
|
|
|
|
|
|
{% block styles %}
|
|
|
|
<!-- Bootstrap CSS -->
|
|
|
|
{{ bootstrap.load_css() }}
|
|
|
|
{% endblock %}
|
|
|
|
|
|
|
|
<title>Bypass Censorship Portal</title>
|
|
|
|
|
|
|
|
<style>
|
|
|
|
.bd-placeholder-img {
|
|
|
|
font-size: 1.125rem;
|
|
|
|
text-anchor: middle;
|
|
|
|
-webkit-user-select: none;
|
|
|
|
-moz-user-select: none;
|
|
|
|
user-select: none;
|
|
|
|
}
|
|
|
|
|
|
|
|
@media (min-width: 768px) {
|
|
|
|
.bd-placeholder-img-lg {
|
|
|
|
font-size: 3.5rem;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
</style>
|
|
|
|
|
|
|
|
<!-- Custom styles for this template -->
|
|
|
|
<link href="/portal/static/portal.css" rel="stylesheet">
|
|
|
|
{% endblock %}
|
|
|
|
</head>
|
|
|
|
<body>
|
|
|
|
|
|
|
|
<header class="navbar navbar-dark sticky-top bg-dark flex-md-nowrap p-0 shadow">
|
|
|
|
<a class="navbar-brand col-md-3 col-lg-2 me-0 px-3" href="#">Bypass Censorship</a>
|
|
|
|
<button class="navbar-toggler position-absolute d-md-none collapsed" type="button" data-bs-toggle="collapse"
|
|
|
|
data-bs-target="#sidebarMenu" aria-controls="sidebarMenu" aria-expanded="false"
|
|
|
|
aria-label="Toggle navigation">
|
|
|
|
<span class="navbar-toggler-icon"></span>
|
|
|
|
</button>
|
|
|
|
<form class="w-100" action="{{ url_for("portal.search") }}">
|
|
|
|
<input class="form-control form-control-dark w-100" type="text" name="query" placeholder="Search"
|
|
|
|
aria-label="Search">
|
|
|
|
</form>
|
|
|
|
<div class="navbar-nav">
|
|
|
|
<div class="nav-item text-nowrap">
|
2022-05-13 09:39:48 +01:00
|
|
|
<a class="nav-link px-3"
|
|
|
|
href="#">{{ config['GLOBAL_NAMESPACE'] }}: {{ request.headers.get('X-User-Name', 'Default User') }}</a>
|
2022-03-10 14:26:22 +00:00
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</header>
|
|
|
|
|
|
|
|
<div class="container-fluid">
|
|
|
|
<div class="row">
|
|
|
|
<nav id="sidebarMenu" class="col-md-3 col-lg-2 d-md-block bg-light sidebar collapse">
|
|
|
|
<div class="position-sticky pt-3">
|
|
|
|
<ul class="nav flex-column">
|
|
|
|
<li class="nav-item">
|
|
|
|
<a class="nav-link{% if section == "home" %} active{% endif %}"
|
|
|
|
href="{{ url_for("portal.portal_home") }}">
|
2022-05-12 14:41:14 +01:00
|
|
|
{{ icon("house-door") }} Home
|
2022-03-10 14:26:22 +00:00
|
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
|
|
<h6 class="sidebar-heading d-flex justify-content-between align-items-center px-3 mt-4 mb-1 text-muted">
|
|
|
|
<span>Configuration</span>
|
|
|
|
</h6>
|
|
|
|
<ul class="nav flex-column">
|
|
|
|
<li class="nav-item">
|
|
|
|
<a class="nav-link{% if section == "group" %} active{% endif %}"
|
2022-05-04 13:17:01 +01:00
|
|
|
href="{{ url_for("portal.group.group_list") }}">
|
2022-05-12 14:41:14 +01:00
|
|
|
{{ icon("collection") }} Groups
|
2022-03-10 14:26:22 +00:00
|
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="nav-item">
|
|
|
|
<a class="nav-link{% if section == "origin" %} active{% endif %}"
|
2022-05-04 13:46:52 +01:00
|
|
|
href="{{ url_for("portal.origin.origin_list") }}">
|
2022-05-12 14:41:14 +01:00
|
|
|
{{ icon("hdd-network") }} Web Origins
|
2022-03-10 14:26:22 +00:00
|
|
|
</a>
|
|
|
|
</li>
|
2022-05-04 15:36:36 +01:00
|
|
|
<li class="nav-item">
|
|
|
|
<a class="nav-link{% if section == "onion" %} active{% endif %}"
|
|
|
|
href="{{ url_for("portal.onion.onion_list") }}">
|
2022-05-12 14:41:14 +01:00
|
|
|
{{ icon("onion") }} Onion Services
|
2022-05-04 15:36:36 +01:00
|
|
|
</a>
|
|
|
|
</li>
|
2022-03-10 14:26:22 +00:00
|
|
|
<li class="nav-item">
|
|
|
|
<a class="nav-link{% if section == "bridgeconf" %} active{% endif %}"
|
2022-05-04 14:03:04 +01:00
|
|
|
href="{{ url_for("portal.bridgeconf.bridgeconf_list") }}">
|
2022-05-12 14:41:14 +01:00
|
|
|
{{ icon("rainbow") }} Tor Bridges
|
2022-03-10 14:26:22 +00:00
|
|
|
</a>
|
|
|
|
</li>
|
2022-05-11 16:12:52 +01:00
|
|
|
<li class="nav-item">
|
|
|
|
<a class="nav-link{% if section == "list" %} active{% endif %}"
|
|
|
|
href="{{ url_for("portal.list.list_list") }}">
|
2022-05-12 14:41:14 +01:00
|
|
|
{{ icon("file-earmark-text") }} Distribution Lists
|
|
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="nav-item">
|
2022-05-12 17:03:26 +01:00
|
|
|
<a class="nav-link{% if section == "blocklist" %} active{% endif %} disabled text-secondary"
|
2022-05-12 14:41:14 +01:00
|
|
|
href="#">
|
|
|
|
{{ icon("file-earmark-excel") }} Block Lists
|
2022-05-11 16:12:52 +01:00
|
|
|
</a>
|
|
|
|
</li>
|
2022-03-10 14:26:22 +00:00
|
|
|
</ul>
|
|
|
|
<h6 class="sidebar-heading d-flex justify-content-between align-items-center px-3 mt-4 mb-1 text-muted">
|
|
|
|
<span>Infrastructure</span>
|
|
|
|
</h6>
|
|
|
|
<ul class="nav flex-column">
|
|
|
|
<li class="nav-item">
|
|
|
|
<a class="nav-link{% if section == "proxy" %} active{% endif %}"
|
2022-05-04 13:31:14 +01:00
|
|
|
href="{{ url_for("portal.proxy.proxy_list") }}">
|
2022-05-12 14:41:14 +01:00
|
|
|
{{ icon("arrow-down-up") }} Web Proxies
|
2022-03-10 14:26:22 +00:00
|
|
|
</a>
|
|
|
|
</li>
|
2022-05-11 16:28:52 +01:00
|
|
|
<li class="nav-item">
|
2022-05-12 17:03:26 +01:00
|
|
|
<a class="nav-link{% if section == "smart_proxy" %} active{% endif %} disabled text-secondary"
|
2022-05-11 16:28:52 +01:00
|
|
|
href="#">
|
2022-05-12 14:41:14 +01:00
|
|
|
{{ icon("globe") }} Smart Proxy Instances
|
2022-05-11 16:28:52 +01:00
|
|
|
</a>
|
|
|
|
</li>
|
2022-05-11 16:12:52 +01:00
|
|
|
<li class="nav-item">
|
2022-05-12 17:03:26 +01:00
|
|
|
<a class="nav-link{% if section == "eotk" %} active{% endif %} disabled text-secondary"
|
2022-05-11 16:12:52 +01:00
|
|
|
href="#">
|
2022-05-12 14:41:14 +01:00
|
|
|
{{ icon("server") }} EOTK Instances
|
2022-05-11 16:12:52 +01:00
|
|
|
</a>
|
|
|
|
</li>
|
2022-03-10 14:26:22 +00:00
|
|
|
<li class="nav-item">
|
|
|
|
<a class="nav-link{% if section == "bridge" %} active{% endif %}"
|
2022-05-04 14:03:04 +01:00
|
|
|
href="{{ url_for("portal.bridge.bridge_list") }}">
|
2022-05-12 14:41:14 +01:00
|
|
|
{{ icon("rainbow") }} Tor Bridges
|
2022-03-10 14:26:22 +00:00
|
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
|
|
<h6 class="sidebar-heading d-flex justify-content-between align-items-center px-3 mt-4 mb-1 text-muted">
|
|
|
|
<span>Monitoring</span>
|
|
|
|
</h6>
|
|
|
|
<ul class="nav flex-column">
|
2022-05-08 17:20:04 +01:00
|
|
|
<li class="nav-item">
|
|
|
|
<a class="nav-link{% if section == "automation" %} active{% endif %}"
|
|
|
|
href="{{ url_for("portal.automation.automation_list") }}">
|
2022-05-12 14:41:14 +01:00
|
|
|
{{ icon("gear") }} Automation
|
2022-05-08 17:20:04 +01:00
|
|
|
</a>
|
|
|
|
</li>
|
2022-03-10 14:26:22 +00:00
|
|
|
<li class="nav-item">
|
|
|
|
<a class="nav-link{% if section == "alarm" %} active{% endif %}"
|
|
|
|
href="{{ url_for("portal.view_alarms") }}">
|
2022-05-12 14:41:14 +01:00
|
|
|
{{ icon("bell") }} Alarms
|
2022-03-10 14:26:22 +00:00
|
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
|
|
</div>
|
|
|
|
</nav>
|
|
|
|
|
|
|
|
<main class="col-md-9 ms-sm-auto col-lg-10 px-md-4">
|
|
|
|
|
|
|
|
{% with messages = get_flashed_messages(with_categories=true) %}
|
|
|
|
{% for category, message in messages %}
|
|
|
|
<div class="alert alert-{{ category }} mt-2">
|
|
|
|
{{ message }}
|
|
|
|
</div>
|
|
|
|
{% endfor %}
|
|
|
|
{% endwith %}
|
|
|
|
|
|
|
|
{% block content %}
|
|
|
|
|
|
|
|
{% endblock %}
|
|
|
|
</main>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
{% block scripts %}
|
|
|
|
<!-- Optional JavaScript -->
|
|
|
|
{{ bootstrap.load_js() }}
|
|
|
|
{% endblock %}
|
|
|
|
|
|
|
|
<script src="https://cdn.jsdelivr.net/npm/feather-icons@4.28.0/dist/feather.min.js"
|
|
|
|
integrity="sha384-uO3SXW5IuS1ZpFPKugNNWqTZRRglnUJK6UAZ/gxOX80nxEkN9NcGZTftn6RzhGWE"
|
|
|
|
crossorigin="anonymous"></script>
|
|
|
|
</body>
|
|
|
|
</html>
|