qcobjects-cli
Version:
qcobjects cli command line tool
8 lines (7 loc) • 18.4 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\";\n\n(async () => {\n const fs = await import(\"node:fs\");\n const os = await import(\"node:os\");\n const { exec, execSync } = await import(\"node:child_process\");\n // MY_ENV_VAR=\"HELLO WORLD\" php -f index.php\n\n const { Package, BackendMicroservice, logger, CONFIG, Class } = await import(\"qcobjects\");\n const path = await import(\"node:path\");\n const absolutePath = path.resolve(__dirname, \"./\");\n\n const 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\n class 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\n const Microservice = Class(\"Microservice\", PHPMicroservice);\n\n Package(\"org.quickcorp.backend.php\", [\n\n PHPMicroservice,\n Microservice\n ]);\n\n exports = {\n PHPMicroservice,\n Microservice\n };\n})()\n.catch(e => {console.error(e);});"],
"mappings": "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",
"names": ["requestMethod", "supportedMethods"]
}