Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • rc/self-reg-form
  • louistw/self-reg-form
  • krish94/self-reg-form
3 results
Show changes
Commits on Source (234)
Showing
with 762 additions and 137 deletions
[flake8]
count = True
max-line-length = 79
show-source = True
statistics = True
exclude =
.git,
__pycache__,
venv
image: "python:3.7" image: "python:3.6"
# Change pip's cache directory to be inside the project directory since we can
# only cache local items.
variables:
PIP_CACHE_DIR: "$CI_PROJECT_DIR/.cache/pip"
cache:
paths:
- .cache/pip
- venv/
before_script: before_script:
- python --version - python --version
- pip install flake8 - python3 -m venv venv
- pip install pylint - source venv/bin/activate
- pip install black==22.3.0 flake8==4.0.1 pylint==2.13.8
stages: stages:
- lint - lint
black:
tags:
- lint
stage: lint
script:
- black --check --diff .
only:
- merge_requests
flake8: flake8:
tags: tags:
- lint - lint
stage: lint stage: lint
script: script:
- flake8 --exclude=tests.py --max-line-length=120 *.py app - flake8 .
only:
- merge_requests
pylint: pylint:
tags: tags:
- lint - lint
stage: lint stage: lint
script: script:
- pylint --ignore=tests.py --max-line-length=120 *.py app - pylint app *.py
only:
- merge_requests
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v4.2.0
hooks:
- id: trailing-whitespace
- id: end-of-file-fixer
- repo: https://github.com/psf/black
rev: 23.3.0
hooks:
- id: black
- repo: https://github.com/pycqa/flake8
rev: 3.9.1
hooks:
- id: flake8
- repo: https://github.com/PyCQA/pylint
rev: v2.13.8
hooks:
- id: pylint
# Introduction # Introduction
This is a flask application that leverages [RabbitMQ](https://www.rabbitmq.com/) and [Celery](https://docs.celeryproject.org/en/latest/getting-started/introduction.html) This is a flask application that leverages [RabbitMQ](https://www.rabbitmq.com/) and [Celery](https://docs.celeryproject.org/en/latest/getting-started/introduction.html)
to asynchronously create a Cheaha user account. Currently the project is being developed on an Openstack cluster. to asynchronously create a Cheaha user account. Currently the project is being developed on an Openstack cluster.
# Project Setup # Project Setup
To clone this repo use the command: To clone this repo use the command:
``` ```
$ git clone https://gitlab.rc.uab.edu/mmoo97/flask_user_reg.git $ git clone https://gitlab.rc.uab.edu/mmoo97/flask_user_reg.git
$ cd flask_user_reg $ cd flask_user_reg
``` ```
## Prerequisites ## Prerequisites
### Setup a Virtual Environment ### Setup a Virtual Environment
- Ensure you have created a [virtual environment](https://docs.python.org/3/library/venv.html) - Ensure you have created a [virtual environment](https://docs.python.org/3/library/venv.html)
called `venv` setup running python3. called `venv` setup running python3.
- Note, this project requires a virtual environment running __python3__ (__3.6.8__ in this case). - Note, this project requires a virtual environment running __python3__ (__3.6.8__ in this case).
- Create this by navigating to you home directory via typing `$ cd` and entering the following commands:<br> - Create this by navigating to you home directory via typing `$ cd` and entering the following commands:<br>
``` ```
$ python3 -m venv ~/venv $ python3 -m venv ~/venv
$ source ~/venv $ source ~/venv
``` ```
- Upon Activation, you should see the prompt update accordingly: - Upon Activation, you should see the prompt update accordingly:
``` ```
[centos@ood ~]$ <------Old Prompt [centos@ood ~]$ <------Old Prompt
...@@ -46,7 +46,7 @@ $ pip install -r requirements.txt ...@@ -46,7 +46,7 @@ $ pip install -r requirements.txt
- #### Mac/Linux - #### Mac/Linux
- `$ brew update` - `$ brew update`
- `$ brew install rabbitmq` - `$ brew install rabbitmq`
- it is recommended that you add the following line to your `.bash_profile`: - it is recommended that you add the following line to your `.bash_profile`:
`export PATH=$PATH:/usr/local/opt/rabbitmq/sbin`. `export PATH=$PATH:/usr/local/opt/rabbitmq/sbin`.
- Start server using the command `$ rabbitmq-server`. (Note, this implementation assumes RabbitMQ is running on localhost on standard port 5672) - Start server using the command `$ rabbitmq-server`. (Note, this implementation assumes RabbitMQ is running on localhost on standard port 5672)
- #### Windows - #### Windows
...@@ -56,15 +56,37 @@ $ pip install -r requirements.txt ...@@ -56,15 +56,37 @@ $ pip install -r requirements.txt
- First, import signing key using `$ rpm --import https://github.com/rabbitmq/signing-keys/releases/download/2.0/rabbitmq-release-signing-key.asc` - First, import signing key using `$ rpm --import https://github.com/rabbitmq/signing-keys/releases/download/2.0/rabbitmq-release-signing-key.asc`
- Next, install Erlang using `$ yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm` - Next, install Erlang using `$ yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm`
- Finally, install RabbitMq using `$ yum install rabbitmq-server-3.8.2-1.el8.noarch.rpm` - Finally, install RabbitMq using `$ yum install rabbitmq-server-3.8.2-1.el8.noarch.rpm`
- The server is not started as a daemon by default when the RabbitMQ server package is installed. To start the - The server is not started as a daemon by default when the RabbitMQ server package is installed. To start the
daemon by default when the system boots, as an administrator run: `$ chkconfig rabbitmq-server on`. daemon by default when the system boots, as an administrator run: `$ chkconfig rabbitmq-server on`.
- As an administrator, start and stop the server as usual: <br/>`/sbin/service rabbitmq-server start` - As an administrator, start and stop the server as usual: <br/>`/sbin/service rabbitmq-server start`
<br/> `/sbin/service rabbitmq-server stop` <br/> `/sbin/service rabbitmq-server stop`
- Add the user "reggie" using the command `$ rabbitmqctl add_user reggie reggie`. - Add the user "reggie" using the command `$ rabbitmqctl add_user reggie reggie`.
- The current configuration assumes the following username password combination. To change the password, type - The current configuration assumes the following username password combination. To change the password, type
`$ rabbitmqctl change_password reggie <new_password>`. `$ rabbitmqctl change_password reggie <new_password>`.
- Note that rabbitmqctl may require sudo permissions and that changing the password will require a password - Note that rabbitmqctl may require sudo permissions and that changing the password will require a password
change in the credentials within `test_producer.py` and `base_consumer.py` as well. change in the credentials within `test_producer.py` and `base_consumer.py` as well.
### Setup pre commit hook
- via Homebrew(Mac)
```shell
brew install pre-commit
```
- via pip
```shell
pip install pre-commit
```
After pre-commit is installed, run install in the repo directory:
```shell
$ pre-commit install
> pre-commit installed at .git/hooks/pre-commit
```
# Run Project # Run Project
## 1. Connect to OHPC/OOD ## 1. Connect to OHPC/OOD
...@@ -75,11 +97,11 @@ $ pip install -r requirements.txt ...@@ -75,11 +97,11 @@ $ pip install -r requirements.txt
2. Locate Floating Ip for each instance: <br> 2. Locate Floating Ip for each instance: <br>
![Research Computing Network](/docs/images/rc-network%20.png)<br> ![Research Computing Network](/docs/images/rc-network%20.png)<br>
According to this diagram of the network infrastructure, the IP Addresses that you will need to According to this diagram of the network infrastructure, the IP Addresses that you will need to
connect to in order to ssh into each machine will be `164.111.161.xxx` where connect to in order to ssh into each machine will be `164.111.161.xxx` where
`.xxx` is the last octet of your assigned Floating IP Addresses shown below.<br> `.xxx` is the last octet of your assigned Floating IP Addresses shown below.<br>
![Floating IP Addresses](/docs/images/floating_ips.png)<br> ![Floating IP Addresses](/docs/images/floating_ips.png)<br>
Note that these numbers will typically vary depending on factors in the provisioning Note that these numbers will typically vary depending on factors in the provisioning
process. process.
3. SSH into each machine: <br> 3. SSH into each machine: <br>
...@@ -90,21 +112,21 @@ $ pip install -r requirements.txt ...@@ -90,21 +112,21 @@ $ pip install -r requirements.txt
``` ```
4. Drop Firewall: <br> 4. Drop Firewall: <br>
Currently, the firewall prevents us from connecting to our soon to be running flask app. Currently, the firewall prevents us from connecting to our soon to be running flask app.
To check if the firewall is active, type: <br> To check if the firewall is active, type: <br>
`$ sudo systemctl status firewalld` <br> `$ sudo systemctl status firewalld` <br>
In the case the firewall is still active, type: <br> In the case the firewall is still active, type: <br>
`$ sudo systemctl stop firewalld` <br> `$ sudo systemctl stop firewalld` <br>
In the case you need to turn the firewall back on, type: <br> In the case you need to turn the firewall back on, type: <br>
`sudo systemctl start firewalld` `sudo systemctl start firewalld`
5. Edit Security Rules: <br> 5. Edit Security Rules: <br>
Lastly, we want to make sure that our network it open to run on our flask application Lastly, we want to make sure that our network it open to run on our flask application
which runs on `localhost:5000` by default. Modify your __Default__ security group to which runs on `localhost:5000` by default. Modify your __Default__ security group to
reflect the following rules: <br> reflect the following rules: <br>
![Security Rules](/docs/images/security_rules.png) <br> ![Security Rules](/docs/images/security_rules.png) <br>
The main takeaway/modification in these rules is that traffic is allowed in and out of port 5000. The main takeaway/modification in these rules is that traffic is allowed in and out of port 5000.
## 2. Initialize RabbitMQ ## 2. Initialize RabbitMQ
Make sure that you are running rabbitmq via the command `sudo rabbitmq server`. Make sure that you are running rabbitmq via the command `sudo rabbitmq server`.
...@@ -120,7 +142,7 @@ $ python base_consumer.py ohpc ...@@ -120,7 +142,7 @@ $ python base_consumer.py ohpc
You will notice that the script is awaiting a message to display. You will notice that the script is awaiting a message to display.
To produce a message, run the following on the ood node terminal session: To produce a message, run the following on the ood node terminal session:
``` ```
$ python test_producer.py ohpc $ python test_producer.py ohpc
``` ```
You should now see that the message has been sent and displayed on the ohpc node. You should now see that the message has been sent and displayed on the ohpc node.
...@@ -129,7 +151,7 @@ You should now see that the message has been sent and displayed on the ohpc node ...@@ -129,7 +151,7 @@ You should now see that the message has been sent and displayed on the ohpc node
In order to execute our tasks asychronously, we create a celery worker using the fllowing: <br> In order to execute our tasks asychronously, we create a celery worker using the fllowing: <br>
`$ celery -A tasks worker --loglevel=info --concurrency=4 1> ~/celery.out 2> ~/celery.err &` <br><br> `$ celery -A tasks worker --loglevel=info --concurrency=4 1> ~/celery.out 2> ~/celery.err &` <br><br>
In this case, the `celery -A tasks worker --loglevel=info --concurrency=4` portion of the command In this case, the `celery -A tasks worker --loglevel=info --concurrency=4` portion of the command
is what is initiating the worker and the remainder serves to write the stdout and stderr to two separate files is what is initiating the worker and the remainder serves to write the stdout and stderr to two separate files
located in the home directory and to run the process in the background. <br> located in the home directory and to run the process in the background. <br>
...@@ -138,15 +160,15 @@ Simply type `$ python run.py` <br> ...@@ -138,15 +160,15 @@ Simply type `$ python run.py` <br>
Alternatively, type `$ python run.py > ~/flask.out 2> ~/flask.err &` to run the process in the background Alternatively, type `$ python run.py > ~/flask.out 2> ~/flask.err &` to run the process in the background
and output to files in the home directory. and output to files in the home directory.
## 6. Check Job status ## 6. Check Job status
If all goes well, you should have your processes running in the background. Check the status of these by typing If all goes well, you should have your processes running in the background. Check the status of these by typing
`$ jobs`. You should now see the something similar to the following: <br> `$ jobs`. You should now see the something similar to the following: <br>
``` ```
(venv) [centos@ood flask_user_reg]$ jobs (venv) [centos@ood flask_user_reg]$ jobs
[1]- Running celery -A tasks worker --loglevel=info --concurrency=4 > ~/celery.out 2> ~/celery.err & [1]- Running celery -A tasks worker --loglevel=info --concurrency=4 > ~/celery.out 2> ~/celery.err &
[2]+ Running python run.py > ~/server.out 2> ~/server.err & [2]+ Running python run.py > ~/server.out 2> ~/server.err &
(venv) [centos@ood flask_user_reg]$ (venv) [centos@ood flask_user_reg]$
``` ```
## 7. Connect to Server ## 7. Connect to Server
...@@ -157,5 +179,5 @@ address bar replacing `.xxx` with the final octet of the __OOD__ node. You shoul ...@@ -157,5 +179,5 @@ address bar replacing `.xxx` with the final octet of the __OOD__ node. You shoul
- Fill out the form and hit "Submit" - Fill out the form and hit "Submit"
- You should see an overlay signifying the account is being created. After 5 seconds it should disappear and signify the account creation has been successful. - You should see an overlay signifying the account is being created. After 5 seconds it should disappear and signify the account creation has been successful.
- You can now enter the command `kill %1 %2` to terminate the celery worker and the flask server. - You can now enter the command `kill %1 %2` to terminate the celery worker and the flask server.
- You can view the output/errors of either the worker and flask server by opening `flask.out`, `flask.err`, - You can view the output/errors of either the worker and flask server by opening `flask.out`, `flask.err`,
`celery.out`, or `celery.err`. `celery.out`, or `celery.err`.
"""
Initialize the main flask app
"""
# app/__init__.py # app/__init__.py
# local imports # standard imports
from __future__ import print_function from __future__ import print_function
import vars
# third-party imports import sys
import uuid import uuid
from flask import Flask, redirect, url_for, request, render_template, flash, session
# third-party imports
from flask import Flask, render_template, request, session
from flask_bootstrap import Bootstrap from flask_bootstrap import Bootstrap
import random from flask_cors import CORS
# local imports
import app_vars
import messages
sys.path.append(app_vars.rabbitmq_agents_loc)
# pylint: disable=wrong-import-order,wrong-import-position
import rc_util # noqa: E402
# pylint: enable=wrong-import-order,wrong-import-position
def create_app(config_name): def create_app(config_name):
app = Flask(__name__) # initialization of the flask app """
Bootstrap(app) # allowing app to use bootstrap Create main flask app
input:
config_name: environment of the app running
output:
Flask instance
"""
app = Flask(
__name__, static_folder="static"
) # initialization of the flask app
CORS(app, resources={r"/*": {"origins": app_vars.cors_allowed_origins}})
Bootstrap(app) # allowing app to use bootstrap
def get_authorized_user():
user = {
"username": request.headers.get("REMOTE_USER"),
"fullname": request.headers.get("Displayname"),
"email": request.headers.get("Mail"),
"eppa": request.headers.get("Unscoped-Affiliation"),
}
return user
@app.route('/', methods=['GET', 'POST']) # initial route to display the reg page @app.route(
"/", methods=["GET", "POST"]
) # initial route to display the reg page
def index(): def index():
valid_eppa = app_vars.valid_eppa
if "uid" not in session:
session["uid"] = str(uuid.uuid4())
if "user" not in session:
session["user"] = get_authorized_user()
session["return_url"] = request.args.get(
"redir", app_vars.default_referrer
)
if "eppa" in request.headers:
if not any(
item in session["user"].get("eppa") for item in valid_eppa
):
return render_template(
"account/unauthorized.html",
unauthorized_msg=messages.unauthorized_message,
docs_url=app_vars.docs_url,
)
if 'uid' not in session: if rc_util.check_state(session["user"].get("username")) == "hold":
session['uid']=str(uuid.uuid4()) return render_template(
"account/hold.html",
account_hold_msg=messages.account_hold_message,
docs_url=app_vars.docs_url,
)
if "redir" in request.args and 'return_url' not in session: # check for redir arg in url if (
session['return_url'] = request.args.get("redir") rc_util.check_state(session["user"].get("username"))
elif "redir" not in request.args and 'return_url' not in session: == "certification"
session['return_url'] = vars.default_referrer or rc_util.check_state(session["user"].get("username"))
else: == "pre_certification"
session['return_url'] = request.referrer ):
return render_template(
"account/certify.html",
room_id=session["uid"],
username=session["user"].get("username"),
fullname=session["user"].get("fullname"),
email=session["user"].get("email"),
referrer=session["return_url"],
cancel_url=app_vars.default_referrer,
cancel_msg=messages.cancel_message,
pre_certification_msg=messages.pre_certification_message,
certification_msg=messages.certification_message,
docs_url=app_vars.docs_url,
)
if rc_util.check_state(session["user"].get("username")) == "ok":
return render_template(
"account/good_standing.html",
good_standing_msg=messages.good_standing_message,
docs_url=app_vars.docs_url,
)
return render_template('auth/SignUp.html', room_id=session['uid'], referrer=session['return_url']) return render_template(
"auth/SignUp.html",
room_id=session["uid"],
username=session["user"].get("username"),
fullname=session["user"].get("fullname"),
email=session["user"].get("email"),
referrer=session["return_url"],
cancel_url=app_vars.default_referrer,
welcome_msg=messages.welcome_message,
cancel_msg=messages.cancel_message,
error_msg=messages.error_message,
docs_url=app_vars.docs_url,
)
# misc page error catching # misc page error catching
@app.errorhandler(403) @app.errorhandler(403)
def forbidden(error): def forbidden(error):
return render_template('errors/403.html', title='Forbidden'), 403 return render_template("errors/403.html", title="Forbidden"), 403
@app.errorhandler(404) @app.errorhandler(404)
def page_not_found(error): def page_not_found(error):
return render_template('errors/404.html', title='Page Not Found'), 404 return render_template("errors/404.html", title="Page Not Found"), 404
@app.errorhandler(500) @app.errorhandler(500)
def internal_server_error(error): def internal_server_error(error):
return render_template('errors/500.html', title='Server Error'), 500 return render_template("errors/500.html", title="Server Error"), 500
return app return app
app/static/img/cheaha-logo-a605de0aecd3006b82a5ee30a6d0cb8cd9bf8b7e836296cc293eac746a4c2b11.png

10.3 KiB | W: 0px | H: 0px

app/static/img/cheaha-logo-a605de0aecd3006b82a5ee30a6d0cb8cd9bf8b7e836296cc293eac746a4c2b11.png

5.83 KiB | W: 0px | H: 0px

app/static/img/cheaha-logo-a605de0aecd3006b82a5ee30a6d0cb8cd9bf8b7e836296cc293eac746a4c2b11.png
app/static/img/cheaha-logo-a605de0aecd3006b82a5ee30a6d0cb8cd9bf8b7e836296cc293eac746a4c2b11.png
app/static/img/cheaha-logo-a605de0aecd3006b82a5ee30a6d0cb8cd9bf8b7e836296cc293eac746a4c2b11.png
app/static/img/cheaha-logo-a605de0aecd3006b82a5ee30a6d0cb8cd9bf8b7e836296cc293eac746a4c2b11.png
  • 2-up
  • Swipe
  • Onion skin
This diff is collapsed.
<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 300 157"><title>Supercomputer-logo</title><image width="300" height="157" xlink:href="data:image/png;base64,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"/></svg>
This diff is collapsed.
function displayloading() { function preCertification() {
$('#myModal').modal('show'); const element = document.getElementById("pre-certify");
element.remove();
var x = document.getElementById("user-recertify");
if (x.style.display === "block") {
x.style.display = "none";
} else {
x.style.display = "block";
}
}
function check() {
var submitButton = document.getElementById("submit");
let ckbox = document.getElementById('agree');
submitButton.disabled = !(ckbox.checked);
};
function displayloading1() {
$('#overlayModal').modal('show');
}
function displayloading2() {
$('#overlayModal').modal('hide');
$('#myModal2').modal('show');
} }
function request_account() { function request_account() {
socket.emit('request account', { socket.emit('request account', {
fullname: document.getElementById("fullname").value, fullname: document.getElementById("fullname").value,
email: document.getElementById("email").value,
reason: document.getElementById("reason").value, reason: document.getElementById("reason").value,
username: document.getElementById("bid").value username: document.getElementById("username").value,
// aup: document.getElementById("agree").checked
}) })
} }
function refresh() { function certify_account() {
document.location.reload(true); socket.emit('request certification', {
fullname: document.getElementById("fullname").value,
email: document.getElementById("email").value,
username: document.getElementById("username").value
})
}
function renderDom(title, message, error_msg) {
document.getElementById("form-wrapper").innerHTML = "<h3>" + title + "</h3><br>";
document.getElementById("form-wrapper").innerHTML += "<p>" + message + "</p><br>";
if (error_msg !== null ) {
var error_button = document.createElement("BUTTON");
error_button.innerHTML = 'Read Error Message';
document.getElementById("form-wrapper").appendChild(error_button);
error_button.onclick = function(){document.getElementById("form-wrapper").innerHTML += "<br>" +error_msg}
}
}
function autofill_form(username, fullname, email) {
let username_input = document.getElementById("username");
let fullname_input = document.getElementById("fullname");
let email_input = document.getElementById("email");
if ((username.localeCompare("None")) !== 0) {
username_input.value = username;
username_input.disabled = "true";
}
if ((fullname.localeCompare("None")) !== 0) {
fullname_input.value = fullname;
fullname_input.disabled = "true";
}
if ((email.localeCompare("None")) !== 0) {
email_input.value = email;
email_input.disabled = "true";
}
} }
This diff is collapsed.
<html class="gr__rc_uab_edu">
<title>Annual Account Certification</title>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/1.7.3/socket.io.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js" integrity="sha384-aJ21OjlMXNL5UyIl/XNwTMqvzeRMZH2w8c5cRVpzpU8Y5bApTppSuUkhZXN0VxHd" crossorigin="anonymous"></script>
<script src="{{ url_for('static', filename='scripts/function.js') }}"></script>
<script>
console.info('Room ID: {{ room_id }}');
var socket = io.connect();
socket.on( 'connect', function() {
autofill_form("{{ username }}", "{{ fullname }}", "{{ email }}");
socket.emit( 'join_room', {
referrer: '{{ referrer }}'
});
socket.on( 'certifying account', function( msg ) {
displayloading2();
});
socket.on( 'certified', function( msg ) {
$('#myModal2 .modal-title').text("Account Certification Successful.");
$('#myModal2 .modal-body').text("Please allow 10-15 minutes for SSH access to be restored for your account. \nRedirecting...");
setTimeout(() => {
window.location.replace('{{ referrer }}');
}, 5000);
});
socket.on( 'certify error', function( msg ) {
console.log(msg);
$('#myModal2').modal('hide');
renderDom("Account Certification Error", "{{ error_msg }}", msg);
});
});
</script>
<link rel="shortcut icon" type="image/x-icon" href="/public/favicon.ico">
<link rel="stylesheet" media="all" href="{{ url_for('static', filename='style/application.css') }}">
<link rel="stylesheet" media="all" href="{{ url_for('static', filename='style/app2.css') }}">
<meta name="viewport" content="width=device-width, initial-scale=1">
<style>
.navbar-inverse { background-color: rgb(0,99,65); }
button{ margin: 13px;
.important { color: #336699; }}
</style>
</head>
<body data-gr-c-s-loaded="true">
<header>
<nav class="navbar navbar-inverse navbar-static-top">
<div class="container-fluid">
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-9" aria-expanded="false"> <span class="sr-only">Toggle navigation</span> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button>
<a class="navbar-brand" href="/"> UAB Research Computing</a>
</div>
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-9">
<div class="navbar-right">
<ul class="nav navbar-nav">
<li>
<a target="_blank" href="{{ docs_url }}">
<i class="fas fa-info-circle fa-fw"></i> Online Documentation
</a>
</li>
</ul>
</div>
</div>
</div>
</nav>
</header>
<div class="container content" role="main" style="width: 100%">
<div class="col-md-2 col-sm-2 my-col">
<img alt="logo" height="auto" width="80%" src="{{ url_for('static', filename='img/logo_svg.svg') }}">
<a href="https://tinyurl.com/cheahaAL" target="_blank"></a>
</div>
<div class="col-md-10 col-sm-10 my-col">
<div id="form-wrapper">
<h2> Annual Account Certification</h2>
<div id="pre-certify">
<p style="font-size:110%;"> {{ pre_certification_msg |safe }}</p>
<div class="col-md-7 col-sm-7 my-col">
<button class="btn btn-danger btn-md" id="cancel" name="cancel" type="button" onClick="renderDom('Account Certification Cancelled','{{ cancel_msg |safe }}', null)">Cancel</button>
<button class="btn btn-primary btn-md" id="submit" name="submit" type="button" value="Submit" onclick="preCertification()"> Continue to Certification</button>
</div>
</div>
<div id="user-recertify" style="display: none">
<p style="font-size:110%;"> {{ certification_msg |safe }}</p><br>
<form id="signup" data-toggle="validator" role="form" action="." method="post" onsubmit="">
<div class="col-md-7 col-sm-7 my-col">
<label for="username" class="control-label">Blazer Id:</label>&#9;<input id="username" class="form-control" placeholder="Enter Username" required><br>
</div>
<div class="col-md-7 col-sm-7 my-col">
<label for="fullname" class="control-label">Full Name:</label>&#9;<input id="fullname" class="form-control" placeholder="Enter Full Name" required><br>
</div>
<div class="col-md-7 col-sm-7 my-col">
<label for="email" class="control-label">Email:</label>&#9;<input id="email" class="form-control" placeholder="Enter Email" required><br>
</div>
<div class="col-md-10 col-sm-10 my-col">
<br><input class="checks" id ="agree" type="checkbox" name="agree" value="agree" onchange= check() /> I have read & accept UAB <a href="https://secure2.compliancebridge.com/uab/public/index.php?fuseaction=print.preview&docID=786" target="_blank">Acceptable Use</a>, <a href="https://www.uab.edu/it/home/policies/data-classification/classification-overview" target="_blank">Data Classification</a> and all other Information Technology <a href="https://www.uab.edu/it/home/policies" target="_blank">Policies.</a><br/>
<br><button class="btn btn-danger btn-md" id="cancel" name="cancel" type="button" onClick="renderDom('Account Certification Cancelled','{{ cancel_msg |safe }}', null)">Cancel</button>
<button class="btn btn-primary btn-md" disabled id="submit" name="submit" type="button" value="Submit" onclick="displayloading1();certify_account()"> Certify Account</button>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
<div class="modal fade" id="overlayModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" data-backdrop="static" data-keyboard="false">
<div class="modal-dialog modal-sm" role="document">
<div class="modal-content">
<div class="modal-header">
<h4 class="modal-title" id="myModalLabel">Account Certification Request Received!</h4>
</div>
<div class="modal-body">
<span>Communicating this information to the server</span>
<img src="{{ url_for('static', filename='img/loading.gif') }}" width="40px">
</div>
</div>
</div>
</div>
<div class="modal fade" id="myModal2" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" data-backdrop="static" data-keyboard="false">
<div class="modal-dialog modal-sm" role="document">
<div class="modal-content">
<div class="modal-header">
<h4 class="modal-title" id="myModalLabel">Account Certification Received!</h4>
</div>
<div class="modal-body">
<span>Sit tight while we certify your account.</span>
<img src="{{ url_for('static', filename='img/loading.gif') }}" width="40px">
</div>
</div>
</div>
</div>
<footer>
<div class="container-fluid">
<div class="row">
<div class="col-md-6 col-sm-6">
<a href="https://osc.github.io/Open-OnDemand/">
<img class="footer-logo" alt="Powered by Open OnDemand" height="40" style="margin-bottom: 20px" src="{{ url_for('static', filename='img/OpenOnDemand_powered_by_RGB-cb3aad5ff5350c7994f250fb334ddcc72e343233ce99eb71fda93beddd76a847.svg') }}">
</a>
</div>
</div>
</div>
</footer>
</body>
</html>
<html class="gr__rc_uab_edu">
<title>Good Standing </title>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/1.7.3/socket.io.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js" integrity="sha384-aJ21OjlMXNL5UyIl/XNwTMqvzeRMZH2w8c5cRVpzpU8Y5bApTppSuUkhZXN0VxHd" crossorigin="anonymous"></script>
<script src="{{ url_for('static', filename='scripts/function.js') }}"></script>
<link rel="shortcut icon" type="image/x-icon" href="/public/favicon.ico">
<link rel="stylesheet" media="all" href="{{ url_for('static', filename='style/application.css') }}">
<link rel="stylesheet" media="all" href="{{ url_for('static', filename='style/app2.css') }}">
<meta name="viewport" content="width=device-width, initial-scale=1">
<style>
.navbar-inverse { background-color: rgb(0,99,65); }
button{ margin: 13px;
.important { color: #336699; }}
</style>
</head>
<body data-gr-c-s-loaded="true">
<header>
<nav class="navbar navbar-inverse navbar-static-top">
<div class="container-fluid">
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-9" aria-expanded="false"> <span class="sr-only">Toggle navigation</span> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button>
<a class="navbar-brand" href="/"> UAB Research Computing</a>
</div>
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-9">
<div class="navbar-right">
<ul class="nav navbar-nav">
<li>
<a target="_blank" href="{{ docs_url }}">
<i class="fas fa-info-circle fa-fw"></i> Online Documentation
</a>
</li>
</ul>
</div>
</div>
</div>
</nav>
</header>
<div class="container content" role="main" style="width: 100%">
<div class="col-md-2 col-sm-2 my-col">
<img alt="logo" height="auto" width="80%" src="{{ url_for('static', filename='img/logo_svg.svg') }}">
<a href="https://tinyurl.com/cheahaAL" target="_blank"></a>
</div>
<div class="col-md-10 col-sm-10 my-col">
<div id="form-wrapper">
<h2> Account in Good Standing </h2>
<p style="font-size:110%;"> {{ good_standing_msg|safe }}</p>
</div>
</div>
</div>
<footer>
<div class="container-fluid">
<div class="row">
<div class="col-md-6 col-sm-6">
<a href="https://osc.github.io/Open-OnDemand/">
<img class="footer-logo" alt="Powered by Open OnDemand" height="40" style="margin-bottom: 20px" src="{{ url_for('static', filename='img/OpenOnDemand_powered_by_RGB-cb3aad5ff5350c7994f250fb334ddcc72e343233ce99eb71fda93beddd76a847.svg') }}">
</a>
</div>
</div>
</div>
</footer>
</body>
</html>
<html class="gr__rc_uab_edu">
<title>Account On Hold</title>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/1.7.3/socket.io.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js" integrity="sha384-aJ21OjlMXNL5UyIl/XNwTMqvzeRMZH2w8c5cRVpzpU8Y5bApTppSuUkhZXN0VxHd" crossorigin="anonymous"></script>
<script src="{{ url_for('static', filename='scripts/function.js') }}"></script>
<link rel="shortcut icon" type="image/x-icon" href="/public/favicon.ico">
<link rel="stylesheet" media="all" href="{{ url_for('static', filename='style/application.css') }}">
<link rel="stylesheet" media="all" href="{{ url_for('static', filename='style/app2.css') }}">
<meta name="viewport" content="width=device-width, initial-scale=1">
<style>
.navbar-inverse { background-color: rgb(0,99,65); }
button{ margin: 13px;
.important { color: #336699; }}
</style>
</head>
<body data-gr-c-s-loaded="true">
<header>
<nav class="navbar navbar-inverse navbar-static-top">
<div class="container-fluid">
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-9" aria-expanded="false"> <span class="sr-only">Toggle navigation</span> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button>
<a class="navbar-brand" href="/"> UAB Research Computing</a>
</div>
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-9">
<div class="navbar-right">
<ul class="nav navbar-nav">
<li>
<a target="_blank" href="{{ docs_url }}">
<i class="fas fa-info-circle fa-fw"></i> Online Documentation
</a>
</li>
</ul>
</div>
</div>
</div>
</nav>
</header>
<div class="container content" role="main" style="width: 100%">
<div class="col-md-2 col-sm-2 my-col">
<img alt="logo" height="auto" width="80%" src="{{ url_for('static', filename='img/logo_svg.svg') }}">
<a href="https://tinyurl.com/cheahaAL" target="_blank"></a>
</div>
<div class="col-md-10 col-sm-10 my-col">
<div id="form-wrapper">
<h2> Account On Hold </h2>
<p style="font-size:110%;"> {{ account_hold_msg |safe }}</p>
</div>
</div>
</div>
<footer>
<div class="container-fluid">
<div class="row">
<div class="col-md-6 col-sm-6">
<a href="https://osc.github.io/Open-OnDemand/">
<img class="footer-logo" alt="Powered by Open OnDemand" height="40" style="margin-bottom: 20px" src="{{ url_for('static', filename='img/OpenOnDemand_powered_by_RGB-cb3aad5ff5350c7994f250fb334ddcc72e343233ce99eb71fda93beddd76a847.svg') }}">
</a>
</div>
</div>
</div>
</footer>
</body>
</html>
<html class="gr__rc_uab_edu">
<title> Account Unauthorized </title>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/1.7.3/socket.io.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js" integrity="sha384-aJ21OjlMXNL5UyIl/XNwTMqvzeRMZH2w8c5cRVpzpU8Y5bApTppSuUkhZXN0VxHd" crossorigin="anonymous"></script>
<script src="{{ url_for('static', filename='scripts/function.js') }}"></script>
<link rel="shortcut icon" type="image/x-icon" href="/public/favicon.ico">
<link rel="stylesheet" media="all" href="{{ url_for('static', filename='style/application.css') }}">
<link rel="stylesheet" media="all" href="{{ url_for('static', filename='style/app2.css') }}">
<meta name="viewport" content="width=device-width, initial-scale=1">
<style>
.navbar-inverse { background-color: rgb(0,99,65); }
button{ margin: 13px;
.important { color: #336699; }}
</style>
</head>
<body data-gr-c-s-loaded="true">
<header>
<nav class="navbar navbar-inverse navbar-static-top">
<div class="container-fluid">
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-9" aria-expanded="false"> <span class="sr-only">Toggle navigation</span> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button>
<a class="navbar-brand" href="/"> UAB Research Computing</a>
</div>
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-9">
<div class="navbar-right">
<ul class="nav navbar-nav">
<li>
<a target="_blank" href="{{ docs_url }}">
<i class="fas fa-info-circle fa-fw"></i> Online Documentation
</a>
</li>
</ul>
</div>
</div>
</div>
</nav>
</header>
<div class="container content" role="main" style="width: 100%">
<div class="col-md-2 col-sm-2 my-col">
<img alt="logo" height="auto" width="80%" src="{{ url_for('static', filename='img/logo_svg.svg') }}">
<a href="https://tinyurl.com/cheahaAL" target="_blank"></a>
</div>
<div class="col-md-10 col-sm-10 my-col">
<div id="form-wrapper">
<h2> Account Unauthorized </h2>
<p style="font-size:110%;"> {{ unauthorized_msg |safe }}</p>
</div>
</div>
</div>
<footer>
<div class="container-fluid">
<div class="row">
<div class="col-md-6 col-sm-6">
<a href="https://osc.github.io/Open-OnDemand/">
<img class="footer-logo" alt="Powered by Open OnDemand" height="40" style="margin-bottom: 20px" src="{{ url_for('static', filename='img/OpenOnDemand_powered_by_RGB-cb3aad5ff5350c7994f250fb334ddcc72e343233ce99eb71fda93beddd76a847.svg') }}">
</a>
</div>
</div>
</div>
</footer>
</body>
</html>
...@@ -8,45 +8,46 @@ ...@@ -8,45 +8,46 @@
<script> <script>
console.info('Room ID: {{ room_id }}'); console.info('Room ID: {{ room_id }}');
var socket = io.connect('http://' + document.domain + ':' + location.port); var socket = io.connect();
socket.on( 'connect', function() { socket.on( 'connect', function() {
autofill_form("{{ username }}", "{{ fullname }}", "{{ email }}");
socket.emit( 'join_room', { socket.emit( 'join_room', {
referrer: '{{ referrer }}' referrer: '{{ referrer }}'
}); });
socket.on( 'creating account', function( msg ) { socket.on( 'creating account', function( msg ) {
document.getElementById("error").innerText = ""; displayloading2();
displayloading();
}); });
socket.on( 'account ready', function( msg ) { socket.on( 'account ready', function( msg ) {
$('#myModal').modal('hide'); $('#myModal2 .modal-title').text("Account Creation Successful");
alert("Account has been created!"); $('#myModal2 .modal-body').text("Redirecting...");
window.location.replace('{{ referrer }}'); setTimeout(() => {
window.location.replace('{{ referrer }}');
}, 5000);
}); });
socket.on( 'Account creation failed', function( msg ) { socket.on( 'account error', function( msg ) {
document.getElementById("error").innerText = "Registration Failed. Please try again."; console.log(msg);
$('#myModal2').modal('hide');
renderDom("Account Create Error", "{{ error_msg |safe}}", msg);
}); });
}); });
</script> </script>
<style type="text/css"> <link rel="shortcut icon" type="image/x-icon" href="/public/favicon.ico">
.important { color: #336699; }
</style>
<link rel="shortcut icon" type="image/x-icon" href="/public/favicon.ico">
<link rel="stylesheet" media="all" href="{{ url_for('static', filename='style/application.css') }}"> <link rel="stylesheet" media="all" href="{{ url_for('static', filename='style/application.css') }}">
<link rel="stylesheet" media="all" href="{{ url_for('static', filename='style/app2.css') }}"> <link rel="stylesheet" media="all" href="{{ url_for('static', filename='style/app2.css') }}">
<meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="viewport" content="width=device-width, initial-scale=1">
<style> <style>
.navbar-inverse { .navbar-inverse { background-color: rgb(0,99,65); }
background-color: rgb(0,99,65); button{ margin: 13px;
} .important { color: #336699; }}
</style> </style>
</head> </head>
...@@ -55,81 +56,99 @@ ...@@ -55,81 +56,99 @@
<nav class="navbar navbar-inverse navbar-static-top"> <nav class="navbar navbar-inverse navbar-static-top">
<div class="container-fluid"> <div class="container-fluid">
<div class="navbar-header"> <div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-9" aria-expanded="false"> <span class="sr-only">Toggle navigation</span> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button> <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-9" aria-expanded="false"> <span class="sr-only">Toggle navigation</span> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button>
<a class="navbar-brand" href="/">Research Computing</a> <a class="navbar-brand" href="/"> UAB Research Computing</a>
</div> </div>
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-9"> <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-9">
<ul class="nav navbar-nav"> <div class="navbar-right">
<ul class="nav navbar-nav">
</ul> <li>
<div class="navbar-right"> <a target="_blank" href="{{ docs_url }}">
<ul class="nav navbar-nav"> <i class="fas fa-info-circle fa-fw"></i> Online Documentation
<li> </a>
<a target="_blank" href="https://docs.uabgrid.uab.edu/wiki/Cheaha_GettingStarted"> </li>
<i class="fas fa-info-circle fa-fw"></i> Online Documentation </ul>
</a></li> </div>
<li>
</li></ul>
</div>
</div> </div>
</div> </div>
</nav> </nav>
</header> </header>
<div class="container content" role="main" style="width: 625px">
<div style="position:relative;"> <div class="container content" role="main" style="width: 100%">
<img alt="logo" height="auto" width="100%" style="margin-bottom: 20px" src="{{ url_for('static', filename='img/cheaha-logo-a605de0aecd3006b82a5ee30a6d0cb8cd9bf8b7e836296cc293eac746a4c2b11.png') }}"> <div class="col-md-2 col-sm-2 my-col">
<a href="https://tinyurl.com/cheahaAL" target="_blank"> <img alt="logo" height="auto" width="80%" src="{{ url_for('static', filename='img/logo_svg.svg') }}">
<div style="float:left;position:absolute;display:block;left:310px;top:-6px;padding:10px 20px;"> </div> <a href="https://tinyurl.com/cheahaAL" target="_blank"></a>
</a> </div>
<div class="col-md-10 col-sm-10 my-col">
<div id="form-wrapper">
<h2>Welcome to UAB Research Computing</h2>
<p style="font-size:110%;"> {{ welcome_msg |safe }}</p>
<div id="user-input">
<form id="signup" data-toggle="validator" role="form" action="." method="post" onsubmit="">
<div class="col-md-7 col-sm-7 my-col">
<label for="username" class="control-label">Blazer Id:</label>&#9;<input id="username" class="form-control" placeholder="Enter Username" required><br>
</div>
<div class="col-md-7 col-sm-7 my-col">
<label for="fullname" class="control-label">Full Name:</label>&#9;<input id="fullname" class="form-control" placeholder="Enter Full Name" required><br>
</div>
<div class="col-md-7 col-sm-7 my-col">
<label for="email" class="control-label">Email:</label>&#9;<input id="email" class="form-control" placeholder="Enter Email" required><br>
</div>
<div class="col-md-7 col-sm-7 my-col">
<label for="reason" class="control-label">Reason for Requesting Account:</label><br>
<textarea class="form-control" id="reason" name="reason" placeholder="Enter Reason for Account Request" required></textarea><br>
</div>
<div class="col-md-10 col-sm-10 my-col">
<br><input class="checks" id ="agree" type="checkbox" name="agree" value="agree" onchange= check() /> I have read & accept UAB <a href="https://secure2.compliancebridge.com/uab/public/index.php?fuseaction=print.preview&docID=786" target="_blank">Acceptable Use</a>, <a href="https://www.uab.edu/it/home/policies/data-classification/classification-overview" target="_blank">Data Classification</a> and all other Information Technology <a href="https://www.uab.edu/it/home/policies" target="_blank">Policies.</a><br/>
<br><button class="btn btn-danger btn-md" id="cancel" name="cancel" type="button" onClick="renderDom('Account Creation Cancelled','{{ cancel_msg |safe }}', null)">Cancel</button>
<button class="btn btn-primary btn-md" disabled id="submit" name="submit" type="button" value="Submit" onclick="displayloading1();request_account()"> Create Account</button>
</div>
</form>
</div>
</div>
</div>
</div> </div>
<!-- <h2>Hello, <span id="username">{{ user }}</span>!</h2> --> <div class="modal fade" id="overlayModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" data-backdrop="static" data-keyboard="false">
<div class="modal-dialog modal-sm" role="document">
<h2>Hi, </h2> <div class="modal-content">
<div id="test"> <div class="modal-header">
<form action="." method="post" onsubmit=""> <h4 class="modal-title" id="myModalLabel">Account Request Received!</h4>
<div class="signUpContainer"> </div>
<label><b><label for="username">Blazer Id: </label><br></b></label> <div class="modal-body">
<input class="form-control" id="bid" name="bid" placeholder="Enter BlazerId" required="" type="text"> <span>Communicating this information to the server</span>
<label><b><label for="fullname">Full Name: </label><br></b></label> <img src="{{ url_for('static', filename='img/loading.gif') }}" width="40px">
<input class="form-control" id="fullname" name="fullname" placeholder="Enter Full Name" required="" type="text">
<label><b><label for="reason">Reason for Requesting Account: </label><br></b></label>
<textarea class="form-control" id="reason" name="reason" placeholder="Enter Reason for Account Request" required=""></textarea>
<input class="btn btn-primary btn-block" id="submit" name="submit" type="button" value="Submit" onclick="request_account()">
<div>
<strong id="error" style="color: #be051b; text-align: center;"></strong>
</div>
</div> </div>
</form>
</div>
</div> </div>
</div>
</div>
<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" data-backdrop="static" data-keyboard="false"> <div class="modal fade" id="myModal2" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" data-backdrop="static" data-keyboard="false">
<div class="modal-dialog modal-sm" role="document"> <div class="modal-dialog modal-sm" role="document">
<div class="modal-content"> <div class="modal-content">
<div class="modal-header"> <div class="modal-header">
<h4 class="modal-title" id="myModalLabel">Account Request Received!</h4> <h4 class="modal-title" id="myModalLabel">Account Request Received!</h4>
</div> </div>
<div class="modal-body"> <div class="modal-body">
<span>Please wait while we create your account. This may take up to 5-10 minutes.</span> <span>Sit tight while we create your account.</span>
<img src="{{ url_for('static', filename='img/loading.gif') }}" width="40px"> <img src="{{ url_for('static', filename='img/loading.gif') }}" width="40px">
</div> </div>
</div>
</div>
</div> </div>
</div>
</div>
<footer> <footer>
<div class="container-fluid"> <div class="container-fluid">
<div class="row"> <div class="row">
<div class="col-md-6 col-sm-6"> <div class="col-md-6 col-sm-6">
<a href="https://osc.github.io/Open-OnDemand/"> <a href="https://osc.github.io/Open-OnDemand/">
<img class="footer-logo" alt="Powered by Open OnDemand" height="40" style="margin-bottom: 20px" src="{{ url_for('static', filename='img/OpenOnDemand_powered_by_RGB-cb3aad5ff5350c7994f250fb334ddcc72e343233ce99eb71fda93beddd76a847.svg') }}"> <img class="footer-logo" alt="Powered by Open OnDemand" height="40" style="margin-bottom: 20px" src="{{ url_for('static', filename='img/OpenOnDemand_powered_by_RGB-cb3aad5ff5350c7994f250fb334ddcc72e343233ce99eb71fda93beddd76a847.svg') }}">
</a> </a>
</div> </div>
</div> </div>
</div><!-- /.container --> </div>
</footer> </footer>
</body> </body>
</html> </html>
...@@ -11,4 +11,4 @@ ...@@ -11,4 +11,4 @@
You will be emailed as soon as your request has been fulfilled. You will be emailed as soon as your request has been fulfilled.
</p> </p>
</body> </body>
</html> </html>
\ No newline at end of file
...@@ -12,4 +12,4 @@ ...@@ -12,4 +12,4 @@
</body> </body>
</html> </html>
\ No newline at end of file
...@@ -9,4 +9,4 @@ ...@@ -9,4 +9,4 @@
<p>Page Not Found</p> <p>Page Not Found</p>
</body> </body>
</html> </html>
\ No newline at end of file
...@@ -9,4 +9,4 @@ ...@@ -9,4 +9,4 @@
<p>Internal Server Error</p> <p>Internal Server Error</p>
</body> </body>
</html> </html>
\ No newline at end of file