summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/config/default.js4
-rw-r--r--lib/config/environment.js1
-rw-r--r--lib/config/index.js13
-rw-r--r--lib/config/utils.js33
-rw-r--r--lib/realtime.js2
-rw-r--r--lib/response.js52
-rw-r--r--lib/web/statusRouter.js2
7 files changed, 52 insertions, 55 deletions
diff --git a/lib/config/default.js b/lib/config/default.js
index c3ada982..15f11aaa 100644
--- a/lib/config/default.js
+++ b/lib/config/default.js
@@ -1,5 +1,7 @@
'use strict'
+const os = require('os')
+
module.exports = {
domain: '',
urlPath: '',
@@ -39,7 +41,7 @@ module.exports = {
dhParamPath: '',
// other path
viewPath: './public/views',
- tmpPath: './tmp',
+ tmpPath: os.tmpdir(),
defaultNotePath: './public/default.md',
docsPath: './public/docs',
uploadsPath: './public/uploads',
diff --git a/lib/config/environment.js b/lib/config/environment.js
index 6737637c..0c7c9a4f 100644
--- a/lib/config/environment.js
+++ b/lib/config/environment.js
@@ -3,6 +3,7 @@
const {toBooleanConfig, toArrayConfig, toIntegerConfig} = require('./utils')
module.exports = {
+ sourceURL: process.env.CMD_SOURCE_URL,
domain: process.env.CMD_DOMAIN,
urlPath: process.env.CMD_URL_PATH,
host: process.env.CMD_HOST,
diff --git a/lib/config/index.js b/lib/config/index.js
index f8b68e30..4e1fa50d 100644
--- a/lib/config/index.js
+++ b/lib/config/index.js
@@ -8,6 +8,7 @@ const {merge} = require('lodash')
const deepFreeze = require('deep-freeze')
const {Environment, Permission} = require('./enum')
const logger = require('../logger')
+const {getGitCommit, getGitHubURL} = require('./utils')
const appRootPath = path.resolve(__dirname, '../../')
const env = process.env.NODE_ENV || Environment.development
@@ -16,11 +17,17 @@ const debugConfig = {
}
// Get version string from package.json
-const {version} = require(path.join(appRootPath, 'package.json'))
+const {version, repository} = require(path.join(appRootPath, 'package.json'))
+
+const commitID = getGitCommit(appRootPath)
+const sourceURL = getGitHubURL(repository.url, commitID || version)
+const fullversion = commitID ? `${version}-${commitID}` : version
const packageConfig = {
version: version,
- minimumCompatibleVersion: '0.5.0'
+ minimumCompatibleVersion: '0.5.0',
+ fullversion: fullversion,
+ sourceURL: sourceURL
}
const configFilePath = path.resolve(appRootPath, process.env.CMD_CONFIG_FILE ||
@@ -110,6 +117,8 @@ if (config.gitlab && config.gitlab.version !== 'v4' && config.gitlab.version !==
logger.warn('config.js contains wrong version (' + config.gitlab.version + ') for gitlab api; it should be \'v3\' or \'v4\'. Defaulting to v4')
config.gitlab.version = 'v4'
}
+// If gitlab scope is api, enable snippets Export/import
+config.isGitlabSnippetsEnable = (!config.gitlab.scope || config.gitlab.scope === 'api')
// Only update i18n files in development setups
config.updateI18nFiles = (env === Environment.development)
diff --git a/lib/config/utils.js b/lib/config/utils.js
index b2406cf1..9646f8c0 100644
--- a/lib/config/utils.js
+++ b/lib/config/utils.js
@@ -1,5 +1,8 @@
'use strict'
+const fs = require('fs')
+const path = require('path')
+
exports.toBooleanConfig = function toBooleanConfig (configValue) {
if (configValue && typeof configValue === 'string') {
return (configValue === 'true')
@@ -20,3 +23,33 @@ exports.toIntegerConfig = function toIntegerConfig (configValue) {
}
return configValue
}
+
+exports.getGitCommit = function getGitCommit (repodir) {
+ if (!fs.existsSync(repodir + '/.git/HEAD')) {
+ return undefined
+ }
+ let reference = fs.readFileSync(repodir + '/.git/HEAD', 'utf8')
+ if (reference.startsWith('ref: ')) {
+ reference = reference.substr(5).replace('\n', '')
+ reference = fs.readFileSync(path.resolve(repodir + '/.git', reference), 'utf8')
+ }
+ reference = reference.replace('\n', '')
+ return reference
+}
+
+exports.getGitHubURL = function getGitHubURL (repo, reference) {
+ // if it's not a github reference, we handle handle that anyway
+ if (!repo.startsWith('https://github.com') && !repo.startsWith('git@github.com')) {
+ return repo
+ }
+ if (repo.startsWith('git@github.com') || repo.startsWith('ssh://git@github.com')) {
+ repo = repo.replace(/^(ssh:\/\/)?git@github.com:/, 'https://github.com/')
+ }
+
+ if (repo.endsWith('.git')) {
+ repo = repo.replace(/\.git$/, '/')
+ } else if (!repo.endsWith('/')) {
+ repo = repo + '/'
+ }
+ return repo + 'tree/' + reference
+}
diff --git a/lib/realtime.js b/lib/realtime.js
index f6c62d4e..8541bafa 100644
--- a/lib/realtime.js
+++ b/lib/realtime.js
@@ -887,7 +887,7 @@ function connection (socket) {
// check version
socket.on('version', function () {
socket.emit('version', {
- version: config.version,
+ version: config.fullversion,
minimumCompatibleVersion: config.minimumCompatibleVersion
})
})
diff --git a/lib/response.js b/lib/response.js
index a400d021..671aa120 100644
--- a/lib/response.js
+++ b/lib/response.js
@@ -55,12 +55,10 @@ var response = {
function responseError (res, code, detail, msg) {
res.status(code).render('error.ejs', {
- url: config.serverURL,
title: code + ' ' + detail + ' ' + msg,
code: code,
detail: detail,
- msg: msg,
- useCDN: config.useCDN
+ msg: msg
})
}
@@ -69,26 +67,6 @@ function showIndex (req, res, next) {
var deleteToken = ''
var data = {
- url: config.serverURL,
- useCDN: config.useCDN,
- allowAnonymous: config.allowAnonymous,
- allowAnonymousEdits: config.allowAnonymousEdits,
- facebook: config.isFacebookEnable,
- twitter: config.isTwitterEnable,
- github: config.isGitHubEnable,
- gitlab: config.isGitLabEnable,
- mattermost: config.isMattermostEnable,
- dropbox: config.isDropboxEnable,
- google: config.isGoogleEnable,
- ldap: config.isLDAPEnable,
- ldapProviderName: config.ldap.providerName,
- saml: config.isSAMLEnable,
- oauth2: config.isOAuth2Enable,
- oauth2ProviderName: config.oauth2.providerName,
- email: config.isEmailEnable,
- allowEmailRegister: config.allowEmailRegister,
- allowPDFExport: config.allowPDFExport,
- openID: config.isOpenIDEnable,
signin: authStatus,
infoMessage: req.flash('info'),
errorMessage: req.flash('error'),
@@ -124,27 +102,7 @@ function responseCodiMD (res, note) {
'X-Robots-Tag': 'noindex, nofollow' // prevent crawling
})
res.render('codimd.ejs', {
- url: config.serverURL,
- title: title,
- useCDN: config.useCDN,
- allowAnonymous: config.allowAnonymous,
- allowAnonymousEdits: config.allowAnonymousEdits,
- facebook: config.isFacebookEnable,
- twitter: config.isTwitterEnable,
- github: config.isGitHubEnable,
- gitlab: config.isGitLabEnable,
- mattermost: config.isMattermostEnable,
- dropbox: config.isDropboxEnable,
- google: config.isGoogleEnable,
- ldap: config.isLDAPEnable,
- ldapProviderName: config.ldap.providerName,
- oauth2ProviderName: config.oauth2.providerName,
- saml: config.isSAMLEnable,
- oauth2: config.isOAuth2Enable,
- email: config.isEmailEnable,
- allowEmailRegister: config.allowEmailRegister,
- allowPDFExport: config.allowPDFExport,
- openID: config.isOpenIDEnable
+ title: title
})
}
@@ -254,16 +212,13 @@ function showPublishNote (req, res, next) {
var updatetime = note.lastchangeAt
var title = models.Note.decodeTitle(note.title)
title = models.Note.generateWebTitle(meta.title || title)
- var origin = config.serverURL
var data = {
title: title,
description: meta.description || (markdown ? models.Note.generateDescription(markdown) : null),
viewcount: note.viewcount,
createtime: createtime,
updatetime: updatetime,
- url: origin,
body: body,
- useCDN: config.useCDN,
owner: note.owner ? note.owner.id : null,
ownerprofile: note.owner ? models.User.getProfile(note.owner) : null,
lastchangeuser: note.lastchangeuser ? note.lastchangeuser.id : null,
@@ -637,18 +592,15 @@ function showPublishSlide (req, res, next) {
var updatetime = note.lastchangeAt
var title = models.Note.decodeTitle(note.title)
title = models.Note.generateWebTitle(meta.title || title)
- var origin = config.serverURL
var data = {
title: title,
description: meta.description || (markdown ? models.Note.generateDescription(markdown) : null),
viewcount: note.viewcount,
createtime: createtime,
updatetime: updatetime,
- url: origin,
body: markdown,
theme: meta.slideOptions && utils.isRevealTheme(meta.slideOptions.theme),
meta: JSON.stringify(extracted.meta),
- useCDN: config.useCDN,
owner: note.owner ? note.owner.id : null,
ownerprofile: note.owner ? models.User.getProfile(note.owner) : null,
lastchangeuser: note.lastchangeuser ? note.lastchangeuser.id : null,
diff --git a/lib/web/statusRouter.js b/lib/web/statusRouter.js
index fb2609ea..2b9cb65f 100644
--- a/lib/web/statusRouter.js
+++ b/lib/web/statusRouter.js
@@ -96,7 +96,7 @@ statusRouter.get('/config', function (req, res) {
domain: config.domain,
urlpath: config.urlPath,
debug: config.debug,
- version: config.version,
+ version: config.fullversion,
DROPBOX_APP_KEY: config.dropbox.appKey,
allowedUploadMimeTypes: config.allowedUploadMimeTypes
}