Commit 1e9dd387 authored by Alain Takoudjou's avatar Alain Takoudjou

Update Webrunner session management

parent f0bbe128
...@@ -11,7 +11,7 @@ ...@@ -11,7 +11,7 @@
width:702px; width:702px;
} }
#tabContaier textarea.slap{white-space: pre-wrap;word-wrap: break-word;overflow: hidden;color: #6F6F6F;width:430px; max-height:120px; #tabContaier textarea.slap{white-space: pre-wrap;word-wrap: break-word;overflow: hidden;color: #6F6F6F;width:430px; max-height:120px;
resize: none; height:18px;padding:3px;min-height:18px;} resize: none; height:18px;padding:3px;min-height:18px;font-size: 13px;}
#tabContaier > ul{ #tabContaier > ul{
overflow:hidden; overflow:hidden;
height:34px; height:34px;
......
...@@ -39,6 +39,7 @@ th{ ...@@ -39,6 +39,7 @@ th{
table.small th{padding: 4px;font-size: 16px;} table.small th{padding: 4px;font-size: 16px;}
textarea { textarea {
width:762px; width:762px;
font-family: 'Helvetica Neue',Tahoma,Helvetica,Arial,sans-serif;
} }
body { body {
...@@ -650,8 +651,8 @@ a.lshare img{ ...@@ -650,8 +651,8 @@ a.lshare img{
.form{padding:10px; padding-left:20px;} .form{padding:10px; padding-left:20px;}
.form label{display:block; float:left; width:150px; padding-top:10px;} .form label{display:block; float:left; width:150px; padding-top:10px;}
.form input[type=text] ,.form input[type=password] {float:left; width:190px;margin:5px;} .form input[type=text] ,.form input[type=password] {float:left; width:190px;margin:5px;}
.hiddendiv {display: none;white-space: pre-wrap;min-height: 18px;font-family: Arial, sans-serif;font-size: 13px; .hiddendiv {display: none;white-space: pre-wrap;min-height: 18px;font-size: 13px;
padding:3px;word-wrap: break-word;width:430px; max-height:120px;} padding:3px;word-wrap: break-word;width:430px; max-height:120px;font-family: 'Helvetica Neue',Tahoma,Helvetica,Arial,sans-serif;}
.list{background: url(../images/menu_dropdown.png) left center no-repeat; padding-left:10px;} .list{background: url(../images/menu_dropdown.png) left center no-repeat; padding-left:10px;}
.slidebox{padding:10px; } .slidebox{padding:10px; }
.alert_message{ background: url(../images/alert.png) center no-repeat; height: 26px;} .alert_message{ background: url(../images/alert.png) center no-repeat; height: 26px;}
......
$(document).ready( function() { $(document).ready( function() {
var send = false; var send = false;
var cloneRequest; var cloneRequest;
$('#fileTree').fileTree({ root: $("input#workdir").val(), script: $SCRIPT_ROOT + '/readFolder', folderEvent: 'click', expandSpeed: 750, collapseSpeed: 750, multiFolder: false }, function(file) { $('#fileTree').fileTree({ root: $("input#workdir").val(), script: $SCRIPT_ROOT + '/readFolder', folderEvent: 'click', expandSpeed: 750, collapseSpeed: 750, multiFolder: false }, function(file) {
selectFile(file); selectFile(file);
}); });
configRadio(); configRadio();
...@@ -22,12 +22,12 @@ $(document).ready( function() { ...@@ -22,12 +22,12 @@ $(document).ready( function() {
$("#clone").append("Clone"); $("#clone").append("Clone");
send = false; send = false;
return; return;
} }
var repo_url = $("input#repo").val(); var repo_url = $("input#repo").val();
var email = ""; var email = "";
var name = "" var name = ""
/* /^(ht|f)tps?:\/\/[a-z0-9-\.]+\.[a-z]{2,4}\/?([^\s<>\#%"\,\{\}\\|\\\^\[\]`]+)?$/ */ /* /^(ht|f)tps?:\/\/[a-z0-9-\.]+\.[a-z]{2,4}\/?([^\s<>\#%"\,\{\}\\|\\\^\[\]`]+)?$/ */
if($("input#repo").val() == "" || !repo_url.match(/^[\w\d\.\/:~@_-]+$/)){ if($("input#repo").val() == "" || !repo_url.match(/^[\w\d\.\/:~@_-]+$/)){
$("#error").Popup("Invalid url for the repository", {type:'alert', duration:3000}); $("#error").Popup("Invalid url for the repository", {type:'alert', duration:3000});
return false; return false;
} }
...@@ -35,7 +35,7 @@ $(document).ready( function() { ...@@ -35,7 +35,7 @@ $(document).ready( function() {
$("#error").Popup("Invalid project name", {type:'alert', duration:3000}); $("#error").Popup("Invalid project name", {type:'alert', duration:3000});
return false; return false;
} }
if($("input#user").val() != "" && $("input#user").val() != "Enter your name..."){ if($("input#user").val() !== ""){
name = $("input#user").val(); name = $("input#user").val();
} }
if($("input#email").val() != "" && $("input#email").val() != "Enter your email adress..."){ if($("input#email").val() != "" && $("input#email").val() != "Enter your email adress..."){
...@@ -86,7 +86,7 @@ $(document).ready( function() { ...@@ -86,7 +86,7 @@ $(document).ready( function() {
$("#error").Popup("Your repository is cloned!", {type:'confirm', duration:3000}); $("#error").Popup("Your repository is cloned!", {type:'confirm', duration:3000});
$("input#repo").val("Enter the url of your repository..."); $("input#repo").val("Enter the url of your repository...");
$("input#name").val("Enter the project name..."); $("input#name").val("Enter the project name...");
$('#fileTree').fileTree({ root: $("input#workdir").val(), script: $SCRIPT_ROOT + '/readFolder', folderEvent: 'click', expandSpeed: 750, collapseSpeed: 750, multiFolder: false }, function(file) { $('#fileTree').fileTree({ root: $("input#workdir").val(), script: $SCRIPT_ROOT + '/readFolder', folderEvent: 'click', expandSpeed: 750, collapseSpeed: 750, multiFolder: false }, function(file) {
selectFile(file); selectFile(file);
}); });
} }
...@@ -102,10 +102,10 @@ $(document).ready( function() { ...@@ -102,10 +102,10 @@ $(document).ready( function() {
return false; return false;
}); });
function configRadio(){ function configRadio(){
$("#modelist li").each(function(index) { $("#modelist li").each(function(index) {
var boxselector = "#box" + index; var boxselector = "#box" + index;
if($(this).hasClass('checked')){ if($(this).hasClass('checked')){
$(this).removeClass('checked'); $(this).removeClass('checked');
$(boxselector).slideUp("normal"); $(boxselector).slideUp("normal");
} }
if($(this).find("input:radio").is(':checked')){ if($(this).find("input:radio").is(':checked')){
...@@ -119,7 +119,7 @@ $(document).ready( function() { ...@@ -119,7 +119,7 @@ $(document).ready( function() {
} }
}); });
} }
function selectFile(file){ function selectFile(file){
//nothing //nothing
return; return;
......
...@@ -41,6 +41,14 @@ def html_escape(text): ...@@ -41,6 +41,14 @@ def html_escape(text):
return "".join(html_escape_table.get(c,c) for c in text) return "".join(html_escape_table.get(c,c) for c in text)
def checkLogin(config, login, pwd): def checkLogin(config, login, pwd):
user = getSession(config)
salt = "runner81" #to be changed
current_pwd = hashlib.md5( salt + pwd ).hexdigest()
if current_pwd == user[1]:
return user
return False
def getSession(config):
user_path = os.path.join(config['runner_workdir'], '.users') user_path = os.path.join(config['runner_workdir'], '.users')
user = "" user = ""
if os.path.exists(user_path): if os.path.exists(user_path):
...@@ -52,11 +60,29 @@ def checkLogin(config, login, pwd): ...@@ -52,11 +60,29 @@ def checkLogin(config, login, pwd):
user = open(user_path, 'r').read().split(';') user = open(user_path, 'r').read().split(';')
else: else:
return False return False
salt = "runner81" #to be changed return user
current_pwd = hashlib.md5( salt + pwd ).hexdigest()
if current_pwd == user[1]: def saveSession(config, session, account):
return user user = os.path.join(config['runner_workdir'], '.users')
return False try:
if account[1]:
salt = "runner81" #to be changed
account[1] = hashlib.md5(salt + account[1]).hexdigest()
else:
account[1] = session['account'][1]
#backup previous data
open(user+'.back', 'w').write(';'.join(session['account']))
#save new account data
open(user, 'w').write((';'.join(account)).encode("utf-8"))
session['account'] = account
return True
except Exception, e:
try:
os.remove(user)
os.rename(user+'.back', user)
except:
pass
return str(e)
def updateProxy(config): def updateProxy(config):
if not os.path.exists(config['instance_root']): if not os.path.exists(config['instance_root']):
......
...@@ -19,8 +19,7 @@ def before_request(): ...@@ -19,8 +19,7 @@ def before_request():
return redirect(url_for('login')) return redirect(url_for('login'))
if session.has_key('account') and session['account']: if session.has_key('account') and session['account']:
session['title'] = getProjectTitle(app.config) session['title'] = getProjectTitle(app.config)
session['account'] = open(os.path.join(app.config['runner_workdir'], '.users'), session['account'] = getSession(app.config)
'r').read().split(';')
# general views # general views
@app.route('/') @app.route('/')
...@@ -46,7 +45,9 @@ def logout(): ...@@ -46,7 +45,9 @@ def logout():
@app.route('/configRepo') @app.route('/configRepo')
def configRepo(): def configRepo():
public_key = open(app.config['public_key'], 'r').read() public_key = open(app.config['public_key'], 'r').read()
return render_template('cloneRepository.html', workDir='workspace', public_key=public_key) return render_template('cloneRepository.html', workDir='workspace',
public_key=public_key, name=session['account'][3].decode('utf-8'),
email=session['account'][2])
@app.route("/doLogin", methods=['POST']) @app.route("/doLogin", methods=['POST'])
def doLogin(): def doLogin():
...@@ -450,23 +451,14 @@ def getParameterXml(request): ...@@ -450,23 +451,14 @@ def getParameterXml(request):
@app.route("/updateAccount", methods=['POST']) @app.route("/updateAccount", methods=['POST'])
def updateAccount(): def updateAccount():
account = session['account'][:] #copy session data account = []
user = os.path.join(app.config['runner_workdir'], '.users') user = os.path.join(app.config['runner_workdir'], '.users')
try: account.append(request.form['username'].strip())
if request.form['username'].strip(): account.append(request.form['password'].strip())
account[0] = request.form['username'].strip() account.append(request.form['email'].strip())
account[2] = request.form['email'].strip() account.append(request.form['name'].strip())
account[3] = request.form['name'].strip() result = saveSession(app.config, session, account)
if request.form['password'].strip(): if type(result) == type(""):
salt = "runner81" #to be changed return jsonify(code=0, result=result)
account[1] = hashlib.md5(salt + request.form['password'].strip()).hexdigest() else:
#backup previous data return jsonify(code=1, result="")
open(user+'.back', 'w').write(';'.join(session['account'])) \ No newline at end of file
#save new account data
open(user, 'w').write((';'.join(account)).encode("utf-8"))
session['account'] = account
return jsonify(code=1, result="")
except Exception, e:
os.remove(user)
os.rename(user+'.back', user)
return jsonify(code=0, result=str(e))
\ No newline at end of file
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment