diff --git a/js/dos/appl/node.js b/js/dos/appl/node.js new file mode 100644 index 0000000..f3a6fe7 --- /dev/null +++ b/js/dos/appl/node.js @@ -0,0 +1,169 @@ +/** + ** ================================== + ** OOOO OOOO OOOO O O OOOO + ** O O O O O O O O O + ** O O O O O O O O O + ** OOOO OOOO OOOO O OOO OOOO + ** O O O O O O O O O + ** O O O O O O O O O + ** OOOO OOOO OOOO OOOO O O OOOO + ** ================================== + ** BSSLAB, Dr. Stefan Bosse http://www.bsslab.de + ** + ** COPYRIGHT: THIS SOFTWARE, EXECUTABLE AND SOURCE CODE IS OWNED + ** BY THE AUTHOR. + ** 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-2016 BSSLAB + ** $CREATED: 8/7/15 + ** $VERSION: 1.1.2 + ** + ** $INFO: + ** + ** Generic Network Node + ** + ** $ENDOFINFO + */ +"use strict"; +var log = 0; + +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 Host = Require('dos/host'); + +var trace = Io.tracing; + +var privhostport = Net.uniqport(); +var pubhostport = Net.prv2pub(privhostport); + +function getip(str) { + var tokens = String.split(':',str); + if (tokens.length==2) return tokens[0]; + else if (tokens.length==1) return 'localhost'; + else return ''; + +} + +function getipport(str) { + var tokens = String.split(':', str); + if (tokens.length == 2) return Perv.int_of_string(tokens[1]); + else if (tokens.length == 1) return Perv.int_of_string(tokens[0]); + else return ''; + +} +var dports = []; +var dip = 'localhost'; +var links = []; +var bport = 3001; +var bip = 'localhost'; + +var argv = Io.getargs(); +var verbose=0; +var monitor=0; +var report=0; +var help=false; +var todos = []; + +var scheduler = Sch.TaskScheduler(); +scheduler.Init(); +var router = Router.RpcRouter(pubhostport); +var rpc = Rpc.RpcInt(router); +var std = Std.StdInt(rpc); + +Args.parse(argv, [ + [['-help','-h'],0,function() {help=true;}], + ['-bport',1,function(val) {bport=Perv.int_of_string(val);}], + ['-bip',1,function(val) {bip=val;}], + ['+dport',1,function(val){dports.push(Perv.int_of_string(val))}], + ['-dip',1,function(val){dip=val}], + ['-info',1,function(val){todos.push([ + function () { + var port = Net.Parse.port(val); + var cap = Net.Capability(port.port,Net.Private()); + std.std_info(cap,function (stat,msg){ + Io.out(Status.print(stat)+': '+msg); + }) + } + ])}], + ['+link',2,function(val1,val2){links.push([Perv.int_of_string(val1),getip(val2),getipport(val2)])}], + [['-v','-verbose'],0,function(val){verbose++;}], + ['-monitor',0,function(val){monitor++;}], + ['-report',0,function(val){report++;}] +]); + +if (help) { + Io.out('usage: '+argv[0]+' '+argv[1]); + Io.out(' [-help -monitor -report]'); + Io.out(' [-bport ] (Default : '+bport+')'); + Io.out(' [-bip ] (Default : '+bip+')'); + Io.out(' [+dport ] '); + Io.out(' [-dip ] (Default : '+dip+')'); + Io.out(' [+link ]