def script_xml(scrname): global dir_scripts acl = get_ACL(scrname) if acl == None: return ("NOT FOUND", 404, {}) else: log(4, "running script_json() ...") if current_user.has_groups(acl): try: args = decode_xml(request.data) (code, out, err) = run_script(dir_scripts, scrname, args) res = {"response": {"code": code, "out": out, "err": err}} log(4, "result = " + dict2str(res)) if code == 0: log(4, out) return make_response(encode_xml(res), 200) else: log(3, err) return make_response(encode_xml(res), 200) except Exception as err: log(1, str(err)) return ("Internal Server Error", 500, {}) else: return ("FORBIDDEN", 403, {})
def render_page(htmlfile): log(4, "template page: %s" % htmlfile) page = get_page(htmlfile) if page == None: return ("NOT FOUND", 404, {}) else: if current_user.has_groups(page.ACL): return render_template(htmlfile, title=cfg_get("AppTitle")) else: return ("FORBIDDEN", 403, {})
def run_script(script_dir, script, args): scr_args = _prepare_args(script_dir, script, args) log(4, "Run Script: %s" % script) log(4, " with arguments: " + dict2str(args)) try: if os.name == 'posix': cl_fd = True else: cl_fd = False proc = subprocess.Popen(scr_args, bufsize=10, stdin=None, stdout=subprocess.PIPE, stderr=subprocess.PIPE, close_fds=cl_fd, shell=False, universal_newlines=True) out, err = proc.communicate() exitcode = proc.returncode return exitcode, out, err except OSError as ex: return -1, "", str(ex)
def script_form(scrname): global dir_scripts acl = get_ACL(scrname) if acl == None: return ("NOT FOUND", 404, {}) else: log(4, "running script_form() ...") if current_user.has_groups(acl): log(4, request.args) (code, out, err) = run_script(dir_scripts, scrname, request.args) if code == 0: log(1, out) return make_response(str(code) + '\n' + out, 200) else: return make_response(str(code) + '\n' + err, 200) log(3, err) else: return ("FORBIDDEN", 403, {})