123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258 |
- /* global siteConfig */
- import axios from 'axios'
- export default {
- name: 'configManager',
- data() {
- return {
- loading: false,
- state: 'welcome',
- syscheck: {
- ok: false,
- error: '',
- results: []
- },
- dbcheck: {
- ok: false,
- error: ''
- },
- gitcheck: {
- ok: false,
- error: ''
- },
- final: {
- ok: false,
- error: '',
- redirectUrl: ''
- },
- conf: {
- adminEmail: '',
- adminPassword: '',
- adminPasswordConfirm: '',
- gitAuthPass: '',
- gitAuthSSHKey: '',
- gitAuthSSHKeyEnv: '',
- gitAuthSSHKeyDB: '',
- gitAuthSSL: true,
- gitAuthType: 'ssh',
- gitAuthUser: '',
- gitBranch: 'master',
- gitServerEmail: '',
- gitShowUserEmail: true,
- gitUrl: '',
- gitUseRemote: (siteConfig.git !== false),
- lang: siteConfig.lang || 'en',
- path: siteConfig.path || '/',
- pathRepo: './repo',
- port: siteConfig.port || 80,
- public: (siteConfig.public === true),
- selfRegister: (siteConfig.selfRegister === true),
- telemetry: true,
- title: siteConfig.title || 'Wiki',
- upgrade: false,
- upgMongo: 'mongodb://'
- },
- considerations: {
- https: false,
- port: false,
- localhost: false
- }
- }
- },
- computed: {
- currentProgress: function () {
- let perc = '0%'
- switch (this.state) {
- case 'welcome':
- perc = '0%'
- break
- case 'syscheck':
- perc = (this.syscheck.ok) ? '15%' : '5%'
- break
- case 'general':
- perc = '25%'
- break
- case 'considerations':
- perc = '30%'
- break
- case 'git':
- perc = '50%'
- break
- case 'gitcheck':
- perc = (this.gitcheck.ok) ? '70%' : '55%'
- break
- case 'admin':
- perc = '75%'
- break
- case 'upgrade':
- perc = '85%'
- break
- }
- return perc
- }
- },
- mounted: function () {
- /* if (appconfig.paths) {
- this.conf.pathData = appconfig.paths.data || './data'
- this.conf.pathRepo = appconfig.paths.repo || './repo'
- }
- if (appconfig.git !== false && _.isPlainObject(appconfig.git)) {
- this.conf.gitUrl = appconfig.git.url || ''
- this.conf.gitBranch = appconfig.git.branch || 'master'
- this.conf.gitShowUserEmail = (appconfig.git.showUserEmail !== false)
- this.conf.gitServerEmail = appconfig.git.serverEmail || ''
- if (_.isPlainObject(appconfig.git.auth)) {
- this.conf.gitAuthType = appconfig.git.auth.type || 'ssh'
- this.conf.gitAuthSSHKey = appconfig.git.auth.privateKey || ''
- this.conf.gitAuthUser = appconfig.git.auth.username || ''
- this.conf.gitAuthPass = appconfig.git.auth.password || ''
- this.conf.gitAuthSSL = (appconfig.git.auth.sslVerify !== false)
- }
- } */
- },
- methods: {
- proceedToWelcome: function (ev) {
- this.state = 'welcome'
- this.loading = false
- },
- proceedToSyscheck: function (ev) {
- let self = this
- this.state = 'syscheck'
- this.loading = true
- self.syscheck = {
- ok: false,
- error: '',
- results: []
- }
- this.$helpers._.delay(() => {
- axios.post('/syscheck', self.conf).then(resp => {
- if (resp.data.ok === true) {
- self.syscheck.ok = true
- self.syscheck.results = resp.data.results
- } else {
- self.syscheck.ok = false
- self.syscheck.error = resp.data.error
- }
- self.loading = false
- self.$nextTick()
- }).catch(err => {
- window.alert(err.message)
- })
- }, 1000)
- },
- proceedToGeneral: function (ev) {
- let self = this
- self.state = 'general'
- self.loading = false
- self.$nextTick(() => {
- self.$validator.validateAll('general')
- })
- },
- proceedToConsiderations: function (ev) {
- this.considerations = {
- https: !this.$helpers._.startsWith(this.conf.host, 'https'),
- port: false, // TODO
- localhost: this.$helpers._.includes(this.conf.host, 'localhost')
- }
- this.state = 'considerations'
- this.loading = false
- },
- proceedToGit: function (ev) {
- let self = this
- self.state = 'git'
- self.loading = false
- self.$nextTick(() => {
- self.$validator.validateAll('git')
- })
- },
- proceedToGitCheck: function (ev) {
- let self = this
- this.state = 'gitcheck'
- this.loading = true
- self.gitcheck = {
- ok: false,
- results: [],
- error: ''
- }
- this.$helpers._.delay(() => {
- axios.post('/gitcheck', self.conf).then(resp => {
- if (resp.data.ok === true) {
- self.gitcheck.ok = true
- self.gitcheck.results = resp.data.results
- } else {
- self.gitcheck.ok = false
- self.gitcheck.error = resp.data.error
- }
- self.loading = false
- self.$nextTick()
- }).catch(err => {
- window.alert(err.message)
- })
- }, 1000)
- },
- proceedToAdmin: function (ev) {
- let self = this
- self.state = 'admin'
- self.loading = false
- self.$nextTick(() => {
- self.$validator.validateAll('admin')
- })
- },
- proceedToUpgrade: function (ev) {
- if (this.conf.upgrade) {
- this.state = 'upgrade'
- this.loading = false
- this.$nextTick(() => {
- this.$validator.validateAll('upgrade')
- })
- } else {
- this.proceedToFinal()
- }
- },
- proceedToFinal: function (ev) {
- let self = this
- self.state = 'final'
- self.loading = true
- self.final = {
- ok: false,
- error: '',
- redirectUrl: ''
- }
- this.$helpers._.delay(() => {
- axios.post('/finalize', self.conf).then(resp => {
- if (resp.data.ok === true) {
- self.$helpers._.delay(() => {
- self.final.ok = true
- switch (resp.data.redirectPort) {
- case 80:
- self.final.redirectUrl = `http://${window.location.hostname}${resp.data.redirectPath}/login`
- break
- case 443:
- self.final.redirectUrl = `https://${window.location.hostname}${resp.data.redirectPath}/login`
- break
- default:
- self.final.redirectUrl = `http://${window.location.hostname}:${resp.data.redirectPort}${resp.data.redirectPath}/login`
- break
- }
- self.loading = false
- }, 5000)
- } else {
- self.final.ok = false
- self.final.error = resp.data.error
- self.loading = false
- }
- self.$nextTick()
- }).catch(err => {
- window.alert(err.message)
- })
- }, 1000)
- },
- finish: function (ev) {
- window.location.assign(this.final.redirectUrl)
- }
- }
- }
|