forked from coolaj86/walnut.js
		
	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