From 4d52d9c6eb6b8eca7b607ff6ace2b5afbab646ed Mon Sep 17 00:00:00 2001 From: ralphm2004 Date: Fri, 17 Apr 2015 23:29:23 +0200 Subject: [PATCH 1/7] seconds for recordaudio --- odm/index.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/odm/index.php b/odm/index.php index ece93b1..fcf6667 100644 --- a/odm/index.php +++ b/odm/index.php @@ -79,7 +79,7 @@
Take front video (Low res)
Take rear video (High res)
Take front video (High res)
-
Record audio
+
Record audio
Start Ring
Stop Ring
Receive SMS
From 43fb5b82fb2655ed8af5bcd09bc6e2cfb02fbf00 Mon Sep 17 00:00:00 2001 From: ralphm2004 Date: Fri, 17 Apr 2015 23:30:34 +0200 Subject: [PATCH 2/7] sendRecordAudio --- odm/js/scripts.js | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/odm/js/scripts.js b/odm/js/scripts.js index e148cae..07ce368 100644 --- a/odm/js/scripts.js +++ b/odm/js/scripts.js @@ -356,3 +356,10 @@ function cancelWait() { toggleWait(); } + function sendRecordAudio(regId) { + var seconds = parseInt(prompt("How many seconds", "60")); + if (seconds && seconds > 0) { + sendPushNotification(regId, "Command:Audio:"+seconds); + waitingForResponse(); + } + } From 3c82e29fc7d27b557bed1fd4142950f6efbf4148 Mon Sep 17 00:00:00 2001 From: ralphm2004 Date: Sun, 19 Apr 2015 21:43:59 +0200 Subject: [PATCH 3/7] change visibility to display --- odm/css/styles.css | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/odm/css/styles.css b/odm/css/styles.css index 770c009..f34243a 100644 --- a/odm/css/styles.css +++ b/odm/css/styles.css @@ -174,7 +174,7 @@ min-width: 248px; position: absolute; z-index: 1; - visibility: hidden; + display: none; } .device-summary:hover, .selected-tab { @@ -212,7 +212,7 @@ float: left; } #button { - visibility: hidden; + display: none; min-width: 0; padding: 0; background-image: url('../images/send-cmd.png'); @@ -272,7 +272,7 @@ min-width: 248px; position: absolute; z-index: 1; - visibility: hidden; + display: none; top: 60px; left: 350px; } @@ -317,7 +317,7 @@ min-width: 220px; position: absolute; z-index: 1; - visibility: hidden; + display: none; top: 60px; left: 350px; } @@ -336,7 +336,7 @@ min-width: 200px; position: absolute; z-index: 1; - visibility: hidden; + display: none; top: 60px; left: 350px; } @@ -359,7 +359,7 @@ -webkit-box-shadow: 0 2px 6px rgba(0,0,0,0.3),0 -3px 8px rgba(0,0,0,0.2); box-shadow: 0 2px 6px rgba(0,0,0,0.3),0 -3px 8px rgba(0,0,0,0.2); background-color: #fff; - visibility: hidden; + display: none; top: 50px; left: 100px; z-index: 3; From 153d646881bcb5f784b437d6d89ac54bdc3941fa Mon Sep 17 00:00:00 2001 From: ralphm2004 Date: Sun, 19 Apr 2015 21:51:19 +0200 Subject: [PATCH 4/7] change getElementByID to jQuery --- odm/js/scripts.js | 148 +++++++++++++++++++--------------------------- 1 file changed, 62 insertions(+), 86 deletions(-) diff --git a/odm/js/scripts.js b/odm/js/scripts.js index 07ce368..3aefb18 100644 --- a/odm/js/scripts.js +++ b/odm/js/scripts.js @@ -4,7 +4,7 @@ function deleteDevice(id) { if (confirm("This will completely remove the device. Are you sure?")) { - document.getElementById('device-dropdown').style.visibility = 'hidden'; + $('#device-dropdown').hide(); window.location.href = "delete.php?id="+id; } } @@ -74,51 +74,37 @@ if (message == "Command:GetLocation" || message == "Command:GetLocationGPS" || message == "Command:FrontPhoto" || message == "Command:RearPhoto" || message == "Command:FrontPhotoMAX" || message == "Command:RearPhotoMAX" || message == "Command:FrontVideo:15" || message == "Command:RearVideo:15" || message == "Command:FrontVideoMAX:15" || message == "Command:RearVideoMAX:15" || message == "Command:Audio:15") { waitingForResponse(); } else { - document.getElementById('command-sent-dropdown').style.visibility = 'visible'; + $('#command-sent-dropdown').show(); setTimeout( function () { - document.getElementById('command-sent-dropdown').style.visibility = 'hidden'; + $('#command-sent-dropdown').hide(); }, 2000 // milliseconds delay ); } } - devvis = false; - function toggleDevices() { - if (devvis) { - document.getElementById('device-dropdown').style.visibility = 'hidden'; - devvis = false; - } else { - document.getElementById('device-dropdown').style.visibility = 'visible'; - devvis = true; - } - } + function toggleDevices() { + $('#device-dropdown').toggle(); + } - function selectDevice(id) { - document.getElementById('device-dropdown').style.visibility = 'hidden'; - window.location.href = "?id="+id; - } + function selectDevice(id) { + $('#device-dropdown').hide(); + window.location.href = "?id="+id; + } - var cmdvis = false; - function toggleCommands() { - if (cmdvis) { - document.getElementById('command-dropdown').style.visibility = 'hidden'; - cmdvis = false; - } else { - document.getElementById('command-dropdown').style.visibility = 'visible'; - cmdvis = true; - } - } + function toggleCommands() { + $('#command-dropdown').toggle(); + } - function showMap() { - var h = $(window).height(); - var w = $(window).width(); - var maphtml = ''; - document.getElementById("map_layer").innerHTML = maphtml; - if (typeof(regId) !== 'undefined') { - document.getElementById("curlocation-container").innerHTML = curlocation; - document.getElementById("curlocation_mapped-container").innerHTML = curlocation_mapped; - } - } + function showMap() { + var h = $(window).height(); + var w = $(window).width(); + var maphtml = ''; + $('#map_layer').html(maphtml); + if (typeof(regId) !== 'undefined') { + $('#curlocation-container').html(curlocation); + $('#curlocation_mapped-container').html(curlocation_mapped); + } + } function daysBetween(first, second) { // Copy date parts of the timestamps, discarding the time parts. @@ -152,7 +138,7 @@ if (typeof(regId) !== 'undefined') { var url = 'messages.php?n=30®Id=' + regId; $.get(url, gotMessages); - document.getElementById("button").style.visibility = 'visible'; + $('#button').show(); } else { showMap(); } @@ -232,30 +218,30 @@ buildMap(i); } } - if (log == "") { - log = "No messages received."; - showMap(); - } else if (messages[0].message.substring(0, 4) == "img:" && waitvis) { - // The first message is an image, so display it - showImg(0); - } else if (messages[0].message.substring(0, 6) == "shell:" && waitvis) { - // The first message is an image, so display it - showShell(0); - } else if (messages[0].message.substring(0, 5) == "file:" && waitvis) { - // The first message is a file, so display it - showFile(0); - } else if (messages[0].message.substring(0, 4) == "vid:" && waitvis) { - // The first message is a video, so display it - showFile(0); - } else if (messages[0].message.substring(0, 4) == "aud:" && waitvis) { - // The first message is audio, so display it - showFile(0); - } else { - showMap(); - } - toggleWaitOff(); - document.getElementById("log-contents").innerHTML = log; - } + if (log == "") { + log = "No messages received."; + showMap(); + } else if (messages[0].message.substring(0, 4) == "img:" && messages[0].data != 0 && $('#command-wait-dropdown').is(':visible')) { + // The first message is an image, so display it + showImg(0); + } else if (messages[0].message.substring(0, 6) == "shell:" && messages[0].data != 0 && $('#command-wait-dropdown').is(':visible')) { + // The first message is an image, so display it + showShell(0); + } else if (messages[0].message.substring(0, 5) == "file:" && messages[0].data != 0 && $('#command-wait-dropdown').is(':visible')) { + // The first message is a file, so display it + showFile(0); + } else if (messages[0].message.substring(0, 4) == "vid:" && messages[0].data != 0 && $('#command-wait-dropdown').is(':visible')) { + // The first message is a video, so display it + showFile(0); + } else if (messages[0].message.substring(0, 4) == "aud:" && messages[0].data != 0 && $('#command-wait-dropdown').is(':visible')) { + // The first message is audio, so display it + showFile(0); + } else { + showMap(); + } + toggleWaitOff(); + $('#log-contents').html(log); + } var curImg = 0; var curData = 0; @@ -271,8 +257,8 @@ } function gotImg(data) { - document.getElementById('img-container').innerHTML = "
Click image to close | Full resolution | Download
"+data+"
"; - document.getElementById('img-container').style.visibility = 'visible'; + $('#img-container').html("
Click image to close | Full resolution | Download
"+data+"
"); + $('#img-container').show(); } shell_h = 0; @@ -286,8 +272,8 @@ } function gotShell(data) { - document.getElementById('img-container').innerHTML = "
Click here to close
"+data+"
"; - document.getElementById('img-container').style.visibility = 'visible'; + $('#img-container').html("
Click here to close
"+data+"
"); + $('#img-container').show(); } function showFile(i) { @@ -301,30 +287,20 @@ } function hideImg() { - document.getElementById('img-container').style.visibility = 'hidden'; - document.getElementById('img-container').innerHTML = ""; + $('#img-container').hide(); + $('#img-container').html(''); } - var waitvis = false; - function toggleWait() { - if (waitvis) { - document.getElementById('command-wait-dropdown').style.visibility = 'hidden'; - waitvis = false; - } else { - document.getElementById('command-wait-dropdown').style.visibility = 'visible'; - waitvis = true; - } - } - - function toggleWaitOff() { - if (waitvis) { - document.getElementById('command-wait-dropdown').style.visibility = 'hidden'; - waitvis = false; - } - } + function toggleWait() { + $('#command-wait-dropdown').toggle(); + } + + function toggleWaitOff() { + $('#command-wait-dropdown').hide(); + } function checkForNewMessage(data) { - if (waitvis) { + if ($('#command-wait-dropdown').is(':visible')) { if (data && data != "" && data != "[]") { tmpmessages = $.parseJSON(data); if ($.isEmptyObject(messages) || messages[0].created_at != tmpmessages[0].created_at) { From b86ca5888c9c83daaed98f7f653ea68669763a2e Mon Sep 17 00:00:00 2001 From: ralphm2004 Date: Sun, 19 Apr 2015 21:55:06 +0200 Subject: [PATCH 5/7] Update scripts.js --- odm/js/scripts.js | 120 +++++++++++++++++++++++----------------------- 1 file changed, 60 insertions(+), 60 deletions(-) diff --git a/odm/js/scripts.js b/odm/js/scripts.js index 3aefb18..d9c5b94 100644 --- a/odm/js/scripts.js +++ b/odm/js/scripts.js @@ -74,37 +74,37 @@ if (message == "Command:GetLocation" || message == "Command:GetLocationGPS" || message == "Command:FrontPhoto" || message == "Command:RearPhoto" || message == "Command:FrontPhotoMAX" || message == "Command:RearPhotoMAX" || message == "Command:FrontVideo:15" || message == "Command:RearVideo:15" || message == "Command:FrontVideoMAX:15" || message == "Command:RearVideoMAX:15" || message == "Command:Audio:15") { waitingForResponse(); } else { - $('#command-sent-dropdown').show(); + $('#command-sent-dropdown').show(); setTimeout( function () { - $('#command-sent-dropdown').hide(); + $('#command-sent-dropdown').hide(); }, 2000 // milliseconds delay ); } } - function toggleDevices() { - $('#device-dropdown').toggle(); - } + function toggleDevices() { + $('#device-dropdown').toggle(); + } - function selectDevice(id) { - $('#device-dropdown').hide(); - window.location.href = "?id="+id; - } + function selectDevice(id) { + $('#device-dropdown').hide(); + window.location.href = "?id="+id; + } - function toggleCommands() { - $('#command-dropdown').toggle(); - } + function toggleCommands() { + $('#command-dropdown').toggle(); + } - function showMap() { - var h = $(window).height(); - var w = $(window).width(); - var maphtml = ''; - $('#map_layer').html(maphtml); - if (typeof(regId) !== 'undefined') { - $('#curlocation-container').html(curlocation); - $('#curlocation_mapped-container').html(curlocation_mapped); - } - } + function showMap() { + var h = $(window).height(); + var w = $(window).width(); + var maphtml = ''; + $('#map_layer').html(maphtml); + if (typeof(regId) !== 'undefined') { + $('#curlocation-container').html(curlocation); + $('#curlocation_mapped-container').html(curlocation_mapped); + } + } function daysBetween(first, second) { // Copy date parts of the timestamps, discarding the time parts. @@ -138,7 +138,7 @@ if (typeof(regId) !== 'undefined') { var url = 'messages.php?n=30®Id=' + regId; $.get(url, gotMessages); - $('#button').show(); + $('#button').show(); } else { showMap(); } @@ -218,30 +218,30 @@ buildMap(i); } } - if (log == "") { - log = "No messages received."; - showMap(); - } else if (messages[0].message.substring(0, 4) == "img:" && messages[0].data != 0 && $('#command-wait-dropdown').is(':visible')) { - // The first message is an image, so display it - showImg(0); - } else if (messages[0].message.substring(0, 6) == "shell:" && messages[0].data != 0 && $('#command-wait-dropdown').is(':visible')) { - // The first message is an image, so display it - showShell(0); - } else if (messages[0].message.substring(0, 5) == "file:" && messages[0].data != 0 && $('#command-wait-dropdown').is(':visible')) { - // The first message is a file, so display it - showFile(0); - } else if (messages[0].message.substring(0, 4) == "vid:" && messages[0].data != 0 && $('#command-wait-dropdown').is(':visible')) { - // The first message is a video, so display it - showFile(0); - } else if (messages[0].message.substring(0, 4) == "aud:" && messages[0].data != 0 && $('#command-wait-dropdown').is(':visible')) { - // The first message is audio, so display it - showFile(0); - } else { - showMap(); - } - toggleWaitOff(); - $('#log-contents').html(log); - } + if (log == "") { + log = "No messages received."; + showMap(); + } else if (messages[0].message.substring(0, 4) == "img:" && messages[0].data != 0 && $('#command-wait-dropdown').is(':visible')) { + // The first message is an image, so display it + showImg(0); + } else if (messages[0].message.substring(0, 6) == "shell:" && messages[0].data != 0 && $('#command-wait-dropdown').is(':visible')) { + // The first message is an image, so display it + showShell(0); + } else if (messages[0].message.substring(0, 5) == "file:" && messages[0].data != 0 && $('#command-wait-dropdown').is(':visible')) { + // The first message is a file, so display it + showFile(0); + } else if (messages[0].message.substring(0, 4) == "vid:" && messages[0].data != 0 && $('#command-wait-dropdown').is(':visible')) { + // The first message is a video, so display it + showFile(0); + } else if (messages[0].message.substring(0, 4) == "aud:" && messages[0].data != 0 && $('#command-wait-dropdown').is(':visible')) { + // The first message is audio, so display it + showFile(0); + } else { + showMap(); + } + toggleWaitOff(); + $('#log-contents').html(log); + } var curImg = 0; var curData = 0; @@ -257,8 +257,8 @@ } function gotImg(data) { - $('#img-container').html("
Click image to close | Full resolution | Download
"+data+"
"); - $('#img-container').show(); + $('#img-container').html("
Click image to close | Full resolution | Download
"+data+"
"); + $('#img-container').show(); } shell_h = 0; @@ -272,8 +272,8 @@ } function gotShell(data) { - $('#img-container').html("
Click here to close
"+data+"
"); - $('#img-container').show(); + $('#img-container').html("
Click here to close
"+data+"
"); + $('#img-container').show(); } function showFile(i) { @@ -287,20 +287,20 @@ } function hideImg() { - $('#img-container').hide(); - $('#img-container').html(''); + $('#img-container').hide(); + $('#img-container').html(''); } - function toggleWait() { - $('#command-wait-dropdown').toggle(); - } + function toggleWait() { + $('#command-wait-dropdown').toggle(); + } - function toggleWaitOff() { - $('#command-wait-dropdown').hide(); - } + function toggleWaitOff() { + $('#command-wait-dropdown').hide(); + } function checkForNewMessage(data) { - if ($('#command-wait-dropdown').is(':visible')) { + if ($('#command-wait-dropdown').is(':visible')) { if (data && data != "" && data != "[]") { tmpmessages = $.parseJSON(data); if ($.isEmptyObject(messages) || messages[0].created_at != tmpmessages[0].created_at) { From e1d238fd001e085f0436bb318ffcdf7513a71f2c Mon Sep 17 00:00:00 2001 From: Ralph Modjesch Date: Tue, 21 Apr 2015 12:30:52 +0200 Subject: [PATCH 6/7] update message transfer, map message transfer with server-push, no more waiting for answer map with gmap3 --- odm/css/styles.css | 80 ++++-------- odm/devices.php | 136 +++++++++++++++++++ odm/include/db.php | 45 +++++++ odm/include/footer.php | 3 - odm/include/header.php | 17 ++- odm/index.php | 146 ++------------------- odm/js/gmap3.min.js | 13 ++ odm/js/scripts.js | 290 +++++++++++++++++++---------------------- odm/messages_push.php | 44 +++++++ odm/shell.php | 8 +- 10 files changed, 420 insertions(+), 362 deletions(-) create mode 100644 odm/devices.php create mode 100644 odm/js/gmap3.min.js create mode 100644 odm/messages_push.php diff --git a/odm/css/styles.css b/odm/css/styles.css index f34243a..b4ea170 100644 --- a/odm/css/styles.css +++ b/odm/css/styles.css @@ -1,7 +1,11 @@ + html { + height: 100%; + } + body { margin: 0; font-family: 'Roboto',arial,sans-serif; - display: block; + height: 100%; } .content-overlay-box { @@ -51,7 +55,7 @@ } .details-container { - width: 420px; + width: 510px; } .details { @@ -105,9 +109,11 @@ padding: 1px 15px 1px 15px; margin: 0px 0px 20px 0px; border: 1px solid black; - width: 360px; - height: 70px; - overflow: auto; + width: 450px; + height: 100px; + overflow-x: hidden; + overflow-y: auto; + white-space: nowrap; } .detail-contents { @@ -194,23 +200,13 @@ } iframe { - display: block; - width: 100%; - border: none; - overflow-y: auto; + display: block; + width: 100%; + border: none; + overflow-y: auto; overflow-x: hidden; - } - - .loading { - margin: 0; - padding: 0; - background-image: url('../images/loading.gif'); - background-position: center; - background-repeat: no-repeat; - height: 18px; - width: 18px; - float: left; } + #button { display: none; min-width: 0; @@ -277,23 +273,6 @@ left: 350px; } - .wait-list { - overflow: hidden; - padding-left: 20px; - text-overflow: ellipsis; - white-space: nowrap; - color: #737373; - font-size: 15px; - } - - .wait-list-small { - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; - color: #737373; - font-size: 11px; - } - .command-list { overflow: hidden; padding: 3px 3px 3px 20px; @@ -303,25 +282,6 @@ font-size: 12px; } - #command-wait-dropdown { - -moz-border-radius: 3px; - -webkit-border-radius: 3px; - border-radius: 3px; - -moz-box-shadow: 0 2px 40px rgba(0,0,0,0.4); - -ms-box-shadow: 0 2px 40px rgba(0,0,0,0.4); - -webkit-box-shadow: 0 2px 40px rgba(0,0,0,0.4); - box-shadow: 0 2px 40px rgba(0,0,0,0.4); - background-color: #fff; - border: 1px solid #d6d6d6; - max-width: 220px; - min-width: 220px; - position: absolute; - z-index: 1; - display: none; - top: 60px; - left: 350px; - } - #command-sent-dropdown { -moz-border-radius: 3px; -webkit-border-radius: 3px; @@ -420,6 +380,10 @@ a:active { color: #333; } - .map_layer { - overflow: hidden; + #map_layer { + height: 93%; + } + #shell_cmd { + width: 98%; + height: 17px; } diff --git a/odm/devices.php b/odm/devices.php new file mode 100644 index 0000000..d0643af --- /dev/null +++ b/odm/devices.php @@ -0,0 +1,136 @@ + + + 0) { + $count = 0; + $dropdown = ""; + $first_name = ""; + $first_gcm_regid = ""; + $first_created_at = ""; + $first_id = 0; + foreach ($users as $row) { + $phpdate = strtotime($row['created_at']); + $formated_created_at = date( 'm/d/Y', $phpdate ); + if (($count == 0 && (!isset($id) || $id=='')) || (isset($id) && $id == $row['id'])) { + $first_name = $row['name']; + $first_gcm_regid = $row['gcm_regid']; + $first_created_at = $formated_created_at; + $first_token = $row['token']; + $first_id = $row['id']; + $dropdown .= '
'; + } else { + $dropdown .= '
'; + } + $dropdown .= '
'; + $dropdown .= '
'.$row['name'].'
'; + $dropdown .= '
Registered: '.$formated_created_at.'
'; + $dropdown .= '
'; + $dropdown .= '
'; + $count++; + } + + ?> +
+
+
+
+
+
Registered:
+
+
+
+
+
+
+ +
+
+
+
+
Get location
+
Get location (GPS only)
+
Send shell command
+
ListSMS
+
ListCallLog
+
ListWhatsapp
+
Request file from device
+
Record audio
+
Take rear photo (Low res)
+
Take front photo (Low res)
+
Take rear photo (High res)
+
Take front photo (High res)
+
Take rear video (Low res)
+
Take front video (Low res)
+
Take rear video (High res)
+
Take front video (High res)
+
Start Ring
+
Stop Ring
+
Lock device
+
Lock device with password
+
Receive SMS
+
Wipe device
+
Send notification
+
Download file to device
+
Delete this device
+
+
+
+
+
+
+
Command Sent
+
+
+
+
+
+
+ +
+
+
+
+
+ Log Entries +
+
+
receiving...
+
+
+
+
+ + + + +
No devices registered.
+ + + diff --git a/odm/include/db.php b/odm/include/db.php index 222fa9d..1301bd6 100644 --- a/odm/include/db.php +++ b/odm/include/db.php @@ -100,6 +100,30 @@ function getImg($user_id, $id) { return $img; } + function getMessage($user_id, $id) { + global $con; + $message = ""; + $stmt = $con->prepare("select m.message from gcm_data d, gcm_messages m, gcm_users u where d.id = m.id and m.gcm_regid = u.gcm_regid and u.user_id = ? and d.id = ?"); + $stmt->execute(array($user_id, $id)); + $rows = $stmt->fetchAll(PDO::FETCH_ASSOC); + foreach ($rows as $row) { + $message .= $row['message']; + } + return $message; + } + + function getRegID($user_id, $id) { + global $con; + $regid = ""; + $stmt = $con->prepare("select m.gcm_regid from gcm_data d, gcm_messages m, gcm_users u where d.id = m.id and m.gcm_regid = u.gcm_regid and u.user_id = ? and d.id = ?"); + $stmt->execute(array($user_id, $id)); + $rows = $stmt->fetchAll(PDO::FETCH_ASSOC); + foreach ($rows as $row) { + $regid .= $row['gcm_regid']; + } + return $regid; + } + function getMessages($gcm_regid, $limit) { global $con; $sql = "select message,created_at,id,data FROM gcm_messages where gcm_regid = ? order by created_at desc"; @@ -112,6 +136,27 @@ function getMessages($gcm_regid, $limit) { return $rows; } + function getMessagesId($gcm_regid, $minid, $limit) { + global $con; + $sql = "select message,created_at,id,data FROM gcm_messages where gcm_regid = ? and id > ? order by created_at desc"; + if (isset($limit)) { + $sql .= " limit $limit"; + } + $stmt = $con->prepare($sql); + $stmt->execute(array($gcm_regid,$minid)); + $rows = $stmt->fetchAll(PDO::FETCH_ASSOC); + return $rows; + } + + function getLastMessageID($gcm_regid) { + global $con; + $sql = "select id FROM gcm_messages where gcm_regid = ? order by created_at desc"; + $stmt = $con->prepare($sql); + $stmt->execute(array($gcm_regid)); + $currentId = $stmt->fetchColumn(); + return $currentId; + } + function getUserRecord($username) { global $con; $matchrow = null; diff --git a/odm/include/footer.php b/odm/include/footer.php index 772ecc8..7fb2bd6 100644 --- a/odm/include/footer.php +++ b/odm/include/footer.php @@ -1,5 +1,2 @@ - diff --git a/odm/include/header.php b/odm/include/header.php index 99296e5..9bf8738 100644 --- a/odm/include/header.php +++ b/odm/include/header.php @@ -1,17 +1,22 @@ - - + + Open Device Manager - - + + + + + + + - +
Open Device Manager