Version 1.0 del totem en el sistema bascula autonoma

This commit is contained in:
2025-11-10 10:34:55 +01:00
parent 193f9d1812
commit f0ad04d4a3
40 changed files with 10416 additions and 1 deletions
@@ -0,0 +1,53 @@
/**
* Template Socket.IO Connection Middleware for uibuilder.
* UPDATED: 2022-04-01
*
* NOTES & WARNINGS:
* 1) This function is only called ONCE - when a new client connects. So any authentication/security processing is limited
* because you cannot use this to, for example, timeout/extend a session without further server processing of incoming messages.
* However, see the sioUse.js and sioMsgOut.js middlewares for per-msg handling.
* 2) Failing to either return or call `next()` will mean that your clients will never connect.
* 3) An error in this function will probably cause Node-RED to fail to start at all.
* 4) You have to restart Node-RED if you change this file.
* 5) To use for authentication/authorisation with Express and sio connection middleware, create a common node.js module.
*
* Allows custom processing for authentication, session management, connection validation, logging, rate limiting, etc.
*
* see also: uibRoot/.config/sioUse.js & sioMsgOut.js
* https://cheatsheetseries.owasp.org/cheatsheets/HTML5_Security_Cheat_Sheet.html#websocket-implementation-hints
*
* @param {*} socket Socket.IO socket object
* @param {function} next The callback to hand off to the next middleware
*/
function sioMw(socket, next) {
// Some SIO related info that might be useful in security checks
console.log('== [sioMiddleware.js] ====================')
console.log('New client connected to Namespace')
console.log('--socket.request.connection.remoteAddress--', socket.request.connection.remoteAddress)
console.log('--socket id--', socket.id)
// Added by uibuilder when Namespace is created by uibuilder node instance - Note also that socket.nsp.log can be used to output to the Node-RED log
console.log('--socket namespace metadata (server)--', {
name: socket.nsp.name,
url: socket.nsp.url,
nodeId: socket.nsp.nodeId,
useSecurity: socket.nsp.useSecurity,
})
//console.log('--socket handshake--', socket.handshake)
//console.log('--socket properties--', Object.keys(socket))
// Show the client id (set by uibuilder ExpressJS middleware)
console.log('--client id handshake.auth--', socket.handshake.auth.clientId)
console.log('--client id in custom header (polling only)--', socket.handshake.headers['x-clientid'])
console.log('==========================================\n ')
// Simplistic auth example
let auth = true
if (auth !== true) {
socket.nsp.log.error(`[uibuilder:sioMiddleware.js] - Authentication error, client disconnected - ID: ${socket.id}`)
return next (new Error(`[uibuilder:sioMiddleware.js] - Authentication error, client disconnected - ID: ${socket.id}` ))
}
return next()
} // Remember to end with a `next()` statement or nothing will work.
module.exports = sioMw