-
Notifications
You must be signed in to change notification settings - Fork 10
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- FlashROM Support for LC2 and newer. - FlashROM system can handle local files, or proxy from server (default). No need to have a local FlashROM collection! - Added 'verbosity' configuration option - Update HTML Mode to async fileRead - Config option for sending tellyscripts or not - Config option to mask SSIDs in console log - Update wtv-home:/home and wtv-home:/zefie - Update .gitignore - Add wtv-music:/demo/index courtesy of MattMan69 - Update HTML Mode to async fileRead - Update Raw TXT Mode to async fileRead - Replaced .async.js feature with defining `request_is_async` in standard .js script - Cleaned up code a bit - Moved global var 'query' to 'request_headers.query' - Tidied ServiceDeps - Upgraded wtv-log:/log to async, now also logs query arguments, saves to .txt for easier reading.
- Loading branch information
Showing
160 changed files
with
1,413 additions
and
378 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
## Brief ServiceVault Explanation | ||
|
||
The server will look for a subdirectory under the running directory, called `ServiceVault` (might be user-configurable in the future). | ||
|
||
Within that directory, it looks for a subdirectory named after the wtv-service URL requested. | ||
|
||
The server will then look for files in sequential order when requesting a URL, stopping at the first match. | ||
|
||
Let us use the URL `wtv-1800:/preregister` as an example. This is what the server would look for (in order): | ||
|
||
- `./ServiceVault/wtv-1800/preregister` \[ [Example](zefie_wtvp_minisrv/ServiceVault/wtv-star/images/HackTVLogo.gif) \] | ||
- Exact file name match (*Direct File Mode*) | ||
- Server sends the raw file, with its content-type. No parsing is done on the file. | ||
- You do not need to do anything special with this format. | ||
- `./ServiceVault/wtv-1800/preregister.txt` \[ [Example](zefie_wtvp_minisrv/ServiceVault/wtv-home/splash.txt) \] | ||
- TXT file match (*Raw TXT Mode*) | ||
- Service parses and sends AS-IS. | ||
- You are expected to define headers | ||
- `./ServiceVault/wtv-1800/preregister.js` \[ [Example](zefie_wtvp_minisrv/ServiceVault/wtv-home/home.js) \] | ||
- Synchronous JS match (*JS Interpreter mode*) | ||
- Executes the JavaScript in synchronous mode. | ||
- You are expected to define `headers` and `data` before the end of your script. | ||
- Access Asynchronous mode by setting `request_is_async = true;` | ||
- Client request headers are available as an Array in variable `request_headers`, query arguments are also an Array, in `request_headers.query` | ||
- In Asynchronous mode, you are expected to call `sendToClient(socket,headers,data)` yourself, `socket` is already defined by the time your script runs, so you can just pass it through. | ||
- `./ServiceVault/wtv-1800/preregister.html` \[ [Example](zefie_wtvp_minisrv/ServiceVault/wtv-home/zefie.html) \] | ||
- HTML match (*HTML mode*) | ||
- Like Direct File Mode, but you don't need to append `.html`. | ||
- You do not need to do anything special with this format. | ||
|
||
The server will stop at the first result it finds using the order above. | ||
|
||
So if you have `preregister.txt` and `preregister.js`, it will use `preregister.txt`, but not `preregister.js`. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Binary file added
BIN
+5.71 KB
zefie_wtvp_minisrv/ServiceVault/wtv-flashrom/ROMCache/HackTVLogoJewel.gif
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
74 changes: 74 additions & 0 deletions
74
zefie_wtvp_minisrv/ServiceVault/wtv-flashrom/get-by-path.js
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,74 @@ | ||
request_is_async = true; | ||
|
||
var request_path = unescape(request_headers.query.path); | ||
headers = "200 OK\n" | ||
|
||
if (request_headers.query.raw) { | ||
if ((/\.brom$/).test(request_path)) headers += "Content-Type: binary/x-wtv-bootrom"; // maybe? | ||
else headers += "Content-Type: binary/x-wtv-flashblock"; | ||
if (services_configured.services[service_name].use_zefie_server) { | ||
// get flashrom files from archive.midnightchannel.net | ||
var options = { | ||
host: "archive.midnightchannel.net", | ||
path: "/zefie/files/wtv-flashrom/" + request_path, | ||
timeout: 5000, | ||
method: 'GET' | ||
} | ||
const req = https.request(options, function (res) { | ||
var data_hex = ''; | ||
res.setEncoding('hex'); | ||
|
||
res.on('data', d => { | ||
data_hex += d; | ||
}) | ||
|
||
res.on('end', function () { | ||
if (!zquiet) console.log(` * Zefie's FlashROM Server HTTP Status: ${res.statusCode} ${res.statusMessage}`) | ||
if (res.statusCode == 200) { | ||
data = Buffer.from(data_hex, 'hex'); | ||
} else if (res.statusCode == 404) { | ||
var errpage = doErrorPage(404, "The service could not find the requested ROM on zefie's server.") | ||
headers = errpage[0]; | ||
data = errpage[1]; | ||
} else { | ||
var errpage = doErrorPage(400) | ||
headers = errpage[0]; | ||
data = errpage[1]; | ||
} | ||
sendToClient(socket, headers, data); | ||
}); | ||
}); | ||
req.end(); | ||
} else { | ||
// use local flashrom files); | ||
var flashrom_file_path = service_dir + '/' + request_path; | ||
try { | ||
fs.readFile(flashrom_file_path, null, function (err, data) { | ||
if (err) { | ||
errpage = doErrorPage(400) | ||
headers = errpage[0]; | ||
data = err.toString(); | ||
} | ||
sendToClient(socket, headers, data); | ||
}); | ||
} catch (e) { | ||
var errpage = doErrorPage(404, "The service could not find the requested ROM.") | ||
headers = errpage[0]; | ||
data = errpage[1]; | ||
sendToClient(socket, headers, data); | ||
} | ||
} | ||
} else { | ||
// no support for bf0app yet, but here we send the client to initiate-lc2-download | ||
// to get the rom image | ||
if (request_headers.query.path) { | ||
headers += "Content-type: text/html\n" | ||
headers += "wtv-visit: wtv-flashrom:/initiate-lc2-download?path=" + request_headers.query.path; | ||
data = ''; | ||
} else { | ||
var errpage = doErrorPage(404) | ||
headers = errpage[0]; | ||
data = errpage[1]; | ||
} | ||
sendToClient(socket, headers, data); | ||
} |
Oops, something went wrong.