braidfs 0.0.27 → 0.0.28
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/index.js +18 -5
- package/package.json +2 -2
package/index.js
CHANGED
|
@@ -19,7 +19,7 @@ if (!require('fs').existsSync(braidfs_config_file)) {
|
|
|
19
19
|
sync_urls: [],
|
|
20
20
|
sync_index_urls: [],
|
|
21
21
|
proxy_base: require('path').join(require('os').homedir(), 'http'),
|
|
22
|
-
|
|
22
|
+
proxy_base_meta: require('path').join(braidfs_config_dir, 'proxy_base_meta'),
|
|
23
23
|
braid_text_db: require('path').join(braidfs_config_dir, 'braid-text-db'),
|
|
24
24
|
domains: { 'example.com': { auth_headers: { Cookie: "secret_pass" } } }
|
|
25
25
|
}, null, 4))
|
|
@@ -56,6 +56,15 @@ while (argv.length) {
|
|
|
56
56
|
console.log(`unexpose server from the outside world`)
|
|
57
57
|
}
|
|
58
58
|
}
|
|
59
|
+
if (config.proxy_base_last_versions && !config.proxy_base_meta) {
|
|
60
|
+
config.proxy_base_meta = config.proxy_base_last_versions
|
|
61
|
+
delete config.proxy_base_last_versions
|
|
62
|
+
console.log((save_config ?
|
|
63
|
+
`updating config file "proxy_base_last_versions" to "proxy_base_meta": ` :
|
|
64
|
+
`config file "proxy_base_last_versions" being interpreted as "proxy_base_meta": `) +
|
|
65
|
+
config.proxy_base_meta)
|
|
66
|
+
}
|
|
67
|
+
|
|
59
68
|
if (save_config) {
|
|
60
69
|
require('fs').writeFileSync(braidfs_config_file, JSON.stringify(config, null, 4))
|
|
61
70
|
console.log(`saved config file`)
|
|
@@ -64,7 +73,7 @@ if (save_config) {
|
|
|
64
73
|
braid_text.db_folder = config.braid_text_db
|
|
65
74
|
|
|
66
75
|
require('fs').mkdirSync(config.proxy_base, { recursive: true })
|
|
67
|
-
require('fs').mkdirSync(config.
|
|
76
|
+
require('fs').mkdirSync(config.proxy_base_meta, { recursive: true })
|
|
68
77
|
|
|
69
78
|
let host_to_protocol = {}
|
|
70
79
|
let path_to_func = {}
|
|
@@ -235,6 +244,7 @@ async function proxy_url(url) {
|
|
|
235
244
|
let peer = Math.random().toString(36).slice(2)
|
|
236
245
|
var char_counter = -1
|
|
237
246
|
let file_last_version = null
|
|
247
|
+
let file_last_digest = null
|
|
238
248
|
let file_last_text = null
|
|
239
249
|
self.file_read_only = null
|
|
240
250
|
let file_needs_reading = true
|
|
@@ -273,13 +283,16 @@ async function proxy_url(url) {
|
|
|
273
283
|
|
|
274
284
|
if (file_last_version === null) {
|
|
275
285
|
try {
|
|
276
|
-
file_last_version = JSON.parse(await require('fs').promises.readFile(require('path').join(config.
|
|
286
|
+
({version: file_last_version, digest: file_last_digest} = JSON.parse(await require('fs').promises.readFile(require('path').join(config.proxy_base_meta, braid_text.encode_filename(url)), { encoding: 'utf8' })))
|
|
277
287
|
file_last_text = (await braid_text.get(url, { version: file_last_version })).body
|
|
278
288
|
file_needs_writing = !v_eq(file_last_version, (await braid_text.get(url, {})).version)
|
|
279
289
|
} catch (e) {
|
|
280
290
|
file_last_text = ''
|
|
281
291
|
file_needs_writing = true
|
|
282
292
|
}
|
|
293
|
+
|
|
294
|
+
// sanity check
|
|
295
|
+
if (file_last_version && require('crypto').createHash('sha256').update(file_last_text).digest('base64') != file_last_digest) throw new Error('file_last_text does not match file_last_digest')
|
|
283
296
|
}
|
|
284
297
|
|
|
285
298
|
while (file_needs_reading || file_needs_writing) {
|
|
@@ -306,7 +319,7 @@ async function proxy_url(url) {
|
|
|
306
319
|
|
|
307
320
|
await braid_text.put(url, { version, parents, patches, peer })
|
|
308
321
|
|
|
309
|
-
await require('fs').promises.writeFile(require('path').join(config.
|
|
322
|
+
await require('fs').promises.writeFile(require('path').join(config.proxy_base_meta, braid_text.encode_filename(url)), JSON.stringify({version: file_last_version, digest: require('crypto').createHash('sha256').update(file_last_text).digest('base64')}))
|
|
310
323
|
}
|
|
311
324
|
}
|
|
312
325
|
if (file_needs_writing) {
|
|
@@ -321,7 +334,7 @@ async function proxy_url(url) {
|
|
|
321
334
|
file_last_version = version
|
|
322
335
|
file_last_text = body
|
|
323
336
|
await require('fs').promises.writeFile(await get_fullpath(), file_last_text)
|
|
324
|
-
await require('fs').promises.writeFile(require('path').join(config.
|
|
337
|
+
await require('fs').promises.writeFile(require('path').join(config.proxy_base_meta, braid_text.encode_filename(url)), JSON.stringify({version: file_last_version, digest: require('crypto').createHash('sha256').update(file_last_text).digest('base64')}))
|
|
325
338
|
}
|
|
326
339
|
|
|
327
340
|
if (await is_read_only(await get_fullpath()) !== self.file_read_only) await set_read_only(await get_fullpath(), self.file_read_only)
|
package/package.json
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "braidfs",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.28",
|
|
4
4
|
"description": "braid technology synchronizing files and webpages",
|
|
5
5
|
"author": "Braid Working Group",
|
|
6
6
|
"repository": "braid-org/braidfs",
|
|
7
7
|
"homepage": "https://braid.org",
|
|
8
8
|
"dependencies": {
|
|
9
9
|
"braid-http": "^0.3.20",
|
|
10
|
-
"braid-text": "^0.0.
|
|
10
|
+
"braid-text": "^0.0.31",
|
|
11
11
|
"chokidar": "^3.6.0"
|
|
12
12
|
},
|
|
13
13
|
"bin": {
|