1.4.x_branch (#1)
Reviewed-on: #1
This commit was merged in pull request #1.
This commit is contained in:
5
.vim/coc-settings.json
Normal file
5
.vim/coc-settings.json
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"cSpell.words": [
|
||||||
|
"winfsp"
|
||||||
|
]
|
||||||
|
}
|
||||||
132
package.json
132
package.json
@@ -1,69 +1,69 @@
|
|||||||
{
|
{
|
||||||
"name": "@blockstorage/repertory-js",
|
"name": "@blockstorage/repertory-js",
|
||||||
"version": "1.4.0-r1",
|
"version": "2.0.0-r1",
|
||||||
"description": "A Node.js module for interfacing with Repertory's remote mount API",
|
"description": "A Node.js module for interfacing with Repertory's remote mount API",
|
||||||
"author": "scott.e.graves@protonmail.com",
|
"author": "scott.e.graves@protonmail.com",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"homepage": "https://bitbucket.org/blockstorage/repertory-js",
|
"homepage": "https://bitbucket.org/blockstorage/repertory-js",
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://bitbucket.org/blockstorage/repertory-js.git"
|
"url": "https://bitbucket.org/blockstorage/repertory-js.git"
|
||||||
},
|
},
|
||||||
"keywords": [
|
"keywords": [
|
||||||
"repertory",
|
"repertory",
|
||||||
"repertory-ui",
|
"repertory-ui",
|
||||||
"library",
|
"library",
|
||||||
"mount",
|
"mount",
|
||||||
"fuse",
|
"fuse",
|
||||||
"winfsp",
|
"winfsp",
|
||||||
"blockchain",
|
"blockchain",
|
||||||
"decentralized",
|
"decentralized",
|
||||||
"cloud",
|
"cloud",
|
||||||
"storage",
|
"storage",
|
||||||
"altcoin",
|
"altcoin",
|
||||||
"cryptocurrency"
|
"cryptocurrency"
|
||||||
],
|
],
|
||||||
"main": "dist/cjs/index.js",
|
"main": "dist/cjs/index.js",
|
||||||
"module": "dist/mjs/index.js",
|
"module": "dist/mjs/index.js",
|
||||||
"exports": {
|
"exports": {
|
||||||
".": {
|
".": {
|
||||||
"import": "./dist/mjs/index.js",
|
"import": "./dist/mjs/index.js",
|
||||||
"require": "./dist/cjs/index.js"
|
"require": "./dist/cjs/index.js"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"files": [
|
||||||
|
"dist/cjs",
|
||||||
|
"dist/mjs"
|
||||||
|
],
|
||||||
|
"scripts": {
|
||||||
|
"build": "rollup -c && ./fixup",
|
||||||
|
"test": "jest",
|
||||||
|
"prepublish": "rollup -c --silent && ./fixup"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"@stablelib/xchacha20poly1305": "^1.0.1",
|
||||||
|
"int64-buffer": "^1.0.0",
|
||||||
|
"socket-pool": "^1.2.3",
|
||||||
|
"text-encoding": "^0.7.0",
|
||||||
|
"uuid": "^8.3.2"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"@babel/core": "^7.14.3",
|
||||||
|
"@babel/plugin-proposal-class-properties": "^7.13.0",
|
||||||
|
"@babel/plugin-proposal-private-methods": "^7.13.0",
|
||||||
|
"@babel/plugin-transform-async-to-generator": "^7.13.0",
|
||||||
|
"@babel/plugin-transform-regenerator": "^7.13.15",
|
||||||
|
"@babel/plugin-transform-runtime": "^7.14.3",
|
||||||
|
"@babel/preset-env": "^7.14.2",
|
||||||
|
"@rollup/plugin-babel": "^5.3.0",
|
||||||
|
"@rollup/plugin-commonjs": "^15.1.0",
|
||||||
|
"@rollup/plugin-json": "^4.0.0",
|
||||||
|
"@rollup/plugin-node-resolve": "^9.0.0",
|
||||||
|
"@types/jest": "^26.0.23",
|
||||||
|
"babel-eslint": "^10.1.0",
|
||||||
|
"jest": "^26.6.3",
|
||||||
|
"rollup": "^2.50.0",
|
||||||
|
"rollup-plugin-eslint": "^7.0.0",
|
||||||
|
"rollup-plugin-terser": "^7.0.2"
|
||||||
}
|
}
|
||||||
},
|
|
||||||
"files": [
|
|
||||||
"dist/cjs",
|
|
||||||
"dist/mjs"
|
|
||||||
],
|
|
||||||
"scripts": {
|
|
||||||
"build": "rollup -c && ./fixup",
|
|
||||||
"test": "jest",
|
|
||||||
"prepublish": "rollup -c --silent && ./fixup"
|
|
||||||
},
|
|
||||||
"dependencies": {
|
|
||||||
"@stablelib/xchacha20poly1305": "^1.0.1",
|
|
||||||
"int64-buffer": "^1.0.0",
|
|
||||||
"socket-pool": "^1.2.3",
|
|
||||||
"text-encoding": "^0.7.0",
|
|
||||||
"uuid": "^8.3.2"
|
|
||||||
},
|
|
||||||
"devDependencies": {
|
|
||||||
"@babel/core": "^7.14.3",
|
|
||||||
"@babel/plugin-proposal-class-properties": "^7.13.0",
|
|
||||||
"@babel/plugin-proposal-private-methods": "^7.13.0",
|
|
||||||
"@babel/plugin-transform-async-to-generator": "^7.13.0",
|
|
||||||
"@babel/plugin-transform-regenerator": "^7.13.15",
|
|
||||||
"@babel/plugin-transform-runtime": "^7.14.3",
|
|
||||||
"@babel/preset-env": "^7.14.2",
|
|
||||||
"@rollup/plugin-babel": "^5.3.0",
|
|
||||||
"@rollup/plugin-commonjs": "^15.1.0",
|
|
||||||
"@rollup/plugin-json": "^4.0.0",
|
|
||||||
"@rollup/plugin-node-resolve": "^9.0.0",
|
|
||||||
"@types/jest": "^26.0.23",
|
|
||||||
"babel-eslint": "^10.1.0",
|
|
||||||
"jest": "^26.6.3",
|
|
||||||
"rollup": "^2.50.0",
|
|
||||||
"rollup-plugin-eslint": "^7.0.0",
|
|
||||||
"rollup-plugin-terser": "^7.0.2"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,6 +18,7 @@ export default class connection {
|
|||||||
|
|
||||||
connected = false;
|
connected = false;
|
||||||
host_or_ip = '';
|
host_or_ip = '';
|
||||||
|
nonce = '';
|
||||||
password = '';
|
password = '';
|
||||||
port = 20000;
|
port = 20000;
|
||||||
reject;
|
reject;
|
||||||
@@ -41,7 +42,9 @@ export default class connection {
|
|||||||
console.log(err);
|
console.log(err);
|
||||||
return reject(err);
|
return reject(err);
|
||||||
}
|
}
|
||||||
return resolve();
|
|
||||||
|
this.reject = reject;
|
||||||
|
this.resolve = resolve;
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
@@ -90,6 +93,7 @@ export default class connection {
|
|||||||
response
|
response
|
||||||
.decrypt()
|
.decrypt()
|
||||||
.then(() => {
|
.then(() => {
|
||||||
|
this.nonce = response.decode_utf8();
|
||||||
const { resolve } = complete();
|
const { resolve } = complete();
|
||||||
if (resolve) {
|
if (resolve) {
|
||||||
resolve(response);
|
resolve(response);
|
||||||
@@ -156,6 +160,7 @@ export default class connection {
|
|||||||
packet.encode_top_utf8(constants.instance_id);
|
packet.encode_top_utf8(constants.instance_id);
|
||||||
packet.encode_top_ui32(0); // Service flags
|
packet.encode_top_ui32(0); // Service flags
|
||||||
packet.encode_top_utf8(constants.get_version());
|
packet.encode_top_utf8(constants.get_version());
|
||||||
|
packet.encode_top_utf8(nonce);
|
||||||
await packet.encrypt();
|
await packet.encrypt();
|
||||||
packet.encode_top_ui32(packet.buffer.length);
|
packet.encode_top_ui32(packet.buffer.length);
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ const _snapshot_directory = async (conn, remote_path) => {
|
|||||||
request.encode_utf8(remote_path);
|
request.encode_utf8(remote_path);
|
||||||
|
|
||||||
const response = await conn.send(
|
const response = await conn.send(
|
||||||
'::RemoteJSONCreateDirectorySnapshot',
|
'::json_create_directory_snapshot',
|
||||||
request
|
request
|
||||||
);
|
);
|
||||||
response.decode_ui32(); // Service flags
|
response.decode_ui32(); // Service flags
|
||||||
@@ -25,7 +25,7 @@ const _snapshot_directory = async (conn, remote_path) => {
|
|||||||
released = true;
|
released = true;
|
||||||
const request = new packet();
|
const request = new packet();
|
||||||
request.encode_ui64(data.handle);
|
request.encode_ui64(data.handle);
|
||||||
await conn.send('::RemoteJSONReleaseDirectorySnapshot', request);
|
await conn.send('::json_release_directory_snapshot', request);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -38,7 +38,7 @@ const _snapshot_directory = async (conn, remote_path) => {
|
|||||||
request.encode_ui32(page);
|
request.encode_ui32(page);
|
||||||
|
|
||||||
const response = await conn.send(
|
const response = await conn.send(
|
||||||
'::RemoteJSONReadDirectorySnapshot',
|
'::json_read_directory_snapshot',
|
||||||
request
|
request
|
||||||
);
|
);
|
||||||
response.decode_ui32(); // Service flags
|
response.decode_ui32(); // Service flags
|
||||||
@@ -83,7 +83,7 @@ export const close_file = async (
|
|||||||
request.encode_ui64(handle);
|
request.encode_ui64(handle);
|
||||||
|
|
||||||
const response = await conn.send(
|
const response = await conn.send(
|
||||||
'::RemoteFUSERelease',
|
'::fuse_release',
|
||||||
request,
|
request,
|
||||||
optional_thread_id
|
optional_thread_id
|
||||||
);
|
);
|
||||||
@@ -101,7 +101,7 @@ export const create_directory = async (conn, remote_path) => {
|
|||||||
request.encode_utf8(remote_path);
|
request.encode_utf8(remote_path);
|
||||||
request.encode_ui16((7 << 6) | (5 << 3));
|
request.encode_ui16((7 << 6) | (5 << 3));
|
||||||
|
|
||||||
const response = await conn.send('::RemoteFUSEMkdir', request);
|
const response = await conn.send('::fuse_mkdir', request);
|
||||||
response.decode_ui32(); // Service flags
|
response.decode_ui32(); // Service flags
|
||||||
|
|
||||||
return response.decode_i32();
|
return response.decode_i32();
|
||||||
@@ -122,7 +122,7 @@ export const create_or_open_file = async (
|
|||||||
request.encode_ui32(2 | 4); // Read-Write, Create
|
request.encode_ui32(2 | 4); // Read-Write, Create
|
||||||
|
|
||||||
const response = await conn.send(
|
const response = await conn.send(
|
||||||
'::RemoteFUSECreate',
|
'::fuse_create',
|
||||||
request,
|
request,
|
||||||
optional_thread_id
|
optional_thread_id
|
||||||
);
|
);
|
||||||
@@ -144,7 +144,7 @@ export const remove_file = async (conn, remote_path) => {
|
|||||||
const request = new packet();
|
const request = new packet();
|
||||||
request.encode_utf8(remote_path);
|
request.encode_utf8(remote_path);
|
||||||
|
|
||||||
const response = await conn.send('::RemoteFUSEUnlink', request);
|
const response = await conn.send('::fuse_unlink', request);
|
||||||
response.decode_ui32(); // Service flags
|
response.decode_ui32(); // Service flags
|
||||||
|
|
||||||
return response.decode_i32();
|
return response.decode_i32();
|
||||||
@@ -256,10 +256,7 @@ export const download_file = async (
|
|||||||
|
|
||||||
export const get_drive_information = async (conn) => {
|
export const get_drive_information = async (conn) => {
|
||||||
try {
|
try {
|
||||||
const response = await conn.send(
|
const response = await conn.send('::winfsp_get_volume_info', new packet());
|
||||||
'::RemoteWinFSPGetVolumeInfo',
|
|
||||||
new packet()
|
|
||||||
);
|
|
||||||
response.decode_ui32(); // Service flags
|
response.decode_ui32(); // Service flags
|
||||||
|
|
||||||
const result = response.decode_i32();
|
const result = response.decode_i32();
|
||||||
@@ -295,7 +292,7 @@ export const get_file_attributes = async (
|
|||||||
request.encode_ui32(0);
|
request.encode_ui32(0);
|
||||||
|
|
||||||
const response = await conn.send(
|
const response = await conn.send(
|
||||||
'::RemoteFUSEFgetattr',
|
'::fuse_fgetattr',
|
||||||
request,
|
request,
|
||||||
optional_thread_id
|
optional_thread_id
|
||||||
);
|
);
|
||||||
@@ -324,7 +321,7 @@ export const get_file_attributes2 = async (
|
|||||||
request.encode_ui32(0);
|
request.encode_ui32(0);
|
||||||
|
|
||||||
const response = await conn.send(
|
const response = await conn.send(
|
||||||
'::RemoteFUSEGetattr',
|
'::fuse_getattr',
|
||||||
request,
|
request,
|
||||||
optional_thread_id
|
optional_thread_id
|
||||||
);
|
);
|
||||||
@@ -365,7 +362,7 @@ export const open_file = async (conn, remote_path, optional_thread_id) => {
|
|||||||
request.encode_ui32(2); // Read-Write
|
request.encode_ui32(2); // Read-Write
|
||||||
|
|
||||||
const response = await conn.send(
|
const response = await conn.send(
|
||||||
'::RemoteFUSEOpen',
|
'::fuse_open',
|
||||||
request,
|
request,
|
||||||
optional_thread_id
|
optional_thread_id
|
||||||
);
|
);
|
||||||
@@ -397,7 +394,7 @@ export const read_file = async (
|
|||||||
request.encode_ui64(handle);
|
request.encode_ui64(handle);
|
||||||
|
|
||||||
const response = await conn.send(
|
const response = await conn.send(
|
||||||
'::RemoteFUSERead',
|
'::fuse_read',
|
||||||
request,
|
request,
|
||||||
optional_thread_id
|
optional_thread_id
|
||||||
);
|
);
|
||||||
@@ -418,7 +415,7 @@ export const remove_directory = async (conn, remote_path) => {
|
|||||||
const request = new packet();
|
const request = new packet();
|
||||||
request.encode_utf8(remote_path);
|
request.encode_utf8(remote_path);
|
||||||
|
|
||||||
const response = await conn.send('::RemoteFUSERmdir', request);
|
const response = await conn.send('::fuse_rmdir', request);
|
||||||
response.decode_ui32(); // Service flags
|
response.decode_ui32(); // Service flags
|
||||||
|
|
||||||
return response.decode_i32();
|
return response.decode_i32();
|
||||||
@@ -443,7 +440,7 @@ export const truncate_file = async (
|
|||||||
request.encode_ui64(handle);
|
request.encode_ui64(handle);
|
||||||
|
|
||||||
const response = await conn.send(
|
const response = await conn.send(
|
||||||
'::RemoteFUSEFtruncate',
|
'::fuse_ftruncate',
|
||||||
request,
|
request,
|
||||||
optional_thread_id
|
optional_thread_id
|
||||||
);
|
);
|
||||||
@@ -596,7 +593,7 @@ export const write_base64_file = async (
|
|||||||
request.encode_ui64(handle);
|
request.encode_ui64(handle);
|
||||||
|
|
||||||
const response = await conn.send(
|
const response = await conn.send(
|
||||||
'::RemoteFUSEWriteBase64',
|
'::fuse_write_base64',
|
||||||
request,
|
request,
|
||||||
optional_thread_id
|
optional_thread_id
|
||||||
);
|
);
|
||||||
@@ -629,7 +626,7 @@ export const write_file = async (
|
|||||||
request.encode_ui64(handle);
|
request.encode_ui64(handle);
|
||||||
|
|
||||||
const response = await conn.send(
|
const response = await conn.send(
|
||||||
'::RemoteFUSEWrite',
|
'::fuse_write',
|
||||||
request,
|
request,
|
||||||
optional_thread_id
|
optional_thread_id
|
||||||
);
|
);
|
||||||
|
|||||||
Reference in New Issue
Block a user