qcobjects-cli
Version:
qcobjects cli command line tool
8 lines (7 loc) • 17.6 kB
Source Map (JSON)
{
"version": 3,
"sources": ["../../../src/backend/backend-php.ts"],
"sourcesContent": ["/**\n * QCObjects CLI 2.3.x\n * ________________\n *\n * Author: Jean Machuca <correojean@gmail.com>\n *\n * Cross Browser Javascript Framework for MVC Patterns\n * QuickCorp/QCObjects is licensed under the\n * GNU Lesser General Public License v3.0\n * [LICENSE] (https://github.com/QuickCorp/QCObjects/blob/master/LICENSE.txt)\n *\n * Permissions of this copyleft license are conditioned on making available\n * complete source code of licensed works and modifications under the same\n * license or the GNU GPLv3. Copyright and license notices must be preserved.\n * Contributors provide an express grant of patent rights. However, a larger\n * work using the licensed work through interfaces provided by the licensed\n * work may be distributed under different terms and without source code for\n * the larger work.\n *\n * Copyright (C) 2015 Jean Machuca,<correojean@gmail.com>\n *\n * Everyone is permitted to copy and distribute verbatim copies of this\n * license document, but changing it is not allowed.\n */\n/* eslint no-unused-vars: \"off\" */\n/* eslint no-redeclare: \"off\" */\n/* eslint no-empty: \"off\" */\n/* eslint strict: \"off\" */\n/* eslint no-mixed-operators: \"off\" */\n/* eslint no-undef: \"off\" */\n\"use strict\";\nimport { PipeLog } from \"../common-pipelog\";\nimport fs from \"fs\";\nimport os from \"os\";\nimport { exec, execSync } from \"child_process\";\nimport path from \"node:path\";\nconst absolutePath = path.resolve(__dirname, \"./\");\n\nimport { Package, BackendMicroservice, logger, CONFIG, Class } from \"qcobjects\";\n\nconst fixWinCmd = function (commandline: string) {\n if (!process.platform.toLowerCase().startsWith(\"win\")) {\n commandline = commandline.replace(/(\")/g, String.fromCharCode(92) + \"\\\"\");\n }\n return commandline;\n};\n\n\nclass PHPMicroservice extends BackendMicroservice {\n request: any;\n stream: any;\n scriptFilePath: any;\n domain: any;\n tempFileName!: string;\n route: any;\n body: any;\n headers:any;\n constructor() {\n super();\n const o = this;\n\n logger.debug(\"PHP Microservice executing\");\n const microservice = this;\n const request = microservice.request;\n const stream = o.stream;\n microservice.stream = stream;\n stream.on(\"data\", (data: any) => {\n // data from POST, GET\n const requestMethod = request.method.toLowerCase();\n const supportedMethods: any = {\n \"post\": microservice.post.bind(this),\n };\n if (supportedMethods.hasOwnProperty.call(supportedMethods, requestMethod)) {\n supportedMethods[requestMethod].call(microservice, data);\n }\n });\n\n // data from POST, GET\n const requestMethod = request.method.toLowerCase();\n const supportedMethods: any = {\n \"get\": microservice.get.bind(this),\n \"head\": microservice.head.bind(this),\n \"put\": microservice.put.bind(this),\n \"delete\": microservice.delete.bind(this),\n \"connect\": microservice.connect.bind(this),\n \"options\": microservice.options.bind(this),\n \"trace\": microservice.trace.bind(this),\n \"patch\": microservice.patch.bind(this)\n };\n if (supportedMethods.hasOwnProperty.call(supportedMethods, requestMethod)) {\n supportedMethods[requestMethod].call(microservice);\n }\n\n }\n\n get_php_headers_list() {\n const phpheaders: any = {\n \"QUERY_STRING\": `${this.request.query}`,\n \"REDIRECT_STATUS\": \"200\",\n \"REQUEST_METHOD\": `${this.request.method}`,\n \"SCRIPT_FILENAME\": `${this.scriptFilePath}`,\n \"SCRIPT_NAME\": `${this.scriptFilePath.toString()}`,\n \"PATH_INFO\": `${this.request.path}`,\n \"SERVER_NAME\": `${this.domain}`,\n \"SERVER_PROTOCOL\": \"HTTP/2\",\n \"REQUEST_URI\": `${this.request.href}`,\n \"HTTP_HOST\": `${this.domain}`\n };\n\n function fixedEncodeURIComponent(str: string | number | boolean) {\n return encodeURIComponent(str).replace(/[!'()]/g, escape).replace(/\\*/g, \"%2A\");\n }\n for (const headername in this.request.headers) {\n if (!headername.startsWith(\":\")) {\n const phpheadername = headername.toUpperCase().replace(new RegExp(\"-\", \"g\"), \"_\");\n let headervalue = this.request.headers[headername];\n if (typeof headervalue !== \"string\") {\n headervalue = JSON.stringify(headervalue);\n }\n phpheaders[\"HTTP_\" + phpheadername] = fixedEncodeURIComponent(headervalue);\n }\n }\n\n return PipeLog.pipe(phpheaders);\n }\n\n saveTempData(data: any, done: { (): void; (): void; call?: any; }) {\n const filename = os.tmpdir() + this.tempFileName;\n fs.writeFile(filename, data, (err: any) => {\n if (err) throw err;\n logger.debug(\"A temp data file has been saved!\");\n done.call(this);\n });\n }\n\n generateTempFileName() {\n this.tempFileName = \"temp\" + Date.now().toString();\n return this.tempFileName;\n }\n\n trimSlash(pathname: string) {\n if (pathname.startsWith(\"/\")) {\n pathname = pathname.slice(1);\n }\n if (pathname.endsWith(\"/\")) {\n pathname = pathname.slice(0, -1);\n }\n return pathname.replace(\"//\", \"/\");\n }\n\n get() {\n const microservice = this;\n microservice.generateTempFileName();\n\n microservice.saveTempData(this.request.query, function () {\n try {\n process.chdir(CONFIG.get(\"documentRoot\") + microservice.request.pathname.slice(1));\n } catch (e) { }\n\n const scriptFileName = (microservice.route.hasOwnProperty.call(microservice.route, \"redirect_to\") &&\n microservice.route.redirect_to !== \"\") ? (microservice.route.redirect_to) : (microservice.request.scriptname);\n const pathname = microservice.trimSlash(microservice.request.pathname);\n let documentRoot = CONFIG.get(\"documentRoot\", \"\");\n if (documentRoot == \"./\") {\n documentRoot = \"\";\n }\n\n let scriptFilePath;\n if (documentRoot !== \"\") {\n scriptFilePath = `${documentRoot}/${pathname}/${scriptFileName}`;\n } else {\n scriptFilePath = `${pathname}/${scriptFileName}`;\n }\n\n scriptFilePath = scriptFilePath.replace(\"//\", \"/\");\n if (scriptFilePath.startsWith(\"/\") && !documentRoot.startsWith(\"/\")) {\n scriptFilePath = scriptFilePath.slice(1);\n }\n\n logger.debug(`Loading PHP file: ${scriptFilePath}`);\n const PHPIncludePath = `.:${CONFIG.get(\"documentRoot\")}:${CONFIG.get(\"projectPath\")}`;\n\n microservice.scriptFilePath = scriptFilePath;\n\n let commandline = `echo $(cat ${os.tmpdir()}${microservice.tempFileName}) |` + microservice.get_php_headers_list() + ` php -d include_path=\"${PHPIncludePath}\" -q <<- 'EOF'\n<?php\n$_payload = file_get_contents(sys_get_temp_dir().'${microservice.tempFileName}');\nforeach ($_SERVER as $_k => $_v) {\nif (array_key_exists($_k,$_ENV)){\n$_SERVER[$_k] = $_ENV[$_k];\n}\nif ( substr($_k, 0, strlen('HTTP_')) == 'HTTP_' ){\n$_SERVER[$_k]=urldecode($_v);\n}\n}\n@parse_str(parse_url('?'.$_payload, PHP_URL_QUERY), $_REQUEST);\n@parse_str(parse_url('?'.$_payload, PHP_URL_QUERY), $_GET);\nunlink(sys_get_temp_dir().'${microservice.tempFileName}');\ninclude('${scriptFilePath}');\n?>\nEOF`;\n commandline = fixWinCmd(commandline);\n logger.debug(commandline);\n try {\n const php = exec(commandline, (err: any, stdout: any, stderr: any) => {\n microservice.body = stdout;\n console.log(stderr);\n microservice.done();\n });\n } catch (ex: any) {\n microservice.body = \"500 - INTERNAL ERROR\";\n logger.debug(ex.toString());\n console.log(ex);\n microservice.done();\n }\n\n });\n\n }\n\n head(formData: any) {\n this.done();\n }\n\n post(formData: any) {\n logger.debug(\"POST DATA\");\n const microservice = this;\n microservice.generateTempFileName();\n\n microservice.saveTempData(formData, function () {\n try {\n process.chdir(CONFIG.get(\"documentRoot\") + microservice.request.pathname.slice(1));\n } catch (e) { }\n\n const scriptFileName = (microservice.route.hasOwnProperty.call(microservice.route, \"redirect_to\") &&\n microservice.route.redirect_to !== \"\") ? (microservice.route.redirect_to) : (microservice.request.scriptname);\n const pathname = microservice.trimSlash(microservice.request.pathname);\n let documentRoot = CONFIG.get(\"documentRoot\", \"\");\n if (documentRoot == \"./\") {\n documentRoot = \"\";\n }\n\n let scriptFilePath;\n if (documentRoot !== \"\") {\n scriptFilePath = `${documentRoot}/${pathname}/${scriptFileName}`;\n } else {\n scriptFilePath = `${pathname}/${scriptFileName}`;\n }\n\n scriptFilePath = scriptFilePath.replace(\"//\", \"/\");\n if (scriptFilePath.startsWith(\"/\") && !documentRoot.startsWith(\"/\")) {\n scriptFilePath = scriptFilePath.slice(1);\n }\n\n logger.debug(`Loading PHP file: ${scriptFilePath}`);\n const PHPIncludePath = `.:${CONFIG.get(\"documentRoot\")}:${CONFIG.get(\"projectPath\")}`;\n\n microservice.scriptFilePath = scriptFilePath;\n\n let commandline = `echo $(cat ${os.tmpdir()}${microservice.tempFileName}) |` + microservice.get_php_headers_list() + ` php -d include_path=\"${PHPIncludePath}\" -q <<- 'EOF'\n<?php\n$_payload = file_get_contents(sys_get_temp_dir().'${microservice.tempFileName}');\nforeach ($_SERVER as $_k => $_v) {\nif (array_key_exists($_k,$_ENV)){\n$_SERVER[$_k] = $_ENV[$_k];\n}\nif ( substr($_k, 0, strlen('HTTP_')) == 'HTTP_' ){\n$_SERVER[$_k]=urldecode($_v);\n}\n}\n@parse_str(parse_url('?'.$_payload, PHP_URL_QUERY), $_REQUEST);\n@parse_str(parse_url('?'.$_payload, PHP_URL_QUERY), $_POST);\nunlink(sys_get_temp_dir().'${microservice.tempFileName}');\n@include('${scriptFilePath}');\n?>\nEOF`;\n commandline = fixWinCmd(commandline);\n // logger.debug(commandline);\n\n try {\n microservice.body = execSync(commandline).toString();\n } catch (ex: any) {\n microservice.body = \"500 - INTERNAL ERROR\";\n logger.debug(ex.toString());\n }\n microservice.done();\n\n });\n\n }\n\n put(formData: any) {\n this.done();\n }\n\n delete(formData: any) {\n this.done();\n }\n\n connect(formData: any) {\n this.done();\n }\n\n options(formData: any) {\n this.done();\n }\n\n trace(formData: any) {\n this.done();\n }\n\n patch(formData: any) {\n this.done();\n }\n\n done() {\n const microservice = this;\n const stream = microservice.stream;\n try {\n stream.respond(microservice.headers);\n } catch (e) {\n //\n }\n if (microservice.body != null) {\n microservice.finishWithBody.call(microservice, stream);\n }\n }\n\n finishWithBody(stream: { write: (arg0: any) => void; end: () => void; }) {\n try {\n stream.write(this.body);\n stream.end();\n } catch (e: any) {\n logger.debug(\"Something wrong writing the response for microservice\" + e.toString());\n }\n }\n\n\n}\n\nconst Microservice = Class(\"Microservice\", PHPMicroservice);\n\nPackage(\"org.quickcorp.backend.php\", [\n\n PHPMicroservice,\n Microservice\n]);\n\nexports = {\n PHPMicroservice,\n Microservice\n};"],
"mappings": "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",
"names": ["requestMethod", "supportedMethods"]
}