2019-04-08 13:01:22 +00:00
|
|
|
# [le-store-sequelize][1]
|
|
|
|
|
|
|
|
> A database-driven Greenlock storage plugin with wildcard support.
|
|
|
|
|
|
|
|
## Usage
|
|
|
|
|
|
|
|
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,
|
|
|
|
...
|
|
|
|
});
|
|
|
|
```
|
|
|
|
|
|
|
|
## 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() {
|
|
|
|
}
|
|
|
|
```
|
2019-04-10 14:17:15 +00:00
|
|
|
## Configuration
|
2019-04-08 13:01:22 +00:00
|
|
|
|
2019-04-10 14:17:15 +00:00
|
|
|
### Defaults
|
|
|
|
|
|
|
|
No configuration is required. By default, you'll get a baked-in Sequelize
|
|
|
|
database running sqlite3.
|
2019-04-08 13:01:22 +00:00
|
|
|
|
|
|
|
```javascript
|
2019-04-10 14:17:15 +00:00
|
|
|
greenlock.create({
|
|
|
|
store: require('le-store-sequelize'),
|
|
|
|
...
|
|
|
|
});
|
2019-04-08 13:01:22 +00:00
|
|
|
```
|
|
|
|
|
2019-04-10 14:17:15 +00:00
|
|
|
### Database Connection
|
2019-04-08 13:01:22 +00:00
|
|
|
|
2019-04-10 14:11:38 +00:00
|
|
|
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.
|
|
|
|
|
|
|
|
```javascript
|
|
|
|
var store = require('le-store-sequelize')({
|
|
|
|
dbConfig: {
|
|
|
|
username: 'mysqluser',
|
|
|
|
password: 'mysqlpassword',
|
|
|
|
database: 'mysqldatabase,
|
|
|
|
host: '127.0.0.1',
|
|
|
|
dialect: 'mysql'
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
greenlock.create({
|
2019-04-10 14:17:15 +00:00
|
|
|
store,
|
2019-04-10 14:11:38 +00:00
|
|
|
...
|
|
|
|
});
|
|
|
|
```
|
|
|
|
|
|
|
|
The database can also be configured using an env variable.
|
|
|
|
|
|
|
|
```javascript
|
|
|
|
var store = require('le-store-sequelize')({
|
|
|
|
dbConfig: {
|
|
|
|
use_env_variable: 'DB_URL'
|
|
|
|
}
|
|
|
|
});
|
|
|
|
```
|
2019-04-08 13:01:22 +00:00
|
|
|
|
2019-04-10 14:17:15 +00:00
|
|
|
### Custom Database Object
|
|
|
|
|
|
|
|
You can pass in your own database object if you wish. It doesn't actually even
|
|
|
|
have to be a Sequelize database object, as long as the object responds to the
|
|
|
|
implemented methods and returns the expected results.
|
|
|
|
|
|
|
|
```javascript
|
|
|
|
var db = new MyDatabase();
|
|
|
|
|
|
|
|
var store = require('le-store-sequelize')({
|
|
|
|
db
|
|
|
|
});
|
2019-04-08 13:01:22 +00:00
|
|
|
|
2019-04-10 14:17:15 +00:00
|
|
|
greenlock.create({
|
|
|
|
store,
|
|
|
|
...
|
|
|
|
});
|
|
|
|
```
|
2019-04-08 13:01:22 +00:00
|
|
|
|
|
|
|
[1]: https://www.npmjs.com/package/le-store-sequelize
|