New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

@carlgo11/smtp-server

Package Overview
Dependencies
Maintainers
0
Versions
11
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@carlgo11/smtp-server - npm Package Compare versions

Comparing version 0.0.1 to 0.0.2

src/core/Event.js

6

package.json
{
"name": "@carlgo11/smtp-server",
"version": "0.0.1",
"version": "0.0.2",
"description": "Simple lightweight SMTP server written in Node.js",
"main": "src/code/SMTPServer.js",
"private": false,
"main": "src/core/SMTPServer.js",
"scripts": {
"serve": "node src/core/SMTPServer.js",
"test": "node --test"

@@ -10,0 +8,0 @@ },

@@ -53,3 +53,3 @@ # **SMTP Server**

```js
import SMTPServer from '@carlgo11/smtp-server';
import {SMTPServer, Response} from '@carlgo11/smtp-server';

@@ -56,0 +56,0 @@ // Create server instance

@@ -13,3 +13,3 @@ import Response from '../models/Response.js';

export function handleCommand(message, session, server) {
export function handleCommand(message, session) {
const command = message.trim().split(' ')[0].toUpperCase();

@@ -20,4 +20,4 @@ const args = message.substring(command.length).trim().split(' ');

handler ?
handler(args, session, server):
handler(args, session):
session.send(new Response('Command not implemented', 502, [5, 5, 1]));
}
import context from '../core/ServerContext.js';
import Response from '../models/Response.js';
import events from '../core/Event.js';

@@ -34,3 +35,3 @@ /**

clearTimeout(dataTimeout);
server.removeListener('dataChunk', onDataChunk);
events.removeListener('DATA', onDataChunk);

@@ -49,3 +50,2 @@ // Transition to DATA_DONE state after processing is complete

const handleDataComplete = (messageData) => {
server.emit('MESSAGE', session, messageData);
// Pass the message data to the consumer's onDATA handler

@@ -107,3 +107,3 @@ context.onDATA(messageData, session).then((result) => {

// Attach listener for 'dataChunk' event
server.on('dataChunk', onDataChunk);
events.on('DATA', onDataChunk);
}
import context from '../core/ServerContext.js';
import events from '../core/Event.js';
import Response from '../models/Response.js';
export default function EHLO(args, session, server) {
export default function EHLO(args, session) {

@@ -14,3 +15,3 @@ if (!session.isValidTransition(['NEW', 'STARTTLS']))

server.emit('EHLO', session, domain);
events.emit('EHLO', session, domain);

@@ -17,0 +18,0 @@ // Wait for external validation

import context from '../core/ServerContext.js';
import Response from '../models/Response.js';
import events from '../core/Event.js';
export default async function MAIL(args, session, server) {
export default async function MAIL(args, session) {
if (session.state !== session.states.STARTTLS)

@@ -24,3 +25,3 @@ return session.send(session.tls ?

server.emit('MAIL', session, sender);
events.emit('MAIL', session, sender);

@@ -27,0 +28,0 @@ // Wait on external validation

import context from '../core/ServerContext.js';
import Response from '../models/Response.js';
import events from '../core/Event.js';
export default function RCPT(args, session, server) {
export default function RCPT(args, session) {
if (session.state !== session.states.MAIL_FROM)

@@ -22,3 +23,3 @@ return session.send(new Response(null, 501, [5, 5, 1]));

server.emit('RCPT', session, recipient);
events.emit('RCPT', session, recipient);

@@ -25,0 +26,0 @@ context.onRCPTTO(recipient, session).then((result) => {

@@ -7,2 +7,3 @@ import net from 'net';

import _Response from '../models/Response.js';
import events from './Event.js';

@@ -33,2 +34,3 @@ // Load commands

events.emit('CONNECT', session);
context.onConnect(session);

@@ -46,3 +48,3 @@

handleCommand(message, session, server);
handleCommand(message, session);
});

@@ -79,1 +81,2 @@

export const Response = _Response
export const Listen = events;
import tls from 'tls';
import Logger from '../utils/logger.js';
import context from './ServerContext.js';
import events from './Event.js';
import {handleCommand} from '../commands/CommandHandler.js';
export function handleTLSConnection(session, server) {
export function handleTLSConnection(session) {
// Create a new TLS socket from the existing socket

@@ -22,3 +23,3 @@ const {tlsOptions} = context;

if (session.state === session.states.DATA_READY) {
server.emit('dataChunk', data, session);
events.emit('DATA', data, session);
} else {

@@ -28,3 +29,3 @@ const message = data.toString().trim();

handleCommand(message, session, server);
handleCommand(message, session);
}

@@ -35,3 +36,3 @@ });

context.onDisconnect(session);
server.emit('disconnect');
events.emit('DISCONNECT', session);
Logger.info('Client disconnected', session.id);

@@ -70,3 +71,3 @@ });

session.id);
server.emit('secure');
events.emit('SECURE');
// context.onSecure(session).then(r => r);

@@ -73,0 +74,0 @@ });

@@ -23,10 +23,10 @@ import os from 'os';

this.states = {
NEW: 'NEW', // Just connected
NEW: 'NEW', // Just connected
EHLO_RECEIVED: 'EHLO_RECEIVED', // EHLO completed
STARTTLS: 'STARTTLS', // STARTTLS completed
MAIL_FROM: 'MAIL_FROM', // MAIL FROM received
RCPT_TO: 'RCPT_TO', // RCPT TO received
DATA_READY: 'DATA_READY', // Data received
DATA_DONE: 'DATA_DONE', // Data received
QUIT: 'QUIT', // Client has quit
STARTTLS: 'STARTTLS', // STARTTLS completed
MAIL_FROM: 'MAIL_FROM', // MAIL FROM received
RCPT_TO: 'RCPT_TO', // RCPT TO received
DATA_READY: 'DATA_READY', // Data received
DATA_DONE: 'DATA_DONE', // Data received
QUIT: 'QUIT', // Client has quit
};

@@ -33,0 +33,0 @@

SocketSocket SOC 2 Logo

Product

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

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc