summaryrefslogtreecommitdiff
path: root/www/js/WizardCtrl.js
diff options
context:
space:
mode:
authorPliable Pixels <pliablepixels@gmail.com>2018-05-12 08:12:23 -0400
committerPliable Pixels <pliablepixels@gmail.com>2018-05-12 08:12:23 -0400
commit0d81a588d42c73c92d313f853461b433f8543ae4 (patch)
tree08590e3caad35938ec92c7a04bc3206409011284 /www/js/WizardCtrl.js
parent971741dc3e0eaa26c3a56ceeab6ce6eece61b6ce (diff)
file formatting
Diffstat (limited to 'www/js/WizardCtrl.js')
-rw-r--r--www/js/WizardCtrl.js1465
1 files changed, 678 insertions, 787 deletions
diff --git a/www/js/WizardCtrl.js b/www/js/WizardCtrl.js
index f285418f..a0bc1b06 100644
--- a/www/js/WizardCtrl.js
+++ b/www/js/WizardCtrl.js
@@ -2,852 +2,743 @@
/* jslint browser: true*/
/* global cordova,StatusBar,angular,console, Masonry, URI */
-angular.module('zmApp.controllers').controller('zmApp.WizardCtrl', ['$scope', '$rootScope', '$ionicModal', 'NVRDataModel', '$ionicSideMenuDelegate', '$ionicHistory', '$state', '$ionicPopup', 'SecuredPopups', '$http', '$q', 'zm', '$ionicLoading', 'WizardHandler', '$translate', function($scope, $rootScope, $ionicModal, NVRDataModel, $ionicSideMenuDelegate, $ionicHistory, $state, $ionicPopup, SecuredPopups, $http, $q, zm, $ionicLoading, WizardHandler, $translate)
-{
- $scope.openMenu = function()
- {
- $ionicSideMenuDelegate.toggleLeft();
- };
-
- //--------------------------------------------------------------------------
- // logs into ZM
- //--------------------------------------------------------------------------
-
- function login(u, zmu, zmp)
- {
- var d = $q.defer();
+angular.module('zmApp.controllers').controller('zmApp.WizardCtrl', ['$scope', '$rootScope', '$ionicModal', 'NVRDataModel', '$ionicSideMenuDelegate', '$ionicHistory', '$state', '$ionicPopup', 'SecuredPopups', '$http', '$q', 'zm', '$ionicLoading', 'WizardHandler', '$translate', function ($scope, $rootScope, $ionicModal, NVRDataModel, $ionicSideMenuDelegate, $ionicHistory, $state, $ionicPopup, SecuredPopups, $http, $q, zm, $ionicLoading, WizardHandler, $translate) {
+ $scope.openMenu = function () {
+ $ionicSideMenuDelegate.toggleLeft();
+ };
+
+ //--------------------------------------------------------------------------
+ // logs into ZM
+ //--------------------------------------------------------------------------
+
+ function login(u, zmu, zmp) {
+ var d = $q.defer();
+
+ $http({
+ method: 'POST',
+ //withCredentials: true,
+ url: u,
+ headers: {
+ 'Content-Type': 'application/x-www-form-urlencoded',
+ 'Accept': 'application/json',
+ },
+ transformRequest: function (obj) {
+ var str = [];
+ for (var p in obj)
+ str.push(encodeURIComponent(p) + "=" +
+ encodeURIComponent(obj[p]));
+ var params = str.join("&");
+ return params;
+ },
+
+ data: {
+ username: zmu,
+ password: zmp,
+ action: "login",
+ view: "console"
+ }
+ })
+ .success(function (data, status, headers) {
+ //console.log("LOOKING FOR " + zm.loginScreenString);
+ //console.log("DATA RECEIVED " + JSON.stringify(data));
+ if (data.indexOf(zm.loginScreenString) == -1) {
+
+ $scope.wizard.loginURL = $scope.wizard.fqportal;
+ $scope.wizard.portalValidText = $translate.instant('kPortal') + ": " + $scope.wizard.loginURL;
+ $scope.wizard.portalColor = "#16a085";
+ d.resolve(true);
+ return d.promise;
+ } else {
+ //console.log("************ERROR");
+ $scope.wizard.portalValidText = $translate.instant('kPortalDetectionFailed');
+ $scope.wizard.portalColor = "#e74c3c";
+ d.reject(false);
+ return d.promise;
+ }
+ })
+ .error(function (error) {
+ //console.log("************ERROR");
+ $scope.wizard.portalValidText = $translate.instant('kPortalDetectionFailed');
+ $scope.wizard.portalColor = "#e74c3c";
+ d.reject(false);
+ return d.promise;
- $http(
- {
- method: 'POST',
- //withCredentials: true,
- url: u,
- headers:
- {
- 'Content-Type': 'application/x-www-form-urlencoded',
- 'Accept': 'application/json',
- },
- transformRequest: function(obj)
- {
- var str = [];
- for (var p in obj)
- str.push(encodeURIComponent(p) + "=" +
- encodeURIComponent(obj[p]));
- var params = str.join("&");
- return params;
- },
-
- data:
- {
- username: zmu,
- password: zmp,
- action: "login",
- view: "console"
- }
- })
- .success(function(data, status, headers)
- {
- //console.log("LOOKING FOR " + zm.loginScreenString);
- //console.log("DATA RECEIVED " + JSON.stringify(data));
- if (data.indexOf(zm.loginScreenString) == -1)
- {
-
- $scope.wizard.loginURL = $scope.wizard.fqportal;
- $scope.wizard.portalValidText = $translate.instant('kPortal') + ": " + $scope.wizard.loginURL;
- $scope.wizard.portalColor = "#16a085";
- d.resolve(true);
- return d.promise;
- }
- else
- {
- //console.log("************ERROR");
- $scope.wizard.portalValidText = $translate.instant('kPortalDetectionFailed');
- $scope.wizard.portalColor = "#e74c3c";
- d.reject(false);
- return d.promise;
- }
- })
- .error(function(error)
- {
- //console.log("************ERROR");
- $scope.wizard.portalValidText = $translate.instant('kPortalDetectionFailed');
- $scope.wizard.portalColor = "#e74c3c";
- d.reject(false);
- return d.promise;
+ });
+
+ return d.promise;
+
+ }
+
+ //--------------------------------------------------------------------------
+ // we need a monitor ID to do cgi-bin detection - if you don't have
+ // monitors configured, cgi-bin won't work
+ //--------------------------------------------------------------------------
+
+ function getFirstMonitor() {
+ var d = $q.defer();
+ $http.get($scope.wizard.apiURL + "/monitors.json")
+ .then(function (success) {
+ // console.log("getfirst monitor success: " + JSON.stringify(success));
+ if (success.data.monitors.length > 0) {
+ var foundMid = -1;
+ for (var i = 0; i < success.data.monitors.length; i++) {
+ if (success.data.monitors[i].Monitor.Function != 'None' &&
+ success.data.monitors[i].Monitor.Enabled == '1') {
+ foundMid = success.data.monitors[i].Monitor.Id;
+ break;
+ }
+ }
- });
+ if (foundMid != -1) {
+ NVRDataModel.debug("zmWizard - getFirstMonitor returned " + foundMid);
+ d.resolve(foundMid);
+ return d.promise;
+ } else {
+ d.reject(false);
+ return d.promise;
+ }
+ } else {
+ d.reject(false);
+ return d.promise;
+ }
+ },
+ function (error) {
+ //console.log("getfirst monitor error: " + JSON.stringify(error));
+ d.reject(false);
+ return d.promise;
+ });
+ return d.promise;
+ }
+
+ //--------------------------------------------------------------------------
+ // Utility function - iterates through a list of URLs
+ // Don't put loginData.reachability here --> we are using this to iterate
+ // through multiple options - not the same as fallback
+ //--------------------------------------------------------------------------
+
+ function findFirstReachableUrl(urls, tail) {
+ var d = $q.defer();
+ if (urls.length > 0) {
+ var t = "";
+ if (tail) t = tail;
+ //$ionicLoading.show({template: 'trying ' + urls[0].server});
+ NVRDataModel.log("zmWizard test.." + urls[0] + t);
+ return $http.get(urls[0] + t).then(function () {
+ NVRDataModel.log("Success: on " + urls[0] + t);
+ //$ionicLoading.hide();
+ d.resolve(urls[0]);
return d.promise;
+ //return urls[0];
+ }, function (err) {
+ NVRDataModel.log("zmWizard:Failed on " + urls[0] + t + " with error " + JSON.stringify(err));
+ // this is actually a success - I might get empty status
+ // or something
+ if (err.status < 300) {
+ NVRDataModel.log("I am taking this as a cgi-bin success - " + urls[0]);
+ d.resolve(urls[0]);
+ return d.promise;
+ }
+ return findFirstReachableUrl(urls.slice(1), tail);
+ });
+ } else {
+ // $ionicLoading.hide();
+ NVRDataModel.log("zmWizard: findFirst returned no success");
+ d.reject("No reachable URL");
+ return d.promise;
}
- //--------------------------------------------------------------------------
- // we need a monitor ID to do cgi-bin detection - if you don't have
- // monitors configured, cgi-bin won't work
- //--------------------------------------------------------------------------
-
- function getFirstMonitor()
- {
- var d = $q.defer();
- $http.get($scope.wizard.apiURL + "/monitors.json")
- .then(function(success)
- {
- // console.log("getfirst monitor success: " + JSON.stringify(success));
- if (success.data.monitors.length > 0)
- {
- var foundMid = -1;
- for (var i = 0; i < success.data.monitors.length; i++)
- {
- if (success.data.monitors[i].Monitor.Function != 'None' &&
- success.data.monitors[i].Monitor.Enabled == '1')
- {
- foundMid = success.data.monitors[i].Monitor.Id;
- break;
- }
- }
-
- if (foundMid != -1)
- {
- NVRDataModel.debug("zmWizard - getFirstMonitor returned " + foundMid);
- d.resolve(foundMid);
- return d.promise;
- }
- else
- {
- d.reject(false);
- return d.promise;
- }
+ return d.promise;
+
+ }
+
+ //--------------------------------------------------------------------------
+ // removes proto scheme from string
+ //--------------------------------------------------------------------------
+
+ function stripProto(u) {
+ if (u.indexOf('://') != -1)
+ return u.substr(u.indexOf('://') + 3);
+ else
+ return u;
+ }
+
+ //--------------------------------------------------------------------------
+ // tries to detect cgi-bin
+ //--------------------------------------------------------------------------
+
+ function detectcgi() {
+ var d = $q.defer();
+ var c = URI.parse($scope.wizard.loginURL);
+ var p1, p2;
+ p1 = "";
+ p2 = "";
+
+ if (c.userinfo)
+ p1 = c.userinfo + "@";
+ if (c.port)
+ p2 = ":" + c.port;
+
+ var baseUri = c.scheme + "://" + p1 + c.host + p2;
+
+ NVRDataModel.log("zmWizard CGI: baseURL is " + baseUri);
+
+ var a5 = baseUri + "/zmcgi"; // mageia
+ var a4 = baseUri + "/cgi-bin/zm"; // another one I found with a CentOS 6 guy
+ var a1 = baseUri + "/zm/cgi-bin"; // ubuntu/debian
+ var a2 = baseUri + "/cgi-bin-zm"; //fedora/centos/rhel
+ var a3 = baseUri + "/cgi-bin"; // doofus
+
+ var urls = [a1, a2, a3, a4, a5];
+
+ NVRDataModel.getPathZms() // what does ZM have stored in PATH_ZMS?
+ .then(function (data) {
+ // remove zms or nph-zms
+ var path = data.trim();
+ path = path.replace("/nph-zms", "");
+ path = path.replace("/zms", "");
+ urls.push(baseUri.trim() + path);
+ NVRDataModel.log("zmWizard: getPathZMS succeeded, adding " + baseUri + path + " to things to try");
+ continueCgi(urls);
+ },
+ function (error) {
+ NVRDataModel.log("zmWizard: getPathZMS failed, but continuing...");
+ continueCgi(urls);
+ });
+ // Well, PATH_ZMS or not, lets call this function and brute force it
+ function continueCgi(urls) {
+ $ionicLoading.show({
+ template: $translate.instant('kDiscovering') + "...",
+ noBackdrop: true,
+ duration: zm.httpTimeout
+ });
+ getFirstMonitor()
+ .then(function (success) {
+ $ionicLoading.hide();
+ var tail = "/nph-zms?mode=single&monitor=" + success;
+ if ($scope.wizard.useauth && $scope.wizard.usezmauth) {
+
+ var ck = Math.floor(Math.random() * (50000 - 10000 + 1)) + 10000;
+ NVRDataModel.getAuthKey(success, ck)
+ .then(function (success) {
+ if (success == "") {
+ NVRDataModel.log("getAuthKey returned null, so going user=&pwd= way");
+ tail += "&user=" + $scope.wizard.zmuser + "&pass=" + $scope.wizard.zmpassword;
+ } else {
+ tail += success;
}
- else
- {
- d.reject(false);
- return d.promise;
- }
- },
- function(error)
- {
- //console.log("getfirst monitor error: " + JSON.stringify(error));
- d.reject(false);
- return d.promise;
- });
- return d.promise;
- }
+ NVRDataModel.log("auth computed is : " + tail);
+ proceedwithCgiAfterAuth(urls, tail);
+ },
+ function (error) {
+ NVRDataModel.log("Should never come here, getAuthKey doesn't return error");
- //--------------------------------------------------------------------------
- // Utility function - iterates through a list of URLs
- // Don't put loginData.reachability here --> we are using this to iterate
- // through multiple options - not the same as fallback
- //--------------------------------------------------------------------------
+ });
- function findFirstReachableUrl(urls, tail)
- {
- var d = $q.defer();
- if (urls.length > 0)
- {
- var t = "";
- if (tail) t = tail;
- //$ionicLoading.show({template: 'trying ' + urls[0].server});
- NVRDataModel.log("zmWizard test.." + urls[0] + t);
- return $http.get(urls[0] + t).then(function()
- {
- NVRDataModel.log("Success: on " + urls[0] + t);
- //$ionicLoading.hide();
- d.resolve(urls[0]);
- return d.promise;
- //return urls[0];
- }, function(err)
+ //console.log ("****CDING " + tail);
+ } else // no auth case
{
- NVRDataModel.log("zmWizard:Failed on " + urls[0] + t + " with error " + JSON.stringify(err) );
- // this is actually a success - I might get empty status
- // or something
- if (err.status < 300)
- {
- NVRDataModel.log ("I am taking this as a cgi-bin success - "+urls[0]);
- d.resolve(urls[0]);
- return d.promise;
- }
- return findFirstReachableUrl(urls.slice(1), tail);
- });
- }
- else
- {
- // $ionicLoading.hide();
- NVRDataModel.log("zmWizard: findFirst returned no success");
- d.reject("No reachable URL");
- return d.promise;
-
- }
-
- return d.promise;
-
- }
-
- //--------------------------------------------------------------------------
- // removes proto scheme from string
- //--------------------------------------------------------------------------
-
- function stripProto(u)
- {
- if (u.indexOf('://') != -1)
- return u.substr(u.indexOf('://') + 3);
- else
- return u;
- }
+ proceedwithCgiAfterAuth(urls, tail);
+ }
- //--------------------------------------------------------------------------
- // tries to detect cgi-bin
- //--------------------------------------------------------------------------
+ function proceedwithCgiAfterAuth(urls, tail) {
- function detectcgi()
- {
- var d = $q.defer();
- var c = URI.parse($scope.wizard.loginURL);
- var p1, p2;
- p1 = "";
- p2 = "";
-
- if (c.userinfo)
- p1 = c.userinfo + "@";
- if (c.port)
- p2 = ":" + c.port;
-
- var baseUri = c.scheme + "://" + p1 + c.host + p2;
-
- NVRDataModel.log("zmWizard CGI: baseURL is " + baseUri);
-
- var a5 = baseUri + "/zmcgi"; // mageia
- var a4 = baseUri + "/cgi-bin/zm"; // another one I found with a CentOS 6 guy
- var a1 = baseUri + "/zm/cgi-bin"; // ubuntu/debian
- var a2 = baseUri + "/cgi-bin-zm"; //fedora/centos/rhel
- var a3 = baseUri + "/cgi-bin"; // doofus
-
- var urls = [a1, a2, a3, a4, a5];
-
- NVRDataModel.getPathZms() // what does ZM have stored in PATH_ZMS?
- .then(function(data)
- {
- // remove zms or nph-zms
- var path = data.trim();
- path = path.replace("/nph-zms", "");
- path = path.replace("/zms", "");
- urls.push(baseUri.trim() + path);
- NVRDataModel.log("zmWizard: getPathZMS succeeded, adding " + baseUri + path + " to things to try");
- continueCgi(urls);
- },
- function(error)
- {
- NVRDataModel.log("zmWizard: getPathZMS failed, but continuing...");
- continueCgi(urls);
- });
-
- // Well, PATH_ZMS or not, lets call this function and brute force it
- function continueCgi(urls)
- {
- $ionicLoading.show(
- {
+ $ionicLoading.show({
template: $translate.instant('kDiscovering') + "...",
noBackdrop: true,
duration: zm.httpTimeout
- });
- getFirstMonitor()
- .then(function(success)
- {
- $ionicLoading.hide();
- var tail = "/nph-zms?mode=single&monitor=" + success;
- if ($scope.wizard.useauth && $scope.wizard.usezmauth)
- {
-
- var ck = Math.floor(Math.random() * (50000 - 10000 + 1)) + 10000;
- NVRDataModel.getAuthKey(success, ck)
- .then(function(success)
- {
- if (success == "")
- {
- NVRDataModel.log("getAuthKey returned null, so going user=&pwd= way");
- tail += "&user=" + $scope.wizard.zmuser + "&pass=" + $scope.wizard.zmpassword;
- }
- else
- {
- tail += success;
- }
- NVRDataModel.log("auth computed is : " + tail);
- proceedwithCgiAfterAuth(urls, tail);
- },
- function(error)
- {
- NVRDataModel.log("Should never come here, getAuthKey doesn't return error");
-
- });
-
- //console.log ("****CDING " + tail);
- }
- else // no auth case
- {
- proceedwithCgiAfterAuth(urls, tail);
- }
-
- function proceedwithCgiAfterAuth(urls, tail)
- {
-
- $ionicLoading.show(
- {
- template: $translate.instant('kDiscovering') + "...",
- noBackdrop: true,
- duration: zm.httpTimeout
- });
-
- findFirstReachableUrl(urls, tail)
- .then(function(success)
- {
- $ionicLoading.hide();
- NVRDataModel.log("Valid cgi-bin found with: " + success);
- $scope.wizard.streamingURL = success;
- $scope.wizard.streamingValidText = "cgi-bin: " + $scope.wizard.streamingURL;
- $scope.wizard.streamingColor = "#16a085";
- d.resolve(true);
- return d.promise;
-
- },
- function(error)
- {
- $ionicLoading.hide();
- NVRDataModel.debug("No cgi-bin found: " + JSON.stringify(error));
- $scope.wizard.streamingValidText = $translate.instant('kPortalCgiBinFailed');
- $scope.wizard.streamingColor = "#e74c3c";
- d.reject(false);
- return (d.promise);
- });
- }
- },
- function(error)
- {
- $ionicLoading.hide();
- $scope.wizard.streamingValidText = $translate.instant('kPortalCgiBinFailed') + " -" + $translate.instant('kPortalNoMonitorFound');
- $scope.wizard.streamingColor = "#e74c3c";
- d.reject(false);
- return (d.promise);
-
- });
- }
-
- // https://server/zm/cgi-bin/nph-zms?mode=single&monitor=1&user=admin&pass=cc
-
- return d.promise;
-
- }
-
- //--------------------------------------------------------------------------
- // Finds an appropriate API to use
- //--------------------------------------------------------------------------
-
- function detectapi()
- {
- var u = $scope.wizard.loginURL;
- var d = $q.defer();
- var api1 = u + "/api";
- var api3 = u + "/zm/api";
- var c = URI.parse(u);
-
- // lets also try without the path
- var api2 = c.scheme + "://";
- if (c.userinfo) api2 += c.userinfo + "@";
- api2 += c.host;
- if (c.port) api2 += ":" + c.port;
- api2 += "/api";
-
- // lets try both /zm/api and /api. What else is there?
- var apilist = [api1, api2, api3];
-
- findFirstReachableUrl(apilist, '/host/getVersion.json')
- .then(function(success)
- {
- NVRDataModel.log("Valid API response found with:" + success);
- $scope.wizard.apiURL = success;
-
- $scope.wizard.apiValidText = "API: " + $scope.wizard.apiURL;
- $scope.wizard.apiColor = "#16a085";
+ });
+
+ findFirstReachableUrl(urls, tail)
+ .then(function (success) {
+ $ionicLoading.hide();
+ NVRDataModel.log("Valid cgi-bin found with: " + success);
+ $scope.wizard.streamingURL = success;
+ $scope.wizard.streamingValidText = "cgi-bin: " + $scope.wizard.streamingURL;
+ $scope.wizard.streamingColor = "#16a085";
d.resolve(true);
return d.promise;
- },
- function(error)
- {
- //console.log("No APIs found: " + error);
- $scope.wizard.apiValidText = $translate.instant('kPortalAPIFailed');
- $scope.wizard.apiColor = "#e74c3c";
+
+ },
+ function (error) {
+ $ionicLoading.hide();
+ NVRDataModel.debug("No cgi-bin found: " + JSON.stringify(error));
+ $scope.wizard.streamingValidText = $translate.instant('kPortalCgiBinFailed');
+ $scope.wizard.streamingColor = "#e74c3c";
d.reject(false);
return (d.promise);
- });
-
- return d.promise;
+ });
+ }
+ },
+ function (error) {
+ $ionicLoading.hide();
+ $scope.wizard.streamingValidText = $translate.instant('kPortalCgiBinFailed') + " -" + $translate.instant('kPortalNoMonitorFound');
+ $scope.wizard.streamingColor = "#e74c3c";
+ d.reject(false);
+ return (d.promise);
+
+ });
}
- //--------------------------------------------------------------------------
- // logs out of ZM
- //--------------------------------------------------------------------------
-
- function logout(u)
- {
- var d = $q.defer();
-
- $http(
- {
- method: 'POST',
- url: u,
- headers:
- {
- 'Content-Type': 'application/x-www-form-urlencoded',
- 'Accept': 'application/json',
- },
- transformRequest: function(obj)
- {
- var str = [];
- for (var p in obj)
- str.push(encodeURIComponent(p) + "=" +
- encodeURIComponent(obj[p]));
- var params = str.join("&");
- return params;
- },
-
- data:
- {
- action: "logout",
- view: "login"
- }
- })
- .then(function(success)
- {
- $rootScope.zmCookie = "";
- //console.log("ZMlogout success, cookie removed");
- d.resolve(true);
- return d.promise;
- }, function(error)
- {
- //console.log("ZMlogout success");
- d.resolve(true);
- return d.promise;
- });
+ // https://server/zm/cgi-bin/nph-zms?mode=single&monitor=1&user=admin&pass=cc
+
+ return d.promise;
+
+ }
+
+ //--------------------------------------------------------------------------
+ // Finds an appropriate API to use
+ //--------------------------------------------------------------------------
+
+ function detectapi() {
+ var u = $scope.wizard.loginURL;
+ var d = $q.defer();
+ var api1 = u + "/api";
+ var api3 = u + "/zm/api";
+ var c = URI.parse(u);
+
+ // lets also try without the path
+ var api2 = c.scheme + "://";
+ if (c.userinfo) api2 += c.userinfo + "@";
+ api2 += c.host;
+ if (c.port) api2 += ":" + c.port;
+ api2 += "/api";
+
+ // lets try both /zm/api and /api. What else is there?
+ var apilist = [api1, api2, api3];
+
+ findFirstReachableUrl(apilist, '/host/getVersion.json')
+ .then(function (success) {
+ NVRDataModel.log("Valid API response found with:" + success);
+ $scope.wizard.apiURL = success;
+
+ $scope.wizard.apiValidText = "API: " + $scope.wizard.apiURL;
+ $scope.wizard.apiColor = "#16a085";
+ d.resolve(true);
+ return d.promise;
+ },
+ function (error) {
+ //console.log("No APIs found: " + error);
+ $scope.wizard.apiValidText = $translate.instant('kPortalAPIFailed');
+ $scope.wizard.apiColor = "#e74c3c";
+ d.reject(false);
+ return (d.promise);
+ });
+ return d.promise;
+ }
+
+ //--------------------------------------------------------------------------
+ // logs out of ZM
+ //--------------------------------------------------------------------------
+
+ function logout(u) {
+ var d = $q.defer();
+
+ $http({
+ method: 'POST',
+ url: u,
+ headers: {
+ 'Content-Type': 'application/x-www-form-urlencoded',
+ 'Accept': 'application/json',
+ },
+ transformRequest: function (obj) {
+ var str = [];
+ for (var p in obj)
+ str.push(encodeURIComponent(p) + "=" +
+ encodeURIComponent(obj[p]));
+ var params = str.join("&");
+ return params;
+ },
+
+ data: {
+ action: "logout",
+ view: "login"
+ }
+ })
+ .then(function (success) {
+ $rootScope.zmCookie = "";
+ //console.log("ZMlogout success, cookie removed");
+ d.resolve(true);
return d.promise;
-
+ }, function (error) {
+ //console.log("ZMlogout success");
+ d.resolve(true);
+ return d.promise;
+ });
+
+ return d.promise;
+
+ }
+
+ //--------------------------------------------------------------------------
+ // clears all status updates in the verify results page - if you
+ // get back to it
+ //--------------------------------------------------------------------------
+
+ $scope.enterResults = function () {
+ $scope.portalValidText = "";
+ $scope.apiValidateText = "";
+ $scope.streamingValidateText = "";
+ $scope.wizard.fqportal = "";
+ return true;
+ };
+ //--------------------------------------------------------------------------
+ // tries to log into the portal and then discover api and cgi-bin
+ //--------------------------------------------------------------------------
+
+ function validateData() {
+ $rootScope.authSession = 'undefined';
+ $rootScope.zmCookie = '';
+
+ $scope.wizard.portalValidText = "";
+ $scope.wizard.apiValidText = "";
+ $scope.wizard.streamingValidText = "";
+ $scope.wizard.fqportal = "";
+ $scope.wizard.loginURL = "";
+ $scope.wizard.apiURL = "";
+ $scope.wizard.streamingURL = "";
+ $scope.wizard.serverName = "";
+
+ var d = $q.defer();
+
+ var c = URI.parse($scope.wizard.portalurl);
+
+ $scope.wizard.serverName = c.host;
+ if (c.port)
+ $scope.wizard.serverName += "-" + c.port;
+
+ var b = "";
+ if ($scope.wizard.useauth && $scope.wizard.usebasicauth) {
+ // b = $scope.wizard.basicuser + ":" + $scope.wizard.basicpassword + "@";
+ //console.log("B=" + b);
+ $rootScope.basicAuthHeader = 'Basic ' + btoa($scope.wizard.basicuser + ':' + $scope.wizard.basicpassword);
+ //console.log (">>>> WIZARD SET BASIC AUTH TO " + $rootScope.basicAuthHeader);
}
+ var u = c.scheme + "://" + b + c.host;
+ if (c.port) u += ":" + c.port;
+ if (c.path) u += c.path;
- //--------------------------------------------------------------------------
- // clears all status updates in the verify results page - if you
- // get back to it
- //--------------------------------------------------------------------------
-
- $scope.enterResults = function()
- {
- $scope.portalValidText = "";
- $scope.apiValidateText = "";
- $scope.streamingValidateText = "";
- $scope.wizard.fqportal = "";
- return true;
- };
- //--------------------------------------------------------------------------
- // tries to log into the portal and then discover api and cgi-bin
- //--------------------------------------------------------------------------
-
- function validateData()
- {
- $rootScope.authSession = 'undefined';
- $rootScope.zmCookie = '';
-
- $scope.wizard.portalValidText = "";
- $scope.wizard.apiValidText = "";
- $scope.wizard.streamingValidText = "";
- $scope.wizard.fqportal = "";
- $scope.wizard.loginURL = "";
- $scope.wizard.apiURL = "";
- $scope.wizard.streamingURL = "";
- $scope.wizard.serverName = "";
-
- var d = $q.defer();
-
- var c = URI.parse($scope.wizard.portalurl);
-
- $scope.wizard.serverName = c.host;
- if (c.port)
- $scope.wizard.serverName += "-" + c.port;
-
- var b = "";
- if ($scope.wizard.useauth && $scope.wizard.usebasicauth)
- {
- // b = $scope.wizard.basicuser + ":" + $scope.wizard.basicpassword + "@";
- //console.log("B=" + b);
- $rootScope.basicAuthHeader = 'Basic ' + btoa($scope.wizard.basicuser+':'+$scope.wizard.basicpassword);
- //console.log (">>>> WIZARD SET BASIC AUTH TO " + $rootScope.basicAuthHeader);
- }
- var u = c.scheme + "://" + b + c.host;
- if (c.port) u += ":" + c.port;
- if (c.path) u += c.path;
-
- if (u.slice(-1) == '/')
- {
- u = u.slice(0, -1);
+ if (u.slice(-1) == '/') {
+ u = u.slice(0, -1);
- }
+ }
- $scope.wizard.fqportal = u;
+ $scope.wizard.fqportal = u;
- u = u + '/index.php';
- NVRDataModel.log("Wizard: login url is " + u);
+ u = u + '/index.php';
+ NVRDataModel.log("Wizard: login url is " + u);
- // now lets login
+ // now lets login
- var zmu = "x";
- var zmp = "x";
- if ($scope.wizard.usezmauth)
- {
- zmu = $scope.wizard.zmuser;
- zmp = $scope.wizard.zmpassword;
- }
+ var zmu = "x";
+ var zmp = "x";
+ if ($scope.wizard.usezmauth) {
+ zmu = $scope.wizard.zmuser;
+ zmp = $scope.wizard.zmpassword;
+ }
- // logout first for the adventurers amongst us who must
- // use it even after logging in
- NVRDataModel.log("zmWizard: logging out");
- $ionicLoading.show(
- {
- template: $translate.instant('kCleaningUp') + "...",
- noBackdrop: true,
- duration: zm.httpTimeout
+ // logout first for the adventurers amongst us who must
+ // use it even after logging in
+ NVRDataModel.log("zmWizard: logging out");
+ $ionicLoading.show({
+ template: $translate.instant('kCleaningUp') + "...",
+ noBackdrop: true,
+ duration: zm.httpTimeout
+ });
+ logout(u)
+ .then(function (ans) {
+ // login now
+ $ionicLoading.hide();
+ NVRDataModel.log("zmWizard: logging in with " + u + " " + zmu);
+
+ // The logic will be:
+ // Login then do an api detect and cgi-detect together
+ $ionicLoading.show({
+ template: $translate.instant('kDiscoveringPortal') + "...",
+ noBackdrop: true,
+ duration: zm.httpTimeout
});
- logout(u)
- .then(function(ans)
- {
- // login now
- $ionicLoading.hide();
- NVRDataModel.log("zmWizard: logging in with " + u + " " + zmu);
-
- // The logic will be:
- // Login then do an api detect and cgi-detect together
- $ionicLoading.show(
- {
- template: $translate.instant('kDiscoveringPortal') + "...",
- noBackdrop: true,
- duration: zm.httpTimeout
- });
- login(u, zmu, zmp)
- .then(function(success)
- {
- $ionicLoading.hide();
- NVRDataModel.log("zmWizard: login succeeded");
-
- // API Detection
- $ionicLoading.show(
- {
- template: $translate.instant('kDiscoveringAPI') + "...",
- noBackdrop: true,
- duration: zm.httpTimeout
- });
- detectapi()
- .then(function(success)
- {
- $ionicLoading.hide();
- NVRDataModel.log("zmWizard: API succeeded");
-
- $ionicLoading.show(
- {
- template: $translate.instant('kDiscoveringCGI') + "...",
- noBackdrop: true,
- duration: zm.httpTimeout
- });
- // CGI detection
- detectcgi()
- .then(function(success)
- {
- $ionicLoading.hide();
- // return true here because we want to progress
- return d.resolve(true);
- },
- function(error)
- {
- $ionicLoading.hide();
- // return true here because we want to progress
- return d.resolve(true);
- });
- },
- function(error)
- {
- $ionicLoading.hide();
- NVRDataModel.log("zmWizard: api failed");
-
- // return true here because we want to progress
- return d.resolve(true);
- });
-
+ login(u, zmu, zmp)
+ .then(function (success) {
+ $ionicLoading.hide();
+ NVRDataModel.log("zmWizard: login succeeded");
+
+ // API Detection
+ $ionicLoading.show({
+ template: $translate.instant('kDiscoveringAPI') + "...",
+ noBackdrop: true,
+ duration: zm.httpTimeout
+ });
+ detectapi()
+ .then(function (success) {
+ $ionicLoading.hide();
+ NVRDataModel.log("zmWizard: API succeeded");
+
+ $ionicLoading.show({
+ template: $translate.instant('kDiscoveringCGI') + "...",
+ noBackdrop: true,
+ duration: zm.httpTimeout
+ });
+ // CGI detection
+ detectcgi()
+ .then(function (success) {
+ $ionicLoading.hide();
+ // return true here because we want to progress
+ return d.resolve(true);
},
-
- // if login failed, don't progress in the wizard
- function(error)
- {
- $ionicLoading.hide();
- NVRDataModel.log("zmWizard: login failed");
- $scope.wizard.portalValidText = $translate.instant('kPortalLoginUnsuccessful');
- $scope.wizard.portalColor = "#e74c3c";
- return d.resolve(true);
-
+ function (error) {
+ $ionicLoading.hide();
+ // return true here because we want to progress
+ return d.resolve(true);
});
+ },
+ function (error) {
+ $ionicLoading.hide();
+ NVRDataModel.log("zmWizard: api failed");
- }); //finally
- return d.promise;
- }
-
- //--------------------------------------------------------------------------
- // checks for a protocol
- //--------------------------------------------------------------------------
- function checkscheme(url)
- {
+ // return true here because we want to progress
+ return d.resolve(true);
+ });
- if ((!/^(f|ht)tps?:\/\//i.test(url)) && (url != ""))
- {
- return false;
- }
- else
- return true;
- }
+ },
- //--------------------------------------------------------------------------
- // exit validator for auth wizard
- //--------------------------------------------------------------------------
+ // if login failed, don't progress in the wizard
+ function (error) {
+ $ionicLoading.hide();
+ NVRDataModel.log("zmWizard: login failed");
+ $scope.wizard.portalValidText = $translate.instant('kPortalLoginUnsuccessful');
+ $scope.wizard.portalColor = "#e74c3c";
+ return d.resolve(true);
- $scope.exitAuth = function()
- {
- NVRDataModel.log("Wizard: validating auth syntax");
- if ($scope.wizard.useauth)
- {
- if (!$scope.wizard.usezmauth && !$scope.wizard.usebasicauth)
- {
- $rootScope.zmPopup = SecuredPopups.show('show',
- {
- title: $translate.instant('kError'),
- template: $translate.instant('kOneAuth'),
- buttons: [
- {
- text: $translate.instant('kButtonOk')
- }]
-
- });
- return false;
- }
- if ($scope.wizard.usezmauth)
- {
- if ((!$scope.wizard.zmuser) || (!$scope.wizard.zmpassword))
- {
- $rootScope.zmPopup = SecuredPopups.show('show',
- {
- title: $translate.instant('kError'),
- template: $translate.instant('kValidNameZMAuth'),
- buttons: [
- {
- text: $translate.instant('kButtonOk')
- }]
-
- });
- return false;
- }
- }
+ });
- if ($scope.wizard.usebasicauth)
- {
- if ((!$scope.wizard.basicuser) || (!$scope.wizard.basicpassword))
- {
- $rootScope.zmPopup = SecuredPopups.show('show',
- {
- title: $translate.instant('kError'),
- template: $translate.instant('kValidNameBasicAuth'),
- buttons: [
- {
- text: $translate.instant('kButtonOk')
- }]
+ }); //finally
+ return d.promise;
+ }
+
+ //--------------------------------------------------------------------------
+ // checks for a protocol
+ //--------------------------------------------------------------------------
+ function checkscheme(url) {
+
+ if ((!/^(f|ht)tps?:\/\//i.test(url)) && (url != "")) {
+ return false;
+ } else
+ return true;
+ }
+
+ //--------------------------------------------------------------------------
+ // exit validator for auth wizard
+ //--------------------------------------------------------------------------
+
+ $scope.exitAuth = function () {
+ NVRDataModel.log("Wizard: validating auth syntax");
+ if ($scope.wizard.useauth) {
+ if (!$scope.wizard.usezmauth && !$scope.wizard.usebasicauth) {
+ $rootScope.zmPopup = SecuredPopups.show('show', {
+ title: $translate.instant('kError'),
+ template: $translate.instant('kOneAuth'),
+ buttons: [{
+ text: $translate.instant('kButtonOk')
+ }]
- });
- return false;
- }
- }
+ });
+ return false;
+ }
+ if ($scope.wizard.usezmauth) {
+ if ((!$scope.wizard.zmuser) || (!$scope.wizard.zmpassword)) {
+ $rootScope.zmPopup = SecuredPopups.show('show', {
+ title: $translate.instant('kError'),
+ template: $translate.instant('kValidNameZMAuth'),
+ buttons: [{
+ text: $translate.instant('kButtonOk')
+ }]
+
+ });
+ return false;
}
- // Coming here means we can go to the next step
- // load the step
- WizardHandler.wizard().next();
- // start discovery;
- validateData();
-
- };
-
- //--------------------------------------------------------------------------
- // validator for portal url wizard
- //--------------------------------------------------------------------------
-
- $scope.exitPortal = function()
- {
- NVRDataModel.log("Wizard: validating portal url syntax");
-
- if (!$scope.wizard.portalurl)
- {
- $rootScope.zmPopup = SecuredPopups.show('show',
- {
- title: $translate.instant('kError'),
- template: $translate.instant('kPortalEmpty'),
- buttons: [
- {
- text: $translate.instant('kButtonOk')
- }]
-
- });
- return false;
+ }
+
+ if ($scope.wizard.usebasicauth) {
+ if ((!$scope.wizard.basicuser) || (!$scope.wizard.basicpassword)) {
+ $rootScope.zmPopup = SecuredPopups.show('show', {
+ title: $translate.instant('kError'),
+ template: $translate.instant('kValidNameBasicAuth'),
+ buttons: [{
+ text: $translate.instant('kButtonOk')
+ }]
+
+ });
+ return false;
}
+ }
+ }
+ // Coming here means we can go to the next step
+ // load the step
+ WizardHandler.wizard().next();
+ // start discovery;
+ validateData();
+
+ };
+
+ //--------------------------------------------------------------------------
+ // validator for portal url wizard
+ //--------------------------------------------------------------------------
+
+ $scope.exitPortal = function () {
+ NVRDataModel.log("Wizard: validating portal url syntax");
+
+ if (!$scope.wizard.portalurl) {
+ $rootScope.zmPopup = SecuredPopups.show('show', {
+ title: $translate.instant('kError'),
+ template: $translate.instant('kPortalEmpty'),
+ buttons: [{
+ text: $translate.instant('kButtonOk')
+ }]
+
+ });
+ return false;
+ }
- if (!checkscheme($scope.wizard.portalurl))
- {
-
- $scope.portalproto = [
- {
- text: "http",
- value: "http://"
- },
- {
- text: "https",
- value: "https://"
- }];
- $scope.myproto = {
- proto: ""
- };
-
- $rootScope.zmPopup = $ionicPopup.show(
- {
- title: $translate.instant('kPortalNoProto'),
- scope: $scope,
- template: $translate.instant('kPortalPleaseSelect') + ': <ion-radio-fix ng-repeat="item in portalproto" ng-value="item.value" ng-model="myproto.proto">{{item.text}}</ion-radio-fix>',
- buttons: [
- {
- text: $translate.instant('kButtonOk'),
- onTap: function(e)
- {
- NVRDataModel.debug("Protocol selected:" + $scope.myproto.proto);
- $scope.wizard.portalurl = $scope.myproto.proto + stripProto($scope.wizard.portalurl);
- }
-
- }]
+ if (!checkscheme($scope.wizard.portalurl)) {
- });
- return false;
+ $scope.portalproto = [{
+ text: "http",
+ value: "http://"
+ },
+ {
+ text: "https",
+ value: "https://"
}
+ ];
+ $scope.myproto = {
+ proto: ""
+ };
+
+ $rootScope.zmPopup = $ionicPopup.show({
+ title: $translate.instant('kPortalNoProto'),
+ scope: $scope,
+ template: $translate.instant('kPortalPleaseSelect') + ': <ion-radio-fix ng-repeat="item in portalproto" ng-value="item.value" ng-model="myproto.proto">{{item.text}}</ion-radio-fix>',
+ buttons: [{
+ text: $translate.instant('kButtonOk'),
+ onTap: function (e) {
+ NVRDataModel.debug("Protocol selected:" + $scope.myproto.proto);
+ $scope.wizard.portalurl = $scope.myproto.proto + stripProto($scope.wizard.portalurl);
+ }
+
+ }]
+
+ });
+ return false;
+ }
- //$scope.wizard.portalurl = $scope.wizard.portalurl.toLowerCase().trim();
- $scope.wizard.portalurl = $scope.wizard.portalurl.trim();
+ //$scope.wizard.portalurl = $scope.wizard.portalurl.toLowerCase().trim();
+ $scope.wizard.portalurl = $scope.wizard.portalurl.trim();
- NVRDataModel.log("Wizard: stripped url:" + $scope.wizard.portalurl);
+ NVRDataModel.log("Wizard: stripped url:" + $scope.wizard.portalurl);
- var c = URI.parse($scope.wizard.portalurl);
+ var c = URI.parse($scope.wizard.portalurl);
- if (!c.scheme)
- {
- $rootScope.zmPopup = SecuredPopups.show('show',
- {
- title: $translate.instant('kError'),
- template: $translate.instant('kPortalInvalidUrl'),
- buttons: [
- {
- text: $translate.instant('kButtonOk')
- }]
+ if (!c.scheme) {
+ $rootScope.zmPopup = SecuredPopups.show('show', {
+ title: $translate.instant('kError'),
+ template: $translate.instant('kPortalInvalidUrl'),
+ buttons: [{
+ text: $translate.instant('kButtonOk')
+ }]
- });
- return false;
- }
-
- if (c.userinfo) // basic auth stuff in here, take it out and put it into the next screen
- {
- $scope.wizard.useauth = true;
- $scope.wizard.usebasicauth = true;
- var barray = c.userinfo.split(":", 2);
- $scope.wizard.basicuser = barray[0];
- $scope.wizard.basicpassword = barray[1];
- }
+ });
+ return false;
+ }
- $scope.wizard.portalurl = c.scheme + "://";
- if (c.host) $scope.wizard.portalurl += c.host;
- if (c.port) $scope.wizard.portalurl += ":" + c.port;
- if (c.path) $scope.wizard.portalurl += c.path;
+ if (c.userinfo) // basic auth stuff in here, take it out and put it into the next screen
+ {
+ $scope.wizard.useauth = true;
+ $scope.wizard.usebasicauth = true;
+ var barray = c.userinfo.split(":", 2);
+ $scope.wizard.basicuser = barray[0];
+ $scope.wizard.basicpassword = barray[1];
+ }
- $scope.wizard.portalurl = $scope.wizard.portalurl.toLowerCase();
- NVRDataModel.log("Wizard: normalized url:" + $scope.wizard.portalurl);
- return true;
- };
+ $scope.wizard.portalurl = c.scheme + "://";
+ if (c.host) $scope.wizard.portalurl += c.host;
+ if (c.port) $scope.wizard.portalurl += ":" + c.port;
+ if (c.path) $scope.wizard.portalurl += c.path;
- //--------------------------------------------------------------------------
- // part of auth wizard - toggles display of auth components
- //--------------------------------------------------------------------------
- $scope.toggleAuth = function()
- {
+ $scope.wizard.portalurl = $scope.wizard.portalurl.toLowerCase();
+ NVRDataModel.log("Wizard: normalized url:" + $scope.wizard.portalurl);
+ return true;
+ };
- if (!$scope.wizard.useauth)
- {
- $scope.wizard.usebasicauth = false;
- $scope.wizard.usezmauth = false;
- }
- };
+ //--------------------------------------------------------------------------
+ // part of auth wizard - toggles display of auth components
+ //--------------------------------------------------------------------------
+ $scope.toggleAuth = function () {
- //--------------------------------------------------------------------------
- // global tip toggler for all wizard steps
- //--------------------------------------------------------------------------
- $scope.toggleTip = function()
- {
- $scope.wizard.tipshow = !$scope.wizard.tipshow;
- if ($scope.wizard.tipshow)
- $scope.wizard.tiptext = $translate.instant('kHideTip');
- else
- $scope.wizard.tiptext = $translate.instant('kShowTip');
- };
+ if (!$scope.wizard.useauth) {
+ $scope.wizard.usebasicauth = false;
+ $scope.wizard.usezmauth = false;
+ }
+ };
+
+ //--------------------------------------------------------------------------
+ // global tip toggler for all wizard steps
+ //--------------------------------------------------------------------------
+ $scope.toggleTip = function () {
+ $scope.wizard.tipshow = !$scope.wizard.tipshow;
+ if ($scope.wizard.tipshow)
+ $scope.wizard.tiptext = $translate.instant('kHideTip');
+ else
+ $scope.wizard.tiptext = $translate.instant('kShowTip');
+ };
+
+ $scope.gotoLoginState = function () {
+ $rootScope.wizard = angular.copy($scope.wizard);
+ $ionicHistory.nextViewOptions({
+ disableBack: true
+ });
+ $state.go("app.login", {
+ "wizard": true
+ });
+ return;
+ };
+
+ //--------------------------------------------------------------------------
+ // initial
+ //--------------------------------------------------------------------------
+ $scope.$on('$ionicView.beforeEnter', function () {
+ //console.log("**VIEW ** Help Ctrl Entered");
+
+ var monId = -1;
+ $scope.wizard = {
+ tipshow: false,
+ tiptext: $translate.instant('kShowTip'),
+ useauth: false,
+ usebasicauth: false,
+ usezmauth: false,
+ portalurl: "",
+ basicuser: "",
+ basicpassword: "",
+ zmuser: "",
+ zmpassword: "",
+ ///////////////////////
+ loginURL: "",
+ apiURL: "",
+ streamingURL: "",
+ fqportal: "",
+ portalValidText: "",
+ portalColor: "",
+ apiValidText: "",
+ apiColor: "",
+ streamingValidText: "",
+ streamingColor: "",
+ serverName: "",
- $scope.gotoLoginState = function()
- {
- $rootScope.wizard = angular.copy($scope.wizard);
- $ionicHistory.nextViewOptions(
- {
- disableBack: true
- });
- $state.go("app.login",
- {
- "wizard": true
- });
- return;
};
- //--------------------------------------------------------------------------
- // initial
- //--------------------------------------------------------------------------
- $scope.$on('$ionicView.beforeEnter', function()
- {
- //console.log("**VIEW ** Help Ctrl Entered");
-
- var monId = -1;
- $scope.wizard = {
- tipshow: false,
- tiptext: $translate.instant('kShowTip'),
- useauth: false,
- usebasicauth: false,
- usezmauth: false,
- portalurl: "",
- basicuser: "",
- basicpassword: "",
- zmuser: "",
- zmpassword: "",
- ///////////////////////
- loginURL: "",
- apiURL: "",
- streamingURL: "",
- fqportal: "",
- portalValidText: "",
- portalColor: "",
- apiValidText: "",
- apiColor: "",
- streamingValidText: "",
- streamingColor: "",
- serverName: "",
-
- };
-
- });
+ });
}]);