diff --git a/patches/remote_login_py.patch b/patches/remote_login_py.patch new file mode 100644 index 0000000..5eed49e --- /dev/null +++ b/patches/remote_login_py.patch @@ -0,0 +1,43 @@ +*** cps/remotelogin.py Thu Dec 26 10:33:32 2024 +--- ../calibre-web/cps/remotelogin.py Thu Dec 26 10:32:13 2024 +*************** +*** 33,38 **** +--- 33,47 ---- + 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() +*************** +*** 59,64 **** +--- 68,87 ---- + ub.session.add(auth_token) + 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 = "" + 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")