docs: split "Mod development" page into two separate pages, dependent on mod format
This commit is contained in:
parent
5d4d959cc6
commit
893716c226
2 changed files with 119 additions and 115 deletions
118
pages/docs/mods/mod-development-legacy.md
Normal file
118
pages/docs/mods/mod-development-legacy.md
Normal file
|
@ -0,0 +1,118 @@
|
|||
---
|
||||
title: Mod development (.tar.gz mods)
|
||||
---
|
||||
|
||||
# Mod development (_.tar.gz_ mods)
|
||||
|
||||
Mods in SVR.JS have two methods:
|
||||
|
||||
- _callback_ - Invoked on non-CONNECT requests (includes proxy requests using GET or POST methods). Parameters (must be in this particular order, argument names given to match SVR.JS API documentation):
|
||||
- _req_
|
||||
- _res_
|
||||
- _serverconsole_
|
||||
- _responseEnd_
|
||||
- _href_
|
||||
- _ext_
|
||||
- _uobject_
|
||||
- _search_
|
||||
- _defaultpage_
|
||||
- _users_
|
||||
- _page404_
|
||||
- _head_
|
||||
- _foot_
|
||||
- _fd_
|
||||
- _elseCallback_
|
||||
- _configJSON_
|
||||
- _callServerError_
|
||||
- _getCustomHeaders_
|
||||
- _origHref_
|
||||
- _redirect_
|
||||
- _parsePostData_
|
||||
- _authUser_
|
||||
|
||||
**This method is required** (if it is not present, SVR.JS will simply return 500 Internal Server Error on all requests with error message in error stack similar to "_TypeError: modO.callback is not a function_").
|
||||
|
||||
- _proxyCallback_ - Invoked on CONNECT requests (used for proxying). Parameters (must be in this particular order, argument names given to match SVR.JS API documentation):
|
||||
- _req_
|
||||
- _socket_
|
||||
- _head_
|
||||
- _configJSON_
|
||||
- _serverconsole_
|
||||
- _elseCallback_
|
||||
|
||||
Required in order for function returned from _callback_ method to be invoked for request URLs beginning with "_http://_" or with "_https://_" (proxy through GET or POST method, non-proxy requests have request URLs beginning with "_/_"). **You should implement a proxy URL check in _callback_ method, if you're going to use _proxyCallback_ and _callback_ methods at once, or else your SVR.JS mod may be vulnerable to access control bypass attacks** (SVR.JS doesn't enforce URL rewriting, custom headers and non-standard codes for proxy requests to avoid interference of its access controls with proxy mods).
|
||||
|
||||
These methods are defined inside _Mod.prototype_ object. Both methods return a function, which will be executed in SVR.JS.
|
||||
|
||||
`__dirname` and _._ in `require()` function both refer to directory, to which mod contents are extracted.
|
||||
|
||||
The reference to file in the SVR.JS installation directory is `__dirname + "/../../../filename"` (replace `filename` with your desired file name).
|
||||
|
||||
Current working directory (`process.cwd()`) is SVR.JS web root.
|
||||
|
||||
A typical _index.js_ file for a mod may look like this:
|
||||
|
||||
```js
|
||||
//Requires go here
|
||||
function Mod() {}
|
||||
Mod.prototype.callback = function callback(
|
||||
req,
|
||||
res,
|
||||
serverconsole,
|
||||
responseEnd,
|
||||
href,
|
||||
ext,
|
||||
uobject,
|
||||
search,
|
||||
defaultpage,
|
||||
users,
|
||||
page404,
|
||||
head,
|
||||
foot,
|
||||
fd,
|
||||
elseCallback,
|
||||
configJSON,
|
||||
callServerError,
|
||||
getCustomHeaders,
|
||||
origHref,
|
||||
redirect,
|
||||
parsePostData
|
||||
) {
|
||||
return function () {
|
||||
//Mod contents go here
|
||||
if (href == "/hello.svr") {
|
||||
serverconsole.resmessage("Sent Hello World message!");
|
||||
res.writeHead(200, "OK", {
|
||||
"Content-Type": "text/plain",
|
||||
});
|
||||
res.end("Hello World!");
|
||||
} else {
|
||||
elseCallback();
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
//OPTIONAL: proxyCallback method
|
||||
//Uncomment code below, if you want to use proxyCallback method.
|
||||
//But then you'll need to implement proxy request URL check for callback method.
|
||||
|
||||
/*
|
||||
Mod.prototype.proxyCallback = function proxyCallback(req, socket, head, configJSON, serverconsole, elseCallback) {
|
||||
return function () {
|
||||
//Just pass elseCallback
|
||||
elseCallback();
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
module.exports = Mod; //SVR.JS mod exports
|
||||
```
|
||||
|
||||
The _mod.info_ file (in JSON format) contains metadata about the mod, such as its name and version:
|
||||
|
||||
```
|
||||
{
|
||||
"name": "The Example Mod",
|
||||
"version": "0.1.0"
|
||||
}
|
||||
```
|
|
@ -1,5 +1,5 @@
|
|||
---
|
||||
title: Mod development
|
||||
title: Mod development (.js mods)
|
||||
---
|
||||
|
||||
# Mod development (_.js_ mods)
|
||||
|
@ -175,117 +175,3 @@ The `modInfo.json` file would look like this:
|
|||
}
|
||||
```
|
||||
|
||||
# Mod development (_.tar.gz_ mods)
|
||||
|
||||
Mods in SVR.JS have two methods:
|
||||
|
||||
- _callback_ - Invoked on non-CONNECT requests (includes proxy requests using GET or POST methods). Parameters (must be in this particular order, argument names given to match SVR.JS API documentation):
|
||||
- _req_
|
||||
- _res_
|
||||
- _serverconsole_
|
||||
- _responseEnd_
|
||||
- _href_
|
||||
- _ext_
|
||||
- _uobject_
|
||||
- _search_
|
||||
- _defaultpage_
|
||||
- _users_
|
||||
- _page404_
|
||||
- _head_
|
||||
- _foot_
|
||||
- _fd_
|
||||
- _elseCallback_
|
||||
- _configJSON_
|
||||
- _callServerError_
|
||||
- _getCustomHeaders_
|
||||
- _origHref_
|
||||
- _redirect_
|
||||
- _parsePostData_
|
||||
- _authUser_
|
||||
|
||||
**This method is required** (if it is not present, SVR.JS will simply return 500 Internal Server Error on all requests with error message in error stack similar to "_TypeError: modO.callback is not a function_").
|
||||
|
||||
- _proxyCallback_ - Invoked on CONNECT requests (used for proxying). Parameters (must be in this particular order, argument names given to match SVR.JS API documentation):
|
||||
- _req_
|
||||
- _socket_
|
||||
- _head_
|
||||
- _configJSON_
|
||||
- _serverconsole_
|
||||
- _elseCallback_
|
||||
|
||||
Required in order for function returned from _callback_ method to be invoked for request URLs beginning with "_http://_" or with "_https://_" (proxy through GET or POST method, non-proxy requests have request URLs beginning with "_/_"). **You should implement a proxy URL check in _callback_ method, if you're going to use _proxyCallback_ and _callback_ methods at once, or else your SVR.JS mod may be vulnerable to access control bypass attacks** (SVR.JS doesn't enforce URL rewriting, custom headers and non-standard codes for proxy requests to avoid interference of its access controls with proxy mods).
|
||||
|
||||
These methods are defined inside _Mod.prototype_ object. Both methods return a function, which will be executed in SVR.JS.
|
||||
|
||||
`__dirname` and _._ in `require()` function both refer to directory, to which mod contents are extracted.
|
||||
|
||||
The reference to file in the SVR.JS installation directory is `__dirname + "/../../../filename"` (replace `filename` with your desired file name).
|
||||
|
||||
Current working directory (`process.cwd()`) is SVR.JS web root.
|
||||
|
||||
A typical _index.js_ file for a mod may look like this:
|
||||
|
||||
```js
|
||||
//Requires go here
|
||||
function Mod() {}
|
||||
Mod.prototype.callback = function callback(
|
||||
req,
|
||||
res,
|
||||
serverconsole,
|
||||
responseEnd,
|
||||
href,
|
||||
ext,
|
||||
uobject,
|
||||
search,
|
||||
defaultpage,
|
||||
users,
|
||||
page404,
|
||||
head,
|
||||
foot,
|
||||
fd,
|
||||
elseCallback,
|
||||
configJSON,
|
||||
callServerError,
|
||||
getCustomHeaders,
|
||||
origHref,
|
||||
redirect,
|
||||
parsePostData
|
||||
) {
|
||||
return function () {
|
||||
//Mod contents go here
|
||||
if (href == "/hello.svr") {
|
||||
serverconsole.resmessage("Sent Hello World message!");
|
||||
res.writeHead(200, "OK", {
|
||||
"Content-Type": "text/plain",
|
||||
});
|
||||
res.end("Hello World!");
|
||||
} else {
|
||||
elseCallback();
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
//OPTIONAL: proxyCallback method
|
||||
//Uncomment code below, if you want to use proxyCallback method.
|
||||
//But then you'll need to implement proxy request URL check for callback method.
|
||||
|
||||
/*
|
||||
Mod.prototype.proxyCallback = function proxyCallback(req, socket, head, configJSON, serverconsole, elseCallback) {
|
||||
return function () {
|
||||
//Just pass elseCallback
|
||||
elseCallback();
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
module.exports = Mod; //SVR.JS mod exports
|
||||
```
|
||||
|
||||
The _mod.info_ file (in JSON format) contains metadata about the mod, such as its name and version:
|
||||
|
||||
```
|
||||
{
|
||||
"name": "The Example Mod",
|
||||
"version": "0.1.0"
|
||||
}
|
||||
```
|
||||
|
|
Loading…
Reference in a new issue