separate services

This commit is contained in:
deflax 2018-01-18 16:01:17 +02:00
parent a43d2104ef
commit 8753a380ba
5 changed files with 89 additions and 22 deletions

View file

@ -7,6 +7,7 @@ from flask_login import LoginManager
from flask_wtf.csrf import CSRFProtect, CSRFError
from flask_babel import Babel, lazy_gettext
from flask_moment import Moment
#from flask_httpauth import import import HTTPBasicAuth
from werkzeug.contrib.fixers import ProxyFix
from config import config
@ -18,6 +19,7 @@ app.wsgi_app = ProxyFix(app.wsgi_app)
db = SQLAlchemy(session_options = { "autoflush": False })
db.init_app(app)
#apiauth = HTTPBasicAuth()
lm = LoginManager()
lm.init_app(app)
lm.login_view = 'auth.login'

View file

@ -81,27 +81,6 @@
</div>
{% for server in servers %}
<div class="row">
<div class="col-md-12">
<div class="panel panel-primary panel-transparent">
<div class="panel-body">
<div class="col-md-8">
<img src="../../static/images/server.png" width="80%"><br /><br />
<a href="/chat"><button type="button" class="btn btn-lg btn-success">Order VPS</button></a>
</div>
<div class="col-md-4">
Alias: <b>{{ server.name }}</b><br />
Processor: <b>{{ server.cpu }}</b><br />
Memory: <b>{{ server.mem }}</b><br />
Storage: <b>{{ server.hdd }}</b><br />
</div>
</div>
</div>
</div>
</div>
{% endfor %}
<div class="container-fluid-index">
<div class="row">
<div class="col-md-6">

View file

@ -0,0 +1,21 @@
{% for server in servers %}
<div class="row">
<div class="col-md-12">
<div class="panel panel-primary panel-transparent">
<div class="panel-body">
<div class="col-md-8">
<img src="../../static/images/server.png" width="80%"><br /><br />
<a href="/chat"><button type="button" class="btn btn-lg btn-success">Order VPS</button></a>
</div>
<div class="col-md-4">
Alias: <b>{{ server.name }}</b><br />
Processor: <b>{{ server.cpu }}</b><br />
Memory: <b>{{ server.mem }}</b><br />
Storage: <b>{{ server.hdd }}</b><br />
</div>
</div>
</div>
</div>
</div>
{% endfor %}

View file

@ -0,0 +1,51 @@
{% block services %}
{% if inv_services != [] %}
<div class="col-md-12">
<div class="panel panel-info" id="services">
<div class="panel-heading">Services</div>
<div class="panel-body">
<div id="no-more-tables">
<table class="table table-hover table-striped table-condensed cf">
<thead>
<tr>
<th>Category</th>
<th>Description</th>
<th>Last Charged</th>
<th>Time Left</th>
</tr>
<tbody>
{% for service in inv_services %}
{% if service.enabled == False %}
<tr class="danger">
{% else %}
{% if service.warning == True %}
<tr class="warning">
{% else %}
<tr>
{% endif %}
{% endif %}
<td data-title="Category">{{ service.category }}</td>
<td data-title="Description" >{{ service.description }}</td>
<td data-title="Last Charged">{{ moment(service.date_last_charge).format('lll') }} ({{ moment(service.date_last_charge).fromNow() }})</td>
{% if service.enabled == False %}
<td data-title="Time Left"><button class="btn btn-default btn-success" onclick="window.open('/smanager/activate/{{ service.pid }}','_self');"><span class="glyphicon glyphicon-bell" aria-hidden="true"></span> Activate</button></td>
{% else %}
{% if service.warning == True %}
<td data-title="Time Left"><button class="btn btn-default btn-success" onclick="window.open('/smanager/activate/{{ service.pid }}','_self');"><span class="glyphicon glyphicon-bell" aria-hidden="true"></span> Renew ({{ service.daysleft }} days left)</button></td>
{% else %}
<td data-title="Time Left">{{ service.daysleft }} day(s)</td>
{% endif %}
{% endif %}
</tr >
{% endfor %}
</tbody>
</table>
</div>
<!-- <button class="btn btn-default" onclick="window.open('{{ url_for('smanager.requestservice') }}','_self')"><img class="icon icons8-Key-2" width="32" height="32" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAADwUlEQVRYhdXYz0/bVhwA8Bz4I/Yn9A/gwKGHHApxiENwo8IG2rSqh/XUw267cRmJY8dOQpIGOq2cdtguFZNoUQQeiOBnm7h4iB+TRkJwkiJtdZ0GQzPLeTtU0bIQ0qQ8wP1K30sU6X3y/X7fs18cjk89Bsn1fjwEAgQj7nhpQXMFeeilBY1gpV2cFkgsCG7fCAwL8E5fWBQmk7IeX1bNTM6ASrkG83odKuUazOQMGF9WzYmEXPWFxd+xAO+8FphziuvzMRKDkcBKLKt/H2gWzOv1C/NAs2ByRdXdJDD9kc2oc4rru1LcSFj4dTIpn6z9edIR1pqZnAG/mt06GWXExStD+hiJ+SKR1ff/MnvCNVfz69mt1yOMOI8chwV4J0YCq9fKtSZ/aEA3Ccyh6Q0cKdAXFoUUVzJbK8IsFc4IVqoSrFSln+fffWgm83odpriSiVNgDxlukFzvn0zKeuvizFLhzEuL224SDLhJMOClBIlZKpx10+qJhFxBtrPHY9mZaLqgty5EsFLVTYKB5h9CsFK1m1ZH0wX9XlSaRQIkGHEnkzPOLXIZYCZnQIIRd5AAvbSgNQ7h5qSf59/hlCAOkuv9g+R6P06BNWoxf9oNUCnXoJcWNCRAV5C/cJaYFwWjsUmoxfxpN5ukka4gD5EAR8LtK3iZVMo1OBJGVMG7EWmv3QxeJjM5AxKstIsE+Hk8G4+mC29RAqPpo+pYbPMJEiAWBLe/fPyy0st8dXEO1rGQcA8J0OFwOPwRaT+5op47Cz8m51ZLcHwma92NSK+GQ+JnSIBYgHe6SWBedhb5QwN6KAEuKBqcXS1VkCL9kc1ou0deL6395sdt+OinAygfv/8MKdI5xfWNMuLigzmlyh/2Vkn+0IAPn27D737+A26+suDTl9aVIufdJDATK6rWzRv13GoJ4pQAv184gI3vy8f1/yF/WCtbPkYsImv30PTGKE6Bvc53kqI5kZTrY7GstaBo5/CtSOQz6XC83zweCrBtb3UUiLpIcN9LC5UUV2x7AlwL8kMxNL1xy0uLeoorvrE5UtBTvxU12yMfc6q9kZ4Q0FxBHjayExL57u412r1r2qKSnYC2Qg6HwOtPvt2/7P73tIqljyw/Kz2zDbA1t4//gTglnF7pn1AXRad2N+eDJ8obV4C/c+3A5ugEjKXVk7EZed62wPR+BfrCYvlGgZ4Q0GLpI6v1uquUa3A8nn07TPHf3ihwaHrjlp+VnuEUOL0/t6UnllVraVe3B645nFNcnyvA3/FQIOELi2Vb4bqJfwEpWpu91pyNygAAAABJRU5ErkJggg==">Request</button>-->
{% else %}
</div>
</div>
</div>
{% endblock %}

View file

@ -1,4 +1,4 @@
from flask import render_template, abort, redirect, url_for, abort, flash, request, current_app, make_response, g
from flask import jsonify, render_template, abort, redirect, url_for, abort, flash, request, current_app, make_response, g
from flask_login import login_required, login_user, logout_user, current_user
from flask_sqlalchemy import get_debug_queries
@ -27,6 +27,20 @@ def after_request(response):
current_app.logger.warning('Slow query: %s\nParameters: %s\nDuration: %fs\nContext: %s\n' % (query.statement, query.parameters, query.duration, query.context))
return response
@vmanager.route('/slavetables/<int:regionid>', methods=['GET'])
def slavetables(regionid):
selected_region = Region.query.filter_by(pid=int(regionid)).first()
if selected_region == None:
return jsonify({})
addresses = selected_region.inv_addresses.filter_by(enabled=True).all()
regionlist = {}
for address in addresses:
regionlist[str(address.pid)] = { 'ipv4': str(address.ip), 'mac': str(address.mac) }
data = { 'region_id': str(selected_region.pid),
'addresses': regionlist }
return jsonify(data)
@vmanager.route('/createvm', methods=['GET', 'POST'])
@login_required