Merge pull request #33 from codimd/lutim-support
Add support for image hosting with lutim
This commit is contained in:
		
						commit
						ef348fc49b
					
				| @ -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 | ||||
|  | ||||
| @ -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* | ||||
|  | ||||
| @ -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 | ||||
|   }, | ||||
|  | ||||
| @ -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, | ||||
|  | ||||
| @ -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' | ||||
| } | ||||
| 
 | ||||
|  | ||||
							
								
								
									
										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", | ||||
|     "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", | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user