koa-plugins/plugins/php/index.js
2020-03-01 18:46:22 +01:00

49 lines
No EOL
1.5 KiB
JavaScript

const PHPFPM = require("./phpfpm");
const path = require("path");
const fs = require("fs");
const phpfpm = new PHPFPM({
sockFile: "/run/php/php7.3-fpm.sock",
documentRoot: path.join(__dirname, "../../contents")
});
const useIndex = true;
module.exports = {
enabled: true,
exec(ctx){
return new Promise((resolve, reject)=>{
if(ctx.request.url.split("/")[ctx.request.url.split("/").length - 1] == "")ctx.request.url += "index.php";
phpfpm.run({
hostname: ctx.hostname,
remote_addr: ctx.request.ip,
method: ctx.request.method,
referer : '',
url: ctx.request.url,
queryString : ctx.request.querystring
},
function(err, output, phpErrors){
if (err == 99) ctx.body = "PHP Server error";
ctx.body = output;
if (phpErrors) console.error(phpErrors);
resolve();
});
})
},
rules(ctx){
var p = path.join(__dirname, "../../contents/", ctx.request.url);
if(ctx.request.url.split("/")[ctx.request.url.split("/").length - 1] == "" && useIndex)p = path.join(p, "index.php");
if(!fs.existsSync(p))return false;
if(ctx.request.url.split("/")[ctx.request.url.split("/").length - 1] == "" && useIndex)return true;
var ext = ctx.request.url.split('.').pop();
return ext == "php";
},
priority: -2,
}