Merge branch 'v1' of git.daplie.com:Daplie/walnut.js into v1
This commit is contained in:
		
						commit
						54376f3157
					
				
							
								
								
									
										15
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										15
									
								
								README.md
									
									
									
									
									
								
							@ -56,6 +56,11 @@ In Progress
 | 
				
			|||||||
* [GunDB](https://gundb.io) Support
 | 
					* [GunDB](https://gundb.io) Support
 | 
				
			||||||
* OpenID support
 | 
					* OpenID support
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					API
 | 
				
			||||||
 | 
					---
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					API docs are here https://git.daplie.com/Daplie/com.example.hello
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Structure
 | 
					Structure
 | 
				
			||||||
=====
 | 
					=====
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -69,12 +74,15 @@ Currently being tested with Ubuntu, Raspbian, and Debian on Digital Ocean, Raspb
 | 
				
			|||||||
│   ├── boot
 | 
					│   ├── boot
 | 
				
			||||||
│   ├── holepunch
 | 
					│   ├── holepunch
 | 
				
			||||||
│   └── lib
 | 
					│   └── lib
 | 
				
			||||||
 | 
					├── etc
 | 
				
			||||||
 | 
					│   └── client-api-grants
 | 
				
			||||||
├── node_modules
 | 
					├── node_modules
 | 
				
			||||||
├── packages
 | 
					├── packages
 | 
				
			||||||
│   ├── apis
 | 
					│   ├── apis
 | 
				
			||||||
│   ├── pages
 | 
					│   ├── pages
 | 
				
			||||||
│   └── services
 | 
					│   └── services
 | 
				
			||||||
└── var
 | 
					└── var
 | 
				
			||||||
 | 
					    └── sites
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
* `core` contains all walnut code
 | 
					* `core` contains all walnut code
 | 
				
			||||||
@ -243,3 +251,10 @@ The permissions:
 | 
				
			|||||||
          com.example.hello     # refers to /srv/walnut/packages/pages/com.example.hello
 | 
					          com.example.hello     # refers to /srv/walnut/packages/pages/com.example.hello
 | 
				
			||||||
          '''
 | 
					          '''
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					API
 | 
				
			||||||
 | 
					---
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					req.apiUrlPrefix => https://api.example.com/api/tld.domain.pkg
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										25
									
								
								install.sh
									
									
									
									
									
								
							
							
						
						
									
										25
									
								
								install.sh
									
									
									
									
									
								
							@ -219,16 +219,19 @@ my_app_launchd_service="Library/LaunchDaemons/${my_app_pkg_name}.plist"
 | 
				
			|||||||
# Install
 | 
					# Install
 | 
				
			||||||
install_my_app()
 | 
					install_my_app()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
					  # This function shouldn't need to use $sudo_cmd because it is called immediately after
 | 
				
			||||||
 | 
					  # /srv/walnut is chown-ed and we only mess with things in that directory.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  #git clone git@git.daplie.com:Daplie/walnut.js.git
 | 
					  #git clone git@git.daplie.com:Daplie/walnut.js.git
 | 
				
			||||||
  #git clone https://git.daplie.com/Daplie/walnut.js.git /srv/walnut/core
 | 
					  #git clone https://git.daplie.com/Daplie/walnut.js.git /srv/walnut/core
 | 
				
			||||||
  sudo mkdir -p /srv/walnut/{core,lib,var,etc,node_modules}
 | 
					  mkdir -p /srv/walnut/{core,lib,var,etc,node_modules}
 | 
				
			||||||
  rm -rf /srv/walnut/core/node_modules
 | 
					  rm -rf /srv/walnut/core/node_modules
 | 
				
			||||||
  ln -sf ../node_modules /srv/walnut/core/node_modules
 | 
					  ln -sf ../node_modules /srv/walnut/core/node_modules
 | 
				
			||||||
  sudo mkdir -p /srv/walnut/var/sites
 | 
					  mkdir -p /srv/walnut/var/sites
 | 
				
			||||||
  sudo mkdir -p /srv/walnut/etc/org.oauth3.consumer
 | 
					  mkdir -p /srv/walnut/etc/org.oauth3.consumer
 | 
				
			||||||
  sudo mkdir -p /srv/walnut/etc/org.oauth3.provider
 | 
					  mkdir -p /srv/walnut/etc/org.oauth3.provider
 | 
				
			||||||
  sudo mkdir -p /srv/walnut/etc/client-api-grants
 | 
					  mkdir -p /srv/walnut/etc/client-api-grants
 | 
				
			||||||
  sudo mkdir -p /srv/walnut/packages/{rest,api,pages,services}
 | 
					  mkdir -p /srv/walnut/packages/{rest,api,pages,services}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  # backwards compat
 | 
					  # backwards compat
 | 
				
			||||||
  if [ -d /srv/walnut/packages/client-api-grants ]; then
 | 
					  if [ -d /srv/walnut/packages/client-api-grants ]; then
 | 
				
			||||||
@ -249,14 +252,14 @@ install_my_app()
 | 
				
			|||||||
  popd
 | 
					  popd
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
sudo mkdir -p /srv/walnut
 | 
					$sudo_cmd mkdir -p /srv/walnut
 | 
				
			||||||
sudo chown -R $(whoami) /srv/walnut
 | 
					$sudo_cmd chown -R $(whoami) /srv/walnut
 | 
				
			||||||
 | 
					
 | 
				
			||||||
install_my_app
 | 
					install_my_app
 | 
				
			||||||
create_skeleton
 | 
					create_skeleton
 | 
				
			||||||
install_uninstaller
 | 
					install_uninstaller
 | 
				
			||||||
install_service
 | 
					install_service
 | 
				
			||||||
 | 
					
 | 
				
			||||||
sudo chown -R www-data:www-data /srv/walnut || true
 | 
					$sudo_cmd chown -R www-data:www-data /srv/walnut || true
 | 
				
			||||||
sudo chown -R _www:_www /srv/walnut || true
 | 
					$sudo_cmd chown -R _www:_www /srv/walnut || true
 | 
				
			||||||
sudo chmod -R ug+rwX /srv/walnut
 | 
					$sudo_cmd chmod -R ug+rwX /srv/walnut
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										28
									
								
								lib/apis.js
									
									
									
									
									
								
							
							
						
						
									
										28
									
								
								lib/apis.js
									
									
									
									
									
								
							@ -318,6 +318,7 @@ module.exports.create = function (xconfx, apiFactories, apiDeps) {
 | 
				
			|||||||
        var _stripe_test;
 | 
					        var _stripe_test;
 | 
				
			||||||
        var _mandrill;
 | 
					        var _mandrill;
 | 
				
			||||||
        var _mailchimp;
 | 
					        var _mailchimp;
 | 
				
			||||||
 | 
					        var _twilio;
 | 
				
			||||||
        myApp.use('/', function preHandler(req, res, next) {
 | 
					        myApp.use('/', function preHandler(req, res, next) {
 | 
				
			||||||
          return getSiteConfig(clientUrih).then(function (siteConfig) {
 | 
					          return getSiteConfig(clientUrih).then(function (siteConfig) {
 | 
				
			||||||
            Object.defineProperty(req, 'getSiteMailer', {
 | 
					            Object.defineProperty(req, 'getSiteMailer', {
 | 
				
			||||||
@ -429,6 +430,27 @@ module.exports.create = function (xconfx, apiFactories, apiDeps) {
 | 
				
			|||||||
              }
 | 
					              }
 | 
				
			||||||
            });
 | 
					            });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            var caps = {
 | 
				
			||||||
 | 
					              'com.daplie.tel.twilio': function (/*opts*/) {
 | 
				
			||||||
 | 
					                if (_twilio) {
 | 
				
			||||||
 | 
					                  return _twilio;
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                var Twilio = require('twilio');
 | 
				
			||||||
 | 
					                _twilio = new Twilio.RestClient(siteConfig['twilio.com'].id, siteConfig['twilio.com'].auth);
 | 
				
			||||||
 | 
					                return apiDeps.Promise.resolve(_twilio);
 | 
				
			||||||
 | 
					              }
 | 
				
			||||||
 | 
					            };
 | 
				
			||||||
 | 
					            req.getSiteCapability = function (capname, opts) {
 | 
				
			||||||
 | 
					              if (caps[capname]) {
 | 
				
			||||||
 | 
					                return caps[capname](opts);
 | 
				
			||||||
 | 
					              }
 | 
				
			||||||
 | 
					              return apiDeps.Promise.reject(
 | 
				
			||||||
 | 
					                new Error("['" + req.clientApiUri + '/' + pkgId + "'] "
 | 
				
			||||||
 | 
					                  + "capability '" + capname + "' not implemented")
 | 
				
			||||||
 | 
					              );
 | 
				
			||||||
 | 
					            };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            req._walnutOriginalUrl = req.url;
 | 
					            req._walnutOriginalUrl = req.url;
 | 
				
			||||||
            // "/path/api/com.example/hello".replace(/.*\/api\//, '').replace(/([^\/]*\/+)/, '/') => '/hello'
 | 
					            // "/path/api/com.example/hello".replace(/.*\/api\//, '').replace(/([^\/]*\/+)/, '/') => '/hello'
 | 
				
			||||||
            req.url = req.url.replace(/\/api\//, '').replace(/.*\/api\//, '').replace(/([^\/]*\/+)/, '/');
 | 
					            req.url = req.url.replace(/\/api\//, '').replace(/.*\/api\//, '').replace(/([^\/]*\/+)/, '/');
 | 
				
			||||||
@ -517,6 +539,12 @@ module.exports.create = function (xconfx, apiFactories, apiDeps) {
 | 
				
			|||||||
      var hasBeenHandled = false;
 | 
					      var hasBeenHandled = false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      // Existing (Deprecated)
 | 
					      // Existing (Deprecated)
 | 
				
			||||||
 | 
					      Object.defineProperty(req, 'apiUrlPrefix', {
 | 
				
			||||||
 | 
					        enumerable: true
 | 
				
			||||||
 | 
					      , configurable: false
 | 
				
			||||||
 | 
					      , writable: false
 | 
				
			||||||
 | 
					      , value: 'https://' + clientApiUri + '/' + pkgId
 | 
				
			||||||
 | 
					      });
 | 
				
			||||||
      Object.defineProperty(req, 'experienceId', {
 | 
					      Object.defineProperty(req, 'experienceId', {
 | 
				
			||||||
        enumerable: true
 | 
					        enumerable: true
 | 
				
			||||||
      , configurable: false
 | 
					      , configurable: false
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user