import json import WGDBus import FilePaths import fsio import Activity import os import glob from subprocess import call import logConfig import status_mod # Fake globals for syntax check import notify_activity if False: response = None request = None session = None db = None status_mod.sessionUserMgr.setLastVisit(session, request) if logConfig.securitySessFrgt: session.forget(response) CERT_FILEPATH = '/home/tool/web2py/https/cert/' @auth.requires(request.ajax==True, requires_login=True) def SecSrv(): if request.env.request_method == "GET": if os.path.isfile(FilePaths.SECURITY_FILENAME): res = fsio.jsonload(FilePaths.SECURITY_FILENAME) return response.json(res) else: return None if request.env.request_method == "POST": data = json.loads(request.body.read()) fsio.jsondump(FilePaths.SECURITY_FILENAME, data) notify_activity.configChanged(FilePaths.SECURITY_FILENAME, Activity.SECURITY_CHANGED, session=session) @auth.requires(request.ajax==True, requires_login=True) def uploadCaCert(): filename = request.vars.fileupload.filename.split("\\")[-1] fileupload_filepath = CERT_FILEPATH + request.vars.fileupload.filename.split("\\")[-1] res = dict() if ".crt" in filename: for file in glob.glob(CERT_FILEPATH + '*.crt'): os.unlink(file) fsio.write(fileupload_filepath, request.vars.fileupload.value) notify_activity.configChanged(filename, Activity.FILE_UPLOAD, session=session) res['success'] = True res['ca_cert'] = filename return response.json(res) else: res['success'] = False res['ca_cert'] = filename return response.json(res) @auth.requires(request.ajax==True, requires_login=True) def uploadCaKey(): filename = request.vars.fileupload.filename.split("\\")[-1] fileupload_filepath = CERT_FILEPATH + request.vars.fileupload.filename.split("\\")[-1] res = dict() if ".key" in filename: for file in glob.glob(CERT_FILEPATH + '*.key'): os.unlink(file) fsio.write(fileupload_filepath, request.vars.fileupload.value) notify_activity.configChanged(filename, Activity.FILE_UPLOAD, session=session) res['success'] = True res['ca_key'] = filename return response.json(res) else: res['success'] = False res['ca_key'] = filename return response.json(res) @auth.requires(request.ajax==True, requires_login=True) def certFilenames(): res = [] lcrt = glob.glob(CERT_FILEPATH + "*.crt") lkey = glob.glob(CERT_FILEPATH + "*.key") if lcrt != [] and lkey != []: res = [os.path.basename(lcrt[0]), os.path.basename(lkey[0])] elif lcrt == [] and lkey != []: res = ['' , os.path.basename(lkey[0])] elif lcrt != [] and lkey == []: res = [os.path.basename(lcrt[0]), ''] return response.json(res) @auth.requires(request.ajax==True, requires_login=True) def changeConnection(): active = request.vars.active if active == 'true': call("mount -o remount,rw,sync /", shell=True) call("cp /etc/init.d/web2py_https.sh /etc/init.d/web2py.sh", shell=True) call("sh /etc/reboot/reboot.sh", shell=True) else: call("mount -o remount,rw,sync /", shell=True) call("cp /etc/init.d/web2py_normal.sh /etc/init.d/web2py.sh", shell=True) call("sh /etc/reboot/reboot.sh", shell=True)