diff --git a/Properties/config.properties b/Properties/config.properties index 3e48dfd..489f2ce 100644 --- a/Properties/config.properties +++ b/Properties/config.properties @@ -4,4 +4,6 @@ WebListenPort = 8080 SipServer=192.168.10.2 SipPort=5060 SipUsername=101 -SipPassword=password101 \ No newline at end of file +SipPassword=password101 +AudioInputDevice=Default +AudioOutputDevice=Default diff --git a/WebContentt/public/assets/js/app.js b/WebContentt/public/assets/js/app.js index 2bb0c80..5841b73 100644 --- a/WebContentt/public/assets/js/app.js +++ b/WebContentt/public/assets/js/app.js @@ -1,232 +1,170 @@ let socket; -let index_setinterval; -/** - * Executed when document is ready - */ -$(document).ready(function(){ - socket = io(":9092/socketio"); - socket.on("connect", () => {console.log("Connected to server")}); - socket.on("disconnect", (reason) => {console.log("Disconnected from server because of " + reason)}); -}); -/** - * Executed when index page is loaded - */ function indexload(){ console.log("Index loaded"); - index_setinterval = setInterval(()=>{ - if (socket.connected){ - $("#sipStatus").css("color", "green"); - $("#cpuStatus").css("color", "green"); - $("#ramStatus").css("color", "green"); - $("#storageStatus").css("color", "green"); - $("#networkStatus").css("color", "green"); - $("#dialButton").prop("disabled", false); - $("#hangupButton").prop("disabled", false); - $("#dialNumber").prop("disabled",false); - } else { - $("#sipStatus").text("Not connected to server").css("color", "red"); - $("#cpuStatus").text("Not connected to server").css("color", "red"); - $("#ramStatus").text("Not connected to server").css("color", "red"); - $("#storageStatus").text("Not connected to server").css("color", "red"); - $("#networkStatus").text("Not connected to server").css("color", "red"); - $("#dialButton").prop("disabled", true); - $("#hangupButton").prop("disabled", true); - $("#dialNumber").prop("disabled", true); + socket = io.connect(':9092/socketio'); + + let intervalhandle; + socket.on('connect', function() { + console.log("Connected, id: " + socket.id); + intervalhandle = setInterval(function(){ + socket.emit('command', requestdata('getCpuInfo',''), (response)=>{ + let data = isSuccess(response); + if (data) { + let cpuUsage = JSON.parse(data.cpuUsage); + $('#cpuStatus').text('Temp: ' + data.cpuTemperature + ' °C, Usage: ' + cpuUsage.cpu + '%'); + } + }); + socket.emit('command', requestdata('getRamInfo','') , (response)=>{ + let data = isSuccess(response); + if (data) { + $('#ramStatus').text('Total: ' + data.totalKB + ' , Free: ' + data.availableKB + ' , Usage: ' + data.usedKB); + } + }); + socket.emit('command', requestdata('getSipStatus',''), (response)=>{ + let data = isSuccess(response); + if (data) { + $('#sipStatus').text(data); + } + }); + socket.emit('command', requestdata('getNetworkInfo',''), (response)=>{ + let data = isSuccess(response); + if (data) { + let txmap = JSON.parse(data.txmap); + let rxmap = JSON.parse(data.rxmap); + $('#networkStatus').text('TX: '+txmap.eth0+', RX: '+rxmap.eth0); + } + }); + socket.emit('command', requestdata('getDiskInfo',''), (response)=>{ + let data = isSuccess(response); + if (data) { + $('#storageStatus').text('Total: ' + data.total + ' , Free: ' + data.free); + } + }); + }, 5000); + }); + socket.on('disconnect', function() { + console.log("Disconnected"); + clearInterval(intervalhandle); + }); + + +} + +/** + * Create Socketio RequestData + * @param {string} request + * @param {string }data + * @returns JsonObject + */ +function requestdata(request, data){ + return {request: request, data: data}; +} + +/** + * Check if response is success + * @param {Object} value response data to check + * @return {null} if failed, Object if success + */ +function isSuccess(value){ + if (value){ + if (value.hasOwnProperty('response') && value.hasOwnProperty('data')){ + if (value.response && value.response.length>0){ + if (value.response==='success'){ + let len = value.data.length; + if (len>0){ + if (value.data[0]==='{'){ + if (value.data[len-1]==='}'){ + return JSON.parse(value.data); + } + } + } + return value.data; + } + } } - }, 2000); + + } + return null; } -/** - * Executed when index page is unloaded - */ -function indexunload(){ - console.log("Index unloaded"); - clearInterval(index_setinterval); +function dialClick(){ + console.log("Dial clicked"); + let number = $('#dialNumber').val(); + if (socket && socket.connected) socket.emit('command', requestdata('dial',number), (response)=>{ + console.log("Dial response: "+response); + }); +} + +function hangupClick(){ + console.log("Hangup clicked"); + if (socket && socket.connected) socket.emit('command', requestdata('hangup',''), (response)=>{ + console.log("Hangup response: "+response); + }); } -/** - * Executed when setting page is loaded - */ function settingload(){ console.log("Setting loaded"); - if (socket.connected){ - $("#btnSaveLogin") - .prop("disabled", false) - .on("click", () =>{ - let username = $("#webUsername").text(); - let password = $("#webPassword").text(); - if (isValidString(username) && isValidString(password)){ - setLogin(username, password); - } else { - alert("Please enter valid username and password"); - } - }); - $("#btnSaveSIP") - .prop("disabled", false) - .on("click", () =>{ - let server = $("#sipServer").text(); - let port = $("#sipPort").text(); - let username = $("#sipUsername").text(); - let password = $("#sipPassword").text(); - if (isValidString(server) && isValidPort(port) && isValidString(username) && isValidString(password)){ - setSipSetting(server, port, username, password); - } else { - alert("Please enter valid server, port, username and password"); - } - }); - getLogin(); - getSipSetting(); - } else { - $("#webUsername").text("Not connected to server").css("color", "red"); - $("#webPassword").text("Not connected to server").css("color", "red"); - $("#sipServer").text("Not connected to server").css("color", "red"); - $("#sipPort").text("Not connected to server").css("color", "red"); - $("#sipUsername").text("Not connected to server").css("color", "red"); - $("#sipPassword").text("Not connected to server").css("color", "red"); - $("#btnSaveLogin").prop("disabled", true); - $("#btnSaveSIP").prop("disabled", true); - } - - /** - * Get LoginUsername and LoginPassword data from server - */ - function getLogin(){ - socket.emit( - "command", - {request: "getLogin", data:""}, - (reply)=>{ - if (reply.response==="success"){ - /** - * @type {Object} - * @property {string} Username - * @property {string} Password - */ - let data = JSON.parse(reply.data); - $("#webUsername").text(data.Username).css("color", "black"); - $("#webPassword").text(data.Password).css("color", "black"); - } else { - $("#webUsername").text("Error").css("color", "red"); - $("#webPassword").text("Error").css("color", "red"); - } - } - ); - } - - /** - * Set LoginUsername and LoginPassword data to server - * - * @param {string} username Login Username - * @param {string} password Login Password - */ - function setLogin(username, password){ - socket.emit( - "command", - {request: "setLogin", data:JSON.stringify({Username:username, Password:password})}, - (reply)=>{ - if (reply.response==="success"){ - alert("Login saved successfully"); - } else { - alert("Failed to save login"); - } - }); - } - - /** - * Get SIP Setting data from server - */ - function getSipSetting(){ - socket.emit( - "command", - {request: "getSipSetting", data:""}, - (reply)=>{ - if (reply.response==="success"){ - /** - * @type {Object} - * @property {string} Server - * @property {number} Port - * @property {string} Username - * @property {string} Password - */ - let data = JSON.parse(reply.data); - $("#sipServer").text(data.Server).css("color", "black"); - $("#sipPort").text(data.Port).css("color", "black"); - $("#sipUsername").text(data.Username).css("color", "black"); - $("#sipPassword").text(data.Password).css("color", "black"); - } else { - $("#sipServer").text("Error").css("color", "red"); - $("#sipPort").text("Error").css("color", "red"); - $("#sipUsername").text("Error").css("color", "red"); - $("#sipPassword").text("Error").css("color", "red"); - } - } - ); - } - - /** - * Set SIP Setting data to server - * @param {string} server - * @param {number} port - * @param {string} username - * @param {string} password - */ - function setSipSetting(server, port, username, password){ - socket.emit( - "command", - {request: "setSipSetting", data:JSON.stringify({Server:server, Port:port, Username:username, Password:password})}, - (reply)=>{ - if (reply.response==="success"){ - alert("SIP setting saved successfully"); - } else { - alert("Failed to save SIP setting"); - } - } - ) + if (socket && socket.connected) { + socket.disconnect(); } + fetch('/setting', {method: 'GET'}).then((response)=>{ + response.json().then((data)=>{ + //console.log(JSON.stringify(data)); + $('#webUsername').val(data.loginSetting.Username); + $('#webPassword').val(data.loginSetting.Password); + $('#sipServer').val(data.sipSetting.Server); + $('#sipPort').val(data.sipSetting.Port); + $('#sipUsername').val(data.sipSetting.Username); + $('#sipPassword').val(data.sipSetting.Password); + }); + }); } -/** - * Executed when setting page unloaded - */ -function settingunload(){ - console.log("Setting unloaded"); +function sendLoginData(){ + console.log("Send login data"); + let loginData = { + Username: $('#webUsername').val(), + Password: $('#webPassword').val() + }; + fetch('/logindata', { + method: 'POST', + headers: { + 'Content-Type': 'application/json' + }, + body: JSON.stringify(loginData) + }).then((response)=>{ + response.text().then((msg)=>{ + alert(msg); + }); + }); +} + +function sendSipData(){ + console.log("Send SIP data"); + let sipData = { + Server: $('#sipServer').val(), + Port: $('#sipPort').val(), + Username: $('#sipUsername').val(), + Password: $('#sipPassword').val() + }; + fetch('/sipdata', { + method: 'POST', + headers: { + 'Content-Type': 'application/json' + }, + body: JSON.stringify(sipData) + }).then((response)=>{ + response.text().then((msg)=>{ + alert(msg); + }); + }); } -/** - * Executed when login page is loaded - */ function loginload(){ console.log("Login loaded"); -} - -/** - * Executed when login page is unloaded - */ -function loginunload(){ - console.log("Login unloaded"); -} - -/** - * Check if the string is valid - * @param {string} str String to check - * @return {boolean} True if the string is not empty - */ -function isValidString(str){ - return typeof str === "string" && str.trim().length > 0; -} - -/** - * Check if the port is valid - * @param str {string|number} Port to check - * @return {boolean} True if the port is between 0 and 65535 - */ -function isValidPort(str){ - if (typeof str === "number"){ - return str > 0 && str <= 65535; - } else if (typeof str === "string"){ - let port = parseInt(str); - return port > 0 && port <= 65535; + if (socket && socket.connected) { + socket.disconnect(); } - return false; } \ No newline at end of file diff --git a/WebContentt/public/index.html b/WebContentt/public/index.html index 54be7cd..b8651eb 100644 --- a/WebContentt/public/index.html +++ b/WebContentt/public/index.html @@ -17,7 +17,7 @@ -
+