Socket
Socket
Sign inDemoInstall

rai

Package Overview
Dependencies
0
Maintainers
1
Versions
11
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 0.1.7 to 0.1.8

cert/server.crt

14

lib/mockup.js

@@ -43,3 +43,3 @@ var net = require("net"),

var command, ignore_data = false, sslcontext, pair;
var command, ignore_data = false, responses = [], sslcontext, pair;

@@ -58,5 +58,8 @@ var socket = net.connect(port, host);

if(typeof callback == "function"){
callback(chunk);
responses.push(chunk);
callback(chunk, responses);
}
return;
}else{
responses.push(chunk);
}

@@ -94,5 +97,8 @@

if(typeof callback == "function"){
callback(chunk);
responses.push(chunk);
callback(chunk, responses);
}
return;
}else{
responses.push(chunk);
}

@@ -116,2 +122,2 @@ command = commands.shift();

}
}

@@ -17,4 +17,4 @@ /**

var defaultCredentials = {
key: fs.readFileSync(__dirname+"/../cert/key.pem"),
cert: fs.readFileSync(__dirname+"/../cert/cert.pem")
key: fs.readFileSync(__dirname+"/../cert/server.key"),
cert: fs.readFileSync(__dirname+"/../cert/server.crt")
};

@@ -249,5 +249,5 @@

if(sequence){
sequence = sequence.replace(/\.\=\(\)\-\?\*\\\[\]\^\+\:\|\,/g, "\\$1");
sequence = sequence.replace(/([\.\=\(\)\-\?\*\\\[\]\^\+\:\|\,])/g, "\\$1");
this._endDataModeSequence = "\r\n"+sequence+"\r\n";
this._endDataModeSequenceRegEx = new RegExp("/\r\n"+sequence+"\r\n|^"+sequence+"\r\n/");
this._endDataModeSequenceRegEx = new RegExp("\\r\\n" + sequence + "\\r\\n|^"+sequence+"\\r\\n");
}

@@ -254,0 +254,0 @@ };

{
"name": "rai",
"description": "Request-Answer-Interface for generating text based command servers (SMTP, POP etc)",
"version": "0.1.7",
"version": "0.1.8",
"author" : "Andris Reinman",

@@ -6,0 +6,0 @@ "maintainers":[

@@ -137,3 +137,3 @@ # RAI - Request-Answer-Interface

There is a possibility to set up a mockup client which sends a batch of commands
one by one to the server and returns the last response.
one by one to the server and returns the last response and an array of all responses(except the TLS negotiation).

@@ -143,4 +143,7 @@ var runClientMockup = require("rai").runClientMockup;

var cmds = ["EHLO FOOBAR", "STARTTLS", "QUIT"];
runClientMockup(25, "mail.hot.ee", cmds, function(resp){
console.log("Final:", resp.toString("utf-8").trim());
runClientMockup(25, "mail.hot.ee", cmds, function(lastResponse, allResponses){
console.log("Final:", lastResponse.toString("utf-8").trim());
console.log("All:", allResponses.map(function(e){
return e.toString("utf-8").trim()
}).join(', '));
});

@@ -157,3 +160,3 @@

Response from the callback function is a Buffer and contains the
last data received from the server
last data received from the server and an array of Buffers with all data received from the server.

@@ -160,0 +163,0 @@ ## License

var RAIServer = require("../lib/rai").RAIServer,
runClientMockup = require("../lib/rai").runClientMockup,
testCase = require('nodeunit').testCase,

@@ -589,2 +590,160 @@ utillib = require("util"),

}
};
};
exports["Client Mockup"] = {
"All command": function(test){
var server = new RAIServer();
server.listen(PORT_NUMBER, function(err){
server.on("connect", function(socket){
socket.send("220 Welcome");
socket.on("command", function(command, payload){
switch(command) {
case "HELO": socket.send("250 HI"); break;
case "NOOP": socket.send("250 OK"); break;
case "QUIT": socket.send("221 Bye"); socket.end(); break;
default: socket.send("500");
}
});
socket.on("error", function(err){
test.isError(err);
});
});
var cmds = ["HELO", "NOOP", "QUIT"];
runClientMockup(PORT_NUMBER, "localhost", cmds, function(lastResponse, allResponses){
allResponses = allResponses.map(function(value) { return value.toString("utf-8"); });
test.deepEqual(allResponses, [ "220 Welcome\r\n", "250 HI\r\n", "250 OK\r\n", "221 Bye\r\n" ]);
server.end(function(){
test.done();
});
});
});
},
"Last commands": function(test){
var server = new RAIServer();
server.listen(PORT_NUMBER, function(err){
server.on("connect", function(socket){
socket.send("220 HI");
socket.on("command", function(command, payload){
switch(command) {
case "HELO": socket.send("250 HI"); break;
case "NOOP": socket.send("250 OK"); break;
case "QUIT": socket.send("221 Bye"); socket.end(); break;
default: socket.send("500");
}
});
socket.on("error", function(err){
test.isError(err);
});
});
var cmds = ["HELO", "NOOP", "QUIT"];
runClientMockup(PORT_NUMBER, "localhost", cmds, function(lastResponse){
test.equal(lastResponse.toString("utf-8"), "221 Bye\r\n");
server.end(function(){
test.done();
});
});
});
},
"All command(STARTTLS)": function(test){
var server = new RAIServer();
server.listen(PORT_NUMBER, function(err){
test.expect(2);
server.on("connect", function(socket){
socket.tlsStatus = 0;
socket.send("220 Welcome");
socket.on("command", function(command, payload){
switch(command){
case "EHLO":
if(socket.tlsStatus===0){
socket.send("250-HI\r\n250 STARTTLS");
}else{
socket.send("250 HI");
}
break;
case "NOOP": socket.send("250 OK"); break;
case "QUIT": socket.send("221 Bye"); socket.end(); break;
case "STARTTLS": socket.startTLS(); socket.send("220 Go ahead"); break;
default: socket.send("500");
}
});
socket.on("tls", function(){
test.ok(1, "Secure connection opened");
socket.tlsStatus = 1;
});
socket.on("error", function(err){
test.isError(err);
});
});
var cmds = ["EHLO", "STARTTLS", "EHLO", "NOOP", "QUIT"];
runClientMockup(PORT_NUMBER, "localhost", cmds, function(lastResponse, allResponses){
allResponses = allResponses.map(function(value) { return value.toString("utf-8"); });
test.deepEqual(allResponses, ["220 Welcome\r\n", "250-HI\r\n250 STARTTLS\r\n", "220 Go ahead\r\n",
"250 HI\r\n", "250 OK\r\n", "221 Bye\r\n" ]);
server.end(function(){
test.done();
});
});
});
},
"Last commands(STARTTLS)": function(test){
var server = new RAIServer();
server.listen(PORT_NUMBER, function(err){
test.expect(2);
server.on("connect", function(socket){
socket.tlsStatus = 0;
socket.send("220 Welcome");
socket.on("command", function(command, payload){
switch(command){
case "EHLO":
if(socket.tlsStatus===0){
socket.send("250-HI\r\n250 STARTTLS");
}else{
socket.send("250 HI");
}
break;
case "NOOP": socket.send("250 OK"); break;
case "QUIT": socket.send("221 Bye"); socket.end(); break;
case "STARTTLS": socket.startTLS(); socket.send("220 Go ahead"); break;
default: socket.send("500");
}
});
socket.on("tls", function(){
test.ok(1, "Secure connection opened");
socket.tlsStatus = 1;
});
socket.on("error", function(err){
test.isError(err);
});
});
var cmds = ["EHLO", "STARTTLS", "EHLO", "NOOP", "QUIT"];
runClientMockup(PORT_NUMBER, "localhost", cmds, function(lastResponse){
test.equal(lastResponse.toString("utf-8"), "221 Bye\r\n");
server.end(function(){
test.done();
});
});
});
}
};

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc