mirror of
https://github.com/yogeshojha/rengine.git
synced 2026-09-18 15:57:44 +02:00
256 lines
10 KiB
HTML
256 lines
10 KiB
HTML
{% load static %}
|
|
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="utf-8" />
|
|
<title>{% block title %} {% endblock title %}</title>
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
|
<link href="{% static 'bootstrap/bootstrap.min.css' %}" rel="stylesheet" type="text/css" id="bootstrap-stylesheet" />
|
|
<link href="{% static 'assets/css/app.min.css' %}" rel="stylesheet" type="text/css" id="main-stylesheet" />
|
|
<link href="{% static 'bootstrap/bootstrap-dark.min.css' %}" rel="stylesheet" type="text/css" id="bootstrap-dark-stylesheet" />
|
|
<link href="{% static 'assets/css/app-dark.min.css' %}" rel="stylesheet" type="text/css" id="main-dark-stylesheet" />
|
|
<link href="{% static 'assets/css/icons.min.css' %}" rel="stylesheet" type="text/css" />
|
|
<link href="{% static 'plugins/snackbar/snackbar.min.css' %}" rel="stylesheet" type="text/css" />
|
|
<link href="{% static 'plugins/sweetalert2/sweetalert2.min.css' %}" rel="stylesheet" type="text/css" />
|
|
<link href="{% static 'plugins/switches/switches.min.css' %}" rel="stylesheet" type="text/css" />
|
|
<link href="{% static 'custom/custom.css' %}" rel="stylesheet" type="text/css" />
|
|
<link rel="stylesheet" type="text/css" href="{% static 'plugins/datatable/datatables.css' %}">
|
|
<link rel="stylesheet" type="text/css" href="{% static 'plugins/datatable/global.css' %}">
|
|
<link rel="stylesheet" type="text/css" href="{% static 'plugins/datatable/custom.css' %}">
|
|
<style media="screen">
|
|
@font-face {
|
|
font-family: "Cerebri Sans,sans-serif";
|
|
src: url("{% static 'fonts/cerebrisans-light.eot' %}");
|
|
src: local("Cerebri-sans Light"), url("{% static 'fonts/cerebrisans-light.woff' %}") format("woff");
|
|
font-weight: 300; }
|
|
|
|
@font-face {
|
|
font-family: "Cerebri Sans,sans-serif";
|
|
src: url("{% static 'fonts/cerebrisans-regular.eot' %}");
|
|
src: local("Cerebri-sans Regular"), url("{% static 'fonts/cerebrisans-regular.woff' %}") format("woff");
|
|
font-weight: 400; }
|
|
|
|
@font-face {
|
|
font-family: "Cerebri Sans,sans-serif";
|
|
src: url("{% static 'fonts/cerebrisans-medium.eot' %}");
|
|
src: local("Cerebri-sans Medium"), url("{% static 'fonts/cerebrisans-medium.woff' %}") format("woff");
|
|
font-weight: 500; }
|
|
|
|
@font-face {
|
|
font-family: "Cerebri Sans,sans-serif";
|
|
src: url("{% static 'fonts/cerebrisans-semibold.eot' %}");
|
|
src: local("Cerebri-sans Semibold"), url("{% static 'fonts/cerebrisans-semibold.woff' %}") format("woff");
|
|
font-weight: 600; }
|
|
|
|
@font-face {
|
|
font-family: "Cerebri Sans,sans-serif";
|
|
src: url("{% static 'fonts/cerebrisans-bold.eot' %}");
|
|
src: local("Cerebri-sans Bold"), url("{% static 'fonts/cerebrisans-bold.woff' %}") format("woff");
|
|
font-weight: 700; }
|
|
</style>
|
|
<!-- load any page wise jquery or stylesheet -->
|
|
{% block custom_js_css_link %}
|
|
{% endblock custom_js_css_link %}
|
|
</head>
|
|
|
|
<body class="loading" data-layout-mode="horizontal">
|
|
<!-- Topbar begins -->
|
|
{% include 'base/_items/top_bar.html' %}
|
|
{# topbar ends #}
|
|
{# top nav begins #}
|
|
{% include 'base/_items/top_nav.html' %}
|
|
{# top nav ends #}
|
|
<div class="content-page">
|
|
<div class="content">
|
|
<div class="container-fluid">
|
|
<div class="row">
|
|
<div class="col-12">
|
|
<div class="page-title-box">
|
|
<div class="page-title-right">
|
|
<ol class="breadcrumb m-0">
|
|
{% block breadcrumb_title %}
|
|
{% endblock breadcrumb_title %}
|
|
</ol>
|
|
</div>
|
|
<h4 class="page-title">{% block page_title %}{% endblock page_title %}</h4>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
{% block main_content %}
|
|
{% endblock main_content %}
|
|
</div>
|
|
<div id="additional-content"></div>
|
|
</div>
|
|
{% include 'base/_items/modal.html' %}
|
|
{% include 'base/_items/xl_scrollable_modal.html' %}
|
|
</div>
|
|
{% include 'base/_items/right_bar.html' %}
|
|
<script src="{% static 'assets/js/vendor.min.js' %}"></script>
|
|
<script src="https://unpkg.com/@popperjs/core@2"></script>
|
|
<script src="https://unpkg.com/tippy.js@6"></script>
|
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/dompurify/2.3.8/purify.min.js"></script>
|
|
<script src="{% static 'assets/js/app.min.js' %}"></script>
|
|
<script src="{% static 'custom/custom.js' %}"></script>
|
|
<script src="{% static 'custom/toolbox.js' %}"></script>
|
|
<script src="{% static 'custom/right_sidebar.js' %}"></script>
|
|
<script src="{% static 'plugins/snackbar/snackbar.min.js' %}"></script>
|
|
<script src="{% static 'plugins/sweetalert2/sweetalert2.all.min.js' %}"></script>
|
|
<script src="{% static 'plugins/datatable/datatables.js' %}"></script>
|
|
<script type="text/javascript">
|
|
$(document).ready(function(){
|
|
render_search_history();
|
|
|
|
// rengine will also check everyday if update exists for rengine
|
|
checkDailyUpdate();
|
|
|
|
getScanStatusSidebar();
|
|
// hide badge if update does not exists
|
|
if (window.localStorage.getItem('update_available') && window.localStorage.getItem('update_available') === 'true') {
|
|
$('.rengine_update_available').show();
|
|
}
|
|
else{
|
|
$('.rengine_update_available').hide();
|
|
}
|
|
// tippy for notification or scan acitivity
|
|
tippy('.top-activity-counter', {
|
|
content: 'Scan Acitivity',
|
|
});
|
|
if (localStorage.getItem('rengine-theme') == "dark") {
|
|
$('#dark-mode-check').prop("checked", true).change();
|
|
}
|
|
else{
|
|
$('#dark-mode-check').prop("checked", false).change();
|
|
}
|
|
});
|
|
|
|
function render_search_history(){
|
|
fetch('/api/search/history/')
|
|
.then(response => response.json())
|
|
.then(function (response) {
|
|
if (response.status) {
|
|
for (var history in response.results) {
|
|
$('#search-history-items').append(`
|
|
<a href="/search/?query=${response.results[history].query}" class="dropdown-item notify-item">
|
|
<span>${response.results[history].query}</span>
|
|
</a>
|
|
`);
|
|
}
|
|
}
|
|
else{
|
|
$('#search-history-items').append(`
|
|
<span class="ms-2">No recent searches.</span>
|
|
`);
|
|
}
|
|
});
|
|
}
|
|
|
|
function check_rengine_update(){
|
|
if (window.localStorage.getItem('update_available') && window.localStorage.getItem('update_available') === 'true') {
|
|
update_available();
|
|
}
|
|
else{
|
|
Swal.fire({
|
|
title: 'Checking reNgine latest version...',
|
|
allowOutsideClick: false
|
|
});
|
|
swal.showLoading();
|
|
fetch('/api/rengine/update/')
|
|
.then(response => response.json())
|
|
.then(function (response) {
|
|
console.log(response);
|
|
swal.close();
|
|
if (response['description'] == 'RateLimited') {
|
|
Swal.fire({
|
|
title: 'Oops!',
|
|
text: 'Github rate limit exceeded, please try again in an hour!',
|
|
icon: 'error'
|
|
});
|
|
window.localStorage.setItem('update_available', false);
|
|
$('.rengine_update_available').hide();
|
|
}
|
|
else if (response['update_available']){
|
|
window.localStorage.setItem('update_available', true);
|
|
$('.rengine_update_available').show();
|
|
update_available(response['latest_version'], response['changelog']);
|
|
}
|
|
else{
|
|
window.localStorage.setItem('update_available', false);
|
|
$('.rengine_update_available').hide();
|
|
Swal.fire({
|
|
title: 'Update not available',
|
|
text: 'You are running the latest version of reNgine!',
|
|
icon: 'info'
|
|
});
|
|
}
|
|
});
|
|
}
|
|
}
|
|
|
|
function update_available(latest_version_number, changelog){
|
|
Swal.fire({
|
|
title: 'Update Available!',
|
|
html: `<h5>reNgine's new update ${latest_version_number} is available, please follow the update instructions.</h5><pre>${changelog}</pre>`,
|
|
icon: 'info',
|
|
confirmButtonText: 'Update Instructions',
|
|
showCancelButton: true,
|
|
cancelButtonText: 'Dismiss',
|
|
width: '60%',
|
|
}).then((result) => {
|
|
if (result.isConfirmed) {
|
|
window.open("https://www.rengine.wiki/update","_blank")
|
|
}
|
|
});
|
|
}
|
|
|
|
// Source : https://stackoverflow.com/a/32428268
|
|
function checkDailyUpdate(){
|
|
if( !hasOneDayPassed() ) return false;
|
|
console.log('Checking Daily Update...')
|
|
fetch('/api/rengine/update/')
|
|
.then(response => response.json())
|
|
.then(function (response) {
|
|
if (response['update_available']){
|
|
window.localStorage.setItem('update_available', true);
|
|
$('.rengine_update_available').show();
|
|
update_available(response['latest_version'], response['changelog'])
|
|
}
|
|
else{
|
|
window.localStorage.setItem('update_available', false);
|
|
$('.rengine_update_available').hide();
|
|
}
|
|
});
|
|
}
|
|
|
|
// Source: https://stackoverflow.com/a/32428268
|
|
function hasOneDayPassed(){
|
|
var date = new Date().toLocaleDateString();
|
|
if(window.localStorage.getItem('last_update_checked') == date){
|
|
return false;
|
|
}
|
|
window.localStorage.setItem('last_update_checked', date);
|
|
return true;
|
|
}
|
|
</script>
|
|
{% if messages %}
|
|
{% for message in messages %}
|
|
<script type="text/javascript">
|
|
Snackbar.show({
|
|
text: '{{ message }}',
|
|
pos: 'top-right',
|
|
{% if message.tags == 'error'%}
|
|
actionTextColor: '#fff',
|
|
backgroundColor: '#e7515a',
|
|
{% else %}
|
|
actionTextColor: '#42A5F5',
|
|
{% endif %}
|
|
duration: 2500
|
|
});
|
|
</script>
|
|
{% endfor %}
|
|
{% endif %}
|
|
{% block page_level_script %}
|
|
{% endblock page_level_script%}
|
|
</body>
|
|
</html>
|