Fixed SSH authentication + uploads folder check
This commit is contained in:
parent
c6853a0315
commit
3b5c0a9b74
@ -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/).
|
This project adheres to [Semantic Versioning](http://semver.org/).
|
||||||
|
|
||||||
## [Unreleased]
|
## [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
|
## [v1.0-beta.3] - 2017-02-10
|
||||||
### Added
|
### Added
|
||||||
|
@ -22,8 +22,8 @@ defaults:
|
|||||||
public: false
|
public: false
|
||||||
auth:
|
auth:
|
||||||
local:
|
local:
|
||||||
enabled: true
|
enabled: true
|
||||||
microsoft:
|
microsoft:
|
||||||
enabled: false
|
enabled: false
|
||||||
google:
|
google:
|
||||||
enabled: false
|
enabled: false
|
||||||
@ -39,10 +39,9 @@ defaults:
|
|||||||
type: basic
|
type: basic
|
||||||
username: null
|
username: null
|
||||||
password: null
|
password: null
|
||||||
publicKey: null
|
|
||||||
privateKey: null
|
privateKey: null
|
||||||
sslVerify: true
|
sslVerify: true
|
||||||
signature:
|
signature:
|
||||||
name: Wiki
|
name: Wiki
|
||||||
email: wiki@example.com
|
email: wiki@example.com
|
||||||
# ---------------------------------
|
# ---------------------------------
|
||||||
|
@ -100,18 +100,17 @@ git:
|
|||||||
branch: master
|
branch: master
|
||||||
auth:
|
auth:
|
||||||
|
|
||||||
# Type: basic, oauth or ssh
|
# Type: basic or ssh
|
||||||
type: ssh
|
type: ssh
|
||||||
|
|
||||||
|
# Only for Basic authentication:
|
||||||
username: marty
|
username: marty
|
||||||
|
|
||||||
# Password, OAuth token or private key passphrase:
|
|
||||||
password: MartyMcFly88
|
password: MartyMcFly88
|
||||||
|
|
||||||
# Only for SSH authentication:
|
# Only for SSH authentication:
|
||||||
publicKey: /etc/wiki/keys/git.pem
|
|
||||||
privateKey: /etc/wiki/keys/git.pem
|
privateKey: /etc/wiki/keys/git.pem
|
||||||
|
|
||||||
sslVerify: true
|
sslVerify: true
|
||||||
signature:
|
signature:
|
||||||
name: Marty
|
name: Marty
|
||||||
email: marty@example.com
|
email: marty@example.com
|
||||||
|
23
libs/git.js
23
libs/git.js
@ -89,19 +89,32 @@ module.exports = {
|
|||||||
// Initialize remote
|
// Initialize remote
|
||||||
|
|
||||||
let urlObj = URL.parse(appconfig.git.url)
|
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)
|
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) => {
|
return self._git.exec('remote', 'show').then((cProc) => {
|
||||||
let out = cProc.stdout.toString()
|
let out = cProc.stdout.toString()
|
||||||
if (_.includes(out, 'origin')) {
|
if (_.includes(out, 'origin')) {
|
||||||
return true
|
return true
|
||||||
} else {
|
} else {
|
||||||
return Promise.join(
|
return Promise.each(gitConfigs, fn => { return fn() }).then(() => {
|
||||||
self._git.exec('config', ['--local', 'user.name', self._signature.name]),
|
|
||||||
self._git.exec('config', ['--local', 'user.email', self._signature.email])
|
|
||||||
).then(() => {
|
|
||||||
return self._git.exec('remote', ['add', 'origin', self._url])
|
return self._git.exec('remote', ['add', 'origin', self._url])
|
||||||
|
}).catch(err => {
|
||||||
|
winston.error(err)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
@ -114,7 +114,7 @@ module.exports = {
|
|||||||
fs.ensureDirSync(path.resolve(ROOTPATH, appconfig.paths.repo, './uploads'))
|
fs.ensureDirSync(path.resolve(ROOTPATH, appconfig.paths.repo, './uploads'))
|
||||||
|
|
||||||
if (os.type() !== 'Windows_NT') {
|
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) {
|
} catch (err) {
|
||||||
winston.error(err)
|
winston.error(err)
|
||||||
|
Loading…
Reference in New Issue
Block a user