From 0f6d0f524b7a3a1c468e117fcc7f1b996a2eebca Mon Sep 17 00:00:00 2001 From: Mitchell Moore <mmoo97@uab.edu> Date: Thu, 19 Mar 2020 10:53:28 -0500 Subject: [PATCH 1/9] Test referrer capture --- app/__init__.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/app/__init__.py b/app/__init__.py index 2343984..4af703d 100644 --- a/app/__init__.py +++ b/app/__init__.py @@ -23,7 +23,15 @@ def create_app(config_name): if "redir" in request.args and 'return_url' not in session: # check for redir arg in url session['return_url'] = request.args.get("redir") or "/pun/sys/dashboard" - return render_template('auth/SignUp.html', room_id=session['uid']) + referrer = request.referrer + + print(referrer) + + return render_template('auth/SignUp.html', room_id=session['uid'], referrer=referrer) + + def redirect_url(): + return request.args.get('next') or \ + request.referrer # misc page error catching @app.errorhandler(403) -- GitLab From 143a70120aeb956cb7b3a017f887455d5ebb2c76 Mon Sep 17 00:00:00 2001 From: Mitchell Moore <mmoo97@uab.edu> Date: Thu, 19 Mar 2020 11:38:37 -0500 Subject: [PATCH 2/9] Create referer test with redirect implementation --- app/__init__.py | 6 +----- app/templates/auth/SignUp.html | 1 + run.py | 2 +- 3 files changed, 3 insertions(+), 6 deletions(-) diff --git a/app/__init__.py b/app/__init__.py index 4af703d..63abf80 100644 --- a/app/__init__.py +++ b/app/__init__.py @@ -25,14 +25,10 @@ def create_app(config_name): referrer = request.referrer - print(referrer) + print("Referer: " + referrer) return render_template('auth/SignUp.html', room_id=session['uid'], referrer=referrer) - def redirect_url(): - return request.args.get('next') or \ - request.referrer - # misc page error catching @app.errorhandler(403) def forbidden(error): diff --git a/app/templates/auth/SignUp.html b/app/templates/auth/SignUp.html index 617b083..7d2ac36 100644 --- a/app/templates/auth/SignUp.html +++ b/app/templates/auth/SignUp.html @@ -21,6 +21,7 @@ socket.on( 'account ready', function( msg ) { $('#myModal').modal('hide'); alert("Account has been created!"); + window.location.replace({{ referrer }}); }) socket.on( 'Account creation failed', function( msg ) { diff --git a/run.py b/run.py index 6f6065a..7a9c2b0 100644 --- a/run.py +++ b/run.py @@ -2,7 +2,6 @@ import os import time -import signal import tasks import vars @@ -23,6 +22,7 @@ socketio = SocketIO(app, message_queue= vars.message_queue) def socket_connect(): pass + @socketio.on('join_room') def on_room(): -- GitLab From 896eb7e87e1dd624f45e8f5343eec5484fd279c4 Mon Sep 17 00:00:00 2001 From: Mitchell Moore <mmoo97@uab.edu> Date: Thu, 19 Mar 2020 13:29:28 -0500 Subject: [PATCH 3/9] Handle nontype referrer --- app/__init__.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/app/__init__.py b/app/__init__.py index 63abf80..cb60225 100644 --- a/app/__init__.py +++ b/app/__init__.py @@ -25,7 +25,11 @@ def create_app(config_name): referrer = request.referrer - print("Referer: " + referrer) + if referrer is None: + + print("Referer: None") + else: + print("Referer: " + referrer) return render_template('auth/SignUp.html', room_id=session['uid'], referrer=referrer) -- GitLab From bcb2b04bd63f78a33689900c391311385f917796 Mon Sep 17 00:00:00 2001 From: Mitchell Moore <mmoo97@uab.edu> Date: Fri, 20 Mar 2020 08:40:09 -0500 Subject: [PATCH 4/9] Fix variable name --- run.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/run.py b/run.py index 7a9c2b0..b2b023b 100644 --- a/run.py +++ b/run.py @@ -34,10 +34,10 @@ def on_room(): @socketio.on('request account') def request_account(json, methods=['GET', 'POST']): print (time.strftime("%m-%d-%Y_%H:%M:%S") + '\tQueue request received: ' + str(json)) - sid = str(session['uid']) - print("Room: {}".format(sid)) + room = str(session['uid']) + print("Room: {}".format(room)) try: - tasks.celery_create_account.delay(json['username'], json['fullname'], json['reason'], session=sid) + tasks.celery_create_account.delay(json['username'], json['fullname'], json['reason'], session=room) except Exception as e: print(time.strftime("%m-%d-%Y_%H:%M:%S") + "\tError in account creation: ", e) socketio.emit("Account creation failed", room) -- GitLab From dfbed26c9f0a51d6e6389f008f5bb06b2a85c909 Mon Sep 17 00:00:00 2001 From: Mitchell Moore <mmoo97@uab.edu> Date: Fri, 20 Mar 2020 09:37:30 -0500 Subject: [PATCH 5/9] Implement default referrer --- app/__init__.py | 9 +++------ vars.py | 1 + 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/app/__init__.py b/app/__init__.py index cb60225..8460cfa 100644 --- a/app/__init__.py +++ b/app/__init__.py @@ -2,6 +2,7 @@ # local imports from __future__ import print_function +import vars # third-party imports import uuid @@ -23,13 +24,9 @@ def create_app(config_name): if "redir" in request.args and 'return_url' not in session: # check for redir arg in url session['return_url'] = request.args.get("redir") or "/pun/sys/dashboard" - referrer = request.referrer + referrer = request.referrer or vars.default_referrer - if referrer is None: - - print("Referer: None") - else: - print("Referer: " + referrer) + print("Referer: " + referrer) return render_template('auth/SignUp.html', room_id=session['uid'], referrer=referrer) diff --git a/vars.py b/vars.py index 6d94b57..988ed18 100644 --- a/vars.py +++ b/vars.py @@ -3,3 +3,4 @@ password = 'reggie' key = 'vnkdjnfjknfl1232' broker_url = 'amqp://' + id + ':' + password + '@ohpc:5672/' message_queue = broker_url + 'socketio' +default_referrer = "https://docs.uabgrid.uab.edu/wiki/Cheaha_Quick_Start" -- GitLab From 91f3b38922856a0646ef590e123f64d31bccb8eb Mon Sep 17 00:00:00 2001 From: Mitchell Moore <mmoo97@uab.edu> Date: Fri, 20 Mar 2020 09:40:33 -0500 Subject: [PATCH 6/9] Fix syntax error --- app/templates/auth/SignUp.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/templates/auth/SignUp.html b/app/templates/auth/SignUp.html index 7d2ac36..0e25d24 100644 --- a/app/templates/auth/SignUp.html +++ b/app/templates/auth/SignUp.html @@ -21,7 +21,7 @@ socket.on( 'account ready', function( msg ) { $('#myModal').modal('hide'); alert("Account has been created!"); - window.location.replace({{ referrer }}); + window.location.replace('{{ referrer }}'); }) socket.on( 'Account creation failed', function( msg ) { -- GitLab From ebb2e3676385056785d9f95bbb70775deeb7678f Mon Sep 17 00:00:00 2001 From: Mitchell Moore <mmoo97@uab.edu> Date: Fri, 20 Mar 2020 09:50:31 -0500 Subject: [PATCH 7/9] Clean up server output --- app/__init__.py | 2 -- app/templates/auth/SignUp.html | 12 +++++++----- run.py | 4 +++- 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/app/__init__.py b/app/__init__.py index 8460cfa..67820e2 100644 --- a/app/__init__.py +++ b/app/__init__.py @@ -26,8 +26,6 @@ def create_app(config_name): referrer = request.referrer or vars.default_referrer - print("Referer: " + referrer) - return render_template('auth/SignUp.html', room_id=session['uid'], referrer=referrer) # misc page error catching diff --git a/app/templates/auth/SignUp.html b/app/templates/auth/SignUp.html index 0e25d24..891a09a 100644 --- a/app/templates/auth/SignUp.html +++ b/app/templates/auth/SignUp.html @@ -11,24 +11,26 @@ var socket = io.connect('http://' + document.domain + ':' + location.port); socket.on( 'connect', function() { - socket.emit( 'join_room' ) + socket.emit( 'join_room', { + referrer: '{{ referrer }}' + }); socket.on( 'creating account', function( msg ) { document.getElementById("error").innerText = ""; displayloading(); - }) + }); socket.on( 'account ready', function( msg ) { $('#myModal').modal('hide'); alert("Account has been created!"); window.location.replace('{{ referrer }}'); - }) + }); socket.on( 'Account creation failed', function( msg ) { document.getElementById("error").innerText = "Registration Failed. Please try again."; - }) + }); - }) + }); </script> <style type="text/css"> diff --git a/run.py b/run.py index b2b023b..9ed918f 100644 --- a/run.py +++ b/run.py @@ -24,11 +24,13 @@ def socket_connect(): @socketio.on('join_room') -def on_room(): +def on_room(json): room = str(session['uid']) + referrer = json['referrer'] join_room(room) print('\t\t\t|-----Room ID: ' + room) + print('\t\t\t|-----Referrer: ' + referrer) @socketio.on('request account') -- GitLab From 804cfa263c564166c72527a746586b1517aff09a Mon Sep 17 00:00:00 2001 From: Mitchell Moore <mmoo97@uab.edu> Date: Fri, 20 Mar 2020 11:24:16 -0500 Subject: [PATCH 8/9] Condense return url functionality --- app/__init__.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/app/__init__.py b/app/__init__.py index 67820e2..3486515 100644 --- a/app/__init__.py +++ b/app/__init__.py @@ -22,11 +22,9 @@ def create_app(config_name): session['uid']=str(uuid.uuid4()) if "redir" in request.args and 'return_url' not in session: # check for redir arg in url - session['return_url'] = request.args.get("redir") or "/pun/sys/dashboard" + session['return_url'] = request.args.get("redir") or request.referrer or vars.default_referrer - referrer = request.referrer or vars.default_referrer - - return render_template('auth/SignUp.html', room_id=session['uid'], referrer=referrer) + return render_template('auth/SignUp.html', room_id=session['uid'], referrer=session['return_url']) # misc page error catching @app.errorhandler(403) -- GitLab From 44ffc89fe833097e30fe2b912c50f43fe0718db2 Mon Sep 17 00:00:00 2001 From: Mitchell Moore <mmoo97@uab.edu> Date: Fri, 20 Mar 2020 11:59:48 -0500 Subject: [PATCH 9/9] Fix return url priority. Clean up whitespace --- app/__init__.py | 2 +- tasks.py | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/app/__init__.py b/app/__init__.py index 3486515..2ef919d 100644 --- a/app/__init__.py +++ b/app/__init__.py @@ -22,7 +22,7 @@ def create_app(config_name): session['uid']=str(uuid.uuid4()) if "redir" in request.args and 'return_url' not in session: # check for redir arg in url - session['return_url'] = request.args.get("redir") or request.referrer or vars.default_referrer + session['return_url'] = request.args.get("redir") or vars.default_referrer or request.referrer return render_template('auth/SignUp.html', room_id=session['uid'], referrer=session['return_url']) diff --git a/tasks.py b/tasks.py index e380c9c..7deec3a 100644 --- a/tasks.py +++ b/tasks.py @@ -12,10 +12,12 @@ celery = Celery('flask_user_reg', broker=broker_url) socketio = SocketIO(message_queue=vars.message_queue) + def send_msg(event, room): print("Post '{}' to room '{}'".format(event,room)) socketio.emit(event, room=room) + @celery.task def celery_create_account(username, fullname, reason, session): room = session -- GitLab