Files
js-scripts/scripts/secureosssendfile.js
2025-06-20 22:13:06 +08:00

60 lines
1.7 KiB
JavaScript

#! /usr/bin/env runjs
var jose = require('component-jose.js');
var args = require('component-args.js');
var main = () => {
var parsedArgs = args.parseARGS();
var secureosssendfileConfRFile = __.rfile.from('~/.jssp/config/secureosssendfile.jwk');
if (secureosssendfileConfRFile.notExists()) {
xprintln('[ERROR] secureosssendfile.jwk NOT found.');
return;
}
var jwk = jose.jwk.load(secureosssendfileConfRFile.string());
var osssendfilejsRFile = __.rfile.from('~/bin/osssendfile.js');
if (osssendfilejsRFile.notExists()) {
xprintln('[ERROR] osssendfile.js NOT found.')
return;
}
if ((parsedArgs.args.length != 2) && (parsedArgs.args.length != 3)) {
println('secureosssendfile.js -- secure upload file to play.hatter.me');
println();
println('secureosssendfile.js file.ext [newFn] keywords');
return;
}
var fn = parsedArgs.args[0];
var newFn = fn;
var kw;
if (parsedArgs.args.length == 2) {
kw = parsedArgs.args[1];
} else {
newFn = parsedArgs.args[1];
kw = parsedArgs.args[2];
}
if ($STR(newFn) == '_IN') {
print('Input new fn: ');
newFn = java.lang.System.console().readLine();
println('[INFO] Input file name: ' + newFn);
}
var encFn = $$.date().millis() + '.gpg';
xprintln('[INFO] GPG encrypt file: ' + fn + " -> " + encFn)
$$.shell(true).commands('gpg', '-e', '-r', 'D0386B7F', '-o', encFn, fn).run();
var jweNewFn = 'JWE:' + jose.jwe.enc(jwk, newFn);
xprintln('[INFO] Send file: ' + encFn + ' -> ' + jweNewFn);
$$.shell(true).commands('osssendfile.js', encFn, jweNewFn, kw).run();
$$.file(encFn).delete();
xprintln('[INFO] Done!')
};
main();