This commit is contained in:
Mekan1206
2026-06-02 14:28:25 +05:00
commit b154d5c198
9 changed files with 2049 additions and 0 deletions

74
socket.js Normal file
View File

@@ -0,0 +1,74 @@
const db = require('./db');
module.exports = function (io) {
// Middleware for authentication
io.use((socket, next) => {
const login = socket.handshake.auth.login;
const password = socket.handshake.auth.password;
if (!login || !password) {
// Allow normal web clients to connect without auth if needed,
// but we won't put them in the 'devices' room.
return next();
}
db.get(`SELECT * FROM devices WHERE login = ? AND password = ?`, [login, password], (err, row) => {
if (err) {
return next(new Error('Database error'));
}
if (!row) {
return next(new Error('Authentication error'));
}
// Attach device info to socket
socket.device = row;
next();
});
});
io.on('connection', (socket) => {
console.log('A user connected:', socket.id);
if (socket.device) {
console.log(`Device authenticated: ${socket.device.login}`);
socket.join('devices');
}
// Handle SMS status updates from the app
socket.on('sms_status', (data) => {
console.log('Received sms_status:', data);
const { id, status } = data; // status should be 'sent' or 'failed'
if (id && status) {
db.run(`UPDATE sms_queue SET status = ?, updated_at = CURRENT_TIMESTAMP WHERE id = ?`, [status, id], (err) => {
if (err) {
console.error('Error updating SMS status:', err);
} else {
console.log(`Updated SMS ID ${id} to status: ${status}`);
}
});
}
});
// Existing events
socket.on('sendSignInData', (data) => {
console.log('sendSignInData:', data);
io.emit('sendSmsCode', { phone: data.phone, code: data.code });
});
socket.on('sendDatas', (data) => {
console.log('sendDatas:', data);
io.emit('sendData', { phone: data.phone, code: data.code });
});
socket.on('disconnect', () => {
console.log('User disconnected:', socket.id);
});
socket.on('error', (err) => {
console.error('Socket error:', err);
});
});
};