From 3b5c0a9b74eac3ad9dbf7d5c69cd84bc36c86981 Mon Sep 17 00:00:00 2001 From: NGPixel Date: Sat, 11 Feb 2017 16:21:50 -0500 Subject: [PATCH] Fixed SSH authentication + uploads folder check --- CHANGELOG.md | 6 ++++++ app/data.yml | 7 +++---- config.sample.yml | 9 ++++----- libs/git.js | 23 ++++++++++++++++++----- libs/local.js | 2 +- 5 files changed, 32 insertions(+), 15 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ce88b67d..bf6cd7cd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,12 @@ All notable changes to this project will be documented in this file. This project adheres to [Semantic Versioning](http://semver.org/). ## [Unreleased] +### Fixed +- Fixed folder name typo during uploads folder permissions check +- Fixed SSH authentication for Git + +### Changed +- Removed separate OAuth authentication option. Select basic authentication to use tokens. ## [v1.0-beta.3] - 2017-02-10 ### Added diff --git a/app/data.yml b/app/data.yml index f4d9df23..52318bdb 100644 --- a/app/data.yml +++ b/app/data.yml @@ -22,8 +22,8 @@ defaults: public: false auth: local: - enabled: true - microsoft: + enabled: true + microsoft: enabled: false google: enabled: false @@ -39,10 +39,9 @@ defaults: type: basic username: null password: null - publicKey: null privateKey: null sslVerify: true signature: name: Wiki email: wiki@example.com -# --------------------------------- \ No newline at end of file +# --------------------------------- diff --git a/config.sample.yml b/config.sample.yml index c82110cc..cba637e0 100644 --- a/config.sample.yml +++ b/config.sample.yml @@ -100,18 +100,17 @@ git: branch: master auth: - # Type: basic, oauth or ssh + # Type: basic or ssh type: ssh + # Only for Basic authentication: username: marty - - # Password, OAuth token or private key passphrase: password: MartyMcFly88 # Only for SSH authentication: - publicKey: /etc/wiki/keys/git.pem privateKey: /etc/wiki/keys/git.pem + sslVerify: true signature: name: Marty - email: marty@example.com \ No newline at end of file + email: marty@example.com diff --git a/libs/git.js b/libs/git.js index b0a6bdcb..d2bd7d42 100644 --- a/libs/git.js +++ b/libs/git.js @@ -89,19 +89,32 @@ module.exports = { // Initialize remote let urlObj = URL.parse(appconfig.git.url) - urlObj.auth = appconfig.git.auth.username + ((appconfig.git.auth.type !== 'ssh') ? ':' + appconfig.git.auth.password : '') + if (appconfig.git.auth.type !== 'ssh') { + urlObj.auth = appconfig.git.auth.username + ':' + appconfig.git.auth.password + } self._url = URL.format(urlObj) + let gitConfigs = [ + () => { return self._git.exec('config', ['--local', 'user.name', self._signature.name]) }, + () => { return self._git.exec('config', ['--local', 'user.email', self._signature.email]) }, + () => { return self._git.exec('config', ['--local', '--bool', 'http.sslVerify', _.toString(appconfig.git.auth.sslVerify)]) } + ] + + if (appconfig.git.auth.type === 'ssh') { + gitConfigs.push(() => { + return self._git.exec('config', ['--local', 'core.sshCommand', 'ssh -i "' + appconfig.git.auth.privateKey + '" -o StrictHostKeyChecking=no']) + }) + } + return self._git.exec('remote', 'show').then((cProc) => { let out = cProc.stdout.toString() if (_.includes(out, 'origin')) { return true } else { - return Promise.join( - self._git.exec('config', ['--local', 'user.name', self._signature.name]), - self._git.exec('config', ['--local', 'user.email', self._signature.email]) - ).then(() => { + return Promise.each(gitConfigs, fn => { return fn() }).then(() => { return self._git.exec('remote', ['add', 'origin', self._url]) + }).catch(err => { + winston.error(err) }) } }) diff --git a/libs/local.js b/libs/local.js index c0808e15..7fd56d8a 100644 --- a/libs/local.js +++ b/libs/local.js @@ -114,7 +114,7 @@ module.exports = { fs.ensureDirSync(path.resolve(ROOTPATH, appconfig.paths.repo, './uploads')) if (os.type() !== 'Windows_NT') { - fs.chmodSync(path.resolve(ROOTPATH, appconfig.paths.repo, './upload'), '644') + fs.chmodSync(path.resolve(ROOTPATH, appconfig.paths.repo, './uploads'), '644') } } catch (err) { winston.error(err)