Merge pull request #1 from regru/85773_do-nginx-config-generator_reuse
85773 reusing Digital Ocean NGINX-config-generator
This commit is contained in:
commit
b7075be560
|
@ -5,5 +5,4 @@ node_modules
|
||||||
.DS_Store
|
.DS_Store
|
||||||
|
|
||||||
/build/
|
/build/
|
||||||
/dist/
|
|
||||||
/dev/
|
/dev/
|
||||||
|
|
|
@ -0,0 +1,9 @@
|
||||||
|
<!DOCTYPE html><html lang="en"><!-- Last fetch from www.digitalocean.com @ 2021-04-23T15:11:24.821Z -->
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<block name="title"><title>DigitalOcean</title></block>
|
||||||
|
<div class="wrapper layout-wrapper"><block name="content"></block>
|
||||||
|
</body></html>
|
|
@ -0,0 +1,9 @@
|
||||||
|
<!DOCTYPE html><html lang="en"><!-- Last fetch from www.digitalocean.com @ 2021-04-23T15:11:24.821Z -->
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<title>NGINXConfig | REG.RU</title>
|
||||||
|
<div class="wrapper layout-wrapper"><div id="app"></div>
|
||||||
|
</body></html>
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1 @@
|
||||||
|
<!doctype html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1,shrink-to-fit=no"><script defer="defer" src="js/chunk-vendors.js"></script><script defer="defer" src="js/app.js"></script><link href="css/app.css" rel="stylesheet"></head><body><title>NGINXConfig | REG.RU</title><div class="wrapper layout-wrapper"><div id="app"></div></div></body></html>
|
|
@ -0,0 +1 @@
|
||||||
|
(self["webpackChunknginxconfig_io"]=self["webpackChunknginxconfig_io"]||[]).push([[10],{2010:(e,n,i)=>{"use strict";i.r(n),i.d(n,{default:()=>c});var o=function(){var e=this,n=e.$createElement,i=e._self._c||n;return i("div",{class:"column "+(e.half?"is-half":"is-full")+" is-full-mobile is-full-tablet",on:{copied:e.copied}},[i("h3",{domProps:{innerHTML:e._s(e.name)}}),i("pre",[i("code",{staticClass:"language-docker",domProps:{innerHTML:e._s(e.conf)}})])])},s=[];i(7158);const l={name:"DockerPrism",props:{name:String,conf:String,half:Boolean},mounted(){console.info(`Highlighting ${this.$props.name}...`),window.Prism.highlightAllUnder(this.$el)},methods:{copied(e){this.$emit("copied",e.detail.text)}}},r=l;var t=i(5961),a=(0,t.Z)(r,o,s,!1,null,null,null);const c=a.exports},7158:()=>{Prism.languages.docker={keyword:{pattern:/(^\s*)(?:ADD|ARG|CMD|COPY|ENTRYPOINT|ENV|EXPOSE|FROM|HEALTHCHECK|LABEL|MAINTAINER|ONBUILD|RUN|SHELL|STOPSIGNAL|USER|VOLUME|WORKDIR)(?=\s)/im,lookbehind:!0},string:/("|')(?:(?!\1)[^\\\r\n]|\\(?:\r\n|[\s\S]))*\1/,comment:{pattern:/#.*/,greedy:!0},punctuation:/---|\.\.\.|[:[\]{}\-,|>?]/},Prism.languages.dockerfile=Prism.languages.docker}}]);
|
File diff suppressed because one or more lines are too long
|
@ -0,0 +1 @@
|
||||||
|
(self["webpackChunknginxconfig_io"]=self["webpackChunknginxconfig_io"]||[]).push([[172],{9172:(e,n,r)=>{"use strict";r.r(n),r.d(n,{default:()=>u});var t=function(){var e=this,n=e.$createElement,r=e._self._c||n;return r("div",{class:"column "+(e.half?"is-half":"is-full")+" is-full-mobile is-full-tablet",on:{copied:e.copied}},[r("h3",{domProps:{innerHTML:e._s(e.name)}}),r("pre",[r("code",{staticClass:"language-yaml",domProps:{innerHTML:e._s(e.conf)}})])])},o=[];r(3358);const a={name:"YamlPrism",props:{name:String,conf:String,half:Boolean},mounted(){console.info(`Highlighting ${this.$props.name}...`),window.Prism.highlightAllUnder(this.$el)},methods:{copied(e){this.$emit("copied",e.detail.text)}}},i=a;var l=r(5961),s=(0,l.Z)(i,t,o,!1,null,null,null);const u=s.exports},3358:()=>{(function(e){var n=/[*&][^\s[\]{},]+/,r=/!(?:<[\w\-%#;/?:@&=+$,.!~*'()[\]]+>|(?:[a-zA-Z\d-]*!)?[\w\-%#;/?:@&=+$.~*'()]+)?/,t="(?:"+r.source+"(?:[ \t]+"+n.source+")?|"+n.source+"(?:[ \t]+"+r.source+")?)",o=/(?:[^\s\x00-\x08\x0e-\x1f!"#%&'*,\-:>?@[\]`{|}\x7f-\x84\x86-\x9f\ud800-\udfff\ufffe\uffff]|[?:-]<PLAIN>)(?:[ \t]*(?:(?![#:])<PLAIN>|:<PLAIN>))*/.source.replace(/<PLAIN>/g,(function(){return/[^\s\x00-\x08\x0e-\x1f,[\]{}\x7f-\x84\x86-\x9f\ud800-\udfff\ufffe\uffff]/.source})),a=/"(?:[^"\\\r\n]|\\.)*"|'(?:[^'\\\r\n]|\\.)*'/.source;function i(e,n){n=(n||"").replace(/m/g,"")+"m";var r=/([:\-,[{]\s*(?:\s<<prop>>[ \t]+)?)(?:<<value>>)(?=[ \t]*(?:$|,|]|}|(?:[\r\n]\s*)?#))/.source.replace(/<<prop>>/g,(function(){return t})).replace(/<<value>>/g,(function(){return e}));return RegExp(r,n)}e.languages.yaml={scalar:{pattern:RegExp(/([\-:]\s*(?:\s<<prop>>[ \t]+)?[|>])[ \t]*(?:((?:\r?\n|\r)[ \t]+)\S[^\r\n]*(?:\2[^\r\n]+)*)/.source.replace(/<<prop>>/g,(function(){return t}))),lookbehind:!0,alias:"string"},comment:/#.*/,key:{pattern:RegExp(/((?:^|[:\-,[{\r\n?])[ \t]*(?:<<prop>>[ \t]+)?)<<key>>(?=\s*:\s)/.source.replace(/<<prop>>/g,(function(){return t})).replace(/<<key>>/g,(function(){return"(?:"+o+"|"+a+")"}))),lookbehind:!0,greedy:!0,alias:"atrule"},directive:{pattern:/(^[ \t]*)%.+/m,lookbehind:!0,alias:"important"},datetime:{pattern:i(/\d{4}-\d\d?-\d\d?(?:[tT]|[ \t]+)\d\d?:\d{2}:\d{2}(?:\.\d*)?(?:[ \t]*(?:Z|[-+]\d\d?(?::\d{2})?))?|\d{4}-\d{2}-\d{2}|\d\d?:\d{2}(?::\d{2}(?:\.\d*)?)?/.source),lookbehind:!0,alias:"number"},boolean:{pattern:i(/true|false/.source,"i"),lookbehind:!0,alias:"important"},null:{pattern:i(/null|~/.source,"i"),lookbehind:!0,alias:"important"},string:{pattern:i(a),lookbehind:!0,greedy:!0},number:{pattern:i(/[+-]?(?:0x[\da-f]+|0o[0-7]+|(?:\d+(?:\.\d*)?|\.?\d+)(?:e[+-]?\d+)?|\.inf|\.nan)/.source,"i"),lookbehind:!0},tag:r,important:n,punctuation:/---|[:[\]{}\-,|>?]|\.\.\./},e.languages.yml=e.languages.yaml})(Prism)}}]);
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -10,8 +10,9 @@
|
||||||
"main": "src/nginxconfig/mount.js",
|
"main": "src/nginxconfig/mount.js",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"build": "npm run build:clean && npm run build:template && npm run build:prism && npm run build:static && npm run build:tool",
|
"build": "npm run build:clean && npm run build:template && npm run build:prism && npm run build:static && npm run build:tool",
|
||||||
|
"build:regru-static": "npm run build:clean && npm run build:template && npm run build:tool",
|
||||||
"build:clean": "do-vue clean",
|
"build:clean": "do-vue clean",
|
||||||
"build:template": "do-vue template && node src/nginxconfig/build/template.js",
|
"build:template": "node src/nginxconfig/build/template.js",
|
||||||
"build:prism": "node src/nginxconfig/build/prism.js",
|
"build:prism": "node src/nginxconfig/build/prism.js",
|
||||||
"build:static": "copyfiles --up 2 src/static/{*,**/*} dist",
|
"build:static": "copyfiles --up 2 src/static/{*,**/*} dist",
|
||||||
"build:tool": "vue-cli-service build src/nginxconfig/mount.js --no-clean",
|
"build:tool": "vue-cli-service build src/nginxconfig/mount.js --no-clean",
|
||||||
|
|
|
@ -33,7 +33,7 @@ const main = () => {
|
||||||
let template = fs.readFileSync(path.join(buildDir, 'base.html'), 'utf8');
|
let template = fs.readFileSync(path.join(buildDir, 'base.html'), 'utf8');
|
||||||
|
|
||||||
// Inject our title now
|
// Inject our title now
|
||||||
template = template.replace('<block name="title"><title>DigitalOcean</title></block>', '<title>NGINXConfig | DigitalOcean</title>');
|
template = template.replace('<block name="title"><title>DigitalOcean</title></block>', '<title>NGINXConfig | REG.RU</title>');
|
||||||
|
|
||||||
// We don't need the head/script blocks, vue-cli-service handles those
|
// We don't need the head/script blocks, vue-cli-service handles those
|
||||||
template = template.replace('<block name="head"></block>', '');
|
template = template.replace('<block name="head"></block>', '');
|
||||||
|
|
|
@ -27,4 +27,6 @@ THE SOFTWARE.
|
||||||
export default {
|
export default {
|
||||||
downloadConfig: 'Download Config',
|
downloadConfig: 'Download Config',
|
||||||
copyBase64: 'Copy Base64',
|
copyBase64: 'Copy Base64',
|
||||||
|
copied: 'Copied',
|
||||||
|
press_to_copy: 'Press Ctrl+C to copy',
|
||||||
};
|
};
|
||||||
|
|
|
@ -40,6 +40,7 @@ export default {
|
||||||
magento: 'Magento',
|
magento: 'Magento',
|
||||||
joomla: 'Joomla',
|
joomla: 'Joomla',
|
||||||
django: 'Django',
|
django: 'Django',
|
||||||
|
nodejs: 'Node.js',
|
||||||
logging: 'Логирование',
|
logging: 'Логирование',
|
||||||
reverseProxy: 'Обратный прокси',
|
reverseProxy: 'Обратный прокси',
|
||||||
reverseProxyLower: 'обратный прокси',
|
reverseProxyLower: 'обратный прокси',
|
||||||
|
|
|
@ -27,8 +27,8 @@ THE SOFTWARE.
|
||||||
import common from '../common';
|
import common from '../common';
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
title: `${common.nginx}Config`,
|
title: `Сервис настройки ${common.nginx}`,
|
||||||
description: `Самый простой способ настроить производительный, безопасный и стабильный ${common.nginx} сервер.`,
|
description: `Заполните форму и сервис подготовит конфигурационные файлы веб-сервера ${common.nginx} для вашего кейса – веб-сервер, сервер для ${common.django} или ${common.nodejs}, сервер для CMS ${common.wordPress}, ${common.joomla}, ${common.drupal}. Настройка возможна как для одного и нескольких доменов. Готовые файлы конфигурации можно скачать или выполнить одну команду на сервере для автоматического обновления.`,
|
||||||
singleColumnMode: 'Одноколоночный режим',
|
singleColumnMode: 'Одноколоночный режим',
|
||||||
splitColumnMode: 'Режим разделения столбца',
|
splitColumnMode: 'Режим разделения столбца',
|
||||||
perWebsiteConfig: 'Конфигурация для каждого сайта',
|
perWebsiteConfig: 'Конфигурация для каждого сайта',
|
||||||
|
|
|
@ -27,4 +27,6 @@ THE SOFTWARE.
|
||||||
export default {
|
export default {
|
||||||
downloadConfig: 'Скачать конфигурацию',
|
downloadConfig: 'Скачать конфигурацию',
|
||||||
copyBase64: 'Копировать Base64',
|
copyBase64: 'Копировать Base64',
|
||||||
|
copied: 'Скопировано',
|
||||||
|
press_to_copy: 'Нажмите Ctrl+C чтобы скопировать',
|
||||||
};
|
};
|
||||||
|
|
|
@ -54,6 +54,11 @@ pre {
|
||||||
text-align: initial;
|
text-align: initial;
|
||||||
vertical-align: initial;
|
vertical-align: initial;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
&.function,
|
||||||
|
&.keyword {
|
||||||
|
color: $header;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,10 +25,10 @@ THE SOFTWARE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
.header {
|
.header {
|
||||||
padding: ($margin * 2) $margin ($margin * 1.5);
|
padding: ($margin) ($margin * 0.5) 0;
|
||||||
|
|
||||||
@media (min-width: $breakpoint) {
|
@media (min-width: $breakpoint) {
|
||||||
padding: ($margin * 3.75) 0 ($margin * .5);
|
padding: ($margin) 0 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.container {
|
.container {
|
||||||
|
@ -36,6 +36,11 @@ THE SOFTWARE.
|
||||||
@include font-medium;
|
@include font-medium;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
p {
|
||||||
|
font-size: medium;
|
||||||
|
color: #364364;
|
||||||
|
}
|
||||||
|
|
||||||
form {
|
form {
|
||||||
.input-container {
|
.input-container {
|
||||||
margin: 0;
|
margin: 0;
|
||||||
|
|
|
@ -38,7 +38,6 @@ THE SOFTWARE.
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: row;
|
flex-direction: row;
|
||||||
flex-wrap: wrap;
|
flex-wrap: wrap;
|
||||||
justify-content: space-between;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.header-group {
|
.header-group {
|
||||||
|
@ -48,6 +47,7 @@ THE SOFTWARE.
|
||||||
|
|
||||||
.button {
|
.button {
|
||||||
&.is-tiny {
|
&.is-tiny {
|
||||||
|
background-color: lightgray;
|
||||||
font-size: 20px;
|
font-size: 20px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -59,10 +59,14 @@ THE SOFTWARE.
|
||||||
}
|
}
|
||||||
|
|
||||||
.buttons-group {
|
.buttons-group {
|
||||||
align-items: center;
|
|
||||||
|
|
||||||
.button {
|
.button {
|
||||||
margin: 0 .25rem .5rem;
|
margin: 0 .25rem .5rem;
|
||||||
|
flex: 1 1 auto;
|
||||||
|
|
||||||
|
&.is-primary {
|
||||||
|
background-color: $header;
|
||||||
|
color: $callout;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -87,6 +91,8 @@ THE SOFTWARE.
|
||||||
|
|
||||||
.button {
|
.button {
|
||||||
margin-left: .5rem;
|
margin-left: .5rem;
|
||||||
|
color: $callout;
|
||||||
|
background-color: $header;
|
||||||
|
|
||||||
i + span,
|
i + span,
|
||||||
span + i {
|
span + i {
|
||||||
|
@ -94,4 +100,8 @@ THE SOFTWARE.
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.dark-button {
|
||||||
|
background-color: $header;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -31,6 +31,7 @@ THE SOFTWARE.
|
||||||
overflow-wrap: break-word;
|
overflow-wrap: break-word;
|
||||||
|
|
||||||
a {
|
a {
|
||||||
|
color: $header;
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -47,4 +48,8 @@ THE SOFTWARE.
|
||||||
.buttons {
|
.buttons {
|
||||||
margin: 1rem 0;
|
margin: 1rem 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.dark-button {
|
||||||
|
background-color: $header;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -35,25 +35,24 @@ THE SOFTWARE.
|
||||||
&:focus {
|
&:focus {
|
||||||
a {
|
a {
|
||||||
&::after {
|
&::after {
|
||||||
background: $dark-blue;
|
background: $header;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Light blue color if the user has gone past a tab
|
|
||||||
&.is-before {
|
&.is-before {
|
||||||
a {
|
a {
|
||||||
color: mix($dark-grey, $primary);
|
color: mix($header, $header);
|
||||||
|
|
||||||
&::after {
|
&::after {
|
||||||
background: rgba($primary, .5);
|
background: rgba($header, .5);
|
||||||
}
|
}
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
color: $dark-blue;
|
color: $header;
|
||||||
|
|
||||||
&::after {
|
&::after {
|
||||||
background: $dark-blue;
|
background: $header;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -62,7 +61,7 @@ THE SOFTWARE.
|
||||||
// If a user has changed something in the tab, we'll make the text dark always
|
// If a user has changed something in the tab, we'll make the text dark always
|
||||||
&.is-changed {
|
&.is-changed {
|
||||||
a {
|
a {
|
||||||
color: $dark-blue;
|
color: $header;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -24,7 +24,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
THE SOFTWARE.
|
THE SOFTWARE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
$header: #0071fe;
|
$header: #066BC6;
|
||||||
$highlight: #f2c94c;
|
$highlight: #f2c94c;
|
||||||
$callout: #f3f5f9;
|
$callout: #f3f5f9;
|
||||||
@import "~do-bulma/src/style";
|
@import "~do-bulma/src/style";
|
||||||
|
@ -32,14 +32,14 @@ $callout: #f3f5f9;
|
||||||
.do-bulma {
|
.do-bulma {
|
||||||
@import "../../../build/prism";
|
@import "../../../build/prism";
|
||||||
|
|
||||||
$pretty--color-dark: $primary;
|
$pretty--color-dark: $header;
|
||||||
$pretty--color-default: $primary;
|
$pretty--color-default: $header;
|
||||||
@import "~pretty-checkbox/src/pretty-checkbox";
|
@import "~pretty-checkbox/src/pretty-checkbox";
|
||||||
|
|
||||||
$vs-border-color: $border;
|
$vs-border-color: $border;
|
||||||
$vs-border-radius: $border-radius;
|
$vs-border-radius: $border-radius;
|
||||||
$vs-dropdown-box-shadow: 0 2px 4px rgba($dark-blue, .06);
|
$vs-dropdown-box-shadow: 0 2px 4px rgba($header, .06);
|
||||||
$vs-state-active-bg: $primary;
|
$vs-state-active-bg: $header;
|
||||||
@import "~vue-select/src/scss/vue-select";
|
@import "~vue-select/src/scss/vue-select";
|
||||||
|
|
||||||
@import "header";
|
@import "header";
|
||||||
|
|
|
@ -27,12 +27,10 @@ THE SOFTWARE.
|
||||||
<template>
|
<template>
|
||||||
<div class="all do-bulma">
|
<div class="all do-bulma">
|
||||||
<Header :title="$t('templates.app.title')">
|
<Header :title="$t('templates.app.title')">
|
||||||
<template #description>
|
|
||||||
{{ $t('templates.app.description') }}
|
|
||||||
</template>
|
|
||||||
<template #header>
|
<template #header>
|
||||||
|
<p>{{ $t('templates.app.description') }}</p>
|
||||||
</template>
|
</template>
|
||||||
<template #buttons>
|
<!-- <template #buttons>
|
||||||
<VueSelect v-model="lang"
|
<VueSelect v-model="lang"
|
||||||
:options="i18nPacks"
|
:options="i18nPacks"
|
||||||
:clearable="false"
|
:clearable="false"
|
||||||
|
@ -53,7 +51,7 @@ THE SOFTWARE.
|
||||||
<a v-else class="button is-primary is-hidden-touch" @click="splitColumnToggle">
|
<a v-else class="button is-primary is-hidden-touch" @click="splitColumnToggle">
|
||||||
{{ $t('templates.app.splitColumnMode') }}
|
{{ $t('templates.app.splitColumnMode') }}
|
||||||
</a>
|
</a>
|
||||||
</template>
|
</template> -->
|
||||||
</Header>
|
</Header>
|
||||||
|
|
||||||
<div class="main container" :style="{ display: ready ? undefined : 'none' }">
|
<div class="main container" :style="{ display: ready ? undefined : 'none' }">
|
||||||
|
@ -63,7 +61,10 @@ THE SOFTWARE.
|
||||||
|
|
||||||
<div class="tabs">
|
<div class="tabs">
|
||||||
<ul>
|
<ul>
|
||||||
<li v-for="data in activeDomains" :class="data[1] === active ? 'is-active' : undefined">
|
<li v-for="data in activeDomains"
|
||||||
|
:key="data[0].server.domain.computed"
|
||||||
|
:class="data[1] === active ? 'is-active' : undefined"
|
||||||
|
>
|
||||||
<a class="domain" @click="active = data[1]">
|
<a class="domain" @click="active = data[1]">
|
||||||
{{ data[0].server.domain.computed }}{{ changes(data[1]) }}
|
{{ data[0].server.domain.computed }}{{ changes(data[1]) }}
|
||||||
</a>
|
</a>
|
||||||
|
@ -87,7 +88,7 @@ THE SOFTWARE.
|
||||||
<h2>{{ $t('templates.app.globalConfig') }}</h2>
|
<h2>{{ $t('templates.app.globalConfig') }}</h2>
|
||||||
<Global :data="global"></Global>
|
<Global :data="global"></Global>
|
||||||
|
|
||||||
<DropletCallout></DropletCallout>
|
<!-- <DropletCallout></DropletCallout> -->
|
||||||
|
|
||||||
<h2>{{ $t('templates.app.setup') }}</h2>
|
<h2>{{ $t('templates.app.setup') }}</h2>
|
||||||
<Setup :data="{ domains: domains.filter(d => d !== null), global, confFiles }"></Setup>
|
<Setup :data="{ domains: domains.filter(d => d !== null), global, confFiles }"></Setup>
|
||||||
|
@ -110,9 +111,6 @@ THE SOFTWARE.
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<Footer></Footer>
|
|
||||||
<ContributeCallout></ContributeCallout>
|
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
@ -262,10 +260,10 @@ THE SOFTWARE.
|
||||||
const imported = await importData(query, this.$data.domains, this.$data.global, this.$nextTick);
|
const imported = await importData(query, this.$data.domains, this.$data.global, this.$nextTick);
|
||||||
|
|
||||||
// Apply browser language if not specified in query
|
// Apply browser language if not specified in query
|
||||||
if (!imported || !imported.global || !imported.global.app || !imported.global.app.lang) {
|
// if (!imported || !imported.global || !imported.global.app || !imported.global.app.lang) {
|
||||||
const language = browserLanguage(availablePacks);
|
// const language = browserLanguage(availablePacks);
|
||||||
if (language) this.lang = language;
|
// if (language) this.lang = language;
|
||||||
}
|
// }
|
||||||
|
|
||||||
// Initial analytics events
|
// Initial analytics events
|
||||||
this.splitColumnEvent(true);
|
this.splitColumnEvent(true);
|
||||||
|
|
|
@ -33,7 +33,10 @@ THE SOFTWARE.
|
||||||
<div class="panel">
|
<div class="panel">
|
||||||
<div class="tabs">
|
<div class="tabs">
|
||||||
<ul>
|
<ul>
|
||||||
<li v-for="tab in tabs" :class="tabClass(tab.key)">
|
<li v-for="tab in tabs"
|
||||||
|
:key="tab.key"
|
||||||
|
:class="tabClass(tab.key)"
|
||||||
|
>
|
||||||
<a @click="showTab(tab.key)">{{ $t(tab.display) }}{{ changes(tab.key) }}</a>
|
<a @click="showTab(tab.key)">{{ $t(tab.display) }}{{ changes(tab.key) }}</a>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
@ -63,9 +66,9 @@ THE SOFTWARE.
|
||||||
import analytics from '../util/analytics';
|
import analytics from '../util/analytics';
|
||||||
import isChanged from '../util/is_changed';
|
import isChanged from '../util/is_changed';
|
||||||
import Presets from './domain_sections/presets';
|
import Presets from './domain_sections/presets';
|
||||||
import * as Sections from './domain_sections';
|
import Sections from './domain_sections';
|
||||||
|
|
||||||
const tabs = Object.values(Sections);
|
const tabs = Sections;
|
||||||
const delegated = {
|
const delegated = {
|
||||||
hasUserInteraction: false,
|
hasUserInteraction: false,
|
||||||
presets: Presets.delegated,
|
presets: Presets.delegated,
|
||||||
|
|
|
@ -24,12 +24,24 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
THE SOFTWARE.
|
THE SOFTWARE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
export { default as Server } from './server';
|
import Server from './server';
|
||||||
export { default as HTTPS } from './https';
|
import HTTPS from './https';
|
||||||
export { default as PHP } from './php';
|
import PHP from './php';
|
||||||
export { default as Python } from './python';
|
import Python from './python';
|
||||||
export { default as ReverseProxy } from './reverse_proxy';
|
import ReverseProxy from './reverse_proxy';
|
||||||
export { default as Routing } from './routing';
|
import Routing from './routing';
|
||||||
export { default as Logging } from './logging';
|
import Logging from './logging';
|
||||||
export { default as Restrict } from './restrict';
|
import Restrict from './restrict';
|
||||||
export { default as Onion } from './onion';
|
import Onion from './onion';
|
||||||
|
|
||||||
|
export default [
|
||||||
|
Server,
|
||||||
|
HTTPS,
|
||||||
|
PHP,
|
||||||
|
Python,
|
||||||
|
ReverseProxy,
|
||||||
|
Routing,
|
||||||
|
Logging,
|
||||||
|
Restrict,
|
||||||
|
Onion,
|
||||||
|
];
|
||||||
|
|
|
@ -28,7 +28,10 @@ THE SOFTWARE.
|
||||||
<div class="panel">
|
<div class="panel">
|
||||||
<div class="tabs">
|
<div class="tabs">
|
||||||
<ul>
|
<ul>
|
||||||
<li v-for="tab in tabs" :class="tabClass(tab.key)">
|
<li v-for="tab in tabs"
|
||||||
|
:key="tab.key"
|
||||||
|
:class="tabClass(tab.key)"
|
||||||
|
>
|
||||||
<a @click="showTab(tab.key)">{{ $t(tab.display) }}{{ changes(tab.key) }}</a>
|
<a @click="showTab(tab.key)">{{ $t(tab.display) }}{{ changes(tab.key) }}</a>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
@ -56,9 +59,9 @@ THE SOFTWARE.
|
||||||
<script>
|
<script>
|
||||||
import analytics from '../util/analytics';
|
import analytics from '../util/analytics';
|
||||||
import isChanged from '../util/is_changed';
|
import isChanged from '../util/is_changed';
|
||||||
import * as Sections from './global_sections';
|
import Sections from './global_sections';
|
||||||
|
|
||||||
const tabs = Object.values(Sections);
|
const tabs = Sections;
|
||||||
const delegated = tabs.reduce((prev, tab) => {
|
const delegated = tabs.reduce((prev, tab) => {
|
||||||
prev[tab.key] = tab.delegated;
|
prev[tab.key] = tab.delegated;
|
||||||
return prev;
|
return prev;
|
||||||
|
|
|
@ -32,7 +32,7 @@ THE SOFTWARE.
|
||||||
</div>
|
</div>
|
||||||
<div class="field-body">
|
<div class="field-body">
|
||||||
<div class="field is-horizontal is-aligned-top">
|
<div class="field is-horizontal is-aligned-top">
|
||||||
<a class="button is-primary is-tiny" @click="applyDockerTweaks">
|
<a class="button is-primary is-tiny dark-button" @click="applyDockerTweaks">
|
||||||
{{ $t('templates.globalSections.docker.applyDockerTweaks') }}
|
{{ $t('templates.globalSections.docker.applyDockerTweaks') }}
|
||||||
</a>
|
</a>
|
||||||
<p>
|
<p>
|
||||||
|
|
|
@ -24,12 +24,24 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
THE SOFTWARE.
|
THE SOFTWARE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
export { default as HTTPS } from './https';
|
import HTTPS from './https';
|
||||||
export { default as Security } from './security';
|
import Security from './security';
|
||||||
export { default as Python } from './python';
|
import Python from './python';
|
||||||
export { default as ReverseProxy } from './reverse_proxy';
|
import ReverseProxy from './reverse_proxy';
|
||||||
export { default as Performance } from './performance';
|
import Performance from './performance';
|
||||||
export { default as Logging } from './logging';
|
import Logging from './logging';
|
||||||
export { default as NGINX } from './nginx';
|
import NGINX from './nginx';
|
||||||
export { default as Docker } from './docker';
|
import Docker from './docker';
|
||||||
export { default as Tools } from './tools';
|
import Tools from './tools';
|
||||||
|
|
||||||
|
export default [
|
||||||
|
HTTPS,
|
||||||
|
Security,
|
||||||
|
Python,
|
||||||
|
ReverseProxy,
|
||||||
|
Performance,
|
||||||
|
Logging,
|
||||||
|
NGINX,
|
||||||
|
Docker,
|
||||||
|
Tools,
|
||||||
|
];
|
||||||
|
|
|
@ -29,7 +29,10 @@ THE SOFTWARE.
|
||||||
<div class="panel">
|
<div class="panel">
|
||||||
<div class="tabs">
|
<div class="tabs">
|
||||||
<ul>
|
<ul>
|
||||||
<li v-for="tab in tabs" :class="tabClass(tab.key)">
|
<li v-for="tab in tabs"
|
||||||
|
:key="tab.key"
|
||||||
|
:class="tabClass(tab.key)"
|
||||||
|
>
|
||||||
<a @click="showTab(tab.key)">{{ $t(tab.display) }}</a>
|
<a @click="showTab(tab.key)">{{ $t(tab.display) }}</a>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
@ -55,7 +58,7 @@ THE SOFTWARE.
|
||||||
|
|
||||||
<div class="buttons is-centered">
|
<div class="buttons is-centered">
|
||||||
<a class="button is-success" @click="downloadTar">{{ $t('templates.setup.downloadConfig') }}</a>
|
<a class="button is-success" @click="downloadTar">{{ $t('templates.setup.downloadConfig') }}</a>
|
||||||
<a ref="copyTar" class="button is-primary">{{ $t('templates.setup.copyBase64') }}</a>
|
<a ref="copyTar" class="button is-primary dark-button">{{ $t('templates.setup.copyBase64') }}</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
@ -64,9 +67,9 @@ THE SOFTWARE.
|
||||||
import Tar from 'memory-tar-create';
|
import Tar from 'memory-tar-create';
|
||||||
import ClipboardJS from 'clipboard';
|
import ClipboardJS from 'clipboard';
|
||||||
import analytics from '../util/analytics';
|
import analytics from '../util/analytics';
|
||||||
import * as Sections from './setup_sections';
|
import Sections from './setup_sections';
|
||||||
|
|
||||||
const tabs = Object.values(Sections);
|
const tabs = Sections;
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'Setup',
|
name: 'Setup',
|
||||||
|
@ -164,13 +167,13 @@ THE SOFTWARE.
|
||||||
});
|
});
|
||||||
|
|
||||||
clipboard.on('success', e => {
|
clipboard.on('success', e => {
|
||||||
elm.textContent = 'Copied';
|
elm.textContent = this.$t('templates.setup.copied');
|
||||||
e.clearSelection();
|
e.clearSelection();
|
||||||
resetText();
|
resetText();
|
||||||
});
|
});
|
||||||
|
|
||||||
clipboard.on('error', () => {
|
clipboard.on('error', () => {
|
||||||
elm.textContent = 'Press Ctrl + C to copy';
|
elm.textContent = this.$t('templates.setup.press_to_copy');
|
||||||
resetText();
|
resetText();
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
|
@ -24,7 +24,14 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
THE SOFTWARE.
|
THE SOFTWARE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
export { default as Download } from './download';
|
import Download from './download';
|
||||||
export { default as SSL } from './ssl';
|
import SSL from './ssl';
|
||||||
export { default as Certbot } from './certbot';
|
import Certbot from './certbot';
|
||||||
export { default as GoLive } from './go_live';
|
import GoLive from './go_live';
|
||||||
|
|
||||||
|
export default [
|
||||||
|
Download,
|
||||||
|
SSL,
|
||||||
|
Certbot,
|
||||||
|
GoLive,
|
||||||
|
];
|
||||||
|
|
|
@ -25,6 +25,6 @@ THE SOFTWARE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
export const defaultPack = 'en';
|
export const defaultPack = 'ru';
|
||||||
|
|
||||||
export { default as defaultPackData } from '../i18n/en';
|
export { default as defaultPackData } from '../i18n/ru';
|
||||||
|
|
Loading…
Reference in New Issue