/var/www/myprog.com.ua/server/node/ws
NameSizeModeActions
hosts.js233770644editdlrm
system.js52150644editdlrm
users.js237040644editdlrm
ws_server.js19370644editdlrm
Edit: /var/www/myprog.com.ua/server/node/ws/users.js (23704B)
const Session = require('../objects/session'); const User = require('../objects/user'); const Core = require('../core'); const Client = require('../objects/client') const log = require('../logs/log'); const Place = require('../objects/place'); const Camera = require('../objects/camera'); const Scenario = require('../objects/scenario'); const Host = require('../objects/host'); // require('../helpers/error'); module.exports = (WsServer) => { WsServer.prototype.accept_user = function (socket) { let _self = this; socket.on(WHO.USER.PREFIX + 'join', (client_key) => _self.join_user(socket, client_key)); socket.on(WHO.USER.PREFIX + 'device_command', async (cmd) => { console.debug("WsServer::device_command()::", cmd); let data = JSON.parse(cmd); _self.core.sessions_manager.send_to_host(data.host_id, data.command, data.value); }); socket.on(WHO.USER.PREFIX + 'add_edit_host', async (data) => _self.add_edit_host(socket,data)); socket.on(WHO.USER.PREFIX + 'add_edit_scenario', async (data) => _self.add_edit_scenario(socket,data)); socket.on(WHO.USER.PREFIX + 'add_edit_place', async (data) => _self.add_edit_place(socket,data)); socket.on(WHO.USER.PREFIX + 'add_edit_camera', async (data) => _self.add_edit_camera(socket,data)); socket.on(WHO.USER.PREFIX + 'add_place_scenario', async (data) => _self.add_place_scenario(socket,data)); socket.on(WHO.USER.PREFIX + 'del_place_scenario', async (data) => _self.del_place_scenario(socket,data)); socket.on(WHO.USER.PREFIX + 'add_place_camera', async (data) => _self.add_place_camera(socket,data)); socket.on(WHO.USER.PREFIX + 'del_place_camera', async (data) => _self.del_place_camera(socket,data)); socket.on(WHO.USER.PREFIX + 'add_place_device', async (data) => _self.add_place_device(socket,data)); socket.on(WHO.USER.PREFIX + 'del_place_device', async (data) => _self.del_place_device(socket,data)); socket.on(WHO.USER.PREFIX + 'add_place_value', async (data) => _self.add_place_value(socket,data)); socket.on(WHO.USER.PREFIX + 'del_place_value', async (data) => _self.del_place_value(socket,data)); socket.on(WHO.USER.PREFIX + 'console_cmd', async (cmd) => { console.debug("WsServer::console_cmd()::", cmd); let body = ''; if(cmd=='help'||cmd=='?'){ body = 'Commands:
ping
show socks
show users
show rooms'; }else if(cmd=='ping'){ body = 'pong'; }else if(cmd=='all on'){ _self.core.sessions_manager.send_to_room(WHO.HOST.VALUE, "relay_on", "1"); _self.core.sessions_manager.send_to_room(WHO.HOST.VALUE, "relay_on", "2"); _self.core.sessions_manager.send_to_room(WHO.HOST.VALUE, "relay_on", "4"); body = 'Relay ALL ON'; }else if(cmd=='all off'){ _self.core.sessions_manager.send_to_room(WHO.HOST.VALUE, "relay_off", "1"); _self.core.sessions_manager.send_to_room(WHO.HOST.VALUE, "relay_off", "2"); _self.core.sessions_manager.send_to_room(WHO.HOST.VALUE, "relay_off", "4"); body = 'Relay ALL OFF'; }else if(cmd=='relay auto on'){ _self.core.sessions_manager.send_to_room(WHO.HOST.VALUE, "relay_auto", "on"); body = 'RELAY AUTO OFF ENABLE'; }else if(cmd=='relay auto off'){ _self.core.sessions_manager.send_to_room(WHO.HOST.VALUE, "relay_auto", "off"); body = 'RELAY AUTO OFF DISABLE'; }else if(cmd=='relay timeout 5'){ _self.core.sessions_manager.send_to_room(WHO.HOST.VALUE, "relay_timeout", "5"); body = 'RELAY AUTO OFF TIMEOUT 5 sec'; }else if(cmd=='relay timeout 1500'){ _self.core.sessions_manager.send_to_room(WHO.HOST.VALUE, "relay_timeout", "1500"); body = 'RELAY AUTO OFF TIMEOUT 25 min'; }else if(cmd=='send timer 10'){ _self.core.sessions_manager.send_to_room(WHO.HOST.VALUE, "send_timer", "10"); body = 'SEND TIMER 10 sec'; }else if(cmd=='send timer 60'){ _self.core.sessions_manager.send_to_room(WHO.HOST.VALUE, "send_timer", "60"); body = 'SEND TIMER 1 min'; }else if(cmd=='led red on'){ _self.core.sessions_manager.send_to_room(WHO.HOST.VALUE, "led_on", "red"); body = 'LED RED ON'; }else if(cmd=='led green on'){ _self.core.sessions_manager.send_to_room(WHO.HOST.VALUE, "led_on", "green"); body = 'LED GREEN ON'; }else if(cmd=='led blue on'){ _self.core.sessions_manager.send_to_room(WHO.HOST.VALUE, "led_on", "blue"); body = 'LED BLUE ON'; }else if(cmd=='led yellow on'){ _self.core.sessions_manager.send_to_room(WHO.HOST.VALUE, "led_on", "yellow"); body = 'LED YELLOW ON'; }else if(cmd=='led pink on'){ _self.core.sessions_manager.send_to_room(WHO.HOST.VALUE, "led_on", "pink"); body = 'LED PINK ON'; }else if(cmd=='led off'){ _self.core.sessions_manager.send_to_room(WHO.HOST.VALUE, "led_off", ""); body = 'LED OFF'; }else if(cmd=='1 on'){ _self.core.sessions_manager.send_to_room(WHO.HOST.VALUE, "relay_on", "1"); body = 'Relay 1 ON'; }else if(cmd=='1 off'){ _self.core.sessions_manager.send_to_room(WHO.HOST.VALUE, "relay_off", "1"); body = 'Relay 1 OFF'; }else if(cmd=='2 on'){ _self.core.sessions_manager.send_to_room(WHO.HOST.VALUE, "relay_on", "2"); body = 'Relay 2 ON'; }else if(cmd=='2 off'){ _self.core.sessions_manager.send_to_room(WHO.HOST.VALUE, "relay_off", "2"); body = 'Relay 2 OFF'; }else if(cmd=='3 on'){ _self.core.sessions_manager.send_to_room(WHO.HOST.VALUE, "relay_on", "3"); body = 'Relay 3 ON'; }else if(cmd=='3 off'){ _self.core.sessions_manager.send_to_room(WHO.HOST.VALUE, "relay_off", "3"); body = 'Relay 3 OFF'; }else if(cmd=='4 on'){ _self.core.sessions_manager.send_to_room(WHO.HOST.VALUE, "relay_on", "4"); body = 'Relay 4 ON'; }else if(cmd=='4 off'){ _self.core.sessions_manager.send_to_room(WHO.HOST.VALUE, "relay_off", "4"); body = 'Relay 4 OFF'; }else if(cmd=='gh'){ body = 'run get_hosts()'; _self.get_hosts(socket,2); }else if(cmd=='show socks'){ let socks = _self.core.sessions_manager.get_sockets(); let sessions = _self.core.sessions_manager.get_sessions(); body += "Socks " + Object.keys(socks).length + "
" for (var c in socks) { body += "[" + c + "] client_key=" + socks[c] + " type=" + sessions[c].type + " ver=" + sessions[c].ver + "\n" //body += "[" + c + "] client_key=" + socks[c] + " type=" + c.type +"\n" } }else if(cmd=='show users'){ body = 'Users:
'; let sessions = _self.core.sessions_manager.get_sessions(); for (var i in sessions) { switch (sessions[i].type) { case "user": body += "[" + i + "] " + sessions[i].type + ": " + sessions[i].user.name + " id=" + sessions[i].user.id + " key=" + sessions[i].key + "
" break case "host": body += "[" + i + "] " + sessions[i].type + ": " + sessions[i].host.name + " id=" + sessions[i].host.id + " key=" + sessions[i].key + "
" break case "system": body += "[" + i + "]" + sessions[i].type + ": " + " id=" + sessions[i].user.id + " key=" + sessions[i].key + "
" break default: body += "[" + i + "] " + sessions[i].user.name + " id=" + sessions[i].user.id + " key=" + sessions[i].key + " type=" + sessions[i].type + "
" } } }else if(cmd=='show rooms'){ body = 'Rooms:
'; for (var c in _self.io.sockets.adapter.rooms) { body += "[" + c + "] " + _self.io.sockets.adapter.rooms[c].length + " users
" } }else{ body = 'Нет такой комманды'; } _self.core.log(body); }); socket.on(WHO.USER.PREFIX + 'get_hosts', async (user_id) => { _self.get_hosts(socket,user_id); }); socket.on(WHO.USER.PREFIX + 'get_values_history', async (value_id,period) => { _self.get_values_history(socket,value_id,period); }); } WsServer.prototype.join_user = function (socket, token) { console.debug("WsServer::join_user()::token = ", token); var _self = this; let session = new Session(token, socket); _self.core.sessions_manager.add_socket(socket.client.id, session.key); _self.core.service_users.get_client_by_token(session.key).then((user) => { if (user instanceof Client) { if (user.get_activated()) { session.set_user(user); _self.core.sessions_manager.add_user(session); _self.core.sessions_manager.send_to_user(session.user.id, WHO.USER.PREFIX + "join", "Authorization success"); _self.core.sessions_manager.add_to_room(WHO.USER.VALUE, session); _self.core.sessions_manager.send_to_room(WHO.USER.VALUE, WHO.USER.PREFIX + 'joined', session.user.get_name()); _self.core.sessions_manager.send_to_room(WHO.USER.VALUE, WHO.USER.PREFIX + 'info', session.user.get_name() + " connected to room: " + WHO.USER.VALUE); _self.core.log('--- CONNECTED ---'); if (user.is_admin()) { _self.core.sessions_manager.add_to_room(WHO.ADMIN.VALUE, session); _self.core.log('Привет admin '+session.user.get_name()); } // Load data _self.core.service_places.get_user_places(session.user.id).then((j) => { session.socket.emit(WHO.USER.PREFIX + "load_places", JSON.stringify(j)); }); _self.core.service_scenario.get_user_scenario(session.user.id).then((j) => { session.socket.emit(WHO.USER.PREFIX + "load_scenario", JSON.stringify(j)); }); _self.core.service_places.get_user_places_scenario(session.user.id).then((j) => { session.socket.emit(WHO.USER.PREFIX + "load_places_scenario", JSON.stringify(j)); }); _self.core.service_places.get_user_places_cameras(session.user.id).then((j) => { session.socket.emit(WHO.USER.PREFIX + "load_places_cameras", JSON.stringify(j)); }); _self.core.service_places.get_user_places_devices(session.user.id).then((j) => { session.socket.emit(WHO.USER.PREFIX + "load_places_devices", JSON.stringify(j)); }); _self.core.service_places.get_user_places_values(session.user.id).then((j) => { session.socket.emit(WHO.USER.PREFIX + "load_places_values", JSON.stringify(j)); }); _self.core.service_events.get_user_events(session.user.id).then((j) => { session.socket.emit(WHO.USER.PREFIX + "load_events", JSON.stringify(j)); // console.log(j); }); _self.core.service_hosts.get_user_hosts(session.user.id).then((j) => { session.socket.emit(WHO.USER.PREFIX + "load_hosts", JSON.stringify(j)); }); //_self.core.service_events.get_user_events_history(session.user.id).then((j) => { //session.socket.emit(WHO.USER.PREFIX + "load_events_history", JSON.stringify(j)); //console.log(j); //}); _self.core.service_cameras.get_user_cameras(session.user.id).then((j) => { session.socket.emit(WHO.USER.PREFIX + "load_cameras", JSON.stringify(j)); }); _self.core.service_devices.get_user_devices(session.user.id).then((j) => { session.socket.emit(WHO.USER.PREFIX + "load_devices", JSON.stringify(j)); }); _self.core.service_values.get_user_values(session.user.id).then((j) => { session.socket.emit(WHO.USER.PREFIX + "load_values", JSON.stringify(j)); }); //_self.core.service_values.get_user_values_history(session.user.id).then((j) => { //session.socket.emit(WHO.USER.PREFIX + "load_values_history", JSON.stringify(j)); //console.log(j); //}); _self.core.service_commands.get_user_commands(session.user.id).then((j) => { session.socket.emit(WHO.USER.PREFIX + "load_commands", JSON.stringify(j)); }); console.debug("WsServer::join_user()::connected: " + session.key); } else { session.socket.emit(WHO.USER.PREFIX + "need_activation", "Authorization error"); console.debug("WsServer::join_user()::need activation: " + session.key); } } else { session.socket.emit(WHO.USER.PREFIX + "need_login", "Authorization error"); console.debug("WsServer::join_user()::need login: " + session.key); } }); } WsServer.prototype.get_hosts = function (socket, user_id) { var _self = this; console.debug("WsServer::get_hosts()::user_id = ", user_id); let hosts = _self.core.service_devices.get_hosts(user_id); if (hosts) { //let json = car.get_json() socket.emit(WHO.USER.PREFIX + "load_hosts", hosts); //_self.core.sessions_manager.send_to_all_operators(WHO.USER.PREFIX + 'car_status', json); }else{ socket.emit(WHO.USER.PREFIX + "error", "Load hosts error"); } } WsServer.prototype.get_values_history = function (socket, value_id, period) { var _self = this; console.debug("WsServer::get_values_history()::value_id = ", value_id); _self.core.service_values.get_values_history(value_id, period).then((j) => { console.debug("answer values count: "+j.length); //console.debug(j); socket.emit(WHO.USER.PREFIX + "load_values_history", JSON.stringify(j)); }); } WsServer.prototype.add_edit_host = function (socket, json) { var _self = this; let data = JSON.parse(json); console.debug("WsServer::add_edit_host()::", json); host = new Host(); data.id > 0 ? host.id = data.id : host.id = 0; host.name = data.name; data.deleted == null ? host.deleted = 0 : host.deleted = data.deleted; _self.core.service_hosts.update_host(host).then((j) => { if(j == null){ socket.emit(WHO.USER.PREFIX + "error", JSON.stringify({"error":"1","message":"add_edit_host error"})); }else{ socket.emit(WHO.USER.PREFIX + "add_edit_host", JSON.stringify(j)); } }); } WsServer.prototype.add_edit_scenario = function (socket, json) { var _self = this; let data = JSON.parse(json); let session = _self.core.sessions_manager.get_session_by_socket(socket.id); console.debug("WsServer::add_edit_scenario()::", json); item = new Scenario(); data.id > 0 ? item.id = data.id : item.id = 0; item.place_id = data.place_id; item.name = data.name; item.type = data.type; item.json = JSON.stringify(data.json); data.deleted == null ? item.deleted = 0 : item.deleted = data.deleted; data.active == null ? item.active = 0 : item.active = data.active; item.user_id = session.user.id; _self.core.service_scenario.update_scenario(item).then((j) => { if(j == null){ socket.emit(WHO.USER.PREFIX + "error", JSON.stringify({"error":"1","message":"add_edit_scenario error"})); }else{ socket.emit(WHO.USER.PREFIX + "add_edit_scenario", JSON.stringify(j)); } }); _self.core.load_scenario(); } WsServer.prototype.add_edit_place = function (socket, json) { var _self = this; let data = JSON.parse(json); var isNew = true; let session = _self.core.sessions_manager.get_session_by_socket(socket.id); console.debug("WsServer::add_edit_place()::", json); place = new Place(); if(data.id > 0){ place.id = data.id; isNew = false; }else{ place.id = 0; } data.deleted == null ? place.deleted = 0 : place.deleted = data.deleted; place.name = data.name; place.position = data.position; _self.core.service_places.update_place(place).then((j) => { if(j == null){ socket.emit(WHO.USER.PREFIX + "error", JSON.stringify({"error":"1","message":"add_edit_place error"})); }else{ socket.emit(WHO.USER.PREFIX + "add_edit_place", JSON.stringify(j)); _self.core.service_places.add_user_place(session.user.id,place.id).then((j) => { if(j == null){ socket.emit(WHO.USER.PREFIX + "error", JSON.stringify({"error":"1","message":"add_user_place error"})); }else{ socket.emit(WHO.USER.PREFIX + "add_user_place", JSON.stringify(j)); } }); } }); } WsServer.prototype.add_edit_camera = function (socket, json) { var _self = this; let data = JSON.parse(json); var isNew = true; let session = _self.core.sessions_manager.get_session_by_socket(socket.id); console.debug("WsServer::add_edit_camera()::", json); camera = new Camera(); if(data.id > 0){ place.id = data.id; isNew = false; }else{ camera.id = 0; } camera.name = data.name; camera.host = data.host; camera.port = data.port; camera.login = data.login; camera.pass = data.pass; camera.url = data.url; data.deleted == null ? camera.deleted = 0 : camera.deleted = data.deleted; _self.core.service_cameras.update_camera(camera).then((j) => { if(j == null){ socket.emit(WHO.USER.PREFIX + "error", JSON.stringify({"error":"1","message":"add_edit_camera error"})); }else{ socket.emit(WHO.USER.PREFIX + "add_edit_camera", JSON.stringify(j)); _self.core.service_cameras.add_user_camera(session.user.id, j.id); } }); } // Select place device WsServer.prototype.add_place_scenario = function (socket, json) { var _self = this; let data = JSON.parse(json); console.debug("WsServer::add_place_scenario()::", json); _self.core.service_places.add_place_scenario(data.place_id,data.id).then((j) => { socket.emit(WHO.USER.PREFIX + "add_place_scenario", JSON.stringify(j)); }); } WsServer.prototype.del_place_scenario = function (socket, json) { var _self = this; let data = JSON.parse(json); console.debug("WsServer::del_place_scenario()::", json); _self.core.service_places.del_place_scenario(data.place_id,data.id).then((j) => { socket.emit(WHO.USER.PREFIX + "del_place_scenario", JSON.stringify(j)); }); } WsServer.prototype.add_place_camera = function (socket, json) { var _self = this; let data = JSON.parse(json); console.debug("WsServer::add_place_camera()::", json); _self.core.service_places.add_place_camera(data.place_id,data.id).then((j) => { socket.emit(WHO.USER.PREFIX + "add_place_camera", JSON.stringify(j)); }); } WsServer.prototype.del_place_camera = function (socket, json) { var _self = this; let data = JSON.parse(json); console.debug("WsServer::del_place_camera()::", json); _self.core.service_places.del_place_camera(data.place_id,data.id).then((j) => { socket.emit(WHO.USER.PREFIX + "del_place_camera", JSON.stringify(j)); }); } WsServer.prototype.add_place_device = function (socket, json) { var _self = this; let data = JSON.parse(json); console.debug("WsServer::add_place_device()::", json); _self.core.service_places.add_place_device(data.place_id,data.id).then((j) => { socket.emit(WHO.USER.PREFIX + "add_place_device", JSON.stringify(j)); }); } WsServer.prototype.del_place_device = function (socket, json) { var _self = this; let data = JSON.parse(json); console.debug("WsServer::del_place_device()::", json); _self.core.service_places.del_place_device(data.place_id,data.id).then((j) => { socket.emit(WHO.USER.PREFIX + "del_place_device", JSON.stringify(j)); }); } WsServer.prototype.add_place_value = function (socket, json) { var _self = this; let data = JSON.parse(json); console.debug("WsServer::add_place_value()::", json); _self.core.service_places.add_place_value(data.place_id,data.id).then((j) => { socket.emit(WHO.USER.PREFIX + "add_place_value", JSON.stringify(j)); }); } WsServer.prototype.del_place_value = function (socket, json) { var _self = this; let data = JSON.parse(json); console.debug("WsServer::del_place_value()::", json); _self.core.service_places.del_place_value(data.place_id,data.id).then((j) => { socket.emit(WHO.USER.PREFIX + "del_place_value", JSON.stringify(j)); }); } }