diff options
| author | Jules Laplace <julescarbon@gmail.com> | 2018-09-20 02:52:55 +0200 |
|---|---|---|
| committer | Jules Laplace <julescarbon@gmail.com> | 2018-09-20 02:52:55 +0200 |
| commit | 3c9ccd38751501bbf5b9cd2c54dee370681fdb5b (patch) | |
| tree | 31464fe818770550bd71edca8b91aed1eb708240 /app/relay | |
| parent | 19adbf48642085f39b9562ea6ad1e248a546373c (diff) | |
stub file viewer
Diffstat (limited to 'app/relay')
| -rw-r--r-- | app/relay/remote.js | 10 | ||||
| -rw-r--r-- | app/relay/runner.js | 19 |
2 files changed, 29 insertions, 0 deletions
diff --git a/app/relay/remote.js b/app/relay/remote.js index 1c9875f..a0639a5 100644 --- a/app/relay/remote.js +++ b/app/relay/remote.js @@ -146,6 +146,16 @@ remote.on('system', (data) => { }) }) break + case 'read_file': + runner.read_file(data.payload, (file) => { + remote.emit('system_res', { + type: 'read_file', + query: data.payload, + uuid: data.uuid, + file, + }) + }) + break case 'get_status': remote.emit('system_res', { type: 'relay_status', diff --git a/app/relay/runner.js b/app/relay/runner.js index 44f2554..f1e3497 100644 --- a/app/relay/runner.js +++ b/app/relay/runner.js @@ -11,6 +11,7 @@ import readdir from 'fs-readdir-promise' import * as q from './queue' +const MAX_TRANSFER_SIZE = 1024 * 1024 * 2.5 const idle_state = { status: 'IDLE', task: {} } export const state = { @@ -169,6 +170,24 @@ export function module_dir(opt, dir){ return path.join(module.cwd, dir.replace(/\.\.?\//g, '')) } +export function read_file(opt, cb) { + const fn = module_dir(opt, opt.fn) + if (!fn) return cb([]) + stat_promise(fn).then(stat => { + if (stat.size > MAX_TRANSFER_SIZE) { + return cb({ error: 'file too large'}) + } + fs.readFile(fn, (err, buf) => cb({ + error: err, + name: opt.fn, + path: fn, + date: stat.ctime, + size: stat.size, + buf + })) + }).catch(() => cb({ error: 'error reading file' })) +} + export function list_directory(opt, cb) { const dir = module_dir(opt, opt.dir) if (!dir) return cb([]) |
