hfs 0.48.0 → 0.48.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/admin/assets/{index-7bec5c97.js → index-4e55b514.js} +4 -4
- package/admin/assets/{sha512-c04bb59b.js → sha512-2627feb7.js} +1 -1
- package/admin/index.html +1 -1
- package/central.json +28 -0
- package/frontend/assets/{index-799f615e.js → index-e24651da.js} +2 -2
- package/frontend/assets/{sha512-6716e2ff.js → sha512-70e9a0d9.js} +1 -1
- package/frontend/index.html +1 -1
- package/package.json +4 -3
- package/src/api.net.js +4 -4
- package/src/const.js +2 -2
- package/src/cross.js +5 -1
- package/src/plugins.js +5 -1
- package/src/update.js +2 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{g as OF,c as UF}from"./index-
|
|
1
|
+
import{g as OF,c as UF}from"./index-e24651da.js";function gF(sF,hF){for(var eF=0;eF<hF.length;eF++){const tF=hF[eF];if(typeof tF!="string"&&!Array.isArray(tF)){for(const w in tF)if(w!=="default"&&!(w in sF)){const lF=Object.getOwnPropertyDescriptor(tF,w);lF&&Object.defineProperty(sF,w,lF.get?lF:{enumerable:!0,get:()=>tF[w]})}}}return Object.freeze(Object.defineProperty(sF,Symbol.toStringTag,{value:"Module"}))}var dF={exports:{}};/*
|
|
2
2
|
* [js-sha512]{@link https://github.com/emn178/js-sha512}
|
|
3
3
|
*
|
|
4
4
|
* @version 0.8.0
|
package/frontend/index.html
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1.0, user-scalable=0" />
|
|
6
6
|
<link href="/fontello.css" rel="stylesheet" />
|
|
7
7
|
|
|
8
|
-
<script type="module" crossorigin src="/assets/index-
|
|
8
|
+
<script type="module" crossorigin src="/assets/index-e24651da.js"></script>
|
|
9
9
|
<link rel="stylesheet" href="/assets/index-cadcb0e9.css">
|
|
10
10
|
</head>
|
|
11
11
|
<body>
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "hfs",
|
|
3
|
-
"version": "0.48.
|
|
3
|
+
"version": "0.48.3",
|
|
4
4
|
"description": "HTTP File Server",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"file server",
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
"start-frontend": "npm run start --workspace=frontend",
|
|
17
17
|
"start-admin": "npm run start --workspace=admin",
|
|
18
18
|
"build-all": "npm audit --omit=dev && rm -rf dist && npm i && npm run build-server && npm run build-frontend && npm run build-admin && echo COMPLETED",
|
|
19
|
-
"build-server": "rm -rf dist/src dist/plugins && tsc --target es2018 && touch package.json && cp -v -r package.json README* LICENSE* plugins dist && find dist -name .DS_Store -delete && node afterbuild.js",
|
|
19
|
+
"build-server": "rm -rf dist/src dist/plugins && tsc --target es2018 && touch package.json && cp -v -r package.json central.json README* LICENSE* plugins dist && find dist -name .DS_Store -delete && node afterbuild.js",
|
|
20
20
|
"build-frontend": "npm run build --workspace=frontend",
|
|
21
21
|
"build-admin": "npm run build --workspace=admin",
|
|
22
22
|
"server-for-test": "node dist/src --cwd . --config tests && rm custom.html",
|
|
@@ -35,6 +35,7 @@
|
|
|
35
35
|
"node": ">=18.12.0"
|
|
36
36
|
},
|
|
37
37
|
"files": [
|
|
38
|
+
"central.json",
|
|
38
39
|
"src/*",
|
|
39
40
|
"admin/*",
|
|
40
41
|
"frontend/*",
|
|
@@ -77,7 +78,7 @@
|
|
|
77
78
|
"limiter": "^2.1.0",
|
|
78
79
|
"lodash": "^4.17.21",
|
|
79
80
|
"minimist": "^1.2.6",
|
|
80
|
-
"nat-upnp": "
|
|
81
|
+
"nat-upnp-ts": "^2.0.1",
|
|
81
82
|
"node-html-parser": "^6.1.5",
|
|
82
83
|
"open": "^8.4.0",
|
|
83
84
|
"tssrp6a": "^3.0.0",
|
package/src/api.net.js
CHANGED
|
@@ -6,7 +6,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
6
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
7
|
exports.acmeMiddleware = exports.externalIp = void 0;
|
|
8
8
|
const apiMiddleware_1 = require("./apiMiddleware");
|
|
9
|
-
const
|
|
9
|
+
const nat_upnp_ts_1 = require("nat-upnp-ts");
|
|
10
10
|
const const_1 = require("./const");
|
|
11
11
|
const axios_1 = __importDefault(require("axios"));
|
|
12
12
|
const node_html_parser_1 = require("node-html-parser");
|
|
@@ -20,7 +20,7 @@ const acme_client_1 = __importDefault(require("acme-client"));
|
|
|
20
20
|
const promises_1 = __importDefault(require("fs/promises"));
|
|
21
21
|
const http_1 = require("http");
|
|
22
22
|
const promises_2 = require("dns/promises");
|
|
23
|
-
const client = new
|
|
23
|
+
const client = new nat_upnp_ts_1.Client({ timeout: 4000 });
|
|
24
24
|
const originalMethod = client.getGateway;
|
|
25
25
|
// other client methods call getGateway too, so this will ensure they reuse this same result
|
|
26
26
|
client.getGateway = (0, misc_1.debounceAsync)(() => originalMethod.apply(client), 0, { retain: misc_1.HOUR, retainFailure: 30000 });
|
|
@@ -35,7 +35,7 @@ const getNatInfo = (0, misc_1.debounceAsync)(async () => {
|
|
|
35
35
|
const gettingIp = getPublicIp(); // don't wait, do it in parallel
|
|
36
36
|
const res = await client.getGateway().catch(() => null);
|
|
37
37
|
const status = await (0, listen_1.getServerStatus)();
|
|
38
|
-
const mappings = res && await client.getMappings().catch(() => null);
|
|
38
|
+
const mappings = res && await (0, misc_1.haveTimeout)(5000, client.getMappings()).catch(() => null);
|
|
39
39
|
console.debug('mappings found', mappings);
|
|
40
40
|
const gatewayIp = res ? new URL(res.gateway.description).hostname : await findGateway().catch(() => null);
|
|
41
41
|
const localIp = (res === null || res === void 0 ? void 0 : res.address) || (await (0, listen_1.getIps)())[0];
|
|
@@ -129,7 +129,7 @@ async function generateSSLCert(domain, email) {
|
|
|
129
129
|
let check = await checkPort(domain, 80); // some check services may not consider the domain, but we already verified that
|
|
130
130
|
if (check && !check.success && upnp && externalPort !== 80) { // consider a short-lived mapping
|
|
131
131
|
// @ts-ignore
|
|
132
|
-
await client.createMapping({ private: 80, public: { host: '', port: 80 }, description: 'hfs
|
|
132
|
+
await client.createMapping({ private: 80, public: { host: '', port: 80 }, description: 'hfs temporary', ttl: 30 }).catch(() => { });
|
|
133
133
|
check = await checkPort(domain, 80); // repeat test
|
|
134
134
|
}
|
|
135
135
|
if (!check)
|
package/src/const.js
CHANGED
|
@@ -38,11 +38,11 @@ exports.DEV = process.env.DEV || exports.argv.dev ? 'DEV' : '';
|
|
|
38
38
|
exports.ORIGINAL_CWD = process.cwd();
|
|
39
39
|
exports.HFS_STARTED = new Date();
|
|
40
40
|
const PKG_PATH = (0, path_1.join)(__dirname, '..', 'package.json');
|
|
41
|
-
exports.BUILD_TIMESTAMP = "2023-09-
|
|
41
|
+
exports.BUILD_TIMESTAMP = "2023-09-21T14:29:22.907Z";
|
|
42
42
|
const pkg = JSON.parse(fs.readFileSync(PKG_PATH, 'utf8'));
|
|
43
43
|
exports.VERSION = pkg.version;
|
|
44
44
|
exports.RUNNING_BETA = exports.VERSION.includes('-');
|
|
45
|
-
exports.API_VERSION = 8.
|
|
45
|
+
exports.API_VERSION = 8.4;
|
|
46
46
|
exports.COMPATIBLE_API_VERSION = 1; // while changes in the api are not breaking, this number stays the same, otherwise it is made equal to API_VERSION
|
|
47
47
|
exports.HFS_REPO = 'rejetto/hfs';
|
|
48
48
|
exports.HFS_REPO_BRANCH = exports.RUNNING_BETA ? 'next' : 'main';
|
package/src/cross.js
CHANGED
|
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.xlate = exports.isEqualLax = exports.isWindowsDrive = exports.isIP = exports.isPrimitive = exports.formatTimestamp = exports.repeat = exports.asyncGeneratorToArray = exports.filterMapGenerator = exports.throw_ = exports.hasProp = exports.typedEntries = exports.typedKeys = exports.objRenameKey = exports.randomId = exports.getOrSet = exports.waitFor = exports.newObj = exports.removeStarting = exports.findDefined = exports.isOrderedEqual = exports.swap = exports.tryJson = exports.basename = exports.pendingPromise = exports._log = exports.wantArray = exports.formatPerc = exports.with_ = exports.try_ = exports.setHidden = exports.onlyTruthy = exports.truthy = exports.enforceFinal = exports.objSameKeys = exports.wait = exports.prefix = exports.formatBytes = exports.MAX_TILES_SIZE = exports.DAY = exports.HOUR = exports.MINUTE = exports.WIKI_URL = exports.REPO_URL = void 0;
|
|
6
|
+
exports.xlate = exports.isEqualLax = exports.isWindowsDrive = exports.isIP = exports.isPrimitive = exports.formatTimestamp = exports.repeat = exports.asyncGeneratorToArray = exports.filterMapGenerator = exports.throw_ = exports.hasProp = exports.typedEntries = exports.typedKeys = exports.objRenameKey = exports.randomId = exports.getOrSet = exports.waitFor = exports.newObj = exports.removeStarting = exports.findDefined = exports.isOrderedEqual = exports.swap = exports.tryJson = exports.basename = exports.pendingPromise = exports._log = exports.wantArray = exports.formatPerc = exports.with_ = exports.try_ = exports.setHidden = exports.onlyTruthy = exports.truthy = exports.enforceFinal = exports.objSameKeys = exports.haveTimeout = exports.wait = exports.prefix = exports.formatBytes = exports.MAX_TILES_SIZE = exports.DAY = exports.HOUR = exports.MINUTE = exports.WIKI_URL = exports.REPO_URL = void 0;
|
|
7
7
|
// This file is part of HFS - Copyright 2021-2023, Massimo Melina <a@rejetto.com> - License https://www.gnu.org/licenses/gpl-3.0.txt
|
|
8
8
|
// all content here is shared between client and server
|
|
9
9
|
const lodash_1 = __importDefault(require("lodash"));
|
|
@@ -32,6 +32,10 @@ function wait(ms, val) {
|
|
|
32
32
|
return new Promise(res => setTimeout(res, ms, val));
|
|
33
33
|
}
|
|
34
34
|
exports.wait = wait;
|
|
35
|
+
function haveTimeout(ms, job, error) {
|
|
36
|
+
return Promise.race([job, wait(ms).then(() => { throw error; })]);
|
|
37
|
+
}
|
|
38
|
+
exports.haveTimeout = haveTimeout;
|
|
35
39
|
function objSameKeys(src, newValue) {
|
|
36
40
|
return Object.fromEntries(Object.entries(src).map(([k, v]) => [k, newValue(v, k)]));
|
|
37
41
|
}
|
package/src/plugins.js
CHANGED
|
@@ -155,7 +155,11 @@ const pluginsMiddleware = async (ctx, next) => {
|
|
|
155
155
|
var _a;
|
|
156
156
|
const after = {};
|
|
157
157
|
// run middleware plugins
|
|
158
|
-
|
|
158
|
+
const entries = Object.entries(plugins);
|
|
159
|
+
const sc = await serverCode.compiled();
|
|
160
|
+
if (sc)
|
|
161
|
+
entries.push(['.', await serverCode.compiled()]);
|
|
162
|
+
for (const [id, pl] of entries)
|
|
159
163
|
try {
|
|
160
164
|
const res = await ((_a = pl.middleware) === null || _a === void 0 ? void 0 : _a.call(pl, ctx));
|
|
161
165
|
if (res === true)
|
package/src/update.js
CHANGED
|
@@ -20,7 +20,8 @@ async function getUpdates() {
|
|
|
20
20
|
const stable = await (0, github_1.getRepoInfo)(const_1.HFS_REPO + '/releases/latest');
|
|
21
21
|
const verStable = ver(stable);
|
|
22
22
|
const ret = await getBetas();
|
|
23
|
-
|
|
23
|
+
stable.isNewer = config_1.currentVersion.olderThan(stable.tag_name) || const_1.RUNNING_BETA;
|
|
24
|
+
if (stable.isNewer)
|
|
24
25
|
ret.push(stable);
|
|
25
26
|
return ret;
|
|
26
27
|
function ver(x) {
|