mirror of
https://github.com/cwinfo/powerdns-admin.git
synced 2025-06-14 12:06:06 +00:00
Initial commit
This commit is contained in:
59
app/templates/400.html
Normal file
59
app/templates/400.html
Normal file
@ -0,0 +1,59 @@
|
||||
{% extends "base.html" %}
|
||||
{% block head %}
|
||||
{{ super() }}
|
||||
<!-- BEGIN PAGE LEVEL PLUGIN STYLES -->
|
||||
<link href="{{ url_for('static', filename='admin/pages/css/error.css') }}" rel="stylesheet" type="text/css"/>
|
||||
<!-- END PAGE LEVEL PLUGIN STYLES -->
|
||||
|
||||
<!-- BEGIN THEME STYLES -->
|
||||
<!-- DOC: To use 'rounded corners' style just load 'components-rounded.css' stylesheet instead of 'components.css' in the below style tag -->
|
||||
<link href="{{ url_for('static', filename='global/css/components-md.css') }}" id="style_components" rel="stylesheet" type="text/css"/>
|
||||
<link href="{{ url_for('static', filename='global/css/plugins-md.css') }}" rel="stylesheet" type="text/css"/>
|
||||
<link href="{{ url_for('static', filename='admin/layout2/css/layout.css') }}" rel="stylesheet" type="text/css"/>
|
||||
<link href="{{ url_for('static', filename='admin/layout2/css/themes/grey.css') }}" rel="stylesheet" type="text/css" id="style_color"/>
|
||||
<link href="{{ url_for('static', filename='admin/layout2/css/custom.css') }}" rel="stylesheet" type="text/css"/>
|
||||
<!-- END THEME STYLES -->
|
||||
{% endblock %}
|
||||
{% block title %}<title>DNS Control Panel - 400 Error</title>{% endblock %}
|
||||
|
||||
{% block dashboard_stat %}
|
||||
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<div class="clearfix">
|
||||
</div>
|
||||
|
||||
<!-- BEGIN PAGE CONTENT-->
|
||||
<div class="row">
|
||||
<div class="col-md-12 page-500">
|
||||
<div class=" number">
|
||||
400
|
||||
</div>
|
||||
<div class=" details">
|
||||
<h3>Bad Request</h3>
|
||||
<p>
|
||||
{% if msg %}
|
||||
<p>Message: {{ msg }}<p>
|
||||
{% endif %}
|
||||
<a href="{{ url_for('index')}}"><strong>Click here</strong></a> to go home<br/><br/>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- END PAGE CONTENT-->
|
||||
{% endblock %}
|
||||
|
||||
{% block scripts %}
|
||||
{{ super() }}
|
||||
<!-- BEGIN PAGE LEVEL SCRIPTS -->
|
||||
<script src="{{ url_for('static', filename='global/scripts/metronic.js') }}" type="text/javascript"></script>
|
||||
<script src="{{ url_for('static', filename='admin/layout2/scripts/layout.js') }}" type="text/javascript"></script>
|
||||
<script>
|
||||
jQuery(document).ready(function() {
|
||||
Metronic.init(); // init metronic core componets
|
||||
Layout.init(); // init layout
|
||||
});
|
||||
</script>
|
||||
<!-- END JAVASCRIPTS -->
|
||||
{% endblock %}
|
56
app/templates/401.html
Normal file
56
app/templates/401.html
Normal file
@ -0,0 +1,56 @@
|
||||
{% extends "base.html" %}
|
||||
{% block head %}
|
||||
{{ super() }}
|
||||
<!-- BEGIN PAGE LEVEL PLUGIN STYLES -->
|
||||
<link href="{{ url_for('static', filename='admin/pages/css/error.css') }}" rel="stylesheet" type="text/css"/>
|
||||
<!-- END PAGE LEVEL PLUGIN STYLES -->
|
||||
|
||||
<!-- BEGIN THEME STYLES -->
|
||||
<!-- DOC: To use 'rounded corners' style just load 'components-rounded.css' stylesheet instead of 'components.css' in the below style tag -->
|
||||
<link href="{{ url_for('static', filename='global/css/components-md.css') }}" id="style_components" rel="stylesheet" type="text/css"/>
|
||||
<link href="{{ url_for('static', filename='global/css/plugins-md.css') }}" rel="stylesheet" type="text/css"/>
|
||||
<link href="{{ url_for('static', filename='admin/layout2/css/layout.css') }}" rel="stylesheet" type="text/css"/>
|
||||
<link href="{{ url_for('static', filename='admin/layout2/css/themes/grey.css') }}" rel="stylesheet" type="text/css" id="style_color"/>
|
||||
<link href="{{ url_for('static', filename='admin/layout2/css/custom.css') }}" rel="stylesheet" type="text/css"/>
|
||||
<!-- END THEME STYLES -->
|
||||
{% endblock %}
|
||||
{% block title %}<title>DNS Control Panel - 401 Error</title>{% endblock %}
|
||||
|
||||
{% block dashboard_stat %}
|
||||
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<div class="clearfix">
|
||||
</div>
|
||||
|
||||
<!-- BEGIN PAGE CONTENT-->
|
||||
<div class="row">
|
||||
<div class="col-md-12 page-500">
|
||||
<div class=" number">
|
||||
401
|
||||
</div>
|
||||
<div class=" details">
|
||||
<h3>You don't have permission to access this page.</h3>
|
||||
<p>
|
||||
<a href="{{ url_for('index')}}"><strong>Click here</strong></a> to go home<br/><br/>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- END PAGE CONTENT-->
|
||||
{% endblock %}
|
||||
|
||||
{% block scripts %}
|
||||
{{ super() }}
|
||||
<!-- BEGIN PAGE LEVEL SCRIPTS -->
|
||||
<script src="{{ url_for('static', filename='global/scripts/metronic.js') }}" type="text/javascript"></script>
|
||||
<script src="{{ url_for('static', filename='admin/layout2/scripts/layout.js') }}" type="text/javascript"></script>
|
||||
<script>
|
||||
jQuery(document).ready(function() {
|
||||
Metronic.init(); // init metronic core componets
|
||||
Layout.init(); // init layout
|
||||
});
|
||||
</script>
|
||||
<!-- END JAVASCRIPTS -->
|
||||
{% endblock %}
|
57
app/templates/404.html
Normal file
57
app/templates/404.html
Normal file
@ -0,0 +1,57 @@
|
||||
{% extends "base.html" %}
|
||||
{% block head %}
|
||||
{{ super() }}
|
||||
<!-- BEGIN PAGE LEVEL PLUGIN STYLES -->
|
||||
<link href="{{ url_for('static', filename='admin/pages/css/error.css') }}" rel="stylesheet" type="text/css"/>
|
||||
<!-- END PAGE LEVEL PLUGIN STYLES -->
|
||||
|
||||
<!-- BEGIN THEME STYLES -->
|
||||
<!-- DOC: To use 'rounded corners' style just load 'components-rounded.css' stylesheet instead of 'components.css' in the below style tag -->
|
||||
<link href="{{ url_for('static', filename='global/css/components-md.css') }}" id="style_components" rel="stylesheet" type="text/css"/>
|
||||
<link href="{{ url_for('static', filename='global/css/plugins-md.css') }}" rel="stylesheet" type="text/css"/>
|
||||
<link href="{{ url_for('static', filename='admin/layout2/css/layout.css') }}" rel="stylesheet" type="text/css"/>
|
||||
<link href="{{ url_for('static', filename='admin/layout2/css/themes/grey.css') }}" rel="stylesheet" type="text/css" id="style_color"/>
|
||||
<link href="{{ url_for('static', filename='admin/layout2/css/custom.css') }}" rel="stylesheet" type="text/css"/>
|
||||
<!-- END THEME STYLES -->
|
||||
{% endblock %}
|
||||
{% block title %}<title>DNS Control Panel - 404 Error</title>{% endblock %}
|
||||
|
||||
{% block dashboard_stat %}
|
||||
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<div class="clearfix">
|
||||
</div>
|
||||
|
||||
<!-- BEGIN PAGE CONTENT-->
|
||||
<div class="row">
|
||||
<div class="col-md-12 page-500">
|
||||
<div class=" number">
|
||||
404
|
||||
</div>
|
||||
<div class=" details">
|
||||
<h3>Oops! You're lost.</h3>
|
||||
<p>
|
||||
We can not find the page you're looking for.<br/>
|
||||
<a href="{{ url_for('index')}}"><strong>Click here</strong></a> to go home<br/><br/>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- END PAGE CONTENT-->
|
||||
{% endblock %}
|
||||
|
||||
{% block scripts %}
|
||||
{{ super() }}
|
||||
<!-- BEGIN PAGE LEVEL SCRIPTS -->
|
||||
<script src="{{ url_for('static', filename='global/scripts/metronic.js') }}" type="text/javascript"></script>
|
||||
<script src="{{ url_for('static', filename='admin/layout2/scripts/layout.js') }}" type="text/javascript"></script>
|
||||
<script>
|
||||
jQuery(document).ready(function() {
|
||||
Metronic.init(); // init metronic core componets
|
||||
Layout.init(); // init layout
|
||||
});
|
||||
</script>
|
||||
<!-- END JAVASCRIPTS -->
|
||||
{% endblock %}
|
57
app/templates/500.html
Normal file
57
app/templates/500.html
Normal file
@ -0,0 +1,57 @@
|
||||
{% extends "base.html" %}
|
||||
{% block head %}
|
||||
{{ super() }}
|
||||
<!-- BEGIN PAGE LEVEL PLUGIN STYLES -->
|
||||
<link href="{{ url_for('static', filename='admin/pages/css/error.css') }}" rel="stylesheet" type="text/css"/>
|
||||
<!-- END PAGE LEVEL PLUGIN STYLES -->
|
||||
|
||||
<!-- BEGIN THEME STYLES -->
|
||||
<!-- DOC: To use 'rounded corners' style just load 'components-rounded.css' stylesheet instead of 'components.css' in the below style tag -->
|
||||
<link href="{{ url_for('static', filename='global/css/components-md.css') }}" id="style_components" rel="stylesheet" type="text/css"/>
|
||||
<link href="{{ url_for('static', filename='global/css/plugins-md.css') }}" rel="stylesheet" type="text/css"/>
|
||||
<link href="{{ url_for('static', filename='admin/layout2/css/layout.css') }}" rel="stylesheet" type="text/css"/>
|
||||
<link href="{{ url_for('static', filename='admin/layout2/css/themes/grey.css') }}" rel="stylesheet" type="text/css" id="style_color"/>
|
||||
<link href="{{ url_for('static', filename='admin/layout2/css/custom.css') }}" rel="stylesheet" type="text/css"/>
|
||||
<!-- END THEME STYLES -->
|
||||
{% endblock %}
|
||||
{% block title %}<title>DNS Control Panel - 500 Error</title>{% endblock %}
|
||||
|
||||
{% block dashboard_stat %}
|
||||
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<div class="clearfix">
|
||||
</div>
|
||||
|
||||
<!-- BEGIN PAGE CONTENT-->
|
||||
<div class="row">
|
||||
<div class="col-md-12 page-500">
|
||||
<div class=" number">
|
||||
500
|
||||
</div>
|
||||
<div class=" details">
|
||||
<h3>Oops! Something went wrong.</h3>
|
||||
<p>
|
||||
Please come back in a while.<br/>
|
||||
<a href="{{ url_for('index')}}"><strong>Click here</strong></a> to go home<br/><br/>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- END PAGE CONTENT-->
|
||||
{% endblock %}
|
||||
|
||||
{% block scripts %}
|
||||
{{ super() }}
|
||||
<!-- BEGIN PAGE LEVEL SCRIPTS -->
|
||||
<script src="{{ url_for('static', filename='global/scripts/metronic.js') }}" type="text/javascript"></script>
|
||||
<script src="{{ url_for('static', filename='admin/layout2/scripts/layout.js') }}" type="text/javascript"></script>
|
||||
<script>
|
||||
jQuery(document).ready(function() {
|
||||
Metronic.init(); // init metronic core componets
|
||||
Layout.init(); // init layout
|
||||
});
|
||||
</script>
|
||||
<!-- END JAVASCRIPTS -->
|
||||
{% endblock %}
|
232
app/templates/admin.html
Normal file
232
app/templates/admin.html
Normal file
@ -0,0 +1,232 @@
|
||||
{% extends "base.html" %}
|
||||
{% block head %}
|
||||
{{ super() }}
|
||||
<!-- BEGIN PAGE LEVEL PLUGIN STYLES -->
|
||||
<link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='global/plugins/select2/select2.css') }}"/>
|
||||
<link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='global/plugins/datatables/plugins/bootstrap/dataTables.bootstrap.css') }}"/>
|
||||
<!-- END PAGE LEVEL PLUGIN STYLES -->
|
||||
|
||||
<!-- BEGIN THEME STYLES -->
|
||||
<!-- DOC: To use 'rounded corners' style just load 'components-rounded.css' stylesheet instead of 'components.css' in the below style tag -->
|
||||
<link href="{{ url_for('static', filename='global/css/components-md.css') }}" id="style_components" rel="stylesheet" type="text/css"/>
|
||||
<link href="{{ url_for('static', filename='global/css/plugins-md.css') }}" rel="stylesheet" type="text/css"/>
|
||||
<link href="{{ url_for('static', filename='admin/layout2/css/layout.css') }}" rel="stylesheet" type="text/css"/>
|
||||
<link href="{{ url_for('static', filename='admin/layout2/css/themes/grey.css') }}" rel="stylesheet" type="text/css" id="style_color"/>
|
||||
<link href="{{ url_for('static', filename='admin/layout2/css/custom.css') }}" rel="stylesheet" type="text/css"/>
|
||||
<!-- END THEME STYLES -->
|
||||
{% endblock %}
|
||||
{% block title %}<title>DNS Control Panel - Admin Console</title>{% endblock %}
|
||||
|
||||
{% block dashboard_stat %}
|
||||
<!-- BEGIN PAGE HEADER-->
|
||||
<h3 class="page-title">
|
||||
Admin Console</h3>
|
||||
<div class="page-bar">
|
||||
<ul class="page-breadcrumb">
|
||||
<li>
|
||||
<i class="fa fa-home"></i>
|
||||
<a href="/">Home</a>
|
||||
<i class="fa fa-angle-right"></i>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#">Admin Console</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<!-- END PAGE HEADER-->
|
||||
<!-- BEGIN DASHBOARD STATS -->
|
||||
<div class="row">
|
||||
<div class="col-lg-3 col-md-3 col-sm-6 col-xs-12">
|
||||
<a class="dashboard-stat dashboard-stat-light blue-soft" href="javascript:;">
|
||||
<div class="visual">
|
||||
<i class="fa fa-cloud"></i>
|
||||
</div>
|
||||
<div class="details">
|
||||
<div class="number">
|
||||
{{ domains|length }}
|
||||
</div>
|
||||
<div class="desc">
|
||||
{% if domains|length > 1 %}Domains{% else %}Domain{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
<div class="col-lg-3 col-md-3 col-sm-6 col-xs-12">
|
||||
<a class="dashboard-stat dashboard-stat-light green-soft" href="javascript:;">
|
||||
<div class="visual">
|
||||
<i class="fa fa-user"></i>
|
||||
</div>
|
||||
<div class="details">
|
||||
<div class="number">
|
||||
{{ users|length }}
|
||||
</div>
|
||||
<div class="desc">
|
||||
{% if users|length > 1 %}Users{% else %}User{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
<div class="col-lg-3 col-md-3 col-sm-6 col-xs-12">
|
||||
<a class="dashboard-stat dashboard-stat-light purple-soft" href="javascript:;">
|
||||
<div class="visual">
|
||||
<i class="fa fa-exclamation-triangle"></i>
|
||||
</div>
|
||||
<div class="details">
|
||||
<div class="number">
|
||||
{{ history_number }}
|
||||
</div>
|
||||
<div class="desc">
|
||||
{% if history_number > 1 %}Histories{% else %}History{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
<div class="col-lg-3 col-md-3 col-sm-6 col-xs-12">
|
||||
<a class="dashboard-stat dashboard-stat-light red-soft" href="javascript:;">
|
||||
<div class="visual">
|
||||
<i class="fa fa-star"></i>
|
||||
</div>
|
||||
<div class="details">
|
||||
<div class="number">
|
||||
{{ uptime|display_second_to_time }}
|
||||
</div>
|
||||
<div class="desc">
|
||||
Uptime
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<!-- END DASHBOARD STATS -->
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<div class="clearfix">
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<!-- BEGIN SERVER STATISTICS -->
|
||||
<div class="portlet box grey-cascade">
|
||||
<div class="portlet-title">
|
||||
<div class="caption">
|
||||
<i class="fa fa-sliders"></i>Server Statistics
|
||||
</div>
|
||||
<div class="tools">
|
||||
<a href="javascript:;" class="reload">
|
||||
</a>
|
||||
<a href="javascript:;" class="collapse">
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="portlet-body">
|
||||
<table class="table table-striped table-bordered table-hover" id="tb_stastic_list">
|
||||
<thead>
|
||||
<tr>
|
||||
<th width="6%">
|
||||
Docs
|
||||
</th>
|
||||
<th>
|
||||
Statistic
|
||||
</th>
|
||||
<th>
|
||||
Value
|
||||
</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for statistic in statistics %}
|
||||
<tr class="odd gradeX">
|
||||
<td>
|
||||
<a href="https://google.com/search?q=site:doc.powerdns.com+{{ statistic['name'] }}" target="_blank" class="btn btn-xs blue"><i class="fa fa-search"></i></a>
|
||||
</td>
|
||||
<td>
|
||||
{{ statistic['name'] }}
|
||||
</td>
|
||||
<td>
|
||||
{{ statistic['value'] }}
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
<!-- END SERVER STATISTICS -->
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<!-- BEGIN SERVER CONFIGURATION TABLE -->
|
||||
<div class="portlet box grey-cascade">
|
||||
<div class="portlet-title">
|
||||
<div class="caption">
|
||||
<i class="fa fa-gears"></i>Server Configuration
|
||||
</div>
|
||||
<div class="tools">
|
||||
<a href="javascript:;" class="reload">
|
||||
</a>
|
||||
<a href="javascript:;" class="collapse">
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="portlet-body">
|
||||
<table class="table table-striped table-bordered table-hover" id="tb_config_list">
|
||||
<thead>
|
||||
<tr>
|
||||
<th width="6%">
|
||||
Docs
|
||||
</th>
|
||||
<th>
|
||||
Name
|
||||
</th>
|
||||
<th>
|
||||
Value
|
||||
</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for config in configs %}
|
||||
<tr class="odd gradeX">
|
||||
<td>
|
||||
<a href="https://google.com/search?q=site:doc.powerdns.com+{{ config['name'] }}" target="_blank" class="btn btn-xs blue"><i class="fa fa-search"></i></a>
|
||||
</td>
|
||||
<td>
|
||||
{{ config['name'] }}
|
||||
</td>
|
||||
<td>
|
||||
{{ config['value'] }}
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
<!-- END SERVER CONFIGURATION TABLE -->
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
||||
{% block scripts %}
|
||||
{{ super() }}
|
||||
<!-- BEGIN PAGE LEVEL SCRIPTS -->
|
||||
<script src="{{ url_for('static', filename='global/scripts/metronic.js') }}" type="text/javascript"></script>
|
||||
<script src="{{ url_for('static', filename='admin/layout2/scripts/layout.js') }}" type="text/javascript"></script>
|
||||
<!-- END PAGE LEVEL SCRIPTS -->
|
||||
<!-- TABLE PLUGINS -->
|
||||
<script type="text/javascript" src="{{ url_for('static', filename='global/plugins/select2/select2.min.js') }}"></script>
|
||||
<script type="text/javascript" src="{{ url_for('static', filename='global/plugins/datatables/media/js/jquery.dataTables.min.js') }}"></script>
|
||||
<script type="text/javascript" src="{{ url_for('static', filename='global/plugins/datatables/plugins/bootstrap/dataTables.bootstrap.js') }}"></script>
|
||||
<script src="{{ url_for('static', filename='admin/pages/scripts/table-managed.js') }}"></script>
|
||||
<!-- END TABLE PLUGINS -->
|
||||
<script>
|
||||
jQuery(document).ready(function() {
|
||||
Metronic.init(); // init metronic core componets
|
||||
Layout.init(); // init layout
|
||||
TableManaged.init();
|
||||
});
|
||||
</script>
|
||||
<!-- END JAVASCRIPTS -->
|
||||
{% endblock %}
|
144
app/templates/admin_history.html
Normal file
144
app/templates/admin_history.html
Normal file
@ -0,0 +1,144 @@
|
||||
{% extends "base.html" %}
|
||||
{% block head %}
|
||||
{{ super() }}
|
||||
<!-- BEGIN PAGE LEVEL PLUGIN STYLES -->
|
||||
<link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='global/plugins/select2/select2.css') }}"/>
|
||||
<link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='global/plugins/datatables/plugins/bootstrap/dataTables.bootstrap.css') }}"/>
|
||||
<!-- END PAGE LEVEL PLUGIN STYLES -->
|
||||
|
||||
<!-- BEGIN THEME STYLES -->
|
||||
<!-- DOC: To use 'rounded corners' style just load 'components-rounded.css' stylesheet instead of 'components.css' in the below style tag -->
|
||||
<link href="{{ url_for('static', filename='global/css/components-md.css') }}" id="style_components" rel="stylesheet" type="text/css"/>
|
||||
<link href="{{ url_for('static', filename='global/css/plugins-md.css') }}" rel="stylesheet" type="text/css"/>
|
||||
<link href="{{ url_for('static', filename='admin/layout2/css/layout.css') }}" rel="stylesheet" type="text/css"/>
|
||||
<link href="{{ url_for('static', filename='admin/layout2/css/themes/grey.css') }}" rel="stylesheet" type="text/css" id="style_color"/>
|
||||
<link href="{{ url_for('static', filename='admin/layout2/css/custom.css') }}" rel="stylesheet" type="text/css"/>
|
||||
<!-- END THEME STYLES -->
|
||||
{% endblock %}
|
||||
{% block title %}<title>DNS Control Panel - History</title>{% endblock %}
|
||||
|
||||
{% block dashboard_stat %}
|
||||
<!-- BEGIN PAGE HEADER-->
|
||||
<h3 class="page-title">
|
||||
History</h3>
|
||||
<div class="page-bar">
|
||||
<ul class="page-breadcrumb">
|
||||
<li>
|
||||
<i class="fa fa-home"></i>
|
||||
<a href="/">Home</a>
|
||||
<i class="fa fa-angle-right"></i>
|
||||
</li>
|
||||
<li>
|
||||
<a href="{{ url_for('admin') }}">Admin</a>
|
||||
<i class="fa fa-angle-right"></i>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#">History</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<!-- END PAGE HEADER-->
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<div class="clearfix">
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<!-- BEGIN HISTORY TABLE -->
|
||||
<div class="portlet box blue">
|
||||
<div class="portlet-title">
|
||||
<div class="caption">
|
||||
<i class="fa fa-users"></i> History Management
|
||||
</div>
|
||||
<div class="tools">
|
||||
<a href="javascript:;" class="collapse">
|
||||
</a>
|
||||
<a href="javascript:;" class="reload">
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="portlet-body">
|
||||
<div class="table-toolbar">
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<div class="btn-group pull-right">
|
||||
<button id="tbl_history_clear" class="btn red">
|
||||
Clear History <i class="fa fa-trash"></i>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<table class="table table-striped table-hover table-bordered" id="tbl_history">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>
|
||||
Changed by
|
||||
</th>
|
||||
<th>
|
||||
Content
|
||||
</th>
|
||||
<th>
|
||||
Time
|
||||
</th>
|
||||
<th>
|
||||
Detail
|
||||
</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for history in histories %}
|
||||
<tr class="odd gradeX">
|
||||
<td>
|
||||
{{ history.created_by }}
|
||||
</td>
|
||||
<td>
|
||||
{{ history.msg }}
|
||||
</td>
|
||||
<td>
|
||||
{{ history.created_on }}
|
||||
</td>
|
||||
<td width="6%">
|
||||
<input type="hidden" name="history_detail" value="{{ history.detail }}">
|
||||
<a class="btn default btn-xs blue history_detail" href="javascript:;"> <i class="fa fa-info"></i>Info</a>
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- END HISTORY TABLE -->
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<!-- MORE CONTENT GO HERE -->
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
||||
{% block scripts %}
|
||||
{{ super() }}
|
||||
<!-- BEGIN PAGE LEVEL SCRIPTS -->
|
||||
<script src="{{ url_for('static', filename='global/scripts/metronic.js') }}" type="text/javascript"></script>
|
||||
<script src="{{ url_for('static', filename='admin/layout2/scripts/layout.js') }}" type="text/javascript"></script>
|
||||
<script src="{{ url_for('static', filename='global/plugins/bootbox/bootbox.min.js') }}" type="text/javascript"></script>
|
||||
<!-- END PAGE LEVEL SCRIPTS -->
|
||||
<!-- TABLE PLUGINS -->
|
||||
<script type="text/javascript" src="{{ url_for('static', filename='global/plugins/select2/select2.min.js') }}"></script>
|
||||
<script type="text/javascript" src="{{ url_for('static', filename='global/plugins/datatables/media/js/jquery.dataTables.min.js') }}"></script>
|
||||
<script type="text/javascript" src="{{ url_for('static', filename='global/plugins/datatables/plugins/bootstrap/dataTables.bootstrap.js') }}"></script>
|
||||
<script src="{{ url_for('static', filename='admin/pages/scripts/table-managed.js') }}"></script>
|
||||
<!-- END TABLE PLUGINS -->
|
||||
<script>
|
||||
jQuery(document).ready(function() {
|
||||
Metronic.init(); // init metronic core componets
|
||||
Layout.init(); // init layout
|
||||
TableManaged.init();
|
||||
});
|
||||
</script>
|
||||
<!-- END JAVASCRIPTS -->
|
||||
{% endblock %}
|
150
app/templates/admin_manageuser.html
Normal file
150
app/templates/admin_manageuser.html
Normal file
@ -0,0 +1,150 @@
|
||||
{% extends "base.html" %}
|
||||
{% block head %}
|
||||
{{ super() }}
|
||||
<!-- BEGIN PAGE LEVEL PLUGIN STYLES -->
|
||||
<link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='global/plugins/select2/select2.css') }}"/>
|
||||
<link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='global/plugins/datatables/plugins/bootstrap/dataTables.bootstrap.css') }}"/>
|
||||
<!-- END PAGE LEVEL PLUGIN STYLES -->
|
||||
|
||||
<!-- BEGIN THEME STYLES -->
|
||||
<!-- DOC: To use 'rounded corners' style just load 'components-rounded.css' stylesheet instead of 'components.css' in the below style tag -->
|
||||
<link href="{{ url_for('static', filename='global/css/components-md.css') }}" id="style_components" rel="stylesheet" type="text/css"/>
|
||||
<link href="{{ url_for('static', filename='global/css/plugins-md.css') }}" rel="stylesheet" type="text/css"/>
|
||||
<link href="{{ url_for('static', filename='admin/layout2/css/layout.css') }}" rel="stylesheet" type="text/css"/>
|
||||
<link href="{{ url_for('static', filename='admin/layout2/css/themes/grey.css') }}" rel="stylesheet" type="text/css" id="style_color"/>
|
||||
<link href="{{ url_for('static', filename='admin/layout2/css/custom.css') }}" rel="stylesheet" type="text/css"/>
|
||||
<!-- END THEME STYLES -->
|
||||
{% endblock %}
|
||||
{% block title %}<title>DNS Control Panel - User Management</title>{% endblock %}
|
||||
|
||||
{% block dashboard_stat %}
|
||||
<!-- BEGIN PAGE HEADER-->
|
||||
<h3 class="page-title">
|
||||
User Management</h3>
|
||||
<div class="page-bar">
|
||||
<ul class="page-breadcrumb">
|
||||
<li>
|
||||
<i class="fa fa-home"></i>
|
||||
<a href="/">Home</a>
|
||||
<i class="fa fa-angle-right"></i>
|
||||
</li>
|
||||
<li>
|
||||
<a href="{{ url_for('admin') }}">Admin</a>
|
||||
<i class="fa fa-angle-right"></i>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#">User Management</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<!-- END PAGE HEADER-->
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<div class="clearfix">
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<!-- BEGIN USER MANAGEMENT -->
|
||||
<div class="portlet box blue">
|
||||
<div class="portlet-title">
|
||||
<div class="caption">
|
||||
<i class="fa fa-users"></i> Users Available In Database
|
||||
</div>
|
||||
<div class="tools">
|
||||
<a href="javascript:;" class="collapse">
|
||||
</a>
|
||||
<a href="javascript:;" class="reload">
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="portlet-body">
|
||||
<table class="table table-striped table-hover table-bordered" id="tbl_user_manage">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>
|
||||
Username
|
||||
</th>
|
||||
<th>
|
||||
First Name
|
||||
</th>
|
||||
<th>
|
||||
Last Name
|
||||
</th>
|
||||
<th>
|
||||
Admin
|
||||
</th>
|
||||
<th>
|
||||
Privileges
|
||||
</th>
|
||||
<th>
|
||||
Deletion
|
||||
</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for user in users %}
|
||||
<tr class="odd gradeX">
|
||||
<td>
|
||||
{{ user.username }}
|
||||
</td>
|
||||
<td>
|
||||
{{ user.firstname }}
|
||||
</td>
|
||||
<td>
|
||||
{{ user.lastname }}
|
||||
</td>
|
||||
<td>
|
||||
<div class="md-checkbox has-error">
|
||||
<input type="checkbox" id="ck_admin_{{ user.username }}" class="md-check ck_admin" {% if user.role.name == 'Administrator' %}checked=""{% endif %}>
|
||||
<label for="ck_admin_{{ user.username }}">
|
||||
<span class="inc"></span>
|
||||
<span class="check"></span>
|
||||
<span class="box"></span>
|
||||
</label>
|
||||
</div>
|
||||
</td>
|
||||
<td width="6%">
|
||||
<a class="btn default btn-xs purple revoke" href="javascript:;"> <i class="fa fa-lock"></i>Revoke</a>
|
||||
</td>
|
||||
<td width="6%">
|
||||
<a class="btn default btn-xs red delete" href="javascript:;"> <i class="fa fa-trash-o"></i>Delete</a>
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
<!-- END USER MANAGEMENT -->
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<!-- MORE CONTENT GO HERE -->
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
||||
{% block scripts %}
|
||||
{{ super() }}
|
||||
<!-- BEGIN PAGE LEVEL SCRIPTS -->
|
||||
<script src="{{ url_for('static', filename='global/scripts/metronic.js') }}" type="text/javascript"></script>
|
||||
<script src="{{ url_for('static', filename='admin/layout2/scripts/layout.js') }}" type="text/javascript"></script>
|
||||
<script src="{{ url_for('static', filename='global/plugins/bootbox/bootbox.min.js') }}" type="text/javascript"></script>
|
||||
<!-- END PAGE LEVEL SCRIPTS -->
|
||||
<!-- TABLE PLUGINS -->
|
||||
<script type="text/javascript" src="{{ url_for('static', filename='global/plugins/select2/select2.min.js') }}"></script>
|
||||
<script type="text/javascript" src="{{ url_for('static', filename='global/plugins/datatables/media/js/jquery.dataTables.min.js') }}"></script>
|
||||
<script type="text/javascript" src="{{ url_for('static', filename='global/plugins/datatables/plugins/bootstrap/dataTables.bootstrap.js') }}"></script>
|
||||
<script src="{{ url_for('static', filename='admin/pages/scripts/table-managed.js') }}"></script>
|
||||
<!-- END TABLE PLUGINS -->
|
||||
<script>
|
||||
jQuery(document).ready(function() {
|
||||
Metronic.init(); // init metronic core componets
|
||||
Layout.init(); // init layout
|
||||
TableManaged.init();
|
||||
});
|
||||
</script>
|
||||
<!-- END JAVASCRIPTS -->
|
||||
{% endblock %}
|
252
app/templates/base.html
Normal file
252
app/templates/base.html
Normal file
@ -0,0 +1,252 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<!-- BEGIN HEAD -->
|
||||
<head>
|
||||
{% block head %}
|
||||
<meta charset="utf-8">
|
||||
{% block title %}<title>DNS Control Panel</title>{% endblock %}
|
||||
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta content="width=device-width, initial-scale=1" name="viewport">
|
||||
<meta content="" name="description">
|
||||
<meta content="" name="author">
|
||||
|
||||
<!-- BEGIN GLOBAL MANDATORY STYLES -->
|
||||
<link href="http://fonts.googleapis.com/css?family=Open+Sans:400,300,600,700&subset=all" rel="stylesheet" type="text/css"/>
|
||||
<link href="{{ url_for('static', filename='global/plugins/font-awesome/css/font-awesome.min.css') }}" rel="stylesheet" type="text/css"/>
|
||||
<link href="{{ url_for('static', filename='global/plugins/simple-line-icons/simple-line-icons.min.css') }}" rel="stylesheet" type="text/css"/>
|
||||
<link href="{{ url_for('static', filename='global/plugins/bootstrap/css/bootstrap.min.css') }}" rel="stylesheet" type="text/css"/>
|
||||
<link href="{{ url_for('static', filename='global/plugins/uniform/css/uniform.default.css') }}" rel="stylesheet" type="text/css"/>
|
||||
<link href="{{ url_for('static', filename='global/plugins/bootstrap-switch/css/bootstrap-switch.min.css') }}" rel="stylesheet" type="text/css"/>
|
||||
<link rel="shortcut icon" href="{{ url_for('static', filename='global/img/favicon.ico') }}" type="image/x-icon" />
|
||||
<!-- END GLOBAL MANDATORY STYLES -->
|
||||
{% endblock %}
|
||||
</head>
|
||||
<!-- END HEAD -->
|
||||
<body class="page-md page-boxed page-header-fixed page-sidebar-closed-hide-logo page-container-bg-solid page-sidebar-closed-hide-logo">
|
||||
<!-- BEGIN HEADER -->
|
||||
{% block pageheader %}
|
||||
<div class="page-header md-shadow-z-1-i navbar navbar-fixed-top">
|
||||
<!-- BEGIN HEADER INNER -->
|
||||
<div class="page-header-inner container">
|
||||
<!-- BEGIN LOGO -->
|
||||
<div class="page-logo">
|
||||
<a href="{{ url_for('index') }}">
|
||||
<img src="{{ url_for('static', filename='global/img/be-logo.png') }}" alt="logo" class="logo-default" height="70%" width="70%" />
|
||||
</a>
|
||||
<div class="menu-toggler sidebar-toggler">
|
||||
<!-- DOC: Remove the above "hide" to enable the sidebar toggler button on header -->
|
||||
</div>
|
||||
</div>
|
||||
<!-- END LOGO -->
|
||||
<!-- BEGIN RESPONSIVE MENU TOGGLER -->
|
||||
<a href="javascript:;" class="menu-toggler responsive-toggler" data-toggle="collapse" data-target=".navbar-collapse">
|
||||
</a>
|
||||
<!-- END RESPONSIVE MENU TOGGLER -->
|
||||
|
||||
<!-- BEGIN PAGE TOP -->
|
||||
<div class="page-top">
|
||||
<!-- BEGIN HEADER SEARCH BOX -->
|
||||
<!-- DOC: Apply "search-form-expanded" right after the "search-form" class to have half expanded search box -->
|
||||
<form class="search-form search-form-expanded" action="search" method="GET">
|
||||
<div class="input-group">
|
||||
<input type="text" class="form-control" placeholder="Search..." name="query">
|
||||
<span class="input-group-btn">
|
||||
<a href="javascript:;" class="btn submit"><i class="icon-magnifier"></i></a>
|
||||
</span>
|
||||
</div>
|
||||
</form>
|
||||
<!-- END HEADER SEARCH BOX -->
|
||||
<!-- BEGIN TOP NAVIGATION MENU -->
|
||||
<div class="top-menu">
|
||||
<ul class="nav navbar-nav pull-right">
|
||||
{% block pageheader_userinfo %}
|
||||
<!-- BEGIN NOTIFICATION DROPDOWN -->
|
||||
<!-- DOC: Apply "dropdown-dark" class after below "dropdown-extended" to change the dropdown styte -->
|
||||
<!--
|
||||
<li class="dropdown dropdown-extended dropdown-notification" id="header_notification_bar">
|
||||
<a href="javascript:;" class="dropdown-toggle" data-toggle="dropdown" data-hover="dropdown" data-close-others="true">
|
||||
<i class="icon-bell"></i>
|
||||
<span class="badge badge-default">
|
||||
7 </span>
|
||||
</a>
|
||||
<ul class="dropdown-menu">
|
||||
<li class="external">
|
||||
<h3><span class="bold">12 pending</span> notifications</h3>
|
||||
<a href="extra_profile.html">view all</a>
|
||||
</li>
|
||||
<li>
|
||||
<ul class="dropdown-menu-list scroller" style="height: 250px;" data-handle-color="#637283">
|
||||
<li>
|
||||
<a href="javascript:;">
|
||||
<span class="time">just now</span>
|
||||
<span class="details">
|
||||
<span class="label label-sm label-icon label-success">
|
||||
<i class="fa fa-plus"></i>
|
||||
</span>
|
||||
New user registered. </span>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
-->
|
||||
<!-- END NOTIFICATION DROPDOWN -->
|
||||
{% if current_user.username != 'Anonymous' %}
|
||||
<!-- BEGIN USER LOGIN DROPDOWN -->
|
||||
<!-- DOC: Apply "dropdown-dark" class after below "dropdown-extended" to change the dropdown styte -->
|
||||
<li class="dropdown dropdown-user">
|
||||
<a href="javascript:;" class="dropdown-toggle" data-toggle="dropdown" data-hover="dropdown" data-close-others="true">
|
||||
<img alt="" class="img-circle" src="{{ url_for('static', filename='admin/layout2/img/avatar.png') }}"/>
|
||||
<span class="username username-hide-on-mobile">
|
||||
{% if current_user.is_authenticated() %} {{ current_user.firstname }} {% endif %}</span>
|
||||
<i class="fa fa-angle-down"></i>
|
||||
</a>
|
||||
<ul class="dropdown-menu dropdown-menu-default">
|
||||
<li>
|
||||
<a href="{{ url_for('index') }}">
|
||||
<i class="icon-user"></i> My Profile </a>
|
||||
</li>
|
||||
<li class="divider">
|
||||
</li>
|
||||
<li>
|
||||
<a href="{{ url_for('logout') }}">
|
||||
<i class="icon-key"></i> Log Out </a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<!-- END USER LOGIN DROPDOWN -->
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
</ul>
|
||||
</div>
|
||||
<!-- END TOP NAVIGATION MENU -->
|
||||
</div>
|
||||
<!-- END PAGE TOP -->
|
||||
</div>
|
||||
<!-- END HEADER INNER -->
|
||||
</div>
|
||||
|
||||
{% endblock %}
|
||||
<!-- END HEADER -->
|
||||
|
||||
<div class="clearfix">
|
||||
</div>
|
||||
|
||||
<!-- BEGIN PAGE CONTAINER -->
|
||||
{% block pagecontainer %}
|
||||
<!-- BEGIN CONTAINER -->
|
||||
<div class="container">
|
||||
<div class="page-container">
|
||||
<!-- BEGIN SIDEBAR -->
|
||||
<div class="page-sidebar-wrapper">
|
||||
<!-- DOC: Set data-auto-scroll="false" to disable the sidebar from auto scrolling/focusing -->
|
||||
<!-- DOC: Change data-auto-speed="200" to adjust the sub menu slide up/down speed -->
|
||||
<div class="page-sidebar navbar-collapse collapse">
|
||||
<!-- BEGIN SIDEBAR MENU -->
|
||||
<!-- DOC: Apply "page-sidebar-menu-light" class right after "page-sidebar-menu" to enable light sidebar menu style(without borders) -->
|
||||
<!-- DOC: Apply "page-sidebar-menu-hover-submenu" class right after "page-sidebar-menu" to enable hoverable(hover vs accordion) sub menu mode -->
|
||||
<!-- DOC: Apply "page-sidebar-menu-closed" class right after "page-sidebar-menu" to collapse("page-sidebar-closed" class must be applied to the body element) the sidebar sub menu mode -->
|
||||
<!-- DOC: Set data-auto-scroll="false" to disable the sidebar from auto scrolling/focusing -->
|
||||
<!-- DOC: Set data-keep-expand="true" to keep the submenues expanded -->
|
||||
<!-- DOC: Set data-auto-speed="200" to adjust the sub menu slide up/down speed -->
|
||||
<ul class="page-sidebar-menu page-sidebar-menu-hover-submenu " data-keep-expanded="false" data-auto-scroll="true" data-slide-speed="200">
|
||||
{% if current_user.username != 'Anonymous' %}
|
||||
<li {% if request.path == "/dashboard" %}class="start active"{% endif %}>
|
||||
<a href="{{ url_for('dashboard') }}">
|
||||
<i class="icon-home"></i>
|
||||
<span class="title">Dashboard</span>
|
||||
{% if request.path == "/dashboard" %}<span class="selected"></span> {% endif %}
|
||||
<span class="selected"></span>
|
||||
</a>
|
||||
</li>
|
||||
{% if current_user.role.name == 'Administrator' %}
|
||||
<li {% if request.path.startswith('/admin') %}class="start active"{% endif %}>
|
||||
<a href="{{ url_for('admin') }}">
|
||||
<i class="icon-settings"></i>
|
||||
<span class="title">Admin</span>
|
||||
<span class="arrow "></span>
|
||||
{% if request.path.startswith('/admin') %}<span class="selected"></span> {% endif %}
|
||||
</a>
|
||||
<ul class="sub-menu">
|
||||
<li>
|
||||
<a href="{{ url_for('admin') }}">
|
||||
<i class="icon-eye"></i>
|
||||
Admin Console</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="{{ url_for('dashboard') }}">
|
||||
<i class="icon-globe"></i>
|
||||
Manage Domain</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="{{ url_for('admin_manageuser') }}">
|
||||
<i class="icon-user"></i>
|
||||
Manage User</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="{{ url_for('admin_history') }}">
|
||||
<i class="icon-speedometer"></i>
|
||||
History</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
</ul>
|
||||
<!-- END SIDEBAR MENU -->
|
||||
</div>
|
||||
</div>
|
||||
<!-- END SIDEBAR -->
|
||||
<!-- BEGIN CONTENT -->
|
||||
<div class="page-content-wrapper">
|
||||
<div class="page-content">
|
||||
{% block dashboard_stat %}
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
{% endblock %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- END CONTENT -->
|
||||
<!-- BEGIN QUICK SIDEBAR -->
|
||||
<!--Cooming Soon...-->
|
||||
<!-- END QUICK SIDEBAR -->
|
||||
</div>
|
||||
<!-- END CONTAINER -->
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
||||
<!-- BEGIN FOOTER -->
|
||||
<div class="page-footer">
|
||||
<div class="container">
|
||||
2015 © <a href="http://duykhanh.me">Khanh Ngo</a>
|
||||
</div>
|
||||
</div>
|
||||
<!-- END FOOTER -->
|
||||
|
||||
<div class="scroll-to-top">
|
||||
<i class="icon-arrow-up"></i>
|
||||
</div>
|
||||
|
||||
{% block scripts %}
|
||||
<!-- BEGIN JAVASCRIPTS(Load javascripts at bottom, this will reduce page load time) -->
|
||||
<!-- BEGIN CORE PLUGINS -->
|
||||
<script src="{{ url_for('static', filename='global/plugins/jquery.min.js') }}" type="text/javascript"></script>
|
||||
<script src="{{ url_for('static', filename='global/plugins/jquery-migrate.min.js') }}" type="text/javascript"></script>
|
||||
<!-- IMPORTANT! Load jquery-ui.min.js before bootstrap.min.js to fix bootstrap tooltip conflict with jquery ui tooltip -->
|
||||
<script src="{{ url_for('static', filename='global/plugins/jquery-ui/jquery-ui.min.js') }}" type="text/javascript"></script>
|
||||
<script src="{{ url_for('static', filename='global/plugins/bootstrap/js/bootstrap.min.js') }}" type="text/javascript"></script>
|
||||
<script src="{{ url_for('static', filename='global/plugins/bootstrap-hover-dropdown/bootstrap-hover-dropdown.min.js') }}" type="text/javascript"></script>
|
||||
<script src="{{ url_for('static', filename='global/plugins/jquery-slimscroll/jquery.slimscroll.min.js') }}" type="text/javascript"></script>
|
||||
<script src="{{ url_for('static', filename='global/plugins/jquery.blockui.min.js') }}" type="text/javascript"></script>
|
||||
<script src="{{ url_for('static', filename='global/plugins/jquery.cokie.min.js') }}" type="text/javascript"></script>
|
||||
<script src="{{ url_for('static', filename='global/plugins/uniform/jquery.uniform.min.js') }}" type="text/javascript"></script>
|
||||
<script src="{{ url_for('static', filename='global/plugins/bootstrap-switch/js/bootstrap-switch.min.js') }}" type="text/javascript"></script>
|
||||
<!-- END CORE PLUGINS -->
|
||||
{% endblock %}
|
||||
|
||||
</body>
|
||||
</html>
|
153
app/templates/dashboard.html
Normal file
153
app/templates/dashboard.html
Normal file
@ -0,0 +1,153 @@
|
||||
{% extends "base.html" %}
|
||||
{% block head %}
|
||||
{{ super() }}
|
||||
<!-- BEGIN PAGE LEVEL PLUGIN STYLES -->
|
||||
<link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='global/plugins/select2/select2.css') }}"/>
|
||||
<link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='global/plugins/datatables/plugins/bootstrap/dataTables.bootstrap.css') }}"/>
|
||||
<!-- END PAGE LEVEL PLUGIN STYLES -->
|
||||
|
||||
<!-- BEGIN THEME STYLES -->
|
||||
<!-- DOC: To use 'rounded corners' style just load 'components-rounded.css' stylesheet instead of 'components.css' in the below style tag -->
|
||||
<link href="{{ url_for('static', filename='global/css/components-md.css') }}" id="style_components" rel="stylesheet" type="text/css"/>
|
||||
<link href="{{ url_for('static', filename='global/css/plugins-md.css') }}" rel="stylesheet" type="text/css"/>
|
||||
<link href="{{ url_for('static', filename='admin/layout2/css/layout.css') }}" rel="stylesheet" type="text/css"/>
|
||||
<link href="{{ url_for('static', filename='admin/layout2/css/themes/grey.css') }}" rel="stylesheet" type="text/css" id="style_color"/>
|
||||
<link href="{{ url_for('static', filename='admin/layout2/css/custom.css') }}" rel="stylesheet" type="text/css"/>
|
||||
<!-- END THEME STYLES -->
|
||||
{% endblock %}
|
||||
{% block title %}<title>DNS Control Panel - HOME</title>{% endblock %}
|
||||
|
||||
{% block dashboard_stat %}
|
||||
<!-- BEGIN PAGE HEADER-->
|
||||
<h3 class="page-title">
|
||||
Dashboard</h3>
|
||||
<div class="page-bar">
|
||||
<ul class="page-breadcrumb">
|
||||
<li>
|
||||
<i class="fa fa-home"></i>
|
||||
<a href="/">Home</a>
|
||||
<i class="fa fa-angle-right"></i>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#">Dashboard</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<!-- END PAGE HEADER-->
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<div class="clearfix">
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<!-- BEGIN DOMAIN TABLE-->
|
||||
<div class="portlet box grey-cascade">
|
||||
<div class="portlet-title">
|
||||
<div class="caption">
|
||||
<i class="fa fa-globe"></i>DOMAINS
|
||||
</div>
|
||||
<div class="tools">
|
||||
<a href="javascript:;" class="reload">
|
||||
</a>
|
||||
<a href="javascript:;" class="collapse">
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="portlet-body">
|
||||
{% if current_user.role.name == 'Administrator' %}
|
||||
<div class="table-toolbar">
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
<div class="btn-group">
|
||||
<button id="btn_new_domain" class="btn green" onclick="window.location.href='{{ url_for('domain_add') }}'">
|
||||
New Domain <i class="fa fa-plus"></i>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
<table class="table table-striped table-bordered table-hover" id="tb_vps_list">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>
|
||||
Name
|
||||
</th>
|
||||
<th>
|
||||
Kind
|
||||
</th>
|
||||
<th>
|
||||
Serial
|
||||
</th>
|
||||
<th>
|
||||
Master
|
||||
</th>
|
||||
<th>
|
||||
Action
|
||||
</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for domain in domains %}
|
||||
<tr class="odd gradeX">
|
||||
<td>
|
||||
<a href="{{ url_for('domain', domain_name=domain.name) }}"><strong>{{ domain.name }}</strong></a>
|
||||
</td>
|
||||
<td>
|
||||
{{ domain.type }}
|
||||
</td>
|
||||
<td>
|
||||
{{ domain.serial }}
|
||||
</td>
|
||||
<td>
|
||||
{% if domain.master == '[]'%}N/A {% else %}{{ domain.master|display_master_name }}{% endif %}
|
||||
</td>
|
||||
{% if current_user.role.name !='Administrator' %}
|
||||
<td width="6%">
|
||||
<a href="{{ url_for('domain', domain_name=domain.name) }}" class="btn default btn-xs green">Manage
|
||||
<i class="fa fa-cog"></i></a>
|
||||
</td>
|
||||
{% else %}
|
||||
<td width="18%">
|
||||
<a href="{{ url_for('domain', domain_name=domain.name) }}" class="btn default btn-xs green">Manage
|
||||
<a href="{{ url_for('domain_management', domain_name=domain.name)}}" class="btn default btn-xs red">Admin</a>
|
||||
</td>
|
||||
{% endif %}
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
<!-- END DOMAIN TABLE-->
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<!-- MORE CONTENT GO HERE -->
|
||||
</div>
|
||||
|
||||
{% endblock %}
|
||||
|
||||
{% block scripts %}
|
||||
{{ super() }}
|
||||
<!-- BEGIN PAGE LEVEL SCRIPTS -->
|
||||
<script src="{{ url_for('static', filename='global/scripts/metronic.js') }}" type="text/javascript"></script>
|
||||
<script src="{{ url_for('static', filename='admin/layout2/scripts/layout.js') }}" type="text/javascript"></script>
|
||||
<!-- END PAGE LEVEL SCRIPTS -->
|
||||
<!-- TABLE PLUGINS -->
|
||||
<script type="text/javascript" src="{{ url_for('static', filename='global/plugins/select2/select2.min.js') }}"></script>
|
||||
<script type="text/javascript" src="{{ url_for('static', filename='global/plugins/datatables/media/js/jquery.dataTables.min.js') }}"></script>
|
||||
<script type="text/javascript" src="{{ url_for('static', filename='global/plugins/datatables/plugins/bootstrap/dataTables.bootstrap.js') }}"></script>
|
||||
<script src="{{ url_for('static', filename='admin/pages/scripts/table-managed.js') }}"></script>
|
||||
<!-- END TABLE PLUGINS -->
|
||||
<script>
|
||||
jQuery(document).ready(function() {
|
||||
Metronic.init(); // init metronic core componets
|
||||
Layout.init(); // init layout
|
||||
TableManaged.init(); // manage table columns
|
||||
});
|
||||
</script>
|
||||
<!-- END JAVASCRIPTS -->
|
||||
{% endblock %}
|
195
app/templates/domain.html
Normal file
195
app/templates/domain.html
Normal file
@ -0,0 +1,195 @@
|
||||
{% extends "base.html" %}
|
||||
{% block head %}
|
||||
{{ super() }}
|
||||
<!-- BEGIN PAGE LEVEL PLUGIN STYLES -->
|
||||
<link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='global/plugins/select2/select2.css') }}"/>
|
||||
<link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='global/plugins/datatables/plugins/bootstrap/dataTables.bootstrap.css') }}"/>
|
||||
<!-- END PAGE LEVEL PLUGIN STYLES -->
|
||||
|
||||
<!-- BEGIN THEME STYLES -->
|
||||
<!-- DOC: To use 'rounded corners' style just load 'components-rounded.css' stylesheet instead of 'components.css' in the below style tag -->
|
||||
<link href="{{ url_for('static', filename='global/css/components-md.css') }}" id="style_components" rel="stylesheet" type="text/css"/>
|
||||
<link href="{{ url_for('static', filename='global/css/plugins-md.css') }}" rel="stylesheet" type="text/css"/>
|
||||
<link href="{{ url_for('static', filename='admin/layout2/css/layout.css') }}" rel="stylesheet" type="text/css"/>
|
||||
<link href="{{ url_for('static', filename='admin/layout2/css/themes/grey.css') }}" rel="stylesheet" type="text/css" id="style_color"/>
|
||||
<link href="{{ url_for('static', filename='admin/layout2/css/custom.css') }}" rel="stylesheet" type="text/css"/>
|
||||
<!-- END THEME STYLES -->
|
||||
{% endblock %}
|
||||
{% block title %}<title>DNS Control Panel - DOMAIN</title>{% endblock %}
|
||||
|
||||
{% block dashboard_stat %}
|
||||
<!-- BEGIN PAGE HEADER-->
|
||||
<h3 class="page-title">
|
||||
Domain</h3>
|
||||
<div class="page-bar">
|
||||
<ul class="page-breadcrumb">
|
||||
<li>
|
||||
<i class="fa fa-home"></i>
|
||||
<a href="/">Home</a>
|
||||
<i class="fa fa-angle-right"></i>
|
||||
</li>
|
||||
<li>
|
||||
<a href="{{ url_for('dashboard') }}">Domain</a>
|
||||
<i class="fa fa-angle-right"></i>
|
||||
</li>
|
||||
<li>
|
||||
<a href="">{{ domain.name }}</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<!-- END PAGE HEADER-->
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<div class="clearfix">
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<!-- BEGIN RECORD TABLE-->
|
||||
<div class="portlet box blue">
|
||||
<div class="portlet-title">
|
||||
<div class="caption">
|
||||
<i class="fa fa-globe"></i> {{ domain.name }}
|
||||
<input type="hidden" id="domainname" value="{{ domain.name }}">
|
||||
</div>
|
||||
<div class="tools">
|
||||
<a href="javascript:;" class="collapse">
|
||||
</a>
|
||||
<a href="javascript:;" class="reload">
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="portlet-body">
|
||||
{% if domain.type != 'Slave' %}
|
||||
<div class="table-toolbar">
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
<div class="btn-group">
|
||||
<button id="tbl_record_manage_new" class="btn green">
|
||||
Add Record <i class="fa fa-plus"></i>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<div class="btn-group pull-right">
|
||||
<button id="tbl_record_manage_apply" class="btn green">
|
||||
<i class="fa fa-save"></i>Apply Changes
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% else %}
|
||||
<div class="table-toolbar">
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
<div class="btn-group">
|
||||
<button id="tbl_record_update_from_master" class="btn green">
|
||||
Update from Master <i class="fa fa-download"></i>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
<table class="table table-striped table-hover table-bordered" id="tbl_record_manage">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>
|
||||
Name
|
||||
</th>
|
||||
<th>
|
||||
Type
|
||||
</th>
|
||||
<th>
|
||||
Status
|
||||
</th>
|
||||
<th>
|
||||
TTL
|
||||
</th>
|
||||
<th>
|
||||
Data
|
||||
</th>
|
||||
<th>
|
||||
Edit
|
||||
</th>
|
||||
<th>
|
||||
Delete
|
||||
</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for record in records %}
|
||||
<tr class="odd gradeX">
|
||||
<td>
|
||||
{{ (record.name,domain.name)|display_record_name }}
|
||||
</td>
|
||||
<td>
|
||||
{{ record.type }}
|
||||
</td>
|
||||
<td>
|
||||
{{ record.status }}
|
||||
</td>
|
||||
<td>
|
||||
{{ record.ttl }}
|
||||
</td>
|
||||
<td>
|
||||
{{ record.data }}
|
||||
</td>
|
||||
{% if domain.type != 'Slave' %}
|
||||
<td width="6%">
|
||||
{% if record.is_allowed() %}
|
||||
<a class="btn default btn-xs purple edit" href="javascript:;"> <i class="fa fa-edit"></i></a>
|
||||
{% else %}
|
||||
<a href="#" class="btn default btn-xs purple"> <i class="fa fa-exclamation-circle"></i></a>
|
||||
{% endif %}
|
||||
</td>
|
||||
<td width="6%">
|
||||
{% if record.is_allowed() %}
|
||||
<a class="btn default btn-xs red delete" href="javascript:;"> <i class="fa fa-trash"></i></a>
|
||||
{% else %}
|
||||
<a href="#" class="btn default btn-xs red"> <i class="fa fa-exclamation-circle"></i></a>
|
||||
{% endif %}
|
||||
{% else %}
|
||||
<td width="6%">
|
||||
<a href="#" class="btn default btn-xs purple"> <i class="fa fa-exclamation-circle"></i></a>
|
||||
</td>
|
||||
<td width="6%">
|
||||
<a href="#" class="btn default btn-xs purple"> <i class="fa fa-exclamation-circle"></i></a>
|
||||
</td>
|
||||
{% endif %}
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
<!-- END RECORD TABLE-->
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{% endblock %}
|
||||
|
||||
{% block scripts %}
|
||||
{{ super() }}
|
||||
<!-- BEGIN PAGE LEVEL SCRIPTS -->
|
||||
<script src="{{ url_for('static', filename='global/scripts/metronic.js') }}" type="text/javascript"></script>
|
||||
<script src="{{ url_for('static', filename='admin/layout2/scripts/layout.js') }}" type="text/javascript"></script>
|
||||
<script src="{{ url_for('static', filename='global/plugins/bootbox/bootbox.min.js') }}" type="text/javascript"></script>
|
||||
<!-- END PAGE LEVEL SCRIPTS -->
|
||||
<!-- TABLE PLUGINS -->
|
||||
<script type="text/javascript" src="{{ url_for('static', filename='global/plugins/select2/select2.min.js') }}"></script>
|
||||
<script type="text/javascript" src="{{ url_for('static', filename='global/plugins/datatables/media/js/jquery.dataTables.min.js') }}"></script>
|
||||
<script type="text/javascript" src="{{ url_for('static', filename='global/plugins/datatables/plugins/bootstrap/dataTables.bootstrap.js') }}"></script>
|
||||
<script src="{{ url_for('static', filename='admin/pages/scripts/table-editable.js') }}"></script>
|
||||
<!-- END TABLE PLUGINS -->
|
||||
<script>
|
||||
jQuery(document).ready(function() {
|
||||
Metronic.init(); // init metronic core componets
|
||||
Layout.init(); // init layout
|
||||
TableEditable.init();
|
||||
});
|
||||
</script>
|
||||
<!-- END JAVASCRIPTS -->
|
||||
{% endblock %}
|
143
app/templates/domain_add.html
Normal file
143
app/templates/domain_add.html
Normal file
@ -0,0 +1,143 @@
|
||||
{% extends "base.html" %}
|
||||
{% block head %}
|
||||
{{ super() }}
|
||||
<!-- BEGIN PAGE LEVEL PLUGIN STYLES -->
|
||||
<link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='global/plugins/select2/select2.css') }}"/>
|
||||
<link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='global/plugins/datatables/plugins/bootstrap/dataTables.bootstrap.css') }}"/>
|
||||
<!-- END PAGE LEVEL PLUGIN STYLES -->
|
||||
|
||||
<!-- BEGIN THEME STYLES -->
|
||||
<!-- DOC: To use 'rounded corners' style just load 'components-rounded.css' stylesheet instead of 'components.css' in the below style tag -->
|
||||
<link href="{{ url_for('static', filename='global/css/components-md.css') }}" id="style_components" rel="stylesheet" type="text/css"/>
|
||||
<link href="{{ url_for('static', filename='global/css/plugins-md.css') }}" rel="stylesheet" type="text/css"/>
|
||||
<link href="{{ url_for('static', filename='admin/layout2/css/layout.css') }}" rel="stylesheet" type="text/css"/>
|
||||
<link href="{{ url_for('static', filename='admin/layout2/css/themes/grey.css') }}" rel="stylesheet" type="text/css" id="style_color"/>
|
||||
<link href="{{ url_for('static', filename='admin/layout2/css/custom.css') }}" rel="stylesheet" type="text/css"/>
|
||||
<!-- END THEME STYLES -->
|
||||
{% endblock %}
|
||||
{% block title %}<title>DNS Control Panel - Add Domain</title>{% endblock %}
|
||||
|
||||
{% block dashboard_stat %}
|
||||
<!-- BEGIN PAGE HEADER-->
|
||||
<h3 class="page-title">
|
||||
Add Domain</h3>
|
||||
<div class="page-bar">
|
||||
<ul class="page-breadcrumb">
|
||||
<li>
|
||||
<i class="fa fa-home"></i>
|
||||
<a href="/">Home</a>
|
||||
<i class="fa fa-angle-right"></i>
|
||||
</li>
|
||||
<li>
|
||||
<a href="{{ url_for('dashboard') }}">Domain</a>
|
||||
<i class="fa fa-angle-right"></i>
|
||||
</li>
|
||||
<li>
|
||||
Add
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<!-- END PAGE HEADER-->
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<div class="clearfix">
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<!-- BEGIN ADD RECORD FORM-->
|
||||
<div class="portlet light">
|
||||
<div class="portlet-title">
|
||||
<div class="caption font-green-haze">
|
||||
<i class="icon-settings font-green-haze"></i>
|
||||
<span class="caption-subject bold uppercase"> New Zone Information</span>
|
||||
</div>
|
||||
<div class="actions">
|
||||
<a class="btn btn-circle btn-icon-only btn-default fullscreen" href="javascript:;" data-original-title="" title="">
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="portlet-body form">
|
||||
<form role="form" action="{{ url_for('domain_add') }}" method="post">
|
||||
<div class="form-body">
|
||||
<div class="form-group form-md-line-input form-md-floating-label has-success">
|
||||
<input type="text" class="form-control" id="domain_name" name="domain_name">
|
||||
<label for="domain_name">Enter a valid domain name (required)</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group form-md-radios">
|
||||
<label>Type</label>
|
||||
<div class="md-radio-inline">
|
||||
<div class="md-radio">
|
||||
<input type="radio" id="radio_type_native" name="radio_type" class="md-radiobtn" value="native" checked="" onclick="javascript:zoneTypeSelection();">
|
||||
<label for="radio_type_native">
|
||||
<span class="inc"></span>
|
||||
<span class="check"></span>
|
||||
<span class="box"></span>
|
||||
Native</label>
|
||||
</div>
|
||||
<div class="md-radio has-error">
|
||||
<input type="radio" id="radio_type_master" name="radio_type" class="md-radiobtn" value="master" onclick="javascript:zoneTypeSelection();">
|
||||
<label for="radio_type_master">
|
||||
<span class="inc"></span>
|
||||
<span class="check"></span>
|
||||
<span class="box"></span>
|
||||
Master</label>
|
||||
</div>
|
||||
<div class="md-radio has-info">
|
||||
<input type="radio" id="radio_type_slave" name="radio_type" class="md-radiobtn" value="slave" onclick="javascript:zoneTypeSelection();">
|
||||
<label for="radio_type_slave">
|
||||
<span class="inc"></span>
|
||||
<span class="check"></span>
|
||||
<span class="box"></span>
|
||||
Slave</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-body" id="form_master_ip" style="display:none">
|
||||
<div class="form-group form-md-line-input form-md-floating-label has-success">
|
||||
<input type="text" class="form-control" id="domain_master_address" name="domain_master_address">
|
||||
<label for="domain_master_address">Enter valid master ip addresses (separated by commas)</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-actions">
|
||||
<div class="row">
|
||||
<div class="col-md-offset-1">
|
||||
<button type="submit" class="btn blue">Submit</button>
|
||||
<button type="button" class="btn grey" onclick="window.location.href='{{ url_for('dashboard') }}'">Cancel</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- END ADD RECORD FORM-->
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
||||
{% block scripts %}
|
||||
{{ super() }}
|
||||
<!-- BEGIN PAGE LEVEL SCRIPTS -->
|
||||
<script src="{{ url_for('static', filename='global/scripts/metronic.js') }}" type="text/javascript"></script>
|
||||
<script src="{{ url_for('static', filename='admin/layout2/scripts/layout.js') }}" type="text/javascript"></script>
|
||||
<!-- END PAGE LEVEL SCRIPTS -->
|
||||
<script>
|
||||
jQuery(document).ready(function() {
|
||||
Metronic.init(); // init metronic core componets
|
||||
Layout.init(); // init layout
|
||||
});
|
||||
</script>
|
||||
|
||||
<script type="text/javascript">
|
||||
function zoneTypeSelection() {
|
||||
if (document.getElementById('radio_type_slave').checked) {
|
||||
document.getElementById('form_master_ip').style.display = 'block';
|
||||
}
|
||||
else document.getElementById('form_master_ip').style.display = 'none';
|
||||
}
|
||||
</script>
|
||||
<!-- END JAVASCRIPTS -->
|
||||
{% endblock %}
|
145
app/templates/domain_management.html
Normal file
145
app/templates/domain_management.html
Normal file
@ -0,0 +1,145 @@
|
||||
{% extends "base.html" %}
|
||||
{% block head %}
|
||||
{{ super() }}
|
||||
|
||||
<!-- BEGIN PAGE LEVEL STYLES -->
|
||||
<link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='global/plugins/jquery-multi-select/css/multi-select.css') }}"/>
|
||||
<!-- BEGIN THEME STYLES -->
|
||||
|
||||
<!-- BEGIN THEME STYLES -->
|
||||
<!-- DOC: To use 'rounded corners' style just load 'components-rounded.css' stylesheet instead of 'components.css' in the below style tag -->
|
||||
<link href="{{ url_for('static', filename='global/css/components-md.css') }}" id="style_components" rel="stylesheet" type="text/css"/>
|
||||
<link href="{{ url_for('static', filename='global/css/plugins-md.css') }}" rel="stylesheet" type="text/css"/>
|
||||
<link href="{{ url_for('static', filename='admin/layout2/css/layout.css') }}" rel="stylesheet" type="text/css"/>
|
||||
<link href="{{ url_for('static', filename='admin/layout2/css/themes/grey.css') }}" rel="stylesheet" type="text/css" id="style_color"/>
|
||||
<link href="{{ url_for('static', filename='admin/layout2/css/custom.css') }}" rel="stylesheet" type="text/css"/>
|
||||
<!-- END THEME STYLES -->
|
||||
{% endblock %}
|
||||
{% block title %}<title>DNS Control Panel - Domain Management</title>{% endblock %}
|
||||
|
||||
{% block dashboard_stat %}
|
||||
<!-- BEGIN PAGE HEADER-->
|
||||
<h3 class="page-title">
|
||||
Admin Console</h3>
|
||||
<div class="page-bar">
|
||||
<ul class="page-breadcrumb">
|
||||
<li>
|
||||
<i class="fa fa-home"></i>
|
||||
<a href="/">Home</a>
|
||||
<i class="fa fa-angle-right"></i>
|
||||
</li>
|
||||
<li>
|
||||
<a href="{{ url_for('admin') }}">Admin Console</a>
|
||||
<i class="fa fa-angle-right"></i>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#">Domain Management</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<!-- END PAGE HEADER-->
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<div class="clearfix">
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<!-- BEGIN ACCESS CONTROL -->
|
||||
<div class="portlet box red-sunglo">
|
||||
<div class="portlet-title">
|
||||
<div class="caption">
|
||||
<i class="fa fa-globe"></i>Domain Access Control
|
||||
</div>
|
||||
<div class="tools">
|
||||
<a href="javascript:;" class="collapse">
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="portlet-body">
|
||||
<form method="post" action="{{ url_for('domain_management', domain_name=domain.name) }}" class="form-horizontal form-row-seperated">
|
||||
<div class="form-body">
|
||||
<div class="form-group">
|
||||
<label class="control-label col-md-3">Move users from left to right to grant them access to the domain <strong>{{ domain.name }}.</strong><br/><br/>
|
||||
Users with <font color="red">red</font> color is in Administrator role, no need to grant permission.
|
||||
</label>
|
||||
<div class="col-md-9">
|
||||
<select multiple="multiple" class="multi-select" id="domain_multi_user" name="domain_multi_user[]">
|
||||
{% for user in users %}
|
||||
<option {% if user.id in domain_user_ids %}selected{% endif %} value="{{ user.username }}" {% if user.role.name == 'Administrator' %}style="color:red"{% endif %}>{{ user.username}}
|
||||
</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-actions">
|
||||
<div class="row">
|
||||
<div class="col-md-offset-3 col-md-9">
|
||||
<button type="submit" class="btn green"><i class="fa fa-check"></i> Save</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<!-- END ACCESS CONTROL -->
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<!-- BEGIN DOMAIN DELETION -->
|
||||
<div class="portlet box red-sunglo">
|
||||
<div class="portlet-title">
|
||||
<div class="caption">
|
||||
<i class="fa fa-globe"></i>Domain Deletion
|
||||
</div>
|
||||
<div class="tools">
|
||||
<a href="javascript:;" class="collapse">
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="portlet-body">
|
||||
<p>This function is used to remove a domain completely from Database and PowerDNS. All records and user privileges which associated to this domain be removed also. Your change <font color="red">cannot be reverted</font>. Please be careful with your action!</p>
|
||||
<div class="form-actions">
|
||||
<div class="row">
|
||||
<div class="col-md-offset-3 col-md-9">
|
||||
<button type="button" class="btn red" id="delete_domain" value="{{ domain.name}}"><i class="fa fa-times"></i> DELETE DOMAIN {{ domain.name }}</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- END DOMAIN DELETION -->
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
||||
{% block scripts %}
|
||||
{{ super() }}
|
||||
<!-- BEGIN PAGE LEVEL PLUGINS -->
|
||||
<script type="text/javascript" src="{{ url_for('static', filename='global/plugins/bootstrap-select/bootstrap-select.min.js') }}"></script>
|
||||
<script type="text/javascript" src="{{ url_for('static', filename='global/plugins/select2/select2.min.js') }}"></script>
|
||||
<script type="text/javascript" src="{{ url_for('static', filename='global/plugins/jquery-multi-select/js/jquery.multi-select.js') }}"></script>
|
||||
<script src="{{ url_for('static', filename='global/plugins/bootbox/bootbox.min.js') }}" type="text/javascript"></script>
|
||||
<!-- END PAGE LEVEL PLUGINS -->
|
||||
|
||||
<!-- BEGIN PAGE LEVEL SCRIPTS -->
|
||||
<script src="{{ url_for('static', filename='global/scripts/metronic.js') }}" type="text/javascript"></script>
|
||||
<script src="{{ url_for('static', filename='admin/layout2/scripts/layout.js') }}" type="text/javascript"></script>
|
||||
<script src="{{ url_for('static', filename='admin/pages/scripts/components-dropdowns.js') }}" type="text/javascript"></script>
|
||||
<script src="{{ url_for('static', filename='admin/pages/scripts/my-button-action.js') }}" type="text/javascript"></script>
|
||||
<!-- END PAGE LEVEL SCRIPTS -->
|
||||
<script>
|
||||
jQuery(document).ready(function() {
|
||||
Metronic.init(); // init metronic core componets
|
||||
Layout.init(); // init layout
|
||||
ComponentsDropdowns.init();
|
||||
MyButtonAction.init();
|
||||
});
|
||||
</script>
|
||||
<!-- END JAVASCRIPTS -->
|
||||
{% endblock %}
|
189
app/templates/login.html
Normal file
189
app/templates/login.html
Normal file
@ -0,0 +1,189 @@
|
||||
<!DOCTYPE html>
|
||||
<!--[if IE 8]> <html lang="en" class="ie8 no-js"> <![endif]-->
|
||||
<!--[if IE 9]> <html lang="en" class="ie9 no-js"> <![endif]-->
|
||||
<!--[if !IE]><!-->
|
||||
<html lang="en">
|
||||
<!--<![endif]-->
|
||||
<!-- BEGIN HEAD -->
|
||||
<head>
|
||||
<meta charset="utf-8"/>
|
||||
<title>DNS Management System | Login</title>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta content="width=device-width, initial-scale=1.0" name="viewport"/>
|
||||
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
|
||||
<meta content="" name="description"/>
|
||||
<meta content="" name="author"/>
|
||||
<!-- BEGIN GLOBAL MANDATORY STYLES -->
|
||||
<link href="http://fonts.googleapis.com/css?family=Open+Sans:400,300,600,700&subset=all" rel="stylesheet" type="text/css"/>
|
||||
<link href="{{ url_for('static', filename='global/plugins/font-awesome/css/font-awesome.min.css') }}" rel="stylesheet" type="text/css"/>
|
||||
<link href="{{ url_for('static', filename='global/plugins/simple-line-icons/simple-line-icons.min.css') }}" rel="stylesheet" type="text/css"/>
|
||||
<link href="{{ url_for('static', filename='global/plugins/bootstrap/css/bootstrap.min.css') }}" rel="stylesheet" type="text/css"/>
|
||||
<link href="{{ url_for('static', filename='global/plugins/uniform/css/uniform.default.css') }}" rel="stylesheet" type="text/css"/>
|
||||
<!-- END GLOBAL MANDATORY STYLES -->
|
||||
<!-- BEGIN PAGE LEVEL STYLES -->
|
||||
<link href="{{ url_for('static', filename='admin/pages/css/login.css') }}" rel="stylesheet" type="text/css"/>
|
||||
<!-- END PAGE LEVEL SCRIPTS -->
|
||||
<!-- BEGIN THEME STYLES -->
|
||||
<link href="{{ url_for('static', filename='global/css/components-md.css') }}" id="style_components" rel="stylesheet" type="text/css"/>
|
||||
<link href="{{ url_for('static', filename='global/css/plugins-md.css') }}" rel="stylesheet" type="text/css"/>
|
||||
<link href="{{ url_for('static', filename='admin/layout/css/layout.css') }}" rel="stylesheet" type="text/css"/>
|
||||
<link href="{{ url_for('static', filename='admin/layout/css/themes/default.css') }}" rel="stylesheet" type="text/css" id="style_color"/>
|
||||
<link href="{{ url_for('static', filename='admin/layout/css/custom.css') }}" rel="stylesheet" type="text/css"/>
|
||||
<!-- END THEME STYLES -->
|
||||
<link rel="shortcut icon" href="favicon.ico"/>
|
||||
</head>
|
||||
<!-- END HEAD -->
|
||||
<!-- BEGIN BODY -->
|
||||
<body class="page-md login">
|
||||
<!-- BEGIN SIDEBAR TOGGLER BUTTON -->
|
||||
<div class="menu-toggler sidebar-toggler">
|
||||
</div>
|
||||
<!-- END SIDEBAR TOGGLER BUTTON -->
|
||||
<!-- BEGIN LOGO -->
|
||||
<div class="logo">
|
||||
<a href="#">
|
||||
<img src="{{ url_for('static', filename='global/img/be-logo.png') }}" width="15%" height="15%">
|
||||
</a>
|
||||
</div>
|
||||
<!-- END LOGO -->
|
||||
<!-- BEGIN LOGIN -->
|
||||
<div class="content">
|
||||
<!-- BEGIN LOGIN FORM -->
|
||||
<form class="login-form" action="" method="post">
|
||||
<h3 class="form-title">Sign In</h3>
|
||||
{% if error %}
|
||||
<div class="alert alert-danger">
|
||||
<button class="close" data-close="alert"></button>
|
||||
<span>
|
||||
{{ error }} </span>
|
||||
</div>
|
||||
{% endif %}
|
||||
<div class="alert alert-danger display-hide">
|
||||
<button class="close" data-close="alert"></button>
|
||||
<span>
|
||||
Enter any username and password. </span>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<!--ie8, ie9 does not support html5 placeholder, so we just show field title for that-->
|
||||
<label class="control-label visible-ie8 visible-ie9">Username</label>
|
||||
<input class="form-control form-control-solid placeholder-no-fix" type="text" autocomplete="off" placeholder="Username" name="username" value="{{ request.form.username }}"/>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label visible-ie8 visible-ie9">Password</label>
|
||||
<input class="form-control form-control-solid placeholder-no-fix" type="password" autocomplete="off" placeholder="Password" name="password" value="{{ request.form.password }}"/>
|
||||
</div>
|
||||
<div class="form-actions">
|
||||
<button type="submit" class="btn btn-success uppercase">Login</button>
|
||||
<label class="rememberme check">
|
||||
<input type="checkbox" name="remember" value="1"/>Remember </label>
|
||||
<a href="javascript:;" id="forget-password" class="forget-password">Forgot Password?</a>
|
||||
</div>
|
||||
<div class="create-account">
|
||||
<p>
|
||||
<a href="javascript:;" id="register-btn" class="uppercase">Create an account</a>
|
||||
</p>
|
||||
</div>
|
||||
</form>
|
||||
<!-- END LOGIN FORM -->
|
||||
<!-- BEGIN FORGOT PASSWORD FORM -->
|
||||
<form class="forget-form" action="index.html" method="post">
|
||||
<h3>Forget Password ?</h3>
|
||||
<p>
|
||||
Enter your e-mail address below to reset your password.
|
||||
</p>
|
||||
<div class="form-group">
|
||||
<input class="form-control placeholder-no-fix" type="text" autocomplete="off" placeholder="Email" name="email"/>
|
||||
</div>
|
||||
<div class="form-actions">
|
||||
<button type="button" id="back-btn" class="btn btn-default">Back</button>
|
||||
<button type="submit" class="btn btn-success uppercase pull-right">Submit</button>
|
||||
</div>
|
||||
</form>
|
||||
<!-- END FORGOT PASSWORD FORM -->
|
||||
<!-- BEGIN REGISTRATION FORM -->
|
||||
<form class="register-form" action="" method="post">
|
||||
<h3>Sign Up</h3>
|
||||
<p class="hint">
|
||||
Enter your personal details below:
|
||||
</p>
|
||||
<div class="form-group">
|
||||
<label class="control-label visible-ie8 visible-ie9">First Name</label>
|
||||
<input class="form-control placeholder-no-fix" type="text" placeholder="First Name" name="firstname"/>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label visible-ie8 visible-ie9">Last Name</label>
|
||||
<input class="form-control placeholder-no-fix" type="text" placeholder="Last Name" name="lastname"/>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<!--ie8, ie9 does not support html5 placeholder, so we just show field title for that-->
|
||||
<label class="control-label visible-ie8 visible-ie9">Email</label>
|
||||
<input class="form-control placeholder-no-fix" type="text" placeholder="Email" name="email"/>
|
||||
</div>
|
||||
<p class="hint">
|
||||
Enter your account details below:
|
||||
</p>
|
||||
<div class="form-group">
|
||||
<label class="control-label visible-ie8 visible-ie9">Username</label>
|
||||
<input class="form-control placeholder-no-fix" type="text" autocomplete="off" placeholder="Username" name="username"/>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label visible-ie8 visible-ie9">Password</label>
|
||||
<input class="form-control placeholder-no-fix" type="password" autocomplete="off" id="register_password" placeholder="Password" name="password"/>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label visible-ie8 visible-ie9">Re-type Your Password</label>
|
||||
<input class="form-control placeholder-no-fix" type="password" autocomplete="off" placeholder="Re-type Your Password" name="rpassword"/>
|
||||
</div>
|
||||
<div class="form-group margin-top-20 margin-bottom-20">
|
||||
<label class="check">
|
||||
<input type="checkbox" name="tnc"/> I agree to the <a href="javascript:;">
|
||||
Terms of Service </a>
|
||||
& <a href="javascript:;">
|
||||
Privacy Policy </a>
|
||||
</label>
|
||||
<div id="register_tnc_error">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-actions">
|
||||
<button type="button" id="register-back-btn" class="btn btn-default">Back</button>
|
||||
<button type="submit" id="register-submit-btn" class="btn btn-success uppercase pull-right">Submit</button>
|
||||
</div>
|
||||
</form>
|
||||
<!-- END REGISTRATION FORM -->
|
||||
</div>
|
||||
<div class="copyright">
|
||||
2015 © Khanh Ngo
|
||||
</div>
|
||||
<!-- END LOGIN -->
|
||||
<!-- BEGIN JAVASCRIPTS(Load javascripts at bottom, this will reduce page load time) -->
|
||||
<!-- BEGIN CORE PLUGINS -->
|
||||
<!--[if lt IE 9]>
|
||||
<script src="{{ url_for('static', filename='global/plugins/respond.min.js') }}"></script>
|
||||
<script src="{{ url_for('static', filename='global/plugins/excanvas.min.js') }}"></script>
|
||||
<![endif]-->
|
||||
<script src="{{ url_for('static', filename='global/plugins/jquery.min.js') }}" type="text/javascript"></script>
|
||||
<script src="{{ url_for('static', filename='global/plugins/jquery-migrate.min.js') }}" type="text/javascript"></script>
|
||||
<script src="{{ url_for('static', filename='global/plugins/bootstrap/js/bootstrap.min.js') }}" type="text/javascript"></script>
|
||||
<script src="{{ url_for('static', filename='global/plugins/jquery.blockui.min.js') }}" type="text/javascript"></script>
|
||||
<script src="{{ url_for('static', filename='global/plugins/uniform/jquery.uniform.min.js') }}" type="text/javascript"></script>
|
||||
<script src="{{ url_for('static', filename='global/plugins/jquery.cokie.min.js') }}" type="text/javascript"></script>
|
||||
<!-- END CORE PLUGINS -->
|
||||
<!-- BEGIN PAGE LEVEL PLUGINS -->
|
||||
<script src="{{ url_for('static', filename='global/plugins/jquery-validation/js/jquery.validate.min.js') }}" type="text/javascript"></script>
|
||||
<!-- END PAGE LEVEL PLUGINS -->
|
||||
<!-- BEGIN PAGE LEVEL SCRIPTS -->
|
||||
<script src="{{ url_for('static', filename='global/scripts/metronic.js') }}" type="text/javascript"></script>
|
||||
<script src="{{ url_for('static', filename='admin/layout/scripts/layout.js') }}" type="text/javascript"></script>
|
||||
<script src="{{ url_for('static', filename='admin/pages/scripts/login.js') }}" type="text/javascript"></script>
|
||||
<!-- END PAGE LEVEL SCRIPTS -->
|
||||
<script>
|
||||
jQuery(document).ready(function() {
|
||||
Metronic.init(); // init metronic core components
|
||||
Layout.init(); // init current layout
|
||||
Login.init();
|
||||
});
|
||||
</script>
|
||||
<!-- END JAVASCRIPTS -->
|
||||
</body>
|
||||
<!-- END BODY -->
|
||||
</html>
|
18
app/templates/maintenance.html
Normal file
18
app/templates/maintenance.html
Normal file
@ -0,0 +1,18 @@
|
||||
<!doctype html>
|
||||
<title>Site Maintenance</title>
|
||||
<style>
|
||||
body { text-align: center; padding: 150px; }
|
||||
h1 { font-size: 50px; }
|
||||
body { font: 20px Helvetica, sans-serif; color: #333; }
|
||||
article { display: block; text-align: left; width: 650px; margin: 0 auto; }
|
||||
a { color: #dc8100; text-decoration: none; }
|
||||
a:hover { color: #333; text-decoration: none; }
|
||||
</style>
|
||||
|
||||
<article>
|
||||
<h1>We’ll be back soon!</h1>
|
||||
<div>
|
||||
<p>Sorry for the inconvenience but we’re performing some maintenance at the moment. If you need to you can always <a href="mailto:ngokhanhit@gmail.com">contact us</a>, otherwise we’ll be back online shortly!</p>
|
||||
<p>— Team</p>
|
||||
</div>
|
||||
</article>
|
Reference in New Issue
Block a user