New Research: Supply Chain Attack on Axios Pulls Malicious Dependency from npm.Details →
Socket
Book a DemoSign in
Socket

webox-node

Package Overview
Dependencies
Maintainers
1
Versions
50
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

webox-node - npm Package Compare versions

Comparing version
4.0.1
to
4.0.2
+2
main-Dv7RZOGp.js
"use strict";var t=require("fs"),e=require("https"),a=require("http"),i=require("path"),n=require("child_process");var o,r,p,s,l,c={};function m(){if(r)return o;r=1;let t={};return process.env.WEBOX_CONF_FILE&&(t=require(process.env.WEBOX_CONF_FILE)),o=Object.assign({WEBOX_MODE:process.env.NODE_ENV||"development",WEBOX_HOST:"127.0.0.1",WEBOX_PORT:80,WEBOX_ROOT:"webroot",WEBOX_INDEX:["index.html","index.htm"],WEBOX_ERROR:{200:"%s",400:"Bad Request: %s",403:"Forbidden : %s",404:"NO Found: %s",500:"Internal Server Error: %s",503:"Service Unavilable: %s"},WEBOX_CHECK_API:"aHR0cHM6Ly9hcGkudm1sdS5jb20vd2Vib3gvP3BsYXRmb3JtPW5vZGU="},t)}function d(){if(s)return p;s=1;let t=m();function e(e,...i){if("development"!==t.WEBOX_MODE&&e>0)return;let n="["+a("yyyy-MM-dd hh:mm:ss")+"]";console.log(n,"Webox -",...i)}function a(t,e){let a=e||new Date,i={"M+":a.getMonth()+1,"d+":a.getDate(),"h+":a.getHours(),"m+":a.getMinutes(),"s+":a.getSeconds(),"q+":Math.floor((a.getMonth()+3)/3),S:a.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(a.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1===RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}return void 0===console.light&&(console.light=Function),p={logger:e,parseJSON:function(t){if("string"==typeof t)try{return JSON.parse(t)}catch(t){}},dateFormat:a,httpRedirect:function(t,a){t.writableEnded&&e(1,"Response has already been sent, ignore redirect:",a),t.writeHead(302,{Location:a}),t.end()},httpMessage:function(a,i,n,o){n=n||200,o=o||"text/plain","object"==typeof i&&(i=JSON.stringify(i),o="application/json"),"text/plain"==o&&t.WEBOX_ERROR[n]&&(i=t.WEBOX_ERROR[n].replace("%s",i)),a.writableEnded&&e(1,"Response has already been sent, ignore it.",i),a.writeHead(n,{"Content-Length":Buffer.byteLength(i),"Content-Type":o}),a.end(i)}}}var x,u,f,g,v,O,h,b,E,y,R,_,j,w,B,W,X,S={};function T(){if(h)return O;h=1;let e=t,a=function(){if(v)return g;v=1;let t=i,e={"3gp":"video/3gpp",a:"application/octet-stream",ai:"application/postscript",aif:"audio/x-aiff",aiff:"audio/x-aiff",asc:"application/pgp-signature",asf:"video/x-ms-asf",asm:"text/x-asm",asx:"video/x-ms-asf",atom:"application/atom+xml",au:"audio/basic",avi:"video/x-msvideo",bat:"application/x-msdownload",bin:"application/octet-stream",bmp:"image/bmp",bz2:"application/x-bzip2",c:"text/x-c",cab:"application/vnd.ms-cab-compressed",cc:"text/x-c",chm:"application/vnd.ms-htmlhelp",class:"application/octet-stream",com:"application/x-msdownload",conf:"text/plain",cpp:"text/x-c",crt:"application/x-x509-ca-cert",css:"text/css",csv:"text/csv",cxx:"text/x-c",deb:"application/x-debian-package",der:"application/x-x509-ca-cert",diff:"text/x-diff",djv:"image/vnd.djvu",djvu:"image/vnd.djvu",dll:"application/x-msdownload",dmg:"application/octet-stream",doc:"application/msword",dot:"application/msword",dtd:"application/xml-dtd",dvi:"application/x-dvi",ear:"application/java-archive",eml:"message/rfc822",eps:"application/postscript",exe:"application/x-msdownload",f:"text/x-fortran",f77:"text/x-fortran",f90:"text/x-fortran",flv:"video/x-flv",for:"text/x-fortran",gem:"application/octet-stream",gemspec:"text/x-script.ruby",gif:"image/gif",gz:"application/x-gzip",h:"text/x-c",hh:"text/x-c",htm:"text/html",html:"text/html",ico:"image/vnd.microsoft.icon",ics:"text/calendar",ifb:"text/calendar",iso:"application/octet-stream",jar:"application/java-archive",java:"text/x-java-source",jnlp:"application/x-java-jnlp-file",jpeg:"image/jpeg",jpg:"image/jpeg",js:"application/javascript",json:"application/json",log:"text/plain",m3u:"audio/x-mpegurl",m4v:"video/mp4",man:"text/troff",mathml:"application/mathml+xml",mbox:"application/mbox",mdoc:"text/troff",me:"text/troff",mid:"audio/midi",midi:"audio/midi",mime:"message/rfc822",mml:"application/mathml+xml",mng:"video/x-mng",mov:"video/quicktime",mp3:"audio/mpeg",mp4:"video/mp4",mp4v:"video/mp4",mpeg:"video/mpeg",mpg:"video/mpeg",ms:"text/troff",msi:"application/x-msdownload",odp:"application/vnd.oasis.opendocument.presentation",ods:"application/vnd.oasis.opendocument.spreadsheet",odt:"application/vnd.oasis.opendocument.text",ogg:"application/ogg",p:"text/x-pascal",pas:"text/x-pascal",pbm:"image/x-portable-bitmap",pdf:"application/pdf",pem:"application/x-x509-ca-cert",pgm:"image/x-portable-graymap",pgp:"application/pgp-encrypted",pkg:"application/octet-stream",pl:"text/x-script.perl",pm:"text/x-script.perl-module",png:"image/png",pnm:"image/x-portable-anymap",ppm:"image/x-portable-pixmap",pps:"application/vnd.ms-powerpoint",ppt:"application/vnd.ms-powerpoint",ps:"application/postscript",psd:"image/vnd.adobe.photoshop",py:"text/x-script.python",qt:"video/quicktime",ra:"audio/x-pn-realaudio",rake:"text/x-script.ruby",ram:"audio/x-pn-realaudio",rar:"application/x-rar-compressed",rb:"text/x-script.ruby",rdf:"application/rdf+xml",roff:"text/troff",rpm:"application/x-redhat-package-manager",rss:"application/rss+xml",rtf:"application/rtf",ru:"text/x-script.ruby",s:"text/x-asm",sgm:"text/sgml",sgml:"text/sgml",sh:"application/x-sh",sig:"application/pgp-signature",snd:"audio/basic",so:"application/octet-stream",svg:"image/svg+xml",svgz:"image/svg+xml",swf:"application/x-shockwave-flash",t:"text/troff",tar:"application/x-tar",tbz:"application/x-bzip-compressed-tar",tcl:"application/x-tcl",tex:"application/x-tex",texi:"application/x-texinfo",texinfo:"application/x-texinfo",text:"text/plain",tif:"image/tiff",tiff:"image/tiff",torrent:"application/x-bittorrent",tr:"text/troff",txt:"text/plain",vcf:"text/x-vcard",vcs:"text/x-vcalendar",vrml:"model/vrml",war:"application/java-archive",wav:"audio/x-wav",wma:"audio/x-ms-wma",wmv:"video/x-ms-wmv",wmx:"video/x-ms-wmx",wrl:"model/vrml",wsdl:"application/wsdl+xml",xbm:"image/x-xbitmap",xhtml:"application/xhtml+xml",xls:"application/vnd.ms-excel",xml:"application/xml",xpm:"image/x-xpixmap",xsl:"application/xml",xslt:"application/xslt+xml",yaml:"text/yaml",yml:"text/yaml",zip:"application/zip",mf:"text/cache-manifest"};return g=function(a){let i=t.extname(a);return i=i?i.slice(1):"unknown",e[i]||"application/octet-stream"}}(),{httpMessage:n,logger:o}=d();return O={handle:function(t,i){let{filename:r,requestURL:p}=t;return""===r?(n(i,p.pathname,404),!0):(i.writeHead(200,{"Content-Type":a(r)}),o(1,"Send Static File:",r),e.createReadStream(r).on("error",(t=>{n(i,p.pathname,503)})).on("data",(t=>{i.write(t)})).on("end",(()=>{i.end()})),!0)},route:"*"}}function q(){if(j)return _;j=1;let e=function(){if(f)return u;f=1;let e=t,a=i,n=m();function o(t,e){return 0===e.indexOf(".")?t+e:a.join(t,e)}return u={handle:function(t,i){let r=new URL(t.url,`http://${t.headers.host}`),p=a.join(n.WEBOX_ROOT,r.pathname);t.filename="",t.requestURL=r;let s=e.existsSync(p)&&e.lstatSync(p);if(s&&s.isFile())t.filename=p;else for(let a of n.WEBOX_INDEX){let i=o(p,a);if(e.existsSync(i))return void(t.filename=i)}},route:"*"}}(),a=T(),o=[function(){if(E)return b;E=1;let{exec:t}=n,{httpMessage:e}=d();return b={handle:function(a,i){let{filename:n,requestURL:o}=a,r="",p=o.search.replace(/^\?/,"").replace(/&/g," "),s=t(`${process.argv0} ${n} ${p}`,{windowsHide:!0,timeout:6e4});return s.stdout.on("data",(t=>{r+=t})),s.stderr.on("data",(t=>{r+=t})),s.on("exit",(t=>{e(i,r,t)})),!0},route:function(t,e){return e&&/\.cgi(\.js)?$/.test(e)}}}(),function(){if(R)return y;R=1;let{httpMessage:t}=d();return y={handle:function(e,a){let{filename:i,requestURL:n,bodyObject:o}=e;return require(i)({requestURL:n,bodyObject:o},((e,i)=>{t(a,e,i)})),!0},route:function(t,e){return e&&/\.cjs(\.js)?$/.test(e)}}}()];return _={push:function(t){o.splice(-2,0,t)},call:function(t,i){e.handle(t,i);let n=t.filename,r=t.requestURL.pathname;for(let{route:e,handle:a}of o)if((e instanceof RegExp&&e.test(r)||e instanceof Function&&e(r,n)||"string"==typeof e&&("*"===e||e===r))&&a(t,i))return!0;a.handle(t,i)}}}function H(){if(B)return w;B=1;let t=a,e=i,n=m(),{logger:o,parseJSON:r}=d(),p=q().call,s=t.createServer(((t,e)=>{if(o(1,t.method,"-",t.url),"GET"==t.method)return void p(t,e);let a="";t.addListener("data",(t=>{a+=t})),t.addListener("end",(()=>{a&&(t.bodyString=a,"application/json"===t.headers["content-type"]&&(t.bodyObject=r(a),void 0===t.bodyObject&&o(0,"Error: Only JSON body is supported"))),p(t,e)}))}));return s.on("error",(t=>{"EADDRINUSE"===t.code&&(o(0,"IP-Port in use:",n.WEBOX_HOST,n.WEBOX_PORT),o(0,"Failover to:",n.WEBOX_HOST,++n.WEBOX_PORT,"\n"),s.listen(n.WEBOX_PORT,n.WEBOX_HOST,1024))})),s.on("listening",(()=>{let t="0.0.0.0"===n.WEBOX_HOST?"127.0.0.1":n.WEBOX_HOST,e=n.WEBOX_PORT-80==0?"":":"+n.WEBOX_PORT;o(0,"Server started:","http://"+t+e),o(0,"Root Directory:",n.WEBOX_ROOT,"\n")})),w=function(t){t&&Object.assign(n,t),n.WEBOX_ROOT=e.resolve(n.WEBOX_ROOT),s.listen(n.WEBOX_PORT,n.WEBOX_HOST,1024)}}exports.getDefaultExportFromCjs=function(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t},exports.requireMain=function(){if(X)return W;X=1,function(){if(l)return c;l=1;let{logger:t}=d();process.title="Webox - HTTP Server",process.env.INIT_CWD=process.cwd(),process.once("exit",(e=>{t(0,"Service Stopped"),0===e&&process.env.WEBOX_EXIT_CODE&&process.exit(1)}))}(),function(){if(x)return S;x=1;let t=e,a=m(),{logger:i,parseJSON:n}=d(),o=Buffer.from(a.WEBOX_CHECK_API,"base64").toString();t.get(o+"&version=dev",(t=>{if(200!=t.statusCode)return;let e="";t.on("data",(t=>{e+=t.toString()})),t.on("end",(()=>{let t=n(e);t&&t.message&&i(t.message)}))})).on("error",(t=>{i(1,"Checker Error:",t.message)}))}();let t=d(),a=H(),{push:i}=q();return W={helper:t,init:a,use:i}};
//# sourceMappingURL=main-Dv7RZOGp.js.map
{"version":3,"file":"main-Dv7RZOGp.js","sources":["../src/helper/config.js","../src/helper/utils.js","../src/middleware/static.js","../src/helper/mime.js","../src/core/handle.js","../src/middleware/prepare.js","../src/middleware/use.cgi.js","../src/middleware/use.cjs.js","../src/core/server.js","../src/env.js","../src/main.js","../src/helper/check.js"],"sourcesContent":["let fs = require('fs');\n\n// 加载用户配置\n\nlet config = {};\n\nif (process.env.WEBOX_CONF_FILE) {\n config = require(process.env.WEBOX_CONF_FILE);\n}\n\n// 合并配置参数\n\nmodule.exports = Object.assign({\n\n // production or development\n WEBOX_MODE: process.env.NODE_ENV || 'development',\n\n WEBOX_HOST: '127.0.0.1',\n\n WEBOX_PORT: 80,\n\n WEBOX_ROOT: 'webroot',\n\n WEBOX_INDEX: [\n 'index.html',\n 'index.htm'\n ],\n\n WEBOX_ERROR: {\n 200: '%s',\n 400: 'Bad Request: %s',\n 403: 'Forbidden : %s',\n 404: 'NO Found: %s',\n 500: 'Internal Server Error: %s',\n 503: 'Service Unavilable: %s'\n },\n\n WEBOX_CHECK_API: 'aHR0cHM6Ly9hcGkudm1sdS5jb20vd2Vib3gvP3BsYXRmb3JtPW5vZGU='\n\n}, config);\n","let config = require('./config');\n\n/**\n * 控制台日志\n * @param {number} level 日志级别\n * @param {...any} msg 日志内容\n */\n\nfunction logger(level, ...msg) {\n\n if (config.WEBOX_MODE !== 'development' && level > 0) {\n return;\n }\n\n let time = '[' + dateFormat('yyyy-MM-dd hh:mm:ss') + ']';\n console.log(time, 'Webox -', ...msg);\n\n}\n\n/**\n * 时间格式化\n * @param {string} fmt 格式化选项\n * @param {Date} date 日期对象,默认为当前时间\n * @returns 格式化后的字符串\n */\n\nfunction dateFormat(fmt, date) {\n\n let d = date || new Date();\n let o = {\n 'M+': d.getMonth() + 1, //月\n 'd+': d.getDate(), //日\n 'h+': d.getHours(), //时\n 'm+': d.getMinutes(), //分\n 's+': d.getSeconds(), //秒\n 'q+': Math.floor((d.getMonth() + 3) / 3), //季度\n 'S': d.getMilliseconds() //毫秒\n };\n\n if (/(y+)/.test(fmt)) { //年\n fmt = fmt.replace(RegExp.$1, (d.getFullYear() + '').substr(4 - RegExp.$1.length));\n }\n\n for (let k in o) {\n if (new RegExp('(' + k + ')').test(fmt)) {\n fmt = fmt.replace(RegExp.$1, (RegExp.$1.length === 1) ? (o[k]) : (('00' + o[k]).substr(('' + o[k]).length)));\n }\n }\n\n return fmt;\n\n}\n\n/**\n * 尝试解析JSON\n * @param {string} str JSON字符串\n * @returns 成功返回结果,失败返回`undefined`\n */\n\nfunction parseJSON(str) {\n\n if (typeof str === 'string') {\n try {\n return JSON.parse(str);\n } catch (e) {\n }\n }\n\n}\n\n/**\n * 页面重定向\n * @param {http.ServerResponse} response 响应对象\n * @param {string } url 重定向地址\n */\n\nfunction httpRedirect(response, url) {\n\n if (response.writableEnded) {\n logger(1, 'Response has already been sent, ignore redirect:', url);\n }\n\n response.writeHead(302, {\n 'Location': url\n });\n\n response.end();\n\n}\n\n/**\n * 输出HTTP消息\n * @param {http.ServerResponse} response 响应对象\n * @param {string | object} output 输出内容\n * @param {number} code 状态码\n * @param {string} mime 内容类型\n */\n\nfunction httpMessage(response, output, code, mime) {\n\n code = code || 200;\n mime = mime || 'text/plain';\n\n if (typeof output === 'object') {\n output = JSON.stringify(output);\n mime = 'application/json';\n }\n\n if (mime == 'text/plain' && config.WEBOX_ERROR[code]) {\n output = config.WEBOX_ERROR[code].replace('%s', output);\n }\n\n if (response.writableEnded) {\n logger(1, 'Response has already been sent, ignore it.', output);\n }\n\n response.writeHead(code, {\n 'Content-Length': Buffer.byteLength(output),\n 'Content-Type': mime\n });\n\n response.end(output);\n\n}\n\n/**\n * 仅用于兼容老版调试工具\n */\n\nif (console.light === undefined) {\n console.light = Function;\n}\n\n/////////////////////////////////////////////////////////////\n\nmodule.exports = {\n logger: logger,\n parseJSON: parseJSON,\n dateFormat: dateFormat,\n httpRedirect: httpRedirect,\n httpMessage: httpMessage\n};\n","let fs = require('fs');\n\nlet getMimeType = require('../helper/mime');\nlet { httpMessage, logger } = require('../helper/utils');\n\n/////////////////////////////////////////////////////////////\n\n/**\n * 处理静态文件\n * @param {http.IncomingMessage} request HTTP请求\n * @param {http.ServerResponse} response HTTP响应\n */\nfunction handle(request, response) {\n\n let { filename, requestURL } = request;\n\n //找不到文件\n if (filename === '') {\n httpMessage(response, requestURL.pathname, 404);\n return true;\n }\n\n //输出文件头\n response.writeHead(200, {\n 'Content-Type': getMimeType(filename)\n });\n\n logger(1, 'Send Static File:', filename);\n\n //流式发送文件\n fs.createReadStream(filename)\n .on('error', err => {\n httpMessage(response, requestURL.pathname, 503);\n })\n .on('data', chunk => {\n response.write(chunk);\n })\n .on('end', () => {\n response.end();\n });\n\n return true;\n\n};\n\n/////////////////////////////////////////////////////////////\n\nmodule.exports = {\n handle: handle,\n route: '*'\n};\n","let path = require('path');\n\nlet mime = {\n '3gp': 'video/3gpp',\n 'a': 'application/octet-stream',\n 'ai': 'application/postscript',\n 'aif': 'audio/x-aiff',\n 'aiff': 'audio/x-aiff',\n 'asc': 'application/pgp-signature',\n 'asf': 'video/x-ms-asf',\n 'asm': 'text/x-asm',\n 'asx': 'video/x-ms-asf',\n 'atom': 'application/atom+xml',\n 'au': 'audio/basic',\n 'avi': 'video/x-msvideo',\n 'bat': 'application/x-msdownload',\n 'bin': 'application/octet-stream',\n 'bmp': 'image/bmp',\n 'bz2': 'application/x-bzip2',\n 'c': 'text/x-c',\n 'cab': 'application/vnd.ms-cab-compressed',\n 'cc': 'text/x-c',\n 'chm': 'application/vnd.ms-htmlhelp',\n 'class': 'application/octet-stream',\n 'com': 'application/x-msdownload',\n 'conf': 'text/plain',\n 'cpp': 'text/x-c',\n 'crt': 'application/x-x509-ca-cert',\n 'css': 'text/css',\n 'csv': 'text/csv',\n 'cxx': 'text/x-c',\n 'deb': 'application/x-debian-package',\n 'der': 'application/x-x509-ca-cert',\n 'diff': 'text/x-diff',\n 'djv': 'image/vnd.djvu',\n 'djvu': 'image/vnd.djvu',\n 'dll': 'application/x-msdownload',\n 'dmg': 'application/octet-stream',\n 'doc': 'application/msword',\n 'dot': 'application/msword',\n 'dtd': 'application/xml-dtd',\n 'dvi': 'application/x-dvi',\n 'ear': 'application/java-archive',\n 'eml': 'message/rfc822',\n 'eps': 'application/postscript',\n 'exe': 'application/x-msdownload',\n 'f': 'text/x-fortran',\n 'f77': 'text/x-fortran',\n 'f90': 'text/x-fortran',\n 'flv': 'video/x-flv',\n 'for': 'text/x-fortran',\n 'gem': 'application/octet-stream',\n 'gemspec': 'text/x-script.ruby',\n 'gif': 'image/gif',\n 'gz': 'application/x-gzip',\n 'h': 'text/x-c',\n 'hh': 'text/x-c',\n 'htm': 'text/html',\n 'html': 'text/html',\n 'ico': 'image/vnd.microsoft.icon',\n 'ics': 'text/calendar',\n 'ifb': 'text/calendar',\n 'iso': 'application/octet-stream',\n 'jar': 'application/java-archive',\n 'java': 'text/x-java-source',\n 'jnlp': 'application/x-java-jnlp-file',\n 'jpeg': 'image/jpeg',\n 'jpg': 'image/jpeg',\n 'js': 'application/javascript',\n 'json': 'application/json',\n 'log': 'text/plain',\n 'm3u': 'audio/x-mpegurl',\n 'm4v': 'video/mp4',\n 'man': 'text/troff',\n 'mathml': 'application/mathml+xml',\n 'mbox': 'application/mbox',\n 'mdoc': 'text/troff',\n 'me': 'text/troff',\n 'mid': 'audio/midi',\n 'midi': 'audio/midi',\n 'mime': 'message/rfc822',\n 'mml': 'application/mathml+xml',\n 'mng': 'video/x-mng',\n 'mov': 'video/quicktime',\n 'mp3': 'audio/mpeg',\n 'mp4': 'video/mp4',\n 'mp4v': 'video/mp4',\n 'mpeg': 'video/mpeg',\n 'mpg': 'video/mpeg',\n 'ms': 'text/troff',\n 'msi': 'application/x-msdownload',\n 'odp': 'application/vnd.oasis.opendocument.presentation',\n 'ods': 'application/vnd.oasis.opendocument.spreadsheet',\n 'odt': 'application/vnd.oasis.opendocument.text',\n 'ogg': 'application/ogg',\n 'p': 'text/x-pascal',\n 'pas': 'text/x-pascal',\n 'pbm': 'image/x-portable-bitmap',\n 'pdf': 'application/pdf',\n 'pem': 'application/x-x509-ca-cert',\n 'pgm': 'image/x-portable-graymap',\n 'pgp': 'application/pgp-encrypted',\n 'pkg': 'application/octet-stream',\n 'pl': 'text/x-script.perl',\n 'pm': 'text/x-script.perl-module',\n 'png': 'image/png',\n 'pnm': 'image/x-portable-anymap',\n 'ppm': 'image/x-portable-pixmap',\n 'pps': 'application/vnd.ms-powerpoint',\n 'ppt': 'application/vnd.ms-powerpoint',\n 'ps': 'application/postscript',\n 'psd': 'image/vnd.adobe.photoshop',\n 'py': 'text/x-script.python',\n 'qt': 'video/quicktime',\n 'ra': 'audio/x-pn-realaudio',\n 'rake': 'text/x-script.ruby',\n 'ram': 'audio/x-pn-realaudio',\n 'rar': 'application/x-rar-compressed',\n 'rb': 'text/x-script.ruby',\n 'rdf': 'application/rdf+xml',\n 'roff': 'text/troff',\n 'rpm': 'application/x-redhat-package-manager',\n 'rss': 'application/rss+xml',\n 'rtf': 'application/rtf',\n 'ru': 'text/x-script.ruby',\n 's': 'text/x-asm',\n 'sgm': 'text/sgml',\n 'sgml': 'text/sgml',\n 'sh': 'application/x-sh',\n 'sig': 'application/pgp-signature',\n 'snd': 'audio/basic',\n 'so': 'application/octet-stream',\n 'svg': 'image/svg+xml',\n 'svgz': 'image/svg+xml',\n 'swf': 'application/x-shockwave-flash',\n 't': 'text/troff',\n 'tar': 'application/x-tar',\n 'tbz': 'application/x-bzip-compressed-tar',\n 'tcl': 'application/x-tcl',\n 'tex': 'application/x-tex',\n 'texi': 'application/x-texinfo',\n 'texinfo': 'application/x-texinfo',\n 'text': 'text/plain',\n 'tif': 'image/tiff',\n 'tiff': 'image/tiff',\n 'torrent': 'application/x-bittorrent',\n 'tr': 'text/troff',\n 'txt': 'text/plain',\n 'vcf': 'text/x-vcard',\n 'vcs': 'text/x-vcalendar',\n 'vrml': 'model/vrml',\n 'war': 'application/java-archive',\n 'wav': 'audio/x-wav',\n 'wma': 'audio/x-ms-wma',\n 'wmv': 'video/x-ms-wmv',\n 'wmx': 'video/x-ms-wmx',\n 'wrl': 'model/vrml',\n 'wsdl': 'application/wsdl+xml',\n 'xbm': 'image/x-xbitmap',\n 'xhtml': 'application/xhtml+xml',\n 'xls': 'application/vnd.ms-excel',\n 'xml': 'application/xml',\n 'xpm': 'image/x-xpixmap',\n 'xsl': 'application/xml',\n 'xslt': 'application/xslt+xml',\n 'yaml': 'text/yaml',\n 'yml': 'text/yaml',\n 'zip': 'application/zip',\n 'mf': 'text/cache-manifest'\n};\n\n/////////////////////////////////////////////////////////////\n\nmodule.exports = function (file) {\n let ext = path.extname(file);\n ext = ext ? ext.slice(1) : 'unknown';\n return mime[ext] || 'application/octet-stream';\n}\n","let M_prepare = require('../middleware/prepare');\nlet M_static = require('../middleware/static');\n\nlet M_cgi = require('../middleware/use.cgi');\nlet M_cjs = require('../middleware/use.cjs');\n\n/////////////////////////////////////////////////////////////\n\nlet handlers = [\n M_cgi, M_cjs\n];\n\nfunction push(handler) {\n handlers.splice(-2, 0, handler);\n}\n\nfunction call(request, response) {\n\n M_prepare.handle(request, response);\n\n let filename = request.filename;\n let pathname = request.requestURL.pathname;\n\n for (let { route, handle } of handlers) {\n\n if (\n (route instanceof RegExp && route.test(pathname)) ||\n (route instanceof Function && route(pathname, filename)) ||\n (typeof route === 'string' && (route === '*' || route === pathname))\n ) {\n if (handle(request, response)) {\n return true;\n }\n }\n\n }\n\n M_static.handle(request, response);\n\n}\n\n/////////////////////////////////////////////////////////////\n\nmodule.exports = {\n push: push,\n call: call\n};\n","let fs = require('fs');\nlet path = require('path');\n\nlet config = require('../helper/config');\n\n/////////////////////////////////////////////////////////////\n\n/**\n * 补全文件路径\n * @param {string} file 路径\n * @param {string} suff 后缀\n * @returns \n */\nfunction fixpath(file, suff) {\n if (suff.indexOf('.') === 0) {\n return file + suff;\n }\n return path.join(file, suff);\n}\n\n/**\n * 解析HTTP请求\n * @param {http.IncomingMessage} request HTTP请求\n * @param {http.ServerResponse} response HTTP响应\n */\nfunction handle(request, response) {\n\n let requestURL = new URL(request.url, `http://${request.headers.host}`);\n\n let filename = path.join(config.WEBOX_ROOT, requestURL.pathname);\n\n //添加基础属性\n request.filename = '';\n request.requestURL = requestURL;\n\n //文件存在直接返回\n let filestat = fs.existsSync(filename) && fs.lstatSync(filename);\n if (filestat && filestat.isFile()) {\n request.filename = filename;\n return;\n }\n\n //尝试返回默认首页\n for (let index of config.WEBOX_INDEX) {\n let file = fixpath(filename, index);\n if (fs.existsSync(file)) {\n request.filename = file;\n return;\n }\n }\n\n}\n\n/////////////////////////////////////////////////////////////\n\nmodule.exports = {\n handle: handle,\n route: '*'\n};\n","let { exec } = require('child_process');\n\nlet { httpMessage } = require('../helper/utils');\n\n/////////////////////////////////////////////////////////////\n\n/**\n * 路由检查\n * @param {string} p pathname\n * @param {string} f filename\n * @returns 是否调用处理函数\n */\nfunction route(p, f) {\n return f && /\\.cgi(\\.js)?$/.test(f);\n}\n\n/**\n * 处理HTTP请求\n * @param {http.IncomingMessage} request HTTP请求\n * @param {http.ServerResponse} response HTTP响应\n */\nfunction handle(request, response) {\n\n let { filename, requestURL } = request;\n\n let text = '';\n\n let args = requestURL.search.replace(/^\\?/, '').replace(/&/g, ' ');\n\n let child = exec(`${process.argv0} ${filename} ${args}`, {\n windowsHide: true,\n timeout: 60000\n });\n\n child.stdout.on('data', data => {\n text += data;\n });\n child.stderr.on('data', data => {\n text += data;\n });\n\n child.on('exit', code => {\n code === 0 ? 200 : 503;\n httpMessage(response, text, code);\n });\n\n return true;\n\n}\n\n/////////////////////////////////////////////////////////////\n\nmodule.exports = {\n handle: handle,\n route: route\n};\n\n","let { httpMessage } = require('../helper/utils');\n\n/////////////////////////////////////////////////////////////\n\n/**\n * 路由检查\n * @param {string} p pathname\n * @param {string} f filename\n * @returns 是否调用处理函数\n */\nfunction route(p, f) {\n return f && /\\.cjs(\\.js)?$/.test(f);\n}\n\n/**\n * 处理HTTP请求\n * @param {http.IncomingMessage} request HTTP请求\n * @param {http.ServerResponse} response HTTP响应\n */\nfunction handle(request, response) {\n\n let { filename, requestURL, bodyObject } = request;\n\n let child = require(filename);\n\n child({ requestURL, bodyObject }, (text, code) => {\n httpMessage(response, text, code);\n });\n\n return true;\n\n}\n\n/////////////////////////////////////////////////////////////\n\nmodule.exports = {\n handle: handle,\n route: route\n};\n","let http = require('http');\nlet path = require('path');\n\nlet config = require('../helper/config');\nlet { logger, parseJSON } = require('../helper/utils');\n\nlet handleCaller = require('./handle').call;\n\n/////////////////////////////////////////////////////////////\n// create server\n\nlet httpServer = http.createServer((request, response) => {\n\n logger(1, request.method, '-', request.url);\n\n if (request.method == 'GET') {\n handleCaller(request, response);\n return;\n }\n\n let body = '';\n request.addListener('data', data => {\n body += data\n });\n\n request.addListener('end', () => {\n if (body) {\n request.bodyString = body;\n if (request.headers['content-type'] === 'application/json') {\n request.bodyObject = parseJSON(body);\n if (request.bodyObject === undefined) {\n logger(0, 'Error: Only JSON body is supported');\n }\n }\n }\n handleCaller(request, response);\n });\n\n});\n\nhttpServer.on('error', err => {\n\n if (err.code === 'EADDRINUSE') {\n logger(0, 'IP-Port in use:', config.WEBOX_HOST, config.WEBOX_PORT);\n logger(0, 'Failover to:', config.WEBOX_HOST, ++config.WEBOX_PORT, '\\n');\n httpServer.listen(config.WEBOX_PORT, config.WEBOX_HOST, 1024);\n }\n\n});\n\nhttpServer.on('listening', () => {\n\n let host = config.WEBOX_HOST === '0.0.0.0' ? '127.0.0.1' : config.WEBOX_HOST;\n let port = config.WEBOX_PORT - 80 === 0 ? '' : ':' + config.WEBOX_PORT;\n\n logger(0, 'Server started:', 'http://' + host + port);\n logger(0, 'Root Directory:', config.WEBOX_ROOT, '\\n');\n\n});\n\n/////////////////////////////////////////////////////////////\n// start server\n\nmodule.exports = function (options) {\n\n options && Object.assign(config, options);\n\n config.WEBOX_ROOT = path.resolve(config.WEBOX_ROOT);\n\n httpServer.listen(config.WEBOX_PORT, config.WEBOX_HOST, 1024);\n\n};\n","/**\n * Webox - HTTP Server\n * @author rehiy <wang@rehiy.com>\n * @Website http://www.rehiy.com/webox\n */\n\nlet { logger } = require('./helper/utils');\n\n/////////////////////////////////////////////////////////////\n\n// set title\nprocess.title = 'Webox - HTTP Server';\n\n// set env var for ORIGINAL cwd\nprocess.env.INIT_CWD = process.cwd();\n\n// normal exit with 0 or 1\nprocess.once('exit', code => {\n logger(0, 'Service Stopped');\n if (code === 0 && process.env.WEBOX_EXIT_CODE) {\n process.exit(1);\n }\n});\n","/**\n * Webox - HTTP Server\n * @author rehiy <wang@rehiy.com>\n * @Website http://www.rehiy.com/webox\n */\n\n'use strict';\n\n// load env\nrequire('./env');\n\n// security check\nrequire('./helper/check');\n\n/////////////////////////////////////////////////////////////\n\nlet utils = require('./helper/utils');\n\nlet server = require('./core/server');\n\nlet { push } = require('./core/handle');\n\nmodule.exports = {\n helper: utils,\n init: server,\n use: push\n};\n","let https = require('https');\n\nlet config = require('./config');\n\nlet { logger, parseJSON } = require('./utils');\n\nlet CHECK_API = Buffer.from(config.WEBOX_CHECK_API, 'base64').toString();\n\n\nlet req = https.get(CHECK_API + '&version=dev', res => {\n\n if (res.statusCode != 200) {\n return;\n }\n\n let raw = '';\n\n res.on('data', d => {\n raw += d.toString();\n });\n\n res.on('end', () => {\n let data = parseJSON(raw);\n if (data && data.message) {\n logger(data.message);\n }\n });\n\n});\n\nreq.on('error', e => {\n\n logger(1, 'Checker Error:', e.message);\n\n});\n"],"names":["config","process","env","WEBOX_CONF_FILE","require","config_1","Object","assign","WEBOX_MODE","NODE_ENV","WEBOX_HOST","WEBOX_PORT","WEBOX_ROOT","WEBOX_INDEX","WEBOX_ERROR","WEBOX_CHECK_API","require$$0","logger","level","msg","time","dateFormat","console","log","fmt","date","d","Date","o","getMonth","getDate","getHours","getMinutes","getSeconds","Math","floor","S","getMilliseconds","test","replace","RegExp","$1","getFullYear","substr","length","k","undefined","light","Function","utils","parseJSON","str","JSON","parse","e","httpRedirect","response","url","writableEnded","writeHead","Location","end","httpMessage","output","code","mime","stringify","Buffer","byteLength","fs","getMimeType","path","a","ai","aif","aiff","asc","asf","asm","asx","atom","au","avi","bat","bin","bmp","bz2","c","cab","cc","chm","class","com","conf","cpp","crt","css","csv","cxx","deb","der","diff","djv","djvu","dll","dmg","doc","dot","dtd","dvi","ear","eml","eps","exe","f","f77","f90","flv","for","gem","gemspec","gif","gz","h","hh","htm","html","ico","ics","ifb","iso","jar","java","jnlp","jpeg","jpg","js","json","m3u","m4v","man","mathml","mbox","mdoc","me","mid","midi","mml","mng","mov","mp3","mp4","mp4v","mpeg","mpg","ms","msi","odp","ods","odt","ogg","p","pas","pbm","pdf","pem","pgm","pgp","pkg","pl","pm","png","pnm","ppm","pps","ppt","ps","psd","py","qt","ra","rake","ram","rar","rb","rdf","roff","rpm","rss","rtf","ru","s","sgm","sgml","sh","sig","snd","so","svg","svgz","swf","t","tar","tbz","tcl","tex","texi","texinfo","text","tif","tiff","torrent","tr","txt","vcf","vcs","vrml","war","wav","wma","wmv","wmx","wrl","wsdl","xbm","xhtml","xls","xml","xpm","xsl","xslt","yaml","yml","zip","mf","mime_1","file","ext","extname","slice","require$$1","require$$2","_static","handle","request","filename","requestURL","pathname","createReadStream","on","err","chunk","write","route","M_prepare","fixpath","suff","indexOf","join","prepare","URL","headers","host","filestat","existsSync","lstatSync","isFile","index","M_static","handlers","exec","use_cgi","args","search","child","argv0","windowsHide","timeout","stdout","data","stderr","use_cjs","bodyObject","require$$3","push","handler","splice","call","http","handleCaller","require$$4","httpServer","createServer","method","body","addListener","bodyString","listen","port","server","options","resolve","title","INIT_CWD","cwd","once","WEBOX_EXIT_CODE","exit","https","CHECK_API","from","toString","get","res","statusCode","raw","message","main","helper","init","use"],"mappings":"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"}
+1
-1
#!/usr/bin/env node
"use strict";var e=require("./main-264c9b15.js");require("fs"),require("https"),require("http"),require("path"),require("child_process");let r={},i=process.argv.slice(2),s=i[0]?i[0].split(":"):[];s[0]&&(r.WEBOX_HOST=s[0]),s[1]&&s[1]>0&&(r.WEBOX_PORT=s[1]),i[1]&&(r.WEBOX_ROOT=i[1]),e.main.init(r),module.exports={};
"use strict";var r=require("./main-Dv7RZOGp.js");require("fs"),require("https"),require("http"),require("path"),require("child_process");var e,i={};var t=function(){if(e)return i;e=1;let t={},s=process.argv.slice(2),u=s[0]?s[0].split(":"):[];return u[0]&&(t.WEBOX_HOST=u[0]),u[1]&&u[1]>0&&(t.WEBOX_PORT=u[1]),s[1]&&(t.WEBOX_ROOT=s[1]),r.requireMain().init(t),i}(),s=r.getDefaultExportFromCjs(t);module.exports=s;
//# sourceMappingURL=cli.js.map

@@ -1,1 +0,1 @@

{"version":3,"file":"cli.js","sources":["../src/cli.js"],"sourcesContent":["/**\n * Webox - HTTP Server\n * @author rehiy <wang@rehiy.com>\n * @Website http://www.rehiy.com/webox\n */\n\nlet config = {};\n\nlet params = process.argv.slice(2);\nlet listen = params[0] ? params[0].split(':') : [];\n\nif (listen[0]) {\n config.WEBOX_HOST = listen[0];\n}\n\nif (listen[1] && listen[1] > 0) {\n config.WEBOX_PORT = listen[1];\n}\n\nif (params[1]) {\n config.WEBOX_ROOT = params[1];\n}\n\n/////////////////////////////////////////////////////////////\n\nlet app = require('./main');\n\napp.init(config);\n"],"names":["config","params","process","argv","slice","listen","split","WEBOX_HOST","WEBOX_PORT","WEBOX_ROOT","require$$0","init"],"mappings":"yIAMA,IAAIA,EAAS,CAAA,EAETC,EAASC,QAAQC,KAAKC,MAAM,GAC5BC,EAASJ,EAAO,GAAKA,EAAO,GAAGK,MAAM,KAAO,GAE5CD,EAAO,KACPL,EAAOO,WAAaF,EAAO,IAG3BA,EAAO,IAAMA,EAAO,GAAK,IACzBL,EAAOQ,WAAaH,EAAO,IAG3BJ,EAAO,KACPD,EAAOS,WAAaR,EAAO,IAKrBS,EAAAA,KAENC,KAAKX"}
{"version":3,"file":"cli.js","sources":["../src/cli.js?commonjs-entry","../src/cli.js"],"sourcesContent":["import { getDefaultExportFromCjs } from \"\u0000commonjsHelpers.js\";\nimport { __require as requireCli } from \"D:\\\\Workspace\\\\rehiy-public\\\\webox-node\\\\src\\\\cli.js\";\nvar cliExports = requireCli();\nexport { cliExports as __moduleExports };\nexport default /*@__PURE__*/getDefaultExportFromCjs(cliExports);","/**\n * Webox - HTTP Server\n * @author rehiy <wang@rehiy.com>\n * @Website http://www.rehiy.com/webox\n */\n\nlet config = {};\n\nlet params = process.argv.slice(2);\nlet listen = params[0] ? params[0].split(':') : [];\n\nif (listen[0]) {\n config.WEBOX_HOST = listen[0];\n}\n\nif (listen[1] && listen[1] > 0) {\n config.WEBOX_PORT = listen[1];\n}\n\nif (params[1]) {\n config.WEBOX_ROOT = params[1];\n}\n\n/////////////////////////////////////////////////////////////\n\nlet app = require('./main');\n\napp.init(config);\n"],"names":["cliExports","config","params","process","argv","slice","listen","split","WEBOX_HOST","WEBOX_PORT","WEBOX_ROOT","require$$0","init","requireCli","cli","getDefaultExportFromCjs"],"mappings":"oJAEA,IAAIA,+BCIJ,IAAIC,EAAS,CAAE,EAEXC,EAASC,QAAQC,KAAKC,MAAM,GAC5BC,EAASJ,EAAO,GAAKA,EAAO,GAAGK,MAAM,KAAO,UAE5CD,EAAO,KACPL,EAAOO,WAAaF,EAAO,IAG3BA,EAAO,IAAMA,EAAO,GAAK,IACzBL,EAAOQ,WAAaH,EAAO,IAG3BJ,EAAO,KACPD,EAAOS,WAAaR,EAAO,IAKrBS,EAAAA,cAENC,KAAKX,KDzBQY,GAEjBC,EAA4BC,EAAAA,wBAAwBf"}

@@ -1,2 +0,2 @@

"use strict";var e=require("./main-264c9b15.js");require("fs"),require("https"),require("http"),require("path"),require("child_process"),module.exports=e.main$1;
"use strict";var r=require("./main-Dv7RZOGp.js");require("fs"),require("https"),require("http"),require("path"),require("child_process");var e=r.requireMain(),i=r.getDefaultExportFromCjs(e);module.exports=i;
//# sourceMappingURL=main.js.map

@@ -1,1 +0,1 @@

{"version":3,"file":"main.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
{"version":3,"file":"main.js","sources":["../src/main.js?commonjs-entry"],"sourcesContent":["import { getDefaultExportFromCjs } from \"\u0000commonjsHelpers.js\";\nimport { __require as requireMain } from \"D:\\\\Workspace\\\\rehiy-public\\\\webox-node\\\\src\\\\main.js\";\nvar mainExports = requireMain();\nexport { mainExports as __moduleExports };\nexport default /*@__PURE__*/getDefaultExportFromCjs(mainExports);"],"names":["mainExports","requireMain","main","getDefaultExportFromCjs"],"mappings":"yIAEA,IAAIA,EAAcC,EAAAA,cAElBC,EAA4BC,EAAAA,wBAAwBH"}

@@ -1,1 +0,1 @@

{"name":"webox-node","version":"4.0.1","author":{"name":"Rehiy Wang","email":"wang@rehiy.com","url":"http://www.rehiy.com"},"homepage":"https://github.com/rehiy/webox-node","description":"Webox-node is a simple HTTP server. Webox-node can execute js file through node-cli, just like CGI. It can also load js file as commonjs module, just like PHP and ASP.","license":"MIT License","keywords":["mini","simple","http","web","server","webox"],"repository":{"type":"git","url":"git://github.com/rehiy/webox-node.git"},"main":"./main.js","bin":{"webox":"./cli.js"}}
{"name":"webox-node","version":"4.0.2","author":{"name":"Rehiy Wang","email":"wang@rehiy.com","url":"http://www.rehiy.com"},"homepage":"https://github.com/rehiy/webox-node","description":"Webox-node is a simple HTTP server. Webox-node can execute js file through node-cli, just like CGI. It can also load js file as commonjs module, just like PHP and ASP.","license":"MIT License","keywords":["mini","simple","http","web","server","webox"],"repository":{"type":"git","url":"git://github.com/rehiy/webox-node.git"},"main":"./main.js","bin":{"webox":"./cli.js"}}
"use strict";var e=require("fs"),t=require("https"),a=require("http"),i=require("path"),o=require("child_process");function p(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}let n={};process.env.WEBOX_CONF_FILE&&(n=require(process.env.WEBOX_CONF_FILE));var r=Object.assign({WEBOX_MODE:process.env.NODE_ENV||"development",WEBOX_HOST:"127.0.0.1",WEBOX_PORT:80,WEBOX_ROOT:"webroot",WEBOX_INDEX:["index.html","index.htm"],WEBOX_ERROR:{200:"%s",400:"Bad Request: %s",403:"Forbidden : %s",404:"NO Found: %s",500:"Internal Server Error: %s",503:"Service Unavilable: %s"},WEBOX_CHECK_API:"aHR0cHM6Ly9hcGkudm1sdS5jb20vd2Vib3gvP3BsYXRmb3JtPW5vZGU="},n);let s=r;function l(e,...t){if("development"!==s.WEBOX_MODE&&e>0)return;let a="["+c("yyyy-MM-dd hh:mm:ss")+"]";console.log(a,"Webox -",...t)}function c(e,t){let a=t||new Date,i={"M+":a.getMonth()+1,"d+":a.getDate(),"h+":a.getHours(),"m+":a.getMinutes(),"s+":a.getSeconds(),"q+":Math.floor((a.getMonth()+3)/3),S:a.getMilliseconds()};/(y+)/.test(e)&&(e=e.replace(RegExp.$1,(a.getFullYear()+"").substr(4-RegExp.$1.length)));for(let t in i)new RegExp("("+t+")").test(e)&&(e=e.replace(RegExp.$1,1===RegExp.$1.length?i[t]:("00"+i[t]).substr((""+i[t]).length)));return e}void 0===console.light&&(console.light=Function);var m={logger:l,parseJSON:function(e){if("string"==typeof e)try{return JSON.parse(e)}catch(e){}},dateFormat:c,httpRedirect:function(e,t){e.writableEnded&&l(1,"Response has already been sent, ignore redirect:",t),e.writeHead(302,{Location:t}),e.end()},httpMessage:function(e,t,a,i){a=a||200,i=i||"text/plain","object"==typeof t&&(t=JSON.stringify(t),i="application/json"),"text/plain"==i&&s.WEBOX_ERROR[a]&&(t=s.WEBOX_ERROR[a].replace("%s",t)),e.writableEnded&&l(1,"Response has already been sent, ignore it.",t),e.writeHead(a,{"Content-Length":Buffer.byteLength(t),"Content-Type":i}),e.end(t)}};let{logger:d}=m;process.title="Webox - HTTP Server",process.env.INIT_CWD=process.cwd(),process.once("exit",(e=>{d(0,"Service Stopped"),0===e&&process.env.WEBOX_EXIT_CODE&&process.exit(1)}));let x=t,g=r,{logger:f,parseJSON:u}=m,v=Buffer.from(g.WEBOX_CHECK_API,"base64").toString();x.get(v+"&version=dev",(e=>{if(200!=e.statusCode)return;let t="";e.on("data",(e=>{t+=e.toString()})),e.on("end",(()=>{let e=u(t);e&&e.message&&f(e.message)}))})).on("error",(e=>{f(1,"Checker Error:",e.message)}));let O=e,h=i,b=r;function E(e,t){return 0===t.indexOf(".")?e+t:h.join(e,t)}var R={handle:function(e,t){let a=new URL(e.url,`http://${e.headers.host}`),i=h.join(b.WEBOX_ROOT,a.pathname);e.filename="",e.requestURL=a;let o=O.existsSync(i)&&O.lstatSync(i);if(o&&o.isFile())e.filename=i;else for(let t of b.WEBOX_INDEX){let a=E(i,t);if(O.existsSync(a))return void(e.filename=a)}},route:"*"};let y=i,_={"3gp":"video/3gpp",a:"application/octet-stream",ai:"application/postscript",aif:"audio/x-aiff",aiff:"audio/x-aiff",asc:"application/pgp-signature",asf:"video/x-ms-asf",asm:"text/x-asm",asx:"video/x-ms-asf",atom:"application/atom+xml",au:"audio/basic",avi:"video/x-msvideo",bat:"application/x-msdownload",bin:"application/octet-stream",bmp:"image/bmp",bz2:"application/x-bzip2",c:"text/x-c",cab:"application/vnd.ms-cab-compressed",cc:"text/x-c",chm:"application/vnd.ms-htmlhelp",class:"application/octet-stream",com:"application/x-msdownload",conf:"text/plain",cpp:"text/x-c",crt:"application/x-x509-ca-cert",css:"text/css",csv:"text/csv",cxx:"text/x-c",deb:"application/x-debian-package",der:"application/x-x509-ca-cert",diff:"text/x-diff",djv:"image/vnd.djvu",djvu:"image/vnd.djvu",dll:"application/x-msdownload",dmg:"application/octet-stream",doc:"application/msword",dot:"application/msword",dtd:"application/xml-dtd",dvi:"application/x-dvi",ear:"application/java-archive",eml:"message/rfc822",eps:"application/postscript",exe:"application/x-msdownload",f:"text/x-fortran",f77:"text/x-fortran",f90:"text/x-fortran",flv:"video/x-flv",for:"text/x-fortran",gem:"application/octet-stream",gemspec:"text/x-script.ruby",gif:"image/gif",gz:"application/x-gzip",h:"text/x-c",hh:"text/x-c",htm:"text/html",html:"text/html",ico:"image/vnd.microsoft.icon",ics:"text/calendar",ifb:"text/calendar",iso:"application/octet-stream",jar:"application/java-archive",java:"text/x-java-source",jnlp:"application/x-java-jnlp-file",jpeg:"image/jpeg",jpg:"image/jpeg",js:"application/javascript",json:"application/json",log:"text/plain",m3u:"audio/x-mpegurl",m4v:"video/mp4",man:"text/troff",mathml:"application/mathml+xml",mbox:"application/mbox",mdoc:"text/troff",me:"text/troff",mid:"audio/midi",midi:"audio/midi",mime:"message/rfc822",mml:"application/mathml+xml",mng:"video/x-mng",mov:"video/quicktime",mp3:"audio/mpeg",mp4:"video/mp4",mp4v:"video/mp4",mpeg:"video/mpeg",mpg:"video/mpeg",ms:"text/troff",msi:"application/x-msdownload",odp:"application/vnd.oasis.opendocument.presentation",ods:"application/vnd.oasis.opendocument.spreadsheet",odt:"application/vnd.oasis.opendocument.text",ogg:"application/ogg",p:"text/x-pascal",pas:"text/x-pascal",pbm:"image/x-portable-bitmap",pdf:"application/pdf",pem:"application/x-x509-ca-cert",pgm:"image/x-portable-graymap",pgp:"application/pgp-encrypted",pkg:"application/octet-stream",pl:"text/x-script.perl",pm:"text/x-script.perl-module",png:"image/png",pnm:"image/x-portable-anymap",ppm:"image/x-portable-pixmap",pps:"application/vnd.ms-powerpoint",ppt:"application/vnd.ms-powerpoint",ps:"application/postscript",psd:"image/vnd.adobe.photoshop",py:"text/x-script.python",qt:"video/quicktime",ra:"audio/x-pn-realaudio",rake:"text/x-script.ruby",ram:"audio/x-pn-realaudio",rar:"application/x-rar-compressed",rb:"text/x-script.ruby",rdf:"application/rdf+xml",roff:"text/troff",rpm:"application/x-redhat-package-manager",rss:"application/rss+xml",rtf:"application/rtf",ru:"text/x-script.ruby",s:"text/x-asm",sgm:"text/sgml",sgml:"text/sgml",sh:"application/x-sh",sig:"application/pgp-signature",snd:"audio/basic",so:"application/octet-stream",svg:"image/svg+xml",svgz:"image/svg+xml",swf:"application/x-shockwave-flash",t:"text/troff",tar:"application/x-tar",tbz:"application/x-bzip-compressed-tar",tcl:"application/x-tcl",tex:"application/x-tex",texi:"application/x-texinfo",texinfo:"application/x-texinfo",text:"text/plain",tif:"image/tiff",tiff:"image/tiff",torrent:"application/x-bittorrent",tr:"text/troff",txt:"text/plain",vcf:"text/x-vcard",vcs:"text/x-vcalendar",vrml:"model/vrml",war:"application/java-archive",wav:"audio/x-wav",wma:"audio/x-ms-wma",wmv:"video/x-ms-wmv",wmx:"video/x-ms-wmx",wrl:"model/vrml",wsdl:"application/wsdl+xml",xbm:"image/x-xbitmap",xhtml:"application/xhtml+xml",xls:"application/vnd.ms-excel",xml:"application/xml",xpm:"image/x-xpixmap",xsl:"application/xml",xslt:"application/xslt+xml",yaml:"text/yaml",yml:"text/yaml",zip:"application/zip",mf:"text/cache-manifest"};let w=e,j=function(e){let t=y.extname(e);return t=t?t.slice(1):"unknown",_[t]||"application/octet-stream"},{httpMessage:B,logger:W}=m;var X={handle:function(e,t){let{filename:a,requestURL:i}=e;return""===a?(B(t,i.pathname,404),!0):(t.writeHead(200,{"Content-Type":j(a)}),W(1,"Send Static File:",a),w.createReadStream(a).on("error",(e=>{B(t,i.pathname,503)})).on("data",(e=>{t.write(e)})).on("end",(()=>{t.end()})),!0)},route:"*"};let{exec:S}=o,{httpMessage:T}=m;var q={handle:function(e,t){let{filename:a,requestURL:i}=e,o="",p=i.search.replace(/^\?/,"").replace(/&/g," "),n=S(`${process.argv0} ${a} ${p}`,{windowsHide:!0,timeout:6e4});return n.stdout.on("data",(e=>{o+=e})),n.stderr.on("data",(e=>{o+=e})),n.on("exit",(e=>{T(t,o,e)})),!0},route:function(e,t){return t&&/\.cgi(\.js)?$/.test(t)}};let{httpMessage:H}=m;let M=R,L=X,N=[q,{handle:function(e,t){let{filename:a,requestURL:i,bodyObject:o}=e;return require(a)({requestURL:i,bodyObject:o},((e,a)=>{H(t,e,a)})),!0},route:function(e,t){return t&&/\.cjs(\.js)?$/.test(t)}}];var P={push:function(e){N.splice(-2,0,e)},call:function(e,t){M.handle(e,t);let a=e.filename,i=e.requestURL.pathname;for(let{route:o,handle:p}of N)if((o instanceof RegExp&&o.test(i)||o instanceof Function&&o(i,a)||"string"==typeof o&&("*"===o||o===i))&&p(e,t))return!0;L.handle(e,t)}};let C=a,F=i,D=r,{logger:I,parseJSON:$}=m,k=P.call,U=C.createServer(((e,t)=>{if(I(1,e.method,"-",e.url),"GET"==e.method)return void k(e,t);let a="";e.addListener("data",(e=>{a+=e})),e.addListener("end",(()=>{a&&(e.bodyObject=$(a),void 0===e.bodyObject&&I(0,"Error: Only JSON body is supported")),k(e,t)}))}));U.on("error",(e=>{"EADDRINUSE"===e.code&&(I(0,"IP-Port in use:",D.WEBOX_HOST,D.WEBOX_PORT),I(0,"Failover to:",D.WEBOX_HOST,++D.WEBOX_PORT,"\n"),U.listen(D.WEBOX_PORT,D.WEBOX_HOST,1024))})),U.on("listening",(()=>{let e="0.0.0.0"===D.WEBOX_HOST?"127.0.0.1":D.WEBOX_HOST,t=D.WEBOX_PORT-80==0?"":":"+D.WEBOX_PORT;I(0,"Server started:","http://"+e+t),I(0,"Root Directory:",D.WEBOX_ROOT,"\n")}));let z=m,J=function(e){e&&Object.assign(D,e),D.WEBOX_ROOT=F.resolve(D.WEBOX_ROOT),U.listen(D.WEBOX_PORT,D.WEBOX_HOST,1024)},{push:A}=P;var G={helper:z,init:J,use:A},K=p(G);exports.main=G,exports.main$1=K;
//# sourceMappingURL=main-264c9b15.js.map
{"version":3,"file":"main-264c9b15.js","sources":["../src/helper/config.js","../src/helper/utils.js","../src/env.js","../src/helper/check.js","../src/middleware/prepare.js","../src/helper/mime.js","../src/middleware/static.js","../src/middleware/use.cgi.js","../src/middleware/use.cjs.js","../src/core/handle.js","../src/core/server.js","../src/main.js"],"sourcesContent":["let fs = require('fs');\n\n// 加载用户配置\n\nlet config = {};\n\nif (process.env.WEBOX_CONF_FILE) {\n config = require(process.env.WEBOX_CONF_FILE);\n}\n\n// 合并配置参数\n\nmodule.exports = Object.assign({\n\n // production or development\n WEBOX_MODE: process.env.NODE_ENV || 'development',\n\n WEBOX_HOST: '127.0.0.1',\n\n WEBOX_PORT: 80,\n\n WEBOX_ROOT: 'webroot',\n\n WEBOX_INDEX: [\n 'index.html',\n 'index.htm'\n ],\n\n WEBOX_ERROR: {\n 200: '%s',\n 400: 'Bad Request: %s',\n 403: 'Forbidden : %s',\n 404: 'NO Found: %s',\n 500: 'Internal Server Error: %s',\n 503: 'Service Unavilable: %s'\n },\n\n WEBOX_CHECK_API: 'aHR0cHM6Ly9hcGkudm1sdS5jb20vd2Vib3gvP3BsYXRmb3JtPW5vZGU='\n\n}, config);\n","let config = require('./config');\n\n/**\n * 控制台日志\n * @param {number} level 日志级别\n * @param {...any} msg 日志内容\n */\n\nfunction logger(level, ...msg) {\n\n if (config.WEBOX_MODE !== 'development' && level > 0) {\n return;\n }\n\n let time = '[' + dateFormat('yyyy-MM-dd hh:mm:ss') + ']';\n console.log(time, 'Webox -', ...msg);\n\n}\n\n/**\n * 时间格式化\n * @param {string} fmt 格式化选项\n * @param {Date} date 日期对象,默认为当前时间\n * @returns 格式化后的字符串\n */\n\nfunction dateFormat(fmt, date) {\n\n let d = date || new Date();\n let o = {\n 'M+': d.getMonth() + 1, //月\n 'd+': d.getDate(), //日\n 'h+': d.getHours(), //时\n 'm+': d.getMinutes(), //分\n 's+': d.getSeconds(), //秒\n 'q+': Math.floor((d.getMonth() + 3) / 3), //季度\n 'S': d.getMilliseconds() //毫秒\n };\n\n if (/(y+)/.test(fmt)) { //年\n fmt = fmt.replace(RegExp.$1, (d.getFullYear() + '').substr(4 - RegExp.$1.length));\n }\n\n for (let k in o) {\n if (new RegExp('(' + k + ')').test(fmt)) {\n fmt = fmt.replace(RegExp.$1, (RegExp.$1.length === 1) ? (o[k]) : (('00' + o[k]).substr(('' + o[k]).length)));\n }\n }\n\n return fmt;\n\n}\n\n/**\n * 尝试解析JSON\n * @param {string} str JSON字符串\n * @returns 成功返回结果,失败返回`undefined`\n */\n\nfunction parseJSON(str) {\n\n if (typeof str === 'string') {\n try {\n return JSON.parse(str);\n } catch (e) {\n }\n }\n\n}\n\n/**\n * 页面重定向\n * @param {http.ServerResponse} response 响应对象\n * @param {string } url 重定向地址\n */\n\nfunction httpRedirect(response, url) {\n\n if (response.writableEnded) {\n logger(1, 'Response has already been sent, ignore redirect:', url);\n }\n\n response.writeHead(302, {\n 'Location': url\n });\n\n response.end();\n\n}\n\n/**\n * 输出HTTP消息\n * @param {http.ServerResponse} response 响应对象\n * @param {string | object} output 输出内容\n * @param {number} code 状态码\n * @param {string} mime 内容类型\n */\n\nfunction httpMessage(response, output, code, mime) {\n\n code = code || 200;\n mime = mime || 'text/plain';\n\n if (typeof output === 'object') {\n output = JSON.stringify(output);\n mime = 'application/json';\n }\n\n if (mime == 'text/plain' && config.WEBOX_ERROR[code]) {\n output = config.WEBOX_ERROR[code].replace('%s', output);\n }\n\n if (response.writableEnded) {\n logger(1, 'Response has already been sent, ignore it.', output);\n }\n\n response.writeHead(code, {\n 'Content-Length': Buffer.byteLength(output),\n 'Content-Type': mime\n });\n\n response.end(output);\n\n}\n\n/**\n * 仅用于兼容老版调试工具\n */\n\nif (console.light === undefined) {\n console.light = Function;\n}\n\n/////////////////////////////////////////////////////////////\n\nmodule.exports = {\n logger: logger,\n parseJSON: parseJSON,\n dateFormat: dateFormat,\n httpRedirect: httpRedirect,\n httpMessage: httpMessage\n};\n","/**\n * Webox - HTTP Server\n * @author rehiy <wang@rehiy.com>\n * @Website http://www.rehiy.com/webox\n */\n\nlet { logger } = require('./helper/utils');\n\n/////////////////////////////////////////////////////////////\n\n// set title\nprocess.title = 'Webox - HTTP Server';\n\n// set env var for ORIGINAL cwd\nprocess.env.INIT_CWD = process.cwd();\n\n// normal exit with 0 or 1\nprocess.once('exit', code => {\n logger(0, 'Service Stopped');\n if (code === 0 && process.env.WEBOX_EXIT_CODE) {\n process.exit(1);\n }\n});\n","let https = require('https');\n\nlet config = require('./config');\n\nlet { logger, parseJSON } = require('./utils');\n\nlet CHECK_API = Buffer.from(config.WEBOX_CHECK_API, 'base64').toString();\n\n\nlet req = https.get(CHECK_API + '&version=dev', res => {\n\n if (res.statusCode != 200) {\n return;\n }\n\n let raw = '';\n\n res.on('data', d => {\n raw += d.toString();\n });\n\n res.on('end', () => {\n let data = parseJSON(raw);\n if (data && data.message) {\n logger(data.message);\n }\n });\n\n});\n\nreq.on('error', e => {\n\n logger(1, 'Checker Error:', e.message);\n\n});\n","let fs = require('fs');\nlet path = require('path');\n\nlet config = require('../helper/config');\n\n/////////////////////////////////////////////////////////////\n\n/**\n * 补全文件路径\n * @param {string} file 路径\n * @param {string} suff 后缀\n * @returns \n */\nfunction fixpath(file, suff) {\n if (suff.indexOf('.') === 0) {\n return file + suff;\n }\n return path.join(file, suff);\n}\n\n/**\n * 解析HTTP请求\n * @param {http.IncomingMessage} request HTTP请求\n * @param {http.ServerResponse} response HTTP响应\n */\nfunction handle(request, response) {\n\n let requestURL = new URL(request.url, `http://${request.headers.host}`);\n\n let filename = path.join(config.WEBOX_ROOT, requestURL.pathname);\n\n //添加基础属性\n request.filename = '';\n request.requestURL = requestURL;\n\n //文件存在直接返回\n let filestat = fs.existsSync(filename) && fs.lstatSync(filename);\n if (filestat && filestat.isFile()) {\n request.filename = filename;\n return;\n }\n\n //尝试返回默认首页\n for (let index of config.WEBOX_INDEX) {\n let file = fixpath(filename, index);\n if (fs.existsSync(file)) {\n request.filename = file;\n return;\n }\n }\n\n}\n\n/////////////////////////////////////////////////////////////\n\nmodule.exports = {\n handle: handle,\n route: '*'\n};\n","let path = require('path');\n\nlet mime = {\n '3gp': 'video/3gpp',\n 'a': 'application/octet-stream',\n 'ai': 'application/postscript',\n 'aif': 'audio/x-aiff',\n 'aiff': 'audio/x-aiff',\n 'asc': 'application/pgp-signature',\n 'asf': 'video/x-ms-asf',\n 'asm': 'text/x-asm',\n 'asx': 'video/x-ms-asf',\n 'atom': 'application/atom+xml',\n 'au': 'audio/basic',\n 'avi': 'video/x-msvideo',\n 'bat': 'application/x-msdownload',\n 'bin': 'application/octet-stream',\n 'bmp': 'image/bmp',\n 'bz2': 'application/x-bzip2',\n 'c': 'text/x-c',\n 'cab': 'application/vnd.ms-cab-compressed',\n 'cc': 'text/x-c',\n 'chm': 'application/vnd.ms-htmlhelp',\n 'class': 'application/octet-stream',\n 'com': 'application/x-msdownload',\n 'conf': 'text/plain',\n 'cpp': 'text/x-c',\n 'crt': 'application/x-x509-ca-cert',\n 'css': 'text/css',\n 'csv': 'text/csv',\n 'cxx': 'text/x-c',\n 'deb': 'application/x-debian-package',\n 'der': 'application/x-x509-ca-cert',\n 'diff': 'text/x-diff',\n 'djv': 'image/vnd.djvu',\n 'djvu': 'image/vnd.djvu',\n 'dll': 'application/x-msdownload',\n 'dmg': 'application/octet-stream',\n 'doc': 'application/msword',\n 'dot': 'application/msword',\n 'dtd': 'application/xml-dtd',\n 'dvi': 'application/x-dvi',\n 'ear': 'application/java-archive',\n 'eml': 'message/rfc822',\n 'eps': 'application/postscript',\n 'exe': 'application/x-msdownload',\n 'f': 'text/x-fortran',\n 'f77': 'text/x-fortran',\n 'f90': 'text/x-fortran',\n 'flv': 'video/x-flv',\n 'for': 'text/x-fortran',\n 'gem': 'application/octet-stream',\n 'gemspec': 'text/x-script.ruby',\n 'gif': 'image/gif',\n 'gz': 'application/x-gzip',\n 'h': 'text/x-c',\n 'hh': 'text/x-c',\n 'htm': 'text/html',\n 'html': 'text/html',\n 'ico': 'image/vnd.microsoft.icon',\n 'ics': 'text/calendar',\n 'ifb': 'text/calendar',\n 'iso': 'application/octet-stream',\n 'jar': 'application/java-archive',\n 'java': 'text/x-java-source',\n 'jnlp': 'application/x-java-jnlp-file',\n 'jpeg': 'image/jpeg',\n 'jpg': 'image/jpeg',\n 'js': 'application/javascript',\n 'json': 'application/json',\n 'log': 'text/plain',\n 'm3u': 'audio/x-mpegurl',\n 'm4v': 'video/mp4',\n 'man': 'text/troff',\n 'mathml': 'application/mathml+xml',\n 'mbox': 'application/mbox',\n 'mdoc': 'text/troff',\n 'me': 'text/troff',\n 'mid': 'audio/midi',\n 'midi': 'audio/midi',\n 'mime': 'message/rfc822',\n 'mml': 'application/mathml+xml',\n 'mng': 'video/x-mng',\n 'mov': 'video/quicktime',\n 'mp3': 'audio/mpeg',\n 'mp4': 'video/mp4',\n 'mp4v': 'video/mp4',\n 'mpeg': 'video/mpeg',\n 'mpg': 'video/mpeg',\n 'ms': 'text/troff',\n 'msi': 'application/x-msdownload',\n 'odp': 'application/vnd.oasis.opendocument.presentation',\n 'ods': 'application/vnd.oasis.opendocument.spreadsheet',\n 'odt': 'application/vnd.oasis.opendocument.text',\n 'ogg': 'application/ogg',\n 'p': 'text/x-pascal',\n 'pas': 'text/x-pascal',\n 'pbm': 'image/x-portable-bitmap',\n 'pdf': 'application/pdf',\n 'pem': 'application/x-x509-ca-cert',\n 'pgm': 'image/x-portable-graymap',\n 'pgp': 'application/pgp-encrypted',\n 'pkg': 'application/octet-stream',\n 'pl': 'text/x-script.perl',\n 'pm': 'text/x-script.perl-module',\n 'png': 'image/png',\n 'pnm': 'image/x-portable-anymap',\n 'ppm': 'image/x-portable-pixmap',\n 'pps': 'application/vnd.ms-powerpoint',\n 'ppt': 'application/vnd.ms-powerpoint',\n 'ps': 'application/postscript',\n 'psd': 'image/vnd.adobe.photoshop',\n 'py': 'text/x-script.python',\n 'qt': 'video/quicktime',\n 'ra': 'audio/x-pn-realaudio',\n 'rake': 'text/x-script.ruby',\n 'ram': 'audio/x-pn-realaudio',\n 'rar': 'application/x-rar-compressed',\n 'rb': 'text/x-script.ruby',\n 'rdf': 'application/rdf+xml',\n 'roff': 'text/troff',\n 'rpm': 'application/x-redhat-package-manager',\n 'rss': 'application/rss+xml',\n 'rtf': 'application/rtf',\n 'ru': 'text/x-script.ruby',\n 's': 'text/x-asm',\n 'sgm': 'text/sgml',\n 'sgml': 'text/sgml',\n 'sh': 'application/x-sh',\n 'sig': 'application/pgp-signature',\n 'snd': 'audio/basic',\n 'so': 'application/octet-stream',\n 'svg': 'image/svg+xml',\n 'svgz': 'image/svg+xml',\n 'swf': 'application/x-shockwave-flash',\n 't': 'text/troff',\n 'tar': 'application/x-tar',\n 'tbz': 'application/x-bzip-compressed-tar',\n 'tcl': 'application/x-tcl',\n 'tex': 'application/x-tex',\n 'texi': 'application/x-texinfo',\n 'texinfo': 'application/x-texinfo',\n 'text': 'text/plain',\n 'tif': 'image/tiff',\n 'tiff': 'image/tiff',\n 'torrent': 'application/x-bittorrent',\n 'tr': 'text/troff',\n 'txt': 'text/plain',\n 'vcf': 'text/x-vcard',\n 'vcs': 'text/x-vcalendar',\n 'vrml': 'model/vrml',\n 'war': 'application/java-archive',\n 'wav': 'audio/x-wav',\n 'wma': 'audio/x-ms-wma',\n 'wmv': 'video/x-ms-wmv',\n 'wmx': 'video/x-ms-wmx',\n 'wrl': 'model/vrml',\n 'wsdl': 'application/wsdl+xml',\n 'xbm': 'image/x-xbitmap',\n 'xhtml': 'application/xhtml+xml',\n 'xls': 'application/vnd.ms-excel',\n 'xml': 'application/xml',\n 'xpm': 'image/x-xpixmap',\n 'xsl': 'application/xml',\n 'xslt': 'application/xslt+xml',\n 'yaml': 'text/yaml',\n 'yml': 'text/yaml',\n 'zip': 'application/zip',\n 'mf': 'text/cache-manifest'\n};\n\n/////////////////////////////////////////////////////////////\n\nmodule.exports = function (file) {\n let ext = path.extname(file);\n ext = ext ? ext.slice(1) : 'unknown';\n return mime[ext] || 'application/octet-stream';\n}\n","let fs = require('fs');\n\nlet getMimeType = require('../helper/mime');\nlet { httpMessage, logger } = require('../helper/utils');\n\n/////////////////////////////////////////////////////////////\n\n/**\n * 处理静态文件\n * @param {http.IncomingMessage} request HTTP请求\n * @param {http.ServerResponse} response HTTP响应\n */\nfunction handle(request, response) {\n\n let { filename, requestURL } = request;\n\n //找不到文件\n if (filename === '') {\n httpMessage(response, requestURL.pathname, 404);\n return true;\n }\n\n //输出文件头\n response.writeHead(200, {\n 'Content-Type': getMimeType(filename)\n });\n\n logger(1, 'Send Static File:', filename);\n\n //流式发送文件\n fs.createReadStream(filename)\n .on('error', err => {\n httpMessage(response, requestURL.pathname, 503);\n })\n .on('data', chunk => {\n response.write(chunk);\n })\n .on('end', () => {\n response.end();\n });\n\n return true;\n\n};\n\n/////////////////////////////////////////////////////////////\n\nmodule.exports = {\n handle: handle,\n route: '*'\n};\n","let { exec } = require('child_process');\n\nlet { httpMessage } = require('../helper/utils');\n\n/////////////////////////////////////////////////////////////\n\n/**\n * 路由检查\n * @param {string} p pathname\n * @param {string} f filename\n * @returns 是否调用处理函数\n */\nfunction route(p, f) {\n return f && /\\.cgi(\\.js)?$/.test(f);\n}\n\n/**\n * 处理HTTP请求\n * @param {http.IncomingMessage} request HTTP请求\n * @param {http.ServerResponse} response HTTP响应\n */\nfunction handle(request, response) {\n\n let { filename, requestURL } = request;\n\n let text = '';\n\n let args = requestURL.search.replace(/^\\?/, '').replace(/&/g, ' ');\n\n let child = exec(`${process.argv0} ${filename} ${args}`, {\n windowsHide: true,\n timeout: 60000\n });\n\n child.stdout.on('data', data => {\n text += data;\n });\n child.stderr.on('data', data => {\n text += data;\n });\n\n child.on('exit', code => {\n code === 0 ? 200 : 503;\n httpMessage(response, text, code);\n });\n\n return true;\n\n}\n\n/////////////////////////////////////////////////////////////\n\nmodule.exports = {\n handle: handle,\n route: route\n};\n\n","let { httpMessage } = require('../helper/utils');\n\n/////////////////////////////////////////////////////////////\n\n/**\n * 路由检查\n * @param {string} p pathname\n * @param {string} f filename\n * @returns 是否调用处理函数\n */\nfunction route(p, f) {\n return f && /\\.cjs(\\.js)?$/.test(f);\n}\n\n/**\n * 处理HTTP请求\n * @param {http.IncomingMessage} request HTTP请求\n * @param {http.ServerResponse} response HTTP响应\n */\nfunction handle(request, response) {\n\n let { filename, requestURL, bodyObject } = request;\n\n let child = require(filename);\n\n child({ requestURL, bodyObject }, (text, code) => {\n httpMessage(response, text, code);\n });\n\n return true;\n\n}\n\n/////////////////////////////////////////////////////////////\n\nmodule.exports = {\n handle: handle,\n route: route\n};\n","let M_prepare = require('../middleware/prepare');\nlet M_static = require('../middleware/static');\n\nlet M_cgi = require('../middleware/use.cgi');\nlet M_cjs = require('../middleware/use.cjs');\n\n/////////////////////////////////////////////////////////////\n\nlet handlers = [\n M_cgi, M_cjs\n];\n\nfunction push(handler) {\n handlers.splice(-2, 0, handler);\n}\n\nfunction call(request, response) {\n\n M_prepare.handle(request, response);\n\n let filename = request.filename;\n let pathname = request.requestURL.pathname;\n\n for (let { route, handle } of handlers) {\n\n if (\n (route instanceof RegExp && route.test(pathname)) ||\n (route instanceof Function && route(pathname, filename)) ||\n (typeof route === 'string' && (route === '*' || route === pathname))\n ) {\n if (handle(request, response)) {\n return true;\n }\n }\n\n }\n\n M_static.handle(request, response);\n\n}\n\n/////////////////////////////////////////////////////////////\n\nmodule.exports = {\n push: push,\n call: call\n};\n","let http = require('http');\nlet path = require('path');\n\nlet config = require('../helper/config');\nlet { logger, parseJSON } = require('../helper/utils');\n\nlet handleCaller = require('./handle').call;\n\n/////////////////////////////////////////////////////////////\n// create server\n\nlet httpServer = http.createServer((request, response) => {\n\n logger(1, request.method, '-', request.url);\n\n if (request.method == 'GET') {\n handleCaller(request, response);\n return;\n }\n\n let body = '';\n\n request.addListener('data', data => {\n body += data\n });\n\n request.addListener('end', () => {\n if (body) {\n request.bodyObject = parseJSON(body);\n if (request.bodyObject === undefined) {\n logger(0, 'Error: Only JSON body is supported');\n }\n }\n handleCaller(request, response);\n });\n\n});\n\nhttpServer.on('error', err => {\n\n if (err.code === 'EADDRINUSE') {\n logger(0, 'IP-Port in use:', config.WEBOX_HOST, config.WEBOX_PORT);\n logger(0, 'Failover to:', config.WEBOX_HOST, ++config.WEBOX_PORT, '\\n');\n httpServer.listen(config.WEBOX_PORT, config.WEBOX_HOST, 1024);\n }\n\n});\n\nhttpServer.on('listening', () => {\n\n let host = config.WEBOX_HOST === '0.0.0.0' ? '127.0.0.1' : config.WEBOX_HOST;\n let port = config.WEBOX_PORT - 80 === 0 ? '' : ':' + config.WEBOX_PORT;\n\n logger(0, 'Server started:', 'http://' + host + port);\n logger(0, 'Root Directory:', config.WEBOX_ROOT, '\\n');\n\n});\n\n/////////////////////////////////////////////////////////////\n// start server\n\nmodule.exports = function (options) {\n\n options && Object.assign(config, options);\n\n config.WEBOX_ROOT = path.resolve(config.WEBOX_ROOT);\n\n httpServer.listen(config.WEBOX_PORT, config.WEBOX_HOST, 1024);\n\n};\n","/**\n * Webox - HTTP Server\n * @author rehiy <wang@rehiy.com>\n * @Website http://www.rehiy.com/webox\n */\n\n'use strict';\n\n// load env\nrequire('./env');\n\n// security check\nrequire('./helper/check');\n\n/////////////////////////////////////////////////////////////\n\nlet utils = require('./helper/utils');\n\nlet server = require('./core/server');\n\nlet { push } = require('./core/handle');\n\nmodule.exports = {\n helper: utils,\n init: server,\n use: push\n};\n"],"names":["config","process","env","WEBOX_CONF_FILE","require","config_1","Object","assign","WEBOX_MODE","NODE_ENV","WEBOX_HOST","WEBOX_PORT","WEBOX_ROOT","WEBOX_INDEX","WEBOX_ERROR","WEBOX_CHECK_API","require$$0","logger","level","msg","time","dateFormat","console","log","fmt","date","d","Date","o","getMonth","getDate","getHours","getMinutes","getSeconds","Math","floor","S","getMilliseconds","test","replace","RegExp","$1","getFullYear","substr","length","k","undefined","light","Function","utils","parseJSON","str","JSON","parse","e","httpRedirect","response","url","writableEnded","writeHead","Location","end","httpMessage","output","code","mime","stringify","Buffer","byteLength","title","INIT_CWD","cwd","once","WEBOX_EXIT_CODE","exit","https","require$$1","require$$2","CHECK_API","from","toString","get","res","statusCode","raw","on","data","message","fs","path","fixpath","file","suff","indexOf","join","prepare","handle","request","requestURL","URL","headers","host","filename","pathname","filestat","existsSync","lstatSync","isFile","index","route","a","ai","aif","aiff","asc","asf","asm","asx","atom","au","avi","bat","bin","bmp","bz2","c","cab","cc","chm","class","com","conf","cpp","crt","css","csv","cxx","deb","der","diff","djv","djvu","dll","dmg","doc","dot","dtd","dvi","ear","eml","eps","exe","f","f77","f90","flv","for","gem","gemspec","gif","gz","h","hh","htm","html","ico","ics","ifb","iso","jar","java","jnlp","jpeg","jpg","js","json","m3u","m4v","man","mathml","mbox","mdoc","me","mid","midi","mml","mng","mov","mp3","mp4","mp4v","mpeg","mpg","ms","msi","odp","ods","odt","ogg","p","pas","pbm","pdf","pem","pgm","pgp","pkg","pl","pm","png","pnm","ppm","pps","ppt","ps","psd","py","qt","ra","rake","ram","rar","rb","rdf","roff","rpm","rss","rtf","ru","s","sgm","sgml","sh","sig","snd","so","svg","svgz","swf","t","tar","tbz","tcl","tex","texi","texinfo","text","tif","tiff","torrent","tr","txt","vcf","vcs","vrml","war","wav","wma","wmv","wmx","wrl","wsdl","xbm","xhtml","xls","xml","xpm","xsl","xslt","yaml","yml","zip","mf","getMimeType","ext","extname","slice","_static","createReadStream","err","chunk","write","exec","use_cgi","args","search","child","argv0","windowsHide","timeout","stdout","stderr","M_prepare","M_static","handlers","bodyObject","push","handler","splice","call","http","require$$3","handleCaller","require$$4","httpServer","createServer","method","body","addListener","listen","port","server","options","resolve","main","helper","init","use"],"mappings":"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"}