up
This commit is contained in:
parent
b93100de31
commit
37f115bed1
4 changed files with 131 additions and 208 deletions
44
app/cloud/controllers/administrators/__init__.py
Normal file
44
app/cloud/controllers/administrators/__init__.py
Normal file
|
@ -0,0 +1,44 @@
|
|||
from hashlib import md5
|
||||
from flask import session
|
||||
from app import models
|
||||
|
||||
|
||||
class ControllerAdministrators:
|
||||
def __init__(self):
|
||||
pass
|
||||
|
||||
def auth(self, email, password, status=1):
|
||||
"""
|
||||
|
||||
:param email:
|
||||
:param password:
|
||||
:return:
|
||||
"""
|
||||
result = models.Admins.select().\
|
||||
where(
|
||||
models.Admins.email == email,
|
||||
models.Admins.password == md5(password).hexdigest(),
|
||||
models.Admins.status == status
|
||||
).count()
|
||||
|
||||
if result == 0:
|
||||
return False
|
||||
return True
|
||||
|
||||
def get_id_by_email(self, email):
|
||||
return models.Admins.get(models.Admins.email == email).id
|
||||
|
||||
def check_session(self):
|
||||
"""
|
||||
Check session for contain a required keys
|
||||
:return: bool
|
||||
"""
|
||||
required = ['admin_email', 'admin_password', 'admin_id']
|
||||
success = True
|
||||
|
||||
for r in required:
|
||||
if r in session and success:
|
||||
continue
|
||||
else:
|
||||
success = False
|
||||
return success
|
|
@ -1,7 +1,6 @@
|
|||
# coding: utf-8
|
||||
|
||||
from uuid import uuid4
|
||||
|
||||
from flask import Blueprint
|
||||
from flask import request
|
||||
from flask import session
|
||||
|
@ -9,9 +8,10 @@ from flask import redirect
|
|||
from flask import render_template
|
||||
from flask import url_for
|
||||
from flask import g
|
||||
|
||||
from app import models
|
||||
from app.cloud import controllers
|
||||
from app.cloud.controllers.common import special_match
|
||||
from app.cloud.controllers.common import ControllerMessagesEmail
|
||||
from app.cloud.controllers.administrators import ControllerAdministrators
|
||||
|
||||
|
||||
viewAdministrator = Blueprint('administrator', __name__, url_prefix='/administrator')
|
||||
|
@ -24,16 +24,16 @@ def login():
|
|||
admin_password = request.form['password'].encode('utf-8')
|
||||
|
||||
# validation entered data
|
||||
if not controllers.special_match(admin_email, r"^[A-Za-z0-9\.\+_-]+@[A-Za-z0-9\._-]+\.[a-zA-Z]*$")\
|
||||
if not special_match(admin_email, r"^[A-Za-z0-9\.\+_-]+@[A-Za-z0-9\._-]+\.[a-zA-Z]*$")\
|
||||
or len(admin_password) < 5:
|
||||
g.errors['items'].append('Invalid registration data.')
|
||||
g.errors['total'] += 1
|
||||
# если ошибок нет, то продолжаем обработку
|
||||
if g.errors['total'] == 0:
|
||||
# try auth only active users (with status code 1)
|
||||
if controllers.Admins().auth(admin_email, admin_password, 1):
|
||||
if ControllerAdministrators().auth(admin_email, admin_password, 1):
|
||||
# get user_id
|
||||
user_id = controllers.Admins().get_id_by_email(admin_email)
|
||||
user_id = ControllerAdministrators().get_id_by_email(admin_email)
|
||||
|
||||
# save user data to session
|
||||
session['admin_id'] = str(user_id)
|
||||
|
@ -59,71 +59,62 @@ def logout():
|
|||
@viewAdministrator.route('/dashboard')
|
||||
def dashboard():
|
||||
# check session
|
||||
if not controllers.Admins().check_session():
|
||||
if not ControllerAdministrators().check_session():
|
||||
return redirect(url_for("administrator.logout"))
|
||||
# auth user
|
||||
if not controllers.Admins().auth(session['admin_email'], session['admin_password']):
|
||||
if not ControllerAdministrators().auth(session['admin_email'], session['admin_password']):
|
||||
return redirect(url_for("administrator.logout"))
|
||||
|
||||
#
|
||||
stats = {
|
||||
'users': models.Users.select().count(),
|
||||
# 'rules': models.Rules.select().count(),
|
||||
# 'traffic': models.RulesTraffic.select().count(),
|
||||
'payments': models.UsersBalanceTransactions.select().count(),
|
||||
}
|
||||
#
|
||||
return render_template('administrator/dashboard.html', stats=stats)
|
||||
|
||||
|
||||
@viewAdministrator.route('/users/')
|
||||
def users():
|
||||
# check session
|
||||
if not controllers.Admins().check_session():
|
||||
if not ControllerAdministrators().check_session():
|
||||
return redirect(url_for("administrator.logout"))
|
||||
# auth user
|
||||
if not controllers.Admins().auth(session['admin_email'], session['admin_password']):
|
||||
if not ControllerAdministrators().auth(session['admin_email'], session['admin_password']):
|
||||
return redirect(url_for("administrator.logout"))
|
||||
# формируем массив со списком пользователей
|
||||
users_items = {
|
||||
'total': models.Users.select().count(),
|
||||
'items': models.Users.select()
|
||||
}
|
||||
#
|
||||
return render_template('administrator/users/index.html', users=users_items)
|
||||
|
||||
|
||||
@viewAdministrator.route('/rules/')
|
||||
def rules():
|
||||
# check session
|
||||
if not controllers.Admins().check_session():
|
||||
if not ControllerAdministrators().check_session():
|
||||
return redirect(url_for("administrator.logout"))
|
||||
# auth user
|
||||
if not controllers.Admins().auth(session['admin_email'], session['admin_password']):
|
||||
if not ControllerAdministrators().auth(session['admin_email'], session['admin_password']):
|
||||
return redirect(url_for("administrator.logout"))
|
||||
# формируем список правил
|
||||
rules_items = {
|
||||
'total': models.Rules.select().count(),
|
||||
'items': models.Rules.select()
|
||||
'total': models.Containers.select().count(),
|
||||
'items': models.Containers.select()
|
||||
}
|
||||
return render_template('administrator/rules/index.html', rules=rules_items)
|
||||
|
||||
|
||||
@viewAdministrator.route('/traffic')
|
||||
def traffic():
|
||||
# check session
|
||||
if not controllers.Admins().check_session():
|
||||
return redirect(url_for("administrator.logout"))
|
||||
# auth user
|
||||
if not controllers.Admins().auth(session['admin_email'], session['admin_password']):
|
||||
return redirect(url_for("administrator.logout"))
|
||||
return render_template('administrator/traffic.html')
|
||||
|
||||
|
||||
@viewAdministrator.route('/payments')
|
||||
def payments():
|
||||
# check session
|
||||
if not controllers.Admins().check_session():
|
||||
if not ControllerAdministrators().check_session():
|
||||
return redirect(url_for("administrator.logout"))
|
||||
# auth user
|
||||
if not controllers.Admins().auth(session['admin_email'], session['admin_password']):
|
||||
if not ControllerAdministrators().auth(session['admin_email'], session['admin_password']):
|
||||
return redirect(url_for("administrator.logout"))
|
||||
payments_items = {
|
||||
'total': models.UsersBalanceTransactions.select().count(),
|
||||
|
@ -135,10 +126,10 @@ def payments():
|
|||
@viewAdministrator.route('/datacenters')
|
||||
def datacenters():
|
||||
# check session
|
||||
if not controllers.Admins().check_session():
|
||||
if not ControllerAdministrators().check_session():
|
||||
return redirect(url_for("administrator.logout"))
|
||||
# auth user
|
||||
if not controllers.Admins().auth(session['admin_email'], session['admin_password']):
|
||||
if not ControllerAdministrators().auth(session['admin_email'], session['admin_password']):
|
||||
return redirect(url_for("administrator.logout"))
|
||||
dcs = {
|
||||
'total': models.DataCenters.select().count(),
|
||||
|
@ -150,10 +141,10 @@ def datacenters():
|
|||
@viewAdministrator.route('/datacenters/create', methods=['GET', 'POST'])
|
||||
def datacenters_create():
|
||||
# check session
|
||||
if not controllers.Admins().check_session():
|
||||
if not ControllerAdministrators().check_session():
|
||||
return redirect(url_for("administrator.logout"))
|
||||
# auth user
|
||||
if not controllers.Admins().auth(session['admin_email'], session['admin_password']):
|
||||
if not ControllerAdministrators().auth(session['admin_email'], session['admin_password']):
|
||||
return redirect(url_for("administrator.logout"))
|
||||
|
||||
if request.method == "POST":
|
||||
|
@ -177,10 +168,10 @@ def datacenters_create():
|
|||
@viewAdministrator.route('/datacenters/edit/<uuid:dc_id>', methods=['GET', 'POST'])
|
||||
def datacenters_edit(dc_id):
|
||||
# check session
|
||||
if not controllers.Admins().check_session():
|
||||
if not ControllerAdministrators().check_session():
|
||||
return redirect(url_for("administrator.logout"))
|
||||
# auth user
|
||||
if not controllers.Admins().auth(session['admin_email'], session['admin_password']):
|
||||
if not ControllerAdministrators().auth(session['admin_email'], session['admin_password']):
|
||||
return redirect(url_for("administrator.logout"))
|
||||
# check exists datacenter
|
||||
if models.DataCenters.select().where(models.DataCenters.id == dc_id).count() == 0:
|
||||
|
@ -198,10 +189,10 @@ def datacenters_edit(dc_id):
|
|||
@viewAdministrator.route('/servers/')
|
||||
def servers_index():
|
||||
# check session
|
||||
if not controllers.Admins().check_session():
|
||||
if not ControllerAdministrators().check_session():
|
||||
return redirect(url_for("administrator.logout"))
|
||||
# auth user
|
||||
if not controllers.Admins().auth(session['admin_email'], session['admin_password']):
|
||||
if not ControllerAdministrators().auth(session['admin_email'], session['admin_password']):
|
||||
return redirect(url_for("administrator.logout"))
|
||||
|
||||
servers_items = {
|
||||
|
@ -215,10 +206,10 @@ def servers_index():
|
|||
@viewAdministrator.route('/servers/create', methods=['GET', 'POST'])
|
||||
def servers_create():
|
||||
# check session
|
||||
if not controllers.Admins().check_session():
|
||||
if not ControllerAdministrators().check_session():
|
||||
return redirect(url_for("administrator.logout"))
|
||||
# auth user
|
||||
if not controllers.Admins().auth(session['admin_email'], session['admin_password']):
|
||||
if not ControllerAdministrators().auth(session['admin_email'], session['admin_password']):
|
||||
return redirect(url_for("administrator.logout"))
|
||||
|
||||
if request.method == "POST":
|
||||
|
@ -230,7 +221,14 @@ def servers_create():
|
|||
server_ip = request.form['ip']
|
||||
server_status = request.form['status']
|
||||
|
||||
models.Servers.create(id=server_id, hostname=server_name, ip=server_ip, datacenter=server_dcid, secret=server_secret, status=server_status)
|
||||
models.Servers.create(
|
||||
id=server_id,
|
||||
hostname=server_name,
|
||||
ip=server_ip,
|
||||
datacenter=server_dcid,
|
||||
secret=server_secret,
|
||||
status=server_status
|
||||
)
|
||||
dcs = {
|
||||
'total': models.DataCenters.select().count(),
|
||||
'items': models.DataCenters.select()
|
||||
|
@ -242,10 +240,10 @@ def servers_create():
|
|||
@viewAdministrator.route('/servers/edit/<uuid:server_id>', methods=['GET', 'POST'])
|
||||
def servers_edit(server_id):
|
||||
# check session
|
||||
if not controllers.Admins().check_session():
|
||||
if not ControllerAdministrators().check_session():
|
||||
return redirect(url_for("administrator.logout"))
|
||||
# auth user
|
||||
if not controllers.Admins().auth(session['admin_email'], session['admin_password']):
|
||||
if not ControllerAdministrators().auth(session['admin_email'], session['admin_password']):
|
||||
return redirect(url_for("administrator.logout"))
|
||||
# check exists server
|
||||
if models.Servers.select().where(models.Servers.id == server_id).count() == 0:
|
||||
|
@ -259,10 +257,10 @@ def servers_edit(server_id):
|
|||
@viewAdministrator.route('/settings/')
|
||||
def settings_index():
|
||||
# check session
|
||||
if not controllers.Admins().check_session():
|
||||
if not ControllerAdministrators().check_session():
|
||||
return redirect(url_for("administrator.logout"))
|
||||
# auth user
|
||||
if not controllers.Admins().auth(session['admin_email'], session['admin_password']):
|
||||
if not ControllerAdministrators().auth(session['admin_email'], session['admin_password']):
|
||||
return redirect(url_for("administrator.logout"))
|
||||
|
||||
settings_list = {
|
||||
|
@ -276,10 +274,10 @@ def settings_index():
|
|||
@viewAdministrator.route('/settings/create', methods=['GET', 'POST'])
|
||||
def settings_create():
|
||||
# check session
|
||||
if not controllers.Admins().check_session():
|
||||
if not ControllerAdministrators().check_session():
|
||||
return redirect(url_for("administrator.logout"))
|
||||
# auth user
|
||||
if not controllers.Admins().auth(session['admin_email'], session['admin_password']):
|
||||
if not ControllerAdministrators().auth(session['admin_email'], session['admin_password']):
|
||||
return redirect(url_for("administrator.logout"))
|
||||
# Обрабатываем POST-запрос
|
||||
if request.method == 'POST':
|
||||
|
@ -299,26 +297,26 @@ def settings_create():
|
|||
@viewAdministrator.route('/settings/delete', methods=['GET', 'POST'])
|
||||
def settings_delete():
|
||||
# check session
|
||||
if not controllers.Admins().check_session():
|
||||
if not ControllerAdministrators().check_session():
|
||||
return redirect(url_for("administrator.logout"))
|
||||
|
||||
#
|
||||
if models.Settings.select().where(models.Settings.id == request.args['id']).count() == 0:
|
||||
return redirect(url_for('administrator.settings_index'))
|
||||
|
||||
#
|
||||
if request.method == 'POST':
|
||||
delete_set = models.Settings.delete().where(models.Settings.id == request.form['id'])
|
||||
delete_set.execute()
|
||||
return redirect(url_for('administrator.settings_index'))
|
||||
|
||||
#
|
||||
setting = models.Settings.select().where(models.Settings.id == request.args['id']).limit(1)[0]
|
||||
|
||||
#
|
||||
return render_template('administrator/settings/delete.html', setting=setting)
|
||||
|
||||
|
||||
@viewAdministrator.route('/settings/update', methods=['GET', 'POST'])
|
||||
def settings_update():
|
||||
# check session
|
||||
if not controllers.Admins().check_session():
|
||||
if not ControllerAdministrators().check_session():
|
||||
return redirect(url_for("administrator.logout"))
|
||||
|
||||
if models.Settings.select().where(models.Settings.id == request.args['id']).count() == 0:
|
||||
|
@ -336,11 +334,9 @@ def settings_update():
|
|||
@viewAdministrator.route('/settings/messages/email_test.html', methods=['GET', 'POST'])
|
||||
def settings_messages_email_test():
|
||||
# check session
|
||||
if not controllers.Admins().check_session():
|
||||
if not ControllerAdministrators().check_session():
|
||||
return redirect(url_for("administrator.logout"))
|
||||
|
||||
from app.cloud.controllers import ControllerMessagesEmail
|
||||
|
||||
email = ControllerMessagesEmail()
|
||||
email.send(title='test', to='vanzhiganov@ya.ru', lead='qwdqwd', message='qwdqwd', callout='qwdqwd')
|
||||
# if request.method == 'POST':
|
||||
|
@ -350,115 +346,3 @@ def settings_messages_email_test():
|
|||
# get setting parameter by ID
|
||||
setting = models.Settings.select().where(models.Settings.id == request.args['id']).limit(1)[0]
|
||||
return render_template('administrator/settings/messages/email.html')
|
||||
|
||||
|
||||
|
||||
@viewAdministrator.route('/wiki/', methods=['GET', 'POST'])
|
||||
def wiki_index():
|
||||
# check session
|
||||
if not controllers.Admins().check_session():
|
||||
return redirect(url_for("administrator.logout"))
|
||||
|
||||
categories = {
|
||||
"total": models.WikiCategories.select().count(),
|
||||
"items": models.WikiCategories.select()
|
||||
}
|
||||
# get articles for currently category
|
||||
articles = {
|
||||
"total": models.WikiArticles.select().count(),
|
||||
"items": models.WikiArticles.select(
|
||||
models.WikiArticles.id, models.WikiArticles.title, models.WikiArticles.category
|
||||
)
|
||||
}
|
||||
return render_template('administrator/wiki/index.html', categories=categories, articles=articles)
|
||||
|
||||
|
||||
@viewAdministrator.route('/wiki/category/create', methods=['GET', 'POST'])
|
||||
def wiki_category_create():
|
||||
# check session
|
||||
if not controllers.Admins().check_session():
|
||||
return redirect(url_for("administrator.logout"))
|
||||
if request.method == "POST":
|
||||
category_id = uuid4()
|
||||
title = request.form['title']
|
||||
description = request.form['description']
|
||||
status = request.form['status']
|
||||
|
||||
if models.WikiCategories.select().where(models.WikiCategories.title == title).count() == 0:
|
||||
models.WikiCategories.create(id=category_id, title=title, description=description, status=status)
|
||||
else:
|
||||
g.errors['items'].append('Already exists')
|
||||
g.errors['total'] += 1
|
||||
return redirect(url_for('administrator.wiki_index'))
|
||||
return render_template('administrator/wiki/category/create.html')
|
||||
|
||||
|
||||
@viewAdministrator.route('/wiki/article/edit/<uuid:article_id>', methods=['GET', 'POST'])
|
||||
def wiki_article_edit(article_id):
|
||||
# check session
|
||||
if not controllers.Admins().check_session():
|
||||
return redirect(url_for("administrator.logout"))
|
||||
|
||||
# todo: check exists article
|
||||
|
||||
if request.method == "POST":
|
||||
print request.form
|
||||
print 'ok'
|
||||
|
||||
# todo: validate
|
||||
title = request.form['title']
|
||||
content = request.form['content']
|
||||
status = request.form['status']
|
||||
|
||||
uq = models.WikiArticles.update(
|
||||
title=title,
|
||||
content=content,
|
||||
status=status
|
||||
).where(models.WikiArticles.id == article_id)
|
||||
uq.execute()
|
||||
|
||||
# get article
|
||||
article = models.WikiArticles.select().where(
|
||||
models.WikiArticles.id == article_id
|
||||
)[0]
|
||||
|
||||
return render_template(
|
||||
'administrator/wiki/article/edit.html',
|
||||
article=article
|
||||
)
|
||||
|
||||
|
||||
@viewAdministrator.route('/wiki/article/create', methods=['GET', 'POST'])
|
||||
def wiki_article_create():
|
||||
# check session
|
||||
if not controllers.Admins().check_session():
|
||||
return redirect(url_for("administrator.logout"))
|
||||
|
||||
if request.method == "POST":
|
||||
# todo: check exists article
|
||||
# todo: validate
|
||||
article_id = uuid4()
|
||||
title = request.form['title']
|
||||
content = request.form['content']
|
||||
status = request.form['status']
|
||||
category_id = request.form['category_id']
|
||||
|
||||
models.WikiArticles.create(
|
||||
id=article_id,
|
||||
title=title,
|
||||
content=content,
|
||||
status=status,
|
||||
category=category_id
|
||||
)
|
||||
|
||||
return redirect(url_for('administrator.wiki_index'))
|
||||
|
||||
categories = {
|
||||
"total": models.WikiCategories.select().count(),
|
||||
"items": models.WikiCategories.select()
|
||||
}
|
||||
|
||||
return render_template(
|
||||
'administrator/wiki/article/create.html',
|
||||
categories=categories
|
||||
)
|
||||
|
|
|
@ -3,13 +3,9 @@
|
|||
<title></title>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<!-- Bootstrap Core CSS -->
|
||||
<link href="{{ url_for('static', filename='administrator/css/bootstrap.min.css') }}" rel="stylesheet">
|
||||
<!-- Custom CSS -->
|
||||
<link href="{{ url_for('static', filename='administrator/css/sb-admin.css') }}" rel="stylesheet">
|
||||
<!-- Morris Charts CSS -->
|
||||
<link href="{{ url_for('static', filename='administrator/css/plugins/morris.css') }}" rel="stylesheet">
|
||||
<!-- Custom Fonts -->
|
||||
<link href="{{ url_for('static', filename='administrator/font-awesome/css/font-awesome.min.css') }}" rel="stylesheet" type="text/css">
|
||||
<!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
|
||||
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
|
||||
|
@ -28,7 +24,7 @@
|
|||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
</button>
|
||||
<a class="navbar-brand" href="{{ url_for('administrator.dashboard') }}">CDN Manager</a>
|
||||
<a class="navbar-brand" href="{{ url_for('administrator.dashboard') }}">Cloud Manager</a>
|
||||
</div>
|
||||
<!-- Top Menu Items -->
|
||||
<ul class="nav navbar-right top-nav">
|
||||
|
@ -88,46 +84,24 @@
|
|||
<li class="dropdown">
|
||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown"><i class="fa fa-bell"></i> <b class="caret"></b></a>
|
||||
<ul class="dropdown-menu alert-dropdown">
|
||||
<li>
|
||||
<a href="#">Alert Name <span class="label label-default">Alert Badge</span></a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#">Alert Name <span class="label label-primary">Alert Badge</span></a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#">Alert Name <span class="label label-success">Alert Badge</span></a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#">Alert Name <span class="label label-info">Alert Badge</span></a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#">Alert Name <span class="label label-warning">Alert Badge</span></a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#">Alert Name <span class="label label-danger">Alert Badge</span></a>
|
||||
</li>
|
||||
<li><a href="#">Alert Name <span class="label label-default">Alert Badge</span></a></li>
|
||||
<li><a href="#">Alert Name <span class="label label-primary">Alert Badge</span></a></li>
|
||||
<li><a href="#">Alert Name <span class="label label-success">Alert Badge</span></a></li>
|
||||
<li><a href="#">Alert Name <span class="label label-info">Alert Badge</span></a></li>
|
||||
<li><a href="#">Alert Name <span class="label label-warning">Alert Badge</span></a></li>
|
||||
<li><a href="#">Alert Name <span class="label label-danger">Alert Badge</span></a></li>
|
||||
<li class="divider"></li>
|
||||
<li>
|
||||
<a href="#">View All</a>
|
||||
</li>
|
||||
<li><a href="#">View All</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="dropdown">
|
||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown"><i class="fa fa-user"></i> John Smith <b class="caret"></b></a>
|
||||
<ul class="dropdown-menu">
|
||||
<li>
|
||||
<a href="#"><i class="fa fa-fw fa-user"></i> Profile</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#"><i class="fa fa-fw fa-envelope"></i> Inbox</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#"><i class="fa fa-fw fa-gear"></i> Settings</a>
|
||||
</li>
|
||||
<li><a href="#"><i class="fa fa-fw fa-user"></i> Profile</a></li>
|
||||
<li><a href="#"><i class="fa fa-fw fa-envelope"></i> Inbox</a></li>
|
||||
<li><a href="#"><i class="fa fa-fw fa-gear"></i> Settings</a></li>
|
||||
<li class="divider"></li>
|
||||
<li>
|
||||
<a href="#"><i class="fa fa-fw fa-power-off"></i> Log Out</a>
|
||||
</li>
|
||||
<li><a href="#"><i class="fa fa-fw fa-power-off"></i> Log Out</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
|
@ -136,16 +110,16 @@
|
|||
<ul class="nav navbar-nav side-nav">
|
||||
<li><a href="{{ url_for('administrator.dashboard') }}"><i class="fa fa-fw fa-dashboard"></i> Dashboard</a></li>
|
||||
<li><a href="{{ url_for('administrator.users') }}"><i class="fa fa-fw fa-table"></i> Users</a></li>
|
||||
<li><a href="{{ url_for('administrator.rules') }}"><i class="fa fa-fw fa-table"></i> Rules</a></li>
|
||||
<li><a href="{{ url_for('administrator.rules') }}"><i class="fa fa-fw fa-table"></i> Containers</a></li>
|
||||
<li><a href="{{ url_for('administrator.payments') }}"><i class="fa fa-fw fa-table"></i> Payments</a></li>
|
||||
<li><a href="{{ url_for('administrator.traffic') }}"><i class="fa fa-fw fa-table"></i> Traffic</a></li>
|
||||
<li><a href="{{ url_for('administrator.servers_index') }}"><i class="fa fa-fw fa-table"></i> Servers</a>
|
||||
<li><a href="#"><i class="fa fa-fw fa-table"></i> Traffic</a></li>
|
||||
<li><a href="#"><i class="fa fa-fw fa-table"></i> Infrastructure</a>
|
||||
<ul>
|
||||
<li><a href="{{ url_for('administrator.datacenters') }}"><i class="fa fa-fw fa-table"></i> Datacenters</a></li>
|
||||
<li><a href="{{ url_for('administrator.servers_index') }}"><i class="fa fa-fw fa-table"></i> Servers</a></li>
|
||||
<li><a href="{{ url_for('administrator.servers_index') }}"><i class="fa fa-fw fa-table"></i> IPs</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="{{ url_for('administrator.wiki_index') }}"><i class="fa fa-fw fa-table"></i>Wiki</a></li>
|
||||
<li><a href="{{ url_for('administrator.settings_index') }}"><i class="fa fa-fw fa-table"></i> Settings</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
|
21
uwsgi.origin.ini
Normal file
21
uwsgi.origin.ini
Normal file
|
@ -0,0 +1,21 @@
|
|||
[uwsgi]
|
||||
;virtualenv
|
||||
;virtualenv = /var/env/gocloud.ru/
|
||||
virtualenv=/home/vanzhiganov/env/gocloud_server/
|
||||
|
||||
;for http
|
||||
;protocol = http
|
||||
;socket = 127.0.0.1:8080
|
||||
|
||||
; for unix-socket
|
||||
socket = /tmp/procdnru_server.sock
|
||||
chmod-socket = 770
|
||||
|
||||
module = app:app
|
||||
|
||||
master = true
|
||||
processes = 5
|
||||
|
||||
vacuum = true
|
||||
|
||||
die-on-term = true
|
Loading…
Add table
Reference in a new issue