Update loggers

This commit is contained in:
David Majdandžić
2023-03-25 18:20:32 +01:00
parent bcf48e9d6f
commit bc063f0b34

100
main.js
View File

@@ -142,7 +142,7 @@ class ClientSession {
this.username = username; this.username = username;
this.password = password; this.password = password;
this.logger.log1(`Session created with url ${this.url}, username ${this.username}, password ${this.password} and ID ${this.id}`); this.logger.log1(`Client created with url ${this.url}, username ${this.username}, password ${this.password} and ID ${this.id}`);
this.status = ClientSessionStatus.NOT_CONNECTED; this.status = ClientSessionStatus.NOT_CONNECTED;
} }
@@ -157,6 +157,7 @@ class ClientSession {
} }
refresh() { refresh() {
this.logger.log1(`Refreshing client with url ${this.url} and id ${this.id}`);
let status = this.status; let status = this.status;
this.close(); this.close();
if (status === ClientSessionStatus.CONNECTED) { if (status === ClientSessionStatus.CONNECTED) {
@@ -177,11 +178,11 @@ class ClientSession {
connect() { connect() {
this.connectingPromise.promise = new Promise((resolve, reject) => { this.connectingPromise.promise = new Promise((resolve, reject) => {
if (this.status !== ClientSessionStatus.NOT_CONNECTED) { if (this.status !== ClientSessionStatus.NOT_CONNECTED) {
this.logger.log1("ClientSession already connected"); this.logger.log1("Client already connected");
reject("ClientSession already connected"); reject("Client already connected");
return; return;
} }
this.logger.log1("Connecting to " + this.url); this.logger.log1(`Client connecting to ${this.url}`);
this.setStatus(ClientSessionStatus.CONNECTING); this.setStatus(ClientSessionStatus.CONNECTING);
try { try {
this.session = smpp.connect({ this.session = smpp.connect({
@@ -190,10 +191,10 @@ class ClientSession {
}, this.connected.bind(this)); }, this.connected.bind(this));
this.session.on('error', this.error.bind(this)); this.session.on('error', this.error.bind(this));
} catch (e) { } catch (e) {
this.logger.log1("Connection failed to " + this.url); this.logger.log1("Client connection failed to " + this.url);
this.setStatus(ClientSessionStatus.NOT_CONNECTED); this.setStatus(ClientSessionStatus.NOT_CONNECTED);
this.session.close(); this.session.close();
reject("Connection failed to " + this.url); reject("Client connection failed to " + this.url);
} }
this.connectingPromise.resolve = resolve; this.connectingPromise.resolve = resolve;
this.connectingPromise.reject = reject; this.connectingPromise.reject = reject;
@@ -203,18 +204,18 @@ class ClientSession {
error(error) { error(error) {
if (error.code === "ETIMEOUT") { if (error.code === "ETIMEOUT") {
this.logger.log1("Connection timed out to " + this.url); this.logger.log1("Client connection timed out to " + this.url);
} else if (error.code === "ECONNREFUSED") { } else if (error.code === "ECONNREFUSED") {
this.logger.log1("Connection refused to " + this.url); this.logger.log1("Client connection refused to " + this.url);
} else { } else {
this.logger.log1("Connection failed to " + this.url); this.logger.log1("Client connection failed to " + this.url);
} }
this.session.close(); this.session.close();
this.setStatus(ClientSessionStatus.NOT_CONNECTED); this.setStatus(ClientSessionStatus.NOT_CONNECTED);
} }
connected() { connected() {
this.logger.log1("Connected to " + this.url); this.logger.log1("Client connected to " + this.url);
this.setStatus(ClientSessionStatus.CONNECTED); this.setStatus(ClientSessionStatus.CONNECTED);
this.session.on('debug', (type, msg, payload) => { this.session.on('debug', (type, msg, payload) => {
if (type.includes('pdu.')) { if (type.includes('pdu.')) {
@@ -235,22 +236,22 @@ class ClientSession {
bind() { bind() {
this.bindingPromise.promise = new Promise((resolve, reject) => { this.bindingPromise.promise = new Promise((resolve, reject) => {
if (this.status !== ClientSessionStatus.CONNECTED) { if (this.status !== ClientSessionStatus.CONNECTED) {
this.logger.log1(`Cannot bind, not connected to ${this.url}`); this.logger.log1(`Cannot bind, client not connected to ${this.url}`);
reject(`Cannot bind, not connected to ${this.url}`); reject(`Cannot bind, client not connected to ${this.url}`);
return; return;
} }
this.logger.log1("Trying to bind to " + this.url) this.logger.log1("Trying to bind to " + this.url)
if (this.status !== ClientSessionStatus.CONNECTED) { if (this.status !== ClientSessionStatus.CONNECTED) {
this.logger.log1(`Cannot bind, not connected to ${this.url}`); this.logger.log1(`Cannot bind, client not connected to ${this.url}`);
return; return;
} }
if (!!!this.username || !!!this.password) { if (!!!this.username || !!!this.password) {
this.logger.log1(`Cannot bind, username or password not set`); this.logger.log1(`Cannot bind client, username or password not set`);
return; return;
} }
this.setStatus(ClientSessionStatus.BINDING); this.setStatus(ClientSessionStatus.BINDING);
this.logger.log1(`Binding to ${this.url} with username ${this.username} and password ${this.password}`); this.logger.log1(`Client binding to ${this.url} with username ${this.username} and password ${this.password}`);
this.session.bind_transceiver({ this.session.bind_transceiver({
system_id: this.username, system_id: this.username,
@@ -264,11 +265,11 @@ class ClientSession {
bindReply(pdu) { bindReply(pdu) {
if (pdu.command_status === 0) { if (pdu.command_status === 0) {
this.logger.log1(`Bound to ${this.url} with username ${this.username} and password ${this.password}`); this.logger.log1(`Client bound to ${this.url} with username ${this.username} and password ${this.password}`);
this.setStatus(ClientSessionStatus.BOUND); this.setStatus(ClientSessionStatus.BOUND);
this.bindingPromise.resolve(); this.bindingPromise.resolve();
} else { } else {
this.logger.log1(`Bind failed to ${this.url} with username ${this.username} and password ${this.password}`); this.logger.log1(`Client bind failed to ${this.url} with username ${this.username} and password ${this.password}`);
this.setStatus(ClientSessionStatus.CONNECTED); this.setStatus(ClientSessionStatus.CONNECTED);
this.bindingPromise.reject(); this.bindingPromise.reject();
} }
@@ -277,11 +278,11 @@ class ClientSession {
send(source, destination, message) { send(source, destination, message) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
if (!this.canSend()) { if (!this.canSend()) {
this.logger.log1(`Cannot send message, not bound to ${this.url} or busy`); this.logger.log1(`Client cannot send message, not bound to ${this.url} or busy`);
reject(`Cannot send message, not bound to ${this.url} or busy`); reject(`Client cannot send message, not bound to ${this.url} or busy`);
return; return;
} }
this.logger.log1(`Sending message from ${source} to ${destination} with message ${message}`); this.logger.log1(`Client sending message from ${source} to ${destination} with message ${message}`);
this.session.submit_sm({ this.session.submit_sm({
source_addr: source, source_addr: source,
destination_addr: destination, destination_addr: destination,
@@ -295,8 +296,8 @@ class ClientSession {
sendOnInterval(source, destination, message, interval, count) { sendOnInterval(source, destination, message, interval, count) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
if (!this.canSend() || this.busy) { if (!this.canSend() || this.busy) {
this.logger.log1(`Cannot send many message, not bound to ${this.url} or busy`); this.logger.log1(`Client cannot send many message, not bound to ${this.url} or busy`);
reject(`Cannot send many message, not bound to ${this.url} or busy`); reject(`Client cannot send many message, not bound to ${this.url} or busy`);
return; return;
} }
this.busy = true; this.busy = true;
@@ -338,8 +339,8 @@ class ClientSession {
close() { close() {
this.disconnectingPromise.promise = new Promise((resolve, reject) => { this.disconnectingPromise.promise = new Promise((resolve, reject) => {
if (this.status !== ClientSessionStatus.BOUND && this.status !== ClientSessionStatus.CONNECTED) { if (this.status !== ClientSessionStatus.BOUND && this.status !== ClientSessionStatus.CONNECTED) {
this.logger.log1(`Cannot close session, not bound to ${this.url}`); this.logger.log1(`Cannot close client, not bound to ${this.url}`);
reject(`Cannot close session, not bound to ${this.url}`); reject(`Cannot close client, not bound to ${this.url}`);
return; return;
} }
this.session.close(); this.session.close();
@@ -379,22 +380,22 @@ class ClientSessionManager {
createSession(url, username, password) { createSession(url, username, password) {
let urlB64 = btoa(url); let urlB64 = btoa(url);
if (this.sessions[urlB64]) { if (this.sessions[urlB64]) {
this.logger.log1(`Session to ${url} already exists`); this.logger.log1(`Client to ${url} already exists`);
return this.sessions[urlB64]; return this.sessions[urlB64];
} }
this.logger.log1(`Creating session to ${url} with username ${username} and password ${password}`); this.logger.log1(`Creating client to ${url} with username ${username} and password ${password}`);
let session = new ClientSession(this.sessionIdCounter++, url, username, password); let session = new ClientSession(this.sessionIdCounter++, url, username, password);
this.addSession(session); this.addSession(session);
return session; return session;
} }
addSession(session) { addSession(session) {
this.logger.log1(`Adding session with ID ${session.id}`); this.logger.log1(`Adding client with ID ${session.id}`);
this.sessions[btoa(session.url)] = session; this.sessions[btoa(session.url)] = session;
} }
deleteSession(session) { deleteSession(session) {
this.logger.log1(`Deleting session with ID ${session.id}`); this.logger.log1(`Deleting client with ID ${session.id}`);
if (session.status === ClientSessionStatus.BOUND || session.status === ClientSessionStatus.CONNECTED) { if (session.status === ClientSessionStatus.BOUND || session.status === ClientSessionStatus.CONNECTED) {
session.close(); session.close();
} }
@@ -414,7 +415,7 @@ class ClientSessionManager {
} }
cleanup() { cleanup() {
this.logger.log1(`Saving sessions to ${CLIENT_SESSIONS_FILE}...`); this.logger.log1(`Saving clients to ${CLIENT_SESSIONS_FILE}...`);
fs.writeFileSync(CLIENT_SESSIONS_FILE, JSON.stringify(this.serialize(), null, 4)); fs.writeFileSync(CLIENT_SESSIONS_FILE, JSON.stringify(this.serialize(), null, 4));
} }
@@ -422,12 +423,12 @@ class ClientSessionManager {
try { try {
let sessions = fs.readFileSync(CLIENT_SESSIONS_FILE); let sessions = fs.readFileSync(CLIENT_SESSIONS_FILE);
sessions = JSON.parse(sessions); sessions = JSON.parse(sessions);
this.logger.log1(`Loaded ${sessions.length} sessions from ${CLIENT_SESSIONS_FILE}...`); this.logger.log1(`Loaded ${sessions.length} clients from ${CLIENT_SESSIONS_FILE}...`);
sessions.forEach(session => { sessions.forEach(session => {
this.createSession(session.url, session.username, session.password); this.createSession(session.url, session.username, session.password);
}); });
} catch (e) { } catch (e) {
this.logger.log1(`Error loading sessions from ${CLIENT_SESSIONS_FILE}: ${e}`); this.logger.log1(`Error loading clients from ${CLIENT_SESSIONS_FILE}: ${e}`);
} }
} }
} }
@@ -481,7 +482,7 @@ class CenterSession {
}); });
this.server.listen(this.port); this.server.listen(this.port);
this.logger.log1(`Session created with port ${this.port}, username ${this.username}, password ${this.password} and ID ${this.id}`); this.logger.log1(`Center created with port ${this.port}, username ${this.username}, password ${this.password} and ID ${this.id}`);
this.status = CenterSessionStatus.WAITING_CONNECTION; this.status = CenterSessionStatus.WAITING_CONNECTION;
} }
@@ -512,11 +513,11 @@ class CenterSession {
error(error) { error(error) {
if (error.code === "ETIMEOUT") { if (error.code === "ETIMEOUT") {
this.logger.log1("Connection timed out to " + this.port); this.logger.log1("Center connection timed out to " + this.port);
} else if (error.code === "ECONNREFUSED") { } else if (error.code === "ECONNREFUSED") {
this.logger.log1("Connection refused to " + this.port); this.logger.log1("Center connection refused to " + this.port);
} else { } else {
this.logger.log1("Connection failed to " + this.port); this.logger.log1("Center connection failed to " + this.port);
} }
this.setStatus(CenterSessionStatus.CONNECTION_PENDING); this.setStatus(CenterSessionStatus.CONNECTION_PENDING);
} }
@@ -531,7 +532,7 @@ class CenterSession {
this.logger.log1(`Center got a bind_transciever on port ${this.port} with system_id ${pdu.system_id} and password ${pdu.password}`); this.logger.log1(`Center got a bind_transciever on port ${this.port} with system_id ${pdu.system_id} and password ${pdu.password}`);
session.pause(); session.pause();
if (pdu.system_id === this.username && pdu.password === this.password) { if (pdu.system_id === this.username && pdu.password === this.password) {
this.logger.log1(`Connection successful`); this.logger.log1(`Center session connection successful`);
session.send(pdu.response()); session.send(pdu.response());
session.resume(); session.resume();
session.on('pdu', this.sessionPdu.bind(this, session)); session.on('pdu', this.sessionPdu.bind(this, session));
@@ -544,7 +545,7 @@ class CenterSession {
} }
}); });
} else { } else {
this.logger.log1(`Connection failed, invalid credentials`); this.logger.log1(`Center session connection failed, invalid credentials`);
session.send(pdu.response({ session.send(pdu.response({
command_status: smpp.ESME_RBINDFAIL command_status: smpp.ESME_RBINDFAIL
})); }));
@@ -576,8 +577,8 @@ class CenterSession {
notify(source, destination, message) { notify(source, destination, message) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
if (!this.canSend()) { if (!this.canSend()) {
this.logger.log1(`Cannot send message, no client connected on ${this.port} or busy`); this.logger.log1(`Center cannot send message, no sessions active on ${this.port} or busy`);
reject(`Cannot send message, no client connected on ${this.port} or busy`); reject(`Center cannot send message, no sessions active on ${this.port} or busy`);
return; return;
} }
this.logger.log1(`Sending notify message from ${source} to ${destination} with message ${message}`); this.logger.log1(`Sending notify message from ${source} to ${destination} with message ${message}`);
@@ -594,8 +595,8 @@ class CenterSession {
notifyOnInterval(source, destination, message, interval, count) { notifyOnInterval(source, destination, message, interval, count) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
if (!this.canSend() || this.busy) { if (!this.canSend() || this.busy) {
this.logger.log1(`Cannot send many message, no clients connected to ${this.port} or busy`); this.logger.log1(`Center cannot send many message, no sessions active to ${this.port} or busy`);
reject(`Cannot send many message, no clients connected to ${this.port} or busy`); reject(`Center cannot send many message, no sessions active to ${this.port} or busy`);
return; return;
} }
this.busy = true; this.busy = true;
@@ -661,6 +662,7 @@ class CenterSession {
} }
closeSession(sessionId) { closeSession(sessionId) {
this.logger.log1(`Closing center session ${sessionId}`);
let session = this.sessions.find(session => session._id == sessionId); let session = this.sessions.find(session => session._id == sessionId);
if (!!session) { if (!!session) {
session.close(); session.close();
@@ -669,6 +671,7 @@ class CenterSession {
} }
deleteSession(sessionId) { deleteSession(sessionId) {
this.logger.log1(`Deleting center session ${sessionId}`);
let session = this.sessions.find(session => session._id == sessionId); let session = this.sessions.find(session => session._id == sessionId);
if (!!session) { if (!!session) {
session.close(); session.close();
@@ -681,6 +684,7 @@ class CenterSession {
} }
addSession(session) { addSession(session) {
this.logger.log1(`Adding center session ${session._id}`);
let sessionInfo = this.mapSession(session); let sessionInfo = this.mapSession(session);
this.eventEmitter.emit(CenterSession.SESSION_CHANGED_EVENT, sessionInfo); this.eventEmitter.emit(CenterSession.SESSION_CHANGED_EVENT, sessionInfo);
this.sessions.push(session); this.sessions.push(session);
@@ -689,8 +693,8 @@ class CenterSession {
close() { close() {
this.disconnectingPromise.promise = new Promise((resolve, reject) => { this.disconnectingPromise.promise = new Promise((resolve, reject) => {
if (this.status !== CenterSessionStatus.CONNECTED) { if (this.status !== CenterSessionStatus.CONNECTED) {
this.logger.log1(`Cannot close session, no clients bound to ${this.port}`); this.logger.log1(`Cannot close center, no sessions active ${this.port}`);
reject(`Cannot close session, no clients bound to ${this.port}`); reject(`Cannot close center, no sessions active ${this.port}`);
return; return;
} }
this.sessions.forEach(session => { this.sessions.forEach(session => {
@@ -744,12 +748,12 @@ class CenterSessionManager {
} }
addSession(server) { addSession(server) {
this.logger.log1(`Adding session with ID ${server.id}`); this.logger.log1(`Adding center with ID ${server.id}`);
this.servers[server.port] = server; this.servers[server.port] = server;
} }
deleteSession(server) { deleteSession(server) {
this.logger.log1(`Deleting server with ID ${server.id}`); this.logger.log1(`Deleting center with ID ${server.id}`);
if (server.status === CenterSessionStatus.CONNECTED) { if (server.status === CenterSessionStatus.CONNECTED) {
server.close(); server.close();
} }
@@ -769,7 +773,7 @@ class CenterSessionManager {
} }
cleanup() { cleanup() {
this.logger.log1(`Saving sessions to ${CENTER_SESSIONS_FILE}...`); this.logger.log1(`Saving centers to ${CENTER_SESSIONS_FILE}...`);
fs.writeFileSync(CENTER_SESSIONS_FILE, JSON.stringify(this.serialize(), null, 4)); fs.writeFileSync(CENTER_SESSIONS_FILE, JSON.stringify(this.serialize(), null, 4));
} }
@@ -777,7 +781,7 @@ class CenterSessionManager {
try { try {
let servers = fs.readFileSync(CENTER_SESSIONS_FILE); let servers = fs.readFileSync(CENTER_SESSIONS_FILE);
servers = JSON.parse(servers); servers = JSON.parse(servers);
this.logger.log1(`Loaded ${servers.length} sessions from ${CENTER_SESSIONS_FILE}...`); this.logger.log1(`Loaded ${servers.length} centers from ${CENTER_SESSIONS_FILE}...`);
servers.forEach(server => { servers.forEach(server => {
let createdServer = this.createSession(server.port, server.username, server.password); let createdServer = this.createSession(server.port, server.username, server.password);
if (!!server.mode) { if (!!server.mode) {
@@ -785,7 +789,7 @@ class CenterSessionManager {
} }
}); });
} catch (e) { } catch (e) {
this.logger.log1(`Error loading sessions from ${CLIENT_SESSIONS_FILE}: ${e}`); this.logger.log1(`Error loading centers from ${CLIENT_SESSIONS_FILE}: ${e}`);
} }
} }