diff --git a/admin/public/index.html b/admin/public/index.html
index 315c413..9febd74 100644
--- a/admin/public/index.html
+++ b/admin/public/index.html
@@ -5,9 +5,9 @@
- Do admin stuff:
-
+
Initializing... {{vm.hello}}
+
+
+ - Show Device Name
- Login to Daplie
- Show domains (or ask purchase)
- Tunnel On
diff --git a/admin/public/js/app.js b/admin/public/js/app.js
index a382dd8..0dd095e 100644
--- a/admin/public/js/app.js
+++ b/admin/public/js/app.js
@@ -4,8 +4,12 @@ angular.module('com.daplie.cloud', [ 'org.oauth3' ])
auth.setProvider('oauth3.org');
return auth;
} ])
- .controller('LoginController', [ '$timeout', 'oauth3', function ($timeout, oauth3) {
+ .controller('LoginController', [ '$scope', '$timeout', 'oauth3', function ($scope, $timeout, oauth3) {
var vm = this;
+ var OAUTH3 = window.OAUTH3;
+
+ vm.hello = 'Hello!';
+ vm.clientUri = OAUTH3.clientUri(window.location);
vm.setSimple = function () {
vm.advanced = false;
@@ -35,15 +39,69 @@ angular.module('com.daplie.cloud', [ 'org.oauth3' ])
};
vm.authenticate = function () {
+ // TODO authorization redirect /api/org.oauth3.consumer/authorization_redirect/:provider_uri
+
return oauth3.authenticate().then(function (session) {
console.info("Authorized Session", session);
return oauth3.api('domains.list').then(function (domains) {
console.info("domains owned", domains);
+ vm.domains = domains;
+
+ return OAUTH3.request({
+ method: 'POST'
+ , url: 'https://' + vm.clientUri + '/api/com.daplie.caddy/init'
+ , session: session
+ , data: {
+ access_token: session.access_token
+ , refresh_token: session.refresh_token
+ , expires_in: session.expires_in
+ , scope: session.scope
+ , provider_uri: OAUTH3.uri.normalize(session.provider_uri)
+ , client_uri: vm.clientUri
+ , domains: domains.map(function (d) {
+ return {
+ id: d.id
+ , sub: d.sub
+ , sld: d.sld
+ , tld: d.tld
+ };
+ })
+ }
+ }).then(function (resp) {
+ console.info('Initialized Goldilocks', resp);
+ return resp;
+ }, function (err) {
+ console.error(err);
+ window.alert("Initialization failed:" + err.message);
+ });
});
+ }, function (err) {
+ console.error(err);
+ window.alert("Authentication failed:" + err.message);
});
};
+
+ /*
+ console.log('OAUTH3.PromiseA', OAUTH3.PromiseA);
+ return oauth3.setProvider('oauth3.org').then(function () {
+ return oauth3.authenticate({ windowType: 'background' }).then(function () {
+ console.log('HELLO!!');
+ //vm.authnUpdated = Date.now();
+ vm.hasSession = true;
+ }, function () {
+ console.log('GOODBYE!!');
+ //vm.authnUpdated = Date.now();
+ vm.hasSession = false;
+ $timeout(function () {
+ console.log('GOODBYE!!');
+ vm.hello = 'Nope!';
+ }, 1);
+ });
+ });
+ //*/
+
}]);
/*
$(function () {
diff --git a/lib/app.js b/lib/app.js
index fd5b957..8245933 100644
--- a/lib/app.js
+++ b/lib/app.js
@@ -12,6 +12,7 @@ module.exports = function (opts) {
var pathsMap = {};
var content = opts.content;
var server;
+ var serveInit;
function addServer(hostname) {
@@ -71,6 +72,14 @@ module.exports = function (opts) {
addServer(opts.sites[0].name);
return function (req, res) {
+ if ('/api/com.daplie.caddy/init' === req.url) {
+ if (!serveInit) {
+ serveInit = require('../packages/apis/com.daplie.caddy').create(opts);
+ }
+ serveInit(req, res);
+ return;
+ }
+
if (content && '/' === req.url) {
// res.setHeader('Content-Type', 'application/octet-stream');
res.end(content);
diff --git a/package.json b/package.json
index e5c5e5d..e08cfb4 100644
--- a/package.json
+++ b/package.json
@@ -39,6 +39,7 @@
"homepage": "https://git.daplie.com/Daplie/goldilocks.js#readme",
"dependencies": {
"bluebird": "^3.4.6",
+ "body-parser": "git+https://github.com/expressjs/body-parser.git#1.16.1",
"daplie-tunnel": "git+https://git.daplie.com/Daplie/daplie-cli-tunnel.git#master",
"ddns-cli": "git+https://git.daplie.com/Daplie/node-ddns-client.git#master",
"finalhandler": "^0.4.0",
diff --git a/packages/apis/com.daplie.caddy/index.js b/packages/apis/com.daplie.caddy/index.js
new file mode 100644
index 0000000..2ed7a7c
--- /dev/null
+++ b/packages/apis/com.daplie.caddy/index.js
@@ -0,0 +1,18 @@
+'use strict';
+
+module.exports.create = function (opts) {
+ var bodyParser = require('body-parser');
+ var jsonParser = bodyParser.json({
+ inflate: true, limit: '100kb', reviver: null, strict: true /* type, verify */
+ });
+
+ return function (req, res) {
+ jsonParser(req, res, function () {
+
+ console.log('req.body', req.body);
+
+ res.setHeader('Content-Type', 'application/json;');
+ res.end(JSON.stringify({ error: { message: "Not Implemented", code: "E_NO_IMPL" } }));
+ });
+ };
+};
diff --git a/packages/assets/org.oauth3 b/packages/assets/org.oauth3
index 1e0d129..eff1fd1 160000
--- a/packages/assets/org.oauth3
+++ b/packages/assets/org.oauth3
@@ -1 +1 @@
-Subproject commit 1e0d129b8a6748f635b6f6985d7dae2ece747e55
+Subproject commit eff1fd11272472e8f6d03ac8b897a9853810672e