Add missing code to remotelogin.py patch
All checks were successful
Build and Push Docker Image / build (push) Successful in 5m8s

This commit is contained in:
2024-12-27 20:11:44 +01:00
parent 32c21763aa
commit 1f22ed40ae
2 changed files with 66 additions and 35 deletions

View File

@@ -107,7 +107,7 @@ RUN echo "**** build & install calibre-web ****" 1>&2 \
-r requirements.txt \
-r optional-requirements.txt
run echo "**** copy unrar and kepubify to app folder ****" 1>&2 \
RUN echo "**** copy unrar and kepubify to app folder ****" 1>&2 \
&& mv /usr/bin/unrar /app/bin \
&& mv ./root/go/bin/kepubify /app/bin
@@ -153,6 +153,7 @@ RUN \
&& apt install -y imagemagick \
&& apt install -y bash \
&& apt install -y procps \
&& apt install -y vim \
&& apt install -y python3

View File

@@ -1,43 +1,73 @@
*** cps/remotelogin.py Thu Dec 26 10:33:32 2024
--- ../calibre-web/cps/remotelogin.py Thu Dec 26 10:32:13 2024
*** remotelogin.py.ori Fri Dec 27 19:50:57 2024
--- remotelogin.py Fri Dec 27 20:05:34 2024
***************
*** 33,38 ****
--- 33,47 ----
--- 33,41 ----
from .render_template import render_title_template
from .usermanagement import user_login_required
+ try:
+ import qrcode
+ from base64 import b64encode
+ from base64 import b64encode
+ from io import BytesIO
+ from flask import send_file
+ has_qrcode = True
+ except ImportError:
+ has_qrcode = False
remotelogin = Blueprint('remotelogin', __name__)
log = logger.create()
+ remotelogin = Blueprint('remotelogin', __name__)
+ log = logger.create()
+
try:
import qrcode
from base64 import b64encode
***************
*** 59,64 ****
--- 68,87 ----
ub.session.add(auth_token)
*** 40,51 ****
from io import BytesIO
from flask import send_file
has_qrcode = True
except ImportError:
has_qrcode = False
!
! remotelogin = Blueprint('remotelogin', __name__)
! log = logger.create()
!
def remote_login_required(f):
@wraps(f)
--- 43,52 ----
from io import BytesIO
from flask import send_file
has_qrcode = True
+ log.info("Magic Link QRCode is enabled")
except ImportError:
has_qrcode = False
! log.info("QRCode is not available")
def remote_login_required(f):
@wraps(f)
***************
*** 69,74 ****
--- 70,76 ----
ub.session_commit()
verify_url = url_for('remotelogin.verify_token', token=auth_token.auth_token, _external=true)
+ if has_qrcode:
+ qr = qrcode.QRCode(version=1,
+ error_correction=qrcode.constants.ERROR_CORRECT_H,
+ box_size=5,
+ border=4,
+ )
+ qr.add_data(verify_url)
+ qr.make(fit=True)
+ img = qr.make_image()
+ img_buf = BytesIO()
+ img.save(img_buf,format = 'jpeg')
+ qrcode_url = "data:image/jpeg;base64, %s" % b64encode(img_buf.getvalue()).decode()
+ else:
+ qrcode_url = ""
if has_qrcode:
+ log.debug("Building the QRCode for magik link")
qr = qrcode.QRCode(version=1,
error_correction=qrcode.constants.ERROR_CORRECT_H,
box_size=5,
***************
*** 83,90 ****
else:
qrcode_url = ""
log.debug("Remot Login request with token: %s", auth_token.auth_token)
return render_title_template('remote_login.html', title=_("Login"), token=auth_token.auth_token,
verify_url=verify_url, page="remotelogin")
! return render_title_template('remote_login.html', title=_("Login"), token=auth_token.auth_token,
! verify_url=verify_url, page="remotelogin")
@remotelogin.route('/verify/<token>')
--- 85,97 ----
else:
qrcode_url = ""
log.debug("Remot Login request with token: %s", auth_token.auth_token)
! return render_title_template('remote_login.html',
! title=_("Login"),
! token=auth_token.auth_token,
! verify_url=verify_url,
! page="remotelogin",
! qrcode=qrcode,
! qrcode_url=qrcode_url)
@remotelogin.route('/verify/<token>')