/** ** ============================== ** 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) 2015-2017 bLAB ** $CREATED: 26-5-15. ** $VERSION: 1.2.17 ** ** $INFO: ** ** DOS: DOS Terminal Shell ** ** $ENDOFINFO */ "use strict"; var log = 0; var version = "1.2" var Io = Require('com/io'); //Io.trace_open('/tmp/shell.trace'); var Net = Require('dos/network'); var Buf = Require('dos/buf'); var Sch = Require('dos/scheduler'); var Conn = Require('dos/connection'); var Rpc = Require('dos/rpc'); var Std = Require('dos/std'); var Router = Require('dos/router'); var util = Require('util'); var Comp = Require('com/compat'); var assert = Comp.assert; var String = Comp.string; var Array = Comp.array; var Perv = Comp.pervasives; var Printf = Comp.printf; var Filename = Comp.filename; var Obj = Comp.obj; var Args = Comp.args; var Status = Net.Status; var Command = Net.Command; var Fs = Require('fs'); var Dns = Require('dos/dns'); var Cs = Require('dos/capset'); var Getenv = Require('com/getenv'); var Ash = Require('dos/ash'); var HostSrv = Require('dos/hostsrv'); var trace = Io.tracing; var options = { bip:'localhost', bport:3001, broker: true, default:false, dip : 'localhost', dports : [], env:{}, hostport:undefined, hostsrv:false, http:false, keepalive:true, links:[], myip:'localhost', monitor:false, servmode:false, tcpnet:1, verbose:0 }; options.privhostport = Net.uniqport(); options.pubhostport = Net.prv2pub(options.privhostport); var env = Ash.Env(); var help=false; var argv = Io.getargs(); options.env = env; var readline = Require('dos/ext/readline'); Args.parse(argv, [ [['-help','-h'],0,function() {help=true;}], ['-broker',1,function(val){ var tokens = Comp.string.split(':',val); if (tokens.length==1) options.bip=val; else { options.bip=tokens[0]; options.bport=Perv.int_of_string(tokens[1]) } }], ['-dip',1,function(val){options.dip=val}], ['-D',1,function(val){options.dports.push(Perv.int_of_string(val))}], ['-L',2,function(val1,val2){options.links.push([Perv.int_of_string(val1),getip(val2),getipport(val2)])}], ['-nokeepalive',0,function(val){options.keepalive=false;}], ['-T',0,function(val){options.tcpnet=1;options.http=false;}], ['-T2',0,function(val){options.tcpnet=2;options.http=false;}], ['-H',0,function(val){options.http=true;options.tcpnet=0;}], ['-server',0,function(val){options.servmode=true;}], [['-default','-d'],0,function(val){options.default=true;}], ['-monitor',0,function () {options.monitor++; out('Setting monitor to level '+options.monitor); }], [['-v','-verbose'],0,function(val){options.verbose++; out('Setting verbosity to level '+options.verbose);}] ]); if (help) { Io.out('usage: '+argv[0]+' '+argv[1]); Io.out(' [-H -T -T2] Enable connection service'); Io.out(' T: TCPIP, 1-ch H:HTTP T2: TCPIP, 2-ch'); Io.out(' H: bport, T: bport+100'); Io.out(' (Default: -T)'); Io.out(' [-D ] UDP Server Port'); Io.out(' [-L ] Broker URL (Default: '+options.bip+': HTTP '+options.bport+' TCPNET '+(options.bport+100)+')'); Io.out(' [-dip ] (Default: '+options.dip+')'); Io.out(' [-host ] Set Host Port'); Io.out(' [-root ] Set Root Cap.'); Io.out(' [+root ] Appennd Root Cap.'); Io.out(' [-default, -d] Ask broker server for default DNS => DNS root => Shell root!'); Io.out(' [-help -h -v -verbose -monitor]'); Io.out(' [-e