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