diff --git a/exec/finger.js b/exec/finger.js index 79316daadecd25100b62fa71dcde618ab91b0c36..f042e449f5bb1083876f1523e9d1191c6cfa854c 100644 --- a/exec/finger.js +++ b/exec/finger.js @@ -2,9 +2,26 @@ // A simple finger client -if(argc>0 && argv[0].indexOf('@')!=-1) - dest = argv[0]; -else if((dest = prompt("User (user@hostname)"))==null) +load('sockdefs.js'); +var dest; +var udp = false; +var protocol = "finger"; + +var i; +for(i = 0; i < argc; i++) { + if(argv[i] == '-udp') + use_udp = true; + else if(argv[i] == '-s') + protocol = "systat"; + else if(argv[i].indexOf('@')!=-1) + dest = argv[i]; + else { + alert("Unsupported option: " + argv[i]); + exit(); + } +} + +if(!dest && (dest = prompt("User (user@hostname)"))==null) exit(); if((hp = dest.indexOf('@'))==-1) { @@ -13,13 +30,15 @@ if((hp = dest.indexOf('@'))==-1) { } host = dest.slice(hp+1); -sock = new Socket(); +sock = new Socket(use_udp ? SOCK_DGRAM : SOCK_STREAM); //sock.debug = true; -if(!sock.connect(host,"finger")) +if(!sock.connect(host, protocol)) alert("Connection to " + host + " failed with error " + sock.last_error); else { sock.send(dest.slice(0,hp)+"\r\n"); - while(bbs.online && sock.is_connected) + if(use_udp) + print(sock.recvfrom().data); + else while(sock.is_connected && !js.terminated) print(sock.readline()); } sock.close();