angular.module("AdLinApp", ["ngRoute", "ngResource", "ngSanitize"]) .config(function($routeProvider, $locationProvider) { $routeProvider .when("/auth", { controller: "AuthController", templateUrl: "views/auth.html" }) .when("/domains", { controller: "DomainsController", templateUrl: "views/domains.html" }) .when("/tunnels", { controller: "TunnelsController", templateUrl: "views/tunnels.html" }) .when("/", { templateUrl: "views/home.html" }); $locationProvider.html5Mode(true); }); angular.module("AdLinApp") .factory("Student", function($resource) { return $resource("/api/students/:studentId", { studentId: '@id' }, { 'update': {method: 'PUT'}, }) }) .factory("Progression", function($resource) { return $resource("/api/progress") }) .factory("Challenge", function($resource) { return $resource("/challenge/:challengeId", { challengeId: '@id' }) }); angular.module("AdLinApp") .run(function($rootScope, $interval, $http) { $rootScope.checkLoginState = function() { if (sessionStorage.token === undefined) { $rootScope.isLogged = false; return; } var token = sessionStorage.token; $http({ method: 'GET', url: "/api/auth", headers: { 'Authorization': "Bearer " + token } }).then(function(response) { $rootScope.isLogged = response.data; $rootScope.student = response.data; }, function(response) { $rootScope.isLogged = false; }); }; $rootScope.checkLoginState(); $interval($rootScope.checkLoginState, 20000); $rootScope.disconnectCurrentUser = function() { sessionStorage.token = undefined; delete sessionStorage.token; $rootScope.isLogged = false; } }) .controller("ProgressionController", function($scope, $interval, $http) { $scope.mychallenges = {}; var refreshChal = function() { $http.get("/api/students/" + $scope.student.id + "/progress").then(function(response) { $scope.mychallenges = response.data }); } refreshChal(); $interval(refreshChal, 15750); }) .controller("AuthController", function($scope, $rootScope, $http, $location) { $scope.auth = { "username": "", "password": "", }; $scope.logmein = function() { $scope.pleaseWait = true; $http({ method: 'POST', url: "/api/auth", data: $scope.auth }).then(function(response) { sessionStorage.token = response.data.id_session $scope.pleaseWait = false; $rootScope.checkLoginState(); $location.url("/"); }, function(response) { $scope.pleaseWait = false; if (response.data && response.data.errmsg) alert(response.data.errmsg); }); } }) .controller("TunnelsController", function($scope, $http, $interval) { $scope.updateTunnelInfo = function() { $http({ method: 'GET', url: "/api/wginfo", headers: { 'Authorization': "Bearer " + sessionStorage.token } }).then(function(response) { $scope.wginfo = response.data; }); }; $scope.updateTunnelInfo(); $scope.updateTunnelsList = function() { $http({ method: 'GET', url: "/api/wg/", headers: { 'Authorization': "Bearer " + sessionStorage.token } }).then(function(response) { $scope.tunnels = response.data; }, function(response) { if (response.data && response.data.errmsg) alert(response.data.errmsg); }); }; $scope.updateTunnelsList(); $interval($scope.updateTunnelsList, 12000); $scope.newTunnel = function() { $scope.pleaseWaitNew = true; $http({ method: 'POST', url: "/api/wg/", headers: { 'Authorization': "Bearer " + sessionStorage.token }, data: {} }).then(function(response) { $scope.updateTunnelsList(); $scope.pleaseWaitNew = false; }, function(response) { $scope.pleaseWaitNew = false; alert(response.data.errmsg); }); } $scope.dropTunnel = function(tunnel) { tunnel.pleaseWaitDrop = true; $http({ method: 'DELETE', url: "/api/wg/" + tunnel.TokenText, headers: { 'Authorization': "Bearer " + sessionStorage.token }, data: {} }).then(function(response) { $scope.updateTunnelsList(); tunnel.pleaseWaitDrop = false; }, function(response) { tunnel.pleaseWaitDrop = false; alert(response.data.errmsg); }); } }) .controller("DomainsController", function($scope, $http, $interval, $location) { var onUpdateEvt = []; var callOnUpdateEvt = function() { angular.forEach(onUpdateEvt, function(cb) { cb(); }); } $scope.addOnUpdateEvent = function(cb) { onUpdateEvt.push(cb); } $scope.updateAssociationD = function() { $http({ method: 'GET', url: "/api/adomains/", headers: { 'Authorization': "Bearer " + sessionStorage.token }, }).then(function(response) { $scope.adomains = []; response.data.forEach(function(domain) { $http({ method: 'GET', url: "/api/adomains/" + domain, headers: { 'Authorization': "Bearer " + sessionStorage.token }, }).then(function(response) { response.data.forEach(function(rr) { $scope.adomains.push(rr); }); }); }, function(response) { alert(response.data.errmsg); }); }); }; $scope.updateAssociationD(); $scope.updateDelegatedD = function() { $http({ method: 'GET', url: "/api/ddomains/", headers: { 'Authorization': "Bearer " + sessionStorage.token }, }).then(function(response) { response.data.forEach(function(domain) { $scope.ddomains = response.data; }, function(response) { alert(response.data.errmsg); }); }); }; $scope.updateDelegatedD(); $scope.newAssociationD = function() { $scope.pleaseWaitNewAssociation = true; $http({ method: 'POST', url: "/api/adomains/", headers: { 'Authorization': "Bearer " + sessionStorage.token }, }).then(function(response) { $scope.updateAssociationD(); $scope.pleaseWaitNewAssociation = false; }, function(response) { $scope.pleaseWaitNewAssociation = false; alert(response.data.errmsg); }); } $scope.addNS = function(domain) { $scope.nsrr = { "domain": domain, "ttl": 900, "rr": "NS", "values": [""], } $('#NSModal').modal('show'); } $scope.updateNS = function(domain, rr) { $scope.nsrr = { "domain": domain, "ttl": 900, "rr": "NS", "valuesfrom": rr.values, "values": rr.values, } $('#NSModal').modal('show'); } $scope.addGLUE = function(domain) { $scope.nsrr = { "domain": domain, "ttl": 900, "rr": "AAAA", "values": [""], } $('#NSModal').modal('show'); } $scope.updateGLUE = function(domain, rr) { $scope.nsrr = { "domain": domain, "ttl": 900, "rr": "AAAA", "valuesfrom": rr.values, "values": rr.values, } $('#NSModal').modal('show'); } $scope.addDS = function(domain) { $scope.nsrr = { "domain": domain, "ttl": 900, "rr": "DS", "labels": ["Key Tag", "Flag", "Algorithme", "Clef publique (base64)"], "values": ["", "", "", ""], } $('#NSModal').modal('show'); } $scope.updateDS = function(domain, rr) { $scope.nsrr = { "domain": domain, "ttl": 900, "rr": "DS", "labels": ["Key Tag", "Algo clef", "Algo hash", "Hash (hex)"], "valuesfrom": rr.values, "values": rr.values, } $('#NSModal').modal('show'); } $scope.saveNSRR = function(nsrr) { nsrr.values = nsrr.values.join(" "); $http({ method: (nsrr.valuesfrom !== undefined)?'PATCH':'POST', url: "/api/ddomains/" + nsrr.domain + "/" + nsrr.rr, headers: { 'Authorization': "Bearer " + sessionStorage.token }, data: nsrr, }).then(function(response) { $('#NSModal').modal('hide'); callOnUpdateEvt(); }, function(response) { alert(response.data.errmsg); }); } $scope.deleteRR = function(domain, rr) { rr["pleaseWait" + rr.rr + "del"] = true; $http({ method: 'DELETE', url: "/api/ddomains/" + domain + "/" + rr.rr, headers: { 'Authorization': "Bearer " + sessionStorage.token }, data: rr, }).then(function(response) { callOnUpdateEvt(); rr["pleaseWait" + rr.rr + "del"] = false; }, function(response) { rr["pleaseWait" + rr.rr + "del"] = false; alert(response.data.errmsg); }); } }) .controller("NSDomainsController", function($scope, $http) { var updateNS = function() { $http({ method: 'GET', url: "/api/ddomains/" + $scope.domain + "/NS", headers: { 'Authorization': "Bearer " + sessionStorage.token }, }).then(function(response) { $scope.domainNS = response.data; }); } updateNS(); $scope.addOnUpdateEvent(updateNS); }) .controller("GLUEDomainsController", function($scope, $http) { var updateGLUE = function() { $http({ method: 'GET', url: "/api/ddomains/" + $scope.domain + "/GLUE", headers: { 'Authorization': "Bearer " + sessionStorage.token }, }).then(function(response) { $scope.domainGLUE = response.data; }); } updateGLUE(); $scope.addOnUpdateEvent(updateGLUE); }) .controller("DSDomainsController", function($scope, $http) { var updateDS = function() { $http({ method: 'GET', url: "/api/ddomains/" + $scope.domain + "/DS", headers: { 'Authorization': "Bearer " + sessionStorage.token }, }).then(function(response) { $scope.domainDS = response.data; }); } updateDS(); $scope.addOnUpdateEvent(updateDS); })