summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristoph (Sheogorath) Kern2019-04-10 11:39:11 +0200
committerGitHub2019-04-10 11:39:11 +0200
commitef348fc49b01711aaea3c0b68cdd9fa77876c596 (patch)
tree496225cc71133387b3c6e51b899d9a91d204f420
parentf541c00bad561672c91bb0249acd8e6ce2f58a9e (diff)
parent208070d2e776c437154e6ead552364b3956adf1c (diff)
Merge pull request #33 from codimd/lutim-support
Add support for image hosting with lutim
-rw-r--r--docs/configuration-config-file.md10
-rw-r--r--docs/configuration-env-vars.md8
-rw-r--r--lib/config/default.js5
-rw-r--r--lib/config/environment.js3
-rw-r--r--lib/config/index.js4
-rw-r--r--lib/web/imageRouter/lutim.js31
-rw-r--r--package.json1
7 files changed, 56 insertions, 6 deletions
diff --git a/docs/configuration-config-file.md b/docs/configuration-config-file.md
index ca027941..cbc6534d 100644
--- a/docs/configuration-config-file.md
+++ b/docs/configuration-config-file.md
@@ -1,7 +1,7 @@
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
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
@@ -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 |
| `forbiddenNoteIDs` | `['robots.txt']` | disallow creation of notes, even if `allowFreeUrl` is `true` |
| `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) |
| `staticCacheTime` | `1 * 24 * 60 * 60 * 1000` | static file cache time |
| `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) |
+### 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
diff --git a/docs/configuration-env-vars.md b/docs/configuration-env-vars.md
index b512f485..ba635cde 100644
--- a/docs/configuration-env-vars.md
+++ b/docs/configuration-env-vars.md
@@ -33,7 +33,7 @@ defaultNotePath can't be set from env-vars
| `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_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) |
@@ -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 |
+### 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:** *relative paths are based on CodiMD's base directory*
diff --git a/lib/config/default.js b/lib/config/default.js
index 98ccee91..c87beda3 100644
--- a/lib/config/default.js
+++ b/lib/config/default.js
@@ -58,8 +58,11 @@ module.exports = {
heartbeatTimeout: 10000,
// document
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',
+ lutim: {
+ url: 'https://framapic.org/'
+ },
imgur: {
clientID: undefined
},
diff --git a/lib/config/environment.js b/lib/config/environment.js
index 882df140..508c1ba6 100644
--- a/lib/config/environment.js
+++ b/lib/config/environment.js
@@ -49,6 +49,9 @@ module.exports = {
secure: toBooleanConfig(process.env.CMD_MINIO_SECURE),
port: toIntegerConfig(process.env.CMD_MINIO_PORT)
},
+ lutim: {
+ url: process.env.CMD_LUTIM_URL
+ },
s3bucket: process.env.CMD_S3_BUCKET,
azure: {
connectionString: process.env.CMD_AZURE_CONNECTION_STRING,
diff --git a/lib/config/index.js b/lib/config/index.js
index 4c28196e..e102dce9 100644
--- a/lib/config/index.js
+++ b/lib/config/index.js
@@ -164,8 +164,8 @@ if (config.sessionSecret === 'secret') {
}
// Validate upload upload providers
-if (['filesystem', 's3', 'minio', 'imgur', 'azure'].indexOf(config.imageUploadType) === -1) {
- logger.error('"imageuploadtype" is not correctly set. Please use "filesystem", "s3", "minio", "azure" or "imgur". Defaulting to "filesystem"')
+if (['filesystem', 's3', 'minio', 'imgur', 'azure', 'lutim'].indexOf(config.imageUploadType) === -1) {
+ logger.error('"imageuploadtype" is not correctly set. Please use "filesystem", "s3", "minio", "azure", "lutim" or "imgur". Defaulting to "filesystem"')
config.imageUploadType = 'filesystem'
}
diff --git a/lib/web/imageRouter/lutim.js b/lib/web/imageRouter/lutim.js
new file mode 100644
index 00000000..78b856c9
--- /dev/null
+++ b/lib/web/imageRouter/lutim.js
@@ -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)
+ })
+}
diff --git a/package.json b/package.json
index 752f867c..4d209277 100644
--- a/package.json
+++ b/package.json
@@ -62,6 +62,7 @@
"keymaster": "^1.6.2",
"list.js": "^1.5.0",
"lodash": "^4.17.11",
+ "lutim": "^1.0.2",
"lz-string": "git+https://github.com/hackmdio/lz-string.git",
"markdown-it": "^8.2.2",
"markdown-it-abbr": "^1.0.4",