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"]
}