mirror of
https://github.com/cwinfo/powerdns-admin.git
synced 2024-11-14 01:20:27 +00:00
Merge pull request #142 from kaechele/master
Replace python libraries with better maintained versions
This commit is contained in:
commit
4f122830bc
@ -6,7 +6,7 @@ import bcrypt
|
|||||||
import urlparse
|
import urlparse
|
||||||
import itertools
|
import itertools
|
||||||
import traceback
|
import traceback
|
||||||
import onetimepass
|
import pyotp
|
||||||
|
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from distutils.version import StrictVersion
|
from distutils.version import StrictVersion
|
||||||
@ -111,17 +111,18 @@ class User(db.Model):
|
|||||||
return 'otpauth://totp/PowerDNS-Admin:%s?secret=%s&issuer=PowerDNS-Admin' % (self.username, self.otp_secret)
|
return 'otpauth://totp/PowerDNS-Admin:%s?secret=%s&issuer=PowerDNS-Admin' % (self.username, self.otp_secret)
|
||||||
|
|
||||||
def verify_totp(self, token):
|
def verify_totp(self, token):
|
||||||
return onetimepass.valid_totp(token, self.otp_secret)
|
totp = pyotp.TOTP(self.otp_secret)
|
||||||
|
return totp.verify(int(token))
|
||||||
|
|
||||||
def get_hashed_password(self, plain_text_password=None):
|
def get_hashed_password(self, plain_text_password=None):
|
||||||
# Hash a password for the first time
|
# Hash a password for the first time
|
||||||
# (Using bcrypt, the salt is saved into the hash itself)
|
# (Using bcrypt, the salt is saved into the hash itself)
|
||||||
pw = plain_text_password if plain_text_password else self.plain_text_password
|
pw = plain_text_password if plain_text_password else self.plain_text_password
|
||||||
return bcrypt.hashpw(pw, bcrypt.gensalt())
|
return bcrypt.hashpw(pw.encode('utf-8'), bcrypt.gensalt())
|
||||||
|
|
||||||
def check_password(self, hashed_password):
|
def check_password(self, hashed_password):
|
||||||
# Check hased password. Useing bcrypt, the salt is saved into the hash itself
|
# Check hased password. Useing bcrypt, the salt is saved into the hash itself
|
||||||
return bcrypt.checkpw(self.plain_text_password, hashed_password)
|
return bcrypt.checkpw(self.plain_text_password.encode('utf-8'), hashed_password.encode('utf-8'))
|
||||||
|
|
||||||
def get_user_info_by_id(self):
|
def get_user_info_by_id(self):
|
||||||
user_info = User.query.get(int(self.id))
|
user_info = User.query.get(int(self.id))
|
||||||
|
@ -8,7 +8,8 @@ from functools import wraps
|
|||||||
from io import BytesIO
|
from io import BytesIO
|
||||||
|
|
||||||
import jinja2
|
import jinja2
|
||||||
import pyqrcode
|
import qrcode as qrc
|
||||||
|
import qrcode.image.svg as qrc_svg
|
||||||
from flask import g, request, make_response, jsonify, render_template, session, redirect, url_for, send_from_directory, abort
|
from flask import g, request, make_response, jsonify, render_template, session, redirect, url_for, send_from_directory, abort
|
||||||
from flask_login import login_user, logout_user, current_user, login_required
|
from flask_login import login_user, logout_user, current_user, login_required
|
||||||
from werkzeug import secure_filename
|
from werkzeug import secure_filename
|
||||||
@ -712,9 +713,9 @@ def qrcode():
|
|||||||
return redirect(url_for('index'))
|
return redirect(url_for('index'))
|
||||||
|
|
||||||
# render qrcode for FreeTOTP
|
# render qrcode for FreeTOTP
|
||||||
url = pyqrcode.create(current_user.get_totp_uri())
|
img = qrc.make(current_user.get_totp_uri(), image_factory=qrc_svg.SvgImage)
|
||||||
stream = BytesIO()
|
stream = BytesIO()
|
||||||
url.svg(stream, scale=3)
|
img.save(stream)
|
||||||
return stream.getvalue(), 200, {
|
return stream.getvalue(), 200, {
|
||||||
'Content-Type': 'image/svg+xml',
|
'Content-Type': 'image/svg+xml',
|
||||||
'Cache-Control': 'no-cache, no-store, must-revalidate',
|
'Cache-Control': 'no-cache, no-store, must-revalidate',
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#!flask/bin/python
|
#!/usr/bin/env python
|
||||||
|
|
||||||
from migrate.versioning import api
|
from migrate.versioning import api
|
||||||
from config import SQLALCHEMY_DATABASE_URI
|
from config import SQLALCHEMY_DATABASE_URI
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#!flask/bin/python
|
#!/usr/bin/env python
|
||||||
from migrate.versioning import api
|
from migrate.versioning import api
|
||||||
from config import SQLALCHEMY_DATABASE_URI
|
from config import SQLALCHEMY_DATABASE_URI
|
||||||
from config import SQLALCHEMY_MIGRATE_REPO
|
from config import SQLALCHEMY_MIGRATE_REPO
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#!flask/bin/python
|
#!/usr/bin/env python
|
||||||
import imp
|
import imp
|
||||||
from migrate.versioning import api
|
from migrate.versioning import api
|
||||||
from app import db
|
from app import db
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#!flask/bin/python
|
#!/usr/bin/env python
|
||||||
from migrate.versioning import api
|
from migrate.versioning import api
|
||||||
from config import SQLALCHEMY_DATABASE_URI
|
from config import SQLALCHEMY_DATABASE_URI
|
||||||
from config import SQLALCHEMY_MIGRATE_REPO
|
from config import SQLALCHEMY_MIGRATE_REPO
|
||||||
|
@ -2,13 +2,13 @@ Flask>=0.10
|
|||||||
Flask-WTF>=0.11
|
Flask-WTF>=0.11
|
||||||
Flask-Login>=0.2.11
|
Flask-Login>=0.2.11
|
||||||
configobj==5.0.5
|
configobj==5.0.5
|
||||||
py-bcrypt==0.4
|
bcrypt==3.1.0
|
||||||
requests==2.7.0
|
requests==2.7.0
|
||||||
python-ldap==2.4.21
|
python-ldap==2.4.21
|
||||||
Flask-SQLAlchemy==2.1
|
Flask-SQLAlchemy==2.1
|
||||||
SQLAlchemy==1.0.9
|
SQLAlchemy==1.0.9
|
||||||
sqlalchemy-migrate==0.10.0
|
sqlalchemy-migrate==0.10.0
|
||||||
onetimepass==1.0.1
|
pyotp==2.2.1
|
||||||
PyQRCode==1.2
|
qrcode==5.3
|
||||||
Flask-OAuthlib==0.9.3
|
Flask-OAuthlib==0.9.3
|
||||||
dnspython>=1.12.0
|
dnspython>=1.12.0
|
Loading…
Reference in New Issue
Block a user