clean up documentation
This commit is contained in:
parent
ddd07804ee
commit
96e62c8c4f
9 changed files with 53 additions and 3 deletions
|
@ -8,6 +8,7 @@ from . import db, lm
|
|||
|
||||
import os
|
||||
import random
|
||||
import uuid
|
||||
import base64
|
||||
import hashlib
|
||||
import json
|
||||
|
@ -65,6 +66,7 @@ class User(db.Model, UserMixin):
|
|||
twofactor = db.Column(db.Boolean, default=False) #optional 2factor auth
|
||||
otp_secret = db.Column(db.String)
|
||||
avatar_hash = db.Column(db.String)
|
||||
uuid = db.Column(db.String)
|
||||
|
||||
name = db.Column(db.Unicode)
|
||||
address = db.Column(db.Unicode)
|
||||
|
@ -83,6 +85,7 @@ class User(db.Model, UserMixin):
|
|||
wallet = db.Column(db.Float)
|
||||
currency = db.Column(db.String, default='BGN')
|
||||
|
||||
inv_routers = db.relationship('Router', backref='owner', lazy='dynamic')
|
||||
inv_deployments = db.relationship('Deployment', backref='owner', lazy='dynamic')
|
||||
inv_services = db.relationship('Service', backref='owner', lazy='dynamic')
|
||||
inv_domains = db.relationship('Domain', backref='owner', lazy='dynamic')
|
||||
|
@ -100,13 +103,17 @@ class User(db.Model, UserMixin):
|
|||
#if role is stil not set, create default user role
|
||||
self.role = Role.query.filter_by(default=True).first()
|
||||
|
||||
if self.email is not None and self.avatar_hash is None:
|
||||
if self.avatar_hash is None and self.email is not None:
|
||||
self.avatar_hash = hashlib.md5(self.email.encode('utf-8')).hexdigest()
|
||||
|
||||
if self.otp_secret is None:
|
||||
# generate a random secret
|
||||
self.otp_secret = base64.b32encode(os.urandom(10)).decode('utf-8')
|
||||
|
||||
if self.uuid is None:
|
||||
# generate uuid
|
||||
self.uuid = uuid.uuid4()
|
||||
|
||||
@property
|
||||
def password(self):
|
||||
raise AttributeError('password is not a readable attribute')
|
||||
|
@ -222,6 +229,14 @@ def contact_proxmaster(data, method, cubeid=0):
|
|||
except:
|
||||
return None
|
||||
|
||||
class Router(db.Model):
|
||||
__tablename__ = 'routers'
|
||||
pid = db.Column(db.Integer, primary_key=True)
|
||||
user_id = db.Column(db.Integer, db.ForeignKey('users.pid')) #FK
|
||||
date_created = db.Column(db.DateTime, index=True, default=datetime.utcnow)
|
||||
cancelled = db.Column(db.Boolean, default=False)
|
||||
|
||||
|
||||
class Deployment(db.Model):
|
||||
__tablename__ = 'deployments'
|
||||
pid = db.Column(db.Integer, primary_key=True)
|
||||
|
|
|
@ -46,9 +46,29 @@ def createvm():
|
|||
#flash('Region: {}'.format(str(selected_region.description)))
|
||||
#return redirect(url_for('main.dashboard'))
|
||||
|
||||
router = current_user.inv_routers.filter_by(cancelled=False).all()
|
||||
if router == []:
|
||||
#no router. creating...
|
||||
data = { 'clientid': str(current_user.pid),
|
||||
'clientemail': str(current_user.email),
|
||||
'hostname': 'c' + str(current_user.pid) + 'router',
|
||||
'region': str(selected_region.name),
|
||||
'type': 'kvm',
|
||||
'cpu': '1',
|
||||
'mem': '128',
|
||||
'hdd': '1'
|
||||
}
|
||||
try:
|
||||
query = contact_procmaster(data, 'vmcreate')
|
||||
except:
|
||||
flash('Region unreachable! Cannot create router. Please try again later...')
|
||||
return redirect(url_for('main.dashboard'))
|
||||
#exit 0
|
||||
return redirect(url_for('main.dashboard'))
|
||||
|
||||
data = { 'clientid': str(current_user.pid),
|
||||
'clientemail': str(current_user.email),
|
||||
'hostname': str(form.servername.data),
|
||||
'hostname': 'c' + str(current_user.pid) + str(form.servername.data),
|
||||
'region': str(selected_region.name),
|
||||
'type': 'kvm',
|
||||
'cpu': '1',
|
||||
|
@ -58,7 +78,7 @@ def createvm():
|
|||
try:
|
||||
query = contact_proxmaster(data, 'vmcreate')
|
||||
except:
|
||||
flash('Region unreachable! Please try again later...')
|
||||
flash('Region unreachable! Cannot create deployment. Please try again later...')
|
||||
return redirect(url_for('main.dashboard'))
|
||||
|
||||
if query is not None:
|
||||
|
@ -82,6 +102,8 @@ def remove(itemid=0):
|
|||
query = contact_proxmaster(data, 'vmremove', int(itemid))
|
||||
flash('Machine {} terminated'.format(itemid))
|
||||
deploy.cancelled = True
|
||||
deploy.enabled = False
|
||||
deploy.warning = False
|
||||
db.session.commit()
|
||||
except:
|
||||
flash('Cannot delete machine {}'.format(itemid))
|
||||
|
|
3
docs/TODO
Normal file
3
docs/TODO
Normal file
|
@ -0,0 +1,3 @@
|
|||
1. remote router app pyqt/kivi
|
||||
2. open ssh keyfile with decrypt dialog
|
||||
3. open remote console button, make backup button (with possible schedule timer with checkbox?), route trafic through client machine button on/off
|
9
docs/posts.txt
Normal file
9
docs/posts.txt
Normal file
|
@ -0,0 +1,9 @@
|
|||
templates/settings/profile.html:<form method="POST" action="{{ url_for('settings.profile') }}">
|
||||
templates/dmanager/activate.html:<form method="POST" action"{{ url_for('dmanager.activate', itemid=itemid) }}">
|
||||
templates/vmanager/create.html: <form method="POST" action="{{ url_for('vmanager.createvm') }}">
|
||||
templates/vmanager/activate.html:<form method="POST" action="{{ url_for('vmanager.activate', itemid=deploy.machine_id) }}">
|
||||
templates/vmanager/recipe.html:<form method="POST" action"{{ url_for('vmanager.recipe', itemid=deploy.machine_id) }}">
|
||||
templates/admin/addr2pool.html: <form method="POST" action="{{ url_for('admin.addr2pool') }}">
|
||||
templates/admin/charge.html: <form method="POST" action="{{ url_for('admin.charge', user_pid=usr.pid) }}">
|
||||
templates/uinvoice/invoice.html: <form method="POST" action="{{ url_for('uinvoice.invoice', document_id=document.pid) }}">
|
||||
templates/smanager/activate.html:<form method="POST" action"{{ url_for('smanager.activate', itemid=service.pid) }}">
|
|
@ -1,3 +1,4 @@
|
|||
uuid
|
||||
alembic==0.9.2
|
||||
appdirs==1.4.3
|
||||
Babel==2.4.0
|
||||
|
|
Loading…
Reference in a new issue