/** ** ============================== ** O O O OOOO ** O O O O O O ** O O O O O O ** OOOO OOOO O OOO OOOO ** O O O O O O O ** O O O O O O O ** OOOO OOOO O O OOOO ** ============================== ** Dr. Stefan Bosse http://www.bsslab.de ** ** COPYRIGHT: THIS SOFTWARE, EXECUTABLE AND SOURCE CODE IS OWNED ** BY THE AUTHOR(S). ** THIS SOURCE CODE MAY NOT BE COPIED, EXTRACTED, ** MODIFIED, OR OTHERWISE USED IN A CONTEXT ** OUTSIDE OF THE SOFTWARE SYSTEM. ** ** $AUTHORS: Stefan Bosse ** $INITIAL: (C) 2006-2025 bLAB ** $CREATED: 1-3-18 by sbosse. ** $VERSION: 1.3.1 ** ** $INFO: ** ** JAM Shell Interpreter (Front end) ** ** $ENDOFINFO */ /* Soem hacks */ process.noDeprecation = true var Comp = Require('com/compat'); var Io = Require('com/io'); var doc = Require('doc/doc'); var table = Require('doc/table'); var readline = Require('com/readline'); var readlineSync = Require('term/readlineSync'); var renderer = doc.Renderer({lazy:true}); var http = Require('http'); var httpserv = Require('http/https'); // a file server! try { var https = require('https'); } catch (e) {}; if (!https.request) https=undefined; var geoip = Require('geoip/geoip'); // a geo location database server var util = Require('util') var sip = Require('top/rendezvous'); var db = Require('db/db'); // JAM Shell Interpreter (Back end) var JamShell = Require('shell/shell'); var nlp = Require('nlp/nlp'); var ml = Require('ml/ml') var nn = Require('nn/nn') var csp = Require('csp/csp') var sat = Require('logic/sat') var logic = Require('logic/prolog') var csv = Require('parser/papaparse'); var ampCOM = Require('jam/ampCOM'); var numerics = Require('numerics/numerics') var osutils = Require('os/osutils'); var UI = Require('ui/app/app'); var Des48 = Require('dos/des48'); var p; var options= { args:[], echo: true, modules : { csp : csp, csv : csv, db : db, des48 : Des48, doc : doc, geoip : geoip, http : http, httpserv : httpserv, https : https, logic:logic, ml:ml, nlp:nlp, nn:nn, numerics:numerics, os:osutils, readline : readline, readlineSync : readlineSync, sat : sat, sip : sip, table : table, UI: UI, }, extensions : { url2addr: ampCOM.url2addr, sleep: process.watchdog&&process.watchdog.sleep? function (milli) { process.watchdog.sleep(milli) }:undefined }, nameopts : {length:8, memorable:true, lowercase:true}, Nameopts : {length:8, memorable:true, uppercase:true}, output : null, // AMP network ports, JAM interconnect // |http:|https:|IP:|NORTH:|... // <=> port(DIR.IP(9901),{proto:'http'}) links : [], ports : [], renderer : renderer, server : false, verbose : 0 } process.on('uncaughtException', function (err) { console.error(err.stack); console.log("jamsh not exiting..."); }); if ((p=process.argv.indexOf('--'))>0) { options.args=process.argv.slice(p+1,process.argv.length); process.argv=process.argv.slice(0,p); } // return {port:DIR.IP(9901),options:{proto:'http'}} // input. |http:|https:|IP:|NORTH:|... function parsePort(str) { var tokens = str.split(':'), ipproto = 'http', ipaddr = '', ampport = 'IP', ipport = 9999 for(var i=0;i0) { print('usage: jamsh [-v(erbose)]') print(' [-i(nteractive mode)]') print(' [-s(erver mode)]') print(' [-p(ort) ]') print(' [-l(inkto) ]') print(' [javascript script file]') print(' [-e(xecute) "shell command"]') print('JAM network port url scheme:') print(' (AMP endpoint, defaults are DIR.IP(9999), ipproto:http)') print(' ://:, =http|https|udp|tcp') print(' ://:?secure=' ) print(' |: // localhost') print(' NORTH|SOUTH|WEST|EAST|...'); print('Examples:'); print(' --- HTTP client connection to remote jamsh service endpoint ---'); print(' jamsh -v -p http://localhost:* -l http://edu-9.de:20101?secure=DD:DD:DD:DD -s'); return; } var skip=0 process.argv.forEach(function (arg,argi) { if (argi<2) return; if (skip) return skip--; switch (arg) { case '-v': options.verbose++; break; case '-s': options.output=console.log; options.server=true; break; case '-i': options.server=false; break; case '-e': options.server=true; options.output=console.log; options.exec=process.argv[argi+1]; skip++; break; case '-p': options.ports.push(parsePort(process.argv[argi+1])); skip++; break; case '-l': options.links.push(process.argv[argi+1]); skip++; break; default: if (arg[0]!='-') { // script options.script=arg; options.output=console.log; options.server=true; } else throw ("Invalid command line argument "+arg) } }) if (!options.server && options.verbose==0) options.verbose=1; JamShell(options).init(); } catch (e) { print(e.toString()) }}