[1.0.1] Server config fixes

This commit is contained in:
Angelina Filippova 2019-08-15 12:13:14 +00:00 committed by Maxim Filippov
parent c9684059ca
commit 30c15dbc62
24 changed files with 184 additions and 384 deletions

View File

@ -4,6 +4,13 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
## [1.0.1] - 2019-08-15
### Fixed
- fixes inputs for renders_errors and rewrite_policy settings
- removes unnecessary computed properties
- enables source maps for production build
## [1.0.0] - 2019-08-14 ## [1.0.0] - 2019-08-14
Starting this changelog, for now we have: Starting this changelog, for now we have:

View File

@ -65,7 +65,7 @@ module.exports = {
/** /**
* Source Maps * Source Maps
*/ */
productionSourceMap: false, productionSourceMap: true,
// https://webpack.js.org/configuration/devtool/#production // https://webpack.js.org/configuration/devtool/#production
devtool: 'source-map', devtool: 'source-map',

View File

@ -18,80 +18,80 @@ const getters = {
users: state => state.users.fetchedUsers, users: state => state.users.fetchedUsers,
authHost: state => state.user.authHost, authHost: state => state.user.authHost,
activityPubConfig: state => state.settings.settings['activitypub'], activityPub: state => state.settings.settings['activitypub'],
adminTokenConfig: state => state.settings.settings['admin_token'], adminToken: state => state.settings.settings['admin_token'],
assetsConfig: state => state.settings.settings['assets'], assets: state => state.settings.settings['assets'],
authConfig: state => state.settings.settings['auth'], auth: state => state.settings.settings['auth'],
autoLinkerConfig: state => state.settings.settings['auto_linker'], autoLinker: state => state.settings.settings['auto_linker'],
captchaConfig: state => state.settings.settings['Pleroma.Captcha'], captcha: state => state.settings.settings['Pleroma.Captcha'],
chatConfig: state => state.settings.settings['chat'], chat: state => state.settings.settings['chat'],
consoleConfig: state => state.settings.settings['console'], consoleLogger: state => state.settings.settings['console'],
corsPlugCredentials: state => state.settings.settings['credentials'], corsPlugCredentials: state => state.settings.settings['credentials'],
corsPlugExposeConfig: state => state.settings.settings['expose'], corsPlugExpose: state => state.settings.settings['expose'],
corsPlugHeaders: state => state.settings.settings['headers'], corsPlugHeaders: state => state.settings.settings['headers'],
corsPlugMaxAge: state => state.settings.settings['max_age'], corsPlugMaxAge: state => state.settings.settings['max_age'],
corsPlugMethods: state => state.settings.settings['methods'], corsPlugMethods: state => state.settings.settings['methods'],
databaseConfig: state => state.settings.settings['database'], database: state => state.settings.settings['database'],
ectoReposConfig: state => state.settings.settings['ecto_repos'], ectoRepos: state => state.settings.settings['ecto_repos'],
emojiConfig: state => state.settings.settings['emoji'], emoji: state => state.settings.settings['emoji'],
enabledConfig: state => state.settings.settings['enabled'], enabled: state => state.settings.settings['enabled'],
endpointConfig: state => state.settings.settings['Pleroma.Web.Endpoint'], endpoint: state => state.settings.settings['Pleroma.Web.Endpoint'],
exsysloggerConfig: state => state.settings.settings['ex_syslogger'], exsyslogger: state => state.settings.settings['ex_syslogger'],
facebookConfig: state => state.settings.settings['Ueberauth.Strategy.Facebook.OAuth'], facebook: state => state.settings.settings['Ueberauth.Strategy.Facebook.OAuth'],
fetchInitialPostsConfig: state => state.settings.settings['fetch_initial_posts'], fetchInitialPosts: state => state.settings.settings['fetch_initial_posts'],
formatEncodersConfig: state => state.settings.settings['format_encoders'], formatEncoders: state => state.settings.settings['format_encoders'],
frontendConfig: state => state.settings.settings['frontend_configurations'], frontend: state => state.settings.settings['frontend_configurations'],
googleConfig: state => state.settings.settings['Ueberauth.Strategy.Google.OAuth'], google: state => state.settings.settings['Ueberauth.Strategy.Google.OAuth'],
gopherConfig: state => state.settings.settings['gopher'], gopher: state => state.settings.settings['gopher'],
hackneyPoolsConfig: state => state.settings.settings['hackney_pools'], hackneyPools: state => state.settings.settings['hackney_pools'],
handlerConfig: state => state.settings.settings['handler'], handler: state => state.settings.settings['handler'],
httpConfig: state => state.settings.settings['http'], http: state => state.settings.settings['http'],
httpSecurityConfig: state => state.settings.settings['http_security'], httpSecurity: state => state.settings.settings['http_security'],
instanceConfig: state => state.settings.settings['instance'], instance: state => state.settings.settings['instance'],
kocaptchaConfig: state => state.settings.settings['Pleroma.Captcha.Kocaptcha'], kocaptcha: state => state.settings.settings['Pleroma.Captcha.Kocaptcha'],
levelConfig: state => state.settings.settings['level'], level: state => state.settings.settings['level'],
ldapConfig: state => state.settings.settings['ldap'], ldap: state => state.settings.settings['ldap'],
loggerBackendsConfig: state => state.settings.settings['backends'], loggerBackends: state => state.settings.settings['backends'],
mailerConfig: state => state.settings.settings['Pleroma.Emails.Mailer'], mailer: state => state.settings.settings['Pleroma.Emails.Mailer'],
markupConfig: state => state.settings.settings['markup'], markup: state => state.settings.settings['markup'],
mediaProxyConfig: state => state.settings.settings['media_proxy'], mediaProxy: state => state.settings.settings['media_proxy'],
metaConfig: state => state.settings.settings['meta'], meta: state => state.settings.settings['meta'],
metadataConfig: state => state.settings.settings['Pleroma.Web.Metadata'], metadata: state => state.settings.settings['Pleroma.Web.Metadata'],
microsoftConfig: state => state.settings.settings['Ueberauth.Strategy.Microsoft.OAuth'], microsoft: state => state.settings.settings['Ueberauth.Strategy.Microsoft.OAuth'],
mimeTypesConfig: state => state.settings.settings['types'], mimeTypesConfig: state => state.settings.settings['types'],
mrfHellthreadConfig: state => state.settings.settings['mrf_hellthread'], mrfHellthread: state => state.settings.settings['mrf_hellthread'],
mrfKeywordConfig: state => state.settings.settings['mrf_keyword'], mrfKeyword: state => state.settings.settings['mrf_keyword'],
mrfMentionConfig: state => state.settings.settings['mrf_mention'], mrfMention: state => state.settings.settings['mrf_mention'],
mrfNormalizeMarkupConfig: state => state.settings.settings['mrf_normalize_markup'], mrfNormalizeMarkup: state => state.settings.settings['mrf_normalize_markup'],
mrfRejectnonpublicConfig: state => state.settings.settings['mrf_rejectnonpublic'], mrfRejectnonpublic: state => state.settings.settings['mrf_rejectnonpublic'],
mrfSimpleConfig: state => state.settings.settings['mrf_simple'], mrfSimple: state => state.settings.settings['mrf_simple'],
mrfSubchainConfig: state => state.settings.settings['mrf_subchain'], mrfSubchain: state => state.settings.settings['mrf_subchain'],
mrfUserAllowlistConfig: state => state.settings.settings['mrf_user_allowlist'], mrfUserAllowlist: state => state.settings.settings['mrf_user_allowlist'],
oauth2Config: state => state.settings.settings['oauth2'], oauth2: state => state.settings.settings['oauth2'],
passwordAuthenticatorConfig: state => state.settings.settings['password_authenticator'], passwordAuthenticator: state => state.settings.settings['password_authenticator'],
pleromaAuthenticatorConfig: state => state.settings.settings['Pleroma.Web.Auth.Authenticator'], pleromaAuthenticator: state => state.settings.settings['Pleroma.Web.Auth.Authenticator'],
pleromaRepoConfig: state => state.settings.settings['Pleroma.Repo'], pleromaRepo: state => state.settings.settings['Pleroma.Repo'],
pleromaUserConfig: state => state.settings.settings['Pleroma.User'], pleromaUser: state => state.settings.settings['Pleroma.User'],
portConfig: state => state.settings.settings['port'], port: state => state.settings.settings['port'],
privDirConfig: state => state.settings.settings['priv_dir'], privDir: state => state.settings.settings['priv_dir'],
queuesConfig: state => state.settings.settings['queues'], queues: state => state.settings.settings['queues'],
rateLimitersConfig: state => state.settings.settings['rate_limit'], rateLimiters: state => state.settings.settings['rate_limit'],
retryQueueConfig: state => state.settings.settings['Pleroma.Web.Federator.RetryQueue'], retryQueue: state => state.settings.settings['Pleroma.Web.Federator.RetryQueue'],
richMediaConfig: state => state.settings.settings['rich_media'], richMedia: state => state.settings.settings['rich_media'],
suggestionsConfig: state => state.settings.settings['suggestions'], suggestions: state => state.settings.settings['suggestions'],
scheduledActivityConfig: state => state.settings.settings['Pleroma.ScheduledActivity'], scheduledActivity: state => state.settings.settings['Pleroma.ScheduledActivity'],
teslaAdapterConfig: state => state.settings.settings['adapter'], teslaAdapter: state => state.settings.settings['adapter'],
twitterConfig: state => state.settings.settings['Ueberauth.Strategy.Twitter.OAuth'], twitter: state => state.settings.settings['Ueberauth.Strategy.Twitter.OAuth'],
ueberauthConfig: state => state.settings.settings['Ueberauth'], ueberauth: state => state.settings.settings['Ueberauth'],
uploadAnonymizeFilenameConfig: state => state.settings.settings['Pleroma.Upload.Filter.AnonymizeFilename'], uploadAnonymizeFilename: state => state.settings.settings['Pleroma.Upload.Filter.AnonymizeFilename'],
uploadConfig: state => state.settings.settings['Pleroma.Upload'], upload: state => state.settings.settings['Pleroma.Upload'],
uploadFilterMogrifyConfig: state => state.settings.settings['Pleroma.Upload.Filter.Mogrify'], uploadFilterMogrify: state => state.settings.settings['Pleroma.Upload.Filter.Mogrify'],
uploadersLocalConfig: state => state.settings.settings['Pleroma.Uploaders.Local'], uploadersLocal: state => state.settings.settings['Pleroma.Uploaders.Local'],
uploadMDIIConfig: state => state.settings.settings['Pleroma.Uploaders.MDII'], uploadMDII: state => state.settings.settings['Pleroma.Uploaders.MDII'],
uploadS3Config: state => state.settings.settings['Pleroma.Uploaders.S3'], uploadS3: state => state.settings.settings['Pleroma.Uploaders.S3'],
uriSchemesConfig: state => state.settings.settings['uri_schemes'], uriSchemes: state => state.settings.settings['uri_schemes'],
userConfig: state => state.settings.settings['user'], user: state => state.settings.settings['user'],
vapidDetailsConfig: state => state.settings.settings['vapid_details'], vapidDetails: state => state.settings.settings['vapid_details'],
webhookUrlConfig: state => state.settings.settings['webhook_url'] webhookUrl: state => state.settings.settings['webhook_url']
} }
export default getters export default getters

View File

@ -47,20 +47,14 @@ export default {
name: 'ActivityPub', name: 'ActivityPub',
computed: { computed: {
...mapGetters([ ...mapGetters([
'activityPubConfig', 'activityPub',
'userConfig' 'user'
]), ]),
activityPub() {
return this.activityPubConfig
},
isMobile() { isMobile() {
return this.$store.state.app.device === 'mobile' return this.$store.state.app.device === 'mobile'
}, },
labelWidth() { labelWidth() {
return this.isMobile ? '100px' : '210px' return this.isMobile ? '100px' : '210px'
},
user() {
return this.userConfig
} }
}, },
methods: { methods: {

View File

@ -27,7 +27,7 @@
</p> </p>
</el-form-item> </el-form-item>
<el-form-item label="OAuth consumer strategies"> <el-form-item label="OAuth consumer strategies">
<el-input :value="auth.oauth_consumer_strategies" @input="updateSetting($event, 'auth', 'oauth_consumer_strategies')"/> <el-select :value="auth.oauth_consumer_strategies || []" multiple filterable allow-create @change="updateSetting($event, 'auth', 'oauth_consumer_strategies')"/>
<p class="expl">The list of enabled OAuth consumer strategies; by default it's set by <p class="expl">The list of enabled OAuth consumer strategies; by default it's set by
<span class="code">OAUTH_CONSUMER_STRATEGIES</span> <span class="code">OAUTH_CONSUMER_STRATEGIES</span>
environment variable. You can enter values in the following format: <span class="code">'a:foo b:baz'</span> environment variable. You can enter values in the following format: <span class="code">'a:foo b:baz'</span>
@ -238,43 +238,16 @@ export default {
name: 'Authentication', name: 'Authentication',
computed: { computed: {
...mapGetters([ ...mapGetters([
'pleromaAuthenticatorConfig', 'pleromaAuthenticator',
'ldapConfig', 'ldap',
'authConfig', 'auth',
'ueberauthConfig', 'ueberauth',
'oauth2Config', 'oauth2',
'facebookConfig', 'facebook',
'googleConfig', 'google',
'twitterConfig', 'twitter',
'microsoftConfig' 'microsoft'
]), ]),
auth() {
return this.authConfig
},
ldap() {
return this.ldapConfig
},
oauth2() {
return this.oauth2Config
},
pleromaAuthenticator() {
return this.pleromaAuthenticatorConfig
},
ueberauth() {
return this.ueberauthConfig
},
facebook() {
return this.facebookConfig
},
google() {
return this.googleConfig
},
twitter() {
return this.twitterConfig
},
microsoft() {
return this.microsoftConfig
},
isMobile() { isMobile() {
return this.$store.state.app.device === 'mobile' return this.$store.state.app.device === 'mobile'
}, },

View File

@ -1,5 +1,5 @@
<template> <template>
<el-form v-if="!loading" ref="auto_linker" :model="auto_linker" :label-width="labelWidth"> <el-form v-if="!loading" ref="autoLinker" :model="autoLinker" :label-width="labelWidth">
<el-form-item label="Class"> <el-form-item label="Class">
<el-switch :value="booleanClass" @change="processTwoTypeValue($event, 'auto_linker', 'opts', 'class')"/> <el-switch :value="booleanClass" @change="processTwoTypeValue($event, 'auto_linker', 'opts', 'class')"/>
<p v-if="!booleanClass" class="expl">Specify the class to be added to the generated link. False to clear.</p> <p v-if="!booleanClass" class="expl">Specify the class to be added to the generated link. False to clear.</p>
@ -17,11 +17,11 @@
<p class="expl">Override the rel attribute. False to clear</p> <p class="expl">Override the rel attribute. False to clear</p>
</el-form-item> </el-form-item>
<el-form-item label="New window"> <el-form-item label="New window">
<el-switch :value="auto_linker.opts.new_window" @change="processNestedData($event, 'auto_linker', 'opts', 'new_window')"/> <el-switch :value="autoLinker.opts.new_window" @change="processNestedData($event, 'auto_linker', 'opts', 'new_window')"/>
<p class="expl">Set to false to remove <span class="code">target='_blank'</span> attribute</p> <p class="expl">Set to false to remove <span class="code">target='_blank'</span> attribute</p>
</el-form-item> </el-form-item>
<el-form-item label="Scheme"> <el-form-item label="Scheme">
<el-switch :value="auto_linker.opts.scheme" @change="processNestedData($event, 'auto_linker', 'opts', 'scheme')"/> <el-switch :value="autoLinker.opts.scheme" @change="processNestedData($event, 'auto_linker', 'opts', 'scheme')"/>
<p class="expl">Set to true to link urls with schema <span class="code">http://google.com</span></p> <p class="expl">Set to true to link urls with schema <span class="code">http://google.com</span></p>
</el-form-item> </el-form-item>
<el-form-item label="Truncate"> <el-form-item label="Truncate">
@ -34,15 +34,15 @@
<p class="expl">Specify the class to be added to the generated link. False to clear.</p> <p class="expl">Specify the class to be added to the generated link. False to clear.</p>
</el-form-item> </el-form-item>
<el-form-item label="Strip prefix"> <el-form-item label="Strip prefix">
<el-switch :value="auto_linker.opts.strip_prefix" @change="processNestedData($event, 'auto_linker', 'opts', 'strip_prefix')"/> <el-switch :value="autoLinker.opts.strip_prefix" @change="processNestedData($event, 'auto_linker', 'opts', 'strip_prefix')"/>
<p class="expl">Strip the scheme prefix</p> <p class="expl">Strip the scheme prefix</p>
</el-form-item> </el-form-item>
<el-form-item label="Extra"> <el-form-item label="Extra">
<el-switch :value="auto_linker.opts.extra" @change="processNestedData($event, 'auto_linker', 'opts', 'extra')"/> <el-switch :value="autoLinker.opts.extra" @change="processNestedData($event, 'auto_linker', 'opts', 'extra')"/>
<p class="expl">Link urls with rarely used schemes (magnet, ipfs, irc, etc.)</p> <p class="expl">Link urls with rarely used schemes (magnet, ipfs, irc, etc.)</p>
</el-form-item> </el-form-item>
<el-form-item label="Validate TLD"> <el-form-item label="Validate TLD">
<el-switch :value="auto_linker.opts.validate_tld" @change="processNestedData($event, 'auto_linker', 'opts', 'validate_tld')"/> <el-switch :value="autoLinker.opts.validate_tld" @change="processNestedData($event, 'auto_linker', 'opts', 'validate_tld')"/>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button type="primary" @click="onSubmit">Submit</el-button> <el-button type="primary" @click="onSubmit">Submit</el-button>
@ -58,11 +58,8 @@ export default {
name: 'AutoLinker', name: 'AutoLinker',
computed: { computed: {
...mapGetters([ ...mapGetters([
'autoLinkerConfig' 'autoLinker'
]), ]),
auto_linker() {
return this.autoLinkerConfig
},
isMobile() { isMobile() {
return this.$store.state.app.device === 'mobile' return this.$store.state.app.device === 'mobile'
}, },
@ -84,15 +81,15 @@ export default {
}, },
methods: { methods: {
getBooleanValue(name) { getBooleanValue(name) {
const value = this.autoLinkerConfig.opts[name] const value = this.autoLinker.opts[name]
return typeof value === 'string' || typeof value === 'number' return typeof value === 'string' || typeof value === 'number'
}, },
getNumValue(name) { getNumValue(name) {
const value = this.autoLinkerConfig.opts[name] const value = this.autoLinker.opts[name]
return value || 0 return value || 0
}, },
getStringValue(name) { getStringValue(name) {
const value = this.autoLinkerConfig.opts[name] const value = this.autoLinker.opts[name]
return value || '' return value || ''
}, },
processTwoTypeValue(value, tab, inputName, childName) { processTwoTypeValue(value, tab, inputName, childName) {

View File

@ -39,15 +39,9 @@ export default {
name: 'Captcha', name: 'Captcha',
computed: { computed: {
...mapGetters([ ...mapGetters([
'captchaConfig', 'captcha',
'kocaptchaConfig' 'kocaptcha'
]), ]),
captcha() {
return this.captchaConfig
},
kocaptcha() {
return this.kocaptchaConfig
},
isMobile() { isMobile() {
return this.$store.state.app.device === 'mobile' return this.$store.state.app.device === 'mobile'
}, },

View File

@ -142,24 +142,15 @@ export default {
name: 'Instance', name: 'Instance',
computed: { computed: {
...mapGetters([ ...mapGetters([
'databaseConfig', 'database',
'ectoReposConfig', 'ectoRepos',
'pleromaRepoConfig' 'pleromaRepo'
]), ]),
database() {
return this.databaseConfig
},
ectoRepos() {
return this.ectoReposConfig
},
isMobile() { isMobile() {
return this.$store.state.app.device === 'mobile' return this.$store.state.app.device === 'mobile'
}, },
labelWidth() { labelWidth() {
return this.isMobile ? '100px' : '210px' return this.isMobile ? '100px' : '210px'
},
pleromaRepo() {
return this.pleromaRepoConfig
} }
}, },
methods: { methods: {

View File

@ -25,7 +25,7 @@
<el-input :value="endpoint.render_errors.view" @input="processNestedData($event, 'Pleroma.Web.Endpoint', 'render_errors', 'view')"/> <el-input :value="endpoint.render_errors.view" @input="processNestedData($event, 'Pleroma.Web.Endpoint', 'render_errors', 'view')"/>
</el-form-item> </el-form-item>
<el-form-item label="Accepts"> <el-form-item label="Accepts">
<el-input :value="endpoint.render_errors.accepts" @input="processNestedData($event, 'Pleroma.Web.Endpoint', 'render_errors', 'accepts')"/> <el-select :value="endpoint.render_errors.accepts || []" multiple filterable allow-create @input="processNestedData($event, 'Pleroma.Web.Endpoint', 'render_errors', 'accepts')"/>
</el-form-item> </el-form-item>
<el-form-item label="Layout"> <el-form-item label="Layout">
<el-switch :value="endpoint.render_errors.layout" @change="processNestedData($event, 'Pleroma.Web.Endpoint', 'render_errors', 'layout')"/> <el-switch :value="endpoint.render_errors.layout" @change="processNestedData($event, 'Pleroma.Web.Endpoint', 'render_errors', 'layout')"/>
@ -185,11 +185,11 @@ export default {
}, },
computed: { computed: {
...mapGetters([ ...mapGetters([
'endpointConfig' 'endpoint'
]), ]),
editorContentHttp: { editorContentHttp: {
get: function() { get: function() {
return this.endpointConfig.http.dispatch ? this.endpointConfig.http.dispatch[0] : '' return this.endpoint.http.dispatch ? this.endpoint.http.dispatch[0] : ''
}, },
set: function(value) { set: function(value) {
this.processNestedData([value], 'Pleroma.Web.Endpoint', 'http', 'dispatch') this.processNestedData([value], 'Pleroma.Web.Endpoint', 'http', 'dispatch')
@ -197,7 +197,7 @@ export default {
}, },
editorContentHttps: { editorContentHttps: {
get: function() { get: function() {
return this.endpointConfig.https.dispatch ? this.endpointConfig.https.dispatch[0] : '' return this.endpoint.https.dispatch ? this.endpoint.https.dispatch[0] : ''
}, },
set: function(value) { set: function(value) {
this.processNestedData([value], 'Pleroma.Web.Endpoint', 'https', 'dispatch') this.processNestedData([value], 'Pleroma.Web.Endpoint', 'https', 'dispatch')
@ -209,9 +209,6 @@ export default {
configureHttps() { configureHttps() {
return !this.endpoint.https === false return !this.endpoint.https === false
}, },
endpoint() {
return this.endpointConfig
},
endpointHttp() { endpointHttp() {
return this.endpoint.http || {} return this.endpoint.http || {}
}, },

View File

@ -62,27 +62,12 @@ export default {
name: 'Instance', name: 'Instance',
computed: { computed: {
...mapGetters([ ...mapGetters([
'enabledConfig', 'enabled',
'handlerConfig', 'handler',
'passwordAuthenticatorConfig', 'passwordAuthenticator',
'portConfig', 'port',
'privDirConfig' 'privDir'
]), ]),
enabled() {
return this.enabledConfig
},
handler() {
return this.handlerConfig
},
passwordAuthenticator() {
return this.passwordAuthenticatorConfig
},
port() {
return this.portConfig
},
privDir() {
return this.privDirConfig
},
isMobile() { isMobile() {
return this.$store.state.app.device === 'mobile' return this.$store.state.app.device === 'mobile'
}, },

View File

@ -325,34 +325,19 @@ export default {
name: 'Frontend', name: 'Frontend',
computed: { computed: {
...mapGetters([ ...mapGetters([
'assetsConfig', 'assets',
'frontendConfig', 'frontend',
'emojiConfig', 'emoji',
'chatConfig', 'chat',
'markupConfig' 'markup'
]), ]),
assets() {
return this.assetsConfig
},
chat() {
return this.chatConfig
},
emoji() {
return this.emojiConfig
},
frontend() {
return this.frontendConfig
},
groups() { groups() {
return Object.keys(this.emojiConfig.groups).map(key => [key, this.emojiConfig.groups[key]]) return Object.keys(this.emoji.groups).map(key => [key, this.emoji.groups[key]])
},
markup() {
return this.markupConfig
}, },
mascots() { mascots() {
return Object.keys(this.assetsConfig.mascots) return Object.keys(this.assets.mascots)
.map(mascotName => .map(mascotName =>
[mascotName, this.assetsConfig.mascots[mascotName].url, this.assetsConfig.mascots[mascotName].mime_type]) [mascotName, this.assets.mascots[mascotName].url, this.assets.mascots[mascotName].mime_type])
}, },
themeOptions() { themeOptions() {
return options.themeOptions return options.themeOptions

View File

@ -30,11 +30,8 @@ export default {
name: 'Gopher', name: 'Gopher',
computed: { computed: {
...mapGetters([ ...mapGetters([
'gopherConfig' 'gopher'
]), ]),
gopher() {
return this.gopherConfig
},
isMobile() { isMobile() {
return this.$store.state.app.device === 'mobile' return this.$store.state.app.device === 'mobile'
}, },

View File

@ -137,27 +137,15 @@ export default {
computed: { computed: {
...mapGetters([ ...mapGetters([
'corsPlugCredentials', 'corsPlugCredentials',
'corsPlugExposeConfig', 'corsPlugExpose',
'corsPlugHeaders', 'corsPlugHeaders',
'corsPlugMaxAge', 'corsPlugMaxAge',
'corsPlugMethods', 'corsPlugMethods',
'hackneyPoolsConfig', 'hackneyPools',
'httpConfig', 'http',
'httpSecurityConfig', 'httpSecurity',
'metricsExporter' 'metricsExporter'
]), ]),
corsPlugExpose() {
return this.corsPlugExposeConfig
},
hackneyPools() {
return this.hackneyPoolsConfig
},
http() {
return this.httpConfig
},
httpSecurity() {
return this.httpSecurityConfig
},
isMobile() { isMobile() {
return this.$store.state.app.device === 'mobile' return this.$store.state.app.device === 'mobile'
}, },

View File

@ -97,7 +97,7 @@
<p class="expl">Enable Pleromas Relay, which makes it possible to follow a whole instance</p> <p class="expl">Enable Pleromas Relay, which makes it possible to follow a whole instance</p>
</el-form-item> </el-form-item>
<el-form-item label="Rewrite policy"> <el-form-item label="Rewrite policy">
<el-select :value="rewritePolicy || []" multiple @change="updateSetting($event, 'instance', 'rewrite_policy')"> <el-select :value="rewritePolicy || []" multiple filterable allow-create @change="updateSetting($event, 'instance', 'rewrite_policy')">
<el-option <el-option
v-for="item in rewritePolicyOptions" v-for="item in rewritePolicyOptions"
:key="item.value" :key="item.value"
@ -105,7 +105,7 @@
:value="item.value"/> :value="item.value"/>
</el-select> </el-select>
<p <p
v-for="item in rewritePolicy" v-for="item in rewritePolicyExplanations"
:key="item" :key="item"
class="expl">{{ getRewritePolicyExpl(item) }}</p> class="expl">{{ getRewritePolicyExpl(item) }}</p>
</el-form-item> </el-form-item>
@ -230,9 +230,9 @@
</el-form-item> </el-form-item>
</el-form> </el-form>
<div class="line"/> <div class="line"/>
<el-form ref="uri_schemes" :model="uri_schemes" :label-width="labelWidth"> <el-form ref="uriSchemes" :model="uriSchemes" :label-width="labelWidth">
<el-form-item label="URI schemes"> <el-form-item label="URI schemes">
<el-select :value="uri_schemes.valid_schemes || []" multiple filterable allow-create placeholder="Select" @change="updateSetting($event, 'uri_schemes', 'valid_schemes')"> <el-select :value="uriSchemes.valid_schemes || []" multiple filterable allow-create placeholder="Select" @change="updateSetting($event, 'uri_schemes', 'valid_schemes')">
<el-option <el-option
v-for="item in uriSchemesOptions" v-for="item in uriSchemesOptions"
:key="item.value" :key="item.value"
@ -243,36 +243,36 @@
</el-form-item> </el-form-item>
</el-form> </el-form>
<div class="line"/> <div class="line"/>
<el-form ref="admin_token" :model="admin_token" :label-width="labelWidth"> <el-form ref="adminToken" :model="adminToken" :label-width="labelWidth">
<el-form-item label="Admin token"> <el-form-item label="Admin token">
<el-input :value="admin_token.value" @input="updateSetting($event, 'admin_token', 'value')"/> <el-input :value="adminToken.value" @input="updateSetting($event, 'admin_token', 'value')"/>
<p class="expl">Allows to set a token that can be used to authenticate with the admin api without using an actual user by giving it as the <span class="code">admin_token</span> parameter.</p> <p class="expl">Allows to set a token that can be used to authenticate with the admin api without using an actual user by giving it as the <span class="code">admin_token</span> parameter.</p>
</el-form-item> </el-form-item>
</el-form> </el-form>
<div class="line"/> <div class="line"/>
<el-form ref="scheduled_activity" :model="scheduled_activity" :label-width="labelWidth"> <el-form ref="scheduledActivity" :model="scheduledActivity" :label-width="labelWidth">
<el-form-item label="Scheduled activity:"/> <el-form-item label="Scheduled activity:"/>
<el-form-item label="Daily user limit"> <el-form-item label="Daily user limit">
<el-input-number :value="scheduled_activity.daily_user_limit" :step="5" :min="0" size="large" @change="updateSetting($event, 'Pleroma.ScheduledActivity', 'daily_user_limit')"/> <el-input-number :value="scheduledActivity.daily_user_limit" :step="5" :min="0" size="large" @change="updateSetting($event, 'Pleroma.ScheduledActivity', 'daily_user_limit')"/>
<p class="expl">The number of scheduled activities a user is allowed to create in a single day (Default: 25)</p> <p class="expl">The number of scheduled activities a user is allowed to create in a single day (Default: 25)</p>
</el-form-item> </el-form-item>
<el-form-item label="Total user limit"> <el-form-item label="Total user limit">
<el-input-number :value="scheduled_activity.total_user_limit" :step="10" :min="0" size="large" @change="updateSetting($event, 'Pleroma.ScheduledActivity', 'total_user_limit')"/> <el-input-number :value="scheduledActivity.total_user_limit" :step="10" :min="0" size="large" @change="updateSetting($event, 'Pleroma.ScheduledActivity', 'total_user_limit')"/>
<p class="expl">The number of scheduled activities a user is allowed to create in total (Default: 300)</p> <p class="expl">The number of scheduled activities a user is allowed to create in total (Default: 300)</p>
</el-form-item> </el-form-item>
<el-form-item label="Enabled"> <el-form-item label="Enabled">
<el-switch :value="scheduled_activity.enabled" @change="updateSetting($event, 'Pleroma.ScheduledActivity', 'enabled')"/> <el-switch :value="scheduledActivity.enabled" @change="updateSetting($event, 'Pleroma.ScheduledActivity', 'enabled')"/>
<p class="expl">Whether scheduled activities are sent to the job queue to be executed</p> <p class="expl">Whether scheduled activities are sent to the job queue to be executed</p>
</el-form-item> </el-form-item>
</el-form> </el-form>
<div class="line"/> <div class="line"/>
<el-form ref="fetch_initial_posts" :model="fetch_initial_posts" :label-width="labelWidth"> <el-form ref="fetchInitialPosts" :model="fetchInitialPosts" :label-width="labelWidth">
<el-form-item label="Fetch initial posts"> <el-form-item label="Fetch initial posts">
<el-switch :value="fetch_initial_posts.enabled" @change="updateSetting($event, 'fetch_initial_posts', 'enabled')"/> <el-switch :value="fetchInitialPosts.enabled" @change="updateSetting($event, 'fetch_initial_posts', 'enabled')"/>
<p class="expl">If enabled, when a new user is federated with, fetch some of their latest posts</p> <p class="expl">If enabled, when a new user is federated with, fetch some of their latest posts</p>
</el-form-item> </el-form-item>
<el-form-item label="Pages"> <el-form-item label="Pages">
<el-input-number :value="fetch_initial_posts.pages" :step="1" :min="0" size="large" @change="updateSetting($event, 'fetch_initial_posts', 'pages')"/> <el-input-number :value="fetchInitialPosts.pages" :step="1" :min="0" size="large" @change="updateSetting($event, 'fetch_initial_posts', 'pages')"/>
<p class="expl">The amount of pages to fetch</p> <p class="expl">The amount of pages to fetch</p>
</el-form-item> </el-form-item>
</el-form> </el-form>
@ -321,38 +321,26 @@ export default {
name: 'Instance', name: 'Instance',
computed: { computed: {
...mapGetters([ ...mapGetters([
'adminTokenConfig', 'adminToken',
'fetchInitialPostsConfig', 'fetchInitialPosts',
'instanceConfig', 'instance',
'pleromaUserConfig', 'pleromaUser',
'scheduledActivityConfig', 'scheduledActivity',
'suggestionsConfig', 'suggestions',
'uriSchemesConfig' 'uriSchemes'
]), ]),
admin_token() {
return this.adminTokenConfig
},
autofollowedNicknamesOptions() { autofollowedNicknamesOptions() {
return options.autofollowedNicknamesOptions return options.autofollowedNicknamesOptions
}, },
federationPublisherModulesOptions() { federationPublisherModulesOptions() {
return options.federationPublisherModulesOptions return options.federationPublisherModulesOptions
}, },
fetch_initial_posts() {
return this.fetchInitialPostsConfig
},
instance() {
return this.instanceConfig
},
isMobile() { isMobile() {
return this.$store.state.app.device === 'mobile' return this.$store.state.app.device === 'mobile'
}, },
labelWidth() { labelWidth() {
return this.isMobile ? '100px' : '210px' return this.isMobile ? '100px' : '210px'
}, },
pleromaUser() {
return this.pleromaUserConfig
},
quarantinedInstancesOptions() { quarantinedInstancesOptions() {
return options.quarantinedInstancesOptions return options.quarantinedInstancesOptions
}, },
@ -362,18 +350,12 @@ export default {
rewritePolicy() { rewritePolicy() {
return typeof this.instance.rewrite_policy === 'string' ? [this.instance.rewrite_policy] : this.instance.rewrite_policy return typeof this.instance.rewrite_policy === 'string' ? [this.instance.rewrite_policy] : this.instance.rewrite_policy
}, },
rewritePolicyExplanations() {
return this.rewritePolicy ? this.rewritePolicy.filter(policy => options.rewritePolicyOptions.find(el => el.value === policy)) : []
},
rewritePolicyOptions() { rewritePolicyOptions() {
return options.rewritePolicyOptions return options.rewritePolicyOptions
}, },
scheduled_activity() {
return this.scheduledActivityConfig
},
suggestions() {
return this.suggestionsConfig
},
uri_schemes() {
return this.uriSchemesConfig
},
uriSchemesOptions() { uriSchemesOptions() {
return options.uriSchemesOptions return options.uriSchemesOptions
} }

View File

@ -58,15 +58,9 @@ export default {
name: 'JobQueue', name: 'JobQueue',
computed: { computed: {
...mapGetters([ ...mapGetters([
'queuesConfig', 'queues',
'retryQueueConfig' 'retryQueue'
]), ]),
queues() {
return this.queuesConfig
},
retryQueue() {
return this.retryQueueConfig
},
isMobile() { isMobile() {
return this.$store.state.app.device === 'mobile' return this.$store.state.app.device === 'mobile'
}, },

View File

@ -9,7 +9,7 @@
:label="item.label" :label="item.label"
:value="item.value"/> :value="item.value"/>
</el-select> </el-select>
<p class="expl">List of instances to remove medias from</p> <p class="expl"><span class="code">:console</span> is used to send logs to stdout, <span class="code">{ExSyslogger, :ex_syslogger}</span> to log to syslog, and <span class="code">Quack.Logger</span> to log to Slack</p>
</el-form-item> </el-form-item>
</el-form> </el-form>
<div class="line"/> <div class="line"/>
@ -180,42 +180,24 @@ export default {
name: 'Logger', name: 'Logger',
computed: { computed: {
...mapGetters([ ...mapGetters([
'consoleConfig', 'consoleLogger',
'exsysloggerConfig', 'exsyslogger',
'levelConfig', 'level',
'loggerBackendsConfig', 'loggerBackends',
'metaConfig', 'meta',
'webhookUrlConfig' 'webhookUrl'
]), ]),
consoleLogger() {
return this.consoleConfig
},
exsyslogger() {
return this.exsysloggerConfig
},
level() {
return this.levelConfig
},
loggerBackends() {
return this.loggerBackendsConfig
},
loggerBackendsValue() { loggerBackendsValue() {
return this.loggerBackends.value ? this.loggerBackends.value.map(el => JSON.stringify(el)) : [] return this.loggerBackends.value ? this.loggerBackends.value.map(el => JSON.stringify(el)) : []
}, },
loggerBackendsOptions() { loggerBackendsOptions() {
return options.loggerBackendsOptions return options.loggerBackendsOptions
}, },
meta() {
return this.metaConfig
},
isMobile() { isMobile() {
return this.$store.state.app.device === 'mobile' return this.$store.state.app.device === 'mobile'
}, },
labelWidth() { labelWidth() {
return this.isMobile ? '100px' : '210px' return this.isMobile ? '100px' : '210px'
},
webhookUrl() {
return this.webhookUrlConfig
} }
}, },
methods: { methods: {

View File

@ -146,47 +146,23 @@ export default {
}, },
computed: { computed: {
...mapGetters([ ...mapGetters([
'mrfHellthreadConfig', 'mrfHellthread',
'mrfKeywordConfig', 'mrfKeyword',
'mrfMentionConfig', 'mrfMention',
'mrfNormalizeMarkupConfig', 'mrfNormalizeMarkup',
'mrfSimpleConfig', 'mrfSimple',
'mrfSubchainConfig', 'mrfSubchain',
'mrfRejectnonpublicConfig', 'mrfRejectnonpublic',
'mrfUserAllowlistConfig' 'mrfUserAllowlist'
]), ]),
matchActor() { matchActor() {
return Object.keys(this.mrfSubchain.match_actor).map(key => [key, this.mrfSubchain.match_actor[key]]) return Object.keys(this.mrfSubchain.match_actor).map(key => [key, this.mrfSubchain.match_actor[key]])
}, },
mrfHellthread() {
return this.mrfHellthreadConfig
},
mrfKeyword() {
return this.mrfKeywordConfig
},
mrfMention() {
return this.mrfMentionConfig
},
mrfNormalizeMarkup() {
return this.mrfNormalizeMarkupConfig
},
mrfSimple() {
return this.mrfSimpleConfig
},
mrfSubchain() {
return this.mrfSubchainConfig
},
mrfRejectnonpublic() {
return this.mrfRejectnonpublicConfig
},
mrfUserAllowlist() {
return this.mrfUserAllowlistConfig
},
policiesOptions() { policiesOptions() {
return options.rewritePolicyOptions return options.rewritePolicyOptions
}, },
replacePatterns() { replacePatterns() {
return Object.keys(this.mrfKeywordConfig.replace).map(key => [key, this.mrfKeywordConfig.replace[key]]) return Object.keys(this.mrfKeyword.replace).map(key => [key, this.mrfKeyword.replace[key]])
}, },
userAllowlist() { userAllowlist() {
return Object.keys(this.mrfUserAllowlist).map(key => [key, this.mrfUserAllowlist[key]]) return Object.keys(this.mrfUserAllowlist).map(key => [key, this.mrfUserAllowlist[key]])

View File

@ -151,19 +151,16 @@ export default {
}, },
computed: { computed: {
...mapGetters([ ...mapGetters([
'mailerConfig' 'mailer'
]), ]),
editorContent: { editorContent: {
get: function() { get: function() {
return this.mailerConfig.dkim ? this.mailerConfig.dkim[0] : '' return this.mailer.dkim ? this.mailer.dkim[0] : ''
}, },
set: function(value) { set: function(value) {
this.updateSetting([value], 'Pleroma.Emails.Mailer', 'dkim') this.updateSetting([value], 'Pleroma.Emails.Mailer', 'dkim')
} }
}, },
mailer() {
return this.mailerConfig
},
adapterOptions() { adapterOptions() {
return options.adapterOptions return options.adapterOptions
}, },

View File

@ -83,7 +83,7 @@ export default {
name: 'MediaProxy', name: 'MediaProxy',
computed: { computed: {
...mapGetters([ ...mapGetters([
'mediaProxyConfig' 'mediaProxy'
]), ]),
inlineContentTypes() { inlineContentTypes() {
return Array.isArray(this.mediaProxy.proxy_opts.inline_content_types) ? 'whitelistedTypeArray' : this.mediaProxy.proxy_opts.inline_content_types return Array.isArray(this.mediaProxy.proxy_opts.inline_content_types) ? 'whitelistedTypeArray' : this.mediaProxy.proxy_opts.inline_content_types
@ -91,9 +91,6 @@ export default {
http() { http() {
return this.mediaProxy.proxy_opts.http || {} return this.mediaProxy.proxy_opts.http || {}
}, },
mediaProxy() {
return this.mediaProxyConfig
},
reqHeadersOptions() { reqHeadersOptions() {
return this.mediaProxySettings.reqHeadersOptions return this.mediaProxySettings.reqHeadersOptions
}, },

View File

@ -58,15 +58,9 @@ export default {
name: 'Metadata', name: 'Metadata',
computed: { computed: {
...mapGetters([ ...mapGetters([
'metadataConfig', 'metadata',
'richMediaConfig' 'richMedia'
]), ]),
metadata() {
return this.metadataConfig
},
richMedia() {
return this.richMediaConfig
},
isMobile() { isMobile() {
return this.$store.state.app.device === 'mobile' return this.$store.state.app.device === 'mobile'
}, },

View File

@ -37,13 +37,10 @@ export default {
name: 'Other', name: 'Other',
computed: { computed: {
...mapGetters([ ...mapGetters([
'formatEncodersConfig', 'formatEncoders',
'mimeTypesConfig', 'mimeTypesConfig',
'teslaAdapterConfig' 'teslaAdapter'
]), ]),
formatEncoders() {
return this.formatEncodersConfig
},
isMobile() { isMobile() {
return this.$store.state.app.device === 'mobile' return this.$store.state.app.device === 'mobile'
}, },
@ -52,9 +49,6 @@ export default {
}, },
mimeTypes() { mimeTypes() {
return Object.keys(this.mimeTypesConfig.value).map(key => [key, this.mimeTypesConfig.value[key]]) return Object.keys(this.mimeTypesConfig.value).map(key => [key, this.mimeTypesConfig.value[key]])
},
teslaAdapter() {
return this.teslaAdapterConfig
} }
}, },
methods: { methods: {

View File

@ -206,7 +206,7 @@ export default {
name: 'RateLimiters', name: 'RateLimiters',
computed: { computed: {
...mapGetters([ ...mapGetters([
'rateLimitersConfig' 'rateLimiters'
]), ]),
accountConfirmationResendAllUsers() { accountConfirmationResendAllUsers() {
return this.rateLimiters.account_confirmation_resend ? this.rateLimiters.account_confirmation_resend.tuple : [null, null] return this.rateLimiters.account_confirmation_resend ? this.rateLimiters.account_confirmation_resend.tuple : [null, null]
@ -234,9 +234,6 @@ export default {
? this.rateLimiters.app_account_creation[0].tuple ? this.rateLimiters.app_account_creation[0].tuple
: false : false
}, },
rateLimiters() {
return this.rateLimitersConfig
},
passwordResetAllUsers() { passwordResetAllUsers() {
return this.rateLimiters.password_reset ? this.rateLimiters.password_reset.tuple : [null, null] return this.rateLimiters.password_reset ? this.rateLimiters.password_reset.tuple : [null, null]
}, },

View File

@ -148,12 +148,12 @@ export default {
name: 'Upload', name: 'Upload',
computed: { computed: {
...mapGetters([ ...mapGetters([
'uploadAnonymizeFilenameConfig', 'uploadAnonymizeFilename',
'uploadConfig', 'upload',
'uploadFilterMogrifyConfig', 'uploadFilterMogrify',
'uploadersLocalConfig', 'uploadersLocal',
'uploadMDIIConfig', 'uploadMDII',
'uploadS3Config' 'uploadS3'
]), ]),
inlineContentTypes() { inlineContentTypes() {
return Array.isArray(this.upload.proxy_opts.inline_content_types) ? 'whitelistedTypeArray' : this.upload.proxy_opts.inline_content_types return Array.isArray(this.upload.proxy_opts.inline_content_types) ? 'whitelistedTypeArray' : this.upload.proxy_opts.inline_content_types
@ -161,24 +161,6 @@ export default {
http() { http() {
return this.upload.proxy_opts.http || {} return this.upload.proxy_opts.http || {}
}, },
upload() {
return this.uploadConfig
},
uploadersLocal() {
return this.uploadersLocalConfig
},
uploadAnonymizeFilename() {
return this.uploadAnonymizeFilenameConfig
},
uploadFilterMogrify() {
return this.uploadFilterMogrifyConfig
},
uploadMDII() {
return this.uploadMDIIConfig
},
uploadS3() {
return this.uploadS3Config
},
hackneyPoolsOptions() { hackneyPoolsOptions() {
return options.hackneyPoolsOptions return options.hackneyPoolsOptions
}, },
@ -204,7 +186,7 @@ export default {
return pool ? 'Max connections: ' + pool.max_connections + ', timeout: ' + pool.timeout : '' return pool ? 'Max connections: ' + pool.max_connections + ', timeout: ' + pool.timeout : ''
}, },
processHttpSettings(value, tab, section, httpSection, input) { processHttpSettings(value, tab, section, httpSection, input) {
const updatedValue = { ...this.uploadConfig[section][httpSection], ...{ [input]: value }} const updatedValue = { ...this.upload[section][httpSection], ...{ [input]: value }}
this.processNestedData(updatedValue, tab, section, httpSection) this.processNestedData(updatedValue, tab, section, httpSection)
}, },
processNestedData(value, tab, section, input) { processNestedData(value, tab, section, input) {

View File

@ -28,11 +28,8 @@ export default {
name: 'WebPush', name: 'WebPush',
computed: { computed: {
...mapGetters([ ...mapGetters([
'vapidDetailsConfig' 'vapidDetails'
]), ]),
vapidDetails() {
return this.vapidDetailsConfig
},
isMobile() { isMobile() {
return this.$store.state.app.device === 'mobile' return this.$store.state.app.device === 'mobile'
}, },