summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--www/js/EventCtrl.js22
-rw-r--r--www/js/EventModalCtrl.js12
-rw-r--r--www/js/EventsGraphsCtrl.js2
-rw-r--r--www/js/LogCtrl.js2
-rw-r--r--www/js/LoginCtrl.js7
-rw-r--r--www/js/MenuController.js2
-rw-r--r--www/js/MomentCtrl.js2
-rw-r--r--www/js/MonitorCtrl.js6
-rw-r--r--www/js/MonitorModalCtrl.js31
-rw-r--r--www/js/MontageCtrl.js6
-rw-r--r--www/js/MontageHistoryCtrl.js10
-rw-r--r--www/js/NVR.js79
-rw-r--r--www/js/StateCtrl.js12
-rw-r--r--www/js/TimelineCtrl.js4
-rw-r--r--www/js/TimelineModalCtrl.js2
-rw-r--r--www/js/WizardCtrl.js6
-rwxr-xr-xwww/js/app.js174
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>&nbsp;" + $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;
}