diff options
Diffstat (limited to 'www/js')
| -rw-r--r-- | www/js/EventCtrl.js | 22 | ||||
| -rw-r--r-- | www/js/EventModalCtrl.js | 12 | ||||
| -rw-r--r-- | www/js/EventsGraphsCtrl.js | 2 | ||||
| -rw-r--r-- | www/js/LogCtrl.js | 2 | ||||
| -rw-r--r-- | www/js/LoginCtrl.js | 7 | ||||
| -rw-r--r-- | www/js/MenuController.js | 2 | ||||
| -rw-r--r-- | www/js/MomentCtrl.js | 2 | ||||
| -rw-r--r-- | www/js/MonitorCtrl.js | 6 | ||||
| -rw-r--r-- | www/js/MonitorModalCtrl.js | 31 | ||||
| -rw-r--r-- | www/js/MontageCtrl.js | 6 | ||||
| -rw-r--r-- | www/js/MontageHistoryCtrl.js | 10 | ||||
| -rw-r--r-- | www/js/NVR.js | 79 | ||||
| -rw-r--r-- | www/js/StateCtrl.js | 12 | ||||
| -rw-r--r-- | www/js/TimelineCtrl.js | 4 | ||||
| -rw-r--r-- | www/js/TimelineModalCtrl.js | 2 | ||||
| -rw-r--r-- | www/js/WizardCtrl.js | 6 | ||||
| -rwxr-xr-x | www/js/app.js | 174 |
17 files changed, 235 insertions, 144 deletions
diff --git a/www/js/EventCtrl.js b/www/js/EventCtrl.js index e06309aa..eed17b60 100644 --- a/www/js/EventCtrl.js +++ b/www/js/EventCtrl.js @@ -317,7 +317,7 @@ angular.module('zmApp.controllers') function getEventObject(eid) { - var apiurl = NVR.getLogin().apiurl + '/events/' + eid + '.json'; + var apiurl = NVR.getLogin().apiurl + '/events/' + eid + '.json?'+$rootScope.authSession; $http.get(apiurl) .then(function (data) {}, @@ -1222,7 +1222,7 @@ angular.module('zmApp.controllers') function prepareImages(e) { var d = $q.defer(); var imglist = []; - var myurl = loginData.apiurl + '/events/' + e.Event.Id + ".json"; + var myurl = loginData.apiurl + '/events/' + e.Event.Id + ".json?"+$rootScope.authSession; $http.get(myurl) .then(function (succ) { var data = succ.data; @@ -1656,7 +1656,7 @@ angular.module('zmApp.controllers') NVR.debug("Archiving request for EID=" + eid); var loginData = NVR.getLogin(); - var apiArchive = loginData.apiurl + "/events/" + eid + ".json"; + var apiArchive = loginData.apiurl + "/events/" + eid + ".json?"+$rootScope.authSession; var setArchiveBit = ($scope.events[ndx].Event.Archived == '0') ? "1" : "0"; NVR.debug("Calling archive with:" + apiArchive + " and Archive=" + setArchiveBit); @@ -1743,7 +1743,7 @@ angular.module('zmApp.controllers') //$scope.eventList.showDelete = false; //curl -XDELETE http://server/zm/api/events/1.json var loginData = NVR.getLogin(); - var apiDelete = loginData.apiurl + "/events/" + id + ".json"; + var apiDelete = loginData.apiurl + "/events/" + id + ".json?"+$rootScope.authSession; NVR.debug("DeleteEvent: ID=" + id + " item=" + itemid); NVR.log("Delete event " + apiDelete); @@ -1882,7 +1882,7 @@ angular.module('zmApp.controllers') - var apiurl = ld.apiurl + "/events/consoleEvents/1 hour" + af + ".json"; + var apiurl = ld.apiurl + "/events/consoleEvents/1 hour" + af + ".json?"+$rootScope.authSession; //NVR.debug("consoleEvents API:" + apiurl); $http.get(apiurl) @@ -1919,7 +1919,7 @@ angular.module('zmApp.controllers') } }); - apiurl = ld.apiurl + "/events/consoleEvents/1 day" + af + ".json"; + apiurl = ld.apiurl + "/events/consoleEvents/1 day" + af + ".json?"+$rootScope.authSession; //NVR.debug("consoleEvents API:" + apiurl); $http.get(apiurl) .then(function (data) { @@ -1952,7 +1952,7 @@ angular.module('zmApp.controllers') } }); - apiurl = ld.apiurl + "/events/consoleEvents/1 week" + af + ".json"; + apiurl = ld.apiurl + "/events/consoleEvents/1 week" + af + ".json?"+$rootScope.authSession; //NVR.debug("consoleEvents API:" + apiurl); $http.get(apiurl) .then(function (data) { @@ -1986,7 +1986,7 @@ angular.module('zmApp.controllers') } }); - apiurl = ld.apiurl + "/events/consoleEvents/1 month" + af + ".json"; + apiurl = ld.apiurl + "/events/consoleEvents/1 month" + af + ".json?"+$rootScope.authSession; //NVR.debug("consoleEvents API:" + apiurl); $http.get(apiurl) .then(function (data) { @@ -2163,7 +2163,7 @@ angular.module('zmApp.controllers') $scope.alarm_images = []; event.Event.height = (eventsListDetailsHeight + eventsListScrubHeight); $ionicScrollDelegate.resize(); - var myurl = loginData.apiurl + '/events/' + event.Event.Id + ".json"; + var myurl = loginData.apiurl + '/events/' + event.Event.Id + ".json?"+$rootScope.authSession; NVR.log("API for event details" + myurl); $http.get(myurl) .then(function (data) { @@ -2274,7 +2274,7 @@ angular.module('zmApp.controllers') var i; - var myurl_frames = loginData.apiurl + '/events/' + event.Event.Id + ".json"; + var myurl_frames = loginData.apiurl + '/events/' + event.Event.Id + ".json?"+$rootScope.authSession; NVR.log("API for event details" + myurl_frames); $http.get(myurl_frames) .then(function (data) { @@ -2334,7 +2334,7 @@ angular.module('zmApp.controllers') }; - var myurl2 = loginData.apiurl + '/events/' + event.Event.Id + ".json"; + var myurl2 = loginData.apiurl + '/events/' + event.Event.Id + ".json?"+$rootScope.authSession; NVR.log("API for event details" + myurl2); $http.get(myurl2) .then(function (data) { diff --git a/www/js/EventModalCtrl.js b/www/js/EventModalCtrl.js index 096fc52f..eb7e5524 100644 --- a/www/js/EventModalCtrl.js +++ b/www/js/EventModalCtrl.js @@ -591,7 +591,7 @@ angular.module('zmApp.controllers').controller('EventModalCtrl', ['$scope', '$ro // console.log ("STEP 0 progress is " + $scope.currentProgress.progress); $scope.slides = []; - var apiurl = $scope.loginData.apiurl + "/events/" + $scope.eventId + ".json"; + var apiurl = $scope.loginData.apiurl + "/events/" + $scope.eventId + ".json?"+$rootScope.authSession; NVR.debug("prepared to get frame details using " + apiurl); $http.get(apiurl) .then(function (success) { @@ -1392,20 +1392,18 @@ angular.module('zmApp.controllers').controller('EventModalCtrl', ['$scope', '$ro var d = $q.defer(); // now get event details to show alarm frames var loginData = NVR.getLogin(); - var myurl = loginData.apiurl + '/events/' + eid + ".json"; - var nextEvent = loginData.apiurl + "/events/index" + "/StartTime >: " + currentEvent.Event.StartTime + ($scope.followSameMonitor == '1' ? "/MonitorId =: " + currentEvent.Monitor.Id : "") + "/AlarmFrames >=: " + (loginData.enableAlarmCount ? loginData.minAlarmCount : 0) + - ".json?sort=StartTime&direction=asc&limit=1"; + ".json?sort=StartTime&direction=asc&limit=1"+$rootScope.authSession; var prevEvent = loginData.apiurl + "/events/index" + "/StartTime <: " + currentEvent.Event.StartTime + ($scope.followSameMonitor == '1' ? "/MonitorId =: " + currentEvent.Monitor.Id : "") + "/AlarmFrames >=: " + (loginData.enableAlarmCount ? loginData.minAlarmCount : 0) + - ".json?sort=StartTime&direction=desc&limit=1"; + ".json?sort=StartTime&direction=desc&limit=1"+$rootScope.authSession; NVR.debug("Neighbor next URL=" + nextEvent); @@ -1485,7 +1483,7 @@ angular.module('zmApp.controllers').controller('EventModalCtrl', ['$scope', '$ro //$scope.eventList.showDelete = false; //curl -XDELETE http://server/zm/api/events/1.json var loginData = NVR.getLogin(); - var apiDelete = loginData.apiurl + "/events/" + id + ".json"; + var apiDelete = loginData.apiurl + "/events/" + id + ".json?"+$rootScope.authSession; NVR.debug("DeleteEvent: ID=" + id); NVR.log("Delete event " + apiDelete); @@ -1949,7 +1947,7 @@ angular.module('zmApp.controllers').controller('EventModalCtrl', ['$scope', '$ro // Lets get the detailed event API var loginData = NVR.getLogin(); - var myurl = loginData.apiurl + '/events/' + eid + ".json"; + var myurl = loginData.apiurl + '/events/' + eid + ".json?"+$rootScope.authSession; NVR.log("*** Constructed API for detailed events: " + myurl); $scope.humanizeTime = "..."; $scope.mName = "..."; diff --git a/www/js/EventsGraphsCtrl.js b/www/js/EventsGraphsCtrl.js index f870f029..dd8fe279 100644 --- a/www/js/EventsGraphsCtrl.js +++ b/www/js/EventsGraphsCtrl.js @@ -186,7 +186,7 @@ angular.module('zmApp.controllers').controller('zmApp.EventsGraphsCtrl', ['$ioni } var url = loginData.apiurl + "/events/index/MonitorId:" + monitors[j].Monitor.Id + dateString + - ".json?page=1"; + ".json?page=1"+$rootScope.authSession; // console.log("Monitor event URL:" + url); NVR.log("EventGraph: composed url is " + url); $http.get(url /*,{timeout:15000}*/ ) diff --git a/www/js/LogCtrl.js b/www/js/LogCtrl.js index 19203d43..d2b30e3e 100644 --- a/www/js/LogCtrl.js +++ b/www/js/LogCtrl.js @@ -146,7 +146,7 @@ angular.module('zmApp.controllers').controller('zmApp.LogCtrl', ['$scope', '$roo function loadZMlogs() { var ld = NVR.getLogin(); - var lapi = ld.apiurl + "/logs.json?sort=TimeKey&direction=desc&page=" + $scope.zmPage; + var lapi = ld.apiurl + "/logs.json?sort=TimeKey&direction=desc&page=" + $scope.zmPage+$rootScope.authSession; $http.get(lapi) .then(function (success) { $ionicLoading.hide(); diff --git a/www/js/LoginCtrl.js b/www/js/LoginCtrl.js index 36eac47d..7cf46cac 100644 --- a/www/js/LoginCtrl.js +++ b/www/js/LoginCtrl.js @@ -610,9 +610,8 @@ function mobilePinConfig () { // don't do it for WSS - lets mandate that }*/ - var apiurl = $scope.loginData.apiurl + '/host/getVersion.json'; - var portalurl = $scope.loginData.url + '/index.php'; - + var apiurl = $scope.loginData.apiurl + '/host/getVersion.json?'+$rootScope.authSession; + // Check if isUseAuth is set make sure u/p have a dummy value if ($scope.loginData.isUseAuth) { if (!$scope.loginData.username) $scope.loginData.username = "x"; @@ -769,7 +768,7 @@ function mobilePinConfig () { if ($scope.loginData.serverName != NVR.getLogin().serverName) { NVR.debug(">>> Server information has changed, likely a fallback took over!"); $scope.loginData = NVR.getLogin(); - apiurl = $scope.loginData.apiurl + '/host/getVersion.json'; + apiurl = $scope.loginData.apiurl + '/host/getVersion.json?'+$rootScope.authSession; portalurl = $scope.loginData.url + '/index.php'; } diff --git a/www/js/MenuController.js b/www/js/MenuController.js index a7e2e640..bf4e4a6a 100644 --- a/www/js/MenuController.js +++ b/www/js/MenuController.js @@ -134,7 +134,7 @@ angular.module('zmApp.controllers').controller('MenuController', ['$scope', '$io } - var apiurl = loginData.apiurl + '/host/getVersion.json'; + var apiurl = loginData.apiurl + '/host/getVersion.json'+$rootScope.authSession; //var portalurl = loginData.url + '/index.php'; zmAutoLogin.doLogin("<button class='button button-clear' style='line-height: normal; min-height: 0; min-width: 0; color:#fff;' ng-click='$root.cancelAuth()'><i class='ion-close-circled'></i> " + $translate.instant('kAuthenticating') + "...</button>") diff --git a/www/js/MomentCtrl.js b/www/js/MomentCtrl.js index b749837a..b9caddff 100644 --- a/www/js/MomentCtrl.js +++ b/www/js/MomentCtrl.js @@ -749,7 +749,7 @@ angular.module('zmApp.controllers').controller('zmApp.MomentCtrl', ['$scope', '$ var ld = NVR.getLogin(); // in API, always sort by StartTime so all monitors are represented - var myurl = ld.apiurl + "/events/index/AlarmFrames >=:1" + excludeMonitorsFilter + "/StartTime >=:" + timeFrom + "/StartTime <=:" + timeTo + ".json?sort=" + "StartTime" + "&direction=desc"; + var myurl = ld.apiurl + "/events/index/AlarmFrames >=:1" + excludeMonitorsFilter + "/StartTime >=:" + timeFrom + "/StartTime <=:" + timeTo + ".json?sort=" + "StartTime" + "&direction=desc"+$rootScope.authSession; NVR.debug("Retrieving " + myurl); diff --git a/www/js/MonitorCtrl.js b/www/js/MonitorCtrl.js index 89efe4cd..0b6b9985 100644 --- a/www/js/MonitorCtrl.js +++ b/www/js/MonitorCtrl.js @@ -140,8 +140,8 @@ angular.module('zmApp.controllers') NVR.debug("MonitorCtrl:changeConfig selection:" + $scope.monfunc.myenabled + $scope.monfunc.myfunc); var loginData = NVR.getLogin(); - var apiRestart = loginData.apiurl + "/states/change/restart.json"; - var apiMon = loginData.apiurl + "/monitors/" + item + ".json"; + var apiRestart = loginData.apiurl + "/states/change/restart.json?"+$rootScope.authSession; + var apiMon = loginData.apiurl + "/monitors/" + item + ".json?"+$rootScope.authSession; NVR.debug("MonitorCtrl: URLs for changeConfig save:" + apiMon); @@ -476,7 +476,7 @@ angular.module('zmApp.controllers') $scope.monitors[j].Monitor.isRunning = "..."; $scope.monitors[j].Monitor.color = zm.monitorCheckingColor; $scope.monitors[j].Monitor.char = "ion-help-circled"; - apiMonCheck = $scope.loginData.apiurl + "/monitors/daemonStatus/id:" + $scope.monitors[j].Monitor.Id + "/daemon:zmc.json"; + apiMonCheck = $scope.loginData.apiurl + "/monitors/daemonStatus/id:" + $scope.monitors[j].Monitor.Id + "/daemon:zmc.json?"+$rootScope.authSession; NVR.debug("MonitorCtrl:monitorStateCheck: " + apiMonCheck); diff --git a/www/js/MonitorModalCtrl.js b/www/js/MonitorModalCtrl.js index 1279c013..bb8b3f8f 100644 --- a/www/js/MonitorModalCtrl.js +++ b/www/js/MonitorModalCtrl.js @@ -33,24 +33,6 @@ angular.module('zmApp.controllers').controller('MonitorModalCtrl', ['$scope', '$ NVR.debug("MonitorModalCtrl called from " + $ionicHistory.currentStateName()); - //no need to recompute auth in modal - /*$rootScope.validMonitorId = $scope.monitors[0].Monitor.Id; - NVR.getAuthKey($rootScope.validMonitorId, $scope.monitors[0].Monitor.connKey) - .then(function (success) { - $ionicLoading.hide(); - $rootScope.authSession = success; - NVR.log("Modal: Stream authentication construction: " + $rootScope.authSession); - - }, - function (error) { - - $ionicLoading.hide(); - NVR.debug("ModalCtrl: Error details of stream auth:" + error); - //$rootScope.authSession=""; - NVR.log("Modal: Error returned Stream authentication construction. Retaining old value of: " + $rootScope.authSession); - }); -*/ - $interval.cancel(intervalModalHandle); $interval.cancel(cycleHandle); @@ -437,7 +419,7 @@ angular.module('zmApp.controllers').controller('MonitorModalCtrl', ['$scope', '$ ]; //console.log ("Inside Modal timer..."); var apiurl = NVR.getLogin().apiurl; - var alarmurl = apiurl + "/monitors/alarm/id:" + $scope.monitorId + "/command:status.json"; + var alarmurl = apiurl + "/monitors/alarm/id:" + $scope.monitorId + "/command:status.json?"+$rootScope.authSession; NVR.log("Invoking " + alarmurl); $http.get(alarmurl) @@ -1072,7 +1054,7 @@ angular.module('zmApp.controllers').controller('MonitorModalCtrl', ['$scope', '$ function triggerAlarm(mid, mode) { var apiurl = NVR.getLogin().apiurl; var c = mode == 'on' ? 'on' : 'off'; - var alarmurl = apiurl + "/monitors/alarm/id:" + mid + "/command:" + c + ".json"; + var alarmurl = apiurl + "/monitors/alarm/id:" + mid + "/command:" + c + ".json?"+$rootScope.authSession; NVR.log("Invoking " + alarmurl); var status = mode ? $translate.instant('kForcingAlarm') : $translate.instant('kCancellingAlarm'); @@ -1430,6 +1412,7 @@ angular.module('zmApp.controllers').controller('MonitorModalCtrl', ['$scope', '$ */ var myauthtoken = $rootScope.authSession.replace("&auth=", ""); + //&auth= var req = $http({ method: 'POST', @@ -1463,7 +1446,7 @@ angular.module('zmApp.controllers').controller('MonitorModalCtrl', ['$scope', '$ resp = resp.data; if (resp.result == "Ok" && ndx != -1) { var ld = NVR.getLogin(); - var apiurl = ld.apiurl + "/events/" + resp.status.event + ".json"; + var apiurl = ld.apiurl + "/events/" + resp.status.event + ".json?"+$rootScope.authSession; //console.log ("API " + apiurl); $http.get(apiurl) .then(function (data) { @@ -1558,7 +1541,7 @@ angular.module('zmApp.controllers').controller('MonitorModalCtrl', ['$scope', '$ NVR.debug("configurePTZ: called with mid=" + mid); var ld = NVR.getLogin(); - var url = ld.apiurl + "/monitors/" + mid + ".json"; + var url = ld.apiurl + "/monitors/" + mid + ".json?"+$rootScope.authSession; $http.get(url) .then(function (data) { data = data.data; @@ -1572,7 +1555,7 @@ angular.module('zmApp.controllers').controller('MonitorModalCtrl', ['$scope', '$ if ($scope.isControllable == '1') { var apiurl = NVR.getLogin().apiurl; - var myurl = apiurl + "/controls/" + $scope.controlid + ".json"; + var myurl = apiurl + "/controls/" + $scope.controlid + ".json?"+$rootScope.authSession; NVR.debug("configurePTZ : getting controllable data " + myurl); $http.get(myurl) @@ -1758,7 +1741,7 @@ angular.module('zmApp.controllers').controller('MonitorModalCtrl', ['$scope', '$ function getZones() { //https://server/zm/api/zones/forMonitor/7.json - var api = NVR.getLogin().apiurl + "/zones/forMonitor/" + $scope.monitorId + ".json"; + var api = NVR.getLogin().apiurl + "/zones/forMonitor/" + $scope.monitorId + ".json?"+$rootScope.authSession; NVR.debug("Getting zones using:" + api); originalZones = []; $http.get(api) diff --git a/www/js/MontageCtrl.js b/www/js/MontageCtrl.js index a8b5b49d..c6705ef0 100644 --- a/www/js/MontageCtrl.js +++ b/www/js/MontageCtrl.js @@ -631,7 +631,7 @@ angular.module('zmApp.controllers') apiurl += '/\'' + interval + '\' HOUR_SECOND'; }*/ - apiurl += '.json?sort=StartTime&direction=desc&limit=1'; + apiurl += '.json?sort=StartTime&direction=desc&limit=1'+$rootScope.authSession; NVR.debug ("Getting event count using:"+apiurl); $http.get(apiurl) @@ -721,7 +721,7 @@ angular.module('zmApp.controllers') var apiurl = NVR.getLogin().apiurl; //console.log ("ALARM CALLED WITH " +JSON.stringify(monitor)); - var alarmurl = apiurl + "/monitors/alarm/id:" + monitor.Monitor.Id + "/command:status.json"; + var alarmurl = apiurl + "/monitors/alarm/id:" + monitor.Monitor.Id + "/command:status.json?"+$rootScope.authSession; // console.log("Alarm Check: Invoking " + alarmurl); $http.get(alarmurl) @@ -1916,7 +1916,7 @@ angular.module('zmApp.controllers') var ld = NVR.getLogin(); var url = ld.apiurl; var eid = monitor.Monitor.lastEvent.events[0].Event.Id; - url += '/events/'+monitor.Monitor.lastEvent.events[0].Event.Id+'.json'; + url += '/events/'+monitor.Monitor.lastEvent.events[0].Event.Id+'.json?'+$rootScope.authSession; var mid = monitor.Monitor.Id; ld.lastEventCheckTimes[mid] = (new moment()).tz(NVR.getTimeZoneNow()).format('YYYY-MM-DD HH:mm:ss'); diff --git a/www/js/MontageHistoryCtrl.js b/www/js/MontageHistoryCtrl.js index 6f6687e4..567c8590 100644 --- a/www/js/MontageHistoryCtrl.js +++ b/www/js/MontageHistoryCtrl.js @@ -264,7 +264,7 @@ angular.module('zmApp.controllers').controller('zmApp.MontageHistoryCtrl', ['$sc function getNextSetHistory() { // grab events that start on or after the time - apiurl = ld.apiurl + "/events/index/StartTime >=:" + TimeObjectFrom + "/AlarmFrames >=:" + (ld.enableAlarmCount ? ld.minAlarmCount : 0) + ".json?sort=StartTime&direction=asc"; + apiurl = ld.apiurl + "/events/index/StartTime >=:" + TimeObjectFrom + "/AlarmFrames >=:" + (ld.enableAlarmCount ? ld.minAlarmCount : 0) + ".json?sort=StartTime&direction=asc"+$rootScope.authSession; NVR.log("Grabbing history using: " + apiurl); // make sure there are no more than 5 active streams (noevent is ok) $scope.currentLimit = $scope.monLimit; @@ -357,7 +357,7 @@ angular.module('zmApp.controllers').controller('zmApp.MontageHistoryCtrl', ['$sc for (i = 0; i < $scope.MontageMonitors.length; i++) { //console.log("Fair chance check for " + $scope.MontageMonitors[i].Monitor.Name); if ($scope.MontageMonitors[i].Monitor.eventUrl == 'img/noimage.png') { - var indivGrab = ld.apiurl + "/events/index/MonitorId:" + $scope.MontageMonitors[i].Monitor.Id + "/StartTime >=:" + TimeObjectFrom + "/AlarmFrames >=:" + (ld.enableAlarmCount ? ld.minAlarmCount : 0) + ".json"; + var indivGrab = ld.apiurl + "/events/index/MonitorId:" + $scope.MontageMonitors[i].Monitor.Id + "/StartTime >=:" + TimeObjectFrom + "/AlarmFrames >=:" + (ld.enableAlarmCount ? ld.minAlarmCount : 0) + ".json?"+$rootScope.authSession; NVR.debug("Monitor " + $scope.MontageMonitors[i].Monitor.Id + ":" + $scope.MontageMonitors[i].Monitor.Name + " does not have events, trying " + indivGrab); var p = getExpandedEvents(i, indivGrab); promises.push(p); @@ -655,7 +655,7 @@ angular.module('zmApp.controllers').controller('zmApp.MontageHistoryCtrl', ['$sc // $scope.MontageMonitors[ndx].Monitor.sliderProgress.progress = 0; NVR.debug("Fetching details, as event changed for " + $scope.MontageMonitors[ndx].Monitor.Name + " from " + $scope.MontageMonitors[ndx].Monitor.eid + " to " + resp.status.event); var ld = NVR.getLogin(); - var apiurl = ld.apiurl + "/events/" + resp.status.event + ".json"; + var apiurl = ld.apiurl + "/events/" + resp.status.event + ".json?"+$rootScope.authSession; //console.log ("API " + apiurl); qHttp({ method: 'get', @@ -998,7 +998,7 @@ angular.module('zmApp.controllers').controller('zmApp.MontageHistoryCtrl', ['$sc var d = $q.defer(); // now get event details to show alarm frames var loginData = NVR.getLogin(); - var myurl = loginData.apiurl + '/events/' + eid + ".json"; + var myurl = loginData.apiurl + '/events/' + eid + ".json?"+$rootScope.authSession; //console.log (">> 1: getting: "+myurl); var r = { @@ -1021,7 +1021,7 @@ angular.module('zmApp.controllers').controller('zmApp.MontageHistoryCtrl', ['$sc else { r.eid = target; // now get time of that event - myurl = loginData.apiurl+'/events/'+target + '.json'; + myurl = loginData.apiurl+'/events/'+target + '.json?'+$rootScope.authSession; $http.get (myurl) .then (function (succ) { r.stime = succ.data.event.Event.StartTime; diff --git a/www/js/NVR.js b/www/js/NVR.js index 87c76e80..d22cf294 100644 --- a/www/js/NVR.js +++ b/www/js/NVR.js @@ -194,9 +194,12 @@ angular.module('zmApp.controllers') 'enableEventRefresh': true, 'lastEventCheckTimes':{}, 'enableMontageOverlays': true, - 'showMontageSidebars': false - - + 'showMontageSidebars': false, + 'isTokenSupported': false, + 'accessTokenExpires': '', + 'refreshTokenExpires': '', + 'accessToken': '', + 'refreshToken': '' }; @@ -332,7 +335,7 @@ angular.module('zmApp.controllers') if (configParams.ZM_MIN_STREAMING_PORT == -1 || forceReload) { log("Checking value of ZM_MIN_STREAMING_PORT for the first time"); var apiurl = loginData.apiurl; - var myurl = apiurl + '/configs/viewByName/ZM_MIN_STREAMING_PORT.json'; + var myurl = apiurl + '/configs/viewByName/ZM_MIN_STREAMING_PORT.json?'+$rootScope.authSession; $http.get(myurl) .then(function (data) { data = data.data; @@ -382,6 +385,12 @@ angular.module('zmApp.controllers') return d.promise; } + if ($rootScope.authSession != '' && $rootScope.authSession != 'undefined') { + log ("We already have an auth key of:"+$rootScope.authSession); + d.resolve($rootScope.authSession); + return d.promise; + } + if (loginData.currentServerVersion && (versionCompare(loginData.currentServerVersion, zm.versionWithLoginAPI) != -1 || loginData.loginAPISupported)) { myurl = loginData.apiurl + '/host/getCredentials.json'; @@ -391,7 +400,7 @@ angular.module('zmApp.controllers') debug("Credentials API returned: " + JSON.stringify(s)); if (!s.data || !s.data.credentials) { - $rootScope.authSession = "undefined"; + $rootScope.authSession = ""; d.resolve($rootScope.authSession); debug("getCredentials() API Succeded, but did NOT return credentials key: " + JSON.stringify(s)); return d.promise; @@ -408,7 +417,7 @@ angular.module('zmApp.controllers') }, function (e) { - $rootScope.authSession = "undefined"; + $rootScope.authSession = ""; d.resolve($rootScope.authSession); debug("AuthHash API Error: " + JSON.stringify(e)); return d.promise; @@ -1062,6 +1071,32 @@ angular.module('zmApp.controllers') } + if (typeof loginData.isTokenSupported == 'undefined') { + loginData.isTokenSupported = false; + + } + + if (typeof loginData.accessTokenExpires == 'undefined') { + loginData.accessTokenExpires = ''; + + } + + if (typeof loginData.refreshTokenExpires == 'undefined') { + loginData.refreshTokenExpires = ''; + + } + + if (typeof loginData.refreshToken == 'undefined') { + loginData.refreshToken = ''; + + } + + if (typeof loginData.accessToken == 'undefined') { + loginData.accessToken = ''; + + } + + loginData.canSwipeMonitors = true; loginData.forceImageModePath = false; loginData.enableBlog = true; @@ -1830,7 +1865,7 @@ angular.module('zmApp.controllers') getAPIversion: function () { var d = $q.defer(); - var apiurl = loginData.apiurl + '/host/getVersion.json'; + var apiurl = loginData.apiurl + '/host/getVersion.json?'+$rootScope.authSession; debug("getAPIversion called with " + apiurl); $http.get(apiurl) .then(function (success) { @@ -1942,7 +1977,7 @@ angular.module('zmApp.controllers') getAuthHashLogin: function () { - return $http.get(loginData.apiurl + '/configs/viewByName/ZM_AUTH_HASH_LOGINS.json'); + return $http.get(loginData.apiurl + '/configs/viewByName/ZM_AUTH_HASH_LOGINS.json?'+$rootScope.authSession); }, @@ -1952,7 +1987,7 @@ angular.module('zmApp.controllers') if (forceReload == 1 || configParams.ZM_EVENT_IMAGE_DIGITS == '-1') { var apiurl = loginData.apiurl; - var myurl = apiurl + '/configs/viewByName/ZM_EVENT_IMAGE_DIGITS.json'; + var myurl = apiurl + '/configs/viewByName/ZM_EVENT_IMAGE_DIGITS.json?'+$rootScope.authSession; //debug("Config URL for digits is:" + myurl); $http.get(myurl) .then(function (data) { @@ -1989,7 +2024,7 @@ angular.module('zmApp.controllers') var apiurl = loginData.apiurl; - var myurl = apiurl + '/configs/viewByName/ZM_PATH_ZMS.json'; + var myurl = apiurl + '/configs/viewByName/ZM_PATH_ZMS.json?'+$rootScope.authSession; debug("Config URL for ZMS PATH is:" + myurl); $http.get(myurl) .then(function (data) { @@ -2159,7 +2194,7 @@ angular.module('zmApp.controllers') // use non cached for daemon status getMultiServers: function () { - return $http.get(loginData.apiurl + '/servers.json'); + return $http.get(loginData.apiurl + '/servers.json?'+$rootScope.authSession); }, @@ -2204,7 +2239,7 @@ angular.module('zmApp.controllers') log((forceReload == 1) ? "getMonitors:Force reloading all monitors" : "getMonitors:Loading all monitors"); var apiurl = loginData.apiurl; var myurl = apiurl + "/monitors"; - myurl += "/index/Type !=:WebSite.json"; + myurl += "/index/Type !=:WebSite.json?"+$rootScope.authSession; getZmsMultiPortSupport() .then(function (zmsPort) { @@ -2220,7 +2255,7 @@ angular.module('zmApp.controllers') if (data.monitors) monitors = data.monitors; - if ($rootScope.authSession == 'undefined') { + if ($rootScope.authSession == '') { log("Now that we have monitors, lets get AuthKey..."); getAuthKey(monitors[0].Monitor.Id, (Math.floor((Math.random() * 999999) + 1)).toString()); } @@ -2234,7 +2269,7 @@ angular.module('zmApp.controllers') debug("Inside getMonitors, will also regen connkeys"); debug("Now trying to get multi-server data, if present"); - $http.get(apiurl + "/servers.json") + $http.get(apiurl + "/servers.json?"+$rootScope.authSession) .then(function (data) { data = data.data; // We found a server list API, so lets make sure @@ -2502,7 +2537,7 @@ angular.module('zmApp.controllers') zmPrivacyProcessed: function () { var apiurl = loginData.apiurl; - var myurl = apiurl + '/configs/viewByName/ZM_SHOW_PRIVACY.json'; + var myurl = apiurl + '/configs/viewByName/ZM_SHOW_PRIVACY.json?'+$rootScope.authSession; var d = $q.defer(); $http({ @@ -2641,7 +2676,7 @@ angular.module('zmApp.controllers') if (!tz || isForce) { log("First invocation of TimeZone, asking server"); - var apiurl = loginData.apiurl + '/host/getTimeZone.json'; + var apiurl = loginData.apiurl + '/host/getTimeZone.json?'+$rootScope.authSession; $http.get(apiurl) .then(function (success) { tz = success.data.tz; @@ -2704,7 +2739,7 @@ angular.module('zmApp.controllers') } - myurl = myurl + ".json"; + myurl = myurl + ".json?"+$rootScope.authSession; //console.log (">>>>>Constructed URL " + myurl); $ionicLoading.show({ @@ -2792,7 +2827,7 @@ angular.module('zmApp.controllers') myurl = myurl + '/Notes REGEXP:detected:'; } - myurl = myurl + ".json?&sort=StartTime&direction=desc&page=" + pageId; + myurl = myurl + ".json?&sort=StartTime&direction=desc&page=" + pageId+$rootScope.authSession; debug("getEvents:" + myurl); @@ -3056,8 +3091,14 @@ angular.module('zmApp.controllers') }, logout: function () { + var d = $q.defer(); // always resolves + if (!loginData.isUseAuth || (loginData.loginAPISupported && loginData.isTokenSupported)) { + log ("No need for logout!"); + d.resolve(true); + return d.promise; + } $ionicLoading.show({ template: $translate.instant('kCleaningUp'), @@ -3065,7 +3106,7 @@ angular.module('zmApp.controllers') }); - var d = $q.defer(); + log(loginData.url + "=>Logging out of any existing ZM sessions..."); $rootScope.authSession = "undefined"; diff --git a/www/js/StateCtrl.js b/www/js/StateCtrl.js index 0871c5ee..a01d02b2 100644 --- a/www/js/StateCtrl.js +++ b/www/js/StateCtrl.js @@ -24,11 +24,11 @@ angular.module('zmApp.controllers').controller('zmApp.StateCtrl', ['$ionicPopup' var loginData = NVR.getLogin(); - var apiRun = loginData.apiurl + "/host/daemonCheck.json"; - var apiLoad = loginData.apiurl + "/host/getLoad.json"; - var apiStorage = loginData.apiurl + "/storage.json"; - var apiServer = loginData.apiurl + "/servers.json"; - var apiCurrentState = loginData.apiurl + "/States.json"; + var apiRun = loginData.apiurl + "/host/daemonCheck.json?"+$rootScope.authSession; + var apiLoad = loginData.apiurl + "/host/getLoad.json?"+$rootScope.authSession; + var apiStorage = loginData.apiurl + "/storage.json?"+$rootScope.authSession; + var apiServer = loginData.apiurl + "/servers.json?"+$rootScope.authSession; + var apiCurrentState = loginData.apiurl + "/States.json?"+$rootScope.authSession; var apiExec = loginData.apiurl + "/states/change/"; @@ -355,7 +355,7 @@ $scope.toggleServer = function() { $scope.customState = ""; NVR.debug("StateCtrl/controlZM: POST Control command is " + apiExec + str + ".json"); inProgress = 1; - $http.post(apiExec + str + ".json") + $http.post(apiExec + str + ".json?"+$rootScope.authSession) .then( function (success) { NVR.debug("StateCtrl/controlZM: returned success with:"+JSON.stringify(success)); diff --git a/www/js/TimelineCtrl.js b/www/js/TimelineCtrl.js index 78006f37..13916297 100644 --- a/www/js/TimelineCtrl.js +++ b/www/js/TimelineCtrl.js @@ -746,7 +746,7 @@ angular.module('zmApp.controllers').controller('zmApp.TimelineCtrl', ['$ionicPla // we can add alarmCount as this is really for completed events //completedEvents = completedEvents + "/AlarmFrames >=:" + (ld.enableAlarmCount ? ld.minAlarmCount : 0); - completedEvents = completedEvents + ".json"; + completedEvents = completedEvents + ".json?"+$rootScope.authSession; // now get currently ongoing events // as it turns out various events get stored withn null and never recover @@ -755,7 +755,7 @@ angular.module('zmApp.controllers').controller('zmApp.TimelineCtrl', ['$ionicPla var st = moment(lastTimeForEvent).tz(NVR.getTimeZoneNow()); st = st.subtract(10, 'minutes').locale('en').format("YYYY-MM-DD HH:mm:ss"); - var ongoingEvents = ld.apiurl + '/events/index/StartTime >=:' + st + '/EndTime =:.json'; + var ongoingEvents = ld.apiurl + '/events/index/StartTime >=:' + st + '/EndTime =:.json?'+$rootScope.authSession; //NVR.debug("Getting incremental events using: " + completedEvents); NVR.debug("Completed events API:" + completedEvents); diff --git a/www/js/TimelineModalCtrl.js b/www/js/TimelineModalCtrl.js index 0b7fb5cb..59210aa5 100644 --- a/www/js/TimelineModalCtrl.js +++ b/www/js/TimelineModalCtrl.js @@ -179,7 +179,7 @@ angular.module('zmApp.controllers').controller('TimelineModalCtrl', ['$scope', ' var eid = $scope.event.Event.Id; //eid = 22302; var ld = NVR.getLogin(); - var apiurl = ld.apiurl + "/events/" + eid + ".json"; + var apiurl = ld.apiurl + "/events/" + eid + ".json?"+$rootScope.authSession; NVR.log("Getting " + apiurl); $http.get(apiurl) .then(function (success) { diff --git a/www/js/WizardCtrl.js b/www/js/WizardCtrl.js index c1a2ca57..d5ca440f 100644 --- a/www/js/WizardCtrl.js +++ b/www/js/WizardCtrl.js @@ -83,7 +83,7 @@ angular.module('zmApp.controllers').controller('zmApp.WizardCtrl', ['$scope', '$ function getFirstMonitor() { var d = $q.defer(); - $http.get($scope.wizard.apiURL + "/monitors.json") + $http.get($scope.wizard.apiURL + "/monitors.json?"+$rootScope.authSession) .then(function (success) { // console.log("getfirst monitor success: " + JSON.stringify(success)); if (success.data.monitors.length > 0) { @@ -202,7 +202,7 @@ angular.module('zmApp.controllers').controller('zmApp.WizardCtrl', ['$scope', '$ var urls = [a1, a2, a3, a4, a5]; // can't use getPathZms as loginData is not inited yet - $http.get($scope.wizard.apiURL + "/configs/viewByName/ZM_PATH_ZMS.json") + $http.get($scope.wizard.apiURL + "/configs/viewByName/ZM_PATH_ZMS.json?"+$rootScope.authSession) //NVR.getPathZms() // what does ZM have stored in PATH_ZMS? .then(function (data) { // remove zms or nph-zms @@ -321,7 +321,7 @@ angular.module('zmApp.controllers').controller('zmApp.WizardCtrl', ['$scope', '$ // lets try both /zm/api and /api. What else is there? var apilist = [api1, api2, api3]; - findFirstReachableUrl(apilist, '/host/getVersion.json') + findFirstReachableUrl(apilist, '/host/getVersion.json?'+$rootScope.authSession) .then(function (success) { NVR.log("Valid API response found with:" + success); $scope.wizard.apiURL = success; diff --git a/www/js/app.js b/www/js/app.js index c5428465..f64ea1da 100755 --- a/www/js/app.js +++ b/www/js/app.js @@ -1040,20 +1040,12 @@ angular.module('zmApp', [ function proceedWithLogin() { - // recompute rand anyway so even if you don't have auth - // your stream should not get frozen - $rootScope.rand = Math.floor((Math.random() * 100000) + 1); - $rootScope.modalRand = Math.floor((Math.random() * 100000) + 1); - - // console.log ("***** STATENAME IS " + statename); var d = $q.defer(); var ld = NVR.getLogin(); - NVR.log("zmAutologin called"); - var httpDelay = NVR.getLogin().enableSlowLoading ? zm.largeHttpTimeout : zm.httpTimeout; - // This is a good time to check if auth is used :-p - if (!ld.isUseAuth) { + // This is a good time to check if auth is used :-p + if (!ld.isUseAuth) { NVR.log("Auth is disabled, setting authSession to empty"); $rootScope.apiValid = true; $rootScope.authSession = ''; @@ -1064,6 +1056,75 @@ angular.module('zmApp', [ } + + // lets first try tokens and stored tokens + if (ld.isTokenSupported) { + NVR.log ("Detected token login supported"); + var now = moment.utc(); + var diff_access = moment.utc(ld.accessTokenExpires).diff(now, 'minutes'); + var diff_refresh = moment.utc(ld.refreshTokenExpires).diff(now, 'minutes'); + + // first see if we can work with access token + if (moment.utc(ld.accessTokenExpires).isAfter(now) && diff_access >=30) { + NVR.log ("Access token still has "+diff_access+" minutes left, using it"); + $rootScope.authSession = '&token='+ld.accessToken; + d.resolve("Login success via access token"); + $rootScope.$broadcast('auth-success', '' ); + return d.promise; + } + // then see if we have at least 30 mins left for refresh token + else if (moment.utc(ld.refreshTokenExpires).isAfter(now) && diff_refresh >=30) { + NVR.log ("Refresh token still has "+diff_refresh+" minutes left, using it"); + var loginAPI = loginData.apiurl + '/host/login.json?token='+ld.refreshToken; + $http.get($loginAPI) + .then (function (succ) { + succ = succ.data; + if (succ.access_token) { + $rootScope.authSession = '&token='+succ.access_token; + NVR.log ("New access token retrieved:"+succ.access_token); + ld.accessToken = succ.access_token; + ld.accessTokenExpires = moment.utc().add(succ.access_token_expires,'seconds'); + NVR.log ("Current time is: UTC "+moment.utc().format("YYYY-MM-DD hh:mm:ss")); + NVR.log ("New access token expires on: UTC "+ld.accessTokenExpires.format("YYYY-MM-DD hh:mm:ss")); + NVR.log ("New access token expires on:"+ld.accessTokenExpires.format("YYYY-MM-DD hh:mm:ss")); + ld.isTokenSupported = true; + NVR.setLogin(ld); + d.resolve("Login success via refresh token"); + $rootScope.$broadcast('auth-success', '' ); + return d.promise; + } + else { + NVR.log ('ERROR:Trying to refresh with refresh token:'+JSON.stringify(succ)); + return proceedWithFreshLogin(); + + } + }, + function (err) { + NVR.log ('access token login HTTP failed with: '+JSON.stringify(err)); + return proceedWithFreshLogin(); + }); + } // valid refresh + + } // is token supported + NVR.log ("Token login not being used"); + // coming here means token reloads fell through + return proceedWithFreshLogin(); + } + + function proceedWithFreshLogin() { + // recompute rand anyway so even if you don't have auth + // your stream should not get frozen + $rootScope.rand = Math.floor((Math.random() * 100000) + 1); + $rootScope.modalRand = Math.floor((Math.random() * 100000) + 1); + + // console.log ("***** STATENAME IS " + statename); + + var d = $q.defer(); + var ld = NVR.getLogin(); + NVR.log("Doing fresh login to ZM"); + var httpDelay = NVR.getLogin().enableSlowLoading ? zm.largeHttpTimeout : zm.httpTimeout; + + if (!str) str = $translate.instant('kAuthenticating'); if (str) { @@ -1081,9 +1142,11 @@ angular.module('zmApp', [ //first login using new API + $rootScope.authSession = ''; var loginAPI = loginData.apiurl + '/host/login.json'; + $http({ method: 'post', url: loginAPI, @@ -1108,10 +1171,7 @@ angular.module('zmApp', [ .then(function (textsucc) { $ionicLoading.hide(); - var succ; - - try { succ = JSON.parse(textsucc.data); @@ -1141,13 +1201,39 @@ angular.module('zmApp', [ //$rootScope.loggedIntoZm = 1; $rootScope.authSession = ''; - if (succ.credentials) { - $rootScope.authSession = "&" + succ.credentials; - if (succ.append_password == '1') { - $rootScope.authSession = $rootScope.authSession + - loginData.password; + if (succ.refresh_token) { + $rootScope.authSession = '&token='+succ.access_token; + NVR.log ("New refresh token retrieved:"+succ.refresh_token); + ld.isTokenSupported = true; + + ld.accessToken = succ.access_token; + ld.accessTokenExpires = moment.utc().add(succ.access_token_expires, 'seconds'); + ld.refreshToken = succ.refresh_token; + + ld.refreshTokenExpires = moment.utc().add(succ.refresh_token_expires, 'seconds'); + + NVR.log ("Current time is: UTC "+moment.utc().format("YYYY-MM-DD hh:mm:ss")); + NVR.log ("New refresh token expires on: UTC "+ld.refreshTokenExpires.format("YYYY-MM-DD hh:mm:ss")); + NVR.log ("New access token expires on: UTC "+ld.accessTokenExpires.format("YYYY-MM-DD hh:mm:ss")); + NVR.setLogin(ld); + + } + else { + if (succ.credentials) { + NVR.log ("Could not recover token details, trying old auth credentials"); + ld.isTokenSupported = false; + NVR.setLogin(ld); + $rootScope.authSession = "&" + succ.credentials; + if (succ.append_password == '1') { + $rootScope.authSession = $rootScope.authSession + + loginData.password; + } + } + else { + NVR.log ("Neither token nor old cred worked. Seems like an error"); } } + var ldg = NVR.getLogin(); ldg.loginAPISupported = true; @@ -1166,8 +1252,10 @@ angular.module('zmApp', [ } catch (e) { NVR.debug("Login API approach did not work..."); + ld = NVR.getLogin(); ld.loginAPISupported = false; + ld.isTokenSupported = false; NVR.setLogin(ld); loginWebScrape() .then(function (succ) { @@ -1189,42 +1277,24 @@ angular.module('zmApp', [ function (err) { console.log("******************* API login error " + JSON.stringify(err)); $ionicLoading.hide(); - - - if (1) { - //if (err && err.data && 'success' in err.data) { - console.log("API based login not supported, need to use web scraping..."); - // login using old web scraping - var ld = NVR.getLogin(); - ld.loginAPISupported = false; - NVR.setLogin(ld); - loginWebScrape() - .then(function (succ) { - d.resolve("Login Success"); - return d.promise; - }, - function (err) { - d.reject("Login Error"); - return (d.promise); - }); - - - } else { - // $rootScope.loggedIntoZm = -1; - //console.log("**** ZM Login FAILED"); - NVR.log("zmAutologin Error via API: some meta foo", "error"); - $rootScope.$broadcast('auth-error', "I'm confused why"); - - d.reject("Login Error"); - return (d.promise); - - } - + //if (err && err.data && 'success' in err.data) { + console.log("API based login not supported, need to use web scraping..."); + // login using old web scraping + var ld = NVR.getLogin(); + ld.loginAPISupported = false; + NVR.setLogin(ld); + loginWebScrape() + .then(function (succ) { + d.resolve("Login Success"); + return d.promise; + }, + function (err) { + d.reject("Login Error"); + return (d.promise); + }); } - ); // post - - + ); // post .then return d.promise; } |
