initial release candidate
This commit is contained in:
		
						commit
						57ffcf01db
					
				
							
								
								
									
										75
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										75
									
								
								README.md
									
									
									
									
									
								
							@ -1,4 +1,4 @@
 | 
			
		||||
# [greenlock-store-sequelize][1]
 | 
			
		||||
# [greenlock-store-sequelize](https://git.rootprojects.org/root/greenlock-store-sequelize.js) | A [Root](https://rootprojects.org) project
 | 
			
		||||
 | 
			
		||||
> A database-driven Greenlock storage plugin with wildcard support.
 | 
			
		||||
 | 
			
		||||
@ -8,60 +8,30 @@ To use, provide this Greenlock storage plugin as the `store` attribute when you
 | 
			
		||||
invoke `create`.
 | 
			
		||||
 | 
			
		||||
```js
 | 
			
		||||
var store = require('le-store-sequelize');
 | 
			
		||||
 | 
			
		||||
var gl = greenlock.create({
 | 
			
		||||
  store,
 | 
			
		||||
  approveDomains,
 | 
			
		||||
  ...
 | 
			
		||||
greenlock.create({
 | 
			
		||||
  store: require('le-store-sequelize')
 | 
			
		||||
});
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
## Wildcards & AltNames
 | 
			
		||||
 | 
			
		||||
Working with wildcards and multiple altnames requires Greenlock `>= v2.7`.
 | 
			
		||||
 | 
			
		||||
To do so you must set `opts.subject` and `opts.domains` within the
 | 
			
		||||
`approvedomains()` callback.
 | 
			
		||||
 | 
			
		||||
`subject` refers to "the subject of the ssl certificate" as opposed to `domain`
 | 
			
		||||
which indicates "the domain servername used in the current request". For
 | 
			
		||||
single-domain certificates they're always the same, but for multiple-domain
 | 
			
		||||
certificates `subject` must be the name no matter what `domain` is receiving a
 | 
			
		||||
request. `subject` is used as part of the name of the file storage path where
 | 
			
		||||
the certificate will be saved (or retrieved).
 | 
			
		||||
 | 
			
		||||
`domains` should be the list of "altnames" on the certificate, which should
 | 
			
		||||
include the `subject`.
 | 
			
		||||
 | 
			
		||||
## Example
 | 
			
		||||
 | 
			
		||||
```javascript
 | 
			
		||||
function approveDomains() {
 | 
			
		||||
}
 | 
			
		||||
```
 | 
			
		||||
## Configuration
 | 
			
		||||
 | 
			
		||||
### Defaults
 | 
			
		||||
 | 
			
		||||
No configuration is required. By default, you'll get a baked-in Sequelize
 | 
			
		||||
database running sqlite3.
 | 
			
		||||
 | 
			
		||||
```javascript
 | 
			
		||||
greenlock.create({
 | 
			
		||||
  store: require('le-store-sequelize'),
 | 
			
		||||
  ...
 | 
			
		||||
});
 | 
			
		||||
```
 | 
			
		||||
database running [sqlite3](https://www.npmjs.com/package/sqlite3).
 | 
			
		||||
 | 
			
		||||
### Database Connection
 | 
			
		||||
 | 
			
		||||
Without `config.dbOptions`, the baked-in sequelize object uses sqlite3 with
 | 
			
		||||
default options. If `config.dbOptions` is provided, you can configure the
 | 
			
		||||
database connection per the Sequelize documentation.
 | 
			
		||||
defaults. If `config.dbOptions` is provided, you can configure the database
 | 
			
		||||
connection per the Sequelize documentation.
 | 
			
		||||
 | 
			
		||||
If a dialect other than sqlite3 is used, dependencies will need to be
 | 
			
		||||
installed.
 | 
			
		||||
 | 
			
		||||
```javascript
 | 
			
		||||
var store = require('le-store-sequelize')({
 | 
			
		||||
greenlock.create({
 | 
			
		||||
  store: require('le-store-sequelize')({
 | 
			
		||||
    dbConfig: {
 | 
			
		||||
      username: 'mysqluser',
 | 
			
		||||
      password: 'mysqlpassword',
 | 
			
		||||
@ -69,21 +39,19 @@ var store = require('le-store-sequelize')({
 | 
			
		||||
      host: '127.0.0.1',
 | 
			
		||||
      dialect: 'mysql'
 | 
			
		||||
    }
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
greenlock.create({
 | 
			
		||||
  store,
 | 
			
		||||
  ...
 | 
			
		||||
  })
 | 
			
		||||
});
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
The database can also be configured using an env variable.
 | 
			
		||||
 | 
			
		||||
```javascript
 | 
			
		||||
var store = require('le-store-sequelize')({
 | 
			
		||||
greenlock.create({
 | 
			
		||||
  store: require('greenlock-store-sequelize')({
 | 
			
		||||
    dbConfig: {
 | 
			
		||||
      use_env_variable: 'DB_URL'
 | 
			
		||||
    }
 | 
			
		||||
  })
 | 
			
		||||
});
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
@ -93,16 +61,11 @@ If you already have a Sequelize object, you can pass that in as `config.db`,
 | 
			
		||||
circumventing the baked-in database entirely.
 | 
			
		||||
 | 
			
		||||
```javascript
 | 
			
		||||
var db = require('./db');
 | 
			
		||||
 | 
			
		||||
var store = require('le-store-sequelize')({
 | 
			
		||||
  db
 | 
			
		||||
});
 | 
			
		||||
var db = require('./db'); // your db
 | 
			
		||||
 | 
			
		||||
greenlock.create({
 | 
			
		||||
  store,
 | 
			
		||||
  ...
 | 
			
		||||
  store: require('le-store-sequelize')({
 | 
			
		||||
    db
 | 
			
		||||
  })
 | 
			
		||||
});
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
[1]: https://www.npmjs.com/package/greenlock-store-sequelize
 | 
			
		||||
 | 
			
		||||
@ -133,7 +133,7 @@ module.exports.create = function (config={}) {
 | 
			
		||||
          // using xid because id is reserved by sequelize
 | 
			
		||||
          xid: opts.certificate.kid || opts.certificate.id || opts.subject
 | 
			
		||||
        }
 | 
			
		||||
      })
 | 
			
		||||
      });
 | 
			
		||||
    }).then(function ([record,created]) {
 | 
			
		||||
      // { privateKeyPem, privateKeyJWK }
 | 
			
		||||
      record.content = JSON.stringify(opts.keypair);
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										4
									
								
								sync.js
									
									
									
									
									
								
							
							
						
						
									
										4
									
								
								sync.js
									
									
									
									
									
								
							@ -1,6 +1,6 @@
 | 
			
		||||
'use strict';
 | 
			
		||||
 | 
			
		||||
function syncSequelizeModels(db) {
 | 
			
		||||
function sync(db) {
 | 
			
		||||
  var keys = Object.keys(db);
 | 
			
		||||
 | 
			
		||||
  function next() {
 | 
			
		||||
@ -19,4 +19,4 @@ function isModel(key) {
 | 
			
		||||
  return !(['sequelize','Sequelize'].includes(key));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
module.exports = syncSequelizeModels;
 | 
			
		||||
module.exports = sync;
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user