115 lines
2.5 KiB
JavaScript
115 lines
2.5 KiB
JavaScript
load('texdefs.js');
|
|
load('texfuncs.js');
|
|
|
|
var options = loadOptions();
|
|
|
|
// Modes of operation:
|
|
// -s -p x -i y = To send a stored page via the msgbase
|
|
// {-s} -p x -i y -f file = To update (and optionally send) a page with new content
|
|
// -all details = to create a new page
|
|
|
|
// Import
|
|
send = (argv.indexOf('-s') >= 0);
|
|
// Page
|
|
p = getArg('-p','No page specified with -p',true);
|
|
// Index
|
|
i = getArg('-i','No index specified with -i',true);
|
|
// File to convert
|
|
file = getArg('-f','No file specified with -f',false);
|
|
|
|
frame = getFrame({frame: p,index: i});
|
|
|
|
if (! send || ! frame || file) {
|
|
if (! frame) {
|
|
frame = new Frame(p,i);
|
|
}
|
|
|
|
// Key
|
|
key = getArg('-k','No index specified with -k',false);
|
|
// Cost
|
|
cost = getArg('-c','No index specified with -c',false);
|
|
// Owner
|
|
owner = getArg('-o','No owner specified with -o',false);
|
|
// Owner
|
|
type = getArg('-t','No type specified with -t',false);
|
|
|
|
if (file) {
|
|
f = new File(file);
|
|
if (! f.exists || ! f.open('r')) {
|
|
log(LOG_ERROR,'! ERROR: Unable to open ['+file+']');
|
|
exit(1);
|
|
}
|
|
|
|
frame.content = base64_encode(f.read());
|
|
f.close();
|
|
}
|
|
|
|
if (owner) {
|
|
frame.owner = base64_encode(owner.replace(/\\1/g,"\1"));
|
|
}
|
|
|
|
if (key) {
|
|
frame.key = key.split(',').map(function(t){return parseInt(t)});
|
|
|
|
if (frame.key.length != 10) {
|
|
log(LOG_ERROR,'! ERROR: Must specify 10 keys with -k');
|
|
exit(1);
|
|
}
|
|
}
|
|
|
|
// Public
|
|
if (argv.indexOf('-P') >= 0)
|
|
frame.isPublic = 1;
|
|
|
|
if (argv.indexOf('-A') >= 0)
|
|
frame.isAccessible = 1;
|
|
|
|
if (cost)
|
|
frame.cost = cost;
|
|
|
|
if (type)
|
|
frame.type = type; // @todo validate this is a valid type.
|
|
|
|
// Date
|
|
frame.date = new Date().toISOString();
|
|
|
|
// Final validation
|
|
if (! frame.owner) {
|
|
log(LOG_ERROR,'! ERROR: No owner specified ['+file+']');
|
|
exit(1);
|
|
}
|
|
|
|
// Store the frame in file
|
|
saveFrame(frame);
|
|
}
|
|
|
|
// @NOTE: We need to use a binary signature then base64 encode it, as mailers may strip 0x0a while messages are in transit.
|
|
if (send == 1 && options.gpg_key) {
|
|
if (! file) {
|
|
file = system.text_dir+'ansitex/'+frame.page+'.tex';
|
|
}
|
|
|
|
if (! file_exists(file)) {
|
|
log(LOG_ERROR,'! ERROR: File '+file+' doesnt exist?');
|
|
exit(1);
|
|
}
|
|
|
|
if (file_exists(file+'.gpg'))
|
|
file_remove(file+'.gpg')
|
|
|
|
result = system.exec('gpg --homedir '+system.mods_dir+'/keys --batch --local-user '+options.gpg_key+' -s '+file);
|
|
w = new File(file+'.gpg');
|
|
|
|
if (w.open('r')) {
|
|
msg = base64_encode(w.read());
|
|
|
|
} else {
|
|
log(LOG_ERROR,'! ERROR: Unable to send with GPG for '+frame.page + ' Error: '+w.error);
|
|
exit(1);
|
|
}
|
|
|
|
w.close();
|
|
|
|
msgBaseImport(null,frame.page,msg);
|
|
printf('GPG Result: %s',result);
|
|
} |