updated to the same stage than darkID project, but with own blockchain
jump to
@@ -1,6 +1,6 @@
'use strict'; -var urlapi = "http://127.0.0.1:3130/"; + var clientapi = "http://127.0.0.1:4100/"; // Declare app level module which depends on views, and components@@ -10,15 +10,18 @@ 'ngMessages',
'angularBootstrapMaterial', 'ui.bootstrap', 'toastr', + 'chart.js', 'app.navbar', 'app.main', 'app.signup', - 'app.login' + 'app.login', + 'app.id', + 'app.stats' ]). config(['$locationProvider', '$routeProvider', function($locationProvider, $routeProvider) { $locationProvider.hashPrefix('!'); - if ((localStorage.getItem('blid_token'))) { + if ((localStorage.getItem('old_darkID_token'))) { console.log(window.location.hash); if ((window.location.hash === '#!/login') || (window.location.hash === '#!/signup')) { window.location = '#!/main';@@ -31,8 +34,8 @@ } else {
if ((window.location !== '#!/login') || (window.location !== '#!/signup')) { console.log('app, user no logged'); - localStorage.removeItem('blid_token'); - localStorage.removeItem('blid_userdata'); + localStorage.removeItem('old_darkID_token'); + localStorage.removeItem('old_darkID_userdata'); window.location = '#!/login'; $routeProvider.otherwise({ redirectTo: '/login'
@@ -1,6 +1,6 @@
{ - "name": "angular-seed", - "description": "A starter project for AngularJS", + "name": "darkID-clientApp", + "description": "", "version": "0.0.0", "homepage": "", "license": "MIT",@@ -13,6 +13,7 @@ "angular-bootstrap-material": "abm#^0.1.4",
"angular-bootstrap": "^2.5.0", "components-font-awesome": "^4.7.0", "angular-toastr": "^2.1.1", - "cssMaterialColors": "*" + "cssMaterialColors": "*", + "angular-chart.js": "^1.1.1" } }
@@ -1,14 +1,32 @@
+@font-face { + font-family: Elianto; + src: url('../fonts/Elianto/Elianto.otf'); +} + body { /*background: #15191e!important;*/ background: #000000!important; color: #ffffff!important; + font-family: 'Open Sans', sans-serif!important; } + .card { - /*background: #1f262d!important;*/ + background: #1f262d!important; /*background: #15191e!important; color: #ffffff!important;*/ /*border: 1px solid #ffffff!important;*/ - background: #000000!important; color: #ffffff!important; } + +h1, h2, h3, h4, h5, h6 { + /*font-family: 'Raleway', sans-serif!important;*/ + font-family: 'Overpass Mono', monospace!important; +} + +.navbar-brand, .card-title, .navbar-nav { + font-family: 'Overpass Mono', monospace!important; +} +.btn { + font-family: 'Overpass Mono', monospace!important; +}
@@ -0,0 +1,15 @@
+{\rtf1\ansi\ansicpg1252\cocoartf1265\cocoasubrtf190 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\paperw11900\paperh16840\margl1440\margr1440\vieww10800\viewh8400\viewkind0 +\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardirnatural + +\f0\fs24 \cf0 Thanks for downloading BLANKA FONT !\ +\ +You can use it for free and commercial.\ +\ +Feedbacks are welcome !\ +\ +\'97\ +Emmeran RICHARD.\ +www.emmeranrichard.fr}
@@ -3,10 +3,16 @@ <html lang="en" ng-app="app" ng-cloak>
<head> <meta charset="utf-8"> - <title>blockchainIDsystem</title> + <title>darkID</title> <meta name="viewport" content="width=device-width, initial-scale=1"> - <link rel="icon" type="image/png" href="img/blockchainIDsystem-logo-black.png"> + <link rel="icon" type="image/png" href="img/darkID-logo-black.png"> + + <!-- Fonts --> + <!-- in development I use googlefonts to go faster, but for the final app, I'll use downloaded fonts --> + <link href="https://fonts.googleapis.com/css?family=Open+Sans|Overpass+Mono:700|Raleway:700" rel="stylesheet"> + + <link rel="stylesheet" href="bower_components/components-font-awesome/css/font-awesome.min.css">@@ -18,7 +24,7 @@ </head>
<body ng-app="webapp"> <div ng-include="'views/navbar.html'"></div> - <br><br><br><br><br> + <br><br><br><br> <div ng-view></div>@@ -48,6 +54,10 @@
<!-- jQuery for Bootstrap --> <script src="bower_components/jquery/dist/jquery.min.js"></script> + <!-- Angular Chart --> + <script src="bower_components/chart.js/dist/Chart.min.js"></script> + <script src="bower_components/angular-chart.js/dist/angular-chart.min.js"></script> + <!-- toastr --> <link rel="stylesheet" type="text/css" href="bower_components/angular-toastr/dist/angular-toastr.css" /> <script type="text/javascript" src="bower_components/angular-toastr/dist/angular-toastr.tpls.js"></script>@@ -58,6 +68,8 @@ <script src="views/navbar.js"></script>
<script src="views/main/main.js"></script> <script src="views/signup/signup.js"></script> <script src="views/login/login.js"></script> + <script src="views/id/id.js"></script> + <script src="views/stats/stats.js"></script> <!-- ELECTRON
@@ -17,9 +17,9 @@ // Create the browser window.
mainWindow = new BrowserWindow({ width: 850, height: 600, - icon: 'img/blockchainIDsystem-logo-white.png' + icon: 'img/darkID-logo-white.png' }) - tray = new Tray('img/blockchainIDsystem-logo-white.png') + tray = new Tray('img/darkID-logo-white.png') const contextMenu = Menu.buildFromTemplate([ {label: 'Obre la finestra', type: 'radio'}, {label: 'javascript madness', type: 'radio'},
@@ -1,7 +1,7 @@
{ - "name": "blockchainIDsystem-clientApp", + "name": "darkID-clientApp", "version": "1.0.0", - "description": "frontend desktop app for blockchainIDsystem", + "description": "frontend desktop app for darkID", "main": "main.js", "scripts": { "postinstall": "bower install",
@@ -0,0 +1,56 @@
+<div class="container"> + <div class="row"> + <div class="col-sm-2"> + + </div> + <div class="col-sm-8"> + <div class="card"> + <div class="card-body"> + <h4>ID: {{id.id}}</h4> + + <span class="pull-right">{{id.date | date: "dd.MM.y, HH:mm:ss"}}h</span> + + <span class="badge c_o_red300" ng-show="!id.verified">Not verified</span> + <span class="badge c_o_green300" ng-show="id.verified">Verified</span> + <span class="badge c_o_orange300" ng-show="!id.unblindedsig">Not signed</span> + <span class="badge c_o_blue300" ng-show="id.unblindedsig">Signed</span> + <span class="badge c_o_deepPurple300" ng-show="id.blockchainref">in Blockchain</span> + <div class="row"> + <textarea style="color:#000000;width:100%;" rows="4" + ng-model="decryptData.c" + placeholder="Enter here the proof-of-decrypt..." + ></textarea> + </div> + <h5 ng-show="decryptData.m">PoD:</h5> + {{decryptData.m}} + <div ng-click="decrypt()" ng-show="id.blockchainref" class="btn btn-raised pull-right c_o_pink300"> + Proof of decrypt + </div> + + <br><br><br><br><br> + <hr> + <h5>Testing only:</h5> + <div class="row"> + <textarea style="color:#000000;width:100%;" rows="4" + ng-model="encryptData.m" + placeholder="Enter here the unencrypted..." + ></textarea> + </div> + <div class="row"> + <textarea style="backgroud:grey;color:#000000;width:100%;" rows="4" + ng-model="encryptData.c" + placeholder="Encrypted data..." + ></textarea> + </div> + <div ng-click="encrypt()" ng-show="id.blockchainref" class="btn btn-raised pull-right c_o_orange300"> + Encrypt + </div> + </div> + </div> + </div> + <div class="col-sm-2"> + + </div> + + </div> +</div>
@@ -0,0 +1,76 @@
+'use strict'; + +angular.module('app.id', ['ngRoute']) + + .config(['$routeProvider', function($routeProvider) { + $routeProvider.when('/id/:keyid', { + templateUrl: 'views/id/id.html', + controller: 'IdCtrl' + }); + }]) + + .controller('IdCtrl', function($scope, $rootScope, $http, $routeParams) { + $scope.keyid = $routeParams.keyid; + $scope.decryptData = { + m:"", + c:"" + }; + $scope.encryptData = { + m:"", + c:"" + }; + + $rootScope.server = JSON.parse(localStorage.getItem("old_darkID_server")); + + $scope.id = {}; + $scope.clientApp = function(route, param) { + $http.get(clientapi + route + '/' + param) + .then(function(data) { + console.log('data success'); + console.log(data); + $scope.id = data.data; + + }, function(data) { + console.log('data error'); + }); + }; + $scope.clientApp('id', $routeParams.keyid); + + + $scope.decrypt = function() { + $http({ + url: clientapi + 'decrypt/' + $routeParams.keyid, + method: "POST", + headers: { + "Content-Type": undefined + }, + data: $scope.decryptData + }) + .then(function(data) { + console.log("data: "); + console.log(data.data); + $scope.decryptData = data.data; + }, + function(data) { + console.log(data); + }); + }; + $scope.encrypt = function() { + $http({ + url: clientapi + 'encrypt/' + $routeParams.keyid, + method: "POST", + headers: { + "Content-Type": undefined + }, + data: $scope.encryptData + }) + .then(function(data) { + console.log("data: "); + console.log(data.data); + $scope.encryptData = data.data; + }, + function(data) { + console.log(data); + }); + }; + });
@@ -1,20 +1,20 @@
-<div class="container" style="margin-top: -80px;"> +<div class="container" style="margin-top: -60px;"> <div class="row"> <div class="col-sm-3"> </div> <div class="col-sm-6"> <div class="card"> - <img src="img/blockchainIDsystem-logo01.png" class="img-responsive" /> + <img src="img/darkID-logo01.png" class="img-responsive" /> <div class="card-body"> <h4 class="card-title"> - blockchainIDsystem + darkID </h4> <input ng-model="user.email" class="form-control" placeholder="Email" type="text"> <input ng-model="user.password" class="form-control" placeholder="Password" type="password"> <div class="row"> <div class="col-sm-6"> - <div href="#!/signup" class="btn btn-raised btn-block c_o_pink300">Signup</div> + <a href="#!/signup" class="btn btn-raised btn-block c_o_pink300">Signup</a> </div> <div class="col-sm-6"> <div ng-click="login()" class="btn btn-raised btn-block c_o_cyan300 pull-right">Login</div>
@@ -9,13 +9,32 @@ controller: 'LoginCtrl'
}); }]) - .controller('LoginCtrl', function($scope, $http, $routeParams, toastr) { + .controller('LoginCtrl', function($scope, $rootScope, $http, $routeParams, toastr) { + $rootScope.server = ""; $scope.user = {}; + //set server in goclient + $http.get(clientapi + 'getserver') + .then(function(data) { + console.log("data server: "); + console.log(data.data + "/"); + $rootScope.server = "http://" + data.data.replace("\n", "") + "/"; + console.log($rootScope.server + "/"); + localStorage.setItem("old_darkID_server", JSON.stringify($rootScope.server)); + console.log("server", $rootScope.server + "/"); + }, function(data) { + console.log('data error'); + }); + $scope.login = function() { + console.log('Doing login', $scope.user); - console.log(urlapi + "login"); + console.log($rootScope.server + "/login"); + + + + // $http({ - url: urlapi + 'login', + url: $rootScope.server + 'login', method: "POST", headers: { "Content-Type": undefined@@ -26,12 +45,12 @@ .then(function(data) {
console.log("data: "); console.log(data.data); if (data.data.token) { - localStorage.setItem("blid_token", data.data.token); - localStorage.setItem("blid_user", JSON.stringify(data.data)); + localStorage.setItem("old_darkID_token", data.data.token); + localStorage.setItem("old_darkID_user", JSON.stringify(data.data)); window.location.reload(); } else { console.log("login failed"); - toastr.error('Login failed'); + toastr.error('Login failed, ' + data.data); }
@@ -4,37 +4,46 @@ <div class="col-sm-2">
</div> <div class="col-sm-8"> - <div class="card"> - <div class="card-body"> - <div ng-click="newID()" class="btn btn-raised c_o_pink300">Create new ID</div> - </div> - <hr> - <div class="card-body"> - <h4 class="card-title"> + <div ng-click="newID()" class="btn btn-raised pull-right c_o_pink300">Create new ID</div> + <h4 class="card-title"> My IDs </h4> - <div class="row" style="height:200px;" ng-repeat="id in ids"> + <div class="card" ng-repeat="id in ids" style="overflow-x:hidden;"> + <div class="card-body"> + <h4>{{id.pubK}}</h4> + <span class="pull-right">{{id.date | date: "dd.MM.y, HH:mm:ss"}}h</span> + + <span class="badge c_o_red300" ng-show="!id.verified">Not verified</span> + <span class="badge c_o_green300" ng-show="id.verified">Verified</span> + <span class="badge c_o_orange300" ng-show="!id.unblindedsig">Not signed</span> + <span class="badge c_o_blue300" ng-show="id.unblindedsig">Signed</span> + <span class="badge c_o_deepPurple300" ng-show="id.blockchainref">in Blockchain</span> + <div class="row"> <div class="col-sm-6"> - Public Key: {{id.pubK}} - <!--<br> Private Key: {{id.privK}}--> - <br> Date of creation: {{id.date}} - <!--<br> {{id.pubKSigned}}--> - <br> - <br><br> + <div ng-click="clientApp('blindandsendtosign', id.pubK)" ng-show="!id.unblindedsig" class="btn btn-raised btn-sm c_o_cyan300"> + Send to serverIDsigner + </div> + <div ng-click="clientApp('addtoblockchain', id.pubK)" ng-show="id.unblindedsig && !id.blockchainref" class="btn btn-raised btn-sm c_o_deepPurple300"> + <i title="" class="fa fa-chain"></i> Add to blockchain + </div> + <a ng-href="#!/id/{{id.pubK}}" ng-show="id.blockchainref" class="btn btn-raised btn-sm c_o_green300"> + Use ID + </a> </div> <div class="col-sm-6"> - <div class="pull-right"> - <span class="badge c_o_red300" ng-show="!id.verified">Not verified</span> - <span class="badge c_o_green300" ng-show="id.verified">Verified</span> + <!--<div ng-click="verify(id.pubK)" ng-show="!id.verified"class="btn btn-sm btn-raised c_o_deepPurple300 pull-right">Verify</div>--> + + <div ng-click="clientApp('delete', id.pubK)" class="btn btn-raised pull-right btn-sm c_o_red300"> + <i title="Delete" class="fa fa-trash fa-1x"></i> </div> - <div class="pull-right"> - <span class="badge c_o_orange300" ng-show="!id.pubKSigned">Not signed</span> - <span class="badge c_o_green300" ng-show="id.pubKSigned">Signed</span> - </div> - <div ng-click="blindAndSendToSign(id.pubK)" ng-show="!id.pubKSigned" class="btn btn-sm btn-raised c_o_cyan300 pull-right">Send to serverIDsigner</div> - <!--<div ng-click="verify(id.pubK)" ng-show="!id.verified"class="btn btn-sm btn-raised c_o_deepPurple300 pull-right">Verify</div>--> </div> </div> + </div> + </div> + + <div class="row"> + <div class="progress progress-striped" ng-show="generatingID"> + <div class="progress-bar progress-bar-success active" style="width: 100%"></div> </div> </div> </div>
@@ -9,7 +9,11 @@ controller: 'MainCtrl'
}); }]) - .controller('MainCtrl', function($scope, $http) { + .controller('MainCtrl', function($scope, $rootScope, $http) { + + $rootScope.server = JSON.parse(localStorage.getItem("old_darkID_server")); + + $scope.generatingID = false; $scope.ids = []; $http.get(clientapi + 'ids') .then(function(data) {@@ -22,19 +26,32 @@ console.log('data error');
}); $scope.newID = function() { + $scope.generatingID = true; $http.get(clientapi + 'newid') .then(function(data) { console.log('data success'); console.log(data); $scope.ids = data.data; + $scope.generatingID = false; }, function(data) { console.log('data error'); }); }; - $scope.blindAndSendToSign = function(pubK) { - $http.get(clientapi + 'blindandsendtosign/' + pubK) + $scope.blindAndSendToSign = function(id) { + $http.get(clientapi + 'blindandsendtosign/' + id) + .then(function(data) { + console.log('data success'); + console.log(data); + $scope.ids = data.data; + + }, function(data) { + console.log('data error'); + }); + }; + $scope.verify = function(id) { + $http.get(clientapi + 'verify/' + id) .then(function(data) { console.log('data success'); console.log(data);@@ -44,8 +61,8 @@ }, function(data) {
console.log('data error'); }); }; - $scope.verify = function(pubK) { - $http.get(clientapi + 'verify/' + pubK) + $scope.clientApp = function(route, param) { + $http.get(clientapi + route + '/' + param) .then(function(data) { console.log('data success'); console.log(data);
@@ -1,40 +1,32 @@
-<div class="container"> +<div class="container" style="margin-top: -80px;"> <div class="row"> - <div class="col-sm-4"> + <div class="col-sm-3"> </div> - <div class="col-sm-4"> - <div class="panel"> - <div class="panel-heading c_deepPurpleG500to300"> - <h3 class="panel-title">Signup</h3> - </div> - <div class="panel-body"> - <div class="form-group label-floating"> - <input ng-model="user.username" abmFormControl class="form-control" id="inputUsername" placeholder="Username" type="text"> - </div> - <div class="form-group"> - <input ng-model="user.password" abmFormControl class="form-control" id="inputPassword" placeholder="Password" type="password"> - </div> - <div class="form-group label-floating"> - <input ng-model="user.email" abmFormControl class="form-control" id="inputEmail" placeholder="Email" type="text"> - </div> - <div class="form-group label-floating"> - <input ng-model="user.phone" abmFormControl class="form-control" id="inputPhone" placeholder="Phone" type="text"> - </div> - <div class="form-group row"> - <label for="staticEmail" class="col-sm-1 col-form-label">@</label> - <div class="col-sm-10"> - <input ng-model="user.telegram" abmFormControl class="form-control" id="inputTelegram" placeholder="Telegram" type="text"> + <div class="col-sm-6"> + <div class="card"> + <img src="img/darkID-logo01.png" class="img-responsive" /> + <div class="card-body"> + <h4 class="card-title"> + darkID + </h4> + <input ng-model="user.email" class="form-control" placeholder="Email" type="text"> + <input ng-model="user.password" class="form-control" placeholder="Password" type="password"> + <input ng-model="user.phone" class="form-control" placeholder="Phone" type="text"> + <div class="row"> + <div class="col-sm-6"> + <a href="#!/login" class="btn btn-raised btn-block c_o_blue300">Cancel</a> + </div> + <div class="col-sm-6"> + <div ng-click="signup()" class="btn btn-raised btn-block c_o_pink300 pull-right">Signup</div> </div> </div> - <a ng-href="#!/login" class="btn btn-raised c_grey500">Back</a> - <div ng-click="doSignup()" class="btn btn-raised c_deepPurple300 pull-right">Signup</div> </div> </div> </div> - <div class="col-sm-4"> + <div class="col-sm-3"> </div> </div>
@@ -9,35 +9,27 @@ controller: 'SignupCtrl'
}); }]) -.controller('SignupCtrl', function($scope, $http, $routeParams) { +.controller('SignupCtrl', function($scope, $http, $routeParams, $rootScope) { $scope.user = {}; - $scope.doSignup = function() { - console.log('Doing login', $scope.user); - + $scope.signup = function() { + console.log('Doing signup', $scope.user); $http({ - url: urlapi + 'signup', - method: "POST", - data: $scope.user - }) - .then(function(response) { - console.log("response: "); - console.log(response.data); - if (response.data.success == true) - { - localStorage.setItem("cr_webapp_token", response.data.token); - localStorage.setItem("cr_webapp_userdata", JSON.stringify(response.data.user)); - window.location.reload(); - }else{ - console.log("signup failed"); - toastr.error('Signup failed'); - } - + url: $rootScope.server + 'signup', + method: "POST", + headers: { + "Content-Type": undefined + }, + data: $scope.user + }) + .then(function(data) { + console.log("data: "); + console.log(data.data); + window.location="/"; - }, - function(response) { // optional - // failed - console.log(response); - }); + }, + function(data) { + console.log(data); + }); }; });
@@ -0,0 +1,39 @@
+<div class="container"> + <div class="row"> + <div class="col-sm-2"> + + </div> + <div class="col-sm-8"> + <h4 class="card-title"> + Stats + </h4> + <div class="card"> + <div class="card-body"> + <div class="row"> + <canvas id="line" class="chart chart-line" chart-data="chart1.data" + chart-labels="chart1.labels" + chart-colors="chart1.colours"> + </canvas> + </div> + <div class="row"> + <canvas id="line" class="chart chart-pie" chart-data="chart2.data" + chart-labels="chart2.labels" + chart-colors="chart2.colours"> + </canvas> + </div> + + </div> + </div> + + <div class="row"> + <div class="progress progress-striped" ng-show="generatingID"> + <div class="progress-bar progress-bar-success active" style="width: 100%"></div> + </div> + </div> + </div> + <div class="col-sm-2"> + + </div> + + </div> +</div>
@@ -0,0 +1,136 @@
+'use strict'; + +angular.module('app.stats', ['ngRoute']) + + .config(['$routeProvider', function($routeProvider) { + $routeProvider.when('/stats', { + templateUrl: 'views/stats/stats.html', + controller: 'StatsCtrl' + }); + }]) + + .controller('StatsCtrl', function($scope, $rootScope, $http, $filter) { + + $rootScope.server = JSON.parse(localStorage.getItem("old_darkID_server")); + + $scope.generatingID = false; + $scope.ids = []; + $http.get(clientapi + 'ids') + .then(function(data) { + console.log('data success'); + console.log(data); + $scope.ids = data.data; + $scope.idsToChart(); + }, function(data) { + console.log('data error'); + }); + + $scope.newID = function() { + $scope.generatingID = true; + $http.get(clientapi + 'newid') + .then(function(data) { + console.log('data success'); + console.log(data); + $scope.ids = data.data; + $scope.generatingID = false; + + }, function(data) { + console.log('data error'); + }); + }; + + $scope.blindAndSendToSign = function(id) { + $http.get(clientapi + 'blindandsendtosign/' + id) + .then(function(data) { + console.log('data success'); + console.log(data); + $scope.ids = data.data; + + }, function(data) { + console.log('data error'); + }); + }; + $scope.verify = function(id) { + $http.get(clientapi + 'verify/' + id) + .then(function(data) { + console.log('data success'); + console.log(data); + $scope.ids = data.data; + + }, function(data) { + console.log('data error'); + }); + }; + $scope.clientApp = function(route, param) { + $http.get(clientapi + route + '/' + param) + .then(function(data) { + console.log('data success'); + console.log(data); + $scope.ids = data.data; + + }, function(data) { + console.log('data error'); + }); + }; + + //chartjs + $scope.chart1 = { + colours: ['#4DD0E1', '#9575CD', '#F06292', '#FFF176'], + labels: [], + data: [] + }; + $scope.chart2 = { + colours: ['#4DD0E1', '#9575CD', '#F06292', '#FFF176'], + labels: [], + data: [] + }; + $scope.idsToChart = function() { + //chart1 + var dictionary = {}; + var ids = $scope.ids; + for(var i=0; i<ids.length; i++) { + var day = $filter('date')(ids[i].date, 'dd.MM.y, HH:mm'); + if(dictionary[day]==undefined) { + dictionary[day] = 1 + } else { + dictionary[day]++; + } + } + console.log(dictionary); + for(var key in dictionary) { + $scope.chart1.labels.push(key); + $scope.chart1.data.push(dictionary[key]); + } + + + //chart2 + var dictionary = {}; + for(var i=0; i<ids.length; i++) { + if(ids[i].blockchainref) { + if(dictionary['in blockchain']==undefined) { + dictionary['in blockchain'] = 1 + } else { + dictionary['in blockchain']++; + } + } else if(ids[i].unblindedsig) { + if(dictionary['signed']==undefined) { + dictionary['signed'] = 1 + } else { + dictionary['signed']++; + } + } else { + if(dictionary['unsigned']==undefined) { + dictionary['unsigned'] = 1 + } else { + dictionary['unsigned']++; + } + } + } + console.log(dictionary); + for(var key in dictionary) { + $scope.chart2.labels.push(key); + $scope.chart2.data.push(dictionary[key]); + } + + }; + });
@@ -20,6 +20,11 @@ func Index(w http.ResponseWriter, r *http.Request) {
fmt.Fprintln(w, "serverIDsigner") } +func GetServer(w http.ResponseWriter, r *http.Request) { + color.Green(config.ServerIDSigner) + fmt.Println(string(config.ServerIDSigner)) + fmt.Fprintln(w, string(config.ServerIDSigner)) +} func IDs(w http.ResponseWriter, r *http.Request) { //read the keys stored in /keys directory keys := readKeys("keys.json")@@ -69,7 +74,7 @@ }
*/ //get the serverIDsigner pubK - serverPubK := getServerPubK("http://" + config.ServerIDSigner.IP + ":" + config.ServerIDSigner.Port) + serverPubK := getServerPubK("http://" + config.ServerIDSigner) //blind the key.PubK var m []int@@ -90,7 +95,7 @@ //send to the serverIDsigner the key.PubK blinded
color.Green(askBlindSign.M) body := new(bytes.Buffer) json.NewEncoder(body).Encode(askBlindSign) - res, err := http.Post("http://"+config.ServerIDSigner.IP+":"+config.ServerIDSigner.Port+"/blindsign", "application/json", body) + res, err := http.Post("http://"+config.ServerIDSigner+"/blindsign", "application/json", body) check(err) fmt.Println(res)@@ -117,13 +122,16 @@ fmt.Println(verified)
var iKey int for i, k := range keys { + color.Green(k.PubK) + color.Blue(packPubK) if k.PubK == packPubK { iKey = i //save to k the key updated - k.PubKSigned = ownrsa.ArrayIntToString(mSigned, "_") - k.Verified = verified + keys[i].PubKSigned = ownrsa.ArrayIntToString(mSigned, "_") + keys[i].Verified = verified + keys[i].UnblindedSig = ownrsa.ArrayIntToString(mSigned, "_") } - fmt.Println(k) + fmt.Println(keys[i]) } keys[iKey].PubKSigned = ownrsa.ArrayIntToString(mSigned, "_") keys[iKey].Verified = verified@@ -152,7 +160,7 @@ }
} //get the serverIDsigner pubK - serverPubK := getServerPubK("http://" + config.ServerIDSigner.IP + ":" + config.ServerIDSigner.Port) + serverPubK := getServerPubK("http://" + config.ServerIDSigner) m := ownrsa.StringToArrayInt(key.PubK, "_") mSigned := ownrsa.StringToArrayInt(key.PubKSigned, "_")
@@ -1,8 +1,5 @@
{ "port": "4100", "keysDirectory": "keys", - "serverIDsigner": { - "ip": "127.0.0.1", - "port": "3130" - } + "serverIDsigner": "127.0.0.1:3130" }
@@ -30,5 +30,8 @@ log.Fatal(http.ListenAndServe(":"+config.Port, handlers.CORS(originsOk, headersOk, methodsOk)(router)))
} func GUI() { - //here, run electron app + //here, run webserver + log.Println("webserver in port " + "8080") + http.Handle("/", http.FileServer(http.Dir("./GUI"))) + http.ListenAndServe(":"+"8080", nil) }
@@ -29,11 +29,13 @@ PrivK RSAPrivateKey
} type PackRSA struct { - PubK string `json:"pubK"` - PrivK string `json:"privK"` - Date time.Time `json:"date"` - PubKSigned string `json:"pubKSigned"` - Verified bool `json:"verified"` + PubK string `json:"pubK"` + PrivK string `json:"privK"` + Date time.Time `json:"date"` + PubKSigned string `json:"pubKSigned"` + Verified bool `json:"verified"` + UnblindedSig string `json:"unblindedsig"` + BlockchainRef string `json:"blockchainref"` } const maxPrime = 500
@@ -9,11 +9,7 @@ //Config reads the config
type Config struct { Port string `json:"port"` KeysDirectory string `json:"keysDirectory"` - ServerIDSigner Server `json:"serverIDsigner"` -} -type Server struct { - IP string `json:"ip"` - Port string `json:"port"` + ServerIDSigner string `json:"serverIDsigner"` } var config Config
@@ -10,6 +10,12 @@ "/",
Index, }, Route{ + "GetServer", + "GET", + "/getserver", + GetServer, + }, + Route{ "IDs", "GET", "/ids",
@@ -1,1 +1,1 @@
-{"genesisblock":"YKWAWY6GM5xrLhYrfi6hAmPmsECUH83n7xVcgaguLF4=","lastupdate":"0001-01-01T00:00:00Z","blocks":[{"hash":"YKWAWY6GM5xrLhYrfi6hAmPmsECUH83n7xVcgaguLF4=","height":0,"date":"2017-11-29T10:42:55.112675187+01:00","previoushash":"","nexthash":"cSN48a9BwgJQZdz2NwBRPJqCtC4Qtv-l-RYeGl9eBZs=","data":[{"address":"firstaddress"}],"emitter":"VOnL-15rFsUiCnRoyGFksKvWKcwNBRz5iarRem0Ilvo="},{"hash":"cSN48a9BwgJQZdz2NwBRPJqCtC4Qtv-l-RYeGl9eBZs=","height":1,"date":"2017-11-29T23:07:43.169204719+01:00","previoushash":"YKWAWY6GM5xrLhYrfi6hAmPmsECUH83n7xVcgaguLF4=","nexthash":"Ql0MH8WVaCOXzRWmR5xUyAQXaQ5Ovt6PoN3HrkHmYmk=","data":[{"address":"firstaddress"}],"emitter":"VOnL-15rFsUiCnRoyGFksKvWKcwNBRz5iarRem0Ilvo="},{"hash":"Ql0MH8WVaCOXzRWmR5xUyAQXaQ5Ovt6PoN3HrkHmYmk=","height":2,"date":"2017-12-26T14:38:41.446523607+01:00","previoushash":"cSN48a9BwgJQZdz2NwBRPJqCtC4Qtv-l-RYeGl9eBZs=","nexthash":"64bzp4j5jJjCcvKYcsytJOKD5dFyMHUjtNY1S5TD8Sk=","data":[{"address":"firstaddress"}],"emitter":"VOnL-15rFsUiCnRoyGFksKvWKcwNBRz5iarRem0Ilvo="},{"hash":"64bzp4j5jJjCcvKYcsytJOKD5dFyMHUjtNY1S5TD8Sk=","height":3,"date":"2017-12-26T18:05:05.541862456+01:00","previoushash":"Ql0MH8WVaCOXzRWmR5xUyAQXaQ5Ovt6PoN3HrkHmYmk=","nexthash":"N-w5F0pRA0kpZx7JDS3RPBedUSq1Kyk13Pc1guhY7Ws=","data":[{"address":"firstaddress"}],"emitter":"VOnL-15rFsUiCnRoyGFksKvWKcwNBRz5iarRem0Ilvo="},{"hash":"N-w5F0pRA0kpZx7JDS3RPBedUSq1Kyk13Pc1guhY7Ws=","height":4,"date":"2017-12-26T18:06:13.953399725+01:00","previoushash":"64bzp4j5jJjCcvKYcsytJOKD5dFyMHUjtNY1S5TD8Sk=","nexthash":"45Otq5P8WR97T4SxvaFk_0icNdUcIzO-mTjn6wrxJd4=","data":[{"address":"firstaddress"}],"emitter":"VOnL-15rFsUiCnRoyGFksKvWKcwNBRz5iarRem0Ilvo="},{"hash":"45Otq5P8WR97T4SxvaFk_0icNdUcIzO-mTjn6wrxJd4=","height":5,"date":"2017-12-26T18:06:57.93092362+01:00","previoushash":"N-w5F0pRA0kpZx7JDS3RPBedUSq1Kyk13Pc1guhY7Ws=","nexthash":"xnXIWKAsIHTOwzWDJe-5daa_5bOSPTLbsG5Ft49g3XA=","data":[{"address":"firstaddress"}],"emitter":"VOnL-15rFsUiCnRoyGFksKvWKcwNBRz5iarRem0Ilvo="},{"hash":"xnXIWKAsIHTOwzWDJe-5daa_5bOSPTLbsG5Ft49g3XA=","height":6,"date":"2017-12-26T20:11:10.182353841+01:00","previoushash":"45Otq5P8WR97T4SxvaFk_0icNdUcIzO-mTjn6wrxJd4=","nexthash":"U-Yz_cpPe6Cm4U9zMunLWH2s5hvUFLHJn7_u_3680Cs=","data":[{"address":"firstaddress"}],"emitter":"VOnL-15rFsUiCnRoyGFksKvWKcwNBRz5iarRem0Ilvo="},{"hash":"U-Yz_cpPe6Cm4U9zMunLWH2s5hvUFLHJn7_u_3680Cs=","height":7,"date":"2017-12-26T21:08:30.923107227+01:00","previoushash":"xnXIWKAsIHTOwzWDJe-5daa_5bOSPTLbsG5Ft49g3XA=","nexthash":"zlsDiXG2raTI2tear0LtIQV72BtHTXLzQGV623_CUDc=","data":[{"address":"firstaddress"}],"emitter":"VOnL-15rFsUiCnRoyGFksKvWKcwNBRz5iarRem0Ilvo="},{"hash":"zlsDiXG2raTI2tear0LtIQV72BtHTXLzQGV623_CUDc=","height":8,"date":"2017-12-26T21:08:45.373348196+01:00","previoushash":"U-Yz_cpPe6Cm4U9zMunLWH2s5hvUFLHJn7_u_3680Cs=","nexthash":"MordV-LXcl8AfW5gVq1wHxLHr3EZn7KhWcRJDEamVbA=","data":[{"address":"firstaddress"}],"emitter":"VOnL-15rFsUiCnRoyGFksKvWKcwNBRz5iarRem0Ilvo="},{"hash":"MordV-LXcl8AfW5gVq1wHxLHr3EZn7KhWcRJDEamVbA=","height":9,"date":"2017-12-26T21:08:59.694290728+01:00","previoushash":"zlsDiXG2raTI2tear0LtIQV72BtHTXLzQGV623_CUDc=","nexthash":"gRhKt8ZRKbDFLr-rSEnipo3QI3loQwTjkNoK0G96Z-w=","data":[{"address":"firstaddress"}],"emitter":"VOnL-15rFsUiCnRoyGFksKvWKcwNBRz5iarRem0Ilvo="},{"hash":"gRhKt8ZRKbDFLr-rSEnipo3QI3loQwTjkNoK0G96Z-w=","height":10,"date":"2017-12-26T21:12:18.832944058+01:00","previoushash":"MordV-LXcl8AfW5gVq1wHxLHr3EZn7KhWcRJDEamVbA=","nexthash":"NQMu54PaN9Ph9Qh2VJb9q6hHbENPYfS62YVkjTs0F1k=","data":[{"address":"firstaddress"}],"emitter":"VOnL-15rFsUiCnRoyGFksKvWKcwNBRz5iarRem0Ilvo="},{"hash":"NQMu54PaN9Ph9Qh2VJb9q6hHbENPYfS62YVkjTs0F1k=","height":11,"date":"2017-12-26T21:12:40.460894962+01:00","previoushash":"gRhKt8ZRKbDFLr-rSEnipo3QI3loQwTjkNoK0G96Z-w=","nexthash":"FFf5hrCRoDeGgEdUjD6nR-eHHp_FQ5NINNOl68tp7JY=","data":[{"address":"firstaddress"}],"emitter":"VOnL-15rFsUiCnRoyGFksKvWKcwNBRz5iarRem0Ilvo="},{"hash":"FFf5hrCRoDeGgEdUjD6nR-eHHp_FQ5NINNOl68tp7JY=","height":12,"date":"2017-12-30T08:05:37.206926858+01:00","previoushash":"NQMu54PaN9Ph9Qh2VJb9q6hHbENPYfS62YVkjTs0F1k=","nexthash":"DGL6W8cqiXyzUvHQ4GNF4I4cP5tLmWqFF4JW6A0LMu8=","data":[{"address":"firstaddress"}],"emitter":"VOnL-15rFsUiCnRoyGFksKvWKcwNBRz5iarRem0Ilvo="},{"hash":"DGL6W8cqiXyzUvHQ4GNF4I4cP5tLmWqFF4JW6A0LMu8=","height":13,"date":"2017-12-30T08:06:05.279133742+01:00","previoushash":"FFf5hrCRoDeGgEdUjD6nR-eHHp_FQ5NINNOl68tp7JY=","nexthash":"","data":[{"address":"firstaddress"}],"emitter":"VOnL-15rFsUiCnRoyGFksKvWKcwNBRz5iarRem0Ilvo="}]}+{"genesisblock":"YKWAWY6GM5xrLhYrfi6hAmPmsECUH83n7xVcgaguLF4=","lastupdate":"0001-01-01T00:00:00Z","blocks":[{"hash":"YKWAWY6GM5xrLhYrfi6hAmPmsECUH83n7xVcgaguLF4=","height":0,"date":"2017-11-29T10:42:55.112675187+01:00","previoushash":"","nexthash":"cSN48a9BwgJQZdz2NwBRPJqCtC4Qtv-l-RYeGl9eBZs=","data":[{"address":"firstaddress"}],"emitter":"VOnL-15rFsUiCnRoyGFksKvWKcwNBRz5iarRem0Ilvo="},{"hash":"cSN48a9BwgJQZdz2NwBRPJqCtC4Qtv-l-RYeGl9eBZs=","height":1,"date":"2017-11-29T23:07:43.169204719+01:00","previoushash":"YKWAWY6GM5xrLhYrfi6hAmPmsECUH83n7xVcgaguLF4=","nexthash":"Ql0MH8WVaCOXzRWmR5xUyAQXaQ5Ovt6PoN3HrkHmYmk=","data":[{"address":"firstaddress"}],"emitter":"VOnL-15rFsUiCnRoyGFksKvWKcwNBRz5iarRem0Ilvo="},{"hash":"Ql0MH8WVaCOXzRWmR5xUyAQXaQ5Ovt6PoN3HrkHmYmk=","height":2,"date":"2017-12-26T14:38:41.446523607+01:00","previoushash":"cSN48a9BwgJQZdz2NwBRPJqCtC4Qtv-l-RYeGl9eBZs=","nexthash":"64bzp4j5jJjCcvKYcsytJOKD5dFyMHUjtNY1S5TD8Sk=","data":[{"address":"firstaddress"}],"emitter":"VOnL-15rFsUiCnRoyGFksKvWKcwNBRz5iarRem0Ilvo="},{"hash":"64bzp4j5jJjCcvKYcsytJOKD5dFyMHUjtNY1S5TD8Sk=","height":3,"date":"2017-12-26T18:05:05.541862456+01:00","previoushash":"Ql0MH8WVaCOXzRWmR5xUyAQXaQ5Ovt6PoN3HrkHmYmk=","nexthash":"N-w5F0pRA0kpZx7JDS3RPBedUSq1Kyk13Pc1guhY7Ws=","data":[{"address":"firstaddress"}],"emitter":"VOnL-15rFsUiCnRoyGFksKvWKcwNBRz5iarRem0Ilvo="},{"hash":"N-w5F0pRA0kpZx7JDS3RPBedUSq1Kyk13Pc1guhY7Ws=","height":4,"date":"2017-12-26T18:06:13.953399725+01:00","previoushash":"64bzp4j5jJjCcvKYcsytJOKD5dFyMHUjtNY1S5TD8Sk=","nexthash":"45Otq5P8WR97T4SxvaFk_0icNdUcIzO-mTjn6wrxJd4=","data":[{"address":"firstaddress"}],"emitter":"VOnL-15rFsUiCnRoyGFksKvWKcwNBRz5iarRem0Ilvo="},{"hash":"45Otq5P8WR97T4SxvaFk_0icNdUcIzO-mTjn6wrxJd4=","height":5,"date":"2017-12-26T18:06:57.93092362+01:00","previoushash":"N-w5F0pRA0kpZx7JDS3RPBedUSq1Kyk13Pc1guhY7Ws=","nexthash":"xnXIWKAsIHTOwzWDJe-5daa_5bOSPTLbsG5Ft49g3XA=","data":[{"address":"firstaddress"}],"emitter":"VOnL-15rFsUiCnRoyGFksKvWKcwNBRz5iarRem0Ilvo="},{"hash":"xnXIWKAsIHTOwzWDJe-5daa_5bOSPTLbsG5Ft49g3XA=","height":6,"date":"2017-12-26T20:11:10.182353841+01:00","previoushash":"45Otq5P8WR97T4SxvaFk_0icNdUcIzO-mTjn6wrxJd4=","nexthash":"U-Yz_cpPe6Cm4U9zMunLWH2s5hvUFLHJn7_u_3680Cs=","data":[{"address":"firstaddress"}],"emitter":"VOnL-15rFsUiCnRoyGFksKvWKcwNBRz5iarRem0Ilvo="},{"hash":"U-Yz_cpPe6Cm4U9zMunLWH2s5hvUFLHJn7_u_3680Cs=","height":7,"date":"2017-12-26T21:08:30.923107227+01:00","previoushash":"xnXIWKAsIHTOwzWDJe-5daa_5bOSPTLbsG5Ft49g3XA=","nexthash":"zlsDiXG2raTI2tear0LtIQV72BtHTXLzQGV623_CUDc=","data":[{"address":"firstaddress"}],"emitter":"VOnL-15rFsUiCnRoyGFksKvWKcwNBRz5iarRem0Ilvo="},{"hash":"zlsDiXG2raTI2tear0LtIQV72BtHTXLzQGV623_CUDc=","height":8,"date":"2017-12-26T21:08:45.373348196+01:00","previoushash":"U-Yz_cpPe6Cm4U9zMunLWH2s5hvUFLHJn7_u_3680Cs=","nexthash":"MordV-LXcl8AfW5gVq1wHxLHr3EZn7KhWcRJDEamVbA=","data":[{"address":"firstaddress"}],"emitter":"VOnL-15rFsUiCnRoyGFksKvWKcwNBRz5iarRem0Ilvo="},{"hash":"MordV-LXcl8AfW5gVq1wHxLHr3EZn7KhWcRJDEamVbA=","height":9,"date":"2017-12-26T21:08:59.694290728+01:00","previoushash":"zlsDiXG2raTI2tear0LtIQV72BtHTXLzQGV623_CUDc=","nexthash":"gRhKt8ZRKbDFLr-rSEnipo3QI3loQwTjkNoK0G96Z-w=","data":[{"address":"firstaddress"}],"emitter":"VOnL-15rFsUiCnRoyGFksKvWKcwNBRz5iarRem0Ilvo="},{"hash":"gRhKt8ZRKbDFLr-rSEnipo3QI3loQwTjkNoK0G96Z-w=","height":10,"date":"2017-12-26T21:12:18.832944058+01:00","previoushash":"MordV-LXcl8AfW5gVq1wHxLHr3EZn7KhWcRJDEamVbA=","nexthash":"NQMu54PaN9Ph9Qh2VJb9q6hHbENPYfS62YVkjTs0F1k=","data":[{"address":"firstaddress"}],"emitter":"VOnL-15rFsUiCnRoyGFksKvWKcwNBRz5iarRem0Ilvo="},{"hash":"NQMu54PaN9Ph9Qh2VJb9q6hHbENPYfS62YVkjTs0F1k=","height":11,"date":"2017-12-26T21:12:40.460894962+01:00","previoushash":"gRhKt8ZRKbDFLr-rSEnipo3QI3loQwTjkNoK0G96Z-w=","nexthash":"FFf5hrCRoDeGgEdUjD6nR-eHHp_FQ5NINNOl68tp7JY=","data":[{"address":"firstaddress"}],"emitter":"VOnL-15rFsUiCnRoyGFksKvWKcwNBRz5iarRem0Ilvo="},{"hash":"FFf5hrCRoDeGgEdUjD6nR-eHHp_FQ5NINNOl68tp7JY=","height":12,"date":"2017-12-30T08:05:37.206926858+01:00","previoushash":"NQMu54PaN9Ph9Qh2VJb9q6hHbENPYfS62YVkjTs0F1k=","nexthash":"DGL6W8cqiXyzUvHQ4GNF4I4cP5tLmWqFF4JW6A0LMu8=","data":[{"address":"firstaddress"}],"emitter":"VOnL-15rFsUiCnRoyGFksKvWKcwNBRz5iarRem0Ilvo="},{"hash":"DGL6W8cqiXyzUvHQ4GNF4I4cP5tLmWqFF4JW6A0LMu8=","height":13,"date":"2017-12-30T08:06:05.279133742+01:00","previoushash":"FFf5hrCRoDeGgEdUjD6nR-eHHp_FQ5NINNOl68tp7JY=","nexthash":"8DeAC4WYlo-QhsOXDWNHllzrKmFGkodXpuz55LYenPQ=","data":[{"address":"firstaddress"}],"emitter":"VOnL-15rFsUiCnRoyGFksKvWKcwNBRz5iarRem0Ilvo="},{"hash":"8DeAC4WYlo-QhsOXDWNHllzrKmFGkodXpuz55LYenPQ=","height":14,"date":"2018-01-17T14:23:10.688111768+01:00","previoushash":"DGL6W8cqiXyzUvHQ4GNF4I4cP5tLmWqFF4JW6A0LMu8=","nexthash":"YMMim-Ak-1IIcodk2365Nin-CXsKPBTepgaaaUBIdrM=","data":[{"address":"firstaddress"}],"emitter":"VOnL-15rFsUiCnRoyGFksKvWKcwNBRz5iarRem0Ilvo="},{"hash":"YMMim-Ak-1IIcodk2365Nin-CXsKPBTepgaaaUBIdrM=","height":15,"date":"2018-01-17T14:23:24.389260577+01:00","previoushash":"8DeAC4WYlo-QhsOXDWNHllzrKmFGkodXpuz55LYenPQ=","nexthash":"6-29M1qTE6ccUudWDi6Lq3saQANyZ0f5Bgpi3W7cXb4=","data":[{"address":"firstaddress"}],"emitter":"VOnL-15rFsUiCnRoyGFksKvWKcwNBRz5iarRem0Ilvo="},{"hash":"6-29M1qTE6ccUudWDi6Lq3saQANyZ0f5Bgpi3W7cXb4=","height":16,"date":"2018-01-17T14:27:32.701444254+01:00","previoushash":"YMMim-Ak-1IIcodk2365Nin-CXsKPBTepgaaaUBIdrM=","nexthash":"H_uBFwLqCJfbXJZYksW2JUQFtF0IiR6KicNu9HoEYZo=","data":[{"address":"firstaddress"}],"emitter":"VOnL-15rFsUiCnRoyGFksKvWKcwNBRz5iarRem0Ilvo="},{"hash":"H_uBFwLqCJfbXJZYksW2JUQFtF0IiR6KicNu9HoEYZo=","height":17,"date":"2018-01-17T14:28:38.362073911+01:00","previoushash":"6-29M1qTE6ccUudWDi6Lq3saQANyZ0f5Bgpi3W7cXb4=","nexthash":"e5t3YdnJXZCZq7R-UoP1-kAxNV_a9kFy1hhxLHvQxWI=","data":[{"address":"firstaddress"}],"emitter":"VOnL-15rFsUiCnRoyGFksKvWKcwNBRz5iarRem0Ilvo="},{"hash":"e5t3YdnJXZCZq7R-UoP1-kAxNV_a9kFy1hhxLHvQxWI=","height":18,"date":"2018-01-17T14:29:04.60002866+01:00","previoushash":"H_uBFwLqCJfbXJZYksW2JUQFtF0IiR6KicNu9HoEYZo=","nexthash":"2b4DTkn9ltcdUAAioigsTP9rZ-HzEkihvARwvuibdMs=","data":[{"address":"firstaddress"}],"emitter":"VOnL-15rFsUiCnRoyGFksKvWKcwNBRz5iarRem0Ilvo="},{"hash":"2b4DTkn9ltcdUAAioigsTP9rZ-HzEkihvARwvuibdMs=","height":19,"date":"2018-01-17T14:30:16.678448389+01:00","previoushash":"e5t3YdnJXZCZq7R-UoP1-kAxNV_a9kFy1hhxLHvQxWI=","nexthash":"Txm7XRRH9u9ksL6FQml7G_1F5ReCUT-99pje5t4-zy0=","data":[{"address":"firstaddress"}],"emitter":"VOnL-15rFsUiCnRoyGFksKvWKcwNBRz5iarRem0Ilvo="},{"hash":"Txm7XRRH9u9ksL6FQml7G_1F5ReCUT-99pje5t4-zy0=","height":20,"date":"2018-01-17T14:30:30.584481063+01:00","previoushash":"2b4DTkn9ltcdUAAioigsTP9rZ-HzEkihvARwvuibdMs=","nexthash":"li2N9tJYBNsMb8xvh6J1WGKEfuKILLZn93SMG2Q99Kk=","data":[{"address":"firstaddress"}],"emitter":"VOnL-15rFsUiCnRoyGFksKvWKcwNBRz5iarRem0Ilvo="},{"hash":"li2N9tJYBNsMb8xvh6J1WGKEfuKILLZn93SMG2Q99Kk=","height":21,"date":"2018-01-17T14:31:17.369954566+01:00","previoushash":"Txm7XRRH9u9ksL6FQml7G_1F5ReCUT-99pje5t4-zy0=","nexthash":"YSmco3JX5jv7nSGJNwPwgLLHYTumCbYLahTbywgutE8=","data":[{"address":"firstaddress"}],"emitter":"VOnL-15rFsUiCnRoyGFksKvWKcwNBRz5iarRem0Ilvo="},{"hash":"YSmco3JX5jv7nSGJNwPwgLLHYTumCbYLahTbywgutE8=","height":22,"date":"2018-01-17T14:31:49.1455472+01:00","previoushash":"li2N9tJYBNsMb8xvh6J1WGKEfuKILLZn93SMG2Q99Kk=","nexthash":"bgyx3yPoyq7-VnNb7Hi8OBasKzNGkTszWcGncdh24Vo=","data":[{"address":"firstaddress"}],"emitter":"VOnL-15rFsUiCnRoyGFksKvWKcwNBRz5iarRem0Ilvo="},{"hash":"bgyx3yPoyq7-VnNb7Hi8OBasKzNGkTszWcGncdh24Vo=","height":23,"date":"2018-01-17T14:43:06.914844172+01:00","previoushash":"YSmco3JX5jv7nSGJNwPwgLLHYTumCbYLahTbywgutE8=","nexthash":"nOpuhCbBFokiIgZJRx5jVhC-KWhnZGm8tziZHM3Clqw=","data":[{"address":"firstaddress"}],"emitter":"VOnL-15rFsUiCnRoyGFksKvWKcwNBRz5iarRem0Ilvo="},{"hash":"nOpuhCbBFokiIgZJRx5jVhC-KWhnZGm8tziZHM3Clqw=","height":24,"date":"2018-01-17T14:44:22.444643977+01:00","previoushash":"bgyx3yPoyq7-VnNb7Hi8OBasKzNGkTszWcGncdh24Vo=","nexthash":"qzMxhtFmiFWu28xRdXYK7HacPdmCI1ReU98x0Oz-Tn8=","data":[{"address":"firstaddress"}],"emitter":"VOnL-15rFsUiCnRoyGFksKvWKcwNBRz5iarRem0Ilvo="},{"hash":"qzMxhtFmiFWu28xRdXYK7HacPdmCI1ReU98x0Oz-Tn8=","height":25,"date":"2018-01-17T14:47:19.198393165+01:00","previoushash":"nOpuhCbBFokiIgZJRx5jVhC-KWhnZGm8tziZHM3Clqw=","nexthash":"a27RUAw_xXJppX_b7ib0eEddfjAcvi0vdrDvnEjxuDY=","data":[{"address":"firstaddress"}],"emitter":"VOnL-15rFsUiCnRoyGFksKvWKcwNBRz5iarRem0Ilvo="},{"hash":"a27RUAw_xXJppX_b7ib0eEddfjAcvi0vdrDvnEjxuDY=","height":26,"date":"2018-01-17T14:51:58.95825886+01:00","previoushash":"qzMxhtFmiFWu28xRdXYK7HacPdmCI1ReU98x0Oz-Tn8=","nexthash":"UBiXFb7DOaaWl99hHC2OnELjEWvM_1XFd6YE94DCxyU=","data":[{"address":"firstaddress"}],"emitter":"VOnL-15rFsUiCnRoyGFksKvWKcwNBRz5iarRem0Ilvo="},{"hash":"UBiXFb7DOaaWl99hHC2OnELjEWvM_1XFd6YE94DCxyU=","height":27,"date":"2018-01-17T15:47:14.421351806+01:00","previoushash":"a27RUAw_xXJppX_b7ib0eEddfjAcvi0vdrDvnEjxuDY=","nexthash":"ww5kKjQDPTfnvGQEFC672OXBBTeT0nVwo95llPo7nGU=","data":[{"address":"firstaddress"}],"emitter":"VOnL-15rFsUiCnRoyGFksKvWKcwNBRz5iarRem0Ilvo="},{"hash":"ww5kKjQDPTfnvGQEFC672OXBBTeT0nVwo95llPo7nGU=","height":28,"date":"2018-01-17T15:50:04.23423037+01:00","previoushash":"UBiXFb7DOaaWl99hHC2OnELjEWvM_1XFd6YE94DCxyU=","nexthash":"lZ_C3sfoh9t89l0vbI0j75MrxFrY9HeYanib1L5dCV8=","data":[{"address":"firstaddress"}],"emitter":"VOnL-15rFsUiCnRoyGFksKvWKcwNBRz5iarRem0Ilvo="},{"hash":"lZ_C3sfoh9t89l0vbI0j75MrxFrY9HeYanib1L5dCV8=","height":29,"date":"2018-01-17T15:52:06.068067696+01:00","previoushash":"ww5kKjQDPTfnvGQEFC672OXBBTeT0nVwo95llPo7nGU=","nexthash":"","data":[{"address":"firstaddress"}],"emitter":"VOnL-15rFsUiCnRoyGFksKvWKcwNBRz5iarRem0Ilvo="}]}
@@ -3,8 +3,11 @@
tmux new-session -d -s $SESSION tmux split-window -d -t 0 -v tmux split-window -d -t 0 -h -tmux split-window -d -t 0 -v -tmux split-window -d -t 2 -v +tmux split-window -d -t 1 -h +tmux split-window -d -t 0 -h + +tmux split-window -d -t 4 -h +tmux split-window -d -t 5 -h tmux split-window -d -t 4 -h tmux send-keys -t 0 'cd peer && go run *.go server 3001 3002' enter@@ -14,7 +17,15 @@ sleep 1
tmux send-keys -t 1 'cd peer && go run *.go client 3003 3004' enter tmux send-keys -t 2 'cd peer && go run *.go client 3005 3006' enter tmux send-keys -t 3 'cd peer && go run *.go client 3007 3008' enter + tmux send-keys -t 4 'cd serverCA && go run *.go' enter tmux send-keys -t 5 'cd serverIDsigner && go run *.go' enter +tmux send-keys -t 6 'cd clientApp && go run *.go' enter +#tmux send-keys -t 7 'cd clientApp/GUI && electron .' enter tmux attach + + +# webapps are at: +# serverCA: http://127.0.0.1:3080 +# clientApp: http://127.0.0.1:8080
@@ -72,6 +72,7 @@ if err != nil {
panic(err) } defer r.Body.Close() + //TODO check if the user password exists in the database fmt.Print("user login: ") fmt.Println(user)@@ -83,11 +84,21 @@ //save the new project to mongodb
rUser := User{} err = userCollection.Find(bson.M{"email": user.Email}).One(&rUser) if err != nil { - } else { - //user exists, update with the token - err = userCollection.Update(bson.M{"_id": rUser.Id}, user) + jResp, err := json.Marshal("error login, email not found") + check(err) + fmt.Fprintln(w, string(jResp)) + return + } + //user exists, check password + if user.Password != rUser.Password { + jResp, err := json.Marshal("error login, password not match") check(err) + fmt.Fprintln(w, string(jResp)) + return } + //update with the token + err = userCollection.Update(bson.M{"_id": rUser.Id}, user) + check(err) jResp, err := json.Marshal(user) if err != nil {
@@ -0,0 +1,13 @@
+SESSION='peersTest' + +tmux new-session -d -s $SESSION +tmux split-window -d -t 0 -v +tmux split-window -d -t 0 -h +tmux split-window -d -t 1 -h +tmux split-window -d -t 0 -h + +tmux split-window -d -t 4 -h +tmux split-window -d -t 5 -h +tmux split-window -d -t 4 -h + +tmux attach