//import axios from 'axios'
export const state = () => ({
lang: '',
error: {},
message: {},
entry:{
nav: {
brandLabel: {},
brandUrl: '',
menu: [],
},
userRole: '',
appParams:{
organization:{},
country:{},
}
}
})
export const mutations = {
setLang(state, lang) {
state.lang=lang;
},
clearError(state){
//state.error=Object.assign({});
//if ("message" in state.error)
state.error={};
},
clearMessage(state){
state.message={};
},
setBrandLabel(state, val){
state.entry.nav.brandLabel = val
},
setBrandUrl(state, val){
state.entry.nav.brandUrl = val
},
setMenu(state, val){
state.entry.nav.menu = val
},
setUserRole(state, val){
state.entry.userRole = val
},
setOrganization(state, val){
state.entry.appParams.organization = val
},
setCountry(state, val) {
state.entry.appParams.country = val
},
}
export const actions = {
async getMenu({state, commit, $axios }){
await this.$axios.get('menu')
.then(response=>{
//console.log(response.data)
let d = response.data;
commit('setBrandLabel', d.brandLabel)
commit('setBrandUrl', d.brandUrl)
commit('setMenu', d.menu)
commit('setLang', d.lang)
commit('setUserRole', d.userRole)
commit('setOrganization', d.appParams.organization)
commit('setCountry', d.appParams.country)
//console.log(state.entry)
return Promise.resolve(d.lang);
})
.catch(e => {
state.error = e.response;
});
}
}
export const getters = {
lang: state => state.lang,
userRole: state => state.entry.userRole,
error(state){
if ((state.error instanceof Object) && ('message' in state.error)){
return ('name' in state.error) ? `${state.error.name}. ${state.error.message}`.split(';') : state.error.message.split(';');
}
else if (JSON.stringify(state.error)=='{}' || state.error=='')
return false;
return [state.error];
},
message(state){
if(JSON.stringify(state.message)=='{}' || state.message=='') {
return false;
} else return state.message;
},
}
<template>
<div id="app">
<Navbar :nav="entry.nav" :lang="lang" />
<main>
{{test}}
<div class='container'>
<Nuxt />
</div>
</main>
</div>
</template>
<script>
import Navbar from '@/components/Navbar'
import {mapState, mapActions} from 'vuex'
import axios from 'axios'
export default {
components: {
Navbar
},
data(){
return {
test: '',
}
},
watch: {
'$route' (to, from) {
if (to.path.search(/^\/language/)>-1) {
this.changeLanguage(to,from);
}
this.$store.commit('clearError');
},
},
computed: {
...mapState(['lang', 'entry']),
},
methods: {
...mapActions(['getMenu']),
changeLanguage(to, from){
this.$router.replace(from.path);
if (this.lang!=to.params.lang)
{
this.setLang(to.params.lang);
this.sendLang(to.path);
}
},
sendLang(path){
axios.put(path)
.catch(e=>{
this.$store.dispatch('setError', e);
});
},
setLang(lang){
this.$store.commit('setLang', lang);
},
},
//*************************************** после добавления этого кода начинает рендериться как надо
async fetch() {
const t = await fetch('http://localhost:8000/menu').then(res =>
res.json())
},
asyncData() {
return {
name: 'Alex',
food: 'apple'
}
},
//*********************************конец странного и непонятного кода
created(){
this.getMenu()
},
}
</script>
<template>
<div class="home">
<h1>front page</h1>
<img alt="Vue logo" class='front-logo' src="../assets/logo-front.png">
<FrontGuest v-if="userRole == 'roleGuest'" :msg = "voc.h1[lang]"/>
<FrontUser v-if="userRole == 'roleUser' || userRole == 'roleAdmin'" :msg = "voc.h1[lang]"/>
<div class="generate"></div>
</div>
</template>
<script>
import FrontGuest from '@/components/FrontPage/FrontGuest.vue'
import FrontUser from '@/components/FrontPage/FrontUser.vue'
import translations from '@/components/FrontPage/translations';
export default {
components: {
FrontGuest, FrontUser
},
data(){
return {
name: 'Home',
voc: translations,
}
},
head: {
title: 'Home page',
data() {
return {
voc: translations,
}
},
computed: {
lang(){
return this.$store.getters.lang;
},
userRole() {
return this.$store.getters.userRole;
},
},
}
</script>
'/api': 'http://localhost:8000/api'
mode: 'universal',
ip addr
выдал только 127.0.0.1 и какой то двойной ip:inet 192.168.5.177/24 brd 192.168.5.255 scope global noprefixroute dynamic eno50332176
openssl s_client -connect address:443
- сертификат отдает. Получается с файерволом все ок.openssl x509 -in cert.pem -text
нашел только следующие связанные с именем строкиX509v3 Subject Alternative Name:
DNS:site.ru, DNS:www.site.ru
<VirtualHost *:443>
ServerName site.ru
ServerAlias www.site.ru site.ru
DocumentRoot /var/www/newstolica
ErrorLog /var/log/httpd/newstolica-error.log
CustomLog /var/log/httpd/newstolica-access.log combined
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/site.ru/cert.pem
SSLCertificateChainFile /etc/letsencrypt/live/site.ru/chain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/site.ru/privkey.pem
</VirtualHost>
openssl s_client -connect 127.0.0.1:443
вот что получилось:CONNECTED(00000003)
depth=2 O = Digital Signature Trust Co., CN = DST Root CA X3
verify return:1
depth=1 C = US, O = Let's Encrypt, CN = R3
verify return:1
depth=0 CN = site.ru
verify return:1
---
Certificate chain
0 s:/CN=site.ru
i:/C=US/O=Let's Encrypt/CN=R3
1 s:/C=US/O=Let's Encrypt/CN=R3
i:/O=Digital Signature Trust Co./CN=DST Root CA X3
---
Server certificate
-----BEGIN CERTIFICATE-----
MIIFLDCCBBSgAwIBAgISBJN1ETQOi9Wrriti2HyHTj7kMA0GCSqGSIb3DQEBCwUA
MDIxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MQswCQYDVQQD
EwJSMzAeFw0yMTAyMTYxMzIyMzJaFw0yMTA1MTcxMzIyMzJaMBYxFDASBgNVBAMT
C3N0b2xpY2Eub29vMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuVUV
16lBzu9g8VtKhKopKXx5eKGagAvZg3Zeno6o17o0gc/zJ1pBEcGahyHLGFwb5Zsb
4pin2sqTw0/eY7hV/aS8K6+ZKvK/zMJS/nmAqT/l/JUro904ltq9JZC27H1bakGp
g8EK+QKymXcgxOVYKKNaUn4aGoIjuMcTanwdtNc8hmKFCm4QU1f4g9FVyYMZL2d3
yVRH4ugxek19Ny8dh2wylldGztt2eeFqCepJibjDYSljG3+cGw3nUd3cibtJ6dLO
ch2sgHsgIjavrRgUJuUtGrA1nzr3nmgZJPi2BfBChOznlQY5YqB+oWhwDRCqw/nh
mPuKRZV/dfVofHK4nQIDAQABo4ICVjCCAlIwDgYDVR0PAQH/BAQDAgWgMB0GA1Ud
JQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAMBgNVHRMBAf8EAjAAMB0GA1UdDgQW
BBRnZRNULIuSEsCIMNH4NEe1p49BYjAfBgNVHSMEGDAWgBQULrMXt1hWy65QCUDm
H6+dixTCxjBVBggrBgEFBQcBAQRJMEcwIQYIKwYBBQUHMAGGFWh0dHA6Ly9yMy5v
LmxlbmNyLm9yZzAiBggrBgEFBQcwAoYWaHR0cDovL3IzLmkubGVuY3Iub3JnLzAn
BgNVHREEIDAeggtzdG9saWNhLm9vb4IPd3d3LnN0b2xpY2Eub29vMEwGA1UdIARF
MEMwCAYGZ4EMAQIBMDcGCysGAQQBgt8TAQEBMCgwJgYIKwYBBQUHAgEWGmh0dHA6
Ly9jcHMubGV0c2VuY3J5cHQub3JnMIIBAwYKKwYBBAHWeQIEAgSB9ASB8QDvAHYA
9lyUL9F3MCIUVBgIMJRWjuNNExkzv98MLyALzE7xZOMAAAF3qzik7gAABAMARzBF
AiA6wkrfE/s9jriKumua6BcPvVnGR2qw+sgLTltZoSBDcgIhAPveoZDuCzzP/S0l
XrEZf1jXRPVBZzBKfB2W6cEo/c+XAHUAlCC8Ho7VjWyIcx+CiyIsDdHaTV5sT5Q9
YdtOL1hNosIAAAF3qzilDwAABAMARjBEAiB3vVgEJs/1c9Kq1fYJ7o56o7E36ri7
6e1ZQHy7x6BAWwIgCP7Bgyk9rIrFpu5BOCKjz5SX1vazPuNG3bzDgvNOg5wwDQYJ
KoZIhvcNAQELBQADggEBAHbdus8qcILrl5zTGNtE2tmDviZj3HpHaliDEJ2gHS7Z
tSf7EDerrcuBQ2yqNEoK7asjYip21YScnfSe/pDOK4mIBIFWRn+0LVhNlGN7Oct4
iCLMZ2zqduXl5QiTDsaft1wQNYD+YXuFNP69e5OvY78p3Y90x+/MvBZhQGkKD0EY
a1QmaIHiYhJQDFnPUR59CZ8uJ7w76XCylNdgEGhBB041i1dqHXzMsWnEI9HiRVsl
py6oKqqoU+3BPXyTwWc9q5O2ZWy2h750RET3lRPKgHc6lPq3j7YKAYqSjv7Db8ef
o8NTaMr/lJc+fM1dbN/TL10ec/4+Q+fg1CA5GzI3suE=
-----END CERTIFICATE-----
subject=/CN=site.ru
issuer=/C=US/O=Let's Encrypt/CN=R3
---
No client certificate CA names sent
Peer signing digest: SHA512
Server Temp Key: ECDH, P-256, 256 bits
---
SSL handshake has read 3151 bytes and written 415 bytes
---
New, TLSv1/SSLv3, Cipher is ECDHE-RSA-AES256-GCM-SHA384
Server public key is 2048 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
SSL-Session:
Protocol : TLSv1.2
Cipher : ECDHE-RSA-AES256-GCM-SHA384
Session-ID: CFE624FA344E9687D032244550611B55AA431388EE81B08AE3877E24541766CA
Session-ID-ctx:
Master-Key: A97FDC8A0FEB5CC559BCE81C32C003EBC5B408AF018065166158A66F3110D8F4164756956AEA397EC77155D76868290E
Key-Arg : None
Krb5 Principal: None
PSK identity: None
PSK identity hint: None
TLS session ticket lifetime hint: 300 (seconds)
TLS session ticket:
0000 - 37 22 09 1f e2 48 65 3e-db 6c 32 76 b9 ad 64 ae 7"...He>.l2v..d.
0010 - 5e 1a 5e ec d4 c5 54 b4-7f 49 c4 1d 0a 96 80 00 ^.^...T..I......
0020 - 6b 46 cf 99 9d 46 46 65-7e 23 ff 04 e5 e3 ba cf kF...FFe~#......
0030 - 71 9a 71 38 4c e7 42 48-ca 68 42 3b b2 eb c2 b7 q.q8L.BH.hB;....
0040 - c7 9a 71 34 65 4b a9 60-57 34 a9 3a 75 f5 29 13 ..q4eK.`W4.:u.).
0050 - dc f6 cd 2c 5f 74 32 71-72 5d 93 08 88 13 9a ee ...,_t2qr]......
0060 - 13 b6 96 87 fe c0 d2 92-d0 06 93 d7 4e e8 61 f2 ............N.a.
0070 - 3f c5 21 5f de 77 a9 1d-e6 74 85 03 da d0 70 e5 ?.!_.w...t....p.
0080 - d5 48 92 e3 96 5e 46 4b-a9 e3 bb 9b 2b bb 69 a8 .H...^FK....+.i.
0090 - 09 c0 2c f0 5e 9e d2 b1-fd de 6b b2 3c 26 25 4f ..,.^.....k.<&%O
00a0 - b3 2f 58 53 57 55 31 d3-b4 1c d3 36 7e ba dc e1 ./XSWU1....6~...
00b0 - b5 29 59 c5 4c ce 20 3e-f2 ce 8f c8 00 7b 7f 1b .)Y.L. >.....{..
Start Time: 1613511280
Timeout : 300 (sec)
Verify return code: 0 (ok)
---
closed
sudo certbot certonly --apache -d site.ru -d www.site.ru
. А как исходя из самих файлов не знаю как посмотреть имя в сертификатеnetstat -plutn
выдает для 443 только0.0.0.0:443
openssl s_client -connect вашадрес:443
пишет: socket: Bad file descriptor
connect:errno=9