Skip to content

Commit eec2318

Browse files
authored
Merge pull request #506 from erasys/minio
Add support for minio
2 parents 7de6e32 + 2c780f5 commit eec2318

4 files changed

Lines changed: 49 additions & 0 deletions

File tree

lib/config/default.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,13 @@ module.exports = {
6262
secretAccessKey: undefined,
6363
region: undefined
6464
},
65+
minio: {
66+
accessKey: undefined,
67+
secretKey: undefined,
68+
endPoint: undefined,
69+
secure: true,
70+
port: 9000
71+
},
6572
s3bucket: undefined,
6673
// authentication
6774
facebook: {

lib/config/environment.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,13 @@ module.exports = {
3434
secretAccessKey: process.env.HMD_S3_SECRET_ACCESS_KEY,
3535
region: process.env.HMD_S3_REGION
3636
},
37+
minio: {
38+
accessKey: process.env.HMD_MINIO_ACCESS_KEY,
39+
secretKey: process.env.HMD_MINIO_SECRET_KEY,
40+
endPoint: process.env.HMD_MINIO_ENDPOINT,
41+
secure: toBooleanConfig(process.env.HMD_MINIO_SECURE),
42+
port: parseInt(process.env.HMD_MINIO_PORT)
43+
},
3744
s3bucket: process.env.HMD_S3_BUCKET,
3845
facebook: {
3946
clientID: process.env.HMD_FACEBOOK_CLIENTID,

lib/web/imageRouter.js

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,40 @@ imageRouter.post('/uploadimage', function (req, res) {
7373
})
7474
})
7575
break
76+
77+
case 'minio':
78+
var utils = require('../utils')
79+
var Minio = require('minio')
80+
var minioClient = new Minio.Client({
81+
endPoint: config.minio.endPoint,
82+
port: config.minio.port,
83+
secure: config.minio.secure,
84+
accessKey: config.minio.accessKey,
85+
secretKey: config.minio.secretKey
86+
})
87+
fs.readFile(files.image.path, function (err, buffer) {
88+
if (err) {
89+
logger.error(err)
90+
res.status(500).end('upload image error')
91+
return
92+
}
93+
94+
var key = path.join('uploads', path.basename(files.image.path))
95+
var protocol = config.minio.secure ? 'https' : 'http'
96+
97+
minioClient.putObject(config.s3bucket, key, buffer, buffer.size, utils.getImageMimeType(files.image.path), function (err, data) {
98+
if (err) {
99+
logger.error(err)
100+
res.status(500).end('upload image error')
101+
return
102+
}
103+
res.send({
104+
link: `${protocol}://${config.minio.endPoint}:${config.minio.port}/${config.s3bucket}/${key}`
105+
})
106+
})
107+
})
108+
break
109+
76110
case 'imgur':
77111
default:
78112
imgur.setClientId(config.imgur.clientID)

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@
7979
"mattermost": "^3.4.0",
8080
"meta-marked": "^0.4.2",
8181
"method-override": "^2.3.7",
82+
"minio": "^3.1.3",
8283
"moment": "^2.17.1",
8384
"morgan": "^1.7.0",
8485
"mysql": "^2.12.0",

0 commit comments

Comments
 (0)