Merge pull request #33 from codimd/lutim-support
Add support for image hosting with lutim
This commit is contained in:
commit
ef348fc49b
7 changed files with 56 additions and 6 deletions
|
@ -1,7 +1,7 @@
|
||||||
Configuration Using Config file
|
Configuration Using Config file
|
||||||
===
|
===
|
||||||
|
|
||||||
You can choose to configure CodiMD with either a config file or with
|
You can choose to configure CodiMD with either a config file or with
|
||||||
[environment variables](configuration-env-vars.md). The config file is processed
|
[environment variables](configuration-env-vars.md). The config file is processed
|
||||||
in [`lib/config/index.js`](../lib/config/index.js) - so this is the first
|
in [`lib/config/index.js`](../lib/config/index.js) - so this is the first
|
||||||
place to look if anything is missing not obvious from this document. The
|
place to look if anything is missing not obvious from this document. The
|
||||||
|
@ -29,7 +29,7 @@ to `config.json` before filling in your own details.
|
||||||
| `dbURL` | `mysql://localhost:3306/database` | set the db URL; if set, then db config (below) won't be applied |
|
| `dbURL` | `mysql://localhost:3306/database` | set the db URL; if set, then db config (below) won't be applied |
|
||||||
| `forbiddenNoteIDs` | `['robots.txt']` | disallow creation of notes, even if `allowFreeUrl` is `true` |
|
| `forbiddenNoteIDs` | `['robots.txt']` | disallow creation of notes, even if `allowFreeUrl` is `true` |
|
||||||
| `loglevel` | `info` | Defines what kind of logs are provided to stdout. |
|
| `loglevel` | `info` | Defines what kind of logs are provided to stdout. |
|
||||||
| `imageUploadType` | `imgur`, `s3`, `minio`, `azure` or `filesystem`(default) | Where to upload images. For S3, see our Image Upload Guides for [S3](guides/s3-image-upload.md) or [Minio](guides/minio-image-upload.md)|
|
| `imageUploadType` | `imgur`, `s3`, `minio`, `azure`, `lutim` or `filesystem`(default) | Where to upload images. For S3, see our Image Upload Guides for [S3](guides/s3-image-upload.md) or [Minio](guides/minio-image-upload.md)|
|
||||||
| `sourceURL` | `https://github.com/codimd/server/tree/<current commit>` | Provides the link to the source code of CodiMD on the entry page (Please, make sure you change this when you run a modified version) |
|
| `sourceURL` | `https://github.com/codimd/server/tree/<current commit>` | Provides the link to the source code of CodiMD on the entry page (Please, make sure you change this when you run a modified version) |
|
||||||
| `staticCacheTime` | `1 * 24 * 60 * 60 * 1000` | static file cache time |
|
| `staticCacheTime` | `1 * 24 * 60 * 60 * 1000` | static file cache time |
|
||||||
| `heartbeatInterval` | `5000` | socket.io heartbeat interval |
|
| `heartbeatInterval` | `5000` | socket.io heartbeat interval |
|
||||||
|
@ -144,4 +144,10 @@ Most of these have never been documented for the config.json, feel free to expan
|
||||||
| --------- | ------ | ----------- |
|
| --------- | ------ | ----------- |
|
||||||
| `minio` | `{ "accessKey": "YOUR_MINIO_ACCESS_KEY", "secretKey": "YOUR_MINIO_SECRET_KEY", "endpoint": "YOUR_MINIO_HOST", port: 9000, secure: true }` | When `imageUploadType` is set to `minio`, you need to set this key. Also check out our [Minio Image Upload Guide](guides/minio-image-upload.md) |
|
| `minio` | `{ "accessKey": "YOUR_MINIO_ACCESS_KEY", "secretKey": "YOUR_MINIO_SECRET_KEY", "endpoint": "YOUR_MINIO_HOST", port: 9000, secure: true }` | When `imageUploadType` is set to `minio`, you need to set this key. Also check out our [Minio Image Upload Guide](guides/minio-image-upload.md) |
|
||||||
|
|
||||||
|
### Lutim
|
||||||
|
|
||||||
|
| variables | example values | description |
|
||||||
|
| --------- | ------ | ----------- |
|
||||||
|
|`lutim`| `{"url": "YOUR_LUTIM_URL"}`| When `imageUploadType` is set to `lutim`, you can setup the lutim url|
|
||||||
|
|
||||||
<sup>1</sup>: relative paths are based on CodiMD's base directory
|
<sup>1</sup>: relative paths are based on CodiMD's base directory
|
||||||
|
|
|
@ -33,7 +33,7 @@ defaultNotePath can't be set from env-vars
|
||||||
| `CMD_DB_URL` | `mysql://localhost:3306/database` | set the database URL |
|
| `CMD_DB_URL` | `mysql://localhost:3306/database` | set the database URL |
|
||||||
| `CMD_LOGLEVEL` | `info`, `debug` ... | Defines what kind of logs are provided to stdout. |
|
| `CMD_LOGLEVEL` | `info`, `debug` ... | Defines what kind of logs are provided to stdout. |
|
||||||
| `CMD_FORBIDDEN_NOTE_IDS` | `'robots.txt'` | disallow creation of notes, even if `CMD_ALLOW_FREEURL` is `true` |
|
| `CMD_FORBIDDEN_NOTE_IDS` | `'robots.txt'` | disallow creation of notes, even if `CMD_ALLOW_FREEURL` is `true` |
|
||||||
| `CMD_IMAGE_UPLOAD_TYPE` | `imgur`, `s3`, `minio` or `filesystem` | Where to upload images. For S3, see our Image Upload Guides for [S3](guides/s3-image-upload.md) or [Minio](guides/minio-image-upload.md), also there's a whole section on their respective env vars below. |
|
| `CMD_IMAGE_UPLOAD_TYPE` | `imgur`, `s3`, `minio`, `lutim` or `filesystem` | Where to upload images. For S3, see our Image Upload Guides for [S3](guides/s3-image-upload.md) or [Minio](guides/minio-image-upload.md), also there's a whole section on their respective env vars below. |
|
||||||
| `CMD_SOURCE_URL` | `https://github.com/codimd/server/tree/<current commit>` | Provides the link to the source code of CodiMD on the entry page (Please, make sure you change this when you run a modified version) |
|
| `CMD_SOURCE_URL` | `https://github.com/codimd/server/tree/<current commit>` | Provides the link to the source code of CodiMD on the entry page (Please, make sure you change this when you run a modified version) |
|
||||||
|
|
||||||
|
|
||||||
|
@ -244,6 +244,12 @@ you don't have to use either of these.
|
||||||
| `CMD_MINIO_SECURE` | `true` | If set to `true` HTTPS is used for Minio |
|
| `CMD_MINIO_SECURE` | `true` | If set to `true` HTTPS is used for Minio |
|
||||||
|
|
||||||
|
|
||||||
|
### Lutim
|
||||||
|
|
||||||
|
| variable | example value | description |
|
||||||
|
| -------- | ------------- | ----------- |
|
||||||
|
| `CMD_LUTIM_URL` | `https://framapic.org/` | When `CMD_IMAGE_UPLOAD_TYPE` is set to `lutim`, you can setup the lutim url |
|
||||||
|
|
||||||
**Note:** *Due to the rename process we renamed all `HMD_`-prefix variables to be `CMD_`-prefixed. The old ones continue to work.*
|
**Note:** *Due to the rename process we renamed all `HMD_`-prefix variables to be `CMD_`-prefixed. The old ones continue to work.*
|
||||||
|
|
||||||
**Note:** *relative paths are based on CodiMD's base directory*
|
**Note:** *relative paths are based on CodiMD's base directory*
|
||||||
|
|
|
@ -58,8 +58,11 @@ module.exports = {
|
||||||
heartbeatTimeout: 10000,
|
heartbeatTimeout: 10000,
|
||||||
// document
|
// document
|
||||||
documentMaxLength: 100000,
|
documentMaxLength: 100000,
|
||||||
// image upload setting, available options are imgur/s3/filesystem/azure
|
// image upload setting, available options are imgur/s3/filesystem/azure/lutim
|
||||||
imageUploadType: 'filesystem',
|
imageUploadType: 'filesystem',
|
||||||
|
lutim: {
|
||||||
|
url: 'https://framapic.org/'
|
||||||
|
},
|
||||||
imgur: {
|
imgur: {
|
||||||
clientID: undefined
|
clientID: undefined
|
||||||
},
|
},
|
||||||
|
|
|
@ -49,6 +49,9 @@ module.exports = {
|
||||||
secure: toBooleanConfig(process.env.CMD_MINIO_SECURE),
|
secure: toBooleanConfig(process.env.CMD_MINIO_SECURE),
|
||||||
port: toIntegerConfig(process.env.CMD_MINIO_PORT)
|
port: toIntegerConfig(process.env.CMD_MINIO_PORT)
|
||||||
},
|
},
|
||||||
|
lutim: {
|
||||||
|
url: process.env.CMD_LUTIM_URL
|
||||||
|
},
|
||||||
s3bucket: process.env.CMD_S3_BUCKET,
|
s3bucket: process.env.CMD_S3_BUCKET,
|
||||||
azure: {
|
azure: {
|
||||||
connectionString: process.env.CMD_AZURE_CONNECTION_STRING,
|
connectionString: process.env.CMD_AZURE_CONNECTION_STRING,
|
||||||
|
|
|
@ -164,8 +164,8 @@ if (config.sessionSecret === 'secret') {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Validate upload upload providers
|
// Validate upload upload providers
|
||||||
if (['filesystem', 's3', 'minio', 'imgur', 'azure'].indexOf(config.imageUploadType) === -1) {
|
if (['filesystem', 's3', 'minio', 'imgur', 'azure', 'lutim'].indexOf(config.imageUploadType) === -1) {
|
||||||
logger.error('"imageuploadtype" is not correctly set. Please use "filesystem", "s3", "minio", "azure" or "imgur". Defaulting to "filesystem"')
|
logger.error('"imageuploadtype" is not correctly set. Please use "filesystem", "s3", "minio", "azure", "lutim" or "imgur". Defaulting to "filesystem"')
|
||||||
config.imageUploadType = 'filesystem'
|
config.imageUploadType = 'filesystem'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
31
lib/web/imageRouter/lutim.js
Normal file
31
lib/web/imageRouter/lutim.js
Normal file
|
@ -0,0 +1,31 @@
|
||||||
|
'use strict'
|
||||||
|
const config = require('../../config')
|
||||||
|
const logger = require('../../logger')
|
||||||
|
|
||||||
|
const lutim = require('lutim')
|
||||||
|
|
||||||
|
exports.uploadImage = function (imagePath, callback) {
|
||||||
|
if (!imagePath || typeof imagePath !== 'string') {
|
||||||
|
callback(new Error('Image path is missing or wrong'), null)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!callback || typeof callback !== 'function') {
|
||||||
|
logger.error('Callback has to be a function')
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if (config.lutim && config.lutim.url) {
|
||||||
|
lutim.setAPIUrl(config.lutim.url)
|
||||||
|
}
|
||||||
|
|
||||||
|
lutim.uploadImage(imagePath)
|
||||||
|
.then(function (json) {
|
||||||
|
if (config.debug) {
|
||||||
|
logger.info('SERVER uploadimage success: ' + JSON.stringify(json))
|
||||||
|
}
|
||||||
|
callback(null, lutim.getAPIUrl() + json.msg.short)
|
||||||
|
}).catch(function (err) {
|
||||||
|
callback(new Error(err), null)
|
||||||
|
})
|
||||||
|
}
|
|
@ -62,6 +62,7 @@
|
||||||
"keymaster": "^1.6.2",
|
"keymaster": "^1.6.2",
|
||||||
"list.js": "^1.5.0",
|
"list.js": "^1.5.0",
|
||||||
"lodash": "^4.17.11",
|
"lodash": "^4.17.11",
|
||||||
|
"lutim": "^1.0.2",
|
||||||
"lz-string": "git+https://github.com/hackmdio/lz-string.git",
|
"lz-string": "git+https://github.com/hackmdio/lz-string.git",
|
||||||
"markdown-it": "^8.2.2",
|
"markdown-it": "^8.2.2",
|
||||||
"markdown-it-abbr": "^1.0.4",
|
"markdown-it-abbr": "^1.0.4",
|
||||||
|
|
Loading…
Reference in a new issue