mirror of
https://github.com/mailcow/mailcow-dockerized.git
synced 2026-10-07 04:37:12 +00:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
87214fef70 | ||
|
|
f1f9626b5b | ||
|
|
3a13c93022 | ||
|
|
83bd66db98 | ||
|
|
13175b4e6c | ||
|
|
ecefbf2166 | ||
|
|
a763dda068 | ||
|
|
698b2bf988 | ||
|
|
802d304579 | ||
|
|
8614d63ace | ||
|
|
6d8c978d17 | ||
|
|
ff4f2ae0b6 | ||
|
|
0b00f15811 | ||
|
|
bed5218550 | ||
|
|
86b67a9a7b | ||
|
|
73370de1f9 | ||
|
|
524aba0964 | ||
|
|
64528d8e0e | ||
|
|
31b5faa729 | ||
|
|
17977a2fff | ||
|
|
3e007eeaae | ||
|
|
05b897f43e | ||
|
|
738dcac60d | ||
|
|
b3bbeee5e2 | ||
|
|
782eae4d4c | ||
|
|
f2f5e212f5 | ||
|
|
ff7102468e | ||
|
|
118cb1017a | ||
|
|
360bb6f306 | ||
|
|
d8e314db1a | ||
|
|
fd14c51f85 | ||
|
|
57a5a9baeb | ||
|
|
65c74c75c7 | ||
|
|
e82f3b3975 | ||
|
|
fbc33da734 | ||
|
|
210815d4cf | ||
|
|
1e672ae349 | ||
|
|
046e658984 | ||
|
|
a46db9e0df | ||
|
|
17f3cc3ad8 | ||
|
|
3236a10cf5 | ||
|
|
a4eb6d5f1b | ||
|
|
05181f1888 | ||
|
|
6875baf64c | ||
|
|
c46a1c1e2f | ||
|
|
b79a1530fb | ||
|
|
a6a7ab45f8 | ||
|
|
bc937ed2db | ||
|
|
df17e6b75e | ||
|
|
f880e1834d | ||
|
|
4dd1b97e38 | ||
|
|
aeb433cc39 | ||
|
|
eb9d360c0a | ||
|
|
abfad4e025 | ||
|
|
e9091cbb8c | ||
|
|
cb340d78e1 | ||
|
|
548d7b9833 | ||
|
|
96dbbf4db6 | ||
|
|
4f14462af7 | ||
|
|
1e08b4ece6 | ||
|
|
6fd9efc30a | ||
|
|
6f212a41d8 | ||
|
|
52314d1a35 | ||
|
|
3028a18a37 | ||
|
|
26a5fcf989 | ||
|
|
509086ef54 | ||
|
|
963510ed22 | ||
|
|
2c0f8cda50 | ||
|
|
50d2671d75 | ||
|
|
b73d879f3c | ||
|
|
725a5fe5b9 | ||
|
|
65ca42ca42 | ||
|
|
b22ff59f7b | ||
|
|
58527857d9 | ||
|
|
6306c4555c | ||
|
|
922603f906 | ||
|
|
f8d45de749 | ||
|
|
cb1602c2de | ||
|
|
8026b6c874 | ||
|
|
042676fff7 | ||
|
|
44d53146af | ||
|
|
ce4fb069d5 | ||
|
|
9444000d46 | ||
|
|
eacd9ac240 | ||
|
|
cf38d6ca69 | ||
|
|
905993d66e | ||
|
|
0d7fe2e347 | ||
|
|
33bd871a63 | ||
|
|
772122b255 | ||
|
|
9fb346751c | ||
|
|
cb058e91a3 | ||
|
|
27e7407407 | ||
|
|
623397d20a | ||
|
|
7d46de33d8 | ||
|
|
5470b51cc7 | ||
|
|
8e0b1d8aee | ||
|
|
2834459b22 | ||
|
|
000894dabd | ||
|
|
494620cdea | ||
|
|
a502eb239d | ||
|
|
caf775093e | ||
|
|
f28e18e676 | ||
|
|
b4bab1d5b9 | ||
|
|
c4d5072e5c | ||
|
|
852bf750ca | ||
|
|
47359c4113 | ||
|
|
15f2c4c769 | ||
|
|
a0174c61e8 | ||
|
|
5b30dce609 | ||
|
|
8f6099e3e4 | ||
|
|
7c44375223 | ||
|
|
72e204f8fd | ||
|
|
b5f5b53e37 | ||
|
|
1c15133a52 | ||
|
|
7c9c2c35f8 | ||
|
|
9806e568c0 | ||
|
|
b4bb4e2938 | ||
|
|
de7b809229 | ||
|
|
a40df1ff87 | ||
|
|
a161aa2c92 | ||
|
|
cad0f25345 | ||
|
|
2ed453a400 | ||
|
|
452d8a686f | ||
|
|
90f77f6d5c | ||
|
|
0c11cf747a | ||
|
|
6d36475ed3 | ||
|
|
fee6ff43bf | ||
|
|
57cd5ec818 | ||
|
|
02512e0f4f | ||
|
|
555f4a8a6d | ||
|
|
3633766544 | ||
|
|
e98a984417 | ||
|
|
bc9141753f | ||
|
|
1f9f4157a6 | ||
|
|
778a3ed551 | ||
|
|
5ea4305185 | ||
|
|
ef311f22bf | ||
|
|
e202530afb | ||
|
|
85deeaf806 | ||
|
|
825c8a6abe | ||
|
|
cdc8f63b4b | ||
|
|
9db9818ede | ||
|
|
4f7ee669d3 | ||
|
|
77f9947613 | ||
|
|
a8eb3b6ac5 | ||
|
|
575eab1cf0 | ||
|
|
7a23e4fd4e | ||
|
|
b16b276f36 | ||
|
|
4f380debb5 | ||
|
|
f34d3620b1 | ||
|
|
70e99447f9 | ||
|
|
047c4aa3a0 | ||
|
|
925b220905 | ||
|
|
6708059227 | ||
|
|
1f3d9d4e1c | ||
|
|
0dcfac8f15 | ||
|
|
ad8b7f0894 | ||
|
|
55f810b23f | ||
|
|
65eddee63e | ||
|
|
7b57b3392c | ||
|
|
492451bfee | ||
|
|
4322c98f73 | ||
|
|
edcf789126 | ||
|
|
b985ba4f0e | ||
|
|
67c0405274 | ||
|
|
9b32151ab5 | ||
|
|
a1e8077f45 | ||
|
|
956e4e2aa7 | ||
|
|
b51a659515 | ||
|
|
44a6f09a09 | ||
|
|
4c10525078 | ||
|
|
c9ab8b2eff | ||
|
|
4bf38bf00f | ||
|
|
7c7c67948e | ||
|
|
263cb96786 | ||
|
|
b6e3e7a658 | ||
|
|
ceaf1423f4 | ||
|
|
c2e0a275e1 | ||
|
|
c8620a066d | ||
|
|
9598b503ec | ||
|
|
1ca566f670 | ||
|
|
94f4ec8b96 | ||
|
|
7aab2c55ff | ||
|
|
6abb4d34c1 | ||
|
|
c8ccf080f3 | ||
|
|
0342ae926c | ||
|
|
be08742653 | ||
|
|
528f7da5ef | ||
|
|
7d72ae3449 | ||
|
|
753cde0b85 | ||
|
|
223ba44b61 | ||
|
|
cd02483b19 | ||
|
|
f724662874 | ||
|
|
bee762737e | ||
|
|
83efd3e506 | ||
|
|
2278a6cc73 | ||
|
|
586b60b276 | ||
|
|
f07b9ea304 | ||
|
|
09dca5d76c | ||
|
|
65bb808441 | ||
|
|
83b79edb42 | ||
|
|
b8ec244d92 | ||
|
|
5b924614aa | ||
|
|
43103add47 | ||
|
|
124d5d6bb2 | ||
|
|
58fde558f7 | ||
|
|
8b314acfcf | ||
|
|
1c0eab9893 | ||
|
|
514079fe96 | ||
|
|
c62daa0c59 | ||
|
|
1a05101f50 | ||
|
|
47fb46c837 | ||
|
|
d29580aa02 | ||
|
|
d0fc62ef13 | ||
|
|
b14c0e4c11 | ||
|
|
43ec12f4f0 | ||
|
|
40cf2c85e6 | ||
|
|
6195b7c334 | ||
|
|
385570c1e8 | ||
|
|
d82cfc6c62 | ||
|
|
27e9210d52 | ||
|
|
fdf52dcb17 | ||
|
|
1ff220ccf8 | ||
|
|
1b6e5b7116 | ||
|
|
536ab34955 | ||
|
|
f7369f0611 | ||
|
|
14bc105d43 | ||
|
|
2efb4365bf | ||
|
|
c1b86fc782 | ||
|
|
52e92cc0db | ||
|
|
3af2f636a5 | ||
|
|
6fb967cf79 | ||
|
|
0dab215e27 | ||
|
|
03c49ea1f8 | ||
|
|
6ec136e63f | ||
|
|
bba5671eaf | ||
|
|
88d7593d89 | ||
|
|
bd23b80d45 | ||
|
|
f96e0c4071 | ||
|
|
11700d7ecb | ||
|
|
33eb2c8801 | ||
|
|
a835419168 | ||
|
|
4ce16d1ea4 | ||
|
|
c1c7167ace | ||
|
|
3d538d4f14 | ||
|
|
7969e7116d | ||
|
|
4f58f2caee | ||
|
|
263baa81c0 | ||
|
|
092890b6ab | ||
|
|
db7d7ea288 | ||
|
|
452daf5d5e | ||
|
|
d373164e13 | ||
|
|
cd7715fa0e | ||
|
|
af9c3a8565 | ||
|
|
dd6b8c44a4 | ||
|
|
499273dbb7 | ||
|
|
6612b892b7 | ||
|
|
89cea31475 | ||
|
|
872fa07213 | ||
|
|
36e4ee7738 | ||
|
|
a139eb9bce | ||
|
|
7166696aa2 | ||
|
|
537a7908f1 | ||
|
|
3fe776ee69 | ||
|
|
581be02e53 | ||
|
|
71db83efce | ||
|
|
7ae7f25580 | ||
|
|
5d14baa43a | ||
|
|
141b397c82 | ||
|
|
fd853cfc6f | ||
|
|
63f718178e | ||
|
|
74baf20feb | ||
|
|
958112af6b | ||
|
|
08d0f9448e | ||
|
|
7bcc8bd3a2 | ||
|
|
0eb2545773 | ||
|
|
714511b0a8 | ||
|
|
c9700773f4 | ||
|
|
2229f87d9b | ||
|
|
d360503443 | ||
|
|
838182a8b4 | ||
|
|
967cfedbb3 | ||
|
|
a36645a282 | ||
|
|
3368a70f88 | ||
|
|
cd1715ba52 | ||
|
|
0bc2a16093 | ||
|
|
a21b3cd606 | ||
|
|
1c479684fc | ||
|
|
c9dbc7c7b7 | ||
|
|
c41dc9d8c0 | ||
|
|
1db5841424 | ||
|
|
e53b068902 | ||
|
|
2bd436dfd8 | ||
|
|
d13be25f45 | ||
|
|
6efd9dc5f9 | ||
|
|
1edd4012e4 | ||
|
|
4390c9855a | ||
|
|
4d53216c05 | ||
|
|
040206859f | ||
|
|
d06119a21d | ||
|
|
c27ad97287 | ||
|
|
b1658c0f83 | ||
|
|
05b8609073 | ||
|
|
552f09f48a | ||
|
|
97df5c3b9c | ||
|
|
8d9102aa08 | ||
|
|
33e5ad2b5c | ||
|
|
998cb642a9 | ||
|
|
07ac195fea | ||
|
|
7d5990bf0f | ||
|
|
4ec982163e | ||
|
|
3c9502f241 | ||
|
|
63cecb2fd8 | ||
|
|
3029a2d33d | ||
|
|
fa0d2a959d | ||
|
|
f79cac3292 | ||
|
|
7a20a9941e | ||
|
|
24cc960379 | ||
|
|
353df6413f | ||
|
|
b68eae16e5 | ||
|
|
9a812edee4 | ||
|
|
43d2a6e135 | ||
|
|
5839e22796 | ||
|
|
ee844c81d2 | ||
|
|
b6cb3b026c | ||
|
|
df33ebb2a0 | ||
|
|
d2a6838958 | ||
|
|
96b8054e6b | ||
|
|
dfdd2dadb4 | ||
|
|
d0528b7883 | ||
|
|
f40e682800 | ||
|
|
f4dc01d1ec | ||
|
|
187ddedf96 | ||
|
|
5613134fed | ||
|
|
e454ed4e39 | ||
|
|
1e2125653e | ||
|
|
835a726d2a | ||
|
|
0539cc6d8c | ||
|
|
549ff7d100 | ||
|
|
456b528785 | ||
|
|
003a6342a5 | ||
|
|
fb10764167 | ||
|
|
9e1554f5c7 | ||
|
|
42c82be8f5 | ||
|
|
76ec0e888b | ||
|
|
892c99fa23 | ||
|
|
28da482ef2 | ||
|
|
936f07336c | ||
|
|
224a59ab4b | ||
|
|
6c5ab7800e | ||
|
|
7e26a2ab98 | ||
|
|
4e6c398c8c | ||
|
|
d4e829465b | ||
|
|
1ade37312e | ||
|
|
372e381a85 | ||
|
|
374cc64601 | ||
|
|
1cf25572a3 | ||
|
|
ba45f70a30 | ||
|
|
5e56566de6 | ||
|
|
a2ccf7ef03 | ||
|
|
654dbf8198 | ||
|
|
53a5254897 | ||
|
|
c433daf024 | ||
|
|
fd7269d455 | ||
|
|
b375e6a250 | ||
|
|
48589d20e2 | ||
|
|
be9cbcf5ac | ||
|
|
b04faddac4 | ||
|
|
e925187dda | ||
|
|
06f380a17a | ||
|
|
67882414e1 | ||
|
|
2b149fb8ea | ||
|
|
3166bd5df5 | ||
|
|
e911452d0c | ||
|
|
deac5ad2fe | ||
|
|
f097267bcd | ||
|
|
161130c116 | ||
|
|
a03b8f28ae | ||
|
|
6d3798ad08 | ||
|
|
70921b8d15 | ||
|
|
b185f83fc3 | ||
|
|
bb9ae02ccc | ||
|
|
60af295c0a | ||
|
|
e7fe52a625 | ||
|
|
49c506eed9 | ||
|
|
21fadf6df2 | ||
|
|
5fcccbc97d | ||
|
|
3ef2b6cfa2 | ||
|
|
84b4269c75 | ||
|
|
a0c09af67e | ||
|
|
a2d57d43d1 | ||
|
|
df33f1a130 | ||
|
|
4c6a2055c2 | ||
|
|
f09a3df870 | ||
|
|
ea1a412749 | ||
|
|
db82327d9a | ||
|
|
ea1a02bd7d |
No files matched your search
-120
@@ -1,120 +0,0 @@
|
|||||||
---
|
|
||||||
kind: pipeline
|
|
||||||
name: integration-testing
|
|
||||||
|
|
||||||
platform:
|
|
||||||
os: linux
|
|
||||||
arch: amd64
|
|
||||||
|
|
||||||
clone:
|
|
||||||
disable: true
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: prepare-tests
|
|
||||||
pull: default
|
|
||||||
image: timovibritannia/ansible
|
|
||||||
commands:
|
|
||||||
- git clone https://github.com/mailcow/mailcow-integration-tests.git --branch $(curl -sL https://api.github.com/repos/mailcow/mailcow-integration-tests/releases/latest | jq -r '.tag_name') --single-branch .
|
|
||||||
- chmod +x ci.sh
|
|
||||||
- chmod +x ci-ssh.sh
|
|
||||||
- chmod +x ci-piprequierments.sh
|
|
||||||
- ./ci.sh
|
|
||||||
- wget -O group_vars/all/secrets.yml $SECRETS_DOWNLOAD_URL --quiet
|
|
||||||
environment:
|
|
||||||
SECRETS_DOWNLOAD_URL:
|
|
||||||
from_secret: SECRETS_DOWNLOAD_URL
|
|
||||||
VAULT_PW:
|
|
||||||
from_secret: VAULT_PW
|
|
||||||
when:
|
|
||||||
branch:
|
|
||||||
- master
|
|
||||||
- staging
|
|
||||||
event:
|
|
||||||
- push
|
|
||||||
|
|
||||||
- name: lint
|
|
||||||
pull: default
|
|
||||||
image: timovibritannia/ansible
|
|
||||||
commands:
|
|
||||||
- ansible-lint ./
|
|
||||||
when:
|
|
||||||
branch:
|
|
||||||
- master
|
|
||||||
- staging
|
|
||||||
event:
|
|
||||||
- push
|
|
||||||
|
|
||||||
- name: create-server
|
|
||||||
pull: default
|
|
||||||
image: timovibritannia/ansible
|
|
||||||
commands:
|
|
||||||
- ./ci-piprequierments.sh
|
|
||||||
- ansible-playbook mailcow-start-server.yml --diff
|
|
||||||
- ./ci-ssh.sh
|
|
||||||
environment:
|
|
||||||
ANSIBLE_HOST_KEY_CHECKING: false
|
|
||||||
ANSIBLE_FORCE_COLOR: true
|
|
||||||
when:
|
|
||||||
branch:
|
|
||||||
- master
|
|
||||||
- staging
|
|
||||||
event:
|
|
||||||
- push
|
|
||||||
|
|
||||||
- name: setup-server
|
|
||||||
pull: default
|
|
||||||
image: timovibritannia/ansible
|
|
||||||
commands:
|
|
||||||
- sleep 120
|
|
||||||
- ./ci-piprequierments.sh
|
|
||||||
- ansible-playbook mailcow-setup-server.yml --private-key /drone/src/id_ssh_rsa --diff
|
|
||||||
environment:
|
|
||||||
ANSIBLE_HOST_KEY_CHECKING: false
|
|
||||||
ANSIBLE_FORCE_COLOR: true
|
|
||||||
when:
|
|
||||||
branch:
|
|
||||||
- master
|
|
||||||
- staging
|
|
||||||
event:
|
|
||||||
- push
|
|
||||||
|
|
||||||
- name: run-tests
|
|
||||||
pull: default
|
|
||||||
image: timovibritannia/ansible
|
|
||||||
commands:
|
|
||||||
- ./ci-piprequierments.sh
|
|
||||||
- ansible-playbook mailcow-integration-tests.yml --private-key /drone/src/id_ssh_rsa --diff
|
|
||||||
environment:
|
|
||||||
ANSIBLE_HOST_KEY_CHECKING: false
|
|
||||||
ANSIBLE_FORCE_COLOR: true
|
|
||||||
when:
|
|
||||||
branch:
|
|
||||||
- master
|
|
||||||
- staging
|
|
||||||
event:
|
|
||||||
- push
|
|
||||||
|
|
||||||
- name: delete-server
|
|
||||||
pull: default
|
|
||||||
image: timovibritannia/ansible
|
|
||||||
commands:
|
|
||||||
- ./ci-piprequierments.sh
|
|
||||||
- ansible-playbook mailcow-delete-server.yml --diff
|
|
||||||
environment:
|
|
||||||
ANSIBLE_HOST_KEY_CHECKING: false
|
|
||||||
ANSIBLE_FORCE_COLOR: true
|
|
||||||
when:
|
|
||||||
branch:
|
|
||||||
- master
|
|
||||||
- staging
|
|
||||||
event:
|
|
||||||
- push
|
|
||||||
status:
|
|
||||||
- failure
|
|
||||||
- success
|
|
||||||
|
|
||||||
---
|
|
||||||
kind: signature
|
|
||||||
hmac: f6619243fe2a27563291c9f2a46d93ffbc3b6dced9a05f23e64b555ce03a31e5
|
|
||||||
|
|
||||||
...
|
|
||||||
+1
-1
@@ -1 +1 @@
|
|||||||
custom: https://mailcow.github.io/mailcow-dockerized-docs/#help-mailcow
|
custom: ["https://www.servercow.de/mailcow?lang=en#sal"]
|
||||||
@@ -7,8 +7,8 @@ body:
|
|||||||
label: Contribution guidelines
|
label: Contribution guidelines
|
||||||
description: Please read the contribution guidelines before proceeding.
|
description: Please read the contribution guidelines before proceeding.
|
||||||
options:
|
options:
|
||||||
- label: I've read the [contribution guidelines](https://github.com/mailcow/mailcow-dockerized/blob/master/CONTRIBUTING.md) and wholeheartedly agree
|
- label: I've read the [contribution guidelines](https://github.com/mailcow/mailcow-dockerized/blob/master/CONTRIBUTING.md) and wholeheartedly agree
|
||||||
required: true
|
required: true
|
||||||
- type: checkboxes
|
- type: checkboxes
|
||||||
attributes:
|
attributes:
|
||||||
label: I've found a bug and checked that ...
|
label: I've found a bug and checked that ...
|
||||||
@@ -26,69 +26,132 @@ body:
|
|||||||
attributes:
|
attributes:
|
||||||
label: Description
|
label: Description
|
||||||
description: Please provide a brief description of the bug in 1-2 sentences. If applicable, add screenshots to help explain your problem. Very useful for bugs in mailcow UI.
|
description: Please provide a brief description of the bug in 1-2 sentences. If applicable, add screenshots to help explain your problem. Very useful for bugs in mailcow UI.
|
||||||
|
render: text
|
||||||
validations:
|
validations:
|
||||||
required: true
|
required: true
|
||||||
- type: textarea
|
- type: textarea
|
||||||
attributes:
|
attributes:
|
||||||
label: Logs
|
label: "Logs:"
|
||||||
description: Please take a look at the [official documentation](https://mailcow.github.io/mailcow-dockerized-docs/debug-logs/) and post the last few lines of logs, when the error occurs. For example, docker container logs of affected containers. This will be automatically formatted into code, so no need for backticks.
|
description: "Please take a look at the [official documentation](https://docs.mailcow.email/troubleshooting/debug-logs/) and post the last few lines of logs, when the error occurs. For example, docker container logs of affected containers. This will be automatically formatted into code, so no need for backticks."
|
||||||
render: bash
|
render: text
|
||||||
validations:
|
validations:
|
||||||
required: true
|
required: true
|
||||||
- type: textarea
|
- type: textarea
|
||||||
attributes:
|
attributes:
|
||||||
label: Steps to reproduce
|
label: "Steps to reproduce:"
|
||||||
description: Please describe the steps to reproduce the bug. Screenshots can be added, if helpful.
|
description: "Please describe the steps to reproduce the bug. Screenshots can be added, if helpful."
|
||||||
|
render: text
|
||||||
placeholder: |-
|
placeholder: |-
|
||||||
1. ...
|
1. ...
|
||||||
2. ...
|
2. ...
|
||||||
3. ...
|
3. ...
|
||||||
validations:
|
validations:
|
||||||
required: true
|
required: true
|
||||||
- type: textarea
|
- type: markdown
|
||||||
attributes:
|
attributes:
|
||||||
label: System information
|
value: |
|
||||||
description: In this stage we would kindly ask you to attach general system information about your setup.
|
## System information
|
||||||
value: |-
|
### In this stage we would kindly ask you to attach general system information about your setup.
|
||||||
| Question | Answer |
|
- type: dropdown
|
||||||
| --- | --- |
|
attributes:
|
||||||
| My operating system | I_DO_REPLY_HERE |
|
label: "Which branch are you using?"
|
||||||
| Is Apparmor, SELinux or similar active? | I_DO_REPLY_HERE |
|
description: "#### `git rev-parse --abbrev-ref HEAD`"
|
||||||
| Virtualization technlogy (KVM, VMware, Xen, etc - **LXC and OpenVZ are not supported** | I_DO_REPLY_HERE |
|
multiple: false
|
||||||
| Server/VM specifications (Memory, CPU Cores) | I_DO_REPLY_HERE |
|
options:
|
||||||
| Docker Version (`docker version`) | I_DO_REPLY_HERE |
|
- master
|
||||||
| Docker-Compose Version (`docker-compose version`) | I_DO_REPLY_HERE |
|
- nightly
|
||||||
| Reverse proxy (custom solution) | I_DO_REPLY_HERE |
|
validations:
|
||||||
|
required: true
|
||||||
Output of `git diff origin/master`, any other changes to the code? If so, **please post them**:
|
- type: input
|
||||||
```
|
attributes:
|
||||||
YOUR OUTPUT GOES HERE
|
label: "Operating System:"
|
||||||
```
|
placeholder: "e.g. Ubuntu 22.04 LTS"
|
||||||
|
validations:
|
||||||
All third-party firewalls and custom iptables rules are unsupported. **Please check the Docker docs about how to use Docker with your own ruleset**. Nevertheless, iptabels output can help us to help you:
|
required: true
|
||||||
iptables -L -vn:
|
- type: input
|
||||||
```
|
attributes:
|
||||||
YOUR OUTPUT GOES HERE
|
label: "Server/VM specifications:"
|
||||||
```
|
placeholder: "Memory, CPU Cores"
|
||||||
|
validations:
|
||||||
ip6tables -L -vn:
|
required: true
|
||||||
```
|
- type: input
|
||||||
YOUR OUTPUT GOES HERE
|
attributes:
|
||||||
```
|
label: "Is Apparmor, SELinux or similar active?"
|
||||||
|
placeholder: "yes/no"
|
||||||
iptables -L -vn -t nat:
|
validations:
|
||||||
```
|
required: true
|
||||||
YOUR OUTPUT GOES HERE
|
- type: input
|
||||||
```
|
attributes:
|
||||||
|
label: "Virtualization technology:"
|
||||||
ip6tables -L -vn -t nat:
|
placeholder: "KVM, VMware, Xen, etc - **LXC and OpenVZ are not supported**"
|
||||||
```
|
validations:
|
||||||
YOUR OUTPUT GOES HERE
|
required: true
|
||||||
```
|
- type: input
|
||||||
|
attributes:
|
||||||
DNS problems? Please run `docker exec -it $(docker ps -qf name=acme-mailcow) dig +short stackoverflow.com @172.22.1.254` (set the IP accordingly, if you changed the internal mailcow network) and post the output:
|
label: "Docker version:"
|
||||||
```
|
description: "#### `docker version`"
|
||||||
YOUR OUTPUT GOES HERE
|
placeholder: "20.10.21"
|
||||||
```
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: input
|
||||||
|
attributes:
|
||||||
|
label: "docker-compose version or docker compose version:"
|
||||||
|
description: "#### `docker-compose version` or `docker compose version`"
|
||||||
|
placeholder: "v2.12.2"
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: input
|
||||||
|
attributes:
|
||||||
|
label: "mailcow version:"
|
||||||
|
description: "#### ```git describe --tags `git rev-list --tags --max-count=1` ```"
|
||||||
|
placeholder: "2022-08"
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: input
|
||||||
|
attributes:
|
||||||
|
label: "Reverse proxy:"
|
||||||
|
placeholder: "e.g. Nginx/Traefik"
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: textarea
|
||||||
|
attributes:
|
||||||
|
label: "Logs of git diff:"
|
||||||
|
description: "#### Output of `git diff origin/master`, any other changes to the code? If so, **please post them**:"
|
||||||
|
render: text
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: textarea
|
||||||
|
attributes:
|
||||||
|
label: "Logs of iptables -L -vn:"
|
||||||
|
description: "#### Output of `iptables -L -vn`"
|
||||||
|
render: text
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: textarea
|
||||||
|
attributes:
|
||||||
|
label: "Logs of ip6tables -L -vn:"
|
||||||
|
description: "#### Output of `ip6tables -L -vn`"
|
||||||
|
render: text
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: textarea
|
||||||
|
attributes:
|
||||||
|
label: "Logs of iptables -L -vn -t nat:"
|
||||||
|
description: "#### Output of `iptables -L -vn -t nat`"
|
||||||
|
render: text
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: textarea
|
||||||
|
attributes:
|
||||||
|
label: "Logs of ip6tables -L -vn -t nat:"
|
||||||
|
description: "#### Output of `ip6tables -L -vn -t nat`"
|
||||||
|
render: text
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: textarea
|
||||||
|
attributes:
|
||||||
|
label: "DNS check:"
|
||||||
|
description: "#### Output of `docker exec -it $(docker ps -qf name=acme-mailcow) dig +short stackoverflow.com @172.22.1.254` (set the IP accordingly, if you changed the internal mailcow network)"
|
||||||
|
render: text
|
||||||
validations:
|
validations:
|
||||||
required: true
|
required: true
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
## :memo: Brief description
|
||||||
|
<!-- Diff summary - START -->
|
||||||
|
<!-- Diff summary - END -->
|
||||||
|
|
||||||
|
|
||||||
|
## :computer: Commits
|
||||||
|
<!-- Diff commits - START -->
|
||||||
|
<!-- Diff commits - END -->
|
||||||
|
|
||||||
|
|
||||||
|
## :file_folder: Modified files
|
||||||
|
<!-- Diff files - START -->
|
||||||
|
<!-- Diff files - END -->
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 71 KiB |
@@ -0,0 +1,33 @@
|
|||||||
|
name: Check PRs if on staging
|
||||||
|
on:
|
||||||
|
pull_request_target:
|
||||||
|
types: [opened, edited]
|
||||||
|
permissions: {}
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
is_not_staging:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
if: github.event.pull_request.base.ref != 'staging' #check if the target branch is not staging
|
||||||
|
steps:
|
||||||
|
- name: Send message
|
||||||
|
uses: thollander/actions-comment-pull-request@main
|
||||||
|
with:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.CHECKIFPRISSTAGING_ACTION_PAT }}
|
||||||
|
message: |
|
||||||
|
Thanks for contributing!
|
||||||
|
|
||||||
|
I noticed that you didn't select `staging` as your base branch. Please change the base branch to `staging`.
|
||||||
|
See the attached picture on how to change the base branch to `staging`:
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
- name: Fail #we want to see failed checks in the PR
|
||||||
|
if: ${{ success() }} #set exit code to 1 even if commenting somehow failed
|
||||||
|
run: exit 1
|
||||||
|
|
||||||
|
is_staging:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
if: github.event.pull_request.base.ref == 'staging' #check if the target branch is staging
|
||||||
|
steps:
|
||||||
|
- name: Success
|
||||||
|
run: exit 0
|
||||||
@@ -14,7 +14,7 @@ jobs:
|
|||||||
pull-requests: write
|
pull-requests: write
|
||||||
steps:
|
steps:
|
||||||
- name: Mark/Close Stale Issues and Pull Requests 🗑️
|
- name: Mark/Close Stale Issues and Pull Requests 🗑️
|
||||||
uses: actions/stale@v5.0.0
|
uses: actions/stale@v6.0.1
|
||||||
with:
|
with:
|
||||||
repo-token: ${{ secrets.STALE_ACTION_PAT }}
|
repo-token: ${{ secrets.STALE_ACTION_PAT }}
|
||||||
days-before-stale: 60
|
days-before-stale: 60
|
||||||
@@ -30,6 +30,7 @@ jobs:
|
|||||||
stale-issue-label: "stale"
|
stale-issue-label: "stale"
|
||||||
stale-pr-label: "stale"
|
stale-pr-label: "stale"
|
||||||
exempt-draft-pr: "true"
|
exempt-draft-pr: "true"
|
||||||
|
close-issue-reason: "not_planned"
|
||||||
operations-per-run: "250"
|
operations-per-run: "250"
|
||||||
ascending: "true"
|
ascending: "true"
|
||||||
#DRY-RUN
|
#DRY-RUN
|
||||||
|
|||||||
@@ -0,0 +1,45 @@
|
|||||||
|
name: Build mailcow Docker Images
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: [ "master", "staging" ]
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read # to fetch code (actions/checkout)
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
docker_image_builds:
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
images:
|
||||||
|
- "acme-mailcow"
|
||||||
|
- "clamd-mailcow"
|
||||||
|
- "dockerapi-mailcow"
|
||||||
|
- "dovecot-mailcow"
|
||||||
|
- "netfilter-mailcow"
|
||||||
|
- "olefy-mailcow"
|
||||||
|
- "php-fpm-mailcow"
|
||||||
|
- "postfix-mailcow"
|
||||||
|
- "rspamd-mailcow"
|
||||||
|
- "sogo-mailcow"
|
||||||
|
- "solr-mailcow"
|
||||||
|
- "unbound-mailcow"
|
||||||
|
- "watchdog-mailcow"
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
- name: Setup Docker
|
||||||
|
run: |
|
||||||
|
curl -sSL https://get.docker.com/ | CHANNEL=stable sudo sh
|
||||||
|
sudo service docker start
|
||||||
|
sudo curl -L https://github.com/docker/compose/releases/download/v$(curl -Ls https://www.servercow.de/docker-compose/latest.php)/docker-compose-$(uname -s)-$(uname -m) > /usr/local/bin/docker-compose
|
||||||
|
sudo chmod +x /usr/local/bin/docker-compose
|
||||||
|
- name: Prepair Image Builds
|
||||||
|
run: |
|
||||||
|
cp helper-scripts/docker-compose.override.yml.d/BUILD_FLAGS/docker-compose.override.yml docker-compose.override.yml
|
||||||
|
- name: Build Docker Images
|
||||||
|
run: |
|
||||||
|
docker-compose build ${image}
|
||||||
|
env:
|
||||||
|
image: ${{ matrix.images }}
|
||||||
@@ -0,0 +1,63 @@
|
|||||||
|
name: mailcow Integration Tests
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: [ "master", "staging" ]
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
integration_tests:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Setup Ansible
|
||||||
|
run: |
|
||||||
|
export DEBIAN_FRONTEND=noninteractive
|
||||||
|
sudo apt-get update
|
||||||
|
sudo apt-get install python3 python3-pip git
|
||||||
|
sudo pip3 install ansible
|
||||||
|
- name: Prepair Test Environment
|
||||||
|
run: |
|
||||||
|
git clone https://github.com/mailcow/mailcow-integration-tests.git --branch $(curl -sL https://api.github.com/repos/mailcow/mailcow-integration-tests/releases/latest | jq -r '.tag_name') --single-branch .
|
||||||
|
./fork_check.sh
|
||||||
|
./ci.sh
|
||||||
|
./ci-pip-requirements.sh
|
||||||
|
env:
|
||||||
|
VAULT_PW: ${{ secrets.MAILCOW_TESTS_VAULT_PW }}
|
||||||
|
VAULT_FILE: ${{ secrets.MAILCOW_TESTS_VAULT_FILE }}
|
||||||
|
- name: Start Integration Test Server
|
||||||
|
run: |
|
||||||
|
./fork_check.sh
|
||||||
|
ansible-playbook mailcow-start-server.yml --diff
|
||||||
|
env:
|
||||||
|
PY_COLORS: '1'
|
||||||
|
ANSIBLE_FORCE_COLOR: '1'
|
||||||
|
ANSIBLE_HOST_KEY_CHECKING: 'false'
|
||||||
|
- name: Setup Integration Test Server
|
||||||
|
run: |
|
||||||
|
./fork_check.sh
|
||||||
|
sleep 30
|
||||||
|
ansible-playbook mailcow-setup-server.yml --private-key id_ssh_rsa --diff
|
||||||
|
env:
|
||||||
|
PY_COLORS: '1'
|
||||||
|
ANSIBLE_FORCE_COLOR: '1'
|
||||||
|
ANSIBLE_HOST_KEY_CHECKING: 'false'
|
||||||
|
- name: Run Integration Tests
|
||||||
|
run: |
|
||||||
|
./fork_check.sh
|
||||||
|
ansible-playbook mailcow-integration-tests.yml --private-key id_ssh_rsa --diff
|
||||||
|
env:
|
||||||
|
PY_COLORS: '1'
|
||||||
|
ANSIBLE_FORCE_COLOR: '1'
|
||||||
|
ANSIBLE_HOST_KEY_CHECKING: 'false'
|
||||||
|
- name: Delete Integration Test Server
|
||||||
|
if: always()
|
||||||
|
run: |
|
||||||
|
./fork_check.sh
|
||||||
|
ansible-playbook mailcow-delete-server.yml --diff
|
||||||
|
env:
|
||||||
|
PY_COLORS: '1'
|
||||||
|
ANSIBLE_FORCE_COLOR: '1'
|
||||||
|
ANSIBLE_HOST_KEY_CHECKING: 'false'
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
name: Create PR to merge to nightly from staging
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- staging
|
||||||
|
jobs:
|
||||||
|
action-pull-request:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout repository
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
with:
|
||||||
|
fetch-depth: 0
|
||||||
|
- name: Run the Action
|
||||||
|
uses: devops-infra/action-pull-request@v0.5.3
|
||||||
|
with:
|
||||||
|
github_token: ${{ secrets.PRTONIGHTLY_ACTION_PAT }}
|
||||||
|
title: Automatic PR to nightly from ${{ github.event.repository.updated_at}}
|
||||||
|
assignee: DerLinkman
|
||||||
|
source_branch: staging
|
||||||
|
target_branch: nightly
|
||||||
|
reviewer: DerLinkman
|
||||||
|
label: upstream
|
||||||
|
template: .github/ISSUE_TEMPLATE/pr_to_nighty_template.yml
|
||||||
|
get_diff: true
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
name: Build mailcow backup image
|
||||||
|
|
||||||
|
on:
|
||||||
|
schedule:
|
||||||
|
# At 00:00 on Sunday
|
||||||
|
- cron: "0 0 * * 0"
|
||||||
|
workflow_dispatch: # Allow to run workflow manually
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
docker_image_build:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
|
||||||
|
- name: Set up QEMU
|
||||||
|
uses: docker/setup-qemu-action@v2
|
||||||
|
|
||||||
|
- name: Set up Docker Buildx
|
||||||
|
uses: docker/setup-buildx-action@v2
|
||||||
|
|
||||||
|
- name: Login to Docker Hub
|
||||||
|
uses: docker/login-action@v2
|
||||||
|
with:
|
||||||
|
username: ${{ secrets.BACKUPIMAGEBUILD_ACTION_DOCKERHUB_USERNAME }}
|
||||||
|
password: ${{ secrets.BACKUPIMAGEBUILD_ACTION_DOCKERHUB_TOKEN }}
|
||||||
|
|
||||||
|
- name: Build and push
|
||||||
|
uses: docker/build-push-action@v3
|
||||||
|
with:
|
||||||
|
context: .
|
||||||
|
file: data/Dockerfiles/backup/Dockerfile
|
||||||
|
push: true
|
||||||
|
tags: mailcow/backup:latest
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
name: "Tweet trigger release"
|
||||||
|
on:
|
||||||
|
release:
|
||||||
|
types: [published]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
tweet:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: "Get Release Tag"
|
||||||
|
run: |
|
||||||
|
RELEASE_TAG=$(curl https://api.github.com/repos/mailcow/mailcow-dockerized/releases/latest | jq -r '.tag_name')
|
||||||
|
- name: Tweet-trigger-publish-release
|
||||||
|
uses: mugi111/tweet-trigger-release@v1.1
|
||||||
|
with:
|
||||||
|
consumer_key: ${{ secrets.CONSUMER_KEY }}
|
||||||
|
consumer_secret: ${{ secrets.CONSUMER_SECRET }}
|
||||||
|
access_token_key: ${{ secrets.ACCESS_TOKEN_KEY }}
|
||||||
|
access_token_secret: ${{ secrets.ACCESS_TOKEN_SECRET }}
|
||||||
|
tweet_body: 'A new mailcow update has just been released! Checkout the GitHub Page for changelog and more informations: https://github.com/mailcow/mailcow-dockerized/releases/latest'
|
||||||
-16
@@ -1,16 +0,0 @@
|
|||||||
sudo: required
|
|
||||||
services:
|
|
||||||
- docker
|
|
||||||
script:
|
|
||||||
- echo 'Europe/Berlin' | MAILCOW_HOSTNAME=build.mailcow ./generate_config.sh
|
|
||||||
- docker-compose pull --ignore-pull-failures --parallel
|
|
||||||
- docker-compose build
|
|
||||||
- docker login --username=$DOCKER_HUB_USERNAME --password=$DOCKER_HUB_PASSWORD
|
|
||||||
- docker-compose push
|
|
||||||
branches:
|
|
||||||
only:
|
|
||||||
- master_disabled
|
|
||||||
env:
|
|
||||||
global:
|
|
||||||
- secure: MpxpTwD7f0CNEVLitSpVmocK7O9r+BwFE1deEHK4AlQo/oc9cOlhGe1EL3mx9zbglPmjlDg/8kMUGv6vSirIabfBo9Szjps76bHckFr9lr2Ykkg0e29oC8pgPpSXD1eY/1ZIN/FvIkxpUFLETo1okS/j9q/A0DCGFmti0n3EoMORsgRz9CpNAiEh0zpSd6+euPAGHuczuCrDuO84my9bIOCjA/+aPunHNeXiuM8yIM2SxCSyGtIKT0+jvquIvLF58VxivysXBlRfhDn8fhB09nXA2Ru/derYQACfcmNSn9Pd4bDpebPJW5B9H/XA8xjb58uKinUlncbAMB/QnxoT75j9YRWJZRSQ+34XNYP6ZgK9soZ2TC6djQyEKTUu45Kp/1s+poSn42m9jytJJTmmK0KxsZTRcC8JD5nrjIMZWPUNNTwC5L4+I7ZRWg2WooK3LNyq1Ng8Hn6W77wSgsvAJw2HD3Lx58AprGUhHuBeaIZRuSN9aKwZrl9vKQJLqPnOp/nF2EC6kot5HYYtcotGtETXPUDih21gWD5ZM2BqVqYfQQnJnNMgeYmMdj6QQuTFqhuNJf7hXRIRkTnD3j1gDOLKQZazW0+N2JE8XWDFwi6fKScDsxT85lJti9HmzHa7+k4RVHmUYuDgRoPuzUgjWHvPsiz3/Z8WQ9JYpH84S8w=
|
|
||||||
- secure: fWzZisT6nGDNL4lf6tXB07eFG2drgBakHxzdF/NFVvzuP861RFR6omuL+ED0PgXrEHDJBxaBLv52je8irmUXrAH1CNr7T8DWiZo/h5h609Uzr+38T1NnIu4krL0Wo6/CDwlLKnzqTq9yBIZLQSHVJmo8AOpo1JPIi2ajodqj9ZfmAxDQTQl+G6zvQjtqIkYHsHY7A44Rto0f14ykn7w2S82Jn6Ry89VNI5V1WEO3sMpM/XekNP/HokNcRIuntL/0+kuLvTJ5akGoTjBQxSnSW95opzPeGky74HRU2obExJYqKvF0VfVJRNAqejwjIiFIbbjqV0Sk5391kFuhuBErQQDM1bOHGdxZ41HsJH29qNWIl7C33Yl10qERoqecgsJ1N/bS2ZEmWqm/zQh5GClCXPvYmzEqMYsMGM3vjbKdjDlc1Wh2w/eFclsXN9LSXh1mc35rtj46frcT6e5Kof87AIfC9hTgDvk9kAsyjaHMkSHSZthbZXCIcsD8qriNm5UqfFBYD79mPIP1S2YMQ2jscCsjHOZgYVrcm0kzDF21J1w6H0Lo7d1jw37LYlegBdtLQ9gYgqY2D5m+nxWuVoD5FZmpR+5JGtK+ootyLFF8aiFoHXd4op1JCxRLjgkmnZKXzw3kTQSpE7oa7CgzchtQmK2nqcqla1b5Qk7ilVcjooo=
|
|
||||||
@@ -1,8 +1,7 @@
|
|||||||
# mailcow: dockerized - 🐮 + 🐋 = 💕
|
# mailcow: dockerized - 🐮 + 🐋 = 💕
|
||||||
|
|
||||||
## We stand with 🇺🇦
|
[](https://github.com/mailcow/mailcow-dockerized/actions/workflows/integration_tests.yml)
|
||||||
|
[](https://translate.mailcow.email/engage/mailcow-dockerized/)
|
||||||
[](https://drone.mailcow.email/mailcow/mailcow-dockerized) [](https://drone.mailcow.email/mailcow/mailcow-dockerized) [](https://translate.mailcow.email/engage/mailcow-dockerized/)
|
|
||||||
[](https://twitter.com/mailcow_email)
|
[](https://twitter.com/mailcow_email)
|
||||||
|
|
||||||
## Want to support mailcow?
|
## Want to support mailcow?
|
||||||
@@ -35,3 +34,9 @@ Telegram desktop clients are available for [multiple platforms](https://desktop.
|
|||||||
|
|
||||||
**Important**: mailcow makes use of various open-source software. Please assure you agree with their license before using mailcow.
|
**Important**: mailcow makes use of various open-source software. Please assure you agree with their license before using mailcow.
|
||||||
Any part of mailcow itself is released under **GNU General Public License, Version 3**.
|
Any part of mailcow itself is released under **GNU General Public License, Version 3**.
|
||||||
|
|
||||||
|
mailcow is a registered word mark of The Infrastructure Company GmbH, Parkstr. 42, 47877 Willich, Germany.
|
||||||
|
|
||||||
|
The project is managed and maintained by The Infrastructure Company GmbH.
|
||||||
|
|
||||||
|
Originated from @andryyy (André)
|
||||||
+42
@@ -0,0 +1,42 @@
|
|||||||
|
# Security Policies and Procedures
|
||||||
|
|
||||||
|
This document outlines security procedures and general policies for the _mailcow: dockerized_ project as found on [mailcow-dockerized](https://github.com/mailcow/mailcow-dockerized).
|
||||||
|
|
||||||
|
* [Reporting a Vulnerability](#reporting-a-vulnerability)
|
||||||
|
* [Disclosure Policy](#disclosure-policy)
|
||||||
|
* [Comments on this Policy](#comments-on-this-policy)
|
||||||
|
|
||||||
|
## Reporting a Vulnerability
|
||||||
|
|
||||||
|
The mailcow team and community take all security vulnerabilities
|
||||||
|
seriously. Thank you for improving the security of our open source
|
||||||
|
software. We appreciate your efforts and responsible disclosure and will
|
||||||
|
make every effort to acknowledge your contributions.
|
||||||
|
|
||||||
|
Report security vulnerabilities by emailing the mailcow team at:
|
||||||
|
|
||||||
|
info at servercow.de
|
||||||
|
|
||||||
|
mailcow team will acknowledge your email as soon as possible, and will
|
||||||
|
send a more detailed response afterwards indicating the next steps in
|
||||||
|
handling your report. After the initial reply to your report, the mailcow
|
||||||
|
team will endeavor to keep you informed of the progress towards a fix and
|
||||||
|
full announcement, and may ask for additional information or guidance.
|
||||||
|
|
||||||
|
Report security vulnerabilities in third-party modules to the person or
|
||||||
|
team maintaining the module.
|
||||||
|
|
||||||
|
## Disclosure Policy
|
||||||
|
|
||||||
|
When the mailcow team receives a security bug report, they will assign it
|
||||||
|
to a primary handler. This person will coordinate the fix and release
|
||||||
|
process, involving the following steps:
|
||||||
|
|
||||||
|
* Confirm the problem and determine the affected versions.
|
||||||
|
* Audit code to find any potential similar problems.
|
||||||
|
* Prepare fixes for all releases still under maintenance.
|
||||||
|
|
||||||
|
## Comments on this Policy
|
||||||
|
|
||||||
|
If you have suggestions on how this process could be improved please submit a
|
||||||
|
pull request.
|
||||||
Regular → Executable
File mode changed.
@@ -1,4 +1,4 @@
|
|||||||
FROM alpine:3.15
|
FROM alpine:3.16
|
||||||
|
|
||||||
LABEL maintainer "Andre Peters <andre.peters@servercow.de>"
|
LABEL maintainer "Andre Peters <andre.peters@servercow.de>"
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,3 @@
|
|||||||
|
FROM debian:bullseye-slim
|
||||||
|
|
||||||
|
RUN apt update && apt install pigz
|
||||||
@@ -1,76 +1,21 @@
|
|||||||
FROM debian:bullseye-slim
|
FROM clamav/clamav:0.105.1_base
|
||||||
|
|
||||||
LABEL maintainer "André Peters <andre.peters@servercow.de>"
|
LABEL maintainer "André Peters <andre.peters@servercow.de>"
|
||||||
|
|
||||||
ARG CLAMAV=0.104.2
|
RUN apk upgrade --no-cache \
|
||||||
ARG TINI_VERSION=v0.19.0
|
&& apk add --update --no-cache \
|
||||||
|
|
||||||
RUN apt-get update && apt-get install -y --no-install-recommends \
|
|
||||||
ca-certificates \
|
|
||||||
build-essential \
|
|
||||||
pkg-config \
|
|
||||||
python3 \
|
|
||||||
python3-pip \
|
|
||||||
valgrind \
|
|
||||||
check \
|
|
||||||
libbz2-dev \
|
|
||||||
libcurl4-openssl-dev \
|
|
||||||
libjson-c-dev \
|
|
||||||
libmilter-dev \
|
|
||||||
libncurses5-dev \
|
|
||||||
libpcre2-dev \
|
|
||||||
libssl-dev \
|
|
||||||
libxml2-dev \
|
|
||||||
zlib1g-dev \
|
|
||||||
curl \
|
|
||||||
bash \
|
|
||||||
wget \
|
|
||||||
tzdata \
|
|
||||||
dnsutils \
|
|
||||||
rsync \
|
rsync \
|
||||||
dos2unix \
|
bind-tools \
|
||||||
netcat \
|
bash
|
||||||
&& python3 -m pip install cmake \
|
|
||||||
&& rm -rf /var/lib/apt/lists/* \
|
|
||||||
&& wget -O - https://www.clamav.net/downloads/production/clamav-${CLAMAV}.tar.gz | tar xfvz - \
|
|
||||||
&& cd clamav-${CLAMAV} \
|
|
||||||
&& cmake . \
|
|
||||||
-D CMAKE_INSTALL_PREFIX=/usr \
|
|
||||||
-D CMAKE_INSTALL_LIBDIR=/usr/lib \
|
|
||||||
-D APP_CONFIG_DIRECTORY=/etc/clamav \
|
|
||||||
-D CMAKE_INSTALL_MANDIR=/usr/share/man \
|
|
||||||
-D CMAKE_INSTALL_INFODIR=/usr/share/info \
|
|
||||||
-D CLAMAV_USER=clamav \
|
|
||||||
-D CLAMAV_GROUP=clamav \
|
|
||||||
-D DATABASE_DIRECTORY=/var/lib/clamav \
|
|
||||||
-D ENABLE_APP=ON \
|
|
||||||
-D ENABLE_JSON_SHARED=OFF \
|
|
||||||
-D CMAKE_BUILD_TYPE=MinSizeRel \
|
|
||||||
&& cmake --build . -j4 \
|
|
||||||
&& cmake --build . --target install \
|
|
||||||
&& cd .. && rm -rf clamav-${CLAMAV} \
|
|
||||||
&& apt-get -y --auto-remove purge build-essential \
|
|
||||||
&& apt-get -y purge pkg-config \
|
|
||||||
python3 \
|
|
||||||
python3-pip \
|
|
||||||
valgrind \
|
|
||||||
check \
|
|
||||||
libbz2-dev \
|
|
||||||
libcurl4-openssl-dev \
|
|
||||||
libjson-c-dev \
|
|
||||||
libmilter-dev \
|
|
||||||
libncurses5-dev \
|
|
||||||
libpcre2-dev \
|
|
||||||
libssl-dev \
|
|
||||||
libxml2-dev \
|
|
||||||
zlib1g-dev \
|
|
||||||
|
|
||||||
&& addgroup --system --gid 700 clamav \
|
# init
|
||||||
&& adduser --system --no-create-home --home /var/lib/clamav --uid 700 --gid 700 --disabled-login clamav \
|
COPY clamd.sh /clamd.sh
|
||||||
&& rm -rf /tmp/* /var/tmp/*
|
|
||||||
|
|
||||||
COPY clamd.sh ./
|
|
||||||
ADD https://github.com/krallin/tini/releases/download/${TINI_VERSION}/tini /sbin/tini
|
|
||||||
RUN chmod +x /sbin/tini
|
RUN chmod +x /sbin/tini
|
||||||
|
|
||||||
|
# healthcheck
|
||||||
|
COPY healthcheck.sh /healthcheck.sh
|
||||||
|
RUN chmod +x /healthcheck.sh
|
||||||
|
HEALTHCHECK --start-period=6m CMD "/healthcheck.sh"
|
||||||
|
|
||||||
|
ENTRYPOINT []
|
||||||
CMD ["/sbin/tini", "-g", "--", "/clamd.sh"]
|
CMD ["/sbin/tini", "-g", "--", "/clamd.sh"]
|
||||||
Executable
+9
@@ -0,0 +1,9 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
if [[ "${SKIP_CLAMD}" =~ ^([yY][eE][sS]|[yY])+$ ]]; then
|
||||||
|
echo "SKIP_CLAMD=y, skipping ClamAV..."
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
# run clamd healthcheck
|
||||||
|
/usr/local/bin/clamdcheck.sh
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
FROM alpine:3.15
|
FROM alpine:3.16
|
||||||
|
|
||||||
LABEL maintainer "Andre Peters <andre.peters@servercow.de>"
|
LABEL maintainer "Andre Peters <andre.peters@servercow.de>"
|
||||||
|
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ FROM debian:bullseye-slim
|
|||||||
LABEL maintainer "Andre Peters <andre.peters@servercow.de>"
|
LABEL maintainer "Andre Peters <andre.peters@servercow.de>"
|
||||||
|
|
||||||
ARG DEBIAN_FRONTEND=noninteractive
|
ARG DEBIAN_FRONTEND=noninteractive
|
||||||
ARG DOVECOT=2.3.18
|
ARG DOVECOT=2.3.19.1
|
||||||
ENV LC_ALL C
|
ENV LC_ALL C
|
||||||
ENV GOSU_VERSION 1.14
|
ENV GOSU_VERSION 1.14
|
||||||
|
|
||||||
|
|||||||
@@ -307,6 +307,7 @@ namespace {
|
|||||||
}
|
}
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
|
|
||||||
cat <<EOF > /etc/dovecot/sogo_trusted_ip.conf
|
cat <<EOF > /etc/dovecot/sogo_trusted_ip.conf
|
||||||
# Autogenerated by mailcow
|
# Autogenerated by mailcow
|
||||||
remote ${IPV4_NETWORK}.248 {
|
remote ${IPV4_NETWORK}.248 {
|
||||||
@@ -349,6 +350,14 @@ sievec /var/vmail/sieve/global_sieve_after.sieve
|
|||||||
sievec /usr/lib/dovecot/sieve/report-spam.sieve
|
sievec /usr/lib/dovecot/sieve/report-spam.sieve
|
||||||
sievec /usr/lib/dovecot/sieve/report-ham.sieve
|
sievec /usr/lib/dovecot/sieve/report-ham.sieve
|
||||||
|
|
||||||
|
for file in /var/vmail/*/*/sieve/*.sieve ; do
|
||||||
|
if [[ "$file" == "/var/vmail/*/*/sieve/*.sieve" ]]; then
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
sievec "$file" "$(dirname "$file")/../.dovecot.svbin"
|
||||||
|
chown vmail:vmail "$(dirname "$file")/../.dovecot.svbin"
|
||||||
|
done
|
||||||
|
|
||||||
# Fix permissions
|
# Fix permissions
|
||||||
chown root:root /etc/dovecot/sql/*.conf
|
chown root:root /etc/dovecot/sql/*.conf
|
||||||
chown root:dovecot /etc/dovecot/sql/dovecot-dict-sql-sieve* /etc/dovecot/sql/dovecot-dict-sql-quota* /etc/dovecot/lua/passwd-verify.lua
|
chown root:dovecot /etc/dovecot/sql/dovecot-dict-sql-sieve* /etc/dovecot/sql/dovecot-dict-sql-quota* /etc/dovecot/lua/passwd-verify.lua
|
||||||
|
|||||||
@@ -50,7 +50,7 @@ try:
|
|||||||
def query_mysql(query, headers = True, update = False):
|
def query_mysql(query, headers = True, update = False):
|
||||||
while True:
|
while True:
|
||||||
try:
|
try:
|
||||||
cnx = mysql.connector.connect(unix_socket = '/var/run/mysqld/mysqld.sock', user=os.environ.get('DBUSER'), passwd=os.environ.get('DBPASS'), database=os.environ.get('DBNAME'), charset="utf8")
|
cnx = mysql.connector.connect(unix_socket = '/var/run/mysqld/mysqld.sock', user=os.environ.get('DBUSER'), passwd=os.environ.get('DBPASS'), database=os.environ.get('DBNAME'), charset="utf8mb4", collation="utf8mb4_general_ci")
|
||||||
except Exception as ex:
|
except Exception as ex:
|
||||||
print('%s - trying again...' % (ex))
|
print('%s - trying again...' % (ex))
|
||||||
time.sleep(3)
|
time.sleep(3)
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
FROM alpine:3.15
|
FROM alpine:3.16
|
||||||
LABEL maintainer "Andre Peters <andre.peters@servercow.de>"
|
LABEL maintainer "Andre Peters <andre.peters@servercow.de>"
|
||||||
|
|
||||||
ENV XTABLES_LIBDIR /usr/lib/xtables
|
ENV XTABLES_LIBDIR /usr/lib/xtables
|
||||||
|
|||||||
@@ -94,7 +94,7 @@ def refreshF2bregex():
|
|||||||
f2bregex = {}
|
f2bregex = {}
|
||||||
f2bregex[1] = 'mailcow UI: Invalid password for .+ by ([0-9a-f\.:]+)'
|
f2bregex[1] = 'mailcow UI: Invalid password for .+ by ([0-9a-f\.:]+)'
|
||||||
f2bregex[2] = 'Rspamd UI: Invalid password by ([0-9a-f\.:]+)'
|
f2bregex[2] = 'Rspamd UI: Invalid password by ([0-9a-f\.:]+)'
|
||||||
f2bregex[3] = 'warning: .*\[([0-9a-f\.:]+)\]: SASL .+ authentication failed'
|
f2bregex[3] = 'warning: .*\[([0-9a-f\.:]+)\]: SASL .+ authentication failed: (?!.*Connection lost to authentication server).+'
|
||||||
f2bregex[4] = 'warning: non-SMTP command from .*\[([0-9a-f\.:]+)]:.+'
|
f2bregex[4] = 'warning: non-SMTP command from .*\[([0-9a-f\.:]+)]:.+'
|
||||||
f2bregex[5] = 'NOQUEUE: reject: RCPT from \[([0-9a-f\.:]+)].+Protocol error.+'
|
f2bregex[5] = 'NOQUEUE: reject: RCPT from \[([0-9a-f\.:]+)].+Protocol error.+'
|
||||||
f2bregex[6] = '-login: Disconnected \(auth failed, .+\): user=.*, method=.+, rip=([0-9a-f\.:]+),'
|
f2bregex[6] = '-login: Disconnected \(auth failed, .+\): user=.*, method=.+, rip=([0-9a-f\.:]+),'
|
||||||
@@ -346,6 +346,8 @@ def snat4(snat_target):
|
|||||||
rule.dst = '!' + rule.src
|
rule.dst = '!' + rule.src
|
||||||
target = rule.create_target("SNAT")
|
target = rule.create_target("SNAT")
|
||||||
target.to_source = snat_target
|
target.to_source = snat_target
|
||||||
|
match = rule.create_match("comment")
|
||||||
|
match.comment = f'{int(round(time.time()))}'
|
||||||
return rule
|
return rule
|
||||||
|
|
||||||
while not quit_now:
|
while not quit_now:
|
||||||
@@ -356,16 +358,23 @@ def snat4(snat_target):
|
|||||||
table.refresh()
|
table.refresh()
|
||||||
chain = iptc.Chain(table, 'POSTROUTING')
|
chain = iptc.Chain(table, 'POSTROUTING')
|
||||||
table.autocommit = False
|
table.autocommit = False
|
||||||
if get_snat4_rule() not in chain.rules:
|
new_rule = get_snat4_rule()
|
||||||
logCrit('Added POSTROUTING rule for source network %s to SNAT target %s' % (get_snat4_rule().src, snat_target))
|
for position, rule in enumerate(chain.rules):
|
||||||
chain.insert_rule(get_snat4_rule())
|
match = all((
|
||||||
table.commit()
|
new_rule.get_src() == rule.get_src(),
|
||||||
else:
|
new_rule.get_dst() == rule.get_dst(),
|
||||||
for position, item in enumerate(chain.rules):
|
new_rule.target.parameters == rule.target.parameters,
|
||||||
if item == get_snat4_rule():
|
new_rule.target.name == rule.target.name
|
||||||
if position != 0:
|
))
|
||||||
chain.delete_rule(get_snat4_rule())
|
if position == 0:
|
||||||
table.commit()
|
if not match:
|
||||||
|
logInfo(f'Added POSTROUTING rule for source network {new_rule.src} to SNAT target {snat_target}')
|
||||||
|
chain.insert_rule(new_rule)
|
||||||
|
else:
|
||||||
|
if match:
|
||||||
|
logInfo(f'Remove rule for source network {new_rule.src} to SNAT target {snat_target} from POSTROUTING chain at position {position}')
|
||||||
|
chain.delete_rule(rule)
|
||||||
|
table.commit()
|
||||||
table.autocommit = True
|
table.autocommit = True
|
||||||
except:
|
except:
|
||||||
print('Error running SNAT4, retrying...')
|
print('Error running SNAT4, retrying...')
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
FROM alpine:3.15
|
FROM alpine:3.16
|
||||||
LABEL maintainer "Andre Peters <andre.peters@servercow.de>"
|
LABEL maintainer "Andre Peters <andre.peters@servercow.de>"
|
||||||
|
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
FROM php:8.0-fpm-alpine3.14
|
FROM php:8.1-fpm-alpine3.16
|
||||||
LABEL maintainer "Andre Peters <andre.peters@servercow.de>"
|
LABEL maintainer "Andre Peters <andre.peters@servercow.de>"
|
||||||
|
|
||||||
ENV APCU_PECL 5.1.20
|
ENV APCU_PECL 5.1.22
|
||||||
ENV IMAGICK_PECL 3.5.1
|
ENV IMAGICK_PECL 3.7.0
|
||||||
# Mailparse is pulled from master branch
|
ENV MAILPARSE_PECL 3.1.4
|
||||||
#ENV MAILPARSE_PECL 3.0.2
|
ENV MEMCACHED_PECL 3.2.0
|
||||||
ENV MEMCACHED_PECL 3.1.5
|
ENV REDIS_PECL 5.3.7
|
||||||
ENV REDIS_PECL 5.3.4
|
ENV COMPOSER 2.4.4
|
||||||
|
|
||||||
RUN apk add -U --no-cache autoconf \
|
RUN apk add -U --no-cache autoconf \
|
||||||
aspell-dev \
|
aspell-dev \
|
||||||
@@ -18,6 +18,7 @@ RUN apk add -U --no-cache autoconf \
|
|||||||
freetype-dev \
|
freetype-dev \
|
||||||
g++ \
|
g++ \
|
||||||
git \
|
git \
|
||||||
|
gettext \
|
||||||
gettext-dev \
|
gettext-dev \
|
||||||
gmp-dev \
|
gmp-dev \
|
||||||
gnupg \
|
gnupg \
|
||||||
@@ -27,8 +28,11 @@ RUN apk add -U --no-cache autoconf \
|
|||||||
imagemagick-dev \
|
imagemagick-dev \
|
||||||
imap-dev \
|
imap-dev \
|
||||||
jq \
|
jq \
|
||||||
|
libavif \
|
||||||
|
libavif-dev \
|
||||||
libjpeg-turbo \
|
libjpeg-turbo \
|
||||||
libjpeg-turbo-dev \
|
libjpeg-turbo-dev \
|
||||||
|
libmemcached \
|
||||||
libmemcached-dev \
|
libmemcached-dev \
|
||||||
libpng \
|
libpng \
|
||||||
libpng-dev \
|
libpng-dev \
|
||||||
@@ -38,7 +42,9 @@ RUN apk add -U --no-cache autoconf \
|
|||||||
libtool \
|
libtool \
|
||||||
libwebp-dev \
|
libwebp-dev \
|
||||||
libxml2-dev \
|
libxml2-dev \
|
||||||
|
libxpm \
|
||||||
libxpm-dev \
|
libxpm-dev \
|
||||||
|
libzip \
|
||||||
libzip-dev \
|
libzip-dev \
|
||||||
make \
|
make \
|
||||||
mysql-client \
|
mysql-client \
|
||||||
@@ -49,22 +55,24 @@ RUN apk add -U --no-cache autoconf \
|
|||||||
samba-client \
|
samba-client \
|
||||||
zlib-dev \
|
zlib-dev \
|
||||||
tzdata \
|
tzdata \
|
||||||
&& git clone https://github.com/php/pecl-mail-mailparse \
|
&& pecl install mailparse-${MAILPARSE_PECL} \
|
||||||
&& cd pecl-mail-mailparse \
|
&& pecl install redis-${REDIS_PECL} \
|
||||||
&& pecl install package.xml \
|
&& pecl install memcached-${MEMCACHED_PECL} \
|
||||||
&& cd .. \
|
&& pecl install APCu-${APCU_PECL} \
|
||||||
&& rm -r pecl-mail-mailparse \
|
&& pecl install imagick-${IMAGICK_PECL} \
|
||||||
&& pecl install redis-${REDIS_PECL} memcached-${MEMCACHED_PECL} APCu-${APCU_PECL} imagick-${IMAGICK_PECL} \
|
|
||||||
&& docker-php-ext-enable apcu imagick memcached mailparse redis \
|
&& docker-php-ext-enable apcu imagick memcached mailparse redis \
|
||||||
&& pecl clear-cache \
|
&& pecl clear-cache \
|
||||||
&& docker-php-ext-configure intl \
|
&& docker-php-ext-configure intl \
|
||||||
&& docker-php-ext-configure exif \
|
&& docker-php-ext-configure exif \
|
||||||
&& docker-php-ext-configure gd --with-freetype=/usr/include/ \
|
&& docker-php-ext-configure gd --with-freetype=/usr/include/ \
|
||||||
--with-jpeg=/usr/include/ \
|
--with-jpeg=/usr/include/ \
|
||||||
|
--with-webp \
|
||||||
|
--with-xpm \
|
||||||
|
--with-avif \
|
||||||
&& docker-php-ext-install -j 4 exif gd gettext intl ldap opcache pcntl pdo pdo_mysql pspell soap sockets zip bcmath gmp \
|
&& docker-php-ext-install -j 4 exif gd gettext intl ldap opcache pcntl pdo pdo_mysql pspell soap sockets zip bcmath gmp \
|
||||||
&& docker-php-ext-configure imap --with-imap --with-imap-ssl \
|
&& docker-php-ext-configure imap --with-imap --with-imap-ssl \
|
||||||
&& docker-php-ext-install -j 4 imap \
|
&& docker-php-ext-install -j 4 imap \
|
||||||
&& curl --silent --show-error https://getcomposer.org/installer | php \
|
&& curl --silent --show-error https://getcomposer.org/installer | php -- --version=${COMPOSER} \
|
||||||
&& mv composer.phar /usr/local/bin/composer \
|
&& mv composer.phar /usr/local/bin/composer \
|
||||||
&& chmod +x /usr/local/bin/composer \
|
&& chmod +x /usr/local/bin/composer \
|
||||||
&& apk del --purge autoconf \
|
&& apk del --purge autoconf \
|
||||||
@@ -72,15 +80,21 @@ RUN apk add -U --no-cache autoconf \
|
|||||||
cyrus-sasl-dev \
|
cyrus-sasl-dev \
|
||||||
freetype-dev \
|
freetype-dev \
|
||||||
g++ \
|
g++ \
|
||||||
|
gettext-dev \
|
||||||
icu-dev \
|
icu-dev \
|
||||||
imagemagick-dev \
|
imagemagick-dev \
|
||||||
imap-dev \
|
imap-dev \
|
||||||
|
libavif-dev \
|
||||||
libjpeg-turbo-dev \
|
libjpeg-turbo-dev \
|
||||||
|
libmemcached-dev \
|
||||||
libpng-dev \
|
libpng-dev \
|
||||||
libressl-dev \
|
libressl-dev \
|
||||||
libwebp-dev \
|
libwebp-dev \
|
||||||
libxml2-dev \
|
libxml2-dev \
|
||||||
|
libxpm-dev \
|
||||||
|
libzip-dev \
|
||||||
make \
|
make \
|
||||||
|
openldap-dev \
|
||||||
pcre-dev \
|
pcre-dev \
|
||||||
zlib-dev
|
zlib-dev
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
FROM debian:buster-slim
|
FROM debian:bullseye-slim
|
||||||
LABEL maintainer "Andre Peters <andre.peters@servercow.de>"
|
LABEL maintainer "Andre Peters <andre.peters@servercow.de>"
|
||||||
|
|
||||||
ARG DEBIAN_FRONTEND=noninteractive
|
ARG DEBIAN_FRONTEND=noninteractive
|
||||||
|
|||||||
@@ -323,7 +323,19 @@ hosts = unix:/var/run/mysqld/mysqld.sock
|
|||||||
dbname = ${DBNAME}
|
dbname = ${DBNAME}
|
||||||
# First select queries domain and alias_domain to determine if domains are active.
|
# First select queries domain and alias_domain to determine if domains are active.
|
||||||
query = SELECT goto FROM alias
|
query = SELECT goto FROM alias
|
||||||
WHERE address='%s'
|
WHERE id IN (
|
||||||
|
SELECT COALESCE (
|
||||||
|
(
|
||||||
|
SELECT id FROM alias
|
||||||
|
WHERE address='%s'
|
||||||
|
AND (active='1' OR active='2')
|
||||||
|
), (
|
||||||
|
SELECT id FROM alias
|
||||||
|
WHERE address='@%d'
|
||||||
|
AND (active='1' OR active='2')
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
AND active='1'
|
AND active='1'
|
||||||
AND (domain IN
|
AND (domain IN
|
||||||
(SELECT domain FROM domain
|
(SELECT domain FROM domain
|
||||||
@@ -354,7 +366,7 @@ query = SELECT goto FROM alias
|
|||||||
WHERE alias_domain.alias_domain = '%d'
|
WHERE alias_domain.alias_domain = '%d'
|
||||||
AND mailbox.username = CONCAT('%u','@',alias_domain.target_domain)
|
AND mailbox.username = CONCAT('%u','@',alias_domain.target_domain)
|
||||||
AND (mailbox.active = '1' OR mailbox.active ='2')
|
AND (mailbox.active = '1' OR mailbox.active ='2')
|
||||||
AND alias_domain.active='1'
|
AND alias_domain.active='1';
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
# MX based routing
|
# MX based routing
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
@version: 3.19
|
@version: 3.28
|
||||||
@include "scl.conf"
|
@include "scl.conf"
|
||||||
options {
|
options {
|
||||||
chain_hostnames(off);
|
chain_hostnames(off);
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
@version: 3.19
|
@version: 3.28
|
||||||
@include "scl.conf"
|
@include "scl.conf"
|
||||||
options {
|
options {
|
||||||
chain_hostnames(off);
|
chain_hostnames(off);
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ FROM debian:bullseye-slim
|
|||||||
LABEL maintainer "Andre Peters <andre.peters@servercow.de>"
|
LABEL maintainer "Andre Peters <andre.peters@servercow.de>"
|
||||||
|
|
||||||
ARG DEBIAN_FRONTEND=noninteractive
|
ARG DEBIAN_FRONTEND=noninteractive
|
||||||
ARG SOGO_DEBIAN_REPOSITORY=http://packages.inverse.ca/SOGo/nightly/5/debian/
|
ARG SOGO_DEBIAN_REPOSITORY=http://packages.sogo.nu/nightly/5/debian/
|
||||||
ENV LC_ALL C
|
ENV LC_ALL C
|
||||||
ENV GOSU_VERSION 1.14
|
ENV GOSU_VERSION 1.14
|
||||||
|
|
||||||
@@ -30,7 +30,7 @@ RUN echo "Building from repository $SOGO_DEBIAN_REPOSITORY" \
|
|||||||
&& gosu nobody true \
|
&& gosu nobody true \
|
||||||
&& mkdir /usr/share/doc/sogo \
|
&& mkdir /usr/share/doc/sogo \
|
||||||
&& touch /usr/share/doc/sogo/empty.sh \
|
&& touch /usr/share/doc/sogo/empty.sh \
|
||||||
&& apt-key adv --keyserver keyserver.ubuntu.com --recv-key 0x810273C4 \
|
&& apt-key adv --keyserver keys.openpgp.org --recv-key 74FFC6D72B925A34B5D356BDF8A27B36A6E2EAE9 \
|
||||||
&& echo "deb ${SOGO_DEBIAN_REPOSITORY} bullseye bullseye" > /etc/apt/sources.list.d/sogo.list \
|
&& echo "deb ${SOGO_DEBIAN_REPOSITORY} bullseye bullseye" > /etc/apt/sources.list.d/sogo.list \
|
||||||
&& apt-get update && apt-get install -y --no-install-recommends \
|
&& apt-get update && apt-get install -y --no-install-recommends \
|
||||||
sogo \
|
sogo \
|
||||||
|
|||||||
@@ -142,6 +142,10 @@ cat <<EOF > /var/lib/sogo/GNUstep/Defaults/sogod.plist
|
|||||||
<string>mysql://${DBUSER}:${DBPASS}@%2Fvar%2Frun%2Fmysqld%2Fmysqld.sock/${DBNAME}/sogo_acl</string>
|
<string>mysql://${DBUSER}:${DBPASS}@%2Fvar%2Frun%2Fmysqld%2Fmysqld.sock/${DBNAME}/sogo_acl</string>
|
||||||
<key>SOGoIMAPServer</key>
|
<key>SOGoIMAPServer</key>
|
||||||
<string>imap://${IPV4_NETWORK}.250:143/?TLS=YES&tlsVerifyMode=none</string>
|
<string>imap://${IPV4_NETWORK}.250:143/?TLS=YES&tlsVerifyMode=none</string>
|
||||||
|
<key>SOGoSieveServer</key>
|
||||||
|
<string>sieve://${IPV4_NETWORK}.250:4190/?TLS=YES&tlsVerifyMode=none</string>
|
||||||
|
<key>SOGoSMTPServer</key>
|
||||||
|
<string>smtp://${IPV4_NETWORK}.253:588/?TLS=YES&tlsVerifyMode=none</string>
|
||||||
<key>SOGoTrustProxyAuthentication</key>
|
<key>SOGoTrustProxyAuthentication</key>
|
||||||
<string>YES</string>
|
<string>YES</string>
|
||||||
<key>SOGoEncryptionKey</key>
|
<key>SOGoEncryptionKey</key>
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
FROM alpine:3.15
|
FROM alpine:3.16
|
||||||
|
|
||||||
LABEL maintainer "Andre Peters <andre.peters@servercow.de>"
|
LABEL maintainer "Andre Peters <andre.peters@servercow.de>"
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
FROM alpine:3.15
|
FROM alpine:3.16
|
||||||
LABEL maintainer "André Peters <andre.peters@servercow.de>"
|
LABEL maintainer "André Peters <andre.peters@servercow.de>"
|
||||||
|
|
||||||
# Installation
|
# Installation
|
||||||
|
|||||||
@@ -65,7 +65,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
location ~ ^/api/v1/(.*)$ {
|
location ~ ^/api/v1/(.*)$ {
|
||||||
try_files $uri $uri/ /json_api.php?query=$1;
|
try_files $uri $uri/ /json_api.php?query=$1&$args;
|
||||||
}
|
}
|
||||||
|
|
||||||
location ^~ /.well-known/acme-challenge/ {
|
location ^~ /.well-known/acme-challenge/ {
|
||||||
@@ -163,7 +163,9 @@
|
|||||||
proxy_connect_timeout 75;
|
proxy_connect_timeout 75;
|
||||||
proxy_send_timeout 3600;
|
proxy_send_timeout 3600;
|
||||||
proxy_read_timeout 3600;
|
proxy_read_timeout 3600;
|
||||||
proxy_buffers 64 256k;
|
proxy_buffer_size 128k;
|
||||||
|
proxy_buffers 64 512k;
|
||||||
|
proxy_busy_buffers_size 512k;
|
||||||
proxy_set_header X-Real-IP $remote_addr;
|
proxy_set_header X-Real-IP $remote_addr;
|
||||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||||
proxy_set_header Host $http_host;
|
proxy_set_header Host $http_host;
|
||||||
@@ -197,6 +199,9 @@
|
|||||||
proxy_set_header x-webobjects-server-name $server_name;
|
proxy_set_header x-webobjects-server-name $server_name;
|
||||||
proxy_set_header x-webobjects-server-url $client_req_scheme://$http_host;
|
proxy_set_header x-webobjects-server-url $client_req_scheme://$http_host;
|
||||||
proxy_set_header x-webobjects-server-port $server_port;
|
proxy_set_header x-webobjects-server-port $server_port;
|
||||||
|
proxy_buffer_size 128k;
|
||||||
|
proxy_buffers 64 512k;
|
||||||
|
proxy_busy_buffers_size 512k;
|
||||||
proxy_send_timeout 3600;
|
proxy_send_timeout 3600;
|
||||||
proxy_read_timeout 3600;
|
proxy_read_timeout 3600;
|
||||||
client_body_buffer_size 128k;
|
client_body_buffer_size 128k;
|
||||||
|
|||||||
@@ -1,53 +1,63 @@
|
|||||||
# Whitelist generated by Postwhite v3.4 on Sun Dec 15 21:16:19 CET 2019
|
# Whitelist generated by Postwhite v3.4 on Mon 21 Mar 2022 06:50:26 PM CET
|
||||||
# https://github.com/stevejenkins/postwhite/
|
# https://github.com/stevejenkins/postwhite/
|
||||||
# 1928 total rules
|
# 1898 total rules
|
||||||
2a00:1450:4000::/36 permit
|
2a00:1450:4000::/36 permit
|
||||||
2a01:111:f400::/48 permit
|
2a01:111:f400::/48 permit
|
||||||
2a01:111:f403::/48 permit
|
2a01:111:f403::/48 permit
|
||||||
|
2a01:4180:4050:0400::/64 permit
|
||||||
|
2a01:4180:4050:0800::/64 permit
|
||||||
|
2a01:4180:4051:0400::/64 permit
|
||||||
|
2a01:4180:4051:0800::/64 permit
|
||||||
2a02:a60:0:5::/64 permit
|
2a02:a60:0:5::/64 permit
|
||||||
2c0f:fb50:4000::/36 permit
|
2c0f:fb50:4000::/36 permit
|
||||||
3.93.157.0/24 permit
|
|
||||||
8.20.114.31 permit
|
8.20.114.31 permit
|
||||||
8.25.194.0/23 permit
|
8.25.194.0/23 permit
|
||||||
8.25.196.0/23 permit
|
8.25.196.0/23 permit
|
||||||
8.39.54.0/23 permit
|
8.39.54.0/23 permit
|
||||||
8.40.222.0/23 permit
|
8.40.222.0/23 permit
|
||||||
8.45.169.0/24 permit
|
|
||||||
12.130.86.238 permit
|
12.130.86.238 permit
|
||||||
|
13.70.32.43 permit
|
||||||
|
13.72.50.45 permit
|
||||||
|
13.74.143.28 permit
|
||||||
13.77.161.179 permit
|
13.77.161.179 permit
|
||||||
|
13.78.233.182 permit
|
||||||
|
13.92.31.129 permit
|
||||||
|
13.110.208.0/21 permit
|
||||||
|
13.110.216.0/22 permit
|
||||||
|
13.110.224.0/20 permit
|
||||||
13.111.0.0/16 permit
|
13.111.0.0/16 permit
|
||||||
13.111.0.0/22 permit
|
|
||||||
13.111.52.0/22 permit
|
|
||||||
13.111.63.0/24 permit
|
|
||||||
13.111.68.0/24 permit
|
|
||||||
13.111.72.0/22 permit
|
|
||||||
13.111.92.0/24 permit
|
|
||||||
13.111.111.0/24 permit
|
|
||||||
17.36.0.0/16 permit
|
|
||||||
17.41.0.0/16 permit
|
17.41.0.0/16 permit
|
||||||
|
17.57.155.0/24 permit
|
||||||
|
17.57.156.0/24 permit
|
||||||
17.58.0.0/16 permit
|
17.58.0.0/16 permit
|
||||||
17.110.0.0/15 permit
|
17.110.0.0/15 permit
|
||||||
17.111.110.0/23 permit
|
|
||||||
17.120.0.0/16 permit
|
|
||||||
17.133.0.0/16 permit
|
|
||||||
17.139.0.0/16 permit
|
|
||||||
17.142.0.0/15 permit
|
17.142.0.0/15 permit
|
||||||
17.151.1.0/24 permit
|
|
||||||
17.158.0.0/15 permit
|
|
||||||
17.162.0.0/15 permit
|
17.162.0.0/15 permit
|
||||||
17.164.0.0/16 permit
|
17.164.0.0/16 permit
|
||||||
17.171.37.0/24 permit
|
17.171.37.0/24 permit
|
||||||
17.172.0.0/16 permit
|
17.172.0.0/16 permit
|
||||||
17.179.168.0/23 permit
|
17.179.168.0/23 permit
|
||||||
18.194.95.56 permit
|
18.194.95.56 permit
|
||||||
18.208.124.128/25 permit
|
18.198.96.88 permit
|
||||||
|
20.47.149.138 permit
|
||||||
|
20.48.0.0/12 permit
|
||||||
|
20.52.52.2 permit
|
||||||
|
20.52.128.133 permit
|
||||||
|
20.63.210.192/28 permit
|
||||||
|
20.64.0.0/10 permit
|
||||||
|
20.94.180.64/28 permit
|
||||||
|
20.185.213.160/27 permit
|
||||||
|
20.185.213.224/27 permit
|
||||||
20.185.214.0/27 permit
|
20.185.214.0/27 permit
|
||||||
20.185.214.2 permit
|
20.185.214.2 permit
|
||||||
20.185.214.32/27 permit
|
20.185.214.32/27 permit
|
||||||
20.185.214.64/27 permit
|
20.185.214.64/27 permit
|
||||||
23.23.237.213 permit
|
20.192.0.0/10 permit
|
||||||
23.103.131.7 permit
|
23.100.85.1 permit
|
||||||
23.103.224.0/19 permit
|
23.103.224.0/19 permit
|
||||||
|
23.249.208.0/20 permit
|
||||||
|
23.251.224.0/19 permit
|
||||||
|
23.253.141.0/24 permit
|
||||||
23.253.182.0/23 permit
|
23.253.182.0/23 permit
|
||||||
23.253.182.103 permit
|
23.253.182.103 permit
|
||||||
23.253.183.145 permit
|
23.253.183.145 permit
|
||||||
@@ -68,11 +78,11 @@
|
|||||||
27.123.206.56/29 permit
|
27.123.206.56/29 permit
|
||||||
27.123.206.76/30 permit
|
27.123.206.76/30 permit
|
||||||
27.123.206.80/28 permit
|
27.123.206.80/28 permit
|
||||||
27.126.146.0/24 permit
|
34.194.25.167 permit
|
||||||
34.200.123.20 permit
|
34.194.144.120 permit
|
||||||
34.212.163.75 permit
|
34.212.163.75 permit
|
||||||
34.213.104.127 permit
|
|
||||||
34.225.212.172 permit
|
34.225.212.172 permit
|
||||||
|
34.247.168.44 permit
|
||||||
35.176.132.251 permit
|
35.176.132.251 permit
|
||||||
35.190.247.0/24 permit
|
35.190.247.0/24 permit
|
||||||
35.191.0.0/16 permit
|
35.191.0.0/16 permit
|
||||||
@@ -80,7 +90,10 @@
|
|||||||
37.218.248.47 permit
|
37.218.248.47 permit
|
||||||
37.218.249.47 permit
|
37.218.249.47 permit
|
||||||
37.218.251.62 permit
|
37.218.251.62 permit
|
||||||
|
39.156.163.64/29 permit
|
||||||
|
40.71.187.0/24 permit
|
||||||
40.76.4.15 permit
|
40.76.4.15 permit
|
||||||
|
40.77.102.222 permit
|
||||||
40.92.0.0/15 permit
|
40.92.0.0/15 permit
|
||||||
40.97.116.82 permit
|
40.97.116.82 permit
|
||||||
40.97.128.194 permit
|
40.97.128.194 permit
|
||||||
@@ -91,18 +104,20 @@
|
|||||||
40.97.161.50 permit
|
40.97.161.50 permit
|
||||||
40.97.164.146 permit
|
40.97.164.146 permit
|
||||||
40.107.0.0/16 permit
|
40.107.0.0/16 permit
|
||||||
|
40.112.65.63 permit
|
||||||
40.112.72.205 permit
|
40.112.72.205 permit
|
||||||
40.113.200.201 permit
|
40.113.200.201 permit
|
||||||
|
40.117.80.0/24 permit
|
||||||
|
40.121.71.46 permit
|
||||||
41.74.192.0/22 permit
|
41.74.192.0/22 permit
|
||||||
41.74.196.0/22 permit
|
41.74.196.0/22 permit
|
||||||
41.74.200.0/23 permit
|
41.74.200.0/23 permit
|
||||||
41.74.201.0/24 permit
|
|
||||||
41.74.204.0/23 permit
|
41.74.204.0/23 permit
|
||||||
41.74.205.0/24 permit
|
41.74.206.0/24 permit
|
||||||
42.159.163.81 permit
|
42.159.163.81 permit
|
||||||
42.159.163.82 permit
|
42.159.163.82 permit
|
||||||
42.159.163.83 permit
|
42.159.163.83 permit
|
||||||
46.19.168.0/23 permit
|
43.228.184.0/22 permit
|
||||||
46.226.48.0/21 permit
|
46.226.48.0/21 permit
|
||||||
46.228.36.37 permit
|
46.228.36.37 permit
|
||||||
46.228.36.38/31 permit
|
46.228.36.38/31 permit
|
||||||
@@ -160,26 +175,19 @@
|
|||||||
50.18.125.97 permit
|
50.18.125.97 permit
|
||||||
50.18.125.237 permit
|
50.18.125.237 permit
|
||||||
50.18.126.162 permit
|
50.18.126.162 permit
|
||||||
50.23.218.192/27 permit
|
|
||||||
50.31.32.0/19 permit
|
50.31.32.0/19 permit
|
||||||
50.31.36.197 permit
|
|
||||||
50.31.36.199 permit
|
|
||||||
50.31.36.205 permit
|
|
||||||
50.31.36.208 permit
|
|
||||||
50.31.36.213 permit
|
|
||||||
50.31.44.111 permit
|
|
||||||
50.31.57.54/31 permit
|
|
||||||
50.31.57.60 permit
|
|
||||||
50.31.57.61 permit
|
|
||||||
50.31.57.62 permit
|
|
||||||
50.31.60.1 permit
|
|
||||||
50.31.156.96/27 permit
|
50.31.156.96/27 permit
|
||||||
50.31.205.0/24 permit
|
50.31.205.0/24 permit
|
||||||
50.207.218.237 permit
|
|
||||||
51.4.71.62 permit
|
51.4.71.62 permit
|
||||||
|
51.4.72.0/24 permit
|
||||||
|
51.4.80.0/27 permit
|
||||||
|
51.5.72.0/24 permit
|
||||||
|
51.5.80.0/27 permit
|
||||||
|
51.137.58.21 permit
|
||||||
|
51.140.75.55 permit
|
||||||
|
51.144.100.179 permit
|
||||||
51.163.158.0/24 permit
|
51.163.158.0/24 permit
|
||||||
51.163.159.0/24 permit
|
51.163.159.21 permit
|
||||||
52.0.20.102 permit
|
|
||||||
52.5.230.59 permit
|
52.5.230.59 permit
|
||||||
52.27.5.72 permit
|
52.27.5.72 permit
|
||||||
52.27.28.47 permit
|
52.27.28.47 permit
|
||||||
@@ -190,10 +198,15 @@
|
|||||||
52.41.64.145 permit
|
52.41.64.145 permit
|
||||||
52.60.41.5 permit
|
52.60.41.5 permit
|
||||||
52.60.115.116 permit
|
52.60.115.116 permit
|
||||||
|
52.82.172.0/22 permit
|
||||||
|
52.94.124.0/28 permit
|
||||||
52.95.48.152/29 permit
|
52.95.48.152/29 permit
|
||||||
52.95.49.88/29 permit
|
52.95.49.88/29 permit
|
||||||
52.100.0.0/14 permit
|
52.100.0.0/14 permit
|
||||||
52.128.40.0/21 permit
|
52.119.213.144/28 permit
|
||||||
|
52.160.39.140 permit
|
||||||
|
52.165.175.144 permit
|
||||||
|
52.185.106.240/28 permit
|
||||||
52.200.59.0/24 permit
|
52.200.59.0/24 permit
|
||||||
52.205.61.79 permit
|
52.205.61.79 permit
|
||||||
52.207.191.216 permit
|
52.207.191.216 permit
|
||||||
@@ -201,26 +214,30 @@
|
|||||||
52.222.73.83 permit
|
52.222.73.83 permit
|
||||||
52.222.73.120 permit
|
52.222.73.120 permit
|
||||||
52.222.75.85 permit
|
52.222.75.85 permit
|
||||||
|
52.234.172.96/28 permit
|
||||||
|
52.236.28.240/28 permit
|
||||||
|
52.237.141.173 permit
|
||||||
|
52.244.206.214 permit
|
||||||
|
52.247.53.144 permit
|
||||||
|
52.250.107.196 permit
|
||||||
|
52.250.126.174 permit
|
||||||
|
52.251.55.143 permit
|
||||||
54.90.148.255 permit
|
54.90.148.255 permit
|
||||||
54.156.255.69 permit
|
54.156.255.69 permit
|
||||||
54.172.97.247 permit
|
54.172.97.247 permit
|
||||||
54.173.229.38 permit
|
|
||||||
54.174.52.0/24 permit
|
|
||||||
54.174.53.128/30 permit
|
|
||||||
54.174.57.0/24 permit
|
|
||||||
54.174.59.0/24 permit
|
|
||||||
54.174.60.0/23 permit
|
|
||||||
54.174.63.0/24 permit
|
|
||||||
54.186.193.102 permit
|
54.186.193.102 permit
|
||||||
|
54.191.223.5 permit
|
||||||
|
54.194.61.95 permit
|
||||||
|
54.195.113.45 permit
|
||||||
54.214.39.184 permit
|
54.214.39.184 permit
|
||||||
|
54.216.77.168 permit
|
||||||
54.240.0.0/18 permit
|
54.240.0.0/18 permit
|
||||||
54.240.40.0/25 permit
|
54.240.64.0/19 permit
|
||||||
54.240.56.128/26 permit
|
54.240.96.0/19 permit
|
||||||
54.240.63.0/25 permit
|
|
||||||
54.241.16.209 permit
|
54.241.16.209 permit
|
||||||
54.243.205.80 permit
|
|
||||||
54.244.54.130 permit
|
54.244.54.130 permit
|
||||||
54.244.242.0/24 permit
|
54.244.242.0/24 permit
|
||||||
|
54.246.232.180 permit
|
||||||
62.13.128.0/24 permit
|
62.13.128.0/24 permit
|
||||||
62.13.129.128/25 permit
|
62.13.129.128/25 permit
|
||||||
62.13.136.0/22 permit
|
62.13.136.0/22 permit
|
||||||
@@ -231,9 +248,9 @@
|
|||||||
62.13.152.0/23 permit
|
62.13.152.0/23 permit
|
||||||
62.17.146.128/26 permit
|
62.17.146.128/26 permit
|
||||||
62.140.7.0/24 permit
|
62.140.7.0/24 permit
|
||||||
62.140.10.0/24 permit
|
62.140.10.21 permit
|
||||||
|
63.32.13.159 permit
|
||||||
63.80.14.0/23 permit
|
63.80.14.0/23 permit
|
||||||
63.111.28.137 permit
|
|
||||||
63.128.21.0/24 permit
|
63.128.21.0/24 permit
|
||||||
63.143.57.128/25 permit
|
63.143.57.128/25 permit
|
||||||
63.143.59.128/25 permit
|
63.143.59.128/25 permit
|
||||||
@@ -241,9 +258,11 @@
|
|||||||
64.20.241.45 permit
|
64.20.241.45 permit
|
||||||
64.34.47.128/27 permit
|
64.34.47.128/27 permit
|
||||||
64.34.57.192/26 permit
|
64.34.57.192/26 permit
|
||||||
|
64.71.149.160/28 permit
|
||||||
64.79.155.0/24 permit
|
64.79.155.0/24 permit
|
||||||
64.79.155.192 permit
|
64.89.44.85 permit
|
||||||
64.89.45.192/30 permit
|
64.89.45.80 permit
|
||||||
|
64.89.45.194 permit
|
||||||
64.89.45.196 permit
|
64.89.45.196 permit
|
||||||
64.95.144.196 permit
|
64.95.144.196 permit
|
||||||
64.127.115.252 permit
|
64.127.115.252 permit
|
||||||
@@ -265,21 +284,21 @@
|
|||||||
64.207.219.7 permit
|
64.207.219.7 permit
|
||||||
64.207.219.8 permit
|
64.207.219.8 permit
|
||||||
64.207.219.9 permit
|
64.207.219.9 permit
|
||||||
64.207.219.10 permit
|
64.207.219.13 permit
|
||||||
64.207.219.11 permit
|
64.207.219.14 permit
|
||||||
64.207.219.12 permit
|
64.207.219.15 permit
|
||||||
64.207.219.71 permit
|
64.207.219.71 permit
|
||||||
64.207.219.72 permit
|
64.207.219.72 permit
|
||||||
64.207.219.73 permit
|
64.207.219.73 permit
|
||||||
64.207.219.74 permit
|
64.207.219.77 permit
|
||||||
64.207.219.75 permit
|
64.207.219.78 permit
|
||||||
64.207.219.76 permit
|
64.207.219.79 permit
|
||||||
64.207.219.135 permit
|
64.207.219.135 permit
|
||||||
64.207.219.136 permit
|
64.207.219.136 permit
|
||||||
64.207.219.137 permit
|
64.207.219.137 permit
|
||||||
64.207.219.138 permit
|
64.207.219.141 permit
|
||||||
64.207.219.139 permit
|
64.207.219.142 permit
|
||||||
64.207.219.140 permit
|
64.207.219.143 permit
|
||||||
64.233.160.0/19 permit
|
64.233.160.0/19 permit
|
||||||
65.38.115.76 permit
|
65.38.115.76 permit
|
||||||
65.38.115.84 permit
|
65.38.115.84 permit
|
||||||
@@ -288,7 +307,6 @@
|
|||||||
65.54.51.64/26 permit
|
65.54.51.64/26 permit
|
||||||
65.54.61.64/26 permit
|
65.54.61.64/26 permit
|
||||||
65.54.121.120/29 permit
|
65.54.121.120/29 permit
|
||||||
65.54.121.124/31 permit
|
|
||||||
65.54.190.0/24 permit
|
65.54.190.0/24 permit
|
||||||
65.54.241.0/24 permit
|
65.54.241.0/24 permit
|
||||||
65.55.29.77 permit
|
65.55.29.77 permit
|
||||||
@@ -298,7 +316,6 @@
|
|||||||
65.55.52.224/27 permit
|
65.55.52.224/27 permit
|
||||||
65.55.78.128/25 permit
|
65.55.78.128/25 permit
|
||||||
65.55.81.48/28 permit
|
65.55.81.48/28 permit
|
||||||
65.55.81.54/31 permit
|
|
||||||
65.55.90.0/24 permit
|
65.55.90.0/24 permit
|
||||||
65.55.94.0/25 permit
|
65.55.94.0/25 permit
|
||||||
65.55.111.0/24 permit
|
65.55.111.0/24 permit
|
||||||
@@ -325,9 +342,6 @@
|
|||||||
66.111.4.225 permit
|
66.111.4.225 permit
|
||||||
66.111.4.229 permit
|
66.111.4.229 permit
|
||||||
66.111.4.230 permit
|
66.111.4.230 permit
|
||||||
66.135.202.0/27 permit
|
|
||||||
66.135.215.0/24 permit
|
|
||||||
66.135.222.1 permit
|
|
||||||
66.162.193.226/31 permit
|
66.162.193.226/31 permit
|
||||||
66.163.184.0/21 permit
|
66.163.184.0/21 permit
|
||||||
66.163.184.0/24 permit
|
66.163.184.0/24 permit
|
||||||
@@ -358,7 +372,8 @@
|
|||||||
66.196.81.232/31 permit
|
66.196.81.232/31 permit
|
||||||
66.196.81.234 permit
|
66.196.81.234 permit
|
||||||
66.211.168.230/31 permit
|
66.211.168.230/31 permit
|
||||||
66.211.184.0/23 permit
|
66.211.170.86/31 permit
|
||||||
|
66.211.170.88/30 permit
|
||||||
66.218.74.64/30 permit
|
66.218.74.64/30 permit
|
||||||
66.218.74.68/31 permit
|
66.218.74.68/31 permit
|
||||||
66.218.75.112/30 permit
|
66.218.75.112/30 permit
|
||||||
@@ -420,9 +435,7 @@
|
|||||||
67.221.168.65 permit
|
67.221.168.65 permit
|
||||||
67.228.2.24/30 permit
|
67.228.2.24/30 permit
|
||||||
67.228.21.184/29 permit
|
67.228.21.184/29 permit
|
||||||
67.228.34.32/27 permit
|
|
||||||
67.228.37.4/30 permit
|
67.228.37.4/30 permit
|
||||||
67.228.50.54/31 permit
|
|
||||||
67.231.145.42 permit
|
67.231.145.42 permit
|
||||||
67.231.153.30 permit
|
67.231.153.30 permit
|
||||||
68.142.230.0/24 permit
|
68.142.230.0/24 permit
|
||||||
@@ -432,17 +445,6 @@
|
|||||||
68.142.230.72/30 permit
|
68.142.230.72/30 permit
|
||||||
68.142.230.76/31 permit
|
68.142.230.76/31 permit
|
||||||
68.142.230.78 permit
|
68.142.230.78 permit
|
||||||
68.232.131.164 permit
|
|
||||||
68.232.131.172 permit
|
|
||||||
68.232.131.183 permit
|
|
||||||
68.232.131.185 permit
|
|
||||||
68.232.143.44 permit
|
|
||||||
68.232.145.216 permit
|
|
||||||
68.232.148.56 permit
|
|
||||||
68.232.148.128 permit
|
|
||||||
68.232.148.138 permit
|
|
||||||
68.232.157.60 permit
|
|
||||||
68.232.157.143 permit
|
|
||||||
68.232.192.0/20 permit
|
68.232.192.0/20 permit
|
||||||
69.63.178.128/25 permit
|
69.63.178.128/25 permit
|
||||||
69.63.181.0/24 permit
|
69.63.181.0/24 permit
|
||||||
@@ -456,9 +458,9 @@
|
|||||||
69.171.232.0/24 permit
|
69.171.232.0/24 permit
|
||||||
69.171.244.0/23 permit
|
69.171.244.0/23 permit
|
||||||
70.37.151.128/25 permit
|
70.37.151.128/25 permit
|
||||||
|
70.42.149.0/24 permit
|
||||||
70.42.149.35 permit
|
70.42.149.35 permit
|
||||||
72.3.185.0/24 permit
|
72.3.185.0/24 permit
|
||||||
72.3.237.64/28 permit
|
|
||||||
72.14.192.0/18 permit
|
72.14.192.0/18 permit
|
||||||
72.21.192.0/19 permit
|
72.21.192.0/19 permit
|
||||||
72.21.217.142 permit
|
72.21.217.142 permit
|
||||||
@@ -523,8 +525,10 @@
|
|||||||
72.32.154.0/24 permit
|
72.32.154.0/24 permit
|
||||||
72.32.217.0/24 permit
|
72.32.217.0/24 permit
|
||||||
72.32.243.0/24 permit
|
72.32.243.0/24 permit
|
||||||
72.34.168.75 permit
|
|
||||||
72.34.168.76 permit
|
72.34.168.76 permit
|
||||||
|
72.34.168.80 permit
|
||||||
|
72.34.168.85 permit
|
||||||
|
72.34.168.86 permit
|
||||||
72.52.72.32/28 permit
|
72.52.72.32/28 permit
|
||||||
72.52.72.36 permit
|
72.52.72.36 permit
|
||||||
74.6.128.0/21 permit
|
74.6.128.0/21 permit
|
||||||
@@ -536,9 +540,6 @@
|
|||||||
74.6.133.0/24 permit
|
74.6.133.0/24 permit
|
||||||
74.6.134.0/24 permit
|
74.6.134.0/24 permit
|
||||||
74.6.135.0/24 permit
|
74.6.135.0/24 permit
|
||||||
74.63.63.115 permit
|
|
||||||
74.63.63.121 permit
|
|
||||||
74.63.194.126 permit
|
|
||||||
74.63.212.0/24 permit
|
74.63.212.0/24 permit
|
||||||
74.63.234.75 permit
|
74.63.234.75 permit
|
||||||
74.63.236.0/24 permit
|
74.63.236.0/24 permit
|
||||||
@@ -557,17 +558,9 @@
|
|||||||
74.112.67.243 permit
|
74.112.67.243 permit
|
||||||
74.125.0.0/16 permit
|
74.125.0.0/16 permit
|
||||||
74.202.227.40 permit
|
74.202.227.40 permit
|
||||||
74.208.4.192/26 permit
|
|
||||||
74.208.5.64/26 permit
|
|
||||||
74.208.122.0/26 permit
|
|
||||||
74.209.250.0/24 permit
|
74.209.250.0/24 permit
|
||||||
74.209.250.12 permit
|
74.209.250.12 permit
|
||||||
75.126.253.48 permit
|
76.223.176.0/20 permit
|
||||||
76.223.176.0/24 permit
|
|
||||||
76.223.180.0/23 permit
|
|
||||||
76.223.188.0/24 permit
|
|
||||||
76.223.189.0/24 permit
|
|
||||||
76.223.190.0/24 permit
|
|
||||||
77.238.176.0/22 permit
|
77.238.176.0/22 permit
|
||||||
77.238.176.0/24 permit
|
77.238.176.0/24 permit
|
||||||
77.238.177.0/24 permit
|
77.238.177.0/24 permit
|
||||||
@@ -590,13 +583,11 @@
|
|||||||
77.238.189.146/31 permit
|
77.238.189.146/31 permit
|
||||||
77.238.189.148/30 permit
|
77.238.189.148/30 permit
|
||||||
81.223.46.0/27 permit
|
81.223.46.0/27 permit
|
||||||
82.165.159.0/24 permit
|
|
||||||
82.165.159.0/26 permit
|
|
||||||
82.165.229.130 permit
|
|
||||||
82.165.230.22 permit
|
|
||||||
84.16.77.1 permit
|
84.16.77.1 permit
|
||||||
85.158.136.0/21 permit
|
85.158.136.0/21 permit
|
||||||
86.61.88.25 permit
|
86.61.88.25 permit
|
||||||
|
87.198.219.130 permit
|
||||||
|
87.198.219.153 permit
|
||||||
87.238.80.0/21 permit
|
87.238.80.0/21 permit
|
||||||
87.248.103.12 permit
|
87.248.103.12 permit
|
||||||
87.248.103.21 permit
|
87.248.103.21 permit
|
||||||
@@ -633,11 +624,9 @@
|
|||||||
87.248.117.201 permit
|
87.248.117.201 permit
|
||||||
87.248.117.202 permit
|
87.248.117.202 permit
|
||||||
87.248.117.205 permit
|
87.248.117.205 permit
|
||||||
|
87.252.219.254 permit
|
||||||
87.253.232.0/21 permit
|
87.253.232.0/21 permit
|
||||||
89.22.108.0/24 permit
|
89.22.108.0/24 permit
|
||||||
91.194.248.0/23 permit
|
|
||||||
91.211.240.0/22 permit
|
|
||||||
91.211.243.0/24 permit
|
|
||||||
91.220.42.0/24 permit
|
91.220.42.0/24 permit
|
||||||
94.236.119.0/26 permit
|
94.236.119.0/26 permit
|
||||||
94.245.112.0/27 permit
|
94.245.112.0/27 permit
|
||||||
@@ -649,7 +638,6 @@
|
|||||||
96.43.148.64/28 permit
|
96.43.148.64/28 permit
|
||||||
96.43.148.64/31 permit
|
96.43.148.64/31 permit
|
||||||
96.43.151.64/28 permit
|
96.43.151.64/28 permit
|
||||||
96.46.150.192/27 permit
|
|
||||||
98.136.44.181 permit
|
98.136.44.181 permit
|
||||||
98.136.44.182/31 permit
|
98.136.44.182/31 permit
|
||||||
98.136.44.184 permit
|
98.136.44.184 permit
|
||||||
@@ -1152,20 +1140,25 @@
|
|||||||
98.139.245.180/31 permit
|
98.139.245.180/31 permit
|
||||||
98.139.245.208/30 permit
|
98.139.245.208/30 permit
|
||||||
98.139.245.212/31 permit
|
98.139.245.212/31 permit
|
||||||
|
99.78.197.208/28 permit
|
||||||
|
103.2.140.0/22 permit
|
||||||
103.9.8.121 permit
|
103.9.8.121 permit
|
||||||
103.9.8.122 permit
|
103.9.8.122 permit
|
||||||
103.9.8.123 permit
|
103.9.8.123 permit
|
||||||
103.9.96.0/22 permit
|
103.9.96.0/22 permit
|
||||||
103.13.69.0/24 permit
|
103.13.69.0/24 permit
|
||||||
103.28.42.0/24 permit
|
103.47.204.0/22 permit
|
||||||
103.96.20.0/24 permit
|
103.96.21.0/24 permit
|
||||||
103.96.22.0/24 permit
|
103.96.23.0/24 permit
|
||||||
|
103.151.192.0/23 permit
|
||||||
103.237.104.0/22 permit
|
103.237.104.0/22 permit
|
||||||
104.43.243.237 permit
|
104.43.243.237 permit
|
||||||
104.47.0.0/17 permit
|
104.47.0.0/17 permit
|
||||||
104.130.96.0/28 permit
|
104.130.96.0/28 permit
|
||||||
104.130.122.0/23 permit
|
104.130.122.0/23 permit
|
||||||
|
104.214.25.77 permit
|
||||||
104.215.148.63 permit
|
104.215.148.63 permit
|
||||||
|
104.215.186.3 permit
|
||||||
104.245.209.192/26 permit
|
104.245.209.192/26 permit
|
||||||
106.10.144.64/27 permit
|
106.10.144.64/27 permit
|
||||||
106.10.144.100/31 permit
|
106.10.144.100/31 permit
|
||||||
@@ -1291,6 +1284,7 @@
|
|||||||
106.10.242.0/24 permit
|
106.10.242.0/24 permit
|
||||||
106.10.243.0/24 permit
|
106.10.243.0/24 permit
|
||||||
106.10.244.0/24 permit
|
106.10.244.0/24 permit
|
||||||
|
106.39.212.64/29 permit
|
||||||
106.50.16.0/28 permit
|
106.50.16.0/28 permit
|
||||||
108.174.0.0/24 permit
|
108.174.0.0/24 permit
|
||||||
108.174.0.215 permit
|
108.174.0.215 permit
|
||||||
@@ -1302,13 +1296,14 @@
|
|||||||
108.175.30.45 permit
|
108.175.30.45 permit
|
||||||
108.177.8.0/21 permit
|
108.177.8.0/21 permit
|
||||||
108.177.96.0/19 permit
|
108.177.96.0/19 permit
|
||||||
108.178.6.0/24 permit
|
|
||||||
109.237.142.0/24 permit
|
109.237.142.0/24 permit
|
||||||
111.221.23.128/25 permit
|
111.221.23.128/25 permit
|
||||||
111.221.26.0/27 permit
|
111.221.26.0/27 permit
|
||||||
111.221.66.0/25 permit
|
111.221.66.0/25 permit
|
||||||
111.221.69.128/25 permit
|
111.221.69.128/25 permit
|
||||||
111.221.112.0/21 permit
|
111.221.112.0/21 permit
|
||||||
|
112.19.199.64/29 permit
|
||||||
|
112.19.242.64/29 permit
|
||||||
116.214.12.0/24 permit
|
116.214.12.0/24 permit
|
||||||
116.214.12.47 permit
|
116.214.12.47 permit
|
||||||
116.214.12.48/31 permit
|
116.214.12.48/31 permit
|
||||||
@@ -1325,6 +1320,7 @@
|
|||||||
117.120.16.0/21 permit
|
117.120.16.0/21 permit
|
||||||
119.42.242.52/31 permit
|
119.42.242.52/31 permit
|
||||||
119.42.242.156 permit
|
119.42.242.156 permit
|
||||||
|
123.126.78.64/29 permit
|
||||||
124.47.150.0/24 permit
|
124.47.150.0/24 permit
|
||||||
124.47.189.0/24 permit
|
124.47.189.0/24 permit
|
||||||
124.108.96.0/24 permit
|
124.108.96.0/24 permit
|
||||||
@@ -1332,11 +1328,19 @@
|
|||||||
124.108.96.28/31 permit
|
124.108.96.28/31 permit
|
||||||
124.108.96.70/31 permit
|
124.108.96.70/31 permit
|
||||||
124.108.96.72/31 permit
|
124.108.96.72/31 permit
|
||||||
|
128.17.0.0/20 permit
|
||||||
|
128.17.64.0/20 permit
|
||||||
|
128.17.128.0/20 permit
|
||||||
|
128.17.192.0/20 permit
|
||||||
128.127.70.0/26 permit
|
128.127.70.0/26 permit
|
||||||
|
128.245.0.0/20 permit
|
||||||
|
128.245.64.0/20 permit
|
||||||
129.41.77.70 permit
|
129.41.77.70 permit
|
||||||
129.41.169.249 permit
|
129.41.169.249 permit
|
||||||
|
129.146.236.58 permit
|
||||||
|
129.153.194.228 permit
|
||||||
|
129.159.87.137 permit
|
||||||
130.61.9.72 permit
|
130.61.9.72 permit
|
||||||
130.61.68.235 permit
|
|
||||||
130.211.0.0/22 permit
|
130.211.0.0/22 permit
|
||||||
130.248.172.0/24 permit
|
130.248.172.0/24 permit
|
||||||
130.248.173.0/24 permit
|
130.248.173.0/24 permit
|
||||||
@@ -1345,8 +1349,10 @@
|
|||||||
131.253.121.0/26 permit
|
131.253.121.0/26 permit
|
||||||
131.253.121.20 permit
|
131.253.121.20 permit
|
||||||
131.253.121.52 permit
|
131.253.121.52 permit
|
||||||
132.145.11.129 permit
|
|
||||||
132.145.13.209 permit
|
132.145.13.209 permit
|
||||||
|
132.226.26.225 permit
|
||||||
|
132.226.49.32 permit
|
||||||
|
132.226.56.24 permit
|
||||||
134.170.27.8 permit
|
134.170.27.8 permit
|
||||||
134.170.113.0/26 permit
|
134.170.113.0/26 permit
|
||||||
134.170.141.64/26 permit
|
134.170.141.64/26 permit
|
||||||
@@ -1356,21 +1362,27 @@
|
|||||||
135.84.82.0/24 permit
|
135.84.82.0/24 permit
|
||||||
135.84.216.0/22 permit
|
135.84.216.0/22 permit
|
||||||
136.143.182.0/23 permit
|
136.143.182.0/23 permit
|
||||||
136.143.188.0/23 permit
|
136.143.184.0/24 permit
|
||||||
|
136.143.188.0/24 permit
|
||||||
136.147.128.0/20 permit
|
136.147.128.0/20 permit
|
||||||
136.147.135.0/24 permit
|
136.147.135.0/24 permit
|
||||||
136.147.176.0/20 permit
|
136.147.176.0/20 permit
|
||||||
136.147.176.0/24 permit
|
136.147.176.0/24 permit
|
||||||
136.147.182.0/24 permit
|
136.147.182.0/24 permit
|
||||||
|
138.91.172.26 permit
|
||||||
139.60.152.0/22 permit
|
139.60.152.0/22 permit
|
||||||
139.178.64.159 permit
|
139.178.64.159 permit
|
||||||
139.178.64.195 permit
|
139.178.64.195 permit
|
||||||
139.180.17.0/24 permit
|
|
||||||
141.193.32.0/23 permit
|
141.193.32.0/23 permit
|
||||||
|
143.55.224.0/21 permit
|
||||||
|
143.55.232.0/22 permit
|
||||||
|
143.55.236.0/22 permit
|
||||||
|
144.178.36.0/24 permit
|
||||||
|
144.178.38.0/24 permit
|
||||||
146.20.112.0/26 permit
|
146.20.112.0/26 permit
|
||||||
146.20.113.0/24 permit
|
146.20.113.0/24 permit
|
||||||
146.20.191.0/24 permit
|
146.20.191.0/24 permit
|
||||||
146.88.28.0/24 permit
|
146.20.215.0/24 permit
|
||||||
146.101.78.0/24 permit
|
146.101.78.0/24 permit
|
||||||
147.75.65.173 permit
|
147.75.65.173 permit
|
||||||
147.75.65.174 permit
|
147.75.65.174 permit
|
||||||
@@ -1384,10 +1396,7 @@
|
|||||||
148.105.0.14 permit
|
148.105.0.14 permit
|
||||||
148.105.8.0/21 permit
|
148.105.8.0/21 permit
|
||||||
149.72.0.0/16 permit
|
149.72.0.0/16 permit
|
||||||
151.101.1.140 permit
|
152.67.105.195 permit
|
||||||
151.101.65.140 permit
|
|
||||||
151.101.129.140 permit
|
|
||||||
151.101.193.140 permit
|
|
||||||
157.55.0.192/26 permit
|
157.55.0.192/26 permit
|
||||||
157.55.1.128/26 permit
|
157.55.1.128/26 permit
|
||||||
157.55.2.0/25 permit
|
157.55.2.0/25 permit
|
||||||
@@ -1397,6 +1406,7 @@
|
|||||||
157.55.61.0/24 permit
|
157.55.61.0/24 permit
|
||||||
157.55.157.128/25 permit
|
157.55.157.128/25 permit
|
||||||
157.55.225.0/25 permit
|
157.55.225.0/25 permit
|
||||||
|
157.55.254.216 permit
|
||||||
157.56.24.0/25 permit
|
157.56.24.0/25 permit
|
||||||
157.56.120.128/26 permit
|
157.56.120.128/26 permit
|
||||||
157.56.232.0/21 permit
|
157.56.232.0/21 permit
|
||||||
@@ -1405,21 +1415,26 @@
|
|||||||
157.58.196.96/29 permit
|
157.58.196.96/29 permit
|
||||||
157.58.249.3 permit
|
157.58.249.3 permit
|
||||||
157.151.208.65 permit
|
157.151.208.65 permit
|
||||||
158.247.16.0/20 permit
|
157.255.1.64/29 permit
|
||||||
|
159.92.157.0/24 permit
|
||||||
|
159.92.158.0/24 permit
|
||||||
|
159.92.159.0/24 permit
|
||||||
|
159.92.160.0/24 permit
|
||||||
|
159.92.161.0/24 permit
|
||||||
|
159.92.162.0/24 permit
|
||||||
|
159.135.132.128/25 permit
|
||||||
|
159.135.140.80/29 permit
|
||||||
159.135.224.0/20 permit
|
159.135.224.0/20 permit
|
||||||
161.38.192.0/22 permit
|
159.183.0.0/16 permit
|
||||||
161.38.196.0/22 permit
|
161.38.192.0/20 permit
|
||||||
161.71.32.0/21 permit
|
161.38.204.0/22 permit
|
||||||
|
161.71.32.0/19 permit
|
||||||
|
161.71.64.0/20 permit
|
||||||
162.208.119.181 permit
|
162.208.119.181 permit
|
||||||
162.247.216.0/22 permit
|
162.247.216.0/22 permit
|
||||||
162.248.184.121 permit
|
163.47.180.0/23 permit
|
||||||
162.248.184.122 permit
|
|
||||||
162.248.185.121 permit
|
|
||||||
162.248.185.122 permit
|
|
||||||
162.248.186.121 permit
|
|
||||||
162.248.186.122 permit
|
|
||||||
163.47.180.0/22 permit
|
|
||||||
163.114.130.16 permit
|
163.114.130.16 permit
|
||||||
|
163.114.132.120 permit
|
||||||
166.78.68.0/22 permit
|
166.78.68.0/22 permit
|
||||||
166.78.68.221 permit
|
166.78.68.221 permit
|
||||||
166.78.69.146 permit
|
166.78.69.146 permit
|
||||||
@@ -1427,16 +1442,7 @@
|
|||||||
166.78.69.170 permit
|
166.78.69.170 permit
|
||||||
166.78.71.131 permit
|
166.78.71.131 permit
|
||||||
167.89.0.0/17 permit
|
167.89.0.0/17 permit
|
||||||
167.89.2.4 permit
|
|
||||||
167.89.22.44 permit
|
|
||||||
167.89.25.84 permit
|
|
||||||
167.89.31.192/29 permit
|
|
||||||
167.89.32.5 permit
|
|
||||||
167.89.32.50 permit
|
|
||||||
167.89.46.159 permit
|
167.89.46.159 permit
|
||||||
167.89.46.185 permit
|
|
||||||
167.89.60.95 permit
|
|
||||||
167.89.62.118 permit
|
|
||||||
167.89.64.9 permit
|
167.89.64.9 permit
|
||||||
167.89.65.0 permit
|
167.89.65.0 permit
|
||||||
167.89.65.53 permit
|
167.89.65.53 permit
|
||||||
@@ -1448,22 +1454,15 @@
|
|||||||
167.89.75.164 permit
|
167.89.75.164 permit
|
||||||
167.89.101.2 permit
|
167.89.101.2 permit
|
||||||
167.89.101.192/28 permit
|
167.89.101.192/28 permit
|
||||||
167.89.107.125 permit
|
|
||||||
167.89.107.127 permit
|
|
||||||
167.89.107.129 permit
|
|
||||||
167.89.107.136 permit
|
|
||||||
167.216.129.170 permit
|
|
||||||
167.216.129.182/31 permit
|
|
||||||
167.216.129.184/29 permit
|
|
||||||
167.216.129.192/29 permit
|
|
||||||
167.216.129.200 permit
|
|
||||||
167.216.129.205 permit
|
|
||||||
167.216.129.206/31 permit
|
|
||||||
167.216.129.208/31 permit
|
|
||||||
167.216.129.210 permit
|
167.216.129.210 permit
|
||||||
|
167.216.131.180 permit
|
||||||
167.220.67.232/29 permit
|
167.220.67.232/29 permit
|
||||||
167.220.67.238 permit
|
167.220.67.238 permit
|
||||||
|
168.138.5.36 permit
|
||||||
168.245.0.0/17 permit
|
168.245.0.0/17 permit
|
||||||
|
170.10.68.0/22 permit
|
||||||
|
170.10.129.0/24 permit
|
||||||
|
170.10.133.0/24 permit
|
||||||
172.217.0.0/19 permit
|
172.217.0.0/19 permit
|
||||||
172.217.32.0/20 permit
|
172.217.32.0/20 permit
|
||||||
172.217.128.0/19 permit
|
172.217.128.0/19 permit
|
||||||
@@ -1473,8 +1472,6 @@
|
|||||||
172.253.112.0/20 permit
|
172.253.112.0/20 permit
|
||||||
173.0.84.224/27 permit
|
173.0.84.224/27 permit
|
||||||
173.0.94.244/30 permit
|
173.0.94.244/30 permit
|
||||||
173.193.132.134/31 permit
|
|
||||||
173.193.210.32/27 permit
|
|
||||||
173.194.0.0/16 permit
|
173.194.0.0/16 permit
|
||||||
173.203.79.182 permit
|
173.203.79.182 permit
|
||||||
173.203.81.39 permit
|
173.203.81.39 permit
|
||||||
@@ -1482,7 +1479,6 @@
|
|||||||
173.224.160.188 permit
|
173.224.160.188 permit
|
||||||
173.224.161.128/25 permit
|
173.224.161.128/25 permit
|
||||||
173.228.155.0/24 permit
|
173.228.155.0/24 permit
|
||||||
173.236.20.0/24 permit
|
|
||||||
174.36.84.8/29 permit
|
174.36.84.8/29 permit
|
||||||
174.36.84.16/29 permit
|
174.36.84.16/29 permit
|
||||||
174.36.84.32/29 permit
|
174.36.84.32/29 permit
|
||||||
@@ -1494,30 +1490,25 @@
|
|||||||
174.36.114.148/30 permit
|
174.36.114.148/30 permit
|
||||||
174.36.114.152/29 permit
|
174.36.114.152/29 permit
|
||||||
174.37.67.28/30 permit
|
174.37.67.28/30 permit
|
||||||
174.37.226.64/27 permit
|
|
||||||
174.129.194.241 permit
|
|
||||||
174.129.203.189 permit
|
174.129.203.189 permit
|
||||||
174.137.46.0/24 permit
|
|
||||||
176.32.105.0/24 permit
|
176.32.105.0/24 permit
|
||||||
176.32.127.0/24 permit
|
176.32.127.0/24 permit
|
||||||
178.236.10.128/26 permit
|
178.236.10.128/26 permit
|
||||||
180.189.28.0/24 permit
|
180.189.28.0/24 permit
|
||||||
182.50.76.0/22 permit
|
182.50.76.0/22 permit
|
||||||
182.50.78.64/28 permit
|
182.50.78.64/28 permit
|
||||||
184.173.105.0/24 permit
|
183.240.219.64/29 permit
|
||||||
184.173.153.0/24 permit
|
|
||||||
185.4.120.0/24 permit
|
|
||||||
185.4.122.0/24 permit
|
|
||||||
185.12.80.0/22 permit
|
185.12.80.0/22 permit
|
||||||
185.28.196.0/22 permit
|
185.28.196.0/22 permit
|
||||||
185.58.84.0/24 permit
|
185.58.84.93 permit
|
||||||
185.58.87.0/24 permit
|
185.58.85.0/24 permit
|
||||||
|
185.58.86.0/24 permit
|
||||||
185.72.128.75 permit
|
185.72.128.75 permit
|
||||||
185.72.128.76 permit
|
185.72.128.76 permit
|
||||||
|
185.72.128.80 permit
|
||||||
185.80.93.204 permit
|
185.80.93.204 permit
|
||||||
185.80.93.227 permit
|
185.80.93.227 permit
|
||||||
185.80.95.31 permit
|
185.80.95.31 permit
|
||||||
185.90.20.0/22 permit
|
|
||||||
185.189.236.0/22 permit
|
185.189.236.0/22 permit
|
||||||
185.211.120.0/22 permit
|
185.211.120.0/22 permit
|
||||||
185.250.236.0/22 permit
|
185.250.236.0/22 permit
|
||||||
@@ -1577,7 +1568,6 @@
|
|||||||
192.64.236.0/24 permit
|
192.64.236.0/24 permit
|
||||||
192.64.237.0/24 permit
|
192.64.237.0/24 permit
|
||||||
192.64.238.0/24 permit
|
192.64.238.0/24 permit
|
||||||
192.92.97.0/24 permit
|
|
||||||
192.161.144.0/20 permit
|
192.161.144.0/20 permit
|
||||||
192.162.87.0/24 permit
|
192.162.87.0/24 permit
|
||||||
192.237.158.0/23 permit
|
192.237.158.0/23 permit
|
||||||
@@ -1589,37 +1579,34 @@
|
|||||||
192.254.113.10 permit
|
192.254.113.10 permit
|
||||||
192.254.113.101 permit
|
192.254.113.101 permit
|
||||||
192.254.114.176 permit
|
192.254.114.176 permit
|
||||||
192.254.115.72 permit
|
|
||||||
192.254.118.63 permit
|
192.254.118.63 permit
|
||||||
192.254.127.96/27 permit
|
193.7.206.0/25 permit
|
||||||
|
193.7.207.0/25 permit
|
||||||
193.109.254.0/23 permit
|
193.109.254.0/23 permit
|
||||||
194.64.234.128/27 permit
|
193.122.128.100 permit
|
||||||
194.64.234.129 permit
|
194.64.234.129 permit
|
||||||
|
194.104.109.0/24 permit
|
||||||
|
194.104.111.0/24 permit
|
||||||
194.106.220.0/23 permit
|
194.106.220.0/23 permit
|
||||||
194.113.24.0/22 permit
|
|
||||||
194.154.193.192/27 permit
|
194.154.193.192/27 permit
|
||||||
195.54.172.0/23 permit
|
|
||||||
195.130.217.0/24 permit
|
195.130.217.0/24 permit
|
||||||
|
195.234.109.226 permit
|
||||||
195.245.230.0/23 permit
|
195.245.230.0/23 permit
|
||||||
198.2.128.0/18 permit
|
198.2.128.0/18 permit
|
||||||
198.2.128.0/24 permit
|
198.2.128.0/24 permit
|
||||||
198.2.132.0/22 permit
|
198.2.132.0/22 permit
|
||||||
198.2.136.0/23 permit
|
198.2.136.0/23 permit
|
||||||
|
198.2.145.0/24 permit
|
||||||
198.2.177.0/24 permit
|
198.2.177.0/24 permit
|
||||||
198.2.178.0/24 permit
|
198.2.178.0/23 permit
|
||||||
198.2.179.0/24 permit
|
|
||||||
198.2.180.0/24 permit
|
198.2.180.0/24 permit
|
||||||
198.2.186.0/23 permit
|
198.2.186.0/23 permit
|
||||||
198.21.0.0/21 permit
|
198.21.0.0/21 permit
|
||||||
198.21.3.166 permit
|
|
||||||
198.21.4.224 permit
|
|
||||||
198.37.144.0/20 permit
|
198.37.144.0/20 permit
|
||||||
198.37.145.250 permit
|
198.37.152.186 permit
|
||||||
198.37.146.118/31 permit
|
|
||||||
198.37.149.128 permit
|
|
||||||
198.37.151.26 permit
|
|
||||||
198.61.254.0/23 permit
|
198.61.254.0/23 permit
|
||||||
198.61.254.231 permit
|
198.61.254.231 permit
|
||||||
|
198.74.56.28 permit
|
||||||
198.178.234.57 permit
|
198.178.234.57 permit
|
||||||
198.245.80.0/20 permit
|
198.245.80.0/20 permit
|
||||||
198.245.81.0/24 permit
|
198.245.81.0/24 permit
|
||||||
@@ -1636,18 +1623,15 @@
|
|||||||
199.122.120.0/21 permit
|
199.122.120.0/21 permit
|
||||||
199.122.123.0/24 permit
|
199.122.123.0/24 permit
|
||||||
199.127.232.0/22 permit
|
199.127.232.0/22 permit
|
||||||
199.201.64.23 permit
|
|
||||||
199.201.65.23 permit
|
|
||||||
199.255.192.0/22 permit
|
199.255.192.0/22 permit
|
||||||
202.129.242.0/23 permit
|
202.129.242.0/23 permit
|
||||||
202.165.102.47 permit
|
202.165.102.47 permit
|
||||||
202.177.148.100 permit
|
202.177.148.100 permit
|
||||||
202.177.148.110 permit
|
202.177.148.110 permit
|
||||||
|
203.31.36.0/22 permit
|
||||||
203.32.4.25 permit
|
203.32.4.25 permit
|
||||||
203.55.21.0/24 permit
|
|
||||||
203.81.17.0/24 permit
|
203.81.17.0/24 permit
|
||||||
203.122.32.250 permit
|
203.122.32.250 permit
|
||||||
203.145.57.160/27 permit
|
|
||||||
203.188.194.32 permit
|
203.188.194.32 permit
|
||||||
203.188.194.151 permit
|
203.188.194.151 permit
|
||||||
203.188.194.203 permit
|
203.188.194.203 permit
|
||||||
@@ -1680,32 +1664,30 @@
|
|||||||
203.188.201.12/30 permit
|
203.188.201.12/30 permit
|
||||||
203.209.230.75 permit
|
203.209.230.75 permit
|
||||||
203.209.230.76/31 permit
|
203.209.230.76/31 permit
|
||||||
204.2.193.0/29 permit
|
|
||||||
204.11.168.0/21 permit
|
204.11.168.0/21 permit
|
||||||
204.13.11.48/29 permit
|
204.13.11.48/29 permit
|
||||||
204.13.11.48/30 permit
|
|
||||||
204.14.232.0/21 permit
|
204.14.232.0/21 permit
|
||||||
204.14.232.64/28 permit
|
204.14.232.64/28 permit
|
||||||
204.14.234.64/28 permit
|
204.14.234.64/28 permit
|
||||||
204.29.186.0/23 permit
|
204.29.186.0/23 permit
|
||||||
204.75.142.0/24 permit
|
|
||||||
204.79.197.212 permit
|
204.79.197.212 permit
|
||||||
204.92.114.187 permit
|
204.92.114.187 permit
|
||||||
204.92.114.203 permit
|
204.92.114.203 permit
|
||||||
204.92.114.204/31 permit
|
204.92.114.204/31 permit
|
||||||
204.141.32.0/23 permit
|
204.141.32.0/23 permit
|
||||||
204.141.42.0/23 permit
|
204.141.42.0/23 permit
|
||||||
204.153.120.0/23 permit
|
204.153.121.0/24 permit
|
||||||
|
204.232.168.0/24 permit
|
||||||
205.139.110.0/24 permit
|
205.139.110.0/24 permit
|
||||||
205.139.111.0/24 permit
|
|
||||||
205.201.128.0/20 permit
|
205.201.128.0/20 permit
|
||||||
205.201.131.128/25 permit
|
205.201.131.128/25 permit
|
||||||
205.201.134.128/25 permit
|
205.201.134.128/25 permit
|
||||||
205.201.136.0/23 permit
|
205.201.136.0/23 permit
|
||||||
205.201.137.229 permit
|
|
||||||
205.201.139.0/24 permit
|
205.201.139.0/24 permit
|
||||||
205.207.104.0/22 permit
|
205.207.104.0/22 permit
|
||||||
205.207.104.108 permit
|
205.207.104.108 permit
|
||||||
|
205.220.167.17 permit
|
||||||
|
205.220.179.17 permit
|
||||||
205.251.233.32 permit
|
205.251.233.32 permit
|
||||||
205.251.233.36 permit
|
205.251.233.36 permit
|
||||||
206.25.247.143 permit
|
206.25.247.143 permit
|
||||||
@@ -1727,6 +1709,8 @@
|
|||||||
207.46.132.128/27 permit
|
207.46.132.128/27 permit
|
||||||
207.46.198.0/25 permit
|
207.46.198.0/25 permit
|
||||||
207.46.200.0/27 permit
|
207.46.200.0/27 permit
|
||||||
|
207.46.225.107 permit
|
||||||
|
207.58.147.64/28 permit
|
||||||
207.67.38.0/24 permit
|
207.67.38.0/24 permit
|
||||||
207.67.98.192/27 permit
|
207.67.98.192/27 permit
|
||||||
207.68.176.0/26 permit
|
207.68.176.0/26 permit
|
||||||
@@ -1734,7 +1718,8 @@
|
|||||||
207.82.80.0/24 permit
|
207.82.80.0/24 permit
|
||||||
207.126.144.0/20 permit
|
207.126.144.0/20 permit
|
||||||
207.171.160.0/19 permit
|
207.171.160.0/19 permit
|
||||||
207.211.30.0/24 permit
|
207.211.30.64/26 permit
|
||||||
|
207.211.30.128/25 permit
|
||||||
207.211.31.0/25 permit
|
207.211.31.0/25 permit
|
||||||
207.211.41.113 permit
|
207.211.41.113 permit
|
||||||
207.218.90.0/24 permit
|
207.218.90.0/24 permit
|
||||||
@@ -1743,7 +1728,7 @@
|
|||||||
208.43.21.28/30 permit
|
208.43.21.28/30 permit
|
||||||
208.43.21.64/29 permit
|
208.43.21.64/29 permit
|
||||||
208.43.21.72/30 permit
|
208.43.21.72/30 permit
|
||||||
208.43.239.136/30 permit
|
208.46.212.80 permit
|
||||||
208.46.212.208/31 permit
|
208.46.212.208/31 permit
|
||||||
208.46.212.210 permit
|
208.46.212.210 permit
|
||||||
208.64.132.0/22 permit
|
208.64.132.0/22 permit
|
||||||
@@ -1773,13 +1758,13 @@
|
|||||||
208.71.42.212/31 permit
|
208.71.42.212/31 permit
|
||||||
208.71.42.214 permit
|
208.71.42.214 permit
|
||||||
208.72.249.240/29 permit
|
208.72.249.240/29 permit
|
||||||
208.74.204.0/22 permit
|
|
||||||
208.74.204.9 permit
|
208.74.204.9 permit
|
||||||
208.75.120.0/22 permit
|
208.75.120.0/22 permit
|
||||||
208.75.122.246 permit
|
208.75.122.246 permit
|
||||||
208.82.236.96/28 permit
|
208.82.237.96/29 permit
|
||||||
208.82.237.96/28 permit
|
208.82.237.104/31 permit
|
||||||
208.82.238.96/28 permit
|
208.82.238.96/29 permit
|
||||||
|
208.82.238.104/31 permit
|
||||||
208.85.50.137 permit
|
208.85.50.137 permit
|
||||||
208.117.48.0/20 permit
|
208.117.48.0/20 permit
|
||||||
208.185.229.45 permit
|
208.185.229.45 permit
|
||||||
@@ -1792,10 +1777,10 @@
|
|||||||
209.67.98.59 permit
|
209.67.98.59 permit
|
||||||
209.85.128.0/17 permit
|
209.85.128.0/17 permit
|
||||||
212.4.136.0/26 permit
|
212.4.136.0/26 permit
|
||||||
212.25.240.75 permit
|
212.25.240.80 permit
|
||||||
212.25.240.76 permit
|
|
||||||
212.25.240.83 permit
|
212.25.240.83 permit
|
||||||
212.25.240.84 permit
|
212.25.240.84/31 permit
|
||||||
|
212.25.240.88 permit
|
||||||
212.82.96.0/24 permit
|
212.82.96.0/24 permit
|
||||||
212.82.96.32/27 permit
|
212.82.96.32/27 permit
|
||||||
212.82.96.64/29 permit
|
212.82.96.64/29 permit
|
||||||
@@ -1836,13 +1821,8 @@
|
|||||||
212.82.111.228/31 permit
|
212.82.111.228/31 permit
|
||||||
212.82.111.230 permit
|
212.82.111.230 permit
|
||||||
212.123.28.40 permit
|
212.123.28.40 permit
|
||||||
212.227.15.0/24 permit
|
213.167.75.0/25 permit
|
||||||
212.227.15.0/25 permit
|
213.167.81.0/25 permit
|
||||||
212.227.17.0/27 permit
|
|
||||||
212.227.126.128/25 permit
|
|
||||||
213.165.64.0/23 permit
|
|
||||||
213.167.75.0/24 permit
|
|
||||||
213.167.81.0/24 permit
|
|
||||||
213.199.128.139 permit
|
213.199.128.139 permit
|
||||||
213.199.128.145 permit
|
213.199.128.145 permit
|
||||||
213.199.138.181 permit
|
213.199.138.181 permit
|
||||||
@@ -1851,6 +1831,7 @@
|
|||||||
213.199.177.0/26 permit
|
213.199.177.0/26 permit
|
||||||
216.17.150.242 permit
|
216.17.150.242 permit
|
||||||
216.17.150.251 permit
|
216.17.150.251 permit
|
||||||
|
216.22.15.224/27 permit
|
||||||
216.24.224.0/20 permit
|
216.24.224.0/20 permit
|
||||||
216.39.60.0/23 permit
|
216.39.60.0/23 permit
|
||||||
216.39.60.154/31 permit
|
216.39.60.154/31 permit
|
||||||
@@ -1877,17 +1858,9 @@
|
|||||||
216.39.62.60/31 permit
|
216.39.62.60/31 permit
|
||||||
216.39.62.136/29 permit
|
216.39.62.136/29 permit
|
||||||
216.39.62.144/31 permit
|
216.39.62.144/31 permit
|
||||||
216.46.168.197 permit
|
216.46.168.0/24 permit
|
||||||
216.46.168.222 permit
|
|
||||||
216.52.185.88/29 permit
|
|
||||||
216.58.192.0/19 permit
|
216.58.192.0/19 permit
|
||||||
216.66.217.240/29 permit
|
216.66.217.240/29 permit
|
||||||
216.71.96.0/22 permit
|
|
||||||
216.71.152.175 permit
|
|
||||||
216.71.152.207 permit
|
|
||||||
216.71.154.29 permit
|
|
||||||
216.71.155.88 permit
|
|
||||||
216.71.155.89 permit
|
|
||||||
216.74.162.13 permit
|
216.74.162.13 permit
|
||||||
216.74.162.14 permit
|
216.74.162.14 permit
|
||||||
216.82.240.0/20 permit
|
216.82.240.0/20 permit
|
||||||
@@ -1897,9 +1870,6 @@
|
|||||||
216.109.114.0/24 permit
|
216.109.114.0/24 permit
|
||||||
216.109.114.32/27 permit
|
216.109.114.32/27 permit
|
||||||
216.109.114.64/29 permit
|
216.109.114.64/29 permit
|
||||||
216.113.160.0/24 permit
|
|
||||||
216.113.172.0/25 permit
|
|
||||||
216.113.175.0/24 permit
|
|
||||||
216.128.126.97 permit
|
216.128.126.97 permit
|
||||||
216.136.162.65 permit
|
216.136.162.65 permit
|
||||||
216.136.162.120/29 permit
|
216.136.162.120/29 permit
|
||||||
@@ -1909,14 +1879,13 @@
|
|||||||
216.203.33.178/31 permit
|
216.203.33.178/31 permit
|
||||||
216.205.24.0/24 permit
|
216.205.24.0/24 permit
|
||||||
216.239.32.0/19 permit
|
216.239.32.0/19 permit
|
||||||
217.72.192.64/26 permit
|
|
||||||
217.72.192.248/29 permit
|
|
||||||
217.72.207.0/27 permit
|
|
||||||
217.77.141.52 permit
|
217.77.141.52 permit
|
||||||
217.77.141.59 permit
|
217.77.141.59 permit
|
||||||
217.175.193.0/24 permit
|
222.73.195.64/29 permit
|
||||||
217.175.194.0/23 permit
|
223.165.113.0/24 permit
|
||||||
217.175.196.0/24 permit
|
223.165.115.0/24 permit
|
||||||
|
223.165.118.0/23 permit
|
||||||
|
223.165.120.0/23 permit
|
||||||
2001:4860:4000::/36 permit
|
2001:4860:4000::/36 permit
|
||||||
2404:6800:4000::/36 permit
|
2404:6800:4000::/36 permit
|
||||||
2607:f8b0:4000::/36 permit
|
2607:f8b0:4000::/36 permit
|
||||||
@@ -1925,6 +1894,7 @@
|
|||||||
2620:109:c006:104::215 permit
|
2620:109:c006:104::215 permit
|
||||||
2620:109:c006:104::/64 permit
|
2620:109:c006:104::/64 permit
|
||||||
2620:109:c00d:104::/64 permit
|
2620:109:c00d:104::/64 permit
|
||||||
|
2620:10d:c090:450::120 permit
|
||||||
2620:10d:c091:450::16 permit
|
2620:10d:c091:450::16 permit
|
||||||
2620:119:50c0:207::215 permit
|
2620:119:50c0:207::215 permit
|
||||||
2620:119:50c0:207::/64 permit
|
2620:119:50c0:207::/64 permit
|
||||||
|
|||||||
@@ -18,6 +18,9 @@ symbols {
|
|||||||
"ENCRYPTED_CHAT" {
|
"ENCRYPTED_CHAT" {
|
||||||
score = -20.0;
|
score = -20.0;
|
||||||
}
|
}
|
||||||
|
"SOGO_CONTACT" {
|
||||||
|
score = -99.0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
group "MX" {
|
group "MX" {
|
||||||
|
|||||||
@@ -16,8 +16,7 @@ rules {
|
|||||||
backend = "http";
|
backend = "http";
|
||||||
url = "http://nginx:9081/pushover.php";
|
url = "http://nginx:9081/pushover.php";
|
||||||
selector = "mailcow_rcpt";
|
selector = "mailcow_rcpt";
|
||||||
# Only return msgid, do not parse the full message
|
formatter = "json";
|
||||||
formatter = "msgid";
|
|
||||||
meta_headers = true;
|
meta_headers = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,24 +0,0 @@
|
|||||||
rules {
|
|
||||||
"LONG" {
|
|
||||||
train {
|
|
||||||
max_trains = 200;
|
|
||||||
max_usages = 20;
|
|
||||||
max_iterations = 25;
|
|
||||||
learning_rate = 0.01,
|
|
||||||
}
|
|
||||||
symbol_spam = "NEURAL_SPAM_LONG";
|
|
||||||
symbol_ham = "NEURAL_HAM_LONG";
|
|
||||||
ann_expire = 45d;
|
|
||||||
}
|
|
||||||
"SHORT" {
|
|
||||||
train {
|
|
||||||
max_trains = 100;
|
|
||||||
max_usages = 10;
|
|
||||||
max_iterations = 15;
|
|
||||||
learning_rate = 0.01,
|
|
||||||
}
|
|
||||||
symbol_spam = "NEURAL_SPAM_SHORT";
|
|
||||||
symbol_ham = "NEURAL_HAM_SHORT";
|
|
||||||
ann_expire = 7d;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,18 +0,0 @@
|
|||||||
symbols = {
|
|
||||||
"NEURAL_SPAM_LONG" {
|
|
||||||
weight = 3.7; # sample weight
|
|
||||||
description = "Neural network spam (long)";
|
|
||||||
}
|
|
||||||
"NEURAL_HAM_LONG" {
|
|
||||||
weight = -4.0; # sample weight
|
|
||||||
description = "Neural network ham (long)";
|
|
||||||
}
|
|
||||||
"NEURAL_SPAM_SHORT" {
|
|
||||||
weight = 2.5; # sample weight
|
|
||||||
description = "Neural network spam (short)";
|
|
||||||
}
|
|
||||||
"NEURAL_HAM_SHORT" {
|
|
||||||
weight = -2.0; # sample weight
|
|
||||||
description = "Neural network ham (short)";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -47,6 +47,7 @@ if (!function_exists('getallheaders')) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
$headers = getallheaders();
|
$headers = getallheaders();
|
||||||
|
$json_body = json_decode(file_get_contents('php://input'));
|
||||||
|
|
||||||
$qid = $headers['X-Rspamd-Qid'];
|
$qid = $headers['X-Rspamd-Qid'];
|
||||||
$rcpts = $headers['X-Rspamd-Rcpt'];
|
$rcpts = $headers['X-Rspamd-Rcpt'];
|
||||||
@@ -65,6 +66,20 @@ if (is_array($symbols_array)) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$sender_address = $json_body->header_from[0];
|
||||||
|
$sender_name = '-';
|
||||||
|
if (preg_match('/(?<name>.*?)<(?<address>.*?)>/i', $sender_address, $matches)) {
|
||||||
|
$sender_address = $matches['address'];
|
||||||
|
$sender_name = trim($matches['name'], '"\' ');
|
||||||
|
}
|
||||||
|
|
||||||
|
$to_address = $json_body->header_to[0];
|
||||||
|
$to_name = '-';
|
||||||
|
if (preg_match('/(?<name>.*?)<(?<address>.*?)>/i', $to_address, $matches)) {
|
||||||
|
$to_address = $matches['address'];
|
||||||
|
$to_name = trim($matches['name'], '"\' ');
|
||||||
|
}
|
||||||
|
|
||||||
$rcpt_final_mailboxes = array();
|
$rcpt_final_mailboxes = array();
|
||||||
|
|
||||||
// Loop through all rcpts
|
// Loop through all rcpts
|
||||||
@@ -229,9 +244,16 @@ foreach ($rcpt_final_mailboxes as $rcpt_final) {
|
|||||||
$post_fields = array(
|
$post_fields = array(
|
||||||
"token" => $api_data['token'],
|
"token" => $api_data['token'],
|
||||||
"user" => $api_data['key'],
|
"user" => $api_data['key'],
|
||||||
"title" => sprintf("%s", str_replace(array('{SUBJECT}', '{SENDER}'), array($subject, $sender), $title)),
|
"title" => sprintf("%s", str_replace(
|
||||||
|
array('{SUBJECT}', '{SENDER}', '{SENDER_NAME}', '{SENDER_ADDRESS}', '{TO_NAME}', '{TO_ADDRESS}'),
|
||||||
|
array($subject, $sender, $sender_name, $sender_address, $to_name, $to_address), $title)
|
||||||
|
),
|
||||||
"priority" => $priority,
|
"priority" => $priority,
|
||||||
"message" => sprintf("%s", str_replace(array('{SUBJECT}', '{SENDER}'), array($subject, $sender), $text))
|
"message" => sprintf("%s", str_replace(
|
||||||
|
array('{SUBJECT}', '{SENDER}', '{SENDER_NAME}', '{SENDER_ADDRESS}', '{TO_NAME}', '{TO_ADDRESS}', '\n'),
|
||||||
|
array($subject, $sender, $sender_name, $sender_address, $to_name, $to_address, PHP_EOL), $text)
|
||||||
|
),
|
||||||
|
"sound" => $attributes['sound'] ?? "pushover"
|
||||||
);
|
);
|
||||||
if ($attributes['evaluate_x_prio'] == "1" && $priority == 1) {
|
if ($attributes['evaluate_x_prio'] == "1" && $priority == 1) {
|
||||||
$post_fields['expire'] = 600;
|
$post_fields['expire'] = 600;
|
||||||
|
|||||||
@@ -32,8 +32,6 @@
|
|||||||
// );
|
// );
|
||||||
|
|
||||||
// self-signed is not trusted anymore
|
// self-signed is not trusted anymore
|
||||||
SOGoSieveServer = "sieve://dovecot:4190/?TLS=YES&tlsVerifyMode=none";
|
|
||||||
SOGoSMTPServer = "smtp://postfix:588/?TLS=YES&tlsVerifyMode=none";
|
|
||||||
WOPort = "0.0.0.0:20000";
|
WOPort = "0.0.0.0:20000";
|
||||||
SOGoMemcachedHost = "memcached";
|
SOGoMemcachedHost = "memcached";
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,16 @@
|
|||||||
|
html {
|
||||||
|
box-sizing: border-box;
|
||||||
|
overflow: -moz-scrollbars-vertical;
|
||||||
|
overflow-y: scroll;
|
||||||
|
}
|
||||||
|
|
||||||
|
*,
|
||||||
|
*:before,
|
||||||
|
*:after {
|
||||||
|
box-sizing: inherit;
|
||||||
|
}
|
||||||
|
|
||||||
|
body {
|
||||||
|
margin: 0;
|
||||||
|
background: #fafafa;
|
||||||
|
}
|
||||||
+2
-43
@@ -5,56 +5,15 @@
|
|||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<title>Swagger UI</title>
|
<title>Swagger UI</title>
|
||||||
<link rel="stylesheet" type="text/css" href="./swagger-ui.css" />
|
<link rel="stylesheet" type="text/css" href="./swagger-ui.css" />
|
||||||
|
<link rel="stylesheet" type="text/css" href="index.css" />
|
||||||
<link rel="icon" type="image/png" href="./favicon-32x32.png" sizes="32x32" />
|
<link rel="icon" type="image/png" href="./favicon-32x32.png" sizes="32x32" />
|
||||||
<link rel="icon" type="image/png" href="./favicon-16x16.png" sizes="16x16" />
|
<link rel="icon" type="image/png" href="./favicon-16x16.png" sizes="16x16" />
|
||||||
<style>
|
|
||||||
html
|
|
||||||
{
|
|
||||||
box-sizing: border-box;
|
|
||||||
overflow: -moz-scrollbars-vertical;
|
|
||||||
overflow-y: scroll;
|
|
||||||
}
|
|
||||||
|
|
||||||
*,
|
|
||||||
*:before,
|
|
||||||
*:after
|
|
||||||
{
|
|
||||||
box-sizing: inherit;
|
|
||||||
}
|
|
||||||
|
|
||||||
body
|
|
||||||
{
|
|
||||||
margin:0;
|
|
||||||
background: #fafafa;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
<div id="swagger-ui"></div>
|
<div id="swagger-ui"></div>
|
||||||
|
|
||||||
<script src="./swagger-ui-bundle.js" charset="UTF-8"> </script>
|
<script src="./swagger-ui-bundle.js" charset="UTF-8"> </script>
|
||||||
<script src="./swagger-ui-standalone-preset.js" charset="UTF-8"> </script>
|
<script src="./swagger-ui-standalone-preset.js" charset="UTF-8"> </script>
|
||||||
<script>
|
<script src="./swagger-initializer.js" charset="UTF-8"> </script>
|
||||||
window.onload = function() {
|
|
||||||
// Begin Swagger UI call region
|
|
||||||
const ui = SwaggerUIBundle({
|
|
||||||
url: "/api/openapi.yaml",
|
|
||||||
dom_id: '#swagger-ui',
|
|
||||||
deepLinking: true,
|
|
||||||
presets: [
|
|
||||||
SwaggerUIBundle.presets.apis,
|
|
||||||
SwaggerUIStandalonePreset
|
|
||||||
],
|
|
||||||
plugins: [
|
|
||||||
SwaggerUIBundle.plugins.DownloadUrl
|
|
||||||
],
|
|
||||||
layout: "StandaloneLayout"
|
|
||||||
});
|
|
||||||
// End Swagger UI call region
|
|
||||||
|
|
||||||
window.ui = ui;
|
|
||||||
};
|
|
||||||
</script>
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -13,7 +13,7 @@
|
|||||||
var isValid, qp, arr;
|
var isValid, qp, arr;
|
||||||
|
|
||||||
if (/code|token|error/.test(window.location.hash)) {
|
if (/code|token|error/.test(window.location.hash)) {
|
||||||
qp = window.location.hash.substring(1);
|
qp = window.location.hash.substring(1).replace('?', '&');
|
||||||
} else {
|
} else {
|
||||||
qp = location.search.substring(1);
|
qp = location.search.substring(1);
|
||||||
}
|
}
|
||||||
@@ -38,7 +38,7 @@
|
|||||||
authId: oauth2.auth.name,
|
authId: oauth2.auth.name,
|
||||||
source: "auth",
|
source: "auth",
|
||||||
level: "warning",
|
level: "warning",
|
||||||
message: "Authorization may be unsafe, passed state was changed in server Passed state wasn't returned from auth server"
|
message: "Authorization may be unsafe, passed state was changed in server. The passed state wasn't returned from auth server."
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -58,7 +58,7 @@
|
|||||||
authId: oauth2.auth.name,
|
authId: oauth2.auth.name,
|
||||||
source: "auth",
|
source: "auth",
|
||||||
level: "error",
|
level: "error",
|
||||||
message: oauthErrorMsg || "[Authorization failed]: no accessCode received from the server"
|
message: oauthErrorMsg || "[Authorization failed]: no accessCode received from the server."
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@@ -67,9 +67,13 @@
|
|||||||
window.close();
|
window.close();
|
||||||
}
|
}
|
||||||
|
|
||||||
window.addEventListener('DOMContentLoaded', function () {
|
if (document.readyState !== 'loading') {
|
||||||
run();
|
run();
|
||||||
});
|
} else {
|
||||||
|
document.addEventListener('DOMContentLoaded', function () {
|
||||||
|
run();
|
||||||
|
});
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
+344
-52
@@ -209,10 +209,17 @@ paths:
|
|||||||
- app_passwd
|
- app_passwd
|
||||||
- add
|
- add
|
||||||
- active: "1"
|
- active: "1"
|
||||||
app_name: emclient
|
username: info@domain.tld
|
||||||
|
app_name: wordpress
|
||||||
app_passwd: keyleudecticidechothistishownsan31
|
app_passwd: keyleudecticidechothistishownsan31
|
||||||
app_passwd2: keyleudecticidechothistishownsan31
|
app_passwd2: keyleudecticidechothistishownsan31
|
||||||
username: hello@mailcow.email
|
protocols:
|
||||||
|
- imap_access
|
||||||
|
- dav_access
|
||||||
|
- smtp_access
|
||||||
|
- eas_access
|
||||||
|
- pop3_access
|
||||||
|
- sieve_access
|
||||||
msg: app_passwd_added
|
msg: app_passwd_added
|
||||||
type: success
|
type: success
|
||||||
schema:
|
schema:
|
||||||
@@ -249,6 +256,13 @@ paths:
|
|||||||
app_name: wordpress
|
app_name: wordpress
|
||||||
app_passwd: keyleudecticidechothistishownsan31
|
app_passwd: keyleudecticidechothistishownsan31
|
||||||
app_passwd2: keyleudecticidechothistishownsan31
|
app_passwd2: keyleudecticidechothistishownsan31
|
||||||
|
protocols:
|
||||||
|
- imap_access
|
||||||
|
- dav_access
|
||||||
|
- smtp_access
|
||||||
|
- eas_access
|
||||||
|
- pop3_access
|
||||||
|
- sieve_access
|
||||||
properties:
|
properties:
|
||||||
active:
|
active:
|
||||||
description: is alias active or not
|
description: is alias active or not
|
||||||
@@ -497,27 +511,30 @@ paths:
|
|||||||
relay_all_recipients: "0"
|
relay_all_recipients: "0"
|
||||||
rl_frame: s
|
rl_frame: s
|
||||||
rl_value: "10"
|
rl_value: "10"
|
||||||
|
tags: ["tag1", "tag2"]
|
||||||
- null
|
- null
|
||||||
msg:
|
msg:
|
||||||
- domain_added
|
- domain_added
|
||||||
- domain.tld
|
- domain.tld
|
||||||
type: success
|
type: success
|
||||||
schema:
|
schema:
|
||||||
properties:
|
type: array
|
||||||
log:
|
items:
|
||||||
description: contains request object
|
type: object
|
||||||
items: {}
|
properties:
|
||||||
type: array
|
log:
|
||||||
msg:
|
description: contains request object
|
||||||
items: {}
|
items: {}
|
||||||
type: array
|
type: array
|
||||||
type:
|
msg:
|
||||||
enum:
|
items: {}
|
||||||
- success
|
type: array
|
||||||
- danger
|
type:
|
||||||
- error
|
enum:
|
||||||
type: string
|
- success
|
||||||
type: object
|
- danger
|
||||||
|
- error
|
||||||
|
type: string
|
||||||
description: OK
|
description: OK
|
||||||
headers: {}
|
headers: {}
|
||||||
tags:
|
tags:
|
||||||
@@ -544,6 +561,7 @@ paths:
|
|||||||
rl_frame: s
|
rl_frame: s
|
||||||
rl_value: "10"
|
rl_value: "10"
|
||||||
restart_sogo: "10"
|
restart_sogo: "10"
|
||||||
|
tags: ["tag1", "tag2"]
|
||||||
properties:
|
properties:
|
||||||
active:
|
active:
|
||||||
description: is domain active or not
|
description: is domain active or not
|
||||||
@@ -563,6 +581,11 @@ paths:
|
|||||||
domain:
|
domain:
|
||||||
description: Fully qualified domain name
|
description: Fully qualified domain name
|
||||||
type: string
|
type: string
|
||||||
|
gal:
|
||||||
|
description: >-
|
||||||
|
is domain global address list active or not, it enables
|
||||||
|
shared contacts accross domain in SOGo webmail
|
||||||
|
type: boolean
|
||||||
mailboxes:
|
mailboxes:
|
||||||
description: limit count of mailboxes associated with this domain
|
description: limit count of mailboxes associated with this domain
|
||||||
type: number
|
type: number
|
||||||
@@ -580,6 +603,9 @@ paths:
|
|||||||
if not, them you have to create "dummy" mailbox for each
|
if not, them you have to create "dummy" mailbox for each
|
||||||
address to relay
|
address to relay
|
||||||
type: boolean
|
type: boolean
|
||||||
|
relay_unknown_only:
|
||||||
|
description: Relay non-existing mailboxes only. Existing mailboxes will be delivered locally.
|
||||||
|
type: boolean
|
||||||
rl_frame:
|
rl_frame:
|
||||||
enum:
|
enum:
|
||||||
- s
|
- s
|
||||||
@@ -590,6 +616,11 @@ paths:
|
|||||||
rl_value:
|
rl_value:
|
||||||
description: rate limit value
|
description: rate limit value
|
||||||
type: number
|
type: number
|
||||||
|
tags:
|
||||||
|
description: tags for this Domain
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
type: object
|
type: object
|
||||||
summary: Create domain
|
summary: Create domain
|
||||||
/api/v1/add/domain-admin:
|
/api/v1/add/domain-admin:
|
||||||
@@ -1010,6 +1041,7 @@ paths:
|
|||||||
force_pw_update: "1"
|
force_pw_update: "1"
|
||||||
tls_enforce_in: "1"
|
tls_enforce_in: "1"
|
||||||
tls_enforce_out: "1"
|
tls_enforce_out: "1"
|
||||||
|
tags: ["tag1", "tag2"]
|
||||||
- null
|
- null
|
||||||
msg:
|
msg:
|
||||||
- mailbox_added
|
- mailbox_added
|
||||||
@@ -1054,6 +1086,7 @@ paths:
|
|||||||
force_pw_update: "1"
|
force_pw_update: "1"
|
||||||
tls_enforce_in: "1"
|
tls_enforce_in: "1"
|
||||||
tls_enforce_out: "1"
|
tls_enforce_out: "1"
|
||||||
|
tags: ["tag1", "tag2"]
|
||||||
properties:
|
properties:
|
||||||
active:
|
active:
|
||||||
description: is mailbox active or not
|
description: is mailbox active or not
|
||||||
@@ -1934,21 +1967,23 @@ paths:
|
|||||||
- domain2.tld
|
- domain2.tld
|
||||||
type: success
|
type: success
|
||||||
schema:
|
schema:
|
||||||
properties:
|
type: array
|
||||||
log:
|
items:
|
||||||
description: contains request object
|
type: object
|
||||||
items: {}
|
properties:
|
||||||
type: array
|
log:
|
||||||
msg:
|
description: contains request object
|
||||||
items: {}
|
items: {}
|
||||||
type: array
|
type: array
|
||||||
type:
|
msg:
|
||||||
enum:
|
items: {}
|
||||||
- success
|
type: array
|
||||||
- danger
|
type:
|
||||||
- error
|
enum:
|
||||||
type: string
|
- success
|
||||||
type: object
|
- danger
|
||||||
|
- error
|
||||||
|
type: string
|
||||||
description: OK
|
description: OK
|
||||||
headers: {}
|
headers: {}
|
||||||
tags:
|
tags:
|
||||||
@@ -1959,14 +1994,15 @@ paths:
|
|||||||
content:
|
content:
|
||||||
application/json:
|
application/json:
|
||||||
schema:
|
schema:
|
||||||
|
type: object
|
||||||
example:
|
example:
|
||||||
- domain.tld
|
- domain.tld
|
||||||
- domain2.tld
|
- domain2.tld
|
||||||
properties:
|
properties:
|
||||||
items:
|
items:
|
||||||
description: contains list of domains you want to delete
|
type: array
|
||||||
type: object
|
items:
|
||||||
type: object
|
type: string
|
||||||
summary: Delete domain
|
summary: Delete domain
|
||||||
/api/v1/delete/domain-admin:
|
/api/v1/delete/domain-admin:
|
||||||
post:
|
post:
|
||||||
@@ -2716,6 +2752,140 @@ paths:
|
|||||||
type: object
|
type: object
|
||||||
type: object
|
type: object
|
||||||
summary: Delete Transport Maps
|
summary: Delete Transport Maps
|
||||||
|
"/api/v1/delete/mailbox/tag/{mailbox}":
|
||||||
|
post:
|
||||||
|
parameters:
|
||||||
|
- description: name of mailbox
|
||||||
|
in: path
|
||||||
|
name: mailbox
|
||||||
|
example: info@domain.tld
|
||||||
|
required: true
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
responses:
|
||||||
|
"401":
|
||||||
|
$ref: "#/components/responses/Unauthorized"
|
||||||
|
"200":
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
examples:
|
||||||
|
response:
|
||||||
|
value:
|
||||||
|
- log:
|
||||||
|
- mailbox
|
||||||
|
- delete
|
||||||
|
- tags_mailbox
|
||||||
|
- tags:
|
||||||
|
- tag1
|
||||||
|
- tag2
|
||||||
|
mailbox: info@domain.tld
|
||||||
|
- null
|
||||||
|
msg:
|
||||||
|
- mailbox_modified
|
||||||
|
- info@domain.tld
|
||||||
|
type: success
|
||||||
|
schema:
|
||||||
|
properties:
|
||||||
|
log:
|
||||||
|
description: contains request object
|
||||||
|
items: {}
|
||||||
|
type: array
|
||||||
|
msg:
|
||||||
|
items: {}
|
||||||
|
type: array
|
||||||
|
type:
|
||||||
|
enum:
|
||||||
|
- success
|
||||||
|
- danger
|
||||||
|
- error
|
||||||
|
type: string
|
||||||
|
type: object
|
||||||
|
description: OK
|
||||||
|
headers: {}
|
||||||
|
tags:
|
||||||
|
- Mailboxes
|
||||||
|
description: You can delete one or more mailbox tags.
|
||||||
|
operationId: Delete mailbox tags
|
||||||
|
requestBody:
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
example:
|
||||||
|
- tag1
|
||||||
|
- tag2
|
||||||
|
properties:
|
||||||
|
items:
|
||||||
|
description: contains list of mailboxes you want to delete
|
||||||
|
type: object
|
||||||
|
type: object
|
||||||
|
summary: Delete mailbox tags
|
||||||
|
"/api/v1/delete/domain/tag/{domain}":
|
||||||
|
post:
|
||||||
|
parameters:
|
||||||
|
- description: name of domain
|
||||||
|
in: path
|
||||||
|
name: domain
|
||||||
|
example: domain.tld
|
||||||
|
required: true
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
responses:
|
||||||
|
"401":
|
||||||
|
$ref: "#/components/responses/Unauthorized"
|
||||||
|
"200":
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
examples:
|
||||||
|
response:
|
||||||
|
value:
|
||||||
|
- log:
|
||||||
|
- mailbox
|
||||||
|
- delete
|
||||||
|
- tags_domain
|
||||||
|
- tags:
|
||||||
|
- tag1
|
||||||
|
- tag2
|
||||||
|
domain: domain.tld
|
||||||
|
- null
|
||||||
|
msg:
|
||||||
|
- domain_modified
|
||||||
|
- domain.tld
|
||||||
|
type: success
|
||||||
|
schema:
|
||||||
|
properties:
|
||||||
|
log:
|
||||||
|
description: contains request object
|
||||||
|
items: {}
|
||||||
|
type: array
|
||||||
|
msg:
|
||||||
|
items: {}
|
||||||
|
type: array
|
||||||
|
type:
|
||||||
|
enum:
|
||||||
|
- success
|
||||||
|
- danger
|
||||||
|
- error
|
||||||
|
type: string
|
||||||
|
type: object
|
||||||
|
description: OK
|
||||||
|
headers: {}
|
||||||
|
tags:
|
||||||
|
- Domains
|
||||||
|
description: You can delete one or more domain tags.
|
||||||
|
operationId: Delete domain tags
|
||||||
|
requestBody:
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
example:
|
||||||
|
- tag1
|
||||||
|
- tag2
|
||||||
|
properties:
|
||||||
|
items:
|
||||||
|
description: contains list of domains you want to delete
|
||||||
|
type: object
|
||||||
|
type: object
|
||||||
|
summary: Delete domain tags
|
||||||
/api/v1/edit/alias:
|
/api/v1/edit/alias:
|
||||||
post:
|
post:
|
||||||
responses:
|
responses:
|
||||||
@@ -2820,23 +2990,25 @@ paths:
|
|||||||
$ref: "#/components/responses/Unauthorized"
|
$ref: "#/components/responses/Unauthorized"
|
||||||
"200":
|
"200":
|
||||||
content:
|
content:
|
||||||
"*/*":
|
application/json:
|
||||||
schema:
|
schema:
|
||||||
properties:
|
type: array
|
||||||
log:
|
items:
|
||||||
description: contains request object
|
type: object
|
||||||
items: {}
|
properties:
|
||||||
type: array
|
log:
|
||||||
msg:
|
type: array
|
||||||
items: {}
|
description: contains request object
|
||||||
type: array
|
items: {}
|
||||||
type:
|
msg:
|
||||||
enum:
|
type: array
|
||||||
- success
|
items: {}
|
||||||
- danger
|
type:
|
||||||
- error
|
enum:
|
||||||
type: string
|
- success
|
||||||
type: object
|
- danger
|
||||||
|
- error
|
||||||
|
type: string
|
||||||
description: OK
|
description: OK
|
||||||
headers: {}
|
headers: {}
|
||||||
tags:
|
tags:
|
||||||
@@ -2865,6 +3037,7 @@ paths:
|
|||||||
quota: "10240"
|
quota: "10240"
|
||||||
relay_all_recipients: "0"
|
relay_all_recipients: "0"
|
||||||
relayhost: "2"
|
relayhost: "2"
|
||||||
|
tags: ["tag3", "tag4"]
|
||||||
items: domain.tld
|
items: domain.tld
|
||||||
properties:
|
properties:
|
||||||
attr:
|
attr:
|
||||||
@@ -2903,13 +3076,33 @@ paths:
|
|||||||
if not, them you have to create "dummy" mailbox for each
|
if not, them you have to create "dummy" mailbox for each
|
||||||
address to relay
|
address to relay
|
||||||
type: boolean
|
type: boolean
|
||||||
|
relay_unknown_only:
|
||||||
|
description: Relay non-existing mailboxes only. Existing mailboxes will be delivered locally.
|
||||||
|
type: boolean
|
||||||
relayhost:
|
relayhost:
|
||||||
description: id of relayhost
|
description: id of relayhost
|
||||||
type: number
|
type: number
|
||||||
|
rl_frame:
|
||||||
|
enum:
|
||||||
|
- s
|
||||||
|
- m
|
||||||
|
- h
|
||||||
|
- d
|
||||||
|
type: string
|
||||||
|
rl_value:
|
||||||
|
description: rate limit value
|
||||||
|
type: number
|
||||||
|
tags:
|
||||||
|
description: tags for this Domain
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
type: object
|
type: object
|
||||||
items:
|
items:
|
||||||
description: contains list of domain names you want update
|
description: contains list of domain names you want update
|
||||||
type: object
|
type: array
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
type: object
|
type: object
|
||||||
summary: Update domain
|
summary: Update domain
|
||||||
/api/v1/edit/fail2ban:
|
/api/v1/edit/fail2ban:
|
||||||
@@ -3019,6 +3212,7 @@ paths:
|
|||||||
sogo_access: "1"
|
sogo_access: "1"
|
||||||
username:
|
username:
|
||||||
- info@domain.tld
|
- info@domain.tld
|
||||||
|
tags: ["tag3", "tag4"]
|
||||||
- null
|
- null
|
||||||
msg:
|
msg:
|
||||||
- mailbox_modified
|
- mailbox_modified
|
||||||
@@ -3066,6 +3260,7 @@ paths:
|
|||||||
- domain3.tld
|
- domain3.tld
|
||||||
- "*"
|
- "*"
|
||||||
sogo_access: "1"
|
sogo_access: "1"
|
||||||
|
tags: ["tag3", "tag4"]
|
||||||
items:
|
items:
|
||||||
- info@domain.tld
|
- info@domain.tld
|
||||||
properties:
|
properties:
|
||||||
@@ -3154,6 +3349,7 @@ paths:
|
|||||||
evaluate_x_prio: "0"
|
evaluate_x_prio: "0"
|
||||||
key: 21e8918e1jksdjcpis712
|
key: 21e8918e1jksdjcpis712
|
||||||
only_x_prio: "0"
|
only_x_prio: "0"
|
||||||
|
sound: "pushover"
|
||||||
senders: ""
|
senders: ""
|
||||||
senders_regex: ""
|
senders_regex: ""
|
||||||
text: ""
|
text: ""
|
||||||
@@ -3197,6 +3393,7 @@ paths:
|
|||||||
evaluate_x_prio: "0"
|
evaluate_x_prio: "0"
|
||||||
key: 21e8918e1jksdjcpis712
|
key: 21e8918e1jksdjcpis712
|
||||||
only_x_prio: "0"
|
only_x_prio: "0"
|
||||||
|
sound: "pushover"
|
||||||
senders: ""
|
senders: ""
|
||||||
senders_regex: ""
|
senders_regex: ""
|
||||||
text: ""
|
text: ""
|
||||||
@@ -3218,6 +3415,9 @@ paths:
|
|||||||
only_x_prio:
|
only_x_prio:
|
||||||
description: Only send push for prio mails
|
description: Only send push for prio mails
|
||||||
type: number
|
type: number
|
||||||
|
sound:
|
||||||
|
description: Set notification sound
|
||||||
|
type: string
|
||||||
senders:
|
senders:
|
||||||
description: Only send push for emails from these senders
|
description: Only send push for emails from these senders
|
||||||
type: string
|
type: string
|
||||||
@@ -3793,6 +3993,13 @@ paths:
|
|||||||
- all
|
- all
|
||||||
- mailcow.tld
|
- mailcow.tld
|
||||||
type: string
|
type: string
|
||||||
|
- description: comma seperated list of tags to filter by
|
||||||
|
example: "tag1,tag2"
|
||||||
|
in: query
|
||||||
|
name: tags
|
||||||
|
required: false
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
- description: e.g. api-key-string
|
- description: e.g. api-key-string
|
||||||
example: api-key-string
|
example: api-key-string
|
||||||
in: header
|
in: header
|
||||||
@@ -3831,6 +4038,7 @@ paths:
|
|||||||
relay_all_recipients: "0"
|
relay_all_recipients: "0"
|
||||||
relayhost: "0"
|
relayhost: "0"
|
||||||
rl: false
|
rl: false
|
||||||
|
tags: ["tag1", "tag2"]
|
||||||
- active: "1"
|
- active: "1"
|
||||||
aliases_in_domain: 0
|
aliases_in_domain: 0
|
||||||
aliases_left: 400
|
aliases_left: 400
|
||||||
@@ -3853,6 +4061,7 @@ paths:
|
|||||||
relay_all_recipients: "0"
|
relay_all_recipients: "0"
|
||||||
relayhost: "0"
|
relayhost: "0"
|
||||||
rl: false
|
rl: false
|
||||||
|
tags: ["tag3", "tag4"]
|
||||||
description: OK
|
description: OK
|
||||||
headers: {}
|
headers: {}
|
||||||
tags:
|
tags:
|
||||||
@@ -4345,6 +4554,13 @@ paths:
|
|||||||
- all
|
- all
|
||||||
- user@domain.tld
|
- user@domain.tld
|
||||||
type: string
|
type: string
|
||||||
|
- description: comma seperated list of tags to filter by
|
||||||
|
example: "tag1,tag2"
|
||||||
|
in: query
|
||||||
|
name: tags
|
||||||
|
required: false
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
- description: e.g. api-key-string
|
- description: e.g. api-key-string
|
||||||
example: api-key-string
|
example: api-key-string
|
||||||
in: header
|
in: header
|
||||||
@@ -4382,6 +4598,7 @@ paths:
|
|||||||
rl: false
|
rl: false
|
||||||
spam_aliases: 0
|
spam_aliases: 0
|
||||||
username: info@doman3.tld
|
username: info@doman3.tld
|
||||||
|
tags: ["tag1", "tag2"]
|
||||||
description: OK
|
description: OK
|
||||||
headers: {}
|
headers: {}
|
||||||
tags:
|
tags:
|
||||||
@@ -5072,6 +5289,27 @@ paths:
|
|||||||
of used storage.
|
of used storage.
|
||||||
operationId: Get vmail status
|
operationId: Get vmail status
|
||||||
summary: Get vmail status
|
summary: Get vmail status
|
||||||
|
/api/v1/get/status/version:
|
||||||
|
get:
|
||||||
|
responses:
|
||||||
|
"401":
|
||||||
|
$ref: "#/components/responses/Unauthorized"
|
||||||
|
"200":
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
examples:
|
||||||
|
response:
|
||||||
|
value:
|
||||||
|
version: "2022-04"
|
||||||
|
description: OK
|
||||||
|
headers: {}
|
||||||
|
tags:
|
||||||
|
- Status
|
||||||
|
description: >-
|
||||||
|
Using this endpoint you can get the current running release of this
|
||||||
|
instance.
|
||||||
|
operationId: Get version status
|
||||||
|
summary: Get version status
|
||||||
/api/v1/get/syncjobs/all/no_log:
|
/api/v1/get/syncjobs/all/no_log:
|
||||||
get:
|
get:
|
||||||
responses:
|
responses:
|
||||||
@@ -5268,6 +5506,60 @@ paths:
|
|||||||
attr:
|
attr:
|
||||||
spam_score: "8,15"
|
spam_score: "8,15"
|
||||||
summary: Edit mailbox spam filter score
|
summary: Edit mailbox spam filter score
|
||||||
|
"/api/v1/get/mailbox/all/{domain}":
|
||||||
|
get:
|
||||||
|
parameters:
|
||||||
|
- description: name of domain
|
||||||
|
in: path
|
||||||
|
name: domain
|
||||||
|
required: false
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
- description: e.g. api-key-string
|
||||||
|
example: api-key-string
|
||||||
|
in: header
|
||||||
|
name: X-API-Key
|
||||||
|
required: false
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
responses:
|
||||||
|
"401":
|
||||||
|
$ref: "#/components/responses/Unauthorized"
|
||||||
|
"200":
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
examples:
|
||||||
|
response:
|
||||||
|
value:
|
||||||
|
- active: "1"
|
||||||
|
attributes:
|
||||||
|
force_pw_update: "0"
|
||||||
|
mailbox_format: "maildir:"
|
||||||
|
quarantine_notification: never
|
||||||
|
sogo_access: "1"
|
||||||
|
tls_enforce_in: "0"
|
||||||
|
tls_enforce_out: "0"
|
||||||
|
domain: domain3.tld
|
||||||
|
is_relayed: 0
|
||||||
|
local_part: info
|
||||||
|
max_new_quota: 10737418240
|
||||||
|
messages: 0
|
||||||
|
name: Full name
|
||||||
|
percent_class: success
|
||||||
|
percent_in_use: 0
|
||||||
|
quota: 3221225472
|
||||||
|
quota_used: 0
|
||||||
|
rl: false
|
||||||
|
spam_aliases: 0
|
||||||
|
username: info@domain3.tld
|
||||||
|
tags: ["tag1", "tag2"]
|
||||||
|
description: OK
|
||||||
|
headers: {}
|
||||||
|
tags:
|
||||||
|
- Mailboxes
|
||||||
|
description: You can list all mailboxes existing in system for a specific domain.
|
||||||
|
operationId: Get mailboxes of a domain
|
||||||
|
summary: Get mailboxes of a domain
|
||||||
|
|
||||||
tags:
|
tags:
|
||||||
- name: Domains
|
- name: Domains
|
||||||
|
|||||||
@@ -0,0 +1,19 @@
|
|||||||
|
window.onload = function() {
|
||||||
|
// Begin Swagger UI call region
|
||||||
|
const ui = SwaggerUIBundle({
|
||||||
|
urls: [{url: "/api/openapi.yaml", name: "mailcow API"}],
|
||||||
|
dom_id: '#swagger-ui',
|
||||||
|
deepLinking: true,
|
||||||
|
presets: [
|
||||||
|
SwaggerUIBundle.presets.apis,
|
||||||
|
SwaggerUIStandalonePreset
|
||||||
|
],
|
||||||
|
plugins: [
|
||||||
|
SwaggerUIBundle.plugins.DownloadUrl
|
||||||
|
],
|
||||||
|
layout: "StandaloneLayout"
|
||||||
|
});
|
||||||
|
// End Swagger UI call region
|
||||||
|
|
||||||
|
window.ui = ui;
|
||||||
|
};
|
||||||
@@ -1,3 +1,3 @@
|
|||||||
/*! For license information please see swagger-ui-bundle.js.LICENSE.txt */
|
/*! For license information please see swagger-ui-bundle.js.LICENSE.txt */
|
||||||
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.SwaggerUIBundle=t():e.SwaggerUIBundle=t()}(this,(function(){return function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="/dist",n(n.s=534)}([function(e,t,n){"use strict";e.exports=n(133)},function(e,t,n){e.exports=function(){"use strict";var e=Array.prototype.slice;function t(e,t){t&&(e.prototype=Object.create(t.prototype)),e.prototype.constructor=e}function n(e){return i(e)?e:J(e)}function r(e){return s(e)?e:K(e)}function o(e){return u(e)?e:Y(e)}function a(e){return i(e)&&!c(e)?e:G(e)}function i(e){return!(!e||!e[p])}function s(e){return!(!e||!e[f])}function u(e){return!(!e||!e[h])}function c(e){return s(e)||u(e)}function l(e){return!(!e||!e[d])}t(r,n),t(o,n),t(a,n),n.isIterable=i,n.isKeyed=s,n.isIndexed=u,n.isAssociative=c,n.isOrdered=l,n.Keyed=r,n.Indexed=o,n.Set=a;var p="@@__IMMUTABLE_ITERABLE__@@",f="@@__IMMUTABLE_KEYED__@@",h="@@__IMMUTABLE_INDEXED__@@",d="@@__IMMUTABLE_ORDERED__@@",m="delete",v=5,g=1<<v,y=g-1,b={},_={value:!1},w={value:!1};function x(e){return e.value=!1,e}function E(e){e&&(e.value=!0)}function S(){}function C(e,t){t=t||0;for(var n=Math.max(0,e.length-t),r=new Array(n),o=0;o<n;o++)r[o]=e[o+t];return r}function A(e){return void 0===e.size&&(e.size=e.__iterate(k)),e.size}function O(e,t){if("number"!=typeof t){var n=t>>>0;if(""+n!==t||4294967295===n)return NaN;t=n}return t<0?A(e)+t:t}function k(){return!0}function j(e,t,n){return(0===e||void 0!==n&&e<=-n)&&(void 0===t||void 0!==n&&t>=n)}function T(e,t){return P(e,t,0)}function I(e,t){return P(e,t,t)}function P(e,t,n){return void 0===e?n:e<0?Math.max(0,t+e):void 0===t?e:Math.min(t,e)}var N=0,M=1,R=2,D="function"==typeof Symbol&&Symbol.iterator,L="@@iterator",B=D||L;function F(e){this.next=e}function U(e,t,n,r){var o=0===e?t:1===e?n:[t,n];return r?r.value=o:r={value:o,done:!1},r}function q(){return{value:void 0,done:!0}}function z(e){return!!H(e)}function V(e){return e&&"function"==typeof e.next}function W(e){var t=H(e);return t&&t.call(e)}function H(e){var t=e&&(D&&e[D]||e[L]);if("function"==typeof t)return t}function $(e){return e&&"number"==typeof e.length}function J(e){return null==e?ie():i(e)?e.toSeq():ce(e)}function K(e){return null==e?ie().toKeyedSeq():i(e)?s(e)?e.toSeq():e.fromEntrySeq():se(e)}function Y(e){return null==e?ie():i(e)?s(e)?e.entrySeq():e.toIndexedSeq():ue(e)}function G(e){return(null==e?ie():i(e)?s(e)?e.entrySeq():e:ue(e)).toSetSeq()}F.prototype.toString=function(){return"[Iterator]"},F.KEYS=N,F.VALUES=M,F.ENTRIES=R,F.prototype.inspect=F.prototype.toSource=function(){return this.toString()},F.prototype[B]=function(){return this},t(J,n),J.of=function(){return J(arguments)},J.prototype.toSeq=function(){return this},J.prototype.toString=function(){return this.__toString("Seq {","}")},J.prototype.cacheResult=function(){return!this._cache&&this.__iterateUncached&&(this._cache=this.entrySeq().toArray(),this.size=this._cache.length),this},J.prototype.__iterate=function(e,t){return pe(this,e,t,!0)},J.prototype.__iterator=function(e,t){return fe(this,e,t,!0)},t(K,J),K.prototype.toKeyedSeq=function(){return this},t(Y,J),Y.of=function(){return Y(arguments)},Y.prototype.toIndexedSeq=function(){return this},Y.prototype.toString=function(){return this.__toString("Seq [","]")},Y.prototype.__iterate=function(e,t){return pe(this,e,t,!1)},Y.prototype.__iterator=function(e,t){return fe(this,e,t,!1)},t(G,J),G.of=function(){return G(arguments)},G.prototype.toSetSeq=function(){return this},J.isSeq=ae,J.Keyed=K,J.Set=G,J.Indexed=Y;var Z,X,Q,ee="@@__IMMUTABLE_SEQ__@@";function te(e){this._array=e,this.size=e.length}function ne(e){var t=Object.keys(e);this._object=e,this._keys=t,this.size=t.length}function re(e){this._iterable=e,this.size=e.length||e.size}function oe(e){this._iterator=e,this._iteratorCache=[]}function ae(e){return!(!e||!e[ee])}function ie(){return Z||(Z=new te([]))}function se(e){var t=Array.isArray(e)?new te(e).fromEntrySeq():V(e)?new oe(e).fromEntrySeq():z(e)?new re(e).fromEntrySeq():"object"==typeof e?new ne(e):void 0;if(Line truncated
|
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.SwaggerUIBundle=t():e.SwaggerUIBundle=t()}(this,(function(){return(()=>{var e={17967:(e,t)=>{"use strict";t.N=void 0;var r=/^([^\w]*)(javascript|data|vbscript)/im,n=/&#(\w+)(^\w|;)?/g,o=/[\u0000-\u001F\u007F-\u009F\u2000-\u200D\uFEFF]/gim,a=/^([^:]+):/gm,i=[".","/"];t.N=function(e){var t,s=(t=e||"",t.replace(n,(function(e,t){return String.fromCharCode(t)}))).replace(o,"").trim();if(!s)return"about:blank";if(function(e){return i.indexOf(e[0])>-1}(s))return s;var l=s.match(a);if(!l)return s;var u=l[0];return r.test(u)?"about:blank":s}},53795:(e,t,r)=>{"use strict";r.d(t,{Z:()=>P});var n=r(23101),o=r.n(n),a=r(61125),i=r.n(a),s=r(11882),l=r.n(s),u=r(97606),c=r.n(u),p=r(67294),f=r(43393);function h(e){return h="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},h(e)}function d(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function m(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function g(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function v(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function y(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?v(r,!0).forEach((function(t){g(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):v(r).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function b(e){return b=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},b(e)}function w(e,t){return w=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},w(e,t)}function E(e,t){return!t||"object"!=typeof t&&"function"!=typeof t?function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e):t}var x={};function _(e,t,r){return function(e){return null==e}(e)?r:function(e){return null!==e&&"object"===h(e)&&"function"==typeof e.get&&"function"==typeof e.has}(e)?e.has(t)?e.get(t):r:hasOwnProperty.call(e,t)?e[t]:r}function S(e,t,r){for(var n=0;n!==t.length;)if((e=_(e,t[n++],x))===x)return r;return e}function A(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},n=k(t,r),o=e||Object.keys(y({},r,{},t));return o.every(n)}function k(e,t){return function(r){if("string"==typeof r)return(0,f.is)(t[r],e[r]);if(Array.isArray(r))return(0,f.is)(S(t,r),S(e,r));throw new TypeError("Invalid key: expected Array or string: "+r)}}var C=function(e){function t(){return d(this,t),E(this,b(t).apply(this,arguments))}var r,n,o;return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&w(e,t)}(t,e),r=t,n=[{key:"shouldComponentUpdate",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return!A(this.updateOnProps,this.props,e,"updateOnProps")||!A(this.updateOnStates,this.state,t,"updateOnStates")}}],n&&m(r.prototype,n),o&&m(r,o),t}(p.Component);const O=C;var j=r(23930),I=r.n(j),N=r(45697),T=r.n(N);class P extends O{constructor(){super(...arguments),i()(this,"getModelName",(e=>-1!==l()(e).call(e,"#/definitions/")?e.replace(/^.*#\/definitions\//,""):-1!==l()(e).call(e,"#/components/schemas/")?e.replace(/^.*#\/components\/schemas\//,""):void 0)),i()(this,"getRefSchema",(e=>{let{specSelectors:t}=this.props;return t.findDefinition(e)}))}render(){let{getComponent:e,getConfigs:t,specSelectors:n,schema:a,required:i,name:s,isRef:l,specPath:u,displayName:c,includeReadOnly:f,includeWriteOnly:h}=this.props;const d=e("ObjectModel"),m=e("ArrayModel"),g=e("PrimitiveModel");let v="object",y=a&&a.get("$$ref");if(!s&&y&&(s=this.getModelName(y)),!a&&y&&(a=this.getRefSchema(s)),!a)return p.createElement("span",{className:"model model-title"},p.createElement("span",{className:"model-title__text"},c||s),p.createElement("img",{src:r(2517),height:"20px",width:"20px"}));const b=n.isOAS3()&&a.get("deprecated");switch(l=void 0!==l?l:!!y,v=a&&a.get("type")||v,v){case"object":return p.createElement(d,o()({className:"object"},this.props,{specPath:u,getConfigs:t,schema:a,name:s,deprecated:b,isRef:l,includeReadOnly:f,includeWriteOnly:h}));case"array":return p.createElement(m,o()({className:"Line truncated
|
||||||
//# sourceMappingURL=swagger-ui-bundle.js.map
|
//# sourceMappingURL=swagger-ui-bundle.js.map
|
||||||
@@ -1 +1 @@
|
|||||||
{"version":3,"sources":["webpack://SwaggerUIBundle/webpack/universalModuleDefinition","webpack://SwaggerUIBundle/webpack/bootstrap","webpack://SwaggerUIBundle/./node_modules/react/react.js","webpack://SwaggerUIBundle/./node_modules/immutable/dist/immutable.js","webpack://SwaggerUIBundle/./node_modules/@babel/runtime-corejs3/core-js-stable/instance/concat.js","webpack://SwaggerUIBundle/./node_modules/@babel/runtime-corejs3/helpers/defineProperty.js","webpack://SwaggerUIBundle/./node_modules/@babel/runtime-corejs3/core-js-stable/instance/map.js","webpack://SwaggerUIBundle/./src/core/utils.js","webpack://SwaggerUIBundle/./node_modules/@babel/runtime-corejs3/helpers/classCallCheck.js","webpack://SwaggerUIBundle/./node_modules/@babel/runtime-corejs3/helpers/createClass.js","webpack://SwaggerUIBundle/./node_modules/@babel/runtime-corejs3/helpers/inherits.js","webpack://SwaggerUIBundle/./node_modules/@babel/runtime-corejs3/helpers/createSuper.js","webpack://SwaggerUIBundle/./node_modules/@babel/runtime-corejs3/helpers/assertThisInitialized.js","webpack://SwaggerUIBundle/./node_modules/prop-types/index.js","webpack://SwaggerUIBundle/./node_modules/@babel/runtime-corejs3/core-js-stable/instance/filter.js","webpack://SwaggerUIBundle/./node_modules/@babel/runtime-corejs3/helpers/slicedToArray.js","webpack://SwaggerUIBundle/./node_modules/@babel/runtime-corejs3/helpers/toConsumableArray.js","webpack://SwaggerUIBundle/./node_modules/@babel/runtime-corejs3/core-js-stable/object/keys.js","webpack://SwaggerUIBundle/./node_modules/reselect/es/index.js","webpack://SwaggerUIBundle/./node_modules/@babel/runtime-corejs3/core-js-stable/instance/index-of.js","webpack://SwaggerUIBundle/./node_modules/@babel/runtime-corejs3/helpers/typeof.js","webpack://SwaggerUIBundle/./node_modules/@babel/runtime-corejs3/core-js-stable/instance/slice.js","webpack://SwaggerUIBundle/./node_modules/@babel/runtime-corejs3/core-js-stable/object/assign.js","webpack://SwaggerUIBundle/./node_modules/@babel/runtime-corejs3/core-js-stable/instance/for-each.js","webpack://SwaggerUIBundle/./node_modules/core-js-pure/internals/export.js","webpack://SwaggerUIBundle/./node_modules/@babel/runtime-corejs3/core-js-stable/array/is-array.js","webpack://SwaggerUIBundle/./node_modules/@babel/runtime-corejs3/helpers/objectSpread2.js","webpack://SwaggerUIBundle/./node_modules/fbjs/lib/invariant.js","webpack://SwaggerUIBundle/./src/core/window.js","webpack://SwaggerUIBundle/./node_modules/react-immutable-proptypes/dist/ImmutablePropTypes.js","webpack://SwaggerUIBundle/./node_modules/@babel/runtime-corejs3/helpers/extends.js","webpack://SwaggerUIBundle/./node_modules/@babel/runtime-corejs3/core-js-stable/instance/reduce.js","webpack://SwaggerUIBundle/./node_modules/react-dom/lib/reactProdInvariant.js","webpack://SwaggerUIBundle/./node_modules/@babel/runtime-corejs3/core-js-stable/instance/includes.js","webpack://SwaggerUIBundle/./node_modules/@babel/runtime-corejs3/core-js-stable/json/stringify.js","webpack://SwaggerUIBundle/./node_modules/core-js-pure/internals/path.js","webpack://SwaggerUIBundle/./node_modules/fbjs/lib/warning.js","webpack://SwaggerUIBundle/./src/core/plugins/oas3/helpers.jsx","webpack://SwaggerUIBundle/./node_modules/@babel/runtime-corejs3/core-js-stable/instance/bind.js","webpack://SwaggerUIBundle/./node_modules/core-js-pure/internals/fails.js","webpack://SwaggerUIBundle/./node_modules/object-assign/index.js","webpack://SwaggerUIBundle/./node_modules/@babel/runtime-corejs3/regenerator/index.js","webpack://SwaggerUIBundle/./node_modules/core-js-pure/internals/global.js","webpack://SwaggerUIBundle/./node_modules/core-js-pure/internals/well-known-symbol.js","webpack://SwaggerUIBundle/./node_modules/core-js-pure/internals/entry-virtual.js","webpack://SwaggerUIBundle/./node_modules/lodash/get.js","webpack://SwaggerUIBundle/./node_modules/core-js-pure/internals/define-well-known-symbol.js","webpack://SwaggerUIBundle/./node_modules/react-dom/lib/ReactDOMComponentTree.js","webpack://SwaggerUIBundle/./src/core/plugins/spec/actions.js","webpack://SwaggerUIBundle/./node_modules/core-js-pure/internals/is-object.js","webpack://SwaggerUIBundle/./node_modules/core-js-pure/internals/descriptors.js","webpack://SwaggerUIBundle/./node_modules/@babel/runtime-corejs3/helpers/createForOfIteratorHelper.js","webpack://SwaggerUIBundle/./node_modules/classnames/index.js","webpack://SwaggerUIBundle/(webpack)/buildin/global.js","webpack://SwaggerUIBundle/./node_modules/core-js-pure/internals/an-object.js","webpack://SwaggerUIBundle/./node_modules/@babel/runtime-corejs3/helpers/objectWithoutProperties.js","webpack://SwaggerUIBundle/./src/core/plugins/oas3/actions.js","webpack://SwaggerUIBundle/./node_modules/core-js-pure/internals/has.js","webpack://SwaggerUIBundle/./node_modules/lodash/isArray.js","webpack://SwaggerUIBundle/./node_modules/fbjs/lib/ExecutionEnvironment.js","webpack://SwaggerUIBundle/./node_modules/@babel/runtime-corejs3/core-js-stable/instance/find.js","webpack:Line truncated
|
{"version":3,"file":"swagger-ui-bundle.js","mappings":"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 truncated
|
||||||
@@ -1,3 +1,3 @@
|
|||||||
/*! For license information please see swagger-ui-es-bundle-core.js.LICENSE.txt */
|
/*! For license information please see swagger-ui-es-bundle-core.js.LICENSE.txt */
|
||||||
module.exports=function(e){var t={};function n(r){if(t[r])return t[r].exports;var a=t[r]={i:r,l:!1,exports:{}};return e[r].call(a.exports,a,a.exports,n),a.l=!0,a.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var a in e)n.d(r,a,function(t){return e[t]}.bind(null,a));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="/dist",n(n.s=404)}([function(e,t){e.exports=require("react")},function(e,t){e.exports=require("immutable")},function(e,t,n){e.exports=n(438)},function(e,t,n){var r=n(195);e.exports=function(e,t,n){return t in e?r(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e},e.exports.default=e.exports,e.exports.__esModule=!0},function(e,t,n){e.exports=n(467)},function(e,t,n){"use strict";(function(e){n.d(t,"z",(function(){return be})),n.d(t,"i",(function(){return Ee})),n.d(t,"v",(function(){return xe})),n.d(t,"r",(function(){return Se})),n.d(t,"t",(function(){return we})),n.d(t,"s",(function(){return je})),n.d(t,"p",(function(){return Oe})),n.d(t,"u",(function(){return Ce})),n.d(t,"x",(function(){return _e})),n.d(t,"y",(function(){return Ae})),n.d(t,"J",(function(){return ke})),n.d(t,"f",(function(){return Ie})),n.d(t,"n",(function(){return Pe})),n.d(t,"h",(function(){return Te})),n.d(t,"D",(function(){return Re})),n.d(t,"K",(function(){return Me})),n.d(t,"o",(function(){return Ve})),n.d(t,"C",(function(){return ze})),n.d(t,"a",(function(){return Fe})),n.d(t,"H",(function(){return Je})),n.d(t,"b",(function(){return We})),n.d(t,"G",(function(){return He})),n.d(t,"F",(function(){return $e})),n.d(t,"E",(function(){return Ye})),n.d(t,"k",(function(){return Ke})),n.d(t,"d",(function(){return Ge})),n.d(t,"g",(function(){return Ze})),n.d(t,"m",(function(){return Xe})),n.d(t,"l",(function(){return Qe})),n.d(t,"e",(function(){return et})),n.d(t,"I",(function(){return tt})),n.d(t,"w",(function(){return nt})),n.d(t,"A",(function(){return rt})),n.d(t,"B",(function(){return at})),n.d(t,"j",(function(){return ot})),n.d(t,"c",(function(){return it})),n.d(t,"q",(function(){return ct}));var r=n(14),a=n.n(r),o=(n(13),n(18)),i=n.n(o),s=n(44),c=n.n(s),u=n(23),l=n.n(u),p=n(4),f=n.n(p),d=n(69),h=n.n(d),m=n(2),v=n.n(m),g=n(21),y=n.n(g),b=n(12),E=n.n(b),x=n(15),S=n.n(x),w=(n(33),n(28)),j=n.n(w),O=n(20),C=n.n(O),_=n(165),A=n.n(_),k=n(19),I=n.n(k),P=n(64),T=n.n(P),R=(n(29),n(30)),N=n.n(R),M=n(17),q=n.n(M),D=n(51),B=n.n(D),L=n(88),U=n.n(L),V=n(85),z=n.n(V),F=n(1),J=n.n(F),W=n(374),H=n(375),$=n.n(H),Y=n(215),K=n.n(Y),G=n(216),Z=n.n(G),X=n(376),Q=n.n(X),ee=n(276),te=n.n(ee),ne=n(101),re=n.n(ne),ae=n(134),oe=n.n(ae),ie=n(116),se=n(25),ce=n(378),ue=n.n(ce),le=n(119),pe=n(103),fe=n.n(pe),de=n(379),he=n.n(de),me=n(63),ve=n.n(me),ge="default",ye=function(e){return J.a.Iterable.isIterable(e)};function be(e){return we(e)?ye(e)?e.toJS():e:{}}function Ee(e){var t,n;if(ye(e))return e;if(e instanceof se.a.File)return e;if(!we(e))return e;if(l()(e))return f()(n=J.a.Seq(e)).call(n,Ee).toList();if(oe()(h()(e))){var r,a=function(e){if(!oe()(h()(e)))return e;var t,n={},r="_**[]",a={},o=c()(h()(e).call(e));try{for(o.s();!(t=o.n()).done;){var i=t.value;if(n[i[0]]||a[i[0]]&&a[i[0]].containsMultiple){var s,u,l,p;if(!a[i[0]])a[i[0]]={containsMultiple:!0,length:1},n[v()(l=v()(p="".concat(i[0])).call(p,r)).call(l,a[i[0]].length)]=n[i[0]],delete n[i[0]];a[i[0]].length+=1,n[v()(s=v()(u="".concat(i[0])).call(u,r)).call(s,a[i[0]].length)]=i[1]}else n[i[0]]=i[1]}}catch(e){o.e(e)}finally{o.f()}return n}(e);return f()(r=J.a.OrderedMap(a)).call(r,Ee)}return f()(t=J.a.OrderedMap(e)).call(t,Ee)}function xe(e){return l()(e)?e:[e]}function Se(e){return"function"==typeof e}function we(e){return!!e&&"object"===i()(e)}function je(e){return"function"==typeof e}function Oe(e){return l()(e)}var Ce=Z.a;function _e(e,t){var n;return j()(n=S()(e)).call(n,(function(n,r){return n[r]=t(e[r],r),n}),{})}function Ae(e,t){var n;return j()(n=S()(e)).call(n,(function(n,r){var a=t(e[r],r);return a&&"object"===i()(a)&&C()(n,a),n}),{})}function ke(e){return function(t){t.dispatch,t.getState;return function(t){return function(n){return"function"==typeof n?n(e()):t(n)}}}}function Ie(e){var t,n=e.keySeq();return n.contains(ge)?ge:A()(t=E()(n).call(n,(function(e){return"2"===(e+"")[0]}))).call(t).first()}function Pe(e,t){if(!J.a.Iterable.isIterable(e))return J.a.List();var n=e.getIn(l()(t)?t:[t]);return J.a.List.isList(n)?n:J.a.List()}function Te(e){var t,n=[/filename\*=[^']+'\w*'"([^"]Line truncated
|
import*as e from"react-immutable-pure-component";import*as t from"remarkable/linkify";import*as r from"dompurify";import*as a from"zenscroll";import*as n from"lodash/reduce";import*as l from"@babel/runtime-corejs3/core-js-stable/instance/repeat";import*as s from"@babel/runtime-corejs3/core-js-stable/instance/fill";import*as o from"lodash/zipObject";import*as i from"randexp";import*as u from"lodash/isEmpty";import*as c from"@babel/runtime-corejs3/core-js-stable/promise";import*as d from"@babel/runtime-corejs3/core-js-stable/date/now";import*as p from"lodash/isString";import*as f from"lodash/debounce";import*as h from"lodash/set";import*as m from"swagger-client/es/resolver";import*as g from"swagger-client/es/execute";import*as y from"swagger-client/es/http";import*as v from"swagger-client/es/subtree-resolver";import*as E from"react-dom";import*as b from"react-redux";import*as S from"lodash/omit";import*as _ from"lodash/identity";import*as w from"react-syntax-highlighter/dist/esm/light";import*as C from"react-syntax-highlighter/dist/esm/languages/hljs/javascript";import*as x from"react-syntax-highlighter/dist/esm/languages/hljs/json";import*as A from"react-syntax-highlighter/dist/esm/languages/hljs/xml";import*as I from"react-syntax-highlighter/dist/esm/languages/hljs/bash";import*as R from"react-syntax-highlighter/dist/esm/languages/hljs/yaml";import*as T from"react-syntax-highlighter/dist/esm/languages/hljs/http";import*as N from"react-syntax-highlighter/dist/esm/languages/hljs/powershell";import*as O from"react-syntax-highlighter/dist/esm/styles/hljs/agate";import*as k from"react-syntax-highlighter/dist/esm/styles/hljs/arta";import*as P from"react-syntax-highlighter/dist/esm/styles/hljs/monokai";import*as M from"react-syntax-highlighter/dist/esm/styles/hljs/nord";import*as j from"react-syntax-highlighter/dist/esm/styles/hljs/obsidian";import*as L from"react-syntax-highlighter/dist/esm/styles/hljs/tomorrow-night";import*as B from"@braintree/sanitize-url";import*as q from"lodash/camelCase";import*as D from"lodash/upperFirst";import*as U from"lodash/find";import*as V from"lodash/some";import*as z from"lodash/eq";import*as F from"css.escape";import*as $ from"@babel/runtime-corejs3/core-js-stable/instance/find-index";import*as J from"@babel/runtime-corejs3/core-js-stable/array/from";import*as W from"@babel/runtime-corejs3/core-js-stable/array/is-array";import*as H from"@babel/runtime-corejs3/core-js-stable/instance/bind";import*as K from"@babel/runtime-corejs3/core-js-stable/instance/concat";import*as G from"@babel/runtime-corejs3/core-js-stable/instance/entries";import*as Z from"@babel/runtime-corejs3/core-js-stable/instance/every";import*as Y from"@babel/runtime-corejs3/core-js-stable/instance/filter";import*as X from"@babel/runtime-corejs3/core-js-stable/instance/find";import*as Q from"@babel/runtime-corejs3/core-js-stable/instance/for-each";import*as ee from"@babel/runtime-corejs3/core-js-stable/instance/includes";import*as te from"@babel/runtime-corejs3/core-js-stable/instance/index-of";import*as re from"@babel/runtime-corejs3/core-js-stable/instance/keys";import*as ae from"@babel/runtime-corejs3/core-js-stable/instance/map";import*as ne from"@babel/runtime-corejs3/core-js-stable/instance/reduce";import*as le from"@babel/runtime-corejs3/core-js-stable/instance/slice";import*as se from"@babel/runtime-corejs3/core-js-stable/instance/some";import*as oe from"@babel/runtime-corejs3/core-js-stable/instance/sort";import*as ie from"@babel/runtime-corejs3/core-js-stable/instance/starts-with";import*as ue from"@babel/runtime-corejs3/core-js-stable/instance/trim";import*as ce from"@babel/runtime-corejs3/core-js-stable/json/stringify";import*as de from"@babel/runtime-corejs3/core-js-stable/map";import*as pe from"@babel/runtime-corejs3/core-js-stable/object/assign";import*as fe from"@babel/runtime-corejs3/core-js-stable/object/keys";import*as he from"@babel/runtime-corejs3/core-js-stable/object/values";import*as me from"@babel/runtime-corejs3/core-js-stable/set-timeout";import*as ge from"@babel/runtime-corejs3/core-js-stable/url";import*as ye from"@babel/runtime-corejs3/helpers/defineProperty";import*as ve from"@babel/runtime-corejs3/helpers/extends";import*as Ee from"base64-js";import*as be from"classnames";import*as Se from"ieee754";import*as _e from"immutable";import*as we from"js-yaml";import*as Ce from"lodash/get";import*as xe from"lodash/isFunction";import*as Ae from"lodash/memoize";import*as Ie from"prop-types";import*as Re from"react";import*as Te from"react-copy-to-clipboard";import*as Ne from"react-immutable-proptypes";import*as Oe from"redux";import*as ke from"remarkable";import*as Pe from"reselect";import*as Me from"serialize-error";import*as je from"swagger-client/es/helpers";import*as Le from"url-parse";import*as Be from"@babel/runtime-corejs3/core-js-stable/instance/last-index-of";import*as qe from"redux-immutable";import*as De from"lodash/merge";import*as Ue from"lodash/toString";import*as Ve from"@babeLine truncated
|
||||||
//# sourceMappingURL=swagger-ui-es-bundle-core.js.map
|
//# sourceMappingURL=swagger-ui-es-bundle-core.js.map
|
||||||
@@ -1 +1 @@
|
|||||||
{"version":3,"sources":["webpack://SwaggerUIBundle/webpack/bootstrap","webpack://SwaggerUIBundle/external \"react\"","webpack://SwaggerUIBundle/external \"immutable\"","webpack://SwaggerUIBundle/./node_modules/@babel/runtime-corejs3/core-js-stable/instance/concat.js","webpack://SwaggerUIBundle/./node_modules/@babel/runtime-corejs3/helpers/defineProperty.js","webpack://SwaggerUIBundle/./node_modules/@babel/runtime-corejs3/core-js-stable/instance/map.js","webpack://SwaggerUIBundle/./src/core/utils.js","webpack://SwaggerUIBundle/./node_modules/@babel/runtime-corejs3/helpers/classCallCheck.js","webpack://SwaggerUIBundle/./node_modules/@babel/runtime-corejs3/helpers/createClass.js","webpack://SwaggerUIBundle/./node_modules/@babel/runtime-corejs3/helpers/inherits.js","webpack://SwaggerUIBundle/./node_modules/@babel/runtime-corejs3/helpers/createSuper.js","webpack://SwaggerUIBundle/./node_modules/@babel/runtime-corejs3/helpers/assertThisInitialized.js","webpack://SwaggerUIBundle/external \"prop-types\"","webpack://SwaggerUIBundle/./node_modules/@babel/runtime-corejs3/core-js-stable/instance/filter.js","webpack://SwaggerUIBundle/./node_modules/@babel/runtime-corejs3/helpers/slicedToArray.js","webpack://SwaggerUIBundle/./node_modules/@babel/runtime-corejs3/helpers/toConsumableArray.js","webpack://SwaggerUIBundle/./node_modules/@babel/runtime-corejs3/core-js-stable/object/keys.js","webpack://SwaggerUIBundle/external \"reselect\"","webpack://SwaggerUIBundle/./node_modules/@babel/runtime-corejs3/core-js-stable/instance/index-of.js","webpack://SwaggerUIBundle/./node_modules/@babel/runtime-corejs3/helpers/typeof.js","webpack://SwaggerUIBundle/./node_modules/@babel/runtime-corejs3/core-js-stable/instance/slice.js","webpack://SwaggerUIBundle/./node_modules/@babel/runtime-corejs3/core-js-stable/object/assign.js","webpack://SwaggerUIBundle/./node_modules/@babel/runtime-corejs3/core-js-stable/instance/for-each.js","webpack://SwaggerUIBundle/./node_modules/core-js-pure/internals/export.js","webpack://SwaggerUIBundle/./node_modules/@babel/runtime-corejs3/core-js-stable/array/is-array.js","webpack://SwaggerUIBundle/./node_modules/@babel/runtime-corejs3/helpers/objectSpread2.js","webpack://SwaggerUIBundle/./src/core/window.js","webpack://SwaggerUIBundle/external \"react-immutable-proptypes\"","webpack://SwaggerUIBundle/./node_modules/@babel/runtime-corejs3/helpers/extends.js","webpack://SwaggerUIBundle/./node_modules/@babel/runtime-corejs3/core-js-stable/instance/reduce.js","webpack://SwaggerUIBundle/./node_modules/@babel/runtime-corejs3/core-js-stable/instance/includes.js","webpack://SwaggerUIBundle/./node_modules/@babel/runtime-corejs3/core-js-stable/json/stringify.js","webpack://SwaggerUIBundle/./node_modules/core-js-pure/internals/path.js","webpack://SwaggerUIBundle/./src/core/plugins/oas3/helpers.jsx","webpack://SwaggerUIBundle/./node_modules/@babel/runtime-corejs3/core-js-stable/instance/bind.js","webpack://SwaggerUIBundle/./node_modules/core-js-pure/internals/fails.js","webpack://SwaggerUIBundle/./node_modules/@babel/runtime-corejs3/regenerator/index.js","webpack://SwaggerUIBundle/./node_modules/core-js-pure/internals/global.js","webpack://SwaggerUIBundle/./node_modules/core-js-pure/internals/well-known-symbol.js","webpack://SwaggerUIBundle/./node_modules/core-js-pure/internals/entry-virtual.js","webpack://SwaggerUIBundle/./node_modules/lodash/get.js","webpack://SwaggerUIBundle/./node_modules/core-js-pure/internals/define-well-known-symbol.js","webpack://SwaggerUIBundle/./src/core/plugins/spec/actions.js","webpack://SwaggerUIBundle/./node_modules/core-js-pure/internals/is-object.js","webpack://SwaggerUIBundle/./node_modules/core-js-pure/internals/descriptors.js","webpack://SwaggerUIBundle/./node_modules/@babel/runtime-corejs3/helpers/createForOfIteratorHelper.js","webpack://SwaggerUIBundle/external \"classnames\"","webpack://SwaggerUIBundle/./node_modules/core-js-pure/internals/an-object.js","webpack://SwaggerUIBundle/./node_modules/@babel/runtime-corejs3/helpers/objectWithoutProperties.js","webpack://SwaggerUIBundle/./src/core/plugins/oas3/actions.js","webpack://SwaggerUIBundle/./node_modules/core-js-pure/internals/has.js","webpack://SwaggerUIBundle/./node_modules/lodash/isArray.js","webpack://SwaggerUIBundle/./node_modules/@babel/runtime-corejs3/core-js-stable/instance/find.js","webpack://SwaggerUIBundle/./node_modules/lodash/isObject.js","webpack://SwaggerUIBundle/./node_modules/swagger-client/es/helpers.js","webpack://SwaggerUIBundle/./src/core/plugins/err/actions.js","webpack://SwaggerUIBundle/./node_modules/core-js-pure/internals/to-object.js","webpack://SwaggerUIBundle/./node_modules/@babel/runtime-corejs3/core-js-stable/promise.js","webpack://SwaggerUIBundle/./node_modules/core-js-pure/internals/to-indexed-object.js","webpack://SwaggerUIBundle/./node_modules/core-js-pure/internals/create-non-enumerable-property.js","webpack://SwaggerUIBundle/./node_modules/core-js-pure/internals/object-define-property.js","webpackLine truncated
|
{"version":3,"file":"swagger-ui-es-bundle-core.js","mappings":"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 truncated
|
||||||
@@ -1,3 +1,3 @@
|
|||||||
/*! For license information please see swagger-ui-es-bundle.js.LICENSE.txt */
|
/*! For license information please see swagger-ui-es-bundle.js.LICENSE.txt */
|
||||||
module.exports=function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="/dist",n(n.s=534)}([function(e,t,n){"use strict";e.exports=n(133)},function(e,t,n){e.exports=function(){"use strict";var e=Array.prototype.slice;function t(e,t){t&&(e.prototype=Object.create(t.prototype)),e.prototype.constructor=e}function n(e){return i(e)?e:J(e)}function r(e){return s(e)?e:K(e)}function o(e){return u(e)?e:Y(e)}function a(e){return i(e)&&!c(e)?e:G(e)}function i(e){return!(!e||!e[p])}function s(e){return!(!e||!e[f])}function u(e){return!(!e||!e[h])}function c(e){return s(e)||u(e)}function l(e){return!(!e||!e[d])}t(r,n),t(o,n),t(a,n),n.isIterable=i,n.isKeyed=s,n.isIndexed=u,n.isAssociative=c,n.isOrdered=l,n.Keyed=r,n.Indexed=o,n.Set=a;var p="@@__IMMUTABLE_ITERABLE__@@",f="@@__IMMUTABLE_KEYED__@@",h="@@__IMMUTABLE_INDEXED__@@",d="@@__IMMUTABLE_ORDERED__@@",m="delete",v=5,g=1<<v,y=g-1,b={},_={value:!1},w={value:!1};function x(e){return e.value=!1,e}function E(e){e&&(e.value=!0)}function S(){}function C(e,t){t=t||0;for(var n=Math.max(0,e.length-t),r=new Array(n),o=0;o<n;o++)r[o]=e[o+t];return r}function A(e){return void 0===e.size&&(e.size=e.__iterate(k)),e.size}function O(e,t){if("number"!=typeof t){var n=t>>>0;if(""+n!==t||4294967295===n)return NaN;t=n}return t<0?A(e)+t:t}function k(){return!0}function j(e,t,n){return(0===e||void 0!==n&&e<=-n)&&(void 0===t||void 0!==n&&t>=n)}function T(e,t){return P(e,t,0)}function I(e,t){return P(e,t,t)}function P(e,t,n){return void 0===e?n:e<0?Math.max(0,t+e):void 0===t?e:Math.min(t,e)}var N=0,M=1,R=2,D="function"==typeof Symbol&&Symbol.iterator,L="@@iterator",B=D||L;function F(e){this.next=e}function U(e,t,n,r){var o=0===e?t:1===e?n:[t,n];return r?r.value=o:r={value:o,done:!1},r}function q(){return{value:void 0,done:!0}}function z(e){return!!H(e)}function V(e){return e&&"function"==typeof e.next}function W(e){var t=H(e);return t&&t.call(e)}function H(e){var t=e&&(D&&e[D]||e[L]);if("function"==typeof t)return t}function $(e){return e&&"number"==typeof e.length}function J(e){return null==e?ie():i(e)?e.toSeq():ce(e)}function K(e){return null==e?ie().toKeyedSeq():i(e)?s(e)?e.toSeq():e.fromEntrySeq():se(e)}function Y(e){return null==e?ie():i(e)?s(e)?e.entrySeq():e.toIndexedSeq():ue(e)}function G(e){return(null==e?ie():i(e)?s(e)?e.entrySeq():e:ue(e)).toSetSeq()}F.prototype.toString=function(){return"[Iterator]"},F.KEYS=N,F.VALUES=M,F.ENTRIES=R,F.prototype.inspect=F.prototype.toSource=function(){return this.toString()},F.prototype[B]=function(){return this},t(J,n),J.of=function(){return J(arguments)},J.prototype.toSeq=function(){return this},J.prototype.toString=function(){return this.__toString("Seq {","}")},J.prototype.cacheResult=function(){return!this._cache&&this.__iterateUncached&&(this._cache=this.entrySeq().toArray(),this.size=this._cache.length),this},J.prototype.__iterate=function(e,t){return pe(this,e,t,!0)},J.prototype.__iterator=function(e,t){return fe(this,e,t,!0)},t(K,J),K.prototype.toKeyedSeq=function(){return this},t(Y,J),Y.of=function(){return Y(arguments)},Y.prototype.toIndexedSeq=function(){return this},Y.prototype.toString=function(){return this.__toString("Seq [","]")},Y.prototype.__iterate=function(e,t){return pe(this,e,t,!1)},Y.prototype.__iterator=function(e,t){return fe(this,e,t,!1)},t(G,J),G.of=function(){return G(arguments)},G.prototype.toSetSeq=function(){return this},J.isSeq=ae,J.Keyed=K,J.Set=G,J.Indexed=Y;var Z,X,Q,ee="@@__IMMUTABLE_SEQ__@@";function te(e){this._array=e,this.size=e.length}function ne(e){var t=Object.keys(e);this._object=e,this._keys=t,this.size=t.length}function re(e){this._iterable=e,this.size=e.length||e.size}function oe(e){this._iterator=e,this._iteratorCache=[]}function ae(e){return!(!e||!e[ee])}function ie(){return Z||(Z=new te([]))}function se(e){var t=Array.isArray(e)?new te(e).fromEntrySeq():V(e)?new oe(e).fromEntrySeq():z(e)?new re(e).fromEntrySeq():"object"==typeof e?new ne(e):void 0;if(!t)throw new TypeError("Expected Array or iterable object of [k, v] entries, or keyed object: "+e);return t}function ue(e){var t=le(e);if(!t)throw new TypeError("Expected Array or iterable object of values: "+e);return tLine truncated
|
(()=>{var e={17967:(e,t)=>{"use strict";t.N=void 0;var r=/^([^\w]*)(javascript|data|vbscript)/im,n=/&#(\w+)(^\w|;)?/g,o=/[\u0000-\u001F\u007F-\u009F\u2000-\u200D\uFEFF]/gim,a=/^([^:]+):/gm,i=[".","/"];t.N=function(e){var t,s=(t=e||"",t.replace(n,(function(e,t){return String.fromCharCode(t)}))).replace(o,"").trim();if(!s)return"about:blank";if(function(e){return i.indexOf(e[0])>-1}(s))return s;var l=s.match(a);if(!l)return s;var u=l[0];return r.test(u)?"about:blank":s}},53795:(e,t,r)=>{"use strict";r.d(t,{Z:()=>T});var n=r(23101),o=r.n(n),a=r(61125),i=r.n(a),s=r(11882),l=r.n(s),u=r(97606),c=r.n(u),p=r(67294),f=r(43393);function h(e){return h="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},h(e)}function d(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function m(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function g(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function v(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function y(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?v(r,!0).forEach((function(t){g(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):v(r).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function b(e){return b=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},b(e)}function w(e,t){return w=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},w(e,t)}function E(e,t){return!t||"object"!=typeof t&&"function"!=typeof t?function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e):t}var x={};function _(e,t,r){return function(e){return null==e}(e)?r:function(e){return null!==e&&"object"===h(e)&&"function"==typeof e.get&&"function"==typeof e.has}(e)?e.has(t)?e.get(t):r:hasOwnProperty.call(e,t)?e[t]:r}function S(e,t,r){for(var n=0;n!==t.length;)if((e=_(e,t[n++],x))===x)return r;return e}function A(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},n=k(t,r),o=e||Object.keys(y({},r,{},t));return o.every(n)}function k(e,t){return function(r){if("string"==typeof r)return(0,f.is)(t[r],e[r]);if(Array.isArray(r))return(0,f.is)(S(t,r),S(e,r));throw new TypeError("Invalid key: expected Array or string: "+r)}}const C=function(e){function t(){return d(this,t),E(this,b(t).apply(this,arguments))}var r,n,o;return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&w(e,t)}(t,e),r=t,n=[{key:"shouldComponentUpdate",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return!A(this.updateOnProps,this.props,e,"updateOnProps")||!A(this.updateOnStates,this.state,t,"updateOnStates")}}],n&&m(r.prototype,n),o&&m(r,o),t}(p.Component);var O=r(23930),j=r.n(O),I=r(45697),N=r.n(I);class T extends C{constructor(){super(...arguments),i()(this,"getModelName",(e=>-1!==l()(e).call(e,"#/definitions/")?e.replace(/^.*#\/definitions\//,""):-1!==l()(e).call(e,"#/components/schemas/")?e.replace(/^.*#\/components\/schemas\//,""):void 0)),i()(this,"getRefSchema",(e=>{let{specSelectors:t}=this.props;return t.findDefinition(e)}))}render(){let{getComponent:e,getConfigs:t,specSelectors:n,schema:a,required:i,name:s,isRef:l,specPath:u,displayName:c,includeReadOnly:f,includeWriteOnly:h}=this.props;const d=e("ObjectModel"),m=e("ArrayModel"),g=e("PrimitiveModel");let v="object",y=a&&a.get("$$ref");if(!s&&y&&(s=this.getModelName(y)),!a&&y&&(a=this.getRefSchema(s)),!a)return p.createElement("span",{className:"model model-title"},p.createElement("span",{className:"model-title__text"},c||s),p.createElement("img",{src:r(2517),height:"20px",width:"20px"}));const b=n.isOAS3()&&a.get("deprecated");switch(l=void 0!==l?l:!!y,v=a&&a.get("type")||v,v){case"object":return p.createElement(d,o()({className:"object"},this.props,{specPath:u,getConfigs:t,schema:a,name:s,deprecated:b,isRef:l,includeReadOnly:f,includeWriteOnly:h}));case"array":return p.createElement(m,o()({className:"array"},this.props,{getConfigs:t,schema:a,name:s,deprecated:b,required:i,includeReadOnly:f,includeWriteOnly:h}));default:return p.createElement(g,o()({},this.props,{getComponent:e,getConfigs:t,schema:a,name:s,deprecated:b,required:i}))}}}i()(Line truncated
|
||||||
//# sourceMappingURL=swagger-ui-es-bundle.js.map
|
//# sourceMappingURL=swagger-ui-es-bundle.js.map
|
||||||
@@ -1 +1 @@
|
|||||||
{"version":3,"sources":["webpack://SwaggerUIBundle/webpack/bootstrap","webpack://SwaggerUIBundle/./node_modules/react/react.js","webpack://SwaggerUIBundle/./node_modules/immutable/dist/immutable.js","webpack://SwaggerUIBundle/./node_modules/@babel/runtime-corejs3/core-js-stable/instance/concat.js","webpack://SwaggerUIBundle/./node_modules/@babel/runtime-corejs3/helpers/defineProperty.js","webpack://SwaggerUIBundle/./node_modules/@babel/runtime-corejs3/core-js-stable/instance/map.js","webpack://SwaggerUIBundle/./src/core/utils.js","webpack://SwaggerUIBundle/./node_modules/@babel/runtime-corejs3/helpers/classCallCheck.js","webpack://SwaggerUIBundle/./node_modules/@babel/runtime-corejs3/helpers/createClass.js","webpack://SwaggerUIBundle/./node_modules/@babel/runtime-corejs3/helpers/inherits.js","webpack://SwaggerUIBundle/./node_modules/@babel/runtime-corejs3/helpers/createSuper.js","webpack://SwaggerUIBundle/./node_modules/@babel/runtime-corejs3/helpers/assertThisInitialized.js","webpack://SwaggerUIBundle/./node_modules/prop-types/index.js","webpack://SwaggerUIBundle/./node_modules/@babel/runtime-corejs3/core-js-stable/instance/filter.js","webpack://SwaggerUIBundle/./node_modules/@babel/runtime-corejs3/helpers/slicedToArray.js","webpack://SwaggerUIBundle/./node_modules/@babel/runtime-corejs3/helpers/toConsumableArray.js","webpack://SwaggerUIBundle/./node_modules/@babel/runtime-corejs3/core-js-stable/object/keys.js","webpack://SwaggerUIBundle/./node_modules/reselect/es/index.js","webpack://SwaggerUIBundle/./node_modules/@babel/runtime-corejs3/core-js-stable/instance/index-of.js","webpack://SwaggerUIBundle/./node_modules/@babel/runtime-corejs3/helpers/typeof.js","webpack://SwaggerUIBundle/./node_modules/@babel/runtime-corejs3/core-js-stable/instance/slice.js","webpack://SwaggerUIBundle/./node_modules/@babel/runtime-corejs3/core-js-stable/object/assign.js","webpack://SwaggerUIBundle/./node_modules/@babel/runtime-corejs3/core-js-stable/instance/for-each.js","webpack://SwaggerUIBundle/./node_modules/core-js-pure/internals/export.js","webpack://SwaggerUIBundle/./node_modules/@babel/runtime-corejs3/core-js-stable/array/is-array.js","webpack://SwaggerUIBundle/./node_modules/@babel/runtime-corejs3/helpers/objectSpread2.js","webpack://SwaggerUIBundle/./node_modules/fbjs/lib/invariant.js","webpack://SwaggerUIBundle/./src/core/window.js","webpack://SwaggerUIBundle/./node_modules/react-immutable-proptypes/dist/ImmutablePropTypes.js","webpack://SwaggerUIBundle/./node_modules/@babel/runtime-corejs3/helpers/extends.js","webpack://SwaggerUIBundle/./node_modules/@babel/runtime-corejs3/core-js-stable/instance/reduce.js","webpack://SwaggerUIBundle/./node_modules/react-dom/lib/reactProdInvariant.js","webpack://SwaggerUIBundle/./node_modules/@babel/runtime-corejs3/core-js-stable/instance/includes.js","webpack://SwaggerUIBundle/./node_modules/@babel/runtime-corejs3/core-js-stable/json/stringify.js","webpack://SwaggerUIBundle/./node_modules/core-js-pure/internals/path.js","webpack://SwaggerUIBundle/./node_modules/fbjs/lib/warning.js","webpack://SwaggerUIBundle/./src/core/plugins/oas3/helpers.jsx","webpack://SwaggerUIBundle/./node_modules/@babel/runtime-corejs3/core-js-stable/instance/bind.js","webpack://SwaggerUIBundle/./node_modules/core-js-pure/internals/fails.js","webpack://SwaggerUIBundle/./node_modules/object-assign/index.js","webpack://SwaggerUIBundle/./node_modules/@babel/runtime-corejs3/regenerator/index.js","webpack://SwaggerUIBundle/./node_modules/core-js-pure/internals/global.js","webpack://SwaggerUIBundle/./node_modules/core-js-pure/internals/well-known-symbol.js","webpack://SwaggerUIBundle/./node_modules/core-js-pure/internals/entry-virtual.js","webpack://SwaggerUIBundle/./node_modules/lodash/get.js","webpack://SwaggerUIBundle/./node_modules/core-js-pure/internals/define-well-known-symbol.js","webpack://SwaggerUIBundle/./node_modules/react-dom/lib/ReactDOMComponentTree.js","webpack://SwaggerUIBundle/./src/core/plugins/spec/actions.js","webpack://SwaggerUIBundle/./node_modules/core-js-pure/internals/is-object.js","webpack://SwaggerUIBundle/./node_modules/core-js-pure/internals/descriptors.js","webpack://SwaggerUIBundle/./node_modules/@babel/runtime-corejs3/helpers/createForOfIteratorHelper.js","webpack://SwaggerUIBundle/./node_modules/classnames/index.js","webpack://SwaggerUIBundle/(webpack)/buildin/global.js","webpack://SwaggerUIBundle/./node_modules/core-js-pure/internals/an-object.js","webpack://SwaggerUIBundle/./node_modules/@babel/runtime-corejs3/helpers/objectWithoutProperties.js","webpack://SwaggerUIBundle/./src/core/plugins/oas3/actions.js","webpack://SwaggerUIBundle/./node_modules/core-js-pure/internals/has.js","webpack://SwaggerUIBundle/./node_modules/lodash/isArray.js","webpack://SwaggerUIBundle/./node_modules/fbjs/lib/ExecutionEnvironment.js","webpack://SwaggerUIBundle/./node_modules/@babel/runtime-corejs3/core-js-stable/instance/find.js","webpack://SwaggerUIBundle/./node_modules/lodash/isObject.js","webpack:Line truncated
|
{"version":3,"file":"swagger-ui-es-bundle.js","mappings":"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 truncated
|
||||||
@@ -1,3 +1,3 @@
|
|||||||
/*! For license information please see swagger-ui-standalone-preset.js.LICENSE.txt */
|
/*! For license information please see swagger-ui-standalone-preset.js.LICENSE.txt */
|
||||||
!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.SwaggerUIStandalonePreset=e():t.SwaggerUIStandalonePreset=e()}(this,(function(){return function(t){var e={};function n(r){if(e[r])return e[r].exports;var i=e[r]={i:r,l:!1,exports:{}};return t[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var i in t)n.d(r,i,function(e){return t[e]}.bind(null,i));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="/dist",n(n.s=233)}([function(t,e,n){t.exports=function(){"use strict";var t=Array.prototype.slice;function e(t,e){e&&(t.prototype=Object.create(e.prototype)),t.prototype.constructor=t}function n(t){return u(t)?t:J(t)}function r(t){return s(t)?t:Z(t)}function i(t){return a(t)?t:V(t)}function o(t){return u(t)&&!c(t)?t:X(t)}function u(t){return!(!t||!t[l])}function s(t){return!(!t||!t[p])}function a(t){return!(!t||!t[h])}function c(t){return s(t)||a(t)}function f(t){return!(!t||!t[d])}e(r,n),e(i,n),e(o,n),n.isIterable=u,n.isKeyed=s,n.isIndexed=a,n.isAssociative=c,n.isOrdered=f,n.Keyed=r,n.Indexed=i,n.Set=o;var l="@@__IMMUTABLE_ITERABLE__@@",p="@@__IMMUTABLE_KEYED__@@",h="@@__IMMUTABLE_INDEXED__@@",d="@@__IMMUTABLE_ORDERED__@@",y="delete",v=5,g=1<<v,w=g-1,M={},m={value:!1},_={value:!1};function L(t){return t.value=!1,t}function b(t){t&&(t.value=!0)}function x(){}function j(t,e){e=e||0;for(var n=Math.max(0,t.length-e),r=new Array(n),i=0;i<n;i++)r[i]=t[i+e];return r}function N(t){return void 0===t.size&&(t.size=t.__iterate(D)),t.size}function S(t,e){if("number"!=typeof e){var n=e>>>0;if(""+n!==e||4294967295===n)return NaN;e=n}return e<0?N(t)+e:e}function D(){return!0}function I(t,e,n){return(0===t||void 0!==n&&t<=-n)&&(void 0===e||void 0!==n&&e>=n)}function A(t,e){return T(t,e,0)}function O(t,e){return T(t,e,e)}function T(t,e,n){return void 0===t?n:t<0?Math.max(0,e+t):void 0===e?t:Math.min(e,t)}var C=0,E=1,z=2,k="function"==typeof Symbol&&Symbol.iterator,Y="@@iterator",U=k||Y;function P(t){this.next=t}function R(t,e,n,r){var i=0===t?e:1===t?n:[e,n];return r?r.value=i:r={value:i,done:!1},r}function Q(){return{value:void 0,done:!0}}function F(t){return!!W(t)}function B(t){return t&&"function"==typeof t.next}function G(t){var e=W(t);return e&&e.call(t)}function W(t){var e=t&&(k&&t[k]||t[Y]);if("function"==typeof e)return e}function q(t){return t&&"number"==typeof t.length}function J(t){return null==t?ut():u(t)?t.toSeq():ct(t)}function Z(t){return null==t?ut().toKeyedSeq():u(t)?s(t)?t.toSeq():t.fromEntrySeq():st(t)}function V(t){return null==t?ut():u(t)?s(t)?t.entrySeq():t.toIndexedSeq():at(t)}function X(t){return(null==t?ut():u(t)?s(t)?t.entrySeq():t:at(t)).toSetSeq()}P.prototype.toString=function(){return"[Iterator]"},P.KEYS=C,P.VALUES=E,P.ENTRIES=z,P.prototype.inspect=P.prototype.toSource=function(){return this.toString()},P.prototype[U]=function(){return this},e(J,n),J.of=function(){return J(arguments)},J.prototype.toSeq=function(){return this},J.prototype.toString=function(){return this.__toString("Seq {","}")},J.prototype.cacheResult=function(){return!this._cache&&this.__iterateUncached&&(this._cache=this.entrySeq().toArray(),this.size=this._cache.length),this},J.prototype.__iterate=function(t,e){return lt(this,t,e,!0)},J.prototype.__iterator=function(t,e){return pt(this,t,e,!0)},e(Z,J),Z.prototype.toKeyedSeq=function(){return this},e(V,J),V.of=function(){return V(arguments)},V.prototype.toIndexedSeq=function(){return this},V.prototype.toString=function(){return this.__toString("Seq [","]")},V.prototype.__iterate=function(t,e){return lt(this,t,e,!1)},V.prototype.__iterator=function(t,e){return pt(this,t,e,!1)},e(X,J),X.of=function(){return X(arguments)},X.prototype.toSetSeq=function(){return this},J.isSeq=ot,J.Keyed=Z,J.Set=X,J.Indexed=V;var H,K,$,tt="@@__IMMUTABLE_SEQ__@@";function et(t){this._array=t,this.size=t.length}function nt(t){var e=Object.keys(t);this._object=t,this._keys=e,this.size=e.length}function rt(t){this._iterable=t,this.size=t.length||t.size}function it(t){this._iterator=t,this._iteratorCache=[]}function ot(t){return!(!t||!t[tt])}function ut(){return H||(H=new et([]))}function st(t){var e=Array.isArray(t)?new et(t).fromEntrySeq():B(t)?new it(t).fromEntrySeq():F(t)?new rt(t).fromEntrySeq():"object"==typeof t?new nt(t):void 0;if(!e)throw new TypeError("ExpLine truncated
|
!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.SwaggerUIStandalonePreset=e():t.SwaggerUIStandalonePreset=e()}(this,(function(){return(()=>{var t={7967:(t,e)=>{"use strict";var r=/^([^\w]*)(javascript|data|vbscript)/im,n=/&#(\w+)(^\w|;)?/g,i=/[\u0000-\u001F\u007F-\u009F\u2000-\u200D\uFEFF]/gim,o=/^([^:]+):/gm,s=[".","/"]},9742:(t,e)=>{"use strict";e.byteLength=function(t){var e=a(t),r=e[0],n=e[1];return 3*(r+n)/4-n},e.toByteArray=function(t){var e,r,o=a(t),s=o[0],u=o[1],c=new i(function(t,e,r){return 3*(e+r)/4-r}(0,s,u)),f=0,l=u>0?s-4:s;for(r=0;r<l;r+=4)e=n[t.charCodeAt(r)]<<18|n[t.charCodeAt(r+1)]<<12|n[t.charCodeAt(r+2)]<<6|n[t.charCodeAt(r+3)],c[f++]=e>>16&255,c[f++]=e>>8&255,c[f++]=255&e;2===u&&(e=n[t.charCodeAt(r)]<<2|n[t.charCodeAt(r+1)]>>4,c[f++]=255&e);1===u&&(e=n[t.charCodeAt(r)]<<10|n[t.charCodeAt(r+1)]<<4|n[t.charCodeAt(r+2)]>>2,c[f++]=e>>8&255,c[f++]=255&e);return c},e.fromByteArray=function(t){for(var e,n=t.length,i=n%3,o=[],s=16383,u=0,a=n-i;u<a;u+=s)o.push(c(t,u,u+s>a?a:u+s));1===i?(e=t[n-1],o.push(r[e>>2]+r[e<<4&63]+"==")):2===i&&(e=(t[n-2]<<8)+t[n-1],o.push(r[e>>10]+r[e>>4&63]+r[e<<2&63]+"="));return o.join("")};for(var r=[],n=[],i="undefined"!=typeof Uint8Array?Uint8Array:Array,o="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",s=0,u=o.length;s<u;++s)r[s]=o[s],n[o.charCodeAt(s)]=s;function a(t){var e=t.length;if(e%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var r=t.indexOf("=");return-1===r&&(r=e),[r,r===e?0:4-r%4]}function c(t,e,n){for(var i,o,s=[],u=e;u<n;u+=3)i=(t[u]<<16&16711680)+(t[u+1]<<8&65280)+(255&t[u+2]),s.push(r[(o=i)>>18&63]+r[o>>12&63]+r[o>>6&63]+r[63&o]);return s.join("")}n["-".charCodeAt(0)]=62,n["_".charCodeAt(0)]=63},8764:(t,e,r)=>{"use strict";const n=r(9742),i=r(645),o="function"==typeof Symbol&&"function"==typeof Symbol.for?Symbol.for("nodejs.util.inspect.custom"):null;e.Buffer=a,e.SlowBuffer=function(t){+t!=t&&(t=0);return a.alloc(+t)},e.INSPECT_MAX_BYTES=50;const s=2147483647;function u(t){if(t>s)throw new RangeError('The value "'+t+'" is invalid for option "size"');const e=new Uint8Array(t);return Object.setPrototypeOf(e,a.prototype),e}function a(t,e,r){if("number"==typeof t){if("string"==typeof e)throw new TypeError('The "string" argument must be of type string. Received type number');return l(t)}return c(t,e,r)}function c(t,e,r){if("string"==typeof t)return function(t,e){"string"==typeof e&&""!==e||(e="utf8");if(!a.isEncoding(e))throw new TypeError("Unknown encoding: "+e);const r=0|y(t,e);let n=u(r);const i=n.write(t,e);i!==r&&(n=n.slice(0,i));return n}(t,e);if(ArrayBuffer.isView(t))return function(t){if(Z(t,Uint8Array)){const e=new Uint8Array(t);return p(e.buffer,e.byteOffset,e.byteLength)}return h(t)}(t);if(null==t)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof t);if(Z(t,ArrayBuffer)||t&&Z(t.buffer,ArrayBuffer))return p(t,e,r);if("undefined"!=typeof SharedArrayBuffer&&(Z(t,SharedArrayBuffer)||t&&Z(t.buffer,SharedArrayBuffer)))return p(t,e,r);if("number"==typeof t)throw new TypeError('The "value" argument must not be of type number. Received type number');const n=t.valueOf&&t.valueOf();if(null!=n&&n!==t)return a.from(n,e,r);const i=function(t){if(a.isBuffer(t)){const e=0|d(t.length),r=u(e);return 0===r.length||t.copy(r,0,0,e),r}if(void 0!==t.length)return"number"!=typeof t.length||$(t.length)?u(0):h(t);if("Buffer"===t.type&&Array.isArray(t.data))return h(t.data)}(t);if(i)return i;if("undefined"!=typeof Symbol&&null!=Symbol.toPrimitive&&"function"==typeof t[Symbol.toPrimitive])return a.from(t[Symbol.toPrimitive]("string"),e,r);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof t)}function f(t){if("number"!=typeof t)throw new TypeError('"size" argument must be of type number');if(t<0)throw new RangeError('The value "'+t+'" is invalid for option "size"')}function l(t){return f(t),u(t<0?0:0|d(t))}function h(t){const e=t.length<0?0:0|d(t.length),r=u(e);for(let n=0;n<e;n+=1)r[n]=255&t[n];return r}function p(t,e,r){if(e<0||t.byteLength<e)throw new RangeError('"offset" is outside of buffer bounds');if(t.byteLength<e+(r||0))throw new RangeError('"length" is outside of buffer bounds');let n;return n=void 0===e&&void 0===r?new Uint8Array(t):void 0===r?new Uint8Array(t,e):new Uint8Array(t,e,r),Object.setPrototypeOf(n,a.prototype),n}function d(t){if(t>=s)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+s.toString(16)+" bytes");return 0|t}function y(t,e){if(a.isBuffer(t))return t.length;if(ArrayBuffer.isView(t)||Z(t,ArrayBuffer))return t.byteLength;if("string"!=typeof t)throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof t);const r=t.length,Line truncated
|
||||||
//# sourceMappingURL=swagger-ui-standalone-preset.js.map
|
//# sourceMappingURL=swagger-ui-standalone-preset.js.map
|
||||||
@@ -1 +1 @@
|
|||||||
{"version":3,"sources":["webpack://SwaggerUIStandalonePreset/webpack/universalModuleDefinition","webpack://SwaggerUIStandalonePreset/webpack/bootstrap","webpack://SwaggerUIStandalonePreset/./node_modules/immutable/dist/immutable.js","webpack://SwaggerUIStandalonePreset/./node_modules/core-js-pure/internals/export.js","webpack://SwaggerUIStandalonePreset/./node_modules/react/react.js","webpack://SwaggerUIStandalonePreset/./node_modules/@babel/runtime-corejs3/core-js-stable/instance/concat.js","webpack://SwaggerUIStandalonePreset/./node_modules/core-js-pure/internals/define-well-known-symbol.js","webpack://SwaggerUIStandalonePreset/./node_modules/@babel/runtime-corejs3/core-js-stable/array/is-array.js","webpack://SwaggerUIStandalonePreset/./node_modules/core-js-pure/internals/fails.js","webpack://SwaggerUIStandalonePreset/./node_modules/core-js-pure/internals/well-known-symbol.js","webpack://SwaggerUIStandalonePreset/./node_modules/core-js-pure/internals/entry-virtual.js","webpack://SwaggerUIStandalonePreset/./node_modules/@babel/runtime-corejs3/core-js-stable/instance/for-each.js","webpack://SwaggerUIStandalonePreset/./node_modules/core-js-pure/internals/path.js","webpack://SwaggerUIStandalonePreset/./node_modules/@babel/runtime-corejs3/core-js-stable/instance/map.js","webpack://SwaggerUIStandalonePreset/./src/core/utils.js","webpack://SwaggerUIStandalonePreset/./node_modules/core-js-pure/internals/global.js","webpack://SwaggerUIStandalonePreset/./node_modules/@babel/runtime-corejs3/helpers/defineProperty.js","webpack://SwaggerUIStandalonePreset/./node_modules/core-js-pure/internals/is-object.js","webpack://SwaggerUIStandalonePreset/./node_modules/inherits/inherits_browser.js","webpack://SwaggerUIStandalonePreset/./node_modules/safe-buffer/index.js","webpack://SwaggerUIStandalonePreset/./node_modules/@babel/runtime-corejs3/helpers/typeof.js","webpack://SwaggerUIStandalonePreset/./node_modules/core-js-pure/internals/to-object.js","webpack://SwaggerUIStandalonePreset/(webpack)/buildin/global.js","webpack://SwaggerUIStandalonePreset/./node_modules/core-js-pure/internals/has.js","webpack://SwaggerUIStandalonePreset/./node_modules/lodash/isArray.js","webpack://SwaggerUIStandalonePreset/./node_modules/core-js-pure/internals/descriptors.js","webpack://SwaggerUIStandalonePreset/./node_modules/core-js-pure/internals/create-non-enumerable-property.js","webpack://SwaggerUIStandalonePreset/./node_modules/lodash/_root.js","webpack://SwaggerUIStandalonePreset/./node_modules/@babel/runtime-corejs3/helpers/assertThisInitialized.js","webpack://SwaggerUIStandalonePreset/./node_modules/@babel/runtime-corejs3/core-js-stable/instance/filter.js","webpack://SwaggerUIStandalonePreset/./node_modules/@babel/runtime-corejs3/core-js-stable/object/keys.js","webpack://SwaggerUIStandalonePreset/./node_modules/core-js-pure/internals/an-object.js","webpack://SwaggerUIStandalonePreset/./node_modules/core-js-pure/internals/to-length.js","webpack://SwaggerUIStandalonePreset/./node_modules/es5-ext/object/valid-callable.js","webpack://SwaggerUIStandalonePreset/./node_modules/core-js-pure/internals/to-indexed-object.js","webpack://SwaggerUIStandalonePreset/./node_modules/core-js-pure/internals/object-define-property.js","webpack://SwaggerUIStandalonePreset/./node_modules/process/browser.js","webpack://SwaggerUIStandalonePreset/./node_modules/readable-stream/lib/_stream_duplex.js","webpack://SwaggerUIStandalonePreset/./node_modules/es5-ext/object/is-value.js","webpack://SwaggerUIStandalonePreset/./node_modules/es5-ext/number/to-pos-integer.js","webpack://SwaggerUIStandalonePreset/./node_modules/d/index.js","webpack://SwaggerUIStandalonePreset/./node_modules/@babel/runtime-corejs3/core-js-stable/instance/includes.js","webpack://SwaggerUIStandalonePreset/./node_modules/@babel/runtime-corejs3/core-js-stable/instance/index-of.js","webpack://SwaggerUIStandalonePreset/./node_modules/core-js-pure/internals/require-object-coercible.js","webpack://SwaggerUIStandalonePreset/./node_modules/core-js-pure/internals/array-iteration.js","webpack://SwaggerUIStandalonePreset/./node_modules/core-js-pure/internals/iterators.js","webpack://SwaggerUIStandalonePreset/./node_modules/react/lib/ReactElement.js","webpack://SwaggerUIStandalonePreset/./node_modules/lodash/_getNative.js","webpack://SwaggerUIStandalonePreset/./node_modules/es5-ext/object/valid-value.js","webpack://SwaggerUIStandalonePreset/./node_modules/sha.js/hash.js","webpack://SwaggerUIStandalonePreset/./node_modules/lodash/eq.js","webpack://SwaggerUIStandalonePreset/./node_modules/@babel/runtime-corejs3/core-js-stable/instance/slice.js","webpack://SwaggerUIStandalonePreset/./node_modules/@babel/runtime-corejs3/core-js-stable/instance/some.js","webpack://SwaggerUIStandalonePreset/./node_modules/@babel/runtime-corejs3/helpers/toConsumableArray.js","webpack://SwaggerUIStandalonePreset/./node_modules/lodash/isEmpty.js","webpack://SwaggerUIStandalonePreset/./node_modules/core-js-pure/internals/create-property-Line truncated
|
{"version":3,"file":"swagger-ui-standalone-preset.js","mappings":"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 truncated
|
||||||
@@ -1,4 +1,3 @@
|
|||||||
.swagger-ui{color:#3b4151;
|
.swagger-ui{color:#3b4151;font-family:sans-serif/*! normalize.css v7.0.0 | MIT License | github.com/necolas/normalize.css */}.swagger-ui html{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;line-height:1.15}.swagger-ui body{margin:0}.swagger-ui article,.swagger-ui aside,.swagger-ui footer,.swagger-ui header,.swagger-ui nav,.swagger-ui section{display:block}.swagger-ui h1{font-size:2em;margin:.67em 0}.swagger-ui figcaption,.swagger-ui figure,.swagger-ui main{display:block}.swagger-ui figure{margin:1em 40px}.swagger-ui hr{box-sizing:content-box;height:0;overflow:visible}.swagger-ui pre{font-family:monospace,monospace;font-size:1em}.swagger-ui a{-webkit-text-decoration-skip:objects;background-color:transparent}.swagger-ui abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}.swagger-ui b,.swagger-ui strong{font-weight:inherit;font-weight:bolder}.swagger-ui code,.swagger-ui kbd,.swagger-ui samp{font-family:monospace,monospace;font-size:1em}.swagger-ui dfn{font-style:italic}.swagger-ui mark{background-color:#ff0;color:#000}.swagger-ui small{font-size:80%}.swagger-ui sub,.swagger-ui sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}.swagger-ui sub{bottom:-.25em}.swagger-ui sup{top:-.5em}.swagger-ui audio,.swagger-ui video{display:inline-block}.swagger-ui audio:not([controls]){display:none;height:0}.swagger-ui img{border-style:none}.swagger-ui svg:not(:root){overflow:hidden}.swagger-ui button,.swagger-ui input,.swagger-ui optgroup,.swagger-ui select,.swagger-ui textarea{font-family:sans-serif;font-size:100%;line-height:1.15;margin:0}.swagger-ui button,.swagger-ui input{overflow:visible}.swagger-ui button,.swagger-ui select{text-transform:none}.swagger-ui [type=reset],.swagger-ui [type=submit],.swagger-ui button,.swagger-ui html [type=button]{-webkit-appearance:button}.swagger-ui [type=button]::-moz-focus-inner,.swagger-ui [type=reset]::-moz-focus-inner,.swagger-ui [type=submit]::-moz-focus-inner,.swagger-ui button::-moz-focus-inner{border-style:none;padding:0}.swagger-ui [type=button]:-moz-focusring,.swagger-ui [type=reset]:-moz-focusring,.swagger-ui [type=submit]:-moz-focusring,.swagger-ui button:-moz-focusring{outline:1px dotted ButtonText}.swagger-ui fieldset{padding:.35em .75em .625em}.swagger-ui legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}.swagger-ui progress{display:inline-block;vertical-align:baseline}.swagger-ui textarea{overflow:auto}.swagger-ui [type=checkbox],.swagger-ui [type=radio]{box-sizing:border-box;padding:0}.swagger-ui [type=number]::-webkit-inner-spin-button,.swagger-ui [type=number]::-webkit-outer-spin-button{height:auto}.swagger-ui [type=search]{-webkit-appearance:textfield;outline-offset:-2px}.swagger-ui [type=search]::-webkit-search-cancel-button,.swagger-ui [type=search]::-webkit-search-decoration{-webkit-appearance:none}.swagger-ui ::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}.swagger-ui details,.swagger-ui menu{display:block}.swagger-ui summary{display:list-item}.swagger-ui canvas{display:inline-block}.swagger-ui [hidden],.swagger-ui template{display:none}.swagger-ui .debug *{outline:1px solid gold}.swagger-ui .debug-white *{outline:1px solid #fff}.swagger-ui .debug-black *{outline:1px solid #000}.swagger-ui .debug-grid{background:transparent url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyhpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTExIDc5LjE1ODMyNSwgMjAxNS8wOS8xMC0wMToxMDoyMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MTRDOTY4N0U2N0VFMTFFNjg2MzZDQjkwNkQ4MjgwMEIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MTRDOTY4N0Q2N0VFMTFFNjg2MzZDQjkwNkQ4MjgwMEIiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUgKE1hY2ludG9zaCkiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo3NjcyQkQ3NjY3QzUxMUU2QjJCQ0UyNDA4MTAwMjE3MSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo3NjcyQkQ3NzY3QzUxMUU2QjJCQ0UyNDA4MTAwMjE3MSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PsBS+GMAAAAjSURBVHjaYvz//z8DLsD4gcGXiYEAGBIKGBne//fFpwAgwAB98AaF2pjlUQAAAABJRU5ErkJggg==) repeat 0 0}.swagger-ui .debug-grid-16{background:transparent url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyhpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+ILine truncated
|
||||||
/*! normalize.css v7.0.0 | MIT License | github.com/necolas/normalize.css */font-family:sans-serif}.swagger-ui html{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;line-height:1.15}.swagger-ui body{margin:0}.swagger-ui article,.swagger-ui aside,.swagger-ui footer,.swagger-ui header,.swagger-ui nav,.swagger-ui section{display:block}.swagger-ui h1{font-size:2em;margin:.67em 0}.swagger-ui figcaption,.swagger-ui figure,.swagger-ui main{display:block}.swagger-ui figure{margin:1em 40px}.swagger-ui hr{box-sizing:content-box;height:0;overflow:visible}.swagger-ui pre{font-family:monospace,monospace;font-size:1em}.swagger-ui a{-webkit-text-decoration-skip:objects;background-color:transparent}.swagger-ui abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}.swagger-ui b,.swagger-ui strong{font-weight:inherit;font-weight:bolder}.swagger-ui code,.swagger-ui kbd,.swagger-ui samp{font-family:monospace,monospace;font-size:1em}.swagger-ui dfn{font-style:italic}.swagger-ui mark{background-color:#ff0;color:#000}.swagger-ui small{font-size:80%}.swagger-ui sub,.swagger-ui sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}.swagger-ui sub{bottom:-.25em}.swagger-ui sup{top:-.5em}.swagger-ui audio,.swagger-ui video{display:inline-block}.swagger-ui audio:not([controls]){display:none;height:0}.swagger-ui img{border-style:none}.swagger-ui svg:not(:root){overflow:hidden}.swagger-ui button,.swagger-ui input,.swagger-ui optgroup,.swagger-ui select,.swagger-ui textarea{font-family:sans-serif;font-size:100%;line-height:1.15;margin:0}.swagger-ui button,.swagger-ui input{overflow:visible}.swagger-ui button,.swagger-ui select{text-transform:none}.swagger-ui [type=reset],.swagger-ui [type=submit],.swagger-ui button,.swagger-ui html [type=button]{-webkit-appearance:button}.swagger-ui [type=button]::-moz-focus-inner,.swagger-ui [type=reset]::-moz-focus-inner,.swagger-ui [type=submit]::-moz-focus-inner,.swagger-ui button::-moz-focus-inner{border-style:none;padding:0}.swagger-ui [type=button]:-moz-focusring,.swagger-ui [type=reset]:-moz-focusring,.swagger-ui [type=submit]:-moz-focusring,.swagger-ui button:-moz-focusring{outline:1px dotted ButtonText}.swagger-ui fieldset{padding:.35em .75em .625em}.swagger-ui legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}.swagger-ui progress{display:inline-block;vertical-align:baseline}.swagger-ui textarea{overflow:auto}.swagger-ui [type=checkbox],.swagger-ui [type=radio]{box-sizing:border-box;padding:0}.swagger-ui [type=number]::-webkit-inner-spin-button,.swagger-ui [type=number]::-webkit-outer-spin-button{height:auto}.swagger-ui [type=search]{-webkit-appearance:textfield;outline-offset:-2px}.swagger-ui [type=search]::-webkit-search-cancel-button,.swagger-ui [type=search]::-webkit-search-decoration{-webkit-appearance:none}.swagger-ui ::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}.swagger-ui details,.swagger-ui menu{display:block}.swagger-ui summary{display:list-item}.swagger-ui canvas{display:inline-block}.swagger-ui [hidden],.swagger-ui template{display:none}.swagger-ui .debug *{outline:1px solid gold}.swagger-ui .debug-white *{outline:1px solid #fff}.swagger-ui .debug-black *{outline:1px solid #000}.swagger-ui .debug-grid{background:transparent url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyhpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTExIDc5LjE1ODMyNSwgMjAxNS8wOS8xMC0wMToxMDoyMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MTRDOTY4N0U2N0VFMTFFNjg2MzZDQjkwNkQ4MjgwMEIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MTRDOTY4N0Q2N0VFMTFFNjg2MzZDQjkwNkQ4MjgwMEIiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUgKE1hY2ludG9zaCkiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo3NjcyQkQ3NjY3QzUxMUU2QjJCQ0UyNDA4MTAwMjE3MSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo3NjcyQkQ3NzY3QzUxMUU2QjJCQ0UyNDA4MTAwMjE3MSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PsBS+GMAAAAjSURBVHjaYvz//z8DLsD4gcGXiYEAGBIKGBne//fFpwAgwAB98AaF2pjlUQAAAABJRU5ErkJggg==) repeat 0 0}.swagger-ui .debug-grid-16{background:transparent url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyhpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eLine truncated
|
|
||||||
|
|
||||||
/*# sourceMappingURL=swagger-ui.css.map*/
|
/*# sourceMappingURL=swagger-ui.css.map*/
|
||||||
@@ -1 +1 @@
|
|||||||
{"version":3,"sources":["webpack:///./src/style/main.scss","webpack:///./src/style/_type.scss","webpack:///./src/style/_variables.scss","webpack:///./node_modules/tachyons-sass/scss/_normalize.scss","webpack:///./node_modules/tachyons-sass/scss/_debug-children.scss","webpack:///./node_modules/tachyons-sass/scss/_debug-grid.scss","webpack:///./node_modules/tachyons-sass/scss/_box-sizing.scss","webpack:///./node_modules/tachyons-sass/scss/_aspect-ratios.scss","webpack:///./node_modules/tachyons-sass/scss/_images.scss","webpack:///./node_modules/tachyons-sass/scss/_background-size.scss","webpack:///./node_modules/tachyons-sass/scss/_background-position.scss","webpack:///./node_modules/tachyons-sass/scss/_outlines.scss","webpack:///./node_modules/tachyons-sass/scss/_borders.scss","webpack:///./node_modules/tachyons-sass/scss/_border-colors.scss","webpack:///./node_modules/tachyons-sass/scss/_border-radius.scss","webpack:///./node_modules/tachyons-sass/scss/_border-style.scss","webpack:///./node_modules/tachyons-sass/scss/_border-widths.scss","webpack:///./node_modules/tachyons-sass/scss/_box-shadow.scss","webpack:///./node_modules/tachyons-sass/scss/_code.scss","webpack:///./node_modules/tachyons-sass/scss/_coordinates.scss","webpack:///./node_modules/tachyons-sass/scss/_clears.scss","webpack:///./node_modules/tachyons-sass/scss/_flexbox.scss","webpack:///./node_modules/tachyons-sass/scss/_display.scss","webpack:///./node_modules/tachyons-sass/scss/_floats.scss","webpack:///./node_modules/tachyons-sass/scss/_font-family.scss","webpack:///./node_modules/tachyons-sass/scss/_font-style.scss","webpack:///./node_modules/tachyons-sass/scss/_font-weight.scss","webpack:///./node_modules/tachyons-sass/scss/_forms.scss","webpack:///./node_modules/tachyons-sass/scss/_heights.scss","webpack:///./node_modules/tachyons-sass/scss/_letter-spacing.scss","webpack:///./node_modules/tachyons-sass/scss/_line-height.scss","webpack:///./node_modules/tachyons-sass/scss/_links.scss","webpack:///./node_modules/tachyons-sass/scss/_lists.scss","webpack:///./node_modules/tachyons-sass/scss/_max-widths.scss","webpack:///./node_modules/tachyons-sass/scss/_widths.scss","webpack:///./node_modules/tachyons-sass/scss/_overflow.scss","webpack:///./node_modules/tachyons-sass/scss/_position.scss","webpack:///./node_modules/tachyons-sass/scss/_opacity.scss","webpack:///./node_modules/tachyons-sass/scss/_rotations.scss","webpack:///./node_modules/tachyons-sass/scss/_skins.scss","webpack:///./node_modules/tachyons-sass/scss/_skins-pseudo.scss","webpack:///./node_modules/tachyons-sass/scss/_spacing.scss","webpack:///./node_modules/tachyons-sass/scss/_variables.scss","webpack:///./node_modules/tachyons-sass/scss/_negative-margins.scss","webpack:///./node_modules/tachyons-sass/scss/_tables.scss","webpack:///./node_modules/tachyons-sass/scss/_text-decoration.scss","webpack:///./node_modules/tachyons-sass/scss/_text-align.scss","webpack:///./node_modules/tachyons-sass/scss/_text-transform.scss","webpack:///./node_modules/tachyons-sass/scss/_type-scale.scss","webpack:///./node_modules/tachyons-sass/scss/_typography.scss","webpack:///./node_modules/tachyons-sass/scss/_utilities.scss","webpack:///./node_modules/tachyons-sass/scss/_visibility.scss","webpack:///./node_modules/tachyons-sass/scss/_white-space.scss","webpack:///./node_modules/tachyons-sass/scss/_vertical-align.scss","webpack:///./node_modules/tachyons-sass/scss/_hovers.scss","webpack:///./node_modules/tachyons-sass/scss/_z-index.scss","webpack:///./node_modules/tachyons-sass/scss/_nested.scss","webpack:///./src/style/_layout.scss","webpack:///./src/style/_buttons.scss","webpack:///./src/style/_mixins.scss","webpack:///./src/style/_form.scss","webpack:///./src/style/_modal.scss","webpack:///./src/style/_models.scss","webpack:///./src/style/_servers.scss","webpack:///./src/style/_table.scss","webpack:///./src/style/_topbar.scss","webpack:///./src/style/_information.scss","webpack:///./src/style/_authorize.scss","webpack:///./src/style/_errors.scss","webpack:///./src/style/_split-pane-mode.scss","webpack:///./src/style/_markdown.scss"],"names":[],"mappings":"AAAA,YCII,aCYU;ECTd,4EFLI,sBDqhCJ,CGrgCA,iBAEE,0BACA,8BAFA,gBH4gCF,CGhgCA,iBACE,QHkgCF,CG3/BA,gHAME,aH6/BF,CGr/BA,eACE,cACA,cHu/BF,CG5+BA,2DAGE,aH++BF,CGx+BA,mBACE,eH0+BF,CGl+BA,eACE,uBACA,SACA,gBHu+BF,CG/9BA,gBACE,gCACA,aHm+BF,CGx9BA,cAEE,qCADA,4BH69BF,CGp9BA,wBACE,mBACA,0BACA,yEHy9BF,CGl9BA,iCAEE,oBASA,kBH28BF,CGn8BA,kDAGE,gCACA,aH28BF,CGp8BA,gBACE,iBHs8BF,CG/7BA,iBACE,sBACA,UHi8BF,CG17BA,kBACE,aH47BF,CGp7BA,gCAEE,cACA,cACA,kBACA,uBHs7BF,CGn7BA,gBACE,aHq7BF,CGl7BA,gBACE,SHo7BF,CG16BA,oCAEE,oBH46BF,CGr6BA,kCACE,aACA,QHu6BF,CGh6BA,gBACE,iBHk6BF,CG35BA,2BACE,eH65BF,CGl5BA,kGAKE,uBACA,eACA,iBACA,QHw5BF,CGh5BA,qCAEE,gBHm5BF,CG34BA,sCAEE,mBH84BF,CGr4BA,qGAIE,yBHw4BF,CGj4BA,wKAIE,kBACA,SHm4BF,CG53BA,4JAIE,6BH83BF,CGv3BA,qBACE,0BHy3BF,CG/2BA,mBACE,sBACA,cACA,cACA,eACA,UACA,kBHu3BF,CG/2BA,qBACE,qBACA,uBHm3BF,CG52BA,qBACE,aH82BF,CGt2BA,qDAEE,sBACA,SH02BLine truncated
|
{"version":3,"file":"swagger-ui.css","mappings":"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4DCuDa,CDrDb,oDC8BW,CD7BX,oDC8BW,CD7BX,oDC8BW,CD7BX,oDC8BW,CD7BX,oDC8BW,CD7BX,oDC8BW,CD7BX,oDC8BW,CD7BX,oDC8BW,CD7BX,oDC8BW,CD7BX,qDC8BW,CD7BX,uDC8BY,CD7BZ,wDC8Ba,CD5Bb,6CCyCW,CDxCX,wCCyCM,CDxCN,8CCyCY,CDxCZ,2CCyCS,CDxCT,yCCyCO,CDxCP,wCCyCS,CDxCT,iDCyCe,CDxCf,2CCyCS,CDxCT,iDCyCe,CDxCf,8CCyCY,CDxCZ,6CCyCW,CDxCX,yCCyCO,CDxCP,+CCyCa,CDxCb,+CCyCa,CDxCb,0CCyCQ,CDxCR,gDCyCc,CDxCd,yCCyCO,CDxCP,8CCyCY,CDxCZ,yCCyCO,CDxCP,+CCyCa,CDxCb,kDCyCgB,CDxChB,gDCyCc,CDxCd,iDCyCe,CDxCf,kDCyCgB,CDxChB,+CCyCa,CDvCb,oDCVc,CDWd,6CE3DE,gCDmBmB,CClBnB,sCDmBgB,CClBhB,qCDmBgB,CClBhB,oCDmBgB,CClBhB,mCDmBgB,CClBhB,sCDmBqB,CClBrB,yCDmBmB,CClBnB,wBACI,yBACA,0BAEJ,qBACI,4BACA,6BAEJ,uBAEI,4BADA,wBACA,CAEJ,sBAEI,6BADA,yBACA,CAGN,mCACE,mCDNmB,CCOnB,yCDNgB,CCOhB,wCDNgB,CCOhB,uCDNgB,CCOhB,sCDNgB,CCOhB,yCDNqB,CCOrB,4CDNmB,CCOnB,2BACI,yBACA,0BAEJ,wBACI,4BACA,6BAEJ,0BAEI,4BADA,wBACA,CAEJ,yBAEI,6BADA,yBACA,EAIN,uDACE,kCDhCmB,CCiCnB,wCDhCgB,CCiChB,uCDhCgB,CCiChB,sCDhCgB,CCiChB,qCDhCgB,CCiChB,wCDhCqB,CCiCrB,2CDhCmB,CCiCnB,0BACI,yBACA,0BAEJ,uBACI,4BACA,6BAEJ,yBAEI,4BADA,wBACA,CAEJ,wBAEI,6BADA,yBACA,EAIN,mCACE,kCD1DmB,CC2DnB,wCD1DgB,CC2DhB,uCD1DgB,CC2DhB,sCD1DgB,CC2DhB,qCD1DgB,CC2DhB,wCD1DqB,CC2DrB,2CD1DmB,CC2DnB,0BACI,yBACA,0BAEJ,uBACI,4BACA,6BAEJ,yBAEI,4BADA,wBACA,CAEJ,wBAEI,6BADA,yBACA,ECrGN,2CACA,2CACA,yCACA,uCAEA,mCACE,8CACA,8CACA,4CACA,2CAGF,uDACE,6CACA,6CACA,2CACA,0CAGF,mCACE,6CACA,6CACA,2CACA,0CCvBF,+BH6BoB,CG5BpB,qCH6BiB,CG5BjB,oCH6BiB,CG5BjB,mCH6BiB,CG5BjB,kCH6BiB,CG5BjB,kCH6BiB,CG1BjB,oCHqBoB,CGpBpB,sCHoBoB,CGnBpB,uCHmBoB,CGlBpB,qCHkBoB,CGhBpB,mCACE,kCHekB,CGdlB,wCHee,CGdf,uCHee,CGdf,sCHee,CGdf,qCHee,CGdf,qCHee,CGdf,uCHSkB,CGRlB,yCHQkB,CGPlB,0CHOkB,CGNlB,wCHMkB,EGHpB,uDACE,iCHEkB,CGDlB,uCHEe,CGDf,sCHEe,CGDf,qCHEe,CGDf,oCHEe,CGDf,oCHEe,CGDf,sCHJkB,CGKlB,wCHLkB,CGMlB,yCHNkB,CGOlB,uCHPkB,EGUpB,mCACE,iCHXkB,CGYlB,uCHXe,CGYf,sCHXe,CGYf,qCHXe,CGYf,oCHXe,CGYf,oCHXe,CGYf,sCHjBkB,CGkBlB,wCHlBkB,CGmBlB,yCHnBkB,CGoBlB,uCHpBkB,EIxCpB,2DJ8Ce,CI7Cf,2DJ8Ce,CI7Cf,+DJ8Ce,CI7Cf,6DJ8Ce,CI7Cf,6DJ8Ce,CI5Cf,mCACE,8DJuCa,CItCb,8DJuCa,CItCb,kEJuCa,CItCb,gEJuCa,CItCb,gEJuCa,EIpCf,uDACE,6DJ+Ba,CI9Bb,6DJ+Ba,CI9Bb,iEJ+Ba,CI9Bb,+DJ+Ba,CI9Bb,+DJ+Ba,EI5Bf,mCACE,6DJuBa,CItBb,6DJuBa,CItBb,iEJuBa,CItBb,+DJuBa,CItBb,+DJuBa,EKxDf,iBACE,gBACA,kBACA,gBCkBF,yBACA,6BACA,+BACA,2BAEA,4BACA,gCACA,kCACA,8BAEA,4BACA,gCACA,kCACA,8BAEA,8BACA,kCACA,oCACA,gCAEA,8BACA,kCACA,oCACA,gCAGA,4BAGE,SACA,OAFA,QADA,KAGA,CAGF,mCACE,4BACA,8BACA,gCACA,kCACA,+BACA,iCACA,mCACA,qCACA,+BACA,iCACA,mCACA,qCACA,iCACA,qCACA,uCACA,mCACA,iCACA,qCACA,uCACA,mCACA,+BAGE,SACA,OAFA,QADA,KAGA,EAIJ,uDACE,2BACA,6BACA,+Line truncated
|
||||||
@@ -1,3 +1,2 @@
|
|||||||
/*! For license information please see swagger-ui.js.LICENSE.txt */
|
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.SwaggerUICore=t():e.SwaggerUICore=t()}(this,(function(){return(()=>{var e={6024:(e,t,r)=>{"use strict";r.d(t,{Z:()=>v});var n=r(4250),s=r.n(n),a=r(1093),o=r.n(a),l=r(8493),i=r.n(l),c=r(3942),u=r.n(c),p=r(6689),d=r.n(p);const m=require("react-immutable-pure-component");var h=r.n(m),g=r(8082),f=r.n(g),y=r(580),E=r.n(y);class v extends(h()){constructor(){super(...arguments),o()(this,"getModelName",(e=>-1!==i()(e).call(e,"#/definitions/")?e.replace(/^.*#\/definitions\//,""):-1!==i()(e).call(e,"#/components/schemas/")?e.replace(/^.*#\/components\/schemas\//,""):void 0)),o()(this,"getRefSchema",(e=>{let{specSelectors:t}=this.props;return t.findDefinition(e)}))}render(){let{getComponent:e,getConfigs:t,specSelectors:n,schema:a,required:o,name:l,isRef:i,specPath:c,displayName:u,includeReadOnly:p,includeWriteOnly:m}=this.props;const h=e("ObjectModel"),g=e("ArrayModel"),f=e("PrimitiveModel");let y="object",E=a&&a.get("$$ref");if(!l&&E&&(l=this.getModelName(E)),!a&&E&&(a=this.getRefSchema(l)),!a)return d().createElement("span",{className:"model model-title"},d().createElement("span",{className:"model-title__text"},u||l),d().createElement("img",{src:r(2517),height:"20px",width:"20px"}));const v=n.isOAS3()&&a.get("deprecated");switch(i=void 0!==i?i:!!E,y=a&&a.get("type")||y,y){case"object":return d().createElement(h,s()({className:"object"},this.props,{specPath:c,getConfigs:t,schema:a,name:l,deprecated:v,isRef:i,includeReadOnly:p,includeWriteOnly:m}));case"array":return d().createElement(g,s()({className:"array"},this.props,{getConfigs:t,schema:a,name:l,deprecated:v,required:o,includeReadOnly:p,includeWriteOnly:m}));default:return d().createElement(f,s()({},this.props,{getComponent:e,getConfigs:t,schema:a,name:l,deprecated:v,required:o}))}}}o()(v,"propTypes",{schema:u()(f()).isRequired,getComponent:E().func.isRequired,getConfigs:E().func.isRequired,specSelectors:E().object.isRequired,name:E().string,displayName:E().string,isRef:E().bool,required:E().bool,expandDepth:E().number,depth:E().number,specPath:f().list.isRequired,includeReadOnly:E().bool,includeWriteOnly:E().bool})},5623:(e,t,r)=>{"use strict";r.d(t,{Z:()=>m});var n=r(1093),s=r.n(n),a=r(7252),o=r.n(a),l=r(6689),i=r.n(l),c=r(3883),u=r.n(c),p=(r(580),r(1890)),d=r(7504);class m extends i().Component{constructor(e,t){super(e,t),s()(this,"getDefinitionUrl",(()=>{let{specSelectors:e}=this.props;return new(u())(e.url(),d.Z.location).toString()}));let{getConfigs:r}=e,{validatorUrl:n}=r();this.state={url:this.getDefinitionUrl(),validatorUrl:void 0===n?"https://validator.swagger.io/validator":n}}UNSAFE_componentWillReceiveProps(e){let{getConfigs:t}=e,{validatorUrl:r}=t();this.setState({url:this.getDefinitionUrl(),validatorUrl:void 0===r?"https://validator.swagger.io/validator":r})}render(){let{getConfigs:e}=this.props,{spec:t}=e(),r=(0,p.Nm)(this.state.validatorUrl);return"object"==typeof t&&o()(t).length?null:this.state.url&&(0,p.hW)(this.state.validatorUrl)&&(0,p.hW)(this.state.url)?i().createElement("span",{className:"float-right"},i().createElement("a",{target:"_blank",rel:"noopener noreferrer",href:`${r}/debug?url=${encodeURIComponent(this.state.url)}`},i().createElement(h,{src:`${r}?url=${encodeURIComponent(this.state.url)}`,alt:"Online validator badge"}))):null}}class h extends i().Component{constructor(e){super(e),this.state={loaded:!1,error:!1}}componentDidMount(){const e=new Image;e.onload=()=>{this.setState({loaded:!0})},e.onerror=()=>{this.setState({error:!0})},e.src=this.props.src}UNSAFE_componentWillReceiveProps(e){if(e.src!==this.props.src){const t=new Image;t.onload=()=>{this.setState({loaded:!0})},t.onerror=()=>{this.setState({error:!0})},t.src=e.src}}render(){return this.state.error?i().createElement("img",{alt:"Error"}):this.state.loaded?i().createElement("img",{src:this.props.src,alt:this.props.alt}):null}}},2552:(e,t,r)=>{"use strict";r.d(t,{Z:()=>d,s:()=>m});var n=r(6689),s=r.n(n),a=(r(580),r(963));const o=require("remarkable/linkify"),l=require("dompurify");var i=r.n(l),c=r(9003),u=r.n(c);function p(e){let{source:t,className:r="",getConfigs:n}=e;if("string"!=typeof t)return null;const l=new a.Remarkable({html:!0,typographer:!0,breaks:!0,linkTarget:"_blank"}).use(o.linkify);l.core.ruler.disable(["replacements","smartquotes"]);const{useUnsafeMarkdown:i}=n(),c=l.render(t),p=m(c,{useUnsafeMarkdown:i});return t&&c&&p?s().createElement("div",{className:u()(r,"markdown"),dangerouslySetInnerHTML:{__html:p}}):null}i().addHook&&i().addHook("beforeSanitizeElements",(function(e){return e.href&&e.setAttribute("rel","noopener noreferrer"),e})),p.defaultProps={getConfigs:()=>({useUnsafeMarkdown:!1})};const d=p;function m(e){let{useUnsafeMarkdown:t=!1}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const r=t,n=t?[]:["style","class"];return t&&!m.hasWarnedAboutDeprecation&&(console.warn("uLine truncated
|
||||||
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.SwaggerUICore=t():e.SwaggerUICore=t()}(this,(function(){return function(e){var t={};function n(r){if(t[r])return t[r].exports;var a=t[r]={i:r,l:!1,exports:{}};return e[r].call(a.exports,a,a.exports,n),a.l=!0,a.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var a in e)n.d(r,a,function(t){return e[t]}.bind(null,a));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="/dist",n(n.s=404)}([function(e,t){e.exports=require("react")},function(e,t){e.exports=require("immutable")},function(e,t,n){e.exports=n(438)},function(e,t,n){var r=n(195);e.exports=function(e,t,n){return t in e?r(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e},e.exports.default=e.exports,e.exports.__esModule=!0},function(e,t,n){e.exports=n(467)},function(e,t,n){"use strict";(function(e){n.d(t,"z",(function(){return be})),n.d(t,"i",(function(){return Ee})),n.d(t,"v",(function(){return xe})),n.d(t,"r",(function(){return Se})),n.d(t,"t",(function(){return we})),n.d(t,"s",(function(){return je})),n.d(t,"p",(function(){return Oe})),n.d(t,"u",(function(){return Ce})),n.d(t,"x",(function(){return _e})),n.d(t,"y",(function(){return Ae})),n.d(t,"J",(function(){return ke})),n.d(t,"f",(function(){return Ie})),n.d(t,"n",(function(){return Pe})),n.d(t,"h",(function(){return Te})),n.d(t,"D",(function(){return Re})),n.d(t,"K",(function(){return Me})),n.d(t,"o",(function(){return Ve})),n.d(t,"C",(function(){return ze})),n.d(t,"a",(function(){return Fe})),n.d(t,"H",(function(){return Je})),n.d(t,"b",(function(){return We})),n.d(t,"G",(function(){return He})),n.d(t,"F",(function(){return $e})),n.d(t,"E",(function(){return Ye})),n.d(t,"k",(function(){return Ke})),n.d(t,"d",(function(){return Ge})),n.d(t,"g",(function(){return Ze})),n.d(t,"m",(function(){return Xe})),n.d(t,"l",(function(){return Qe})),n.d(t,"e",(function(){return et})),n.d(t,"I",(function(){return tt})),n.d(t,"w",(function(){return nt})),n.d(t,"A",(function(){return rt})),n.d(t,"B",(function(){return at})),n.d(t,"j",(function(){return ot})),n.d(t,"c",(function(){return it})),n.d(t,"q",(function(){return ct}));var r=n(14),a=n.n(r),o=(n(13),n(18)),i=n.n(o),s=n(44),c=n.n(s),u=n(23),l=n.n(u),p=n(4),f=n.n(p),d=n(69),h=n.n(d),m=n(2),v=n.n(m),g=n(21),y=n.n(g),b=n(12),E=n.n(b),x=n(15),S=n.n(x),w=(n(33),n(28)),j=n.n(w),O=n(20),C=n.n(O),_=n(165),A=n.n(_),k=n(19),I=n.n(k),P=n(64),T=n.n(P),R=(n(29),n(30)),N=n.n(R),M=n(17),q=n.n(M),D=n(51),B=n.n(D),L=n(88),U=n.n(L),V=n(85),z=n.n(V),F=n(1),J=n.n(F),W=n(374),H=n(375),$=n.n(H),Y=n(215),K=n.n(Y),G=n(216),Z=n.n(G),X=n(376),Q=n.n(X),ee=n(276),te=n.n(ee),ne=n(101),re=n.n(ne),ae=n(134),oe=n.n(ae),ie=n(116),se=n(25),ce=n(378),ue=n.n(ce),le=n(119),pe=n(103),fe=n.n(pe),de=n(379),he=n.n(de),me=n(63),ve=n.n(me),ge="default",ye=function(e){return J.a.Iterable.isIterable(e)};function be(e){return we(e)?ye(e)?e.toJS():e:{}}function Ee(e){var t,n;if(ye(e))return e;if(e instanceof se.a.File)return e;if(!we(e))return e;if(l()(e))return f()(n=J.a.Seq(e)).call(n,Ee).toList();if(oe()(h()(e))){var r,a=function(e){if(!oe()(h()(e)))return e;var t,n={},r="_**[]",a={},o=c()(h()(e).call(e));try{for(o.s();!(t=o.n()).done;){var i=t.value;if(n[i[0]]||a[i[0]]&&a[i[0]].containsMultiple){var s,u,l,p;if(!a[i[0]])a[i[0]]={containsMultiple:!0,length:1},n[v()(l=v()(p="".concat(i[0])).call(p,r)).call(l,a[i[0]].length)]=n[i[0]],delete n[i[0]];a[i[0]].length+=1,n[v()(s=v()(u="".concat(i[0])).call(u,r)).call(s,a[i[0]].length)]=i[1]}else n[i[0]]=i[1]}}catch(e){o.e(e)}finally{o.f()}return n}(e);return f()(r=J.a.OrderedMap(a)).call(r,Ee)}return f()(t=J.a.OrderedMap(e)).call(t,Ee)}function xe(e){return l()(e)?e:[e]}function Se(e){return"function"==typeof e}function we(e){return!!e&&"object"===i()(e)}function je(e){return"function"==typeof e}function Oe(e){return l()(e)}var Ce=Z.a;function _e(e,t){var n;return j()(n=S()(e)).call(n,(function(n,r){return n[r]=t(e[r],r),n}),{})}function Ae(e,t){var n;return j()(n=S()(e)).call(n,(function(n,r){var a=t(e[r],r);return a&&"object"===i()(a)&&C()(n,a),n}),{})}function ke(e){return function(t){t.dispatch,t.getState;return function(t){return function(n){return"function"==typeof n?n(e()):t(n)}}}}function Ie(e){var t,n=e.keySeq();return n.contains(ge)?ge:A()(t=E()(n).call(n,(function(e){return"2"==Line truncated
|
|
||||||
//# sourceMappingURL=swagger-ui.js.map
|
//# sourceMappingURL=swagger-ui.js.map
|
||||||
@@ -1 +1 @@
|
|||||||
{"version":3,"sources":["webpack://SwaggerUICore/webpack/universalModuleDefinition","webpack://SwaggerUICore/webpack/bootstrap","webpack://SwaggerUICore/external \"react\"","webpack://SwaggerUICore/external \"immutable\"","webpack://SwaggerUICore/./node_modules/@babel/runtime-corejs3/core-js-stable/instance/concat.js","webpack://SwaggerUICore/./node_modules/@babel/runtime-corejs3/helpers/defineProperty.js","webpack://SwaggerUICore/./node_modules/@babel/runtime-corejs3/core-js-stable/instance/map.js","webpack://SwaggerUICore/./src/core/utils.js","webpack://SwaggerUICore/./node_modules/@babel/runtime-corejs3/helpers/classCallCheck.js","webpack://SwaggerUICore/./node_modules/@babel/runtime-corejs3/helpers/createClass.js","webpack://SwaggerUICore/./node_modules/@babel/runtime-corejs3/helpers/inherits.js","webpack://SwaggerUICore/./node_modules/@babel/runtime-corejs3/helpers/createSuper.js","webpack://SwaggerUICore/./node_modules/@babel/runtime-corejs3/helpers/assertThisInitialized.js","webpack://SwaggerUICore/external \"prop-types\"","webpack://SwaggerUICore/./node_modules/@babel/runtime-corejs3/core-js-stable/instance/filter.js","webpack://SwaggerUICore/./node_modules/@babel/runtime-corejs3/helpers/slicedToArray.js","webpack://SwaggerUICore/./node_modules/@babel/runtime-corejs3/helpers/toConsumableArray.js","webpack://SwaggerUICore/./node_modules/@babel/runtime-corejs3/core-js-stable/object/keys.js","webpack://SwaggerUICore/external \"reselect\"","webpack://SwaggerUICore/./node_modules/@babel/runtime-corejs3/core-js-stable/instance/index-of.js","webpack://SwaggerUICore/./node_modules/@babel/runtime-corejs3/helpers/typeof.js","webpack://SwaggerUICore/./node_modules/@babel/runtime-corejs3/core-js-stable/instance/slice.js","webpack://SwaggerUICore/./node_modules/@babel/runtime-corejs3/core-js-stable/object/assign.js","webpack://SwaggerUICore/./node_modules/@babel/runtime-corejs3/core-js-stable/instance/for-each.js","webpack://SwaggerUICore/./node_modules/core-js-pure/internals/export.js","webpack://SwaggerUICore/./node_modules/@babel/runtime-corejs3/core-js-stable/array/is-array.js","webpack://SwaggerUICore/./node_modules/@babel/runtime-corejs3/helpers/objectSpread2.js","webpack://SwaggerUICore/./src/core/window.js","webpack://SwaggerUICore/external \"react-immutable-proptypes\"","webpack://SwaggerUICore/./node_modules/@babel/runtime-corejs3/helpers/extends.js","webpack://SwaggerUICore/./node_modules/@babel/runtime-corejs3/core-js-stable/instance/reduce.js","webpack://SwaggerUICore/./node_modules/@babel/runtime-corejs3/core-js-stable/instance/includes.js","webpack://SwaggerUICore/./node_modules/@babel/runtime-corejs3/core-js-stable/json/stringify.js","webpack://SwaggerUICore/./node_modules/core-js-pure/internals/path.js","webpack://SwaggerUICore/./src/core/plugins/oas3/helpers.jsx","webpack://SwaggerUICore/./node_modules/@babel/runtime-corejs3/core-js-stable/instance/bind.js","webpack://SwaggerUICore/./node_modules/core-js-pure/internals/fails.js","webpack://SwaggerUICore/./node_modules/@babel/runtime-corejs3/regenerator/index.js","webpack://SwaggerUICore/./node_modules/core-js-pure/internals/global.js","webpack://SwaggerUICore/./node_modules/core-js-pure/internals/well-known-symbol.js","webpack://SwaggerUICore/./node_modules/core-js-pure/internals/entry-virtual.js","webpack://SwaggerUICore/./node_modules/lodash/get.js","webpack://SwaggerUICore/./node_modules/core-js-pure/internals/define-well-known-symbol.js","webpack://SwaggerUICore/./src/core/plugins/spec/actions.js","webpack://SwaggerUICore/./node_modules/core-js-pure/internals/is-object.js","webpack://SwaggerUICore/./node_modules/core-js-pure/internals/descriptors.js","webpack://SwaggerUICore/./node_modules/@babel/runtime-corejs3/helpers/createForOfIteratorHelper.js","webpack://SwaggerUICore/external \"classnames\"","webpack://SwaggerUICore/./node_modules/core-js-pure/internals/an-object.js","webpack://SwaggerUICore/./node_modules/@babel/runtime-corejs3/helpers/objectWithoutProperties.js","webpack://SwaggerUICore/./src/core/plugins/oas3/actions.js","webpack://SwaggerUICore/./node_modules/core-js-pure/internals/has.js","webpack://SwaggerUICore/./node_modules/lodash/isArray.js","webpack://SwaggerUICore/./node_modules/@babel/runtime-corejs3/core-js-stable/instance/find.js","webpack://SwaggerUICore/./node_modules/lodash/isObject.js","webpack://SwaggerUICore/./node_modules/swagger-client/es/helpers.js","webpack://SwaggerUICore/./src/core/plugins/err/actions.js","webpack://SwaggerUICore/./node_modules/core-js-pure/internals/to-object.js","webpack://SwaggerUICore/./node_modules/@babel/runtime-corejs3/core-js-stable/promise.js","webpack://SwaggerUICore/./node_modules/core-js-pure/internals/to-indexed-object.js","webpack://SwaggerUICore/./node_modules/core-js-pure/internals/create-non-enumerable-property.js","webpack://SwaggerUICore/./node_modules/core-js-pure/internals/object-define-property.js","webpack://SwaggerUICore/./node_modules/core-js-pure/internals/to-lengLine truncated
|
{"version":3,"file":"swagger-ui.js","mappings":"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 truncated
|
||||||
@@ -68,7 +68,7 @@ if (empty($_SERVER['PHP_AUTH_USER']) || empty($_SERVER['PHP_AUTH_PW'])) {
|
|||||||
exit(0);
|
exit(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
$login_role = check_login($login_user, $login_pass, true);
|
$login_role = check_login($login_user, $login_pass, array('eas' => TRUE));
|
||||||
|
|
||||||
if ($login_role === "user") {
|
if ($login_role === "user") {
|
||||||
header("Content-Type: application/xml");
|
header("Content-Type: application/xml");
|
||||||
|
|||||||
+2
-2
@@ -128,10 +128,10 @@ table.footable > tbody > tr.footable-empty > th {
|
|||||||
content: "\f130";
|
content: "\f130";
|
||||||
}
|
}
|
||||||
.fooicon-plus:before {
|
.fooicon-plus:before {
|
||||||
content: "\f4fc";
|
content: "\f4fd";
|
||||||
}
|
}
|
||||||
.fooicon-minus:before {
|
.fooicon-minus:before {
|
||||||
content: "\f2e8";
|
content: "\f2e9";
|
||||||
}
|
}
|
||||||
.fooicon-search:before {
|
.fooicon-search:before {
|
||||||
content: "\f52a";
|
content: "\f52a";
|
||||||
|
|||||||
+1
-1
@@ -1 +1 @@
|
|||||||
.flag-icon-background{background-size:contain;background-position:50%;background-repeat:no-repeat}.flag-icon{background-size:contain;background-position:50%;background-repeat:no-repeat;position:relative;display:inline-block;width:1.33333333em;line-height:1em}.flag-icon:before{content:'\00a0'}.flag-icon.flag-icon-squared{width:1em}.flag-icon-ad{background-image:url(../flags/4x3/ad.svg)}.flag-icon-ad.flag-icon-squared{background-image:url(../flags/1x1/ad.svg)}.flag-icon-ae{background-image:url(../flags/4x3/ae.svg)}.flag-icon-ae.flag-icon-squared{background-image:url(../flags/1x1/ae.svg)}.flag-icon-af{background-image:url(../flags/4x3/af.svg)}.flag-icon-af.flag-icon-squared{background-image:url(../flags/1x1/af.svg)}.flag-icon-ag{background-image:url(../flags/4x3/ag.svg)}.flag-icon-ag.flag-icon-squared{background-image:url(../flags/1x1/ag.svg)}.flag-icon-ai{background-image:url(../flags/4x3/ai.svg)}.flag-icon-ai.flag-icon-squared{background-image:url(../flags/1x1/ai.svg)}.flag-icon-al{background-image:url(../flags/4x3/al.svg)}.flag-icon-al.flag-icon-squared{background-image:url(../flags/1x1/al.svg)}.flag-icon-am{background-image:url(../flags/4x3/am.svg)}.flag-icon-am.flag-icon-squared{background-image:url(../flags/1x1/am.svg)}.flag-icon-ao{background-image:url(../flags/4x3/ao.svg)}.flag-icon-ao.flag-icon-squared{background-image:url(../flags/1x1/ao.svg)}.flag-icon-aq{background-image:url(../flags/4x3/aq.svg)}.flag-icon-aq.flag-icon-squared{background-image:url(../flags/1x1/aq.svg)}.flag-icon-ar{background-image:url(../flags/4x3/ar.svg)}.flag-icon-ar.flag-icon-squared{background-image:url(../flags/1x1/ar.svg)}.flag-icon-as{background-image:url(../flags/4x3/as.svg)}.flag-icon-as.flag-icon-squared{background-image:url(../flags/1x1/as.svg)}.flag-icon-at{background-image:url(../flags/4x3/at.svg)}.flag-icon-at.flag-icon-squared{background-image:url(../flags/1x1/at.svg)}.flag-icon-au{background-image:url(../flags/4x3/au.svg)}.flag-icon-au.flag-icon-squared{background-image:url(../flags/1x1/au.svg)}.flag-icon-aw{background-image:url(../flags/4x3/aw.svg)}.flag-icon-aw.flag-icon-squared{background-image:url(../flags/1x1/aw.svg)}.flag-icon-ax{background-image:url(../flags/4x3/ax.svg)}.flag-icon-ax.flag-icon-squared{background-image:url(../flags/1x1/ax.svg)}.flag-icon-az{background-image:url(../flags/4x3/az.svg)}.flag-icon-az.flag-icon-squared{background-image:url(../flags/1x1/az.svg)}.flag-icon-ba{background-image:url(../flags/4x3/ba.svg)}.flag-icon-ba.flag-icon-squared{background-image:url(../flags/1x1/ba.svg)}.flag-icon-bb{background-image:url(../flags/4x3/bb.svg)}.flag-icon-bb.flag-icon-squared{background-image:url(../flags/1x1/bb.svg)}.flag-icon-bd{background-image:url(../flags/4x3/bd.svg)}.flag-icon-bd.flag-icon-squared{background-image:url(../flags/1x1/bd.svg)}.flag-icon-be{background-image:url(../flags/4x3/be.svg)}.flag-icon-be.flag-icon-squared{background-image:url(../flags/1x1/be.svg)}.flag-icon-bf{background-image:url(../flags/4x3/bf.svg)}.flag-icon-bf.flag-icon-squared{background-image:url(../flags/1x1/bf.svg)}.flag-icon-bg{background-image:url(../flags/4x3/bg.svg)}.flag-icon-bg.flag-icon-squared{background-image:url(../flags/1x1/bg.svg)}.flag-icon-bh{background-image:url(../flags/4x3/bh.svg)}.flag-icon-bh.flag-icon-squared{background-image:url(../flags/1x1/bh.svg)}.flag-icon-bi{background-image:url(../flags/4x3/bi.svg)}.flag-icon-bi.flag-icon-squared{background-image:url(../flags/1x1/bi.svg)}.flag-icon-bj{background-image:url(../flags/4x3/bj.svg)}.flag-icon-bj.flag-icon-squared{background-image:url(../flags/1x1/bj.svg)}.flag-icon-bl{background-image:url(../flags/4x3/bl.svg)}.flag-icon-bl.flag-icon-squared{background-image:url(../flags/1x1/bl.svg)}.flag-icon-bm{background-image:url(../flags/4x3/bm.svg)}.flag-icon-bm.flag-icon-squared{background-image:url(../flags/1x1/bm.svg)}.flag-icon-bn{background-image:url(../flags/4x3/bn.svg)}.flag-icon-bn.flag-icon-squared{background-image:url(../flags/1x1/bn.svg)}.flag-icon-bo{background-image:url(../flags/4x3/bo.svg)}.flag-icon-bo.flag-icon-squared{background-image:url(../flags/1x1/bo.svg)}.flag-icon-bq{background-image:url(../flags/4x3/bq.svg)}.flag-icon-bq.flag-icon-squared{background-image:url(../flags/1x1/bq.svg)}.flag-icon-br{background-image:url(../flags/4x3/br.svg)}.flag-icon-br.flag-icon-squared{background-image:url(../flags/1x1/br.svg)}.flag-icon-bs{background-image:url(../flags/4x3/bs.svg)}.flag-icon-bs.flag-icon-squared{background-image:url(../flags/1x1/bs.svg)}.flag-icon-bt{background-image:url(../flags/4x3/bt.svg)}.flag-icon-bt.flag-icon-squared{background-image:url(../flags/1x1/bt.svg)}.flag-icon-bv{background-image:url(../flags/4x3/bv.svg)}.flag-icon-bv.flag-icon-squared{background-image:url(../flags/1x1/bv.svg)}.flag-icon-bw{background-image:url(../flags/4x3/bw.svg)}.flag-icon-bw.flag-icon-squared{background-image:url(../flags/1x1/bw.svg)}.flag-icon-by{background-image:url(../flags/4x3/by.svg)}.flag-icon-by.flag-icon-squared{background-image:url(../flagsLine truncated
|
.flag-icon-background{background-size:contain;background-position:50%;background-repeat:no-repeat}.flag-icon{background-size:contain;background-position:50%;background-repeat:no-repeat;position:relative;display:inline-block;width:1.33333333em;line-height:1em}.flag-icon:before{content:'\00a0'}.flag-icon.flag-icon-squared{width:1em}.flag-icon-ad{background-image:url(../flags/4x3/ad.svg)}.flag-icon-ad.flag-icon-squared{background-image:url(../flags/1x1/ad.svg)}.flag-icon-ae{background-image:url(../flags/4x3/ae.svg)}.flag-icon-ae.flag-icon-squared{background-image:url(../flags/1x1/ae.svg)}.flag-icon-af{background-image:url(../flags/4x3/af.svg)}.flag-icon-af.flag-icon-squared{background-image:url(../flags/1x1/af.svg)}.flag-icon-ag{background-image:url(../flags/4x3/ag.svg)}.flag-icon-ag.flag-icon-squared{background-image:url(../flags/1x1/ag.svg)}.flag-icon-ai{background-image:url(../flags/4x3/ai.svg)}.flag-icon-ai.flag-icon-squared{background-image:url(../flags/1x1/ai.svg)}.flag-icon-al{background-image:url(../flags/4x3/al.svg)}.flag-icon-al.flag-icon-squared{background-image:url(../flags/1x1/al.svg)}.flag-icon-am{background-image:url(../flags/4x3/am.svg)}.flag-icon-am.flag-icon-squared{background-image:url(../flags/1x1/am.svg)}.flag-icon-ao{background-image:url(../flags/4x3/ao.svg)}.flag-icon-ao.flag-icon-squared{background-image:url(../flags/1x1/ao.svg)}.flag-icon-aq{background-image:url(../flags/4x3/aq.svg)}.flag-icon-aq.flag-icon-squared{background-image:url(../flags/1x1/aq.svg)}.flag-icon-ar{background-image:url(../flags/4x3/ar.svg)}.flag-icon-ar.flag-icon-squared{background-image:url(../flags/1x1/ar.svg)}.flag-icon-as{background-image:url(../flags/4x3/as.svg)}.flag-icon-as.flag-icon-squared{background-image:url(../flags/1x1/as.svg)}.flag-icon-at{background-image:url(../flags/4x3/at.svg)}.flag-icon-at.flag-icon-squared{background-image:url(../flags/1x1/at.svg)}.flag-icon-au{background-image:url(../flags/4x3/au.svg)}.flag-icon-au.flag-icon-squared{background-image:url(../flags/1x1/au.svg)}.flag-icon-aw{background-image:url(../flags/4x3/aw.svg)}.flag-icon-aw.flag-icon-squared{background-image:url(../flags/1x1/aw.svg)}.flag-icon-ax{background-image:url(../flags/4x3/ax.svg)}.flag-icon-ax.flag-icon-squared{background-image:url(../flags/1x1/ax.svg)}.flag-icon-az{background-image:url(../flags/4x3/az.svg)}.flag-icon-az.flag-icon-squared{background-image:url(../flags/1x1/az.svg)}.flag-icon-ba{background-image:url(../flags/4x3/ba.svg)}.flag-icon-ba.flag-icon-squared{background-image:url(../flags/1x1/ba.svg)}.flag-icon-bb{background-image:url(../flags/4x3/bb.svg)}.flag-icon-bb.flag-icon-squared{background-image:url(../flags/1x1/bb.svg)}.flag-icon-bd{background-image:url(../flags/4x3/bd.svg)}.flag-icon-bd.flag-icon-squared{background-image:url(../flags/1x1/bd.svg)}.flag-icon-be{background-image:url(../flags/4x3/be.svg)}.flag-icon-be.flag-icon-squared{background-image:url(../flags/1x1/be.svg)}.flag-icon-bf{background-image:url(../flags/4x3/bf.svg)}.flag-icon-bf.flag-icon-squared{background-image:url(../flags/1x1/bf.svg)}.flag-icon-bg{background-image:url(../flags/4x3/bg.svg)}.flag-icon-bg.flag-icon-squared{background-image:url(../flags/1x1/bg.svg)}.flag-icon-bh{background-image:url(../flags/4x3/bh.svg)}.flag-icon-bh.flag-icon-squared{background-image:url(../flags/1x1/bh.svg)}.flag-icon-bi{background-image:url(../flags/4x3/bi.svg)}.flag-icon-bi.flag-icon-squared{background-image:url(../flags/1x1/bi.svg)}.flag-icon-bj{background-image:url(../flags/4x3/bj.svg)}.flag-icon-bj.flag-icon-squared{background-image:url(../flags/1x1/bj.svg)}.flag-icon-bl{background-image:url(../flags/4x3/bl.svg)}.flag-icon-bl.flag-icon-squared{background-image:url(../flags/1x1/bl.svg)}.flag-icon-bm{background-image:url(../flags/4x3/bm.svg)}.flag-icon-bm.flag-icon-squared{background-image:url(../flags/1x1/bm.svg)}.flag-icon-bn{background-image:url(../flags/4x3/bn.svg)}.flag-icon-bn.flag-icon-squared{background-image:url(../flags/1x1/bn.svg)}.flag-icon-bo{background-image:url(../flags/4x3/bo.svg)}.flag-icon-bo.flag-icon-squared{background-image:url(../flags/1x1/bo.svg)}.flag-icon-bq{background-image:url(../flags/4x3/bq.svg)}.flag-icon-bq.flag-icon-squared{background-image:url(../flags/1x1/bq.svg)}.flag-icon-br{background-image:url(../flags/4x3/br.svg)}.flag-icon-br.flag-icon-squared{background-image:url(../flags/1x1/br.svg)}.flag-icon-bs{background-image:url(../flags/4x3/bs.svg)}.flag-icon-bs.flag-icon-squared{background-image:url(../flags/1x1/bs.svg)}.flag-icon-bt{background-image:url(../flags/4x3/bt.svg)}.flag-icon-bt.flag-icon-squared{background-image:url(../flags/1x1/bt.svg)}.flag-icon-bv{background-image:url(../flags/4x3/bv.svg)}.flag-icon-bv.flag-icon-squared{background-image:url(../flags/1x1/bv.svg)}.flag-icon-bw{background-image:url(../flags/4x3/bw.svg)}.flag-icon-bw.flag-icon-squared{background-image:url(../flags/1x1/bw.svg)}.flag-icon-by{background-image:url(../flags/4x3/by.svg)}.flag-icon-by.flag-icon-squared{background-image:url(../flagsLine truncated
|
||||||
@@ -232,6 +232,9 @@ table.footable>tbody>tr.footable-empty>td {
|
|||||||
font-style:italic;
|
font-style:italic;
|
||||||
font-size: 1rem;
|
font-size: 1rem;
|
||||||
}
|
}
|
||||||
|
table>tbody>tr>td>span.footable-toggle {
|
||||||
|
opacity: 0.75;
|
||||||
|
}
|
||||||
.navbar-nav > li {
|
.navbar-nav > li {
|
||||||
font-size: 1rem !important;
|
font-size: 1rem !important;
|
||||||
}
|
}
|
||||||
@@ -256,3 +259,52 @@ code {
|
|||||||
.flag-icon {
|
.flag-icon {
|
||||||
margin-right: 5px;
|
margin-right: 5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.list-group-item.webauthn-authenticator-selection,
|
||||||
|
.list-group-item.totp-authenticator-selection,
|
||||||
|
.list-group-item.yubi_otp-authenticator-selection {
|
||||||
|
border-radius: 0px !important;
|
||||||
|
}
|
||||||
|
.pending-tfa-collapse {
|
||||||
|
padding: 10px;
|
||||||
|
background: #fbfbfb;
|
||||||
|
border: 1px solid #ededed;
|
||||||
|
min-height: 110px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.tag-box {
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
height: auto;
|
||||||
|
}
|
||||||
|
.tag-badge {
|
||||||
|
transition: 200ms linear;
|
||||||
|
margin-top: 5px;
|
||||||
|
margin-bottom: 5px;
|
||||||
|
margin-left: 2px;
|
||||||
|
margin-right: 2px;
|
||||||
|
}
|
||||||
|
.tag-badge.btn-badge {
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
.tag-badge .bi {
|
||||||
|
font-size: 12px;
|
||||||
|
}
|
||||||
|
.tag-badge.btn-badge:hover {
|
||||||
|
filter: brightness(0.9);
|
||||||
|
}
|
||||||
|
.tag-input {
|
||||||
|
margin-left: 10px;
|
||||||
|
border: 0;
|
||||||
|
flex: 1;
|
||||||
|
height: 24px;
|
||||||
|
min-width: 150px;
|
||||||
|
}
|
||||||
|
.tag-input:focus {
|
||||||
|
outline: none;
|
||||||
|
}
|
||||||
|
.tag-add {
|
||||||
|
padding: 0 5px 0 5px;
|
||||||
|
align-items: center;
|
||||||
|
display: inline-flex;
|
||||||
|
}
|
||||||
@@ -54,6 +54,7 @@ if (isset($_SESSION['mailcow_cc_role'])) {
|
|||||||
'rl' => $rl,
|
'rl' => $rl,
|
||||||
'rlyhosts' => $rlyhosts,
|
'rlyhosts' => $rlyhosts,
|
||||||
'dkim' => dkim('details', $domain),
|
'dkim' => dkim('details', $domain),
|
||||||
|
'domain_details' => $result,
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
elseif (isset($_GET['oauth2client']) &&
|
elseif (isset($_GET['oauth2client']) &&
|
||||||
@@ -99,6 +100,7 @@ if (isset($_SESSION['mailcow_cc_role'])) {
|
|||||||
'rlyhosts' => $rlyhosts,
|
'rlyhosts' => $rlyhosts,
|
||||||
'sender_acl_handles' => mailbox('get', 'sender_acl_handles', $mailbox),
|
'sender_acl_handles' => mailbox('get', 'sender_acl_handles', $mailbox),
|
||||||
'user_acls' => acl('get', 'user', $mailbox),
|
'user_acls' => acl('get', 'user', $mailbox),
|
||||||
|
'mailbox_details' => $result
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
elseif (isset($_GET['relayhost']) && is_numeric($_GET["relayhost"]) && !empty($_GET["relayhost"])) {
|
elseif (isset($_GET['relayhost']) && is_numeric($_GET["relayhost"]) && !empty($_GET["relayhost"])) {
|
||||||
|
|||||||
@@ -2,5 +2,5 @@
|
|||||||
session_start();
|
session_start();
|
||||||
unset($_SESSION['pending_mailcow_cc_username']);
|
unset($_SESSION['pending_mailcow_cc_username']);
|
||||||
unset($_SESSION['pending_mailcow_cc_role']);
|
unset($_SESSION['pending_mailcow_cc_role']);
|
||||||
unset($_SESSION['pending_tfa_method']);
|
unset($_SESSION['pending_tfa_methods']);
|
||||||
?>
|
?>
|
||||||
@@ -127,6 +127,7 @@ elseif (!empty($_GET['id']) && ctype_alnum($_GET['id'])) {
|
|||||||
$data['fuzzy_hashes'] = json_decode($mailc['fuzzy_hashes']);
|
$data['fuzzy_hashes'] = json_decode($mailc['fuzzy_hashes']);
|
||||||
// Get text/plain content
|
// Get text/plain content
|
||||||
$data['text_plain'] = $mail_parser->getMessageBody('text');
|
$data['text_plain'] = $mail_parser->getMessageBody('text');
|
||||||
|
if (!json_encode($data['text_plain'])) $data['text_plain'] = '';
|
||||||
// Get html content and convert to text
|
// Get html content and convert to text
|
||||||
$data['text_html'] = $html2text->convert($mail_parser->getMessageBody('html'));
|
$data['text_html'] = $html2text->convert($mail_parser->getMessageBody('html'));
|
||||||
if (empty($data['text_plain']) && empty($data['text_html'])) {
|
if (empty($data['text_plain']) && empty($data['text_html'])) {
|
||||||
|
|||||||
@@ -23,14 +23,43 @@ if (is_array($alertbox_log_parser)) {
|
|||||||
unset($_SESSION['return']);
|
unset($_SESSION['return']);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// map tfa details for twig
|
||||||
|
$pending_tfa_authmechs = [];
|
||||||
|
foreach($_SESSION['pending_tfa_methods'] as $authdata){
|
||||||
|
$pending_tfa_authmechs[$authdata['authmech']] = false;
|
||||||
|
}
|
||||||
|
if (isset($pending_tfa_authmechs['webauthn'])) {
|
||||||
|
$pending_tfa_authmechs['webauthn'] = true;
|
||||||
|
}
|
||||||
|
if (!isset($pending_tfa_authmechs['webauthn'])
|
||||||
|
&& isset($pending_tfa_authmechs['yubi_otp'])) {
|
||||||
|
$pending_tfa_authmechs['yubi_otp'] = true;
|
||||||
|
}
|
||||||
|
if (!isset($pending_tfa_authmechs['webauthn'])
|
||||||
|
&& !isset($pending_tfa_authmechs['yubi_otp'])
|
||||||
|
&& isset($pending_tfa_authmechs['totp'])) {
|
||||||
|
$pending_tfa_authmechs['totp'] = true;
|
||||||
|
}
|
||||||
|
if (isset($pending_tfa_authmechs['u2f'])) {
|
||||||
|
$pending_tfa_authmechs['u2f'] = true;
|
||||||
|
}
|
||||||
|
|
||||||
// globals
|
// globals
|
||||||
$globalVariables = [
|
$globalVariables = [
|
||||||
'mailcow_info' => array(
|
'mailcow_info' => array(
|
||||||
'version_tag' => $GLOBALS['MAILCOW_GIT_VERSION'],
|
'version_tag' => $GLOBALS['MAILCOW_GIT_VERSION'],
|
||||||
'git_project_url' => $GLOBALS['MAILCOW_GIT_URL']
|
'last_version_tag' => $GLOBALS['MAILCOW_LAST_GIT_VERSION'],
|
||||||
|
'git_owner' => $GLOBALS['MAILCOW_GIT_OWNER'],
|
||||||
|
'git_repo' => $GLOBALS['MAILCOW_GIT_REPO'],
|
||||||
|
'git_project_url' => $GLOBALS['MAILCOW_GIT_URL'],
|
||||||
|
'git_commit' => $GLOBALS['MAILCOW_GIT_COMMIT'],
|
||||||
|
'git_commit_date' => $GLOBALS['MAILCOW_GIT_COMMIT_DATE'],
|
||||||
|
'mailcow_branch' => $GLOBALS['MAILCOW_BRANCH'],
|
||||||
|
'updated_at' => $GLOBALS['MAILCOW_UPDATEDAT']
|
||||||
),
|
),
|
||||||
'js_path' => '/cache/'.basename($JSPath),
|
'js_path' => '/cache/'.basename($JSPath),
|
||||||
'pending_tfa_method' => @$_SESSION['pending_tfa_method'],
|
'pending_tfa_methods' => @$_SESSION['pending_tfa_methods'],
|
||||||
|
'pending_tfa_authmechs' => $pending_tfa_authmechs,
|
||||||
'pending_mailcow_cc_username' => @$_SESSION['pending_mailcow_cc_username'],
|
'pending_mailcow_cc_username' => @$_SESSION['pending_mailcow_cc_username'],
|
||||||
'lang_footer' => json_encode($lang['footer']),
|
'lang_footer' => json_encode($lang['footer']),
|
||||||
'lang_acl' => json_encode($lang['acl']),
|
'lang_acl' => json_encode($lang['acl']),
|
||||||
|
|||||||
@@ -197,7 +197,7 @@ function dkim($_action, $_data = null, $privkey = false) {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
dkim('delete', (array)$domain);
|
dkim('delete', array('domains' => $domain));
|
||||||
$redis->hSet('DKIM_PUB_KEYS', $domain, $pem_public_key);
|
$redis->hSet('DKIM_PUB_KEYS', $domain, $pem_public_key);
|
||||||
$redis->hSet('DKIM_SELECTORS', $domain, $dkim_selector);
|
$redis->hSet('DKIM_SELECTORS', $domain, $dkim_selector);
|
||||||
$redis->hSet('DKIM_PRIV_KEYS', $dkim_selector . '.' . $domain, $private_key_normalized);
|
$redis->hSet('DKIM_PRIV_KEYS', $dkim_selector . '.' . $domain, $private_key_normalized);
|
||||||
|
|||||||
+247
-177
@@ -830,11 +830,15 @@ function check_login($user, $pass, $app_passwd_data = false) {
|
|||||||
$stmt->execute(array(':user' => $user));
|
$stmt->execute(array(':user' => $user));
|
||||||
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
|
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
|
||||||
foreach ($rows as $row) {
|
foreach ($rows as $row) {
|
||||||
|
// verify password
|
||||||
if (verify_hash($row['password'], $pass)) {
|
if (verify_hash($row['password'], $pass)) {
|
||||||
if (get_tfa($user)['name'] != "none") {
|
// check for tfa authenticators
|
||||||
|
$authenticators = get_tfa($user);
|
||||||
|
if (isset($authenticators['additional']) && is_array($authenticators['additional']) && count($authenticators['additional']) > 0) {
|
||||||
|
// active tfa authenticators found, set pending user login
|
||||||
$_SESSION['pending_mailcow_cc_username'] = $user;
|
$_SESSION['pending_mailcow_cc_username'] = $user;
|
||||||
$_SESSION['pending_mailcow_cc_role'] = "admin";
|
$_SESSION['pending_mailcow_cc_role'] = "admin";
|
||||||
$_SESSION['pending_tfa_method'] = get_tfa($user)['name'];
|
$_SESSION['pending_tfa_methods'] = $authenticators['additional'];
|
||||||
unset($_SESSION['ldelay']);
|
unset($_SESSION['ldelay']);
|
||||||
$_SESSION['return'][] = array(
|
$_SESSION['return'][] = array(
|
||||||
'type' => 'info',
|
'type' => 'info',
|
||||||
@@ -842,8 +846,7 @@ function check_login($user, $pass, $app_passwd_data = false) {
|
|||||||
'msg' => 'awaiting_tfa_confirmation'
|
'msg' => 'awaiting_tfa_confirmation'
|
||||||
);
|
);
|
||||||
return "pending";
|
return "pending";
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
unset($_SESSION['ldelay']);
|
unset($_SESSION['ldelay']);
|
||||||
// Reactivate TFA if it was set to "deactivate TFA for next login"
|
// Reactivate TFA if it was set to "deactivate TFA for next login"
|
||||||
$stmt = $pdo->prepare("UPDATE `tfa` SET `active`='1' WHERE `username` = :user");
|
$stmt = $pdo->prepare("UPDATE `tfa` SET `active`='1' WHERE `username` = :user");
|
||||||
@@ -866,11 +869,14 @@ function check_login($user, $pass, $app_passwd_data = false) {
|
|||||||
$stmt->execute(array(':user' => $user));
|
$stmt->execute(array(':user' => $user));
|
||||||
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
|
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
|
||||||
foreach ($rows as $row) {
|
foreach ($rows as $row) {
|
||||||
|
// verify password
|
||||||
if (verify_hash($row['password'], $pass) !== false) {
|
if (verify_hash($row['password'], $pass) !== false) {
|
||||||
if (get_tfa($user)['name'] != "none") {
|
// check for tfa authenticators
|
||||||
|
$authenticators = get_tfa($user);
|
||||||
|
if (isset($authenticators['additional']) && is_array($authenticators['additional']) && count($authenticators['additional']) > 0) {
|
||||||
$_SESSION['pending_mailcow_cc_username'] = $user;
|
$_SESSION['pending_mailcow_cc_username'] = $user;
|
||||||
$_SESSION['pending_mailcow_cc_role'] = "domainadmin";
|
$_SESSION['pending_mailcow_cc_role'] = "domainadmin";
|
||||||
$_SESSION['pending_tfa_method'] = get_tfa($user)['name'];
|
$_SESSION['pending_tfa_methods'] = $authenticators['additional'];
|
||||||
unset($_SESSION['ldelay']);
|
unset($_SESSION['ldelay']);
|
||||||
$_SESSION['return'][] = array(
|
$_SESSION['return'][] = array(
|
||||||
'type' => 'info',
|
'type' => 'info',
|
||||||
@@ -930,14 +936,36 @@ function check_login($user, $pass, $app_passwd_data = false) {
|
|||||||
$rows = array_merge($rows, $stmt->fetchAll(PDO::FETCH_ASSOC));
|
$rows = array_merge($rows, $stmt->fetchAll(PDO::FETCH_ASSOC));
|
||||||
}
|
}
|
||||||
foreach ($rows as $row) {
|
foreach ($rows as $row) {
|
||||||
|
// verify password
|
||||||
if (verify_hash($row['password'], $pass) !== false) {
|
if (verify_hash($row['password'], $pass) !== false) {
|
||||||
unset($_SESSION['ldelay']);
|
if (!array_key_exists("app_passwd_id", $row)){
|
||||||
$_SESSION['return'][] = array(
|
// password is not a app password
|
||||||
'type' => 'success',
|
// check for tfa authenticators
|
||||||
'log' => array(__FUNCTION__, $user, '*'),
|
$authenticators = get_tfa($user);
|
||||||
'msg' => array('logged_in_as', $user)
|
if (isset($authenticators['additional']) && is_array($authenticators['additional']) && count($authenticators['additional']) > 0 &&
|
||||||
);
|
$app_passwd_data['eas'] !== true && $app_passwd_data['dav'] !== true) {
|
||||||
if ($app_passwd_data['eas'] === true || $app_passwd_data['dav'] === true) {
|
// authenticators found, init TFA flow
|
||||||
|
$_SESSION['pending_mailcow_cc_username'] = $user;
|
||||||
|
$_SESSION['pending_mailcow_cc_role'] = "user";
|
||||||
|
$_SESSION['pending_tfa_methods'] = $authenticators['additional'];
|
||||||
|
unset($_SESSION['ldelay']);
|
||||||
|
$_SESSION['return'][] = array(
|
||||||
|
'type' => 'success',
|
||||||
|
'log' => array(__FUNCTION__, $user, '*'),
|
||||||
|
'msg' => array('logged_in_as', $user)
|
||||||
|
);
|
||||||
|
return "pending";
|
||||||
|
} else if (!isset($authenticators['additional']) || !is_array($authenticators['additional']) || count($authenticators['additional']) == 0) {
|
||||||
|
// no authenticators found, login successfull
|
||||||
|
// Reactivate TFA if it was set to "deactivate TFA for next login"
|
||||||
|
$stmt = $pdo->prepare("UPDATE `tfa` SET `active`='1' WHERE `username` = :user");
|
||||||
|
$stmt->execute(array(':user' => $user));
|
||||||
|
|
||||||
|
unset($_SESSION['ldelay']);
|
||||||
|
return "user";
|
||||||
|
}
|
||||||
|
} elseif ($app_passwd_data['eas'] === true || $app_passwd_data['dav'] === true) {
|
||||||
|
// password is a app password
|
||||||
$service = ($app_passwd_data['eas'] === true) ? 'EAS' : 'DAV';
|
$service = ($app_passwd_data['eas'] === true) ? 'EAS' : 'DAV';
|
||||||
$stmt = $pdo->prepare("REPLACE INTO sasl_log (`service`, `app_password`, `username`, `real_rip`) VALUES (:service, :app_id, :username, :remote_addr)");
|
$stmt = $pdo->prepare("REPLACE INTO sasl_log (`service`, `app_password`, `username`, `real_rip`) VALUES (:service, :app_id, :username, :remote_addr)");
|
||||||
$stmt->execute(array(
|
$stmt->execute(array(
|
||||||
@@ -946,8 +974,10 @@ function check_login($user, $pass, $app_passwd_data = false) {
|
|||||||
':username' => $user,
|
':username' => $user,
|
||||||
':remote_addr' => ($_SERVER['HTTP_X_REAL_IP'] ?? $_SERVER['REMOTE_ADDR'])
|
':remote_addr' => ($_SERVER['HTTP_X_REAL_IP'] ?? $_SERVER['REMOTE_ADDR'])
|
||||||
));
|
));
|
||||||
|
|
||||||
|
unset($_SESSION['ldelay']);
|
||||||
|
return "user";
|
||||||
}
|
}
|
||||||
return "user";
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1142,47 +1172,46 @@ function set_tfa($_data) {
|
|||||||
global $yubi;
|
global $yubi;
|
||||||
global $tfa;
|
global $tfa;
|
||||||
$_data_log = $_data;
|
$_data_log = $_data;
|
||||||
|
$access_denied = null;
|
||||||
!isset($_data_log['confirm_password']) ?: $_data_log['confirm_password'] = '*';
|
!isset($_data_log['confirm_password']) ?: $_data_log['confirm_password'] = '*';
|
||||||
$username = $_SESSION['mailcow_cc_username'];
|
$username = $_SESSION['mailcow_cc_username'];
|
||||||
if (!isset($_SESSION['mailcow_cc_role']) || empty($username)) {
|
|
||||||
$_SESSION['return'][] = array(
|
// check for empty user and role
|
||||||
'type' => 'danger',
|
if (!isset($_SESSION['mailcow_cc_role']) || empty($username)) $access_denied = true;
|
||||||
'log' => array(__FUNCTION__, $_data_log),
|
|
||||||
'msg' => 'access_denied'
|
// check admin confirm password
|
||||||
);
|
if ($access_denied === null) {
|
||||||
return false;
|
$stmt = $pdo->prepare("SELECT `password` FROM `admin`
|
||||||
}
|
WHERE `username` = :username");
|
||||||
$stmt = $pdo->prepare("SELECT `password` FROM `admin`
|
$stmt->execute(array(':username' => $username));
|
||||||
WHERE `username` = :username");
|
$row = $stmt->fetch(PDO::FETCH_ASSOC);
|
||||||
$stmt->execute(array(':username' => $username));
|
if ($row) {
|
||||||
$row = $stmt->fetch(PDO::FETCH_ASSOC);
|
if (!verify_hash($row['password'], $_data["confirm_password"])) $access_denied = true;
|
||||||
$num_results = count($stmt->fetchAll(PDO::FETCH_ASSOC));
|
else $access_denied = false;
|
||||||
if (!empty($num_results)) {
|
|
||||||
if (!verify_hash($row['password'], $_data["confirm_password"])) {
|
|
||||||
$_SESSION['return'][] = array(
|
|
||||||
'type' => 'danger',
|
|
||||||
'log' => array(__FUNCTION__, $_data_log),
|
|
||||||
'msg' => 'access_denied'
|
|
||||||
);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
$stmt = $pdo->prepare("SELECT `password` FROM `mailbox`
|
|
||||||
WHERE `username` = :username");
|
|
||||||
$stmt->execute(array(':username' => $username));
|
|
||||||
$row = $stmt->fetch(PDO::FETCH_ASSOC);
|
|
||||||
$num_results = count($stmt->fetchAll(PDO::FETCH_ASSOC));
|
|
||||||
if (!empty($num_results)) {
|
|
||||||
if (!verify_hash($row['password'], $_data["confirm_password"])) {
|
|
||||||
$_SESSION['return'][] = array(
|
|
||||||
'type' => 'danger',
|
|
||||||
'log' => array(__FUNCTION__, $_data_log),
|
|
||||||
'msg' => 'access_denied'
|
|
||||||
);
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// check mailbox confirm password
|
||||||
|
if ($access_denied === null) {
|
||||||
|
$stmt = $pdo->prepare("SELECT `password` FROM `mailbox`
|
||||||
|
WHERE `username` = :username");
|
||||||
|
$stmt->execute(array(':username' => $username));
|
||||||
|
$row = $stmt->fetch(PDO::FETCH_ASSOC);
|
||||||
|
if ($row) {
|
||||||
|
if (!verify_hash($row['password'], $_data["confirm_password"])) $access_denied = true;
|
||||||
|
else $access_denied = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// set access_denied error
|
||||||
|
if ($access_denied){
|
||||||
|
$_SESSION['return'][] = array(
|
||||||
|
'type' => 'danger',
|
||||||
|
'log' => array(__FUNCTION__, $_data_log),
|
||||||
|
'msg' => 'access_denied'
|
||||||
|
);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
switch ($_data["tfa_method"]) {
|
switch ($_data["tfa_method"]) {
|
||||||
case "yubi_otp":
|
case "yubi_otp":
|
||||||
@@ -1220,8 +1249,7 @@ function set_tfa($_data) {
|
|||||||
$yubico_modhex_id = substr($_data["otp_token"], 0, 12);
|
$yubico_modhex_id = substr($_data["otp_token"], 0, 12);
|
||||||
$stmt = $pdo->prepare("DELETE FROM `tfa`
|
$stmt = $pdo->prepare("DELETE FROM `tfa`
|
||||||
WHERE `username` = :username
|
WHERE `username` = :username
|
||||||
AND (`authmech` != 'yubi_otp')
|
AND (`authmech` = 'yubi_otp' AND `secret` LIKE :modhex)");
|
||||||
OR (`authmech` = 'yubi_otp' AND `secret` LIKE :modhex)");
|
|
||||||
$stmt->execute(array(':username' => $username, ':modhex' => '%' . $yubico_modhex_id));
|
$stmt->execute(array(':username' => $username, ':modhex' => '%' . $yubico_modhex_id));
|
||||||
$stmt = $pdo->prepare("INSERT INTO `tfa` (`key_id`, `username`, `authmech`, `active`, `secret`) VALUES
|
$stmt = $pdo->prepare("INSERT INTO `tfa` (`key_id`, `username`, `authmech`, `active`, `secret`) VALUES
|
||||||
(:key_id, :username, 'yubi_otp', '1', :secret)");
|
(:key_id, :username, 'yubi_otp', '1', :secret)");
|
||||||
@@ -1265,9 +1293,6 @@ function set_tfa($_data) {
|
|||||||
case "webauthn":
|
case "webauthn":
|
||||||
$key_id = (!isset($_data["key_id"])) ? 'unidentified' : $_data["key_id"];
|
$key_id = (!isset($_data["key_id"])) ? 'unidentified' : $_data["key_id"];
|
||||||
|
|
||||||
$stmt = $pdo->prepare("DELETE FROM `tfa` WHERE `username` = :username AND `authmech` != 'webauthn'");
|
|
||||||
$stmt->execute(array(':username' => $username));
|
|
||||||
|
|
||||||
$stmt = $pdo->prepare("INSERT INTO `tfa` (`username`, `key_id`, `authmech`, `keyHandle`, `publicKey`, `certificate`, `counter`, `active`)
|
$stmt = $pdo->prepare("INSERT INTO `tfa` (`username`, `key_id`, `authmech`, `keyHandle`, `publicKey`, `certificate`, `counter`, `active`)
|
||||||
VALUES (?, ?, 'webauthn', ?, ?, ?, ?, '1')");
|
VALUES (?, ?, 'webauthn', ?, ?, ?, ?, '1')");
|
||||||
$stmt->execute(array(
|
$stmt->execute(array(
|
||||||
@@ -1439,25 +1464,27 @@ function unset_tfa_key($_data) {
|
|||||||
global $pdo;
|
global $pdo;
|
||||||
global $lang;
|
global $lang;
|
||||||
$_data_log = $_data;
|
$_data_log = $_data;
|
||||||
|
$access_denied = null;
|
||||||
$id = intval($_data['unset_tfa_key']);
|
$id = intval($_data['unset_tfa_key']);
|
||||||
$username = $_SESSION['mailcow_cc_username'];
|
$username = $_SESSION['mailcow_cc_username'];
|
||||||
if (!isset($_SESSION['mailcow_cc_role']) || empty($username)) {
|
|
||||||
$_SESSION['return'][] = array(
|
// check for empty user and role
|
||||||
'type' => 'danger',
|
if (!isset($_SESSION['mailcow_cc_role']) || empty($username)) $access_denied = true;
|
||||||
'log' => array(__FUNCTION__, $_data_log),
|
|
||||||
'msg' => 'access_denied'
|
|
||||||
);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
try {
|
try {
|
||||||
if (!is_numeric($id)) {
|
if (!is_numeric($id)) $access_denied = true;
|
||||||
$_SESSION['return'][] = array(
|
|
||||||
|
// set access_denied error
|
||||||
|
if ($access_denied){
|
||||||
|
$_SESSION['return'][] = array(
|
||||||
'type' => 'danger',
|
'type' => 'danger',
|
||||||
'log' => array(__FUNCTION__, $_data_log),
|
'log' => array(__FUNCTION__, $_data_log),
|
||||||
'msg' => 'access_denied'
|
'msg' => 'access_denied'
|
||||||
);
|
);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// check if it's last key
|
||||||
$stmt = $pdo->prepare("SELECT COUNT(*) AS `keys` FROM `tfa`
|
$stmt = $pdo->prepare("SELECT COUNT(*) AS `keys` FROM `tfa`
|
||||||
WHERE `username` = :username AND `active` = '1'");
|
WHERE `username` = :username AND `active` = '1'");
|
||||||
$stmt->execute(array(':username' => $username));
|
$stmt->execute(array(':username' => $username));
|
||||||
@@ -1470,6 +1497,8 @@ function unset_tfa_key($_data) {
|
|||||||
);
|
);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// delete key
|
||||||
$stmt = $pdo->prepare("DELETE FROM `tfa` WHERE `username` = :username AND `id` = :id");
|
$stmt = $pdo->prepare("DELETE FROM `tfa` WHERE `username` = :username AND `id` = :id");
|
||||||
$stmt->execute(array(':username' => $username, ':id' => $id));
|
$stmt->execute(array(':username' => $username, ':id' => $id));
|
||||||
$_SESSION['return'][] = array(
|
$_SESSION['return'][] = array(
|
||||||
@@ -1487,7 +1516,7 @@ function unset_tfa_key($_data) {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
function get_tfa($username = null) {
|
function get_tfa($username = null, $id = null) {
|
||||||
global $pdo;
|
global $pdo;
|
||||||
if (isset($_SESSION['mailcow_cc_username'])) {
|
if (isset($_SESSION['mailcow_cc_username'])) {
|
||||||
$username = $_SESSION['mailcow_cc_username'];
|
$username = $_SESSION['mailcow_cc_username'];
|
||||||
@@ -1495,95 +1524,119 @@ function get_tfa($username = null) {
|
|||||||
elseif (empty($username)) {
|
elseif (empty($username)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
$stmt = $pdo->prepare("SELECT * FROM `tfa`
|
|
||||||
WHERE `username` = :username AND `active` = '1'");
|
|
||||||
$stmt->execute(array(':username' => $username));
|
|
||||||
$row = $stmt->fetch(PDO::FETCH_ASSOC);
|
|
||||||
|
|
||||||
if (isset($row["authmech"])) {
|
if (!isset($id)){
|
||||||
switch ($row["authmech"]) {
|
// fetch all tfa methods - just get information about possible authenticators
|
||||||
case "yubi_otp":
|
$stmt = $pdo->prepare("SELECT `id`, `key_id`, `authmech` FROM `tfa`
|
||||||
$data['name'] = "yubi_otp";
|
WHERE `username` = :username AND `active` = '1'");
|
||||||
$data['pretty'] = "Yubico OTP";
|
$stmt->execute(array(':username' => $username));
|
||||||
$stmt = $pdo->prepare("SELECT `id`, `key_id`, RIGHT(`secret`, 12) AS 'modhex' FROM `tfa` WHERE `authmech` = 'yubi_otp' AND `username` = :username");
|
$results = $stmt->fetchAll(PDO::FETCH_ASSOC);
|
||||||
$stmt->execute(array(
|
|
||||||
':username' => $username,
|
// no tfa methods found
|
||||||
));
|
if (count($results) == 0) {
|
||||||
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
|
$data['name'] = 'none';
|
||||||
while($row = array_shift($rows)) {
|
$data['pretty'] = "-";
|
||||||
$data['additional'][] = $row;
|
$data['additional'] = array();
|
||||||
|
return $data;
|
||||||
|
}
|
||||||
|
|
||||||
|
$data['additional'] = $results;
|
||||||
|
return $data;
|
||||||
|
} else {
|
||||||
|
// fetch specific authenticator details by id
|
||||||
|
$stmt = $pdo->prepare("SELECT * FROM `tfa`
|
||||||
|
WHERE `username` = :username AND `id` = :id AND `active` = '1'");
|
||||||
|
$stmt->execute(array(':username' => $username, ':id' => $id));
|
||||||
|
$row = $stmt->fetch(PDO::FETCH_ASSOC);
|
||||||
|
|
||||||
|
if (isset($row["authmech"])) {
|
||||||
|
switch ($row["authmech"]) {
|
||||||
|
case "yubi_otp":
|
||||||
|
$data['name'] = "yubi_otp";
|
||||||
|
$data['pretty'] = "Yubico OTP";
|
||||||
|
$stmt = $pdo->prepare("SELECT `id`, `key_id`, RIGHT(`secret`, 12) AS 'modhex' FROM `tfa` WHERE `authmech` = 'yubi_otp' AND `username` = :username AND `id` = :id");
|
||||||
|
$stmt->execute(array(
|
||||||
|
':username' => $username,
|
||||||
|
':id' => $id
|
||||||
|
));
|
||||||
|
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
|
||||||
|
while($row = array_shift($rows)) {
|
||||||
|
$data['additional'][] = $row;
|
||||||
|
}
|
||||||
|
return $data;
|
||||||
|
break;
|
||||||
|
// u2f - deprecated, should be removed
|
||||||
|
case "u2f":
|
||||||
|
$data['name'] = "u2f";
|
||||||
|
$data['pretty'] = "Fido U2F";
|
||||||
|
$stmt = $pdo->prepare("SELECT `id`, `key_id` FROM `tfa` WHERE `authmech` = 'u2f' AND `username` = :username AND `id` = :id");
|
||||||
|
$stmt->execute(array(
|
||||||
|
':username' => $username,
|
||||||
|
':id' => $id
|
||||||
|
));
|
||||||
|
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
|
||||||
|
while($row = array_shift($rows)) {
|
||||||
|
$data['additional'][] = $row;
|
||||||
|
}
|
||||||
|
return $data;
|
||||||
|
break;
|
||||||
|
case "hotp":
|
||||||
|
$data['name'] = "hotp";
|
||||||
|
$data['pretty'] = "HMAC-based OTP";
|
||||||
|
return $data;
|
||||||
|
break;
|
||||||
|
case "totp":
|
||||||
|
$data['name'] = "totp";
|
||||||
|
$data['pretty'] = "Time-based OTP";
|
||||||
|
$stmt = $pdo->prepare("SELECT `id`, `key_id`, `secret` FROM `tfa` WHERE `authmech` = 'totp' AND `username` = :username AND `id` = :id");
|
||||||
|
$stmt->execute(array(
|
||||||
|
':username' => $username,
|
||||||
|
':id' => $id
|
||||||
|
));
|
||||||
|
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
|
||||||
|
while($row = array_shift($rows)) {
|
||||||
|
$data['additional'][] = $row;
|
||||||
|
}
|
||||||
|
return $data;
|
||||||
|
break;
|
||||||
|
case "webauthn":
|
||||||
|
$data['name'] = "webauthn";
|
||||||
|
$data['pretty'] = "WebAuthn";
|
||||||
|
$stmt = $pdo->prepare("SELECT `id`, `key_id` FROM `tfa` WHERE `authmech` = 'webauthn' AND `username` = :username AND `id` = :id");
|
||||||
|
$stmt->execute(array(
|
||||||
|
':username' => $username,
|
||||||
|
':id' => $id
|
||||||
|
));
|
||||||
|
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
|
||||||
|
while($row = array_shift($rows)) {
|
||||||
|
$data['additional'][] = $row;
|
||||||
|
}
|
||||||
|
return $data;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
$data['name'] = 'none';
|
||||||
|
$data['pretty'] = "-";
|
||||||
|
return $data;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
return $data;
|
}
|
||||||
break;
|
else {
|
||||||
// u2f - deprecated, should be removed
|
|
||||||
case "u2f":
|
|
||||||
$data['name'] = "u2f";
|
|
||||||
$data['pretty'] = "Fido U2F";
|
|
||||||
$stmt = $pdo->prepare("SELECT `id`, `key_id` FROM `tfa` WHERE `authmech` = 'u2f' AND `username` = :username");
|
|
||||||
$stmt->execute(array(
|
|
||||||
':username' => $username,
|
|
||||||
));
|
|
||||||
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
|
|
||||||
while($row = array_shift($rows)) {
|
|
||||||
$data['additional'][] = $row;
|
|
||||||
}
|
|
||||||
return $data;
|
|
||||||
break;
|
|
||||||
case "hotp":
|
|
||||||
$data['name'] = "hotp";
|
|
||||||
$data['pretty'] = "HMAC-based OTP";
|
|
||||||
return $data;
|
|
||||||
break;
|
|
||||||
case "totp":
|
|
||||||
$data['name'] = "totp";
|
|
||||||
$data['pretty'] = "Time-based OTP";
|
|
||||||
$stmt = $pdo->prepare("SELECT `id`, `key_id`, `secret` FROM `tfa` WHERE `authmech` = 'totp' AND `username` = :username");
|
|
||||||
$stmt->execute(array(
|
|
||||||
':username' => $username,
|
|
||||||
));
|
|
||||||
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
|
|
||||||
while($row = array_shift($rows)) {
|
|
||||||
$data['additional'][] = $row;
|
|
||||||
}
|
|
||||||
return $data;
|
|
||||||
break;
|
|
||||||
case "webauthn":
|
|
||||||
$data['name'] = "webauthn";
|
|
||||||
$data['pretty'] = "WebAuthn";
|
|
||||||
$stmt = $pdo->prepare("SELECT `id`, `key_id` FROM `tfa` WHERE `authmech` = 'webauthn' AND `username` = :username");
|
|
||||||
$stmt->execute(array(
|
|
||||||
':username' => $username,
|
|
||||||
));
|
|
||||||
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
|
|
||||||
while($row = array_shift($rows)) {
|
|
||||||
$data['additional'][] = $row;
|
|
||||||
}
|
|
||||||
return $data;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
$data['name'] = 'none';
|
$data['name'] = 'none';
|
||||||
$data['pretty'] = "-";
|
$data['pretty'] = "-";
|
||||||
return $data;
|
return $data;
|
||||||
break;
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
else {
|
|
||||||
$data['name'] = 'none';
|
|
||||||
$data['pretty'] = "-";
|
|
||||||
return $data;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
function verify_tfa_login($username, $_data, $WebAuthn) {
|
function verify_tfa_login($username, $_data) {
|
||||||
global $pdo;
|
global $pdo;
|
||||||
global $yubi;
|
global $yubi;
|
||||||
global $u2f;
|
global $u2f;
|
||||||
global $tfa;
|
global $tfa;
|
||||||
$stmt = $pdo->prepare("SELECT `authmech` FROM `tfa`
|
global $WebAuthn;
|
||||||
WHERE `username` = :username AND `active` = '1'");
|
|
||||||
$stmt->execute(array(':username' => $username));
|
|
||||||
$row = $stmt->fetch(PDO::FETCH_ASSOC);
|
|
||||||
|
|
||||||
switch ($row["authmech"]) {
|
if ($_data['tfa_method'] != 'u2f'){
|
||||||
|
|
||||||
|
switch ($_data["tfa_method"]) {
|
||||||
case "yubi_otp":
|
case "yubi_otp":
|
||||||
if (!ctype_alnum($_data['token']) || strlen($_data['token']) != 44) {
|
if (!ctype_alnum($_data['token']) || strlen($_data['token']) != 44) {
|
||||||
$_SESSION['return'][] = array(
|
$_SESSION['return'][] = array(
|
||||||
@@ -1597,7 +1650,7 @@ function verify_tfa_login($username, $_data, $WebAuthn) {
|
|||||||
$stmt = $pdo->prepare("SELECT `id`, `secret` FROM `tfa`
|
$stmt = $pdo->prepare("SELECT `id`, `secret` FROM `tfa`
|
||||||
WHERE `username` = :username
|
WHERE `username` = :username
|
||||||
AND `authmech` = 'yubi_otp'
|
AND `authmech` = 'yubi_otp'
|
||||||
AND `active`='1'
|
AND `active` = '1'
|
||||||
AND `secret` LIKE :modhex");
|
AND `secret` LIKE :modhex");
|
||||||
$stmt->execute(array(':username' => $username, ':modhex' => '%' . $yubico_modhex_id));
|
$stmt->execute(array(':username' => $username, ':modhex' => '%' . $yubico_modhex_id));
|
||||||
$row = $stmt->fetch(PDO::FETCH_ASSOC);
|
$row = $stmt->fetch(PDO::FETCH_ASSOC);
|
||||||
@@ -1632,15 +1685,16 @@ function verify_tfa_login($username, $_data, $WebAuthn) {
|
|||||||
return false;
|
return false;
|
||||||
break;
|
break;
|
||||||
case "totp":
|
case "totp":
|
||||||
try {
|
try {
|
||||||
$stmt = $pdo->prepare("SELECT `id`, `secret` FROM `tfa`
|
$stmt = $pdo->prepare("SELECT `id`, `secret` FROM `tfa`
|
||||||
WHERE `username` = :username
|
WHERE `username` = :username
|
||||||
AND `authmech` = 'totp'
|
AND `authmech` = 'totp'
|
||||||
|
AND `id` = :id
|
||||||
AND `active`='1'");
|
AND `active`='1'");
|
||||||
$stmt->execute(array(':username' => $username));
|
$stmt->execute(array(':username' => $username, ':id' => $_data['id']));
|
||||||
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
|
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
|
||||||
foreach ($rows as $row) {
|
foreach ($rows as $row) {
|
||||||
if ($tfa->verifyCode($row['secret'], $_data['token']) === true) {
|
if ($tfa->verifyCode($row['secret'], $_data['token']) === true) {
|
||||||
$_SESSION['tfa_id'] = $row['id'];
|
$_SESSION['tfa_id'] = $row['id'];
|
||||||
$_SESSION['return'][] = array(
|
$_SESSION['return'][] = array(
|
||||||
'type' => 'success',
|
'type' => 'success',
|
||||||
@@ -1648,7 +1702,7 @@ function verify_tfa_login($username, $_data, $WebAuthn) {
|
|||||||
'msg' => 'verified_totp_login'
|
'msg' => 'verified_totp_login'
|
||||||
);
|
);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$_SESSION['return'][] = array(
|
$_SESSION['return'][] = array(
|
||||||
'type' => 'danger',
|
'type' => 'danger',
|
||||||
@@ -1656,23 +1710,16 @@ function verify_tfa_login($username, $_data, $WebAuthn) {
|
|||||||
'msg' => 'totp_verification_failed'
|
'msg' => 'totp_verification_failed'
|
||||||
);
|
);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
catch (PDOException $e) {
|
catch (PDOException $e) {
|
||||||
$_SESSION['return'][] = array(
|
$_SESSION['return'][] = array(
|
||||||
'type' => 'danger',
|
'type' => 'danger',
|
||||||
'log' => array(__FUNCTION__, $username, '*'),
|
'log' => array(__FUNCTION__, $username, '*'),
|
||||||
'msg' => array('mysql_error', $e)
|
'msg' => array('mysql_error', $e)
|
||||||
);
|
);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
// u2f - deprecated, should be removed
|
|
||||||
case "u2f":
|
|
||||||
// delete old keys that used u2f
|
|
||||||
$stmt = $pdo->prepare("DELETE FROM `tfa` WHERE `authmech` = :authmech AND `username` = :username");
|
|
||||||
$stmt->execute(array(':authmech' => 'u2f', ':username' => $username));
|
|
||||||
|
|
||||||
return true;
|
|
||||||
case "webauthn":
|
case "webauthn":
|
||||||
$tokenData = json_decode($_data['token']);
|
$tokenData = json_decode($_data['token']);
|
||||||
$clientDataJSON = base64_decode($tokenData->clientDataJSON);
|
$clientDataJSON = base64_decode($tokenData->clientDataJSON);
|
||||||
@@ -1681,13 +1728,20 @@ function verify_tfa_login($username, $_data, $WebAuthn) {
|
|||||||
$id = base64_decode($tokenData->id);
|
$id = base64_decode($tokenData->id);
|
||||||
$challenge = $_SESSION['challenge'];
|
$challenge = $_SESSION['challenge'];
|
||||||
|
|
||||||
$stmt = $pdo->prepare("SELECT `key_id`, `keyHandle`, `username`, `publicKey` FROM `tfa` WHERE `keyHandle` = :tokenId");
|
$stmt = $pdo->prepare("SELECT `id`, `key_id`, `keyHandle`, `username`, `publicKey` FROM `tfa` WHERE `id` = :id AND `active`='1'");
|
||||||
$stmt->execute(array(':tokenId' => $tokenData->id));
|
$stmt->execute(array(':id' => $_data['id']));
|
||||||
$process_webauthn = $stmt->fetch(PDO::FETCH_ASSOC);
|
$process_webauthn = $stmt->fetch(PDO::FETCH_ASSOC);
|
||||||
|
|
||||||
if (empty($process_webauthn) || empty($process_webauthn['publicKey']) || empty($process_webauthn['username'])) return false;
|
if (empty($process_webauthn)){
|
||||||
|
$_SESSION['return'][] = array(
|
||||||
|
'type' => 'danger',
|
||||||
|
'log' => array(__FUNCTION__, $username, '*'),
|
||||||
|
'msg' => array('webauthn_verification_failed', 'authenticator not found')
|
||||||
|
);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
if ($process_webauthn['publicKey'] === false) {
|
if (empty($process_webauthn['publicKey']) || $process_webauthn['publicKey'] === false) {
|
||||||
$_SESSION['return'][] = array(
|
$_SESSION['return'][] = array(
|
||||||
'type' => 'danger',
|
'type' => 'danger',
|
||||||
'log' => array(__FUNCTION__, $username, '*'),
|
'log' => array(__FUNCTION__, $username, '*'),
|
||||||
@@ -1695,6 +1749,7 @@ function verify_tfa_login($username, $_data, $WebAuthn) {
|
|||||||
);
|
);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
$WebAuthn->processGet($clientDataJSON, $authenticatorData, $signature, $process_webauthn['publicKey'], $challenge, null, $GLOBALS['WEBAUTHN_UV_FLAG_LOGIN'], $GLOBALS['WEBAUTHN_USER_PRESENT_FLAG']);
|
$WebAuthn->processGet($clientDataJSON, $authenticatorData, $signature, $process_webauthn['publicKey'], $challenge, null, $GLOBALS['WEBAUTHN_UV_FLAG_LOGIN'], $GLOBALS['WEBAUTHN_USER_PRESENT_FLAG']);
|
||||||
}
|
}
|
||||||
@@ -1707,26 +1762,31 @@ function verify_tfa_login($username, $_data, $WebAuthn) {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
$stmt = $pdo->prepare("SELECT `superadmin` FROM `admin` WHERE `username` = :username");
|
$stmt = $pdo->prepare("SELECT `superadmin` FROM `admin` WHERE `username` = :username");
|
||||||
$stmt->execute(array(':username' => $process_webauthn['username']));
|
$stmt->execute(array(':username' => $process_webauthn['username']));
|
||||||
$obj_props = $stmt->fetch(PDO::FETCH_ASSOC);
|
$obj_props = $stmt->fetch(PDO::FETCH_ASSOC);
|
||||||
if ($obj_props['superadmin'] === 1) {
|
if ($obj_props['superadmin'] === 1) {
|
||||||
$_SESSION["mailcow_cc_role"] = "admin";
|
$_SESSION["mailcow_cc_role"] = "admin";
|
||||||
}
|
}
|
||||||
elseif ($obj_props['superadmin'] === 0) {
|
elseif ($obj_props['superadmin'] === 0) {
|
||||||
$_SESSION["mailcow_cc_role"] = "domainadmin";
|
$_SESSION["mailcow_cc_role"] = "domainadmin";
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
$stmt = $pdo->prepare("SELECT `username` FROM `mailbox` WHERE `username` = :username");
|
$stmt = $pdo->prepare("SELECT `username` FROM `mailbox` WHERE `username` = :username");
|
||||||
$stmt->execute(array(':username' => $process_webauthn['username']));
|
$stmt->execute(array(':username' => $process_webauthn['username']));
|
||||||
$row = $stmt->fetch(PDO::FETCH_ASSOC);
|
$row = $stmt->fetch(PDO::FETCH_ASSOC);
|
||||||
if ($row['username'] == $process_webauthn['username']) {
|
if (!empty($row['username'])) {
|
||||||
$_SESSION["mailcow_cc_role"] = "user";
|
$_SESSION["mailcow_cc_role"] = "user";
|
||||||
}
|
} else {
|
||||||
|
$_SESSION['return'][] = array(
|
||||||
|
'type' => 'danger',
|
||||||
|
'log' => array(__FUNCTION__, $username, '*'),
|
||||||
|
'msg' => array('webauthn_verification_failed', 'could not determine user role')
|
||||||
|
);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if ($process_webauthn['username'] != $_SESSION['pending_mailcow_cc_username']){
|
if ($process_webauthn['username'] != $_SESSION['pending_mailcow_cc_username']){
|
||||||
$_SESSION['return'][] = array(
|
$_SESSION['return'][] = array(
|
||||||
'type' => 'danger',
|
'type' => 'danger',
|
||||||
@@ -1736,9 +1796,8 @@ function verify_tfa_login($username, $_data, $WebAuthn) {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
$_SESSION["mailcow_cc_username"] = $process_webauthn['username'];
|
$_SESSION["mailcow_cc_username"] = $process_webauthn['username'];
|
||||||
$_SESSION['tfa_id'] = $process_webauthn['key_id'];
|
$_SESSION['tfa_id'] = $process_webauthn['id'];
|
||||||
$_SESSION['authReq'] = null;
|
$_SESSION['authReq'] = null;
|
||||||
unset($_SESSION["challenge"]);
|
unset($_SESSION["challenge"]);
|
||||||
$_SESSION['return'][] = array(
|
$_SESSION['return'][] = array(
|
||||||
@@ -1759,6 +1818,17 @@ function verify_tfa_login($username, $_data, $WebAuthn) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
|
} else {
|
||||||
|
// delete old keys that used u2f
|
||||||
|
$stmt = $pdo->prepare("SELECT * FROM `tfa` WHERE `authmech` = 'u2f' AND `username` = :username");
|
||||||
|
$stmt->execute(array(':username' => $username));
|
||||||
|
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
|
||||||
|
if (count($rows) == 0) return false;
|
||||||
|
|
||||||
|
$stmt = $pdo->prepare("DELETE FROM `tfa` WHERE `authmech` = 'u2f' AND `username` = :username");
|
||||||
|
$stmt->execute(array(':username' => $username));
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
function admin_api($access, $action, $data = null) {
|
function admin_api($access, $action, $data = null) {
|
||||||
global $pdo;
|
global $pdo;
|
||||||
|
|||||||
@@ -336,9 +336,37 @@ function mailbox($_action, $_type, $_data = null, $_extra = null) {
|
|||||||
$mins_interval = $_data['mins_interval'];
|
$mins_interval = $_data['mins_interval'];
|
||||||
$enc1 = $_data['enc1'];
|
$enc1 = $_data['enc1'];
|
||||||
$custom_params = (empty(trim($_data['custom_params']))) ? '' : trim($_data['custom_params']);
|
$custom_params = (empty(trim($_data['custom_params']))) ? '' : trim($_data['custom_params']);
|
||||||
// Workaround, fixme
|
|
||||||
if (strpos($custom_params, 'pipemess')) {
|
// validate custom params
|
||||||
$custom_params = '';
|
foreach (explode('-', $custom_params) as $param){
|
||||||
|
if(empty($param)) continue;
|
||||||
|
|
||||||
|
// extract option
|
||||||
|
if (str_contains($param, '=')) $param = explode('=', $param)[0];
|
||||||
|
else $param = rtrim($param, ' ');
|
||||||
|
// remove first char if first char is -
|
||||||
|
if ($param[0] == '-') $param = ltrim($param, $param[0]);
|
||||||
|
|
||||||
|
if (str_contains($param, ' ')) {
|
||||||
|
// bad char
|
||||||
|
$_SESSION['return'][] = array(
|
||||||
|
'type' => 'danger',
|
||||||
|
'log' => array(__FUNCTION__, $_action, $_type, $_data_log, $_attr),
|
||||||
|
'msg' => 'bad character SPACE'
|
||||||
|
);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// check if param is whitelisted
|
||||||
|
if (!in_array(strtolower($param), $GLOBALS["IMAPSYNC_OPTIONS"]["whitelist"])){
|
||||||
|
// bad option
|
||||||
|
$_SESSION['return'][] = array(
|
||||||
|
'type' => 'danger',
|
||||||
|
'log' => array(__FUNCTION__, $_action, $_type, $_data_log, $_attr),
|
||||||
|
'msg' => 'bad option '. $param
|
||||||
|
);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (empty($subfolder2)) {
|
if (empty($subfolder2)) {
|
||||||
$subfolder2 = "";
|
$subfolder2 = "";
|
||||||
@@ -443,16 +471,15 @@ function mailbox($_action, $_type, $_data = null, $_extra = null) {
|
|||||||
if ($_SESSION['mailcow_cc_role'] != "admin") {
|
if ($_SESSION['mailcow_cc_role'] != "admin") {
|
||||||
$_SESSION['return'][] = array(
|
$_SESSION['return'][] = array(
|
||||||
'type' => 'danger',
|
'type' => 'danger',
|
||||||
'log' => array(__FUNCTION__, $_action, $_type, $_data_log, $_attr),
|
'log' => array(__FUNCTION__, $_action, $_type, $_data_log, $_extra),
|
||||||
'msg' => 'access_denied'
|
'msg' => 'access_denied'
|
||||||
);
|
);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
$domain = idn_to_ascii(strtolower(trim($_data['domain'])), 0, INTL_IDNA_VARIANT_UTS46);
|
$domain = idn_to_ascii(strtolower(trim($_data['domain'])), 0, INTL_IDNA_VARIANT_UTS46);
|
||||||
$description = $_data['description'];
|
$description = $_data['description'];
|
||||||
if (empty($description)) {
|
if (empty($description)) $description = $domain;
|
||||||
$description = $domain;
|
$tags = (array)$_data['tags'];
|
||||||
}
|
|
||||||
$aliases = (int)$_data['aliases'];
|
$aliases = (int)$_data['aliases'];
|
||||||
$mailboxes = (int)$_data['mailboxes'];
|
$mailboxes = (int)$_data['mailboxes'];
|
||||||
$defquota = (int)$_data['defquota'];
|
$defquota = (int)$_data['defquota'];
|
||||||
@@ -545,10 +572,12 @@ function mailbox($_action, $_type, $_data = null, $_extra = null) {
|
|||||||
);
|
);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
$stmt = $pdo->prepare("DELETE FROM `sender_acl` WHERE `external` = 1 AND `send_as` LIKE :domain");
|
$stmt = $pdo->prepare("DELETE FROM `sender_acl` WHERE `external` = 1 AND `send_as` LIKE :domain");
|
||||||
$stmt->execute(array(
|
$stmt->execute(array(
|
||||||
':domain' => '%@' . $domain
|
':domain' => '%@' . $domain
|
||||||
));
|
));
|
||||||
|
// save domain
|
||||||
$stmt = $pdo->prepare("INSERT INTO `domain` (`domain`, `description`, `aliases`, `mailboxes`, `defquota`, `maxquota`, `quota`, `backupmx`, `gal`, `active`, `relay_unknown_only`, `relay_all_recipients`)
|
$stmt = $pdo->prepare("INSERT INTO `domain` (`domain`, `description`, `aliases`, `mailboxes`, `defquota`, `maxquota`, `quota`, `backupmx`, `gal`, `active`, `relay_unknown_only`, `relay_all_recipients`)
|
||||||
VALUES (:domain, :description, :aliases, :mailboxes, :defquota, :maxquota, :quota, :backupmx, :gal, :active, :relay_unknown_only, :relay_all_recipients)");
|
VALUES (:domain, :description, :aliases, :mailboxes, :defquota, :maxquota, :quota, :backupmx, :gal, :active, :relay_unknown_only, :relay_all_recipients)");
|
||||||
$stmt->execute(array(
|
$stmt->execute(array(
|
||||||
@@ -565,6 +594,24 @@ function mailbox($_action, $_type, $_data = null, $_extra = null) {
|
|||||||
':relay_unknown_only' => $relay_unknown_only,
|
':relay_unknown_only' => $relay_unknown_only,
|
||||||
':relay_all_recipients' => $relay_all_recipients
|
':relay_all_recipients' => $relay_all_recipients
|
||||||
));
|
));
|
||||||
|
// save tags
|
||||||
|
foreach($tags as $index => $tag){
|
||||||
|
if (empty($tag)) continue;
|
||||||
|
if ($index > $GLOBALS['TAGGING_LIMIT']) {
|
||||||
|
$_SESSION['return'][] = array(
|
||||||
|
'type' => 'warning',
|
||||||
|
'log' => array(__FUNCTION__, $_action, $_type, $_data_log, $_attr),
|
||||||
|
'msg' => array('tag_limit_exceeded', 'limit '.$GLOBALS['TAGGING_LIMIT'])
|
||||||
|
);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
$stmt = $pdo->prepare("INSERT INTO `tags_domain` (`domain`, `tag_name`) VALUES (:domain, :tag_name)");
|
||||||
|
$stmt->execute(array(
|
||||||
|
':domain' => $domain,
|
||||||
|
':tag_name' => $tag,
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
$redis->hSet('DOMAIN_MAP', $domain, 1);
|
$redis->hSet('DOMAIN_MAP', $domain, 1);
|
||||||
}
|
}
|
||||||
@@ -580,7 +627,16 @@ function mailbox($_action, $_type, $_data = null, $_extra = null) {
|
|||||||
ratelimit('edit', 'domain', array('rl_value' => $_data['rl_value'], 'rl_frame' => $_data['rl_frame'], 'object' => $domain));
|
ratelimit('edit', 'domain', array('rl_value' => $_data['rl_value'], 'rl_frame' => $_data['rl_frame'], 'object' => $domain));
|
||||||
}
|
}
|
||||||
if (!empty($_data['key_size']) && !empty($_data['dkim_selector'])) {
|
if (!empty($_data['key_size']) && !empty($_data['dkim_selector'])) {
|
||||||
dkim('add', array('key_size' => $_data['key_size'], 'dkim_selector' => $_data['dkim_selector'], 'domains' => $domain));
|
if (!empty($redis->hGet('DKIM_SELECTORS', $domain))) {
|
||||||
|
$_SESSION['return'][] = array(
|
||||||
|
'type' => 'success',
|
||||||
|
'log' => array(__FUNCTION__, $_action, $_type, $_data_log, $_attr),
|
||||||
|
'msg' => 'domain_add_dkim_available'
|
||||||
|
);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
dkim('add', array('key_size' => $_data['key_size'], 'dkim_selector' => $_data['dkim_selector'], 'domains' => $domain));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (!empty($restart_sogo)) {
|
if (!empty($restart_sogo)) {
|
||||||
$restart_response = json_decode(docker('post', 'sogo-mailcow', 'restart'), true);
|
$restart_response = json_decode(docker('post', 'sogo-mailcow', 'restart'), true);
|
||||||
@@ -910,7 +966,16 @@ function mailbox($_action, $_type, $_data = null, $_extra = null) {
|
|||||||
ratelimit('edit', 'domain', array('rl_value' => $_data['rl_value'], 'rl_frame' => $_data['rl_frame'], 'object' => $alias_domain));
|
ratelimit('edit', 'domain', array('rl_value' => $_data['rl_value'], 'rl_frame' => $_data['rl_frame'], 'object' => $alias_domain));
|
||||||
}
|
}
|
||||||
if (!empty($_data['key_size']) && !empty($_data['dkim_selector'])) {
|
if (!empty($_data['key_size']) && !empty($_data['dkim_selector'])) {
|
||||||
dkim('add', array('key_size' => $_data['key_size'], 'dkim_selector' => $_data['dkim_selector'], 'domains' => $alias_domain));
|
if (!empty($redis->hGet('DKIM_SELECTORS', $alias_domain))) {
|
||||||
|
$_SESSION['return'][] = array(
|
||||||
|
'type' => 'success',
|
||||||
|
'log' => array(__FUNCTION__, $_action, $_type, $_data_log, $_attr),
|
||||||
|
'msg' => 'domain_add_dkim_available'
|
||||||
|
);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
dkim('add', array('key_size' => $_data['key_size'], 'dkim_selector' => $_data['dkim_selector'], 'domains' => $alias_domain));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
$_SESSION['return'][] = array(
|
$_SESSION['return'][] = array(
|
||||||
'type' => 'success',
|
'type' => 'success',
|
||||||
@@ -942,6 +1007,7 @@ function mailbox($_action, $_type, $_data = null, $_extra = null) {
|
|||||||
$password = $_data['password'];
|
$password = $_data['password'];
|
||||||
$password2 = $_data['password2'];
|
$password2 = $_data['password2'];
|
||||||
$name = ltrim(rtrim($_data['name'], '>'), '<');
|
$name = ltrim(rtrim($_data['name'], '>'), '<');
|
||||||
|
$tags = $_data['tags'];
|
||||||
$quota_m = intval($_data['quota']);
|
$quota_m = intval($_data['quota']);
|
||||||
if ((!isset($_SESSION['acl']['unlimited_quota']) || $_SESSION['acl']['unlimited_quota'] != "1") && $quota_m === 0) {
|
if ((!isset($_SESSION['acl']['unlimited_quota']) || $_SESSION['acl']['unlimited_quota'] != "1") && $quota_m === 0) {
|
||||||
$_SESSION['return'][] = array(
|
$_SESSION['return'][] = array(
|
||||||
@@ -1103,6 +1169,23 @@ function mailbox($_action, $_type, $_data = null, $_extra = null) {
|
|||||||
$stmt->execute(array(
|
$stmt->execute(array(
|
||||||
':username' => $username
|
':username' => $username
|
||||||
));
|
));
|
||||||
|
// save tags
|
||||||
|
foreach($tags as $index => $tag){
|
||||||
|
if (empty($tag)) continue;
|
||||||
|
if ($index > $GLOBALS['TAGGING_LIMIT']) {
|
||||||
|
$_SESSION['return'][] = array(
|
||||||
|
'type' => 'warning',
|
||||||
|
'log' => array(__FUNCTION__, $_action, $_type, $_data_log, $_attr),
|
||||||
|
'msg' => array('tag_limit_exceeded', 'limit '.$GLOBALS['TAGGING_LIMIT'])
|
||||||
|
);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
$stmt = $pdo->prepare("INSERT INTO `tags_mailbox` (`username`, `tag_name`) VALUES (:username, :tag_name)");
|
||||||
|
$stmt->execute(array(
|
||||||
|
':username' => $username,
|
||||||
|
':tag_name' => $tag,
|
||||||
|
));
|
||||||
|
}
|
||||||
$stmt = $pdo->prepare("INSERT INTO `quota2` (`username`, `bytes`, `messages`)
|
$stmt = $pdo->prepare("INSERT INTO `quota2` (`username`, `bytes`, `messages`)
|
||||||
VALUES (:username, '0', '0') ON DUPLICATE KEY UPDATE `bytes` = '0', `messages` = '0';");
|
VALUES (:username, '0', '0') ON DUPLICATE KEY UPDATE `bytes` = '0', `messages` = '0';");
|
||||||
$stmt->execute(array(':username' => $username));
|
$stmt->execute(array(':username' => $username));
|
||||||
@@ -1709,8 +1792,37 @@ function mailbox($_action, $_type, $_data = null, $_extra = null) {
|
|||||||
);
|
);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (strpos($custom_params, 'pipemess')) {
|
|
||||||
$custom_params = '';
|
// validate custom params
|
||||||
|
foreach (explode('-', $custom_params) as $param){
|
||||||
|
if(empty($param)) continue;
|
||||||
|
|
||||||
|
// extract option
|
||||||
|
if (str_contains($param, '=')) $param = explode('=', $param)[0];
|
||||||
|
else $param = rtrim($param, ' ');
|
||||||
|
// remove first char if first char is -
|
||||||
|
if ($param[0] == '-') $param = ltrim($param, $param[0]);
|
||||||
|
|
||||||
|
if (str_contains($param, ' ')) {
|
||||||
|
// bad char
|
||||||
|
$_SESSION['return'][] = array(
|
||||||
|
'type' => 'danger',
|
||||||
|
'log' => array(__FUNCTION__, $_action, $_type, $_data_log, $_attr),
|
||||||
|
'msg' => 'bad character SPACE'
|
||||||
|
);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// check if param is whitelisted
|
||||||
|
if (!in_array(strtolower($param), $GLOBALS["IMAPSYNC_OPTIONS"]["whitelist"])){
|
||||||
|
// bad option
|
||||||
|
$_SESSION['return'][] = array(
|
||||||
|
'type' => 'danger',
|
||||||
|
'log' => array(__FUNCTION__, $_action, $_type, $_data_log, $_attr),
|
||||||
|
'msg' => 'bad option '. $param
|
||||||
|
);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (empty($subfolder2)) {
|
if (empty($subfolder2)) {
|
||||||
$subfolder2 = "";
|
$subfolder2 = "";
|
||||||
@@ -2146,6 +2258,7 @@ function mailbox($_action, $_type, $_data = null, $_extra = null) {
|
|||||||
$gal = (isset($_data['gal'])) ? intval($_data['gal']) : $is_now['gal'];
|
$gal = (isset($_data['gal'])) ? intval($_data['gal']) : $is_now['gal'];
|
||||||
$description = (!empty($_data['description']) && isset($_SESSION['acl']['domain_desc']) && $_SESSION['acl']['domain_desc'] == "1") ? $_data['description'] : $is_now['description'];
|
$description = (!empty($_data['description']) && isset($_SESSION['acl']['domain_desc']) && $_SESSION['acl']['domain_desc'] == "1") ? $_data['description'] : $is_now['description'];
|
||||||
(int)$relayhost = (isset($_data['relayhost']) && isset($_SESSION['acl']['domain_relayhost']) && $_SESSION['acl']['domain_relayhost'] == "1") ? intval($_data['relayhost']) : intval($is_now['relayhost']);
|
(int)$relayhost = (isset($_data['relayhost']) && isset($_SESSION['acl']['domain_relayhost']) && $_SESSION['acl']['domain_relayhost'] == "1") ? intval($_data['relayhost']) : intval($is_now['relayhost']);
|
||||||
|
$tags = (is_array($_data['tags']) ? $_data['tags'] : array());
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
$_SESSION['return'][] = array(
|
$_SESSION['return'][] = array(
|
||||||
@@ -2155,6 +2268,7 @@ function mailbox($_action, $_type, $_data = null, $_extra = null) {
|
|||||||
);
|
);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
$stmt = $pdo->prepare("UPDATE `domain` SET
|
$stmt = $pdo->prepare("UPDATE `domain` SET
|
||||||
`description` = :description,
|
`description` = :description,
|
||||||
`gal` = :gal
|
`gal` = :gal
|
||||||
@@ -2164,6 +2278,24 @@ function mailbox($_action, $_type, $_data = null, $_extra = null) {
|
|||||||
':gal' => $gal,
|
':gal' => $gal,
|
||||||
':domain' => $domain
|
':domain' => $domain
|
||||||
));
|
));
|
||||||
|
// save tags
|
||||||
|
foreach($tags as $index => $tag){
|
||||||
|
if (empty($tag)) continue;
|
||||||
|
if ($index > $GLOBALS['TAGGING_LIMIT']) {
|
||||||
|
$_SESSION['return'][] = array(
|
||||||
|
'type' => 'warning',
|
||||||
|
'log' => array(__FUNCTION__, $_action, $_type, $_data_log, $_attr),
|
||||||
|
'msg' => array('tag_limit_exceeded', 'limit '.$GLOBALS['TAGGING_LIMIT'])
|
||||||
|
);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
$stmt = $pdo->prepare("INSERT INTO `tags_domain` (`domain`, `tag_name`) VALUES (:domain, :tag_name)");
|
||||||
|
$stmt->execute(array(
|
||||||
|
':domain' => $domain,
|
||||||
|
':tag_name' => $tag,
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
$_SESSION['return'][] = array(
|
$_SESSION['return'][] = array(
|
||||||
'type' => 'success',
|
'type' => 'success',
|
||||||
'log' => array(__FUNCTION__, $_action, $_type, $_data_log, $_attr),
|
'log' => array(__FUNCTION__, $_action, $_type, $_data_log, $_attr),
|
||||||
@@ -2185,6 +2317,7 @@ function mailbox($_action, $_type, $_data = null, $_extra = null) {
|
|||||||
$maxquota = (!empty($_data['maxquota'])) ? $_data['maxquota'] : ($is_now['max_quota_for_mbox'] / 1048576);
|
$maxquota = (!empty($_data['maxquota'])) ? $_data['maxquota'] : ($is_now['max_quota_for_mbox'] / 1048576);
|
||||||
$quota = (!empty($_data['quota'])) ? $_data['quota'] : ($is_now['max_quota_for_domain'] / 1048576);
|
$quota = (!empty($_data['quota'])) ? $_data['quota'] : ($is_now['max_quota_for_domain'] / 1048576);
|
||||||
$description = (!empty($_data['description'])) ? $_data['description'] : $is_now['description'];
|
$description = (!empty($_data['description'])) ? $_data['description'] : $is_now['description'];
|
||||||
|
$tags = (is_array($_data['tags']) ? $_data['tags'] : array());
|
||||||
if ($relay_all_recipients == '1') {
|
if ($relay_all_recipients == '1') {
|
||||||
$backupmx = '1';
|
$backupmx = '1';
|
||||||
}
|
}
|
||||||
@@ -2283,6 +2416,7 @@ function mailbox($_action, $_type, $_data = null, $_extra = null) {
|
|||||||
);
|
);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
$stmt = $pdo->prepare("UPDATE `domain` SET
|
$stmt = $pdo->prepare("UPDATE `domain` SET
|
||||||
`relay_all_recipients` = :relay_all_recipients,
|
`relay_all_recipients` = :relay_all_recipients,
|
||||||
`relay_unknown_only` = :relay_unknown_only,
|
`relay_unknown_only` = :relay_unknown_only,
|
||||||
@@ -2312,6 +2446,24 @@ function mailbox($_action, $_type, $_data = null, $_extra = null) {
|
|||||||
':description' => $description,
|
':description' => $description,
|
||||||
':domain' => $domain
|
':domain' => $domain
|
||||||
));
|
));
|
||||||
|
// save tags
|
||||||
|
foreach($tags as $index => $tag){
|
||||||
|
if (empty($tag)) continue;
|
||||||
|
if ($index > $GLOBALS['TAGGING_LIMIT']) {
|
||||||
|
$_SESSION['return'][] = array(
|
||||||
|
'type' => 'warning',
|
||||||
|
'log' => array(__FUNCTION__, $_action, $_type, $_data_log, $_attr),
|
||||||
|
'msg' => array('tag_limit_exceeded', 'limit '.$GLOBALS['TAGGING_LIMIT'])
|
||||||
|
);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
$stmt = $pdo->prepare("INSERT INTO `tags_domain` (`domain`, `tag_name`) VALUES (:domain, :tag_name)");
|
||||||
|
$stmt->execute(array(
|
||||||
|
':domain' => $domain,
|
||||||
|
':tag_name' => $tag,
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
$_SESSION['return'][] = array(
|
$_SESSION['return'][] = array(
|
||||||
'type' => 'success',
|
'type' => 'success',
|
||||||
'log' => array(__FUNCTION__, $_action, $_type, $_data_log, $_attr),
|
'log' => array(__FUNCTION__, $_action, $_type, $_data_log, $_attr),
|
||||||
@@ -2360,6 +2512,7 @@ function mailbox($_action, $_type, $_data = null, $_extra = null) {
|
|||||||
$quota_b = $quota_m * 1048576;
|
$quota_b = $quota_m * 1048576;
|
||||||
$password = (!empty($_data['password'])) ? $_data['password'] : null;
|
$password = (!empty($_data['password'])) ? $_data['password'] : null;
|
||||||
$password2 = (!empty($_data['password2'])) ? $_data['password2'] : null;
|
$password2 = (!empty($_data['password2'])) ? $_data['password2'] : null;
|
||||||
|
$tags = (is_array($_data['tags']) ? $_data['tags'] : array());
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
$_SESSION['return'][] = array(
|
$_SESSION['return'][] = array(
|
||||||
@@ -2636,6 +2789,24 @@ function mailbox($_action, $_type, $_data = null, $_extra = null) {
|
|||||||
':relayhost' => $relayhost,
|
':relayhost' => $relayhost,
|
||||||
':username' => $username
|
':username' => $username
|
||||||
));
|
));
|
||||||
|
// save tags
|
||||||
|
foreach($tags as $index => $tag){
|
||||||
|
if (empty($tag)) continue;
|
||||||
|
if ($index > $GLOBALS['TAGGING_LIMIT']) {
|
||||||
|
$_SESSION['return'][] = array(
|
||||||
|
'type' => 'warning',
|
||||||
|
'log' => array(__FUNCTION__, $_action, $_type, $_data_log, $_attr),
|
||||||
|
'msg' => array('tag_limit_exceeded', 'limit '.$GLOBALS['TAGGING_LIMIT'])
|
||||||
|
);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
$stmt = $pdo->prepare("INSERT INTO `tags_mailbox` (`username`, `tag_name`) VALUES (:username, :tag_name)");
|
||||||
|
$stmt->execute(array(
|
||||||
|
':username' => $username,
|
||||||
|
':tag_name' => $tag,
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
$_SESSION['return'][] = array(
|
$_SESSION['return'][] = array(
|
||||||
'type' => 'success',
|
'type' => 'success',
|
||||||
'log' => array(__FUNCTION__, $_action, $_type, $_data_log, $_attr),
|
'log' => array(__FUNCTION__, $_action, $_type, $_data_log, $_attr),
|
||||||
@@ -2851,10 +3022,34 @@ function mailbox($_action, $_type, $_data = null, $_extra = null) {
|
|||||||
break;
|
break;
|
||||||
case 'mailboxes':
|
case 'mailboxes':
|
||||||
$mailboxes = array();
|
$mailboxes = array();
|
||||||
if (isset($_data) && !hasDomainAccess($_SESSION['mailcow_cc_username'], $_SESSION['mailcow_cc_role'], $_data)) {
|
if (isset($_extra) && is_array($_extra) && isset($_data)) {
|
||||||
return false;
|
// get by domain and tags
|
||||||
|
$tags = is_array($_extra) ? $_extra : array();
|
||||||
|
|
||||||
|
$sql = "";
|
||||||
|
foreach ($tags as $key => $tag) {
|
||||||
|
$sql = $sql."SELECT DISTINCT `username` FROM `tags_mailbox` WHERE `username` LIKE ? AND `tag_name` LIKE ?"; // distinct, avoid duplicates
|
||||||
|
if ($key === array_key_last($tags)) break;
|
||||||
|
$sql = $sql.' UNION DISTINCT '; // combine querys with union - distinct, avoid duplicates
|
||||||
|
}
|
||||||
|
|
||||||
|
// prepend domain to array
|
||||||
|
$params = array();
|
||||||
|
foreach ($tags as $key => $val){
|
||||||
|
array_push($params, '%'.$_data.'%');
|
||||||
|
array_push($params, '%'.$val.'%');
|
||||||
|
}
|
||||||
|
$stmt = $pdo->prepare($sql);
|
||||||
|
$stmt->execute($params);
|
||||||
|
|
||||||
|
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
|
||||||
|
while($row = array_shift($rows)) {
|
||||||
|
if (hasDomainAccess($_SESSION['mailcow_cc_username'], $_SESSION['mailcow_cc_role'], explode('@', $row['username'])[1]))
|
||||||
|
$mailboxes[] = $row['username'];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
elseif (isset($_data) && hasDomainAccess($_SESSION['mailcow_cc_username'], $_SESSION['mailcow_cc_role'], $_data)) {
|
elseif (isset($_data) && hasDomainAccess($_SESSION['mailcow_cc_username'], $_SESSION['mailcow_cc_role'], $_data)) {
|
||||||
|
// get by domain
|
||||||
$stmt = $pdo->prepare("SELECT `username` FROM `mailbox` WHERE (`kind` = '' OR `kind` = NULL) AND `domain` = :domain");
|
$stmt = $pdo->prepare("SELECT `username` FROM `mailbox` WHERE (`kind` = '' OR `kind` = NULL) AND `domain` = :domain");
|
||||||
$stmt->execute(array(
|
$stmt->execute(array(
|
||||||
':domain' => $_data,
|
':domain' => $_data,
|
||||||
@@ -3348,20 +3543,46 @@ function mailbox($_action, $_type, $_data = null, $_extra = null) {
|
|||||||
if ($_SESSION['mailcow_cc_role'] != "admin" && $_SESSION['mailcow_cc_role'] != "domainadmin") {
|
if ($_SESSION['mailcow_cc_role'] != "admin" && $_SESSION['mailcow_cc_role'] != "domainadmin") {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
$stmt = $pdo->prepare("SELECT `domain` FROM `domain`
|
|
||||||
WHERE (`domain` IN (
|
if (isset($_extra) && is_array($_extra)){
|
||||||
SELECT `domain` from `domain_admins`
|
// get by tags
|
||||||
WHERE (`active`='1' AND `username` = :username))
|
$tags = is_array($_extra) ? $_extra : array();
|
||||||
)
|
// add % as prefix and suffix to every element for relative searching
|
||||||
OR 'admin'= :role");
|
$tags = array_map(function($x){ return '%'.$x.'%'; }, $tags);
|
||||||
$stmt->execute(array(
|
$sql = "";
|
||||||
':username' => $_SESSION['mailcow_cc_username'],
|
foreach ($tags as $key => $tag) {
|
||||||
':role' => $_SESSION['mailcow_cc_role'],
|
$sql = $sql."SELECT DISTINCT `domain` FROM `tags_domain` WHERE `tag_name` LIKE ?"; // distinct, avoid duplicates
|
||||||
));
|
if ($key === array_key_last($tags)) break;
|
||||||
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
|
$sql = $sql.' UNION DISTINCT '; // combine querys with union - distinct, avoid duplicates
|
||||||
while($row = array_shift($rows)) {
|
}
|
||||||
$domains[] = $row['domain'];
|
$stmt = $pdo->prepare($sql);
|
||||||
|
$stmt->execute($tags);
|
||||||
|
|
||||||
|
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
|
||||||
|
while($row = array_shift($rows)) {
|
||||||
|
if ($_SESSION['mailcow_cc_role'] == "admin")
|
||||||
|
$domains[] = $row['domain'];
|
||||||
|
elseif (hasDomainAccess($_SESSION['mailcow_cc_username'], $_SESSION['mailcow_cc_role'], $row['domain']))
|
||||||
|
$domains[] = $row['domain'];
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// get all
|
||||||
|
$stmt = $pdo->prepare("SELECT `domain` FROM `domain`
|
||||||
|
WHERE (`domain` IN (
|
||||||
|
SELECT `domain` from `domain_admins`
|
||||||
|
WHERE (`active`='1' AND `username` = :username))
|
||||||
|
)
|
||||||
|
OR 'admin'= :role");
|
||||||
|
$stmt->execute(array(
|
||||||
|
':username' => $_SESSION['mailcow_cc_username'],
|
||||||
|
':role' => $_SESSION['mailcow_cc_role'],
|
||||||
|
));
|
||||||
|
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
|
||||||
|
while($row = array_shift($rows)) {
|
||||||
|
$domains[] = $row['domain'];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return $domains;
|
return $domains;
|
||||||
break;
|
break;
|
||||||
case 'domain_details':
|
case 'domain_details':
|
||||||
@@ -3478,6 +3699,16 @@ function mailbox($_action, $_type, $_data = null, $_extra = null) {
|
|||||||
$domain_admins = $stmt->fetch(PDO::FETCH_ASSOC);
|
$domain_admins = $stmt->fetch(PDO::FETCH_ASSOC);
|
||||||
(isset($domain_admins['domain_admins'])) ? $domaindata['domain_admins'] = $domain_admins['domain_admins'] : $domaindata['domain_admins'] = "-";
|
(isset($domain_admins['domain_admins'])) ? $domaindata['domain_admins'] = $domain_admins['domain_admins'] : $domaindata['domain_admins'] = "-";
|
||||||
}
|
}
|
||||||
|
$stmt = $pdo->prepare("SELECT `tag_name`
|
||||||
|
FROM `tags_domain` WHERE `domain`= :domain");
|
||||||
|
$stmt->execute(array(
|
||||||
|
':domain' => $_data
|
||||||
|
));
|
||||||
|
$tags = $stmt->fetchAll(PDO::FETCH_ASSOC);
|
||||||
|
while ($tag = array_shift($tags)) {
|
||||||
|
$domaindata['tags'][] = $tag['tag_name'];
|
||||||
|
}
|
||||||
|
|
||||||
return $domaindata;
|
return $domaindata;
|
||||||
break;
|
break;
|
||||||
case 'mailbox_details':
|
case 'mailbox_details':
|
||||||
@@ -3613,6 +3844,15 @@ function mailbox($_action, $_type, $_data = null, $_extra = null) {
|
|||||||
}
|
}
|
||||||
$mailboxdata['is_relayed'] = $row['backupmx'];
|
$mailboxdata['is_relayed'] = $row['backupmx'];
|
||||||
}
|
}
|
||||||
|
$stmt = $pdo->prepare("SELECT `tag_name`
|
||||||
|
FROM `tags_mailbox` WHERE `username`= :username");
|
||||||
|
$stmt->execute(array(
|
||||||
|
':username' => $_data
|
||||||
|
));
|
||||||
|
$tags = $stmt->fetchAll(PDO::FETCH_ASSOC);
|
||||||
|
while ($tag = array_shift($tags)) {
|
||||||
|
$mailboxdata['tags'][] = $tag['tag_name'];
|
||||||
|
}
|
||||||
|
|
||||||
return $mailboxdata;
|
return $mailboxdata;
|
||||||
break;
|
break;
|
||||||
@@ -4342,6 +4582,108 @@ function mailbox($_action, $_type, $_data = null, $_extra = null) {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case 'tags_domain':
|
||||||
|
if (!is_array($_data['domain'])) {
|
||||||
|
$domains = array();
|
||||||
|
$domains[] = $_data['domain'];
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$domains = $_data['domain'];
|
||||||
|
}
|
||||||
|
$tags = $_data['tags'];
|
||||||
|
if (!is_array($tags)) $tags = array();
|
||||||
|
|
||||||
|
|
||||||
|
if ($_SESSION['mailcow_cc_role'] != "admin") {
|
||||||
|
$_SESSION['return'][] = array(
|
||||||
|
'type' => 'danger',
|
||||||
|
'log' => array(__FUNCTION__, $_action, $_type, $_data_log, $_attr),
|
||||||
|
'msg' => 'access_denied'
|
||||||
|
);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
$wasModified = false;
|
||||||
|
foreach ($domains as $domain) {
|
||||||
|
if (!is_valid_domain_name($domain)) {
|
||||||
|
$_SESSION['return'][] = array(
|
||||||
|
'type' => 'danger',
|
||||||
|
'log' => array(__FUNCTION__, $_action, $_type, $_data_log, $_attr),
|
||||||
|
'msg' => 'domain_invalid'
|
||||||
|
);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach($tags as $tag){
|
||||||
|
// delete tag
|
||||||
|
$wasModified = true;
|
||||||
|
$stmt = $pdo->prepare("DELETE FROM `tags_domain` WHERE `domain` = :domain AND `tag_name` = :tag_name");
|
||||||
|
$stmt->execute(array(
|
||||||
|
':domain' => $domain,
|
||||||
|
':tag_name' => $tag,
|
||||||
|
));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!$wasModified) return false;
|
||||||
|
$_SESSION['return'][] = array(
|
||||||
|
'type' => 'success',
|
||||||
|
'log' => array(__FUNCTION__, $_action, $_type, $_data_log, $_attr),
|
||||||
|
'msg' => array('domain_modified', $domain)
|
||||||
|
);
|
||||||
|
break;
|
||||||
|
case 'tags_mailbox':
|
||||||
|
if (!is_array($_data['username'])) {
|
||||||
|
$usernames = array();
|
||||||
|
$usernames[] = $_data['username'];
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$usernames = $_data['username'];
|
||||||
|
}
|
||||||
|
$tags = $_data['tags'];
|
||||||
|
if (!is_array($tags)) $tags = array();
|
||||||
|
|
||||||
|
$wasModified = false;
|
||||||
|
foreach ($usernames as $username) {
|
||||||
|
if (!filter_var($username, FILTER_VALIDATE_EMAIL)) {
|
||||||
|
$_SESSION['return'][] = array(
|
||||||
|
'type' => 'danger',
|
||||||
|
'log' => array(__FUNCTION__, $_action, $_type, $_data_log, $_attr),
|
||||||
|
'msg' => 'email invalid'
|
||||||
|
);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
$is_now = mailbox('get', 'mailbox_details', $username);
|
||||||
|
$domain = $is_now['domain'];
|
||||||
|
if (!hasDomainAccess($_SESSION['mailcow_cc_username'], $_SESSION['mailcow_cc_role'], $domain)) {
|
||||||
|
$_SESSION['return'][] = array(
|
||||||
|
'type' => 'danger',
|
||||||
|
'log' => array(__FUNCTION__, $_action, $_type, $_data_log, $_attr),
|
||||||
|
'msg' => 'access_denied'
|
||||||
|
);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
// delete tags
|
||||||
|
foreach($tags as $tag){
|
||||||
|
$wasModified = true;
|
||||||
|
|
||||||
|
$stmt = $pdo->prepare("DELETE FROM `tags_mailbox` WHERE `username` = :username AND `tag_name` = :tag_name");
|
||||||
|
$stmt->execute(array(
|
||||||
|
':username' => $username,
|
||||||
|
':tag_name' => $tag,
|
||||||
|
));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!$wasModified) return false;
|
||||||
|
$_SESSION['return'][] = array(
|
||||||
|
'type' => 'success',
|
||||||
|
'log' => array(__FUNCTION__, $_action, $_type, $_data_log, $_attr),
|
||||||
|
'msg' => array('mailbox_modified', $username)
|
||||||
|
);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -51,6 +51,7 @@ function pushover($_action, $_data = null) {
|
|||||||
$active = (isset($_data['active'])) ? intval($_data['active']) : $is_now['active'];
|
$active = (isset($_data['active'])) ? intval($_data['active']) : $is_now['active'];
|
||||||
$evaluate_x_prio = (isset($_data['evaluate_x_prio'])) ? intval($_data['evaluate_x_prio']) : $is_now['evaluate_x_prio'];
|
$evaluate_x_prio = (isset($_data['evaluate_x_prio'])) ? intval($_data['evaluate_x_prio']) : $is_now['evaluate_x_prio'];
|
||||||
$only_x_prio = (isset($_data['only_x_prio'])) ? intval($_data['only_x_prio']) : $is_now['only_x_prio'];
|
$only_x_prio = (isset($_data['only_x_prio'])) ? intval($_data['only_x_prio']) : $is_now['only_x_prio'];
|
||||||
|
$sound = (isset($_data['sound'])) ? $_data['sound'] : $is_now['sound'];
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
$_SESSION['return'][] = array(
|
$_SESSION['return'][] = array(
|
||||||
@@ -101,7 +102,8 @@ function pushover($_action, $_data = null) {
|
|||||||
$po_attributes = json_encode(
|
$po_attributes = json_encode(
|
||||||
array(
|
array(
|
||||||
'evaluate_x_prio' => strval(intval($evaluate_x_prio)),
|
'evaluate_x_prio' => strval(intval($evaluate_x_prio)),
|
||||||
'only_x_prio' => strval(intval($only_x_prio))
|
'only_x_prio' => strval(intval($only_x_prio)),
|
||||||
|
'sound' => strval($sound)
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
$stmt = $pdo->prepare("REPLACE INTO `pushover` (`username`, `key`, `attributes`, `senders_regex`, `senders`, `token`, `title`, `text`, `active`)
|
$stmt = $pdo->prepare("REPLACE INTO `pushover` (`username`, `key`, `attributes`, `senders_regex`, `senders`, `token`, `title`, `text`, `active`)
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ function init_db_schema() {
|
|||||||
try {
|
try {
|
||||||
global $pdo;
|
global $pdo;
|
||||||
|
|
||||||
$db_version = "18012022_1020";
|
$db_version = "17112022_2115";
|
||||||
|
|
||||||
$stmt = $pdo->query("SHOW TABLES LIKE 'versions'");
|
$stmt = $pdo->query("SHOW TABLES LIKE 'versions'");
|
||||||
$num_results = count($stmt->fetchAll(PDO::FETCH_ASSOC));
|
$num_results = count($stmt->fetchAll(PDO::FETCH_ASSOC));
|
||||||
@@ -23,35 +23,35 @@ function init_db_schema() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
$views = array(
|
$views = array(
|
||||||
"grouped_mail_aliases" => "CREATE VIEW grouped_mail_aliases (username, aliases) AS
|
"grouped_mail_aliases" => "CREATE VIEW grouped_mail_aliases (username, aliases) AS
|
||||||
SELECT goto, IFNULL(GROUP_CONCAT(address ORDER BY address SEPARATOR ' '), '') AS address FROM alias
|
SELECT goto, IFNULL(GROUP_CONCAT(address ORDER BY address SEPARATOR ' '), '') AS address FROM alias
|
||||||
WHERE address!=goto
|
WHERE address!=goto
|
||||||
AND active = '1'
|
AND active = '1'
|
||||||
AND sogo_visible = '1'
|
AND sogo_visible = '1'
|
||||||
AND address NOT LIKE '@%'
|
AND address NOT LIKE '@%'
|
||||||
GROUP BY goto;",
|
GROUP BY goto;",
|
||||||
// START
|
// START
|
||||||
// Unused at the moment - we cannot allow to show a foreign mailbox as sender address in SOGo, as SOGo does not like this
|
// Unused at the moment - we cannot allow to show a foreign mailbox as sender address in SOGo, as SOGo does not like this
|
||||||
// We need to create delegation in SOGo AND set a sender_acl in mailcow to allow to send as user X
|
// We need to create delegation in SOGo AND set a sender_acl in mailcow to allow to send as user X
|
||||||
"grouped_sender_acl" => "CREATE VIEW grouped_sender_acl (username, send_as_acl) AS
|
"grouped_sender_acl" => "CREATE VIEW grouped_sender_acl (username, send_as_acl) AS
|
||||||
SELECT logged_in_as, IFNULL(GROUP_CONCAT(send_as SEPARATOR ' '), '') AS send_as_acl FROM sender_acl
|
SELECT logged_in_as, IFNULL(GROUP_CONCAT(send_as SEPARATOR ' '), '') AS send_as_acl FROM sender_acl
|
||||||
WHERE send_as NOT LIKE '@%'
|
WHERE send_as NOT LIKE '@%'
|
||||||
GROUP BY logged_in_as;",
|
GROUP BY logged_in_as;",
|
||||||
// END
|
// END
|
||||||
"grouped_sender_acl_external" => "CREATE VIEW grouped_sender_acl_external (username, send_as_acl) AS
|
"grouped_sender_acl_external" => "CREATE VIEW grouped_sender_acl_external (username, send_as_acl) AS
|
||||||
SELECT logged_in_as, IFNULL(GROUP_CONCAT(send_as SEPARATOR ' '), '') AS send_as_acl FROM sender_acl
|
SELECT logged_in_as, IFNULL(GROUP_CONCAT(send_as SEPARATOR ' '), '') AS send_as_acl FROM sender_acl
|
||||||
WHERE send_as NOT LIKE '@%' AND external = '1'
|
WHERE send_as NOT LIKE '@%' AND external = '1'
|
||||||
GROUP BY logged_in_as;",
|
GROUP BY logged_in_as;",
|
||||||
"grouped_domain_alias_address" => "CREATE VIEW grouped_domain_alias_address (username, ad_alias) AS
|
"grouped_domain_alias_address" => "CREATE VIEW grouped_domain_alias_address (username, ad_alias) AS
|
||||||
SELECT username, IFNULL(GROUP_CONCAT(local_part, '@', alias_domain SEPARATOR ' '), '') AS ad_alias FROM mailbox
|
SELECT username, IFNULL(GROUP_CONCAT(local_part, '@', alias_domain SEPARATOR ' '), '') AS ad_alias FROM mailbox
|
||||||
LEFT OUTER JOIN alias_domain ON target_domain=domain
|
LEFT OUTER JOIN alias_domain ON target_domain=domain
|
||||||
GROUP BY username;",
|
GROUP BY username;",
|
||||||
"sieve_before" => "CREATE VIEW sieve_before (id, username, script_name, script_data) AS
|
"sieve_before" => "CREATE VIEW sieve_before (id, username, script_name, script_data) AS
|
||||||
SELECT md5(script_data), username, script_name, script_data FROM sieve_filters
|
SELECT md5(script_data), username, script_name, script_data FROM sieve_filters
|
||||||
WHERE filter_type = 'prefilter';",
|
WHERE filter_type = 'prefilter';",
|
||||||
"sieve_after" => "CREATE VIEW sieve_after (id, username, script_name, script_data) AS
|
"sieve_after" => "CREATE VIEW sieve_after (id, username, script_name, script_data) AS
|
||||||
SELECT md5(script_data), username, script_name, script_data FROM sieve_filters
|
SELECT md5(script_data), username, script_name, script_data FROM sieve_filters
|
||||||
WHERE filter_type = 'postfilter';"
|
WHERE filter_type = 'postfilter';"
|
||||||
);
|
);
|
||||||
|
|
||||||
$tables = array(
|
$tables = array(
|
||||||
@@ -251,6 +251,26 @@ function init_db_schema() {
|
|||||||
),
|
),
|
||||||
"attr" => "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC"
|
"attr" => "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC"
|
||||||
),
|
),
|
||||||
|
"tags_domain" => array(
|
||||||
|
"cols" => array(
|
||||||
|
"tag_name" => "VARCHAR(255) NOT NULL",
|
||||||
|
"domain" => "VARCHAR(255) NOT NULL"
|
||||||
|
),
|
||||||
|
"keys" => array(
|
||||||
|
"fkey" => array(
|
||||||
|
"fk_tags_domain" => array(
|
||||||
|
"col" => "domain",
|
||||||
|
"ref" => "domain.domain",
|
||||||
|
"delete" => "CASCADE",
|
||||||
|
"update" => "NO ACTION"
|
||||||
|
)
|
||||||
|
),
|
||||||
|
"unique" => array(
|
||||||
|
"tag_name" => array("tag_name", "domain")
|
||||||
|
)
|
||||||
|
),
|
||||||
|
"attr" => "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC"
|
||||||
|
),
|
||||||
"tls_policy_override" => array(
|
"tls_policy_override" => array(
|
||||||
"cols" => array(
|
"cols" => array(
|
||||||
"id" => "INT NOT NULL AUTO_INCREMENT",
|
"id" => "INT NOT NULL AUTO_INCREMENT",
|
||||||
@@ -325,6 +345,26 @@ function init_db_schema() {
|
|||||||
),
|
),
|
||||||
"attr" => "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC"
|
"attr" => "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC"
|
||||||
),
|
),
|
||||||
|
"tags_mailbox" => array(
|
||||||
|
"cols" => array(
|
||||||
|
"tag_name" => "VARCHAR(255) NOT NULL",
|
||||||
|
"username" => "VARCHAR(255) NOT NULL"
|
||||||
|
),
|
||||||
|
"keys" => array(
|
||||||
|
"fkey" => array(
|
||||||
|
"fk_tags_mailbox" => array(
|
||||||
|
"col" => "username",
|
||||||
|
"ref" => "mailbox.username",
|
||||||
|
"delete" => "CASCADE",
|
||||||
|
"update" => "NO ACTION"
|
||||||
|
)
|
||||||
|
),
|
||||||
|
"unique" => array(
|
||||||
|
"tag_name" => array("tag_name", "username")
|
||||||
|
)
|
||||||
|
),
|
||||||
|
"attr" => "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC"
|
||||||
|
),
|
||||||
"sieve_filters" => array(
|
"sieve_filters" => array(
|
||||||
"cols" => array(
|
"cols" => array(
|
||||||
"id" => "INT NOT NULL AUTO_INCREMENT",
|
"id" => "INT NOT NULL AUTO_INCREMENT",
|
||||||
@@ -400,7 +440,7 @@ function init_db_schema() {
|
|||||||
"spam_score" => "TINYINT(1) NOT NULL DEFAULT '1'",
|
"spam_score" => "TINYINT(1) NOT NULL DEFAULT '1'",
|
||||||
"spam_policy" => "TINYINT(1) NOT NULL DEFAULT '1'",
|
"spam_policy" => "TINYINT(1) NOT NULL DEFAULT '1'",
|
||||||
"delimiter_action" => "TINYINT(1) NOT NULL DEFAULT '1'",
|
"delimiter_action" => "TINYINT(1) NOT NULL DEFAULT '1'",
|
||||||
"syncjobs" => "TINYINT(1) NOT NULL DEFAULT '1'",
|
"syncjobs" => "TINYINT(1) NOT NULL DEFAULT '0'",
|
||||||
"eas_reset" => "TINYINT(1) NOT NULL DEFAULT '1'",
|
"eas_reset" => "TINYINT(1) NOT NULL DEFAULT '1'",
|
||||||
"sogo_profile_reset" => "TINYINT(1) NOT NULL DEFAULT '0'",
|
"sogo_profile_reset" => "TINYINT(1) NOT NULL DEFAULT '0'",
|
||||||
"pushover" => "TINYINT(1) NOT NULL DEFAULT '1'",
|
"pushover" => "TINYINT(1) NOT NULL DEFAULT '1'",
|
||||||
@@ -698,8 +738,8 @@ function init_db_schema() {
|
|||||||
"username" => "VARCHAR(255) NOT NULL",
|
"username" => "VARCHAR(255) NOT NULL",
|
||||||
"authmech" => "ENUM('yubi_otp', 'u2f', 'hotp', 'totp', 'webauthn')",
|
"authmech" => "ENUM('yubi_otp', 'u2f', 'hotp', 'totp', 'webauthn')",
|
||||||
"secret" => "VARCHAR(255) DEFAULT NULL",
|
"secret" => "VARCHAR(255) DEFAULT NULL",
|
||||||
"keyHandle" => "VARCHAR(255) DEFAULT NULL",
|
"keyHandle" => "VARCHAR(1023) DEFAULT NULL",
|
||||||
"publicKey" => "VARCHAR(255) DEFAULT NULL",
|
"publicKey" => "VARCHAR(4096) DEFAULT NULL",
|
||||||
"counter" => "INT NOT NULL DEFAULT '0'",
|
"counter" => "INT NOT NULL DEFAULT '0'",
|
||||||
"certificate" => "TEXT",
|
"certificate" => "TEXT",
|
||||||
"active" => "TINYINT(1) NOT NULL DEFAULT '0'"
|
"active" => "TINYINT(1) NOT NULL DEFAULT '0'"
|
||||||
@@ -864,7 +904,7 @@ function init_db_schema() {
|
|||||||
"sogo_sessions_folder" => array(
|
"sogo_sessions_folder" => array(
|
||||||
"cols" => array(
|
"cols" => array(
|
||||||
"c_id" => "VARCHAR(255) NOT NULL",
|
"c_id" => "VARCHAR(255) NOT NULL",
|
||||||
"c_value" => "VARCHAR(255) NOT NULL",
|
"c_value" => "VARCHAR(4096) NOT NULL",
|
||||||
"c_creationdate" => "INT(11) NOT NULL",
|
"c_creationdate" => "INT(11) NOT NULL",
|
||||||
"c_lastseen" => "INT(11) NOT NULL"
|
"c_lastseen" => "INT(11) NOT NULL"
|
||||||
),
|
),
|
||||||
@@ -1187,8 +1227,16 @@ function init_db_schema() {
|
|||||||
$pdo->query($create);
|
$pdo->query($create);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Mitigate imapsync pipemess issue
|
// Mitigate imapsync argument injection issue
|
||||||
$pdo->query("UPDATE `imapsync` SET `custom_params` = '' WHERE `custom_params` LIKE '%pipemess%';");
|
$pdo->query("UPDATE `imapsync` SET `custom_params` = ''
|
||||||
|
WHERE `custom_params` LIKE '%pipemess%'
|
||||||
|
OR custom_params LIKE '%skipmess%'
|
||||||
|
OR custom_params LIKE '%delete2foldersonly%'
|
||||||
|
OR custom_params LIKE '%delete2foldersbutnot%'
|
||||||
|
OR custom_params LIKE '%regexflag%'
|
||||||
|
OR custom_params LIKE '%pipemess%'
|
||||||
|
OR custom_params LIKE '%regextrans2%'
|
||||||
|
OR custom_params LIKE '%maxlinelengthcmd%';");
|
||||||
|
|
||||||
// Migrate webauthn tfa
|
// Migrate webauthn tfa
|
||||||
$stmt = $pdo->query("ALTER TABLE `tfa` MODIFY COLUMN `authmech` ENUM('yubi_otp', 'u2f', 'hotp', 'totp', 'webauthn')");
|
$stmt = $pdo->query("ALTER TABLE `tfa` MODIFY COLUMN `authmech` ENUM('yubi_otp', 'u2f', 'hotp', 'totp', 'webauthn')");
|
||||||
@@ -1216,6 +1264,7 @@ function init_db_schema() {
|
|||||||
$pdo->query("UPDATE `pushover` SET `attributes` = '{}' WHERE `attributes` = '' OR `attributes` IS NULL;");
|
$pdo->query("UPDATE `pushover` SET `attributes` = '{}' WHERE `attributes` = '' OR `attributes` IS NULL;");
|
||||||
$pdo->query("UPDATE `pushover` SET `attributes` = JSON_SET(`attributes`, '$.evaluate_x_prio', \"0\") WHERE JSON_VALUE(`attributes`, '$.evaluate_x_prio') IS NULL;");
|
$pdo->query("UPDATE `pushover` SET `attributes` = JSON_SET(`attributes`, '$.evaluate_x_prio', \"0\") WHERE JSON_VALUE(`attributes`, '$.evaluate_x_prio') IS NULL;");
|
||||||
$pdo->query("UPDATE `pushover` SET `attributes` = JSON_SET(`attributes`, '$.only_x_prio', \"0\") WHERE JSON_VALUE(`attributes`, '$.only_x_prio') IS NULL;");
|
$pdo->query("UPDATE `pushover` SET `attributes` = JSON_SET(`attributes`, '$.only_x_prio', \"0\") WHERE JSON_VALUE(`attributes`, '$.only_x_prio') IS NULL;");
|
||||||
|
$pdo->query("UPDATE `pushover` SET `attributes` = JSON_SET(`attributes`, '$.sound', \"pushover\") WHERE JSON_VALUE(`attributes`, '$.sound') IS NULL;");
|
||||||
// mailbox
|
// mailbox
|
||||||
$pdo->query("UPDATE `mailbox` SET `attributes` = '{}' WHERE `attributes` = '' OR `attributes` IS NULL;");
|
$pdo->query("UPDATE `mailbox` SET `attributes` = '{}' WHERE `attributes` = '' OR `attributes` IS NULL;");
|
||||||
$pdo->query("UPDATE `mailbox` SET `attributes` = JSON_SET(`attributes`, '$.passwd_update', \"0\") WHERE JSON_VALUE(`attributes`, '$.passwd_update') IS NULL;");
|
$pdo->query("UPDATE `mailbox` SET `attributes` = JSON_SET(`attributes`, '$.passwd_update', \"0\") WHERE JSON_VALUE(`attributes`, '$.passwd_update') IS NULL;");
|
||||||
|
|||||||
Generated
+8
-8
@@ -1604,16 +1604,16 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "twig/twig",
|
"name": "twig/twig",
|
||||||
"version": "v3.3.8",
|
"version": "v3.4.3",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/twigphp/Twig.git",
|
"url": "https://github.com/twigphp/Twig.git",
|
||||||
"reference": "972d8604a92b7054828b539f2febb0211dd5945c"
|
"reference": "c38fd6b0b7f370c198db91ffd02e23b517426b58"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/twigphp/Twig/zipball/972d8604a92b7054828b539f2febb0211dd5945c",
|
"url": "https://api.github.com/repos/twigphp/Twig/zipball/c38fd6b0b7f370c198db91ffd02e23b517426b58",
|
||||||
"reference": "972d8604a92b7054828b539f2febb0211dd5945c",
|
"reference": "c38fd6b0b7f370c198db91ffd02e23b517426b58",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@@ -1628,7 +1628,7 @@
|
|||||||
"type": "library",
|
"type": "library",
|
||||||
"extra": {
|
"extra": {
|
||||||
"branch-alias": {
|
"branch-alias": {
|
||||||
"dev-master": "3.3-dev"
|
"dev-master": "3.4-dev"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"autoload": {
|
"autoload": {
|
||||||
@@ -1664,7 +1664,7 @@
|
|||||||
],
|
],
|
||||||
"support": {
|
"support": {
|
||||||
"issues": "https://github.com/twigphp/Twig/issues",
|
"issues": "https://github.com/twigphp/Twig/issues",
|
||||||
"source": "https://github.com/twigphp/Twig/tree/v3.3.8"
|
"source": "https://github.com/twigphp/Twig/tree/v3.4.3"
|
||||||
},
|
},
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
@@ -1676,7 +1676,7 @@
|
|||||||
"type": "tidelift"
|
"type": "tidelift"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"time": "2022-02-04T06:59:48+00:00"
|
"time": "2022-09-28T08:42:51+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "yubico/u2flib-server",
|
"name": "yubico/u2flib-server",
|
||||||
@@ -1728,5 +1728,5 @@
|
|||||||
"prefer-lowest": false,
|
"prefer-lowest": false,
|
||||||
"platform": [],
|
"platform": [],
|
||||||
"platform-dev": [],
|
"platform-dev": [],
|
||||||
"plugin-api-version": "2.2.0"
|
"plugin-api-version": "2.3.0"
|
||||||
}
|
}
|
||||||
Vendored
+5
@@ -2,6 +2,11 @@
|
|||||||
|
|
||||||
// autoload.php @generated by Composer
|
// autoload.php @generated by Composer
|
||||||
|
|
||||||
|
if (PHP_VERSION_ID < 50600) {
|
||||||
|
echo 'Composer 2.3.0 dropped support for autoloading on PHP <5.6 and you are running '.PHP_VERSION.', please upgrade PHP or use Composer 2.2 LTS via "composer self-update --2.2". Aborting.'.PHP_EOL;
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
require_once __DIR__ . '/composer/autoload_real.php';
|
require_once __DIR__ . '/composer/autoload_real.php';
|
||||||
|
|
||||||
return ComposerAutoloaderInit873464e4bd965a3168f133248b1b218b::getLoader();
|
return ComposerAutoloaderInit873464e4bd965a3168f133248b1b218b::getLoader();
|
||||||
+9
-7
@@ -21,12 +21,14 @@ use Composer\Semver\VersionParser;
|
|||||||
* See also https://getcomposer.org/doc/07-runtime.md#installed-versions
|
* See also https://getcomposer.org/doc/07-runtime.md#installed-versions
|
||||||
*
|
*
|
||||||
* To require its presence, you can require `composer-runtime-api ^2.0`
|
* To require its presence, you can require `composer-runtime-api ^2.0`
|
||||||
|
*
|
||||||
|
* @final
|
||||||
*/
|
*/
|
||||||
class InstalledVersions
|
class InstalledVersions
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* @var mixed[]|null
|
* @var mixed[]|null
|
||||||
* @psalm-var array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string, type?: string}>}|array{}|null
|
* @psalm-var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>}|array{}|null
|
||||||
*/
|
*/
|
||||||
private static $installed;
|
private static $installed;
|
||||||
|
|
||||||
@@ -37,7 +39,7 @@ class InstalledVersions
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @var array[]
|
* @var array[]
|
||||||
* @psalm-var array<string, array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string, type?: string}>}>
|
* @psalm-var array<string, array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>}>
|
||||||
*/
|
*/
|
||||||
private static $installedByVendor = array();
|
private static $installedByVendor = array();
|
||||||
|
|
||||||
@@ -241,7 +243,7 @@ class InstalledVersions
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @return array
|
* @return array
|
||||||
* @psalm-return array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}
|
* @psalm-return array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}
|
||||||
*/
|
*/
|
||||||
public static function getRootPackage()
|
public static function getRootPackage()
|
||||||
{
|
{
|
||||||
@@ -255,7 +257,7 @@ class InstalledVersions
|
|||||||
*
|
*
|
||||||
* @deprecated Use getAllRawData() instead which returns all datasets for all autoloaders present in the process. getRawData only returns the first dataset loaded, which may not be what you expect.
|
* @deprecated Use getAllRawData() instead which returns all datasets for all autoloaders present in the process. getRawData only returns the first dataset loaded, which may not be what you expect.
|
||||||
* @return array[]
|
* @return array[]
|
||||||
* @psalm-return array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string, type?: string}>}
|
* @psalm-return array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>}
|
||||||
*/
|
*/
|
||||||
public static function getRawData()
|
public static function getRawData()
|
||||||
{
|
{
|
||||||
@@ -278,7 +280,7 @@ class InstalledVersions
|
|||||||
* Returns the raw data of all installed.php which are currently loaded for custom implementations
|
* Returns the raw data of all installed.php which are currently loaded for custom implementations
|
||||||
*
|
*
|
||||||
* @return array[]
|
* @return array[]
|
||||||
* @psalm-return list<array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string, type?: string}>}>
|
* @psalm-return list<array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>}>
|
||||||
*/
|
*/
|
||||||
public static function getAllRawData()
|
public static function getAllRawData()
|
||||||
{
|
{
|
||||||
@@ -301,7 +303,7 @@ class InstalledVersions
|
|||||||
* @param array[] $data A vendor/composer/installed.php data set
|
* @param array[] $data A vendor/composer/installed.php data set
|
||||||
* @return void
|
* @return void
|
||||||
*
|
*
|
||||||
* @psalm-param array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string, type?: string}>} $data
|
* @psalm-param array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>} $data
|
||||||
*/
|
*/
|
||||||
public static function reload($data)
|
public static function reload($data)
|
||||||
{
|
{
|
||||||
@@ -311,7 +313,7 @@ class InstalledVersions
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @return array[]
|
* @return array[]
|
||||||
* @psalm-return list<array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string, type?: string}>}>
|
* @psalm-return list<array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>}>
|
||||||
*/
|
*/
|
||||||
private static function getInstalled()
|
private static function getInstalled()
|
||||||
{
|
{
|
||||||
|
|||||||
+1
-1
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
// autoload_classmap.php @generated by Composer
|
// autoload_classmap.php @generated by Composer
|
||||||
|
|
||||||
$vendorDir = dirname(dirname(__FILE__));
|
$vendorDir = dirname(__DIR__);
|
||||||
$baseDir = dirname($vendorDir);
|
$baseDir = dirname($vendorDir);
|
||||||
|
|
||||||
return array(
|
return array(
|
||||||
|
|||||||
+2
-2
@@ -2,15 +2,15 @@
|
|||||||
|
|
||||||
// autoload_files.php @generated by Composer
|
// autoload_files.php @generated by Composer
|
||||||
|
|
||||||
$vendorDir = dirname(dirname(__FILE__));
|
$vendorDir = dirname(__DIR__);
|
||||||
$baseDir = dirname($vendorDir);
|
$baseDir = dirname($vendorDir);
|
||||||
|
|
||||||
return array(
|
return array(
|
||||||
'0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => $vendorDir . '/symfony/polyfill-mbstring/bootstrap.php',
|
'0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => $vendorDir . '/symfony/polyfill-mbstring/bootstrap.php',
|
||||||
'320cde22f66dd4f5d3fd621d3e88b98f' => $vendorDir . '/symfony/polyfill-ctype/bootstrap.php',
|
|
||||||
'a4a119a56e50fbb293281d9a48007e0e' => $vendorDir . '/symfony/polyfill-php80/bootstrap.php',
|
'a4a119a56e50fbb293281d9a48007e0e' => $vendorDir . '/symfony/polyfill-php80/bootstrap.php',
|
||||||
'a1105708a18b76903365ca1c4aa61b02' => $vendorDir . '/symfony/translation/Resources/functions.php',
|
'a1105708a18b76903365ca1c4aa61b02' => $vendorDir . '/symfony/translation/Resources/functions.php',
|
||||||
'667aeda72477189d0494fecd327c3641' => $vendorDir . '/symfony/var-dumper/Resources/functions/dump.php',
|
'667aeda72477189d0494fecd327c3641' => $vendorDir . '/symfony/var-dumper/Resources/functions/dump.php',
|
||||||
|
'320cde22f66dd4f5d3fd621d3e88b98f' => $vendorDir . '/symfony/polyfill-ctype/bootstrap.php',
|
||||||
'fe62ba7e10580d903cc46d808b5961a4' => $vendorDir . '/tightenco/collect/src/Collect/Support/helpers.php',
|
'fe62ba7e10580d903cc46d808b5961a4' => $vendorDir . '/tightenco/collect/src/Collect/Support/helpers.php',
|
||||||
'caf31cc6ec7cf2241cb6f12c226c3846' => $vendorDir . '/tightenco/collect/src/Collect/Support/alias.php',
|
'caf31cc6ec7cf2241cb6f12c226c3846' => $vendorDir . '/tightenco/collect/src/Collect/Support/alias.php',
|
||||||
'04c6c5c2f7095ccf6c481d3e53e1776f' => $vendorDir . '/mustangostang/spyc/Spyc.php',
|
'04c6c5c2f7095ccf6c481d3e53e1776f' => $vendorDir . '/mustangostang/spyc/Spyc.php',
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
// autoload_namespaces.php @generated by Composer
|
// autoload_namespaces.php @generated by Composer
|
||||||
|
|
||||||
$vendorDir = dirname(dirname(__FILE__));
|
$vendorDir = dirname(__DIR__);
|
||||||
$baseDir = dirname($vendorDir);
|
$baseDir = dirname($vendorDir);
|
||||||
|
|
||||||
return array(
|
return array(
|
||||||
|
|||||||
+1
-1
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
// autoload_psr4.php @generated by Composer
|
// autoload_psr4.php @generated by Composer
|
||||||
|
|
||||||
$vendorDir = dirname(dirname(__FILE__));
|
$vendorDir = dirname(__DIR__);
|
||||||
$baseDir = dirname($vendorDir);
|
$baseDir = dirname($vendorDir);
|
||||||
|
|
||||||
return array(
|
return array(
|
||||||
|
|||||||
+4
-27
@@ -25,38 +25,15 @@ class ComposerAutoloaderInit873464e4bd965a3168f133248b1b218b
|
|||||||
require __DIR__ . '/platform_check.php';
|
require __DIR__ . '/platform_check.php';
|
||||||
|
|
||||||
spl_autoload_register(array('ComposerAutoloaderInit873464e4bd965a3168f133248b1b218b', 'loadClassLoader'), true, true);
|
spl_autoload_register(array('ComposerAutoloaderInit873464e4bd965a3168f133248b1b218b', 'loadClassLoader'), true, true);
|
||||||
self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(\dirname(__FILE__)));
|
self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(__DIR__));
|
||||||
spl_autoload_unregister(array('ComposerAutoloaderInit873464e4bd965a3168f133248b1b218b', 'loadClassLoader'));
|
spl_autoload_unregister(array('ComposerAutoloaderInit873464e4bd965a3168f133248b1b218b', 'loadClassLoader'));
|
||||||
|
|
||||||
$useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
|
require __DIR__ . '/autoload_static.php';
|
||||||
if ($useStaticLoader) {
|
call_user_func(\Composer\Autoload\ComposerStaticInit873464e4bd965a3168f133248b1b218b::getInitializer($loader));
|
||||||
require __DIR__ . '/autoload_static.php';
|
|
||||||
|
|
||||||
call_user_func(\Composer\Autoload\ComposerStaticInit873464e4bd965a3168f133248b1b218b::getInitializer($loader));
|
|
||||||
} else {
|
|
||||||
$map = require __DIR__ . '/autoload_namespaces.php';
|
|
||||||
foreach ($map as $namespace => $path) {
|
|
||||||
$loader->set($namespace, $path);
|
|
||||||
}
|
|
||||||
|
|
||||||
$map = require __DIR__ . '/autoload_psr4.php';
|
|
||||||
foreach ($map as $namespace => $path) {
|
|
||||||
$loader->setPsr4($namespace, $path);
|
|
||||||
}
|
|
||||||
|
|
||||||
$classMap = require __DIR__ . '/autoload_classmap.php';
|
|
||||||
if ($classMap) {
|
|
||||||
$loader->addClassMap($classMap);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$loader->register(true);
|
$loader->register(true);
|
||||||
|
|
||||||
if ($useStaticLoader) {
|
$includeFiles = \Composer\Autoload\ComposerStaticInit873464e4bd965a3168f133248b1b218b::$files;
|
||||||
$includeFiles = Composer\Autoload\ComposerStaticInit873464e4bd965a3168f133248b1b218b::$files;
|
|
||||||
} else {
|
|
||||||
$includeFiles = require __DIR__ . '/autoload_files.php';
|
|
||||||
}
|
|
||||||
foreach ($includeFiles as $fileIdentifier => $file) {
|
foreach ($includeFiles as $fileIdentifier => $file) {
|
||||||
composerRequire873464e4bd965a3168f133248b1b218b($fileIdentifier, $file);
|
composerRequire873464e4bd965a3168f133248b1b218b($fileIdentifier, $file);
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -8,10 +8,10 @@ class ComposerStaticInit873464e4bd965a3168f133248b1b218b
|
|||||||
{
|
{
|
||||||
public static $files = array (
|
public static $files = array (
|
||||||
'0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => __DIR__ . '/..' . '/symfony/polyfill-mbstring/bootstrap.php',
|
'0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => __DIR__ . '/..' . '/symfony/polyfill-mbstring/bootstrap.php',
|
||||||
'320cde22f66dd4f5d3fd621d3e88b98f' => __DIR__ . '/..' . '/symfony/polyfill-ctype/bootstrap.php',
|
|
||||||
'a4a119a56e50fbb293281d9a48007e0e' => __DIR__ . '/..' . '/symfony/polyfill-php80/bootstrap.php',
|
'a4a119a56e50fbb293281d9a48007e0e' => __DIR__ . '/..' . '/symfony/polyfill-php80/bootstrap.php',
|
||||||
'a1105708a18b76903365ca1c4aa61b02' => __DIR__ . '/..' . '/symfony/translation/Resources/functions.php',
|
'a1105708a18b76903365ca1c4aa61b02' => __DIR__ . '/..' . '/symfony/translation/Resources/functions.php',
|
||||||
'667aeda72477189d0494fecd327c3641' => __DIR__ . '/..' . '/symfony/var-dumper/Resources/functions/dump.php',
|
'667aeda72477189d0494fecd327c3641' => __DIR__ . '/..' . '/symfony/var-dumper/Resources/functions/dump.php',
|
||||||
|
'320cde22f66dd4f5d3fd621d3e88b98f' => __DIR__ . '/..' . '/symfony/polyfill-ctype/bootstrap.php',
|
||||||
'fe62ba7e10580d903cc46d808b5961a4' => __DIR__ . '/..' . '/tightenco/collect/src/Collect/Support/helpers.php',
|
'fe62ba7e10580d903cc46d808b5961a4' => __DIR__ . '/..' . '/tightenco/collect/src/Collect/Support/helpers.php',
|
||||||
'caf31cc6ec7cf2241cb6f12c226c3846' => __DIR__ . '/..' . '/tightenco/collect/src/Collect/Support/alias.php',
|
'caf31cc6ec7cf2241cb6f12c226c3846' => __DIR__ . '/..' . '/tightenco/collect/src/Collect/Support/alias.php',
|
||||||
'04c6c5c2f7095ccf6c481d3e53e1776f' => __DIR__ . '/..' . '/mustangostang/spyc/Spyc.php',
|
'04c6c5c2f7095ccf6c481d3e53e1776f' => __DIR__ . '/..' . '/mustangostang/spyc/Spyc.php',
|
||||||
|
|||||||
+8
-8
@@ -1654,17 +1654,17 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "twig/twig",
|
"name": "twig/twig",
|
||||||
"version": "v3.3.8",
|
"version": "v3.4.3",
|
||||||
"version_normalized": "3.3.8.0",
|
"version_normalized": "3.4.3.0",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/twigphp/Twig.git",
|
"url": "https://github.com/twigphp/Twig.git",
|
||||||
"reference": "972d8604a92b7054828b539f2febb0211dd5945c"
|
"reference": "c38fd6b0b7f370c198db91ffd02e23b517426b58"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/twigphp/Twig/zipball/972d8604a92b7054828b539f2febb0211dd5945c",
|
"url": "https://api.github.com/repos/twigphp/Twig/zipball/c38fd6b0b7f370c198db91ffd02e23b517426b58",
|
||||||
"reference": "972d8604a92b7054828b539f2febb0211dd5945c",
|
"reference": "c38fd6b0b7f370c198db91ffd02e23b517426b58",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@@ -1676,11 +1676,11 @@
|
|||||||
"psr/container": "^1.0",
|
"psr/container": "^1.0",
|
||||||
"symfony/phpunit-bridge": "^4.4.9|^5.0.9|^6.0"
|
"symfony/phpunit-bridge": "^4.4.9|^5.0.9|^6.0"
|
||||||
},
|
},
|
||||||
"time": "2022-02-04T06:59:48+00:00",
|
"time": "2022-09-28T08:42:51+00:00",
|
||||||
"type": "library",
|
"type": "library",
|
||||||
"extra": {
|
"extra": {
|
||||||
"branch-alias": {
|
"branch-alias": {
|
||||||
"dev-master": "3.3-dev"
|
"dev-master": "3.4-dev"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"installation-source": "dist",
|
"installation-source": "dist",
|
||||||
@@ -1717,7 +1717,7 @@
|
|||||||
],
|
],
|
||||||
"support": {
|
"support": {
|
||||||
"issues": "https://github.com/twigphp/Twig/issues",
|
"issues": "https://github.com/twigphp/Twig/issues",
|
||||||
"source": "https://github.com/twigphp/Twig/tree/v3.3.8"
|
"source": "https://github.com/twigphp/Twig/tree/v3.4.3"
|
||||||
},
|
},
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
|
|||||||
+34
-34
@@ -1,49 +1,49 @@
|
|||||||
<?php return array(
|
<?php return array(
|
||||||
'root' => array(
|
'root' => array(
|
||||||
'pretty_version' => '1.0.0+no-version-set',
|
'name' => '__root__',
|
||||||
'version' => '1.0.0.0',
|
'pretty_version' => 'dev-master',
|
||||||
|
'version' => 'dev-master',
|
||||||
|
'reference' => '8e0b1d8aee4af02311692cb031695cc2ac3850fd',
|
||||||
'type' => 'library',
|
'type' => 'library',
|
||||||
'install_path' => __DIR__ . '/../../',
|
'install_path' => __DIR__ . '/../../',
|
||||||
'aliases' => array(),
|
'aliases' => array(),
|
||||||
'reference' => NULL,
|
|
||||||
'name' => '__root__',
|
|
||||||
'dev' => true,
|
'dev' => true,
|
||||||
),
|
),
|
||||||
'versions' => array(
|
'versions' => array(
|
||||||
'__root__' => array(
|
'__root__' => array(
|
||||||
'pretty_version' => '1.0.0+no-version-set',
|
'pretty_version' => 'dev-master',
|
||||||
'version' => '1.0.0.0',
|
'version' => 'dev-master',
|
||||||
|
'reference' => '8e0b1d8aee4af02311692cb031695cc2ac3850fd',
|
||||||
'type' => 'library',
|
'type' => 'library',
|
||||||
'install_path' => __DIR__ . '/../../',
|
'install_path' => __DIR__ . '/../../',
|
||||||
'aliases' => array(),
|
'aliases' => array(),
|
||||||
'reference' => NULL,
|
|
||||||
'dev_requirement' => false,
|
'dev_requirement' => false,
|
||||||
),
|
),
|
||||||
'bshaffer/oauth2-server-php' => array(
|
'bshaffer/oauth2-server-php' => array(
|
||||||
'pretty_version' => 'v1.11.1',
|
'pretty_version' => 'v1.11.1',
|
||||||
'version' => '1.11.1.0',
|
'version' => '1.11.1.0',
|
||||||
|
'reference' => '5a0c8000d4763b276919e2106f54eddda6bc50fa',
|
||||||
'type' => 'library',
|
'type' => 'library',
|
||||||
'install_path' => __DIR__ . '/../bshaffer/oauth2-server-php',
|
'install_path' => __DIR__ . '/../bshaffer/oauth2-server-php',
|
||||||
'aliases' => array(),
|
'aliases' => array(),
|
||||||
'reference' => '5a0c8000d4763b276919e2106f54eddda6bc50fa',
|
|
||||||
'dev_requirement' => false,
|
'dev_requirement' => false,
|
||||||
),
|
),
|
||||||
'ddeboer/imap' => array(
|
'ddeboer/imap' => array(
|
||||||
'pretty_version' => '1.13.1',
|
'pretty_version' => '1.13.1',
|
||||||
'version' => '1.13.1.0',
|
'version' => '1.13.1.0',
|
||||||
|
'reference' => '8b772d04b1deadb5df13782fb78c4b648f77496e',
|
||||||
'type' => 'library',
|
'type' => 'library',
|
||||||
'install_path' => __DIR__ . '/../ddeboer/imap',
|
'install_path' => __DIR__ . '/../ddeboer/imap',
|
||||||
'aliases' => array(),
|
'aliases' => array(),
|
||||||
'reference' => '8b772d04b1deadb5df13782fb78c4b648f77496e',
|
|
||||||
'dev_requirement' => false,
|
'dev_requirement' => false,
|
||||||
),
|
),
|
||||||
'directorytree/ldaprecord' => array(
|
'directorytree/ldaprecord' => array(
|
||||||
'pretty_version' => 'v2.10.1',
|
'pretty_version' => 'v2.10.1',
|
||||||
'version' => '2.10.1.0',
|
'version' => '2.10.1.0',
|
||||||
|
'reference' => 'bf512d9af7a7b0e2ed7a666ab29cefdd027bee88',
|
||||||
'type' => 'library',
|
'type' => 'library',
|
||||||
'install_path' => __DIR__ . '/../directorytree/ldaprecord',
|
'install_path' => __DIR__ . '/../directorytree/ldaprecord',
|
||||||
'aliases' => array(),
|
'aliases' => array(),
|
||||||
'reference' => 'bf512d9af7a7b0e2ed7a666ab29cefdd027bee88',
|
|
||||||
'dev_requirement' => false,
|
'dev_requirement' => false,
|
||||||
),
|
),
|
||||||
'exorus/php-mime-mail-parser' => array(
|
'exorus/php-mime-mail-parser' => array(
|
||||||
@@ -55,28 +55,28 @@
|
|||||||
'illuminate/contracts' => array(
|
'illuminate/contracts' => array(
|
||||||
'pretty_version' => 'v9.3.0',
|
'pretty_version' => 'v9.3.0',
|
||||||
'version' => '9.3.0.0',
|
'version' => '9.3.0.0',
|
||||||
|
'reference' => 'bf4b3c254c49d28157645d01e4883b5951b1e1d0',
|
||||||
'type' => 'library',
|
'type' => 'library',
|
||||||
'install_path' => __DIR__ . '/../illuminate/contracts',
|
'install_path' => __DIR__ . '/../illuminate/contracts',
|
||||||
'aliases' => array(),
|
'aliases' => array(),
|
||||||
'reference' => 'bf4b3c254c49d28157645d01e4883b5951b1e1d0',
|
|
||||||
'dev_requirement' => false,
|
'dev_requirement' => false,
|
||||||
),
|
),
|
||||||
'matthiasmullie/minify' => array(
|
'matthiasmullie/minify' => array(
|
||||||
'pretty_version' => '1.3.66',
|
'pretty_version' => '1.3.66',
|
||||||
'version' => '1.3.66.0',
|
'version' => '1.3.66.0',
|
||||||
|
'reference' => '45fd3b0f1dfa2c965857c6d4a470bea52adc31a6',
|
||||||
'type' => 'library',
|
'type' => 'library',
|
||||||
'install_path' => __DIR__ . '/../matthiasmullie/minify',
|
'install_path' => __DIR__ . '/../matthiasmullie/minify',
|
||||||
'aliases' => array(),
|
'aliases' => array(),
|
||||||
'reference' => '45fd3b0f1dfa2c965857c6d4a470bea52adc31a6',
|
|
||||||
'dev_requirement' => false,
|
'dev_requirement' => false,
|
||||||
),
|
),
|
||||||
'matthiasmullie/path-converter' => array(
|
'matthiasmullie/path-converter' => array(
|
||||||
'pretty_version' => '1.1.3',
|
'pretty_version' => '1.1.3',
|
||||||
'version' => '1.1.3.0',
|
'version' => '1.1.3.0',
|
||||||
|
'reference' => 'e7d13b2c7e2f2268e1424aaed02085518afa02d9',
|
||||||
'type' => 'library',
|
'type' => 'library',
|
||||||
'install_path' => __DIR__ . '/../matthiasmullie/path-converter',
|
'install_path' => __DIR__ . '/../matthiasmullie/path-converter',
|
||||||
'aliases' => array(),
|
'aliases' => array(),
|
||||||
'reference' => 'e7d13b2c7e2f2268e1424aaed02085518afa02d9',
|
|
||||||
'dev_requirement' => false,
|
'dev_requirement' => false,
|
||||||
),
|
),
|
||||||
'messaged/php-mime-mail-parser' => array(
|
'messaged/php-mime-mail-parser' => array(
|
||||||
@@ -88,136 +88,136 @@
|
|||||||
'mustangostang/spyc' => array(
|
'mustangostang/spyc' => array(
|
||||||
'pretty_version' => '0.6.3',
|
'pretty_version' => '0.6.3',
|
||||||
'version' => '0.6.3.0',
|
'version' => '0.6.3.0',
|
||||||
|
'reference' => '4627c838b16550b666d15aeae1e5289dd5b77da0',
|
||||||
'type' => 'library',
|
'type' => 'library',
|
||||||
'install_path' => __DIR__ . '/../mustangostang/spyc',
|
'install_path' => __DIR__ . '/../mustangostang/spyc',
|
||||||
'aliases' => array(),
|
'aliases' => array(),
|
||||||
'reference' => '4627c838b16550b666d15aeae1e5289dd5b77da0',
|
|
||||||
'dev_requirement' => false,
|
'dev_requirement' => false,
|
||||||
),
|
),
|
||||||
'nesbot/carbon' => array(
|
'nesbot/carbon' => array(
|
||||||
'pretty_version' => '2.57.0',
|
'pretty_version' => '2.57.0',
|
||||||
'version' => '2.57.0.0',
|
'version' => '2.57.0.0',
|
||||||
|
'reference' => '4a54375c21eea4811dbd1149fe6b246517554e78',
|
||||||
'type' => 'library',
|
'type' => 'library',
|
||||||
'install_path' => __DIR__ . '/../nesbot/carbon',
|
'install_path' => __DIR__ . '/../nesbot/carbon',
|
||||||
'aliases' => array(),
|
'aliases' => array(),
|
||||||
'reference' => '4a54375c21eea4811dbd1149fe6b246517554e78',
|
|
||||||
'dev_requirement' => false,
|
'dev_requirement' => false,
|
||||||
),
|
),
|
||||||
'paragonie/random_compat' => array(
|
'paragonie/random_compat' => array(
|
||||||
'pretty_version' => 'v9.99.100',
|
'pretty_version' => 'v9.99.100',
|
||||||
'version' => '9.99.100.0',
|
'version' => '9.99.100.0',
|
||||||
|
'reference' => '996434e5492cb4c3edcb9168db6fbb1359ef965a',
|
||||||
'type' => 'library',
|
'type' => 'library',
|
||||||
'install_path' => __DIR__ . '/../paragonie/random_compat',
|
'install_path' => __DIR__ . '/../paragonie/random_compat',
|
||||||
'aliases' => array(),
|
'aliases' => array(),
|
||||||
'reference' => '996434e5492cb4c3edcb9168db6fbb1359ef965a',
|
|
||||||
'dev_requirement' => false,
|
'dev_requirement' => false,
|
||||||
),
|
),
|
||||||
'php-mime-mail-parser/php-mime-mail-parser' => array(
|
'php-mime-mail-parser/php-mime-mail-parser' => array(
|
||||||
'pretty_version' => '7.0.0',
|
'pretty_version' => '7.0.0',
|
||||||
'version' => '7.0.0.0',
|
'version' => '7.0.0.0',
|
||||||
|
'reference' => '9d09a017f3f103fec8456211a4a538b80e0eca0d',
|
||||||
'type' => 'library',
|
'type' => 'library',
|
||||||
'install_path' => __DIR__ . '/../php-mime-mail-parser/php-mime-mail-parser',
|
'install_path' => __DIR__ . '/../php-mime-mail-parser/php-mime-mail-parser',
|
||||||
'aliases' => array(),
|
'aliases' => array(),
|
||||||
'reference' => '9d09a017f3f103fec8456211a4a538b80e0eca0d',
|
|
||||||
'dev_requirement' => false,
|
'dev_requirement' => false,
|
||||||
),
|
),
|
||||||
'phpmailer/phpmailer' => array(
|
'phpmailer/phpmailer' => array(
|
||||||
'pretty_version' => 'v6.6.0',
|
'pretty_version' => 'v6.6.0',
|
||||||
'version' => '6.6.0.0',
|
'version' => '6.6.0.0',
|
||||||
|
'reference' => 'e43bac82edc26ca04b36143a48bde1c051cfd5b1',
|
||||||
'type' => 'library',
|
'type' => 'library',
|
||||||
'install_path' => __DIR__ . '/../phpmailer/phpmailer',
|
'install_path' => __DIR__ . '/../phpmailer/phpmailer',
|
||||||
'aliases' => array(),
|
'aliases' => array(),
|
||||||
'reference' => 'e43bac82edc26ca04b36143a48bde1c051cfd5b1',
|
|
||||||
'dev_requirement' => false,
|
'dev_requirement' => false,
|
||||||
),
|
),
|
||||||
'psr/container' => array(
|
'psr/container' => array(
|
||||||
'pretty_version' => '2.0.2',
|
'pretty_version' => '2.0.2',
|
||||||
'version' => '2.0.2.0',
|
'version' => '2.0.2.0',
|
||||||
|
'reference' => 'c71ecc56dfe541dbd90c5360474fbc405f8d5963',
|
||||||
'type' => 'library',
|
'type' => 'library',
|
||||||
'install_path' => __DIR__ . '/../psr/container',
|
'install_path' => __DIR__ . '/../psr/container',
|
||||||
'aliases' => array(),
|
'aliases' => array(),
|
||||||
'reference' => 'c71ecc56dfe541dbd90c5360474fbc405f8d5963',
|
|
||||||
'dev_requirement' => false,
|
'dev_requirement' => false,
|
||||||
),
|
),
|
||||||
'psr/log' => array(
|
'psr/log' => array(
|
||||||
'pretty_version' => '3.0.0',
|
'pretty_version' => '3.0.0',
|
||||||
'version' => '3.0.0.0',
|
'version' => '3.0.0.0',
|
||||||
|
'reference' => 'fe5ea303b0887d5caefd3d431c3e61ad47037001',
|
||||||
'type' => 'library',
|
'type' => 'library',
|
||||||
'install_path' => __DIR__ . '/../psr/log',
|
'install_path' => __DIR__ . '/../psr/log',
|
||||||
'aliases' => array(),
|
'aliases' => array(),
|
||||||
'reference' => 'fe5ea303b0887d5caefd3d431c3e61ad47037001',
|
|
||||||
'dev_requirement' => false,
|
'dev_requirement' => false,
|
||||||
),
|
),
|
||||||
'psr/simple-cache' => array(
|
'psr/simple-cache' => array(
|
||||||
'pretty_version' => '2.0.0',
|
'pretty_version' => '2.0.0',
|
||||||
'version' => '2.0.0.0',
|
'version' => '2.0.0.0',
|
||||||
|
'reference' => '8707bf3cea6f710bf6ef05491234e3ab06f6432a',
|
||||||
'type' => 'library',
|
'type' => 'library',
|
||||||
'install_path' => __DIR__ . '/../psr/simple-cache',
|
'install_path' => __DIR__ . '/../psr/simple-cache',
|
||||||
'aliases' => array(),
|
'aliases' => array(),
|
||||||
'reference' => '8707bf3cea6f710bf6ef05491234e3ab06f6432a',
|
|
||||||
'dev_requirement' => false,
|
'dev_requirement' => false,
|
||||||
),
|
),
|
||||||
'robthree/twofactorauth' => array(
|
'robthree/twofactorauth' => array(
|
||||||
'pretty_version' => '1.8.1',
|
'pretty_version' => '1.8.1',
|
||||||
'version' => '1.8.1.0',
|
'version' => '1.8.1.0',
|
||||||
|
'reference' => '5afcb45282f1c75562a48d479ecd1732c9bdb11b',
|
||||||
'type' => 'library',
|
'type' => 'library',
|
||||||
'install_path' => __DIR__ . '/../robthree/twofactorauth',
|
'install_path' => __DIR__ . '/../robthree/twofactorauth',
|
||||||
'aliases' => array(),
|
'aliases' => array(),
|
||||||
'reference' => '5afcb45282f1c75562a48d479ecd1732c9bdb11b',
|
|
||||||
'dev_requirement' => false,
|
'dev_requirement' => false,
|
||||||
),
|
),
|
||||||
'soundasleep/html2text' => array(
|
'soundasleep/html2text' => array(
|
||||||
'pretty_version' => '0.5.0',
|
'pretty_version' => '0.5.0',
|
||||||
'version' => '0.5.0.0',
|
'version' => '0.5.0.0',
|
||||||
|
'reference' => 'cdb89f6ffa2c4cc78f8ed9ea6ee0594a9133ccad',
|
||||||
'type' => 'library',
|
'type' => 'library',
|
||||||
'install_path' => __DIR__ . '/../soundasleep/html2text',
|
'install_path' => __DIR__ . '/../soundasleep/html2text',
|
||||||
'aliases' => array(),
|
'aliases' => array(),
|
||||||
'reference' => 'cdb89f6ffa2c4cc78f8ed9ea6ee0594a9133ccad',
|
|
||||||
'dev_requirement' => false,
|
'dev_requirement' => false,
|
||||||
),
|
),
|
||||||
'symfony/polyfill-ctype' => array(
|
'symfony/polyfill-ctype' => array(
|
||||||
'pretty_version' => 'v1.24.0',
|
'pretty_version' => 'v1.24.0',
|
||||||
'version' => '1.24.0.0',
|
'version' => '1.24.0.0',
|
||||||
|
'reference' => '30885182c981ab175d4d034db0f6f469898070ab',
|
||||||
'type' => 'library',
|
'type' => 'library',
|
||||||
'install_path' => __DIR__ . '/../symfony/polyfill-ctype',
|
'install_path' => __DIR__ . '/../symfony/polyfill-ctype',
|
||||||
'aliases' => array(),
|
'aliases' => array(),
|
||||||
'reference' => '30885182c981ab175d4d034db0f6f469898070ab',
|
|
||||||
'dev_requirement' => false,
|
'dev_requirement' => false,
|
||||||
),
|
),
|
||||||
'symfony/polyfill-mbstring' => array(
|
'symfony/polyfill-mbstring' => array(
|
||||||
'pretty_version' => 'v1.24.0',
|
'pretty_version' => 'v1.24.0',
|
||||||
'version' => '1.24.0.0',
|
'version' => '1.24.0.0',
|
||||||
|
'reference' => '0abb51d2f102e00a4eefcf46ba7fec406d245825',
|
||||||
'type' => 'library',
|
'type' => 'library',
|
||||||
'install_path' => __DIR__ . '/../symfony/polyfill-mbstring',
|
'install_path' => __DIR__ . '/../symfony/polyfill-mbstring',
|
||||||
'aliases' => array(),
|
'aliases' => array(),
|
||||||
'reference' => '0abb51d2f102e00a4eefcf46ba7fec406d245825',
|
|
||||||
'dev_requirement' => false,
|
'dev_requirement' => false,
|
||||||
),
|
),
|
||||||
'symfony/polyfill-php80' => array(
|
'symfony/polyfill-php80' => array(
|
||||||
'pretty_version' => 'v1.24.0',
|
'pretty_version' => 'v1.24.0',
|
||||||
'version' => '1.24.0.0',
|
'version' => '1.24.0.0',
|
||||||
|
'reference' => '57b712b08eddb97c762a8caa32c84e037892d2e9',
|
||||||
'type' => 'library',
|
'type' => 'library',
|
||||||
'install_path' => __DIR__ . '/../symfony/polyfill-php80',
|
'install_path' => __DIR__ . '/../symfony/polyfill-php80',
|
||||||
'aliases' => array(),
|
'aliases' => array(),
|
||||||
'reference' => '57b712b08eddb97c762a8caa32c84e037892d2e9',
|
|
||||||
'dev_requirement' => false,
|
'dev_requirement' => false,
|
||||||
),
|
),
|
||||||
'symfony/translation' => array(
|
'symfony/translation' => array(
|
||||||
'pretty_version' => 'v6.0.5',
|
'pretty_version' => 'v6.0.5',
|
||||||
'version' => '6.0.5.0',
|
'version' => '6.0.5.0',
|
||||||
|
'reference' => 'e69501c71107cc3146b32aaa45f4edd0c3427875',
|
||||||
'type' => 'library',
|
'type' => 'library',
|
||||||
'install_path' => __DIR__ . '/../symfony/translation',
|
'install_path' => __DIR__ . '/../symfony/translation',
|
||||||
'aliases' => array(),
|
'aliases' => array(),
|
||||||
'reference' => 'e69501c71107cc3146b32aaa45f4edd0c3427875',
|
|
||||||
'dev_requirement' => false,
|
'dev_requirement' => false,
|
||||||
),
|
),
|
||||||
'symfony/translation-contracts' => array(
|
'symfony/translation-contracts' => array(
|
||||||
'pretty_version' => 'v3.0.0',
|
'pretty_version' => 'v3.0.0',
|
||||||
'version' => '3.0.0.0',
|
'version' => '3.0.0.0',
|
||||||
|
'reference' => '1b6ea5a7442af5a12dba3dbd6d71034b5b234e77',
|
||||||
'type' => 'library',
|
'type' => 'library',
|
||||||
'install_path' => __DIR__ . '/../symfony/translation-contracts',
|
'install_path' => __DIR__ . '/../symfony/translation-contracts',
|
||||||
'aliases' => array(),
|
'aliases' => array(),
|
||||||
'reference' => '1b6ea5a7442af5a12dba3dbd6d71034b5b234e77',
|
|
||||||
'dev_requirement' => false,
|
'dev_requirement' => false,
|
||||||
),
|
),
|
||||||
'symfony/translation-implementation' => array(
|
'symfony/translation-implementation' => array(
|
||||||
@@ -229,37 +229,37 @@
|
|||||||
'symfony/var-dumper' => array(
|
'symfony/var-dumper' => array(
|
||||||
'pretty_version' => 'v6.0.5',
|
'pretty_version' => 'v6.0.5',
|
||||||
'version' => '6.0.5.0',
|
'version' => '6.0.5.0',
|
||||||
|
'reference' => '60d6a756d5f485df5e6e40b337334848f79f61ce',
|
||||||
'type' => 'library',
|
'type' => 'library',
|
||||||
'install_path' => __DIR__ . '/../symfony/var-dumper',
|
'install_path' => __DIR__ . '/../symfony/var-dumper',
|
||||||
'aliases' => array(),
|
'aliases' => array(),
|
||||||
'reference' => '60d6a756d5f485df5e6e40b337334848f79f61ce',
|
|
||||||
'dev_requirement' => false,
|
'dev_requirement' => false,
|
||||||
),
|
),
|
||||||
'tightenco/collect' => array(
|
'tightenco/collect' => array(
|
||||||
'pretty_version' => 'v8.83.2',
|
'pretty_version' => 'v8.83.2',
|
||||||
'version' => '8.83.2.0',
|
'version' => '8.83.2.0',
|
||||||
|
'reference' => 'd9c66d586ec2d216d8a31283d73f8df1400cc722',
|
||||||
'type' => 'library',
|
'type' => 'library',
|
||||||
'install_path' => __DIR__ . '/../tightenco/collect',
|
'install_path' => __DIR__ . '/../tightenco/collect',
|
||||||
'aliases' => array(),
|
'aliases' => array(),
|
||||||
'reference' => 'd9c66d586ec2d216d8a31283d73f8df1400cc722',
|
|
||||||
'dev_requirement' => false,
|
'dev_requirement' => false,
|
||||||
),
|
),
|
||||||
'twig/twig' => array(
|
'twig/twig' => array(
|
||||||
'pretty_version' => 'v3.3.8',
|
'pretty_version' => 'v3.4.3',
|
||||||
'version' => '3.3.8.0',
|
'version' => '3.4.3.0',
|
||||||
|
'reference' => 'c38fd6b0b7f370c198db91ffd02e23b517426b58',
|
||||||
'type' => 'library',
|
'type' => 'library',
|
||||||
'install_path' => __DIR__ . '/../twig/twig',
|
'install_path' => __DIR__ . '/../twig/twig',
|
||||||
'aliases' => array(),
|
'aliases' => array(),
|
||||||
'reference' => '972d8604a92b7054828b539f2febb0211dd5945c',
|
|
||||||
'dev_requirement' => false,
|
'dev_requirement' => false,
|
||||||
),
|
),
|
||||||
'yubico/u2flib-server' => array(
|
'yubico/u2flib-server' => array(
|
||||||
'pretty_version' => '1.0.2',
|
'pretty_version' => '1.0.2',
|
||||||
'version' => '1.0.2.0',
|
'version' => '1.0.2.0',
|
||||||
|
'reference' => '55d813acf68212ad2cadecde07551600d6971939',
|
||||||
'type' => 'library',
|
'type' => 'library',
|
||||||
'install_path' => __DIR__ . '/../yubico/u2flib-server',
|
'install_path' => __DIR__ . '/../yubico/u2flib-server',
|
||||||
'aliases' => array(),
|
'aliases' => array(),
|
||||||
'reference' => '55d813acf68212ad2cadecde07551600d6971939',
|
|
||||||
'dev_requirement' => false,
|
'dev_requirement' => false,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
/doc/** export-ignore
|
/doc/ export-ignore
|
||||||
/extra/** export-ignore
|
/extra/ export-ignore
|
||||||
/tests export-ignore
|
/tests/ export-ignore
|
||||||
/phpunit.xml.dist export-ignore
|
/phpunit.xml.dist export-ignore
|
||||||
+11
-37
@@ -9,6 +9,9 @@ on:
|
|||||||
env:
|
env:
|
||||||
SYMFONY_PHPUNIT_DISABLE_RESULT_CACHE: 1
|
SYMFONY_PHPUNIT_DISABLE_RESULT_CACHE: 1
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
tests:
|
tests:
|
||||||
name: "PHP ${{ matrix.php-version }}"
|
name: "PHP ${{ matrix.php-version }}"
|
||||||
@@ -25,36 +28,23 @@ jobs:
|
|||||||
- '7.4'
|
- '7.4'
|
||||||
- '8.0'
|
- '8.0'
|
||||||
- '8.1'
|
- '8.1'
|
||||||
composer-options: ['']
|
|
||||||
experimental: [false]
|
experimental: [false]
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: "Checkout code"
|
- name: "Checkout code"
|
||||||
uses: actions/checkout@v2.3.3
|
uses: actions/checkout@v2
|
||||||
|
|
||||||
- name: "Install PHP with extensions"
|
- name: "Install PHP with extensions"
|
||||||
uses: shivammathur/setup-php@2.7.0
|
uses: shivammathur/setup-php@v2
|
||||||
with:
|
with:
|
||||||
coverage: "none"
|
coverage: "none"
|
||||||
php-version: ${{ matrix.php-version }}
|
php-version: ${{ matrix.php-version }}
|
||||||
ini-values: memory_limit=-1
|
ini-values: memory_limit=-1
|
||||||
tools: composer:v2
|
|
||||||
|
|
||||||
- name: "Add PHPUnit matcher"
|
- name: "Add PHPUnit matcher"
|
||||||
run: echo "::add-matcher::${{ runner.tool_cache }}/phpunit.json"
|
run: echo "::add-matcher::${{ runner.tool_cache }}/phpunit.json"
|
||||||
|
|
||||||
- name: "Set composer cache directory"
|
- run: composer install
|
||||||
id: composer-cache
|
|
||||||
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
|
||||||
|
|
||||||
- name: "Cache composer"
|
|
||||||
uses: actions/cache@v2.1.2
|
|
||||||
with:
|
|
||||||
path: ${{ steps.composer-cache.outputs.dir }}
|
|
||||||
key: ${{ runner.os }}-${{ matrix.php-version }}-composer-${{ hashFiles('composer.json') }}
|
|
||||||
restore-keys: ${{ runner.os }}-${{ matrix.php-version }}-composer-
|
|
||||||
|
|
||||||
- run: composer install ${{ matrix.composer-options }}
|
|
||||||
|
|
||||||
- name: "Install PHPUnit"
|
- name: "Install PHPUnit"
|
||||||
run: vendor/bin/simple-phpunit install
|
run: vendor/bin/simple-phpunit install
|
||||||
@@ -92,35 +82,22 @@ jobs:
|
|||||||
- 'extra/markdown-extra'
|
- 'extra/markdown-extra'
|
||||||
- 'extra/string-extra'
|
- 'extra/string-extra'
|
||||||
- 'extra/twig-extra-bundle'
|
- 'extra/twig-extra-bundle'
|
||||||
composer-options: ['']
|
|
||||||
experimental: [false]
|
experimental: [false]
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: "Checkout code"
|
- name: "Checkout code"
|
||||||
uses: actions/checkout@v2.3.3
|
uses: actions/checkout@v2
|
||||||
|
|
||||||
- name: "Install PHP with extensions"
|
- name: "Install PHP with extensions"
|
||||||
uses: shivammathur/setup-php@2.7.0
|
uses: shivammathur/setup-php@v2
|
||||||
with:
|
with:
|
||||||
coverage: "none"
|
coverage: "none"
|
||||||
php-version: ${{ matrix.php-version }}
|
php-version: ${{ matrix.php-version }}
|
||||||
ini-values: memory_limit=-1
|
ini-values: memory_limit=-1
|
||||||
tools: composer:v2
|
|
||||||
|
|
||||||
- name: "Add PHPUnit matcher"
|
- name: "Add PHPUnit matcher"
|
||||||
run: echo "::add-matcher::${{ runner.tool_cache }}/phpunit.json"
|
run: echo "::add-matcher::${{ runner.tool_cache }}/phpunit.json"
|
||||||
|
|
||||||
- name: "Set composer cache directory"
|
|
||||||
id: composer-cache
|
|
||||||
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
|
||||||
|
|
||||||
- name: "Cache composer"
|
|
||||||
uses: actions/cache@v2.1.2
|
|
||||||
with:
|
|
||||||
path: ${{ steps.composer-cache.outputs.dir }}
|
|
||||||
key: ${{ runner.os }}-${{ matrix.php-version }}-${{ matrix.extension }}-${{ hashFiles('composer.json') }}
|
|
||||||
restore-keys: ${{ runner.os }}-${{ matrix.php-version }}-${{ matrix.extension }}-
|
|
||||||
|
|
||||||
- run: composer install
|
- run: composer install
|
||||||
|
|
||||||
- name: "Install PHPUnit"
|
- name: "Install PHPUnit"
|
||||||
@@ -129,10 +106,6 @@ jobs:
|
|||||||
- name: "PHPUnit version"
|
- name: "PHPUnit version"
|
||||||
run: vendor/bin/simple-phpunit --version
|
run: vendor/bin/simple-phpunit --version
|
||||||
|
|
||||||
- if: matrix.extension == 'extra/markdown-extra' && matrix.php-version == '8.0'
|
|
||||||
working-directory: ${{ matrix.extension}}
|
|
||||||
run: composer config platform.php 7.4.99
|
|
||||||
|
|
||||||
- name: "Composer install"
|
- name: "Composer install"
|
||||||
working-directory: ${{ matrix.extension}}
|
working-directory: ${{ matrix.extension}}
|
||||||
run: composer install
|
run: composer install
|
||||||
@@ -140,6 +113,7 @@ jobs:
|
|||||||
- name: "Run tests"
|
- name: "Run tests"
|
||||||
working-directory: ${{ matrix.extension}}
|
working-directory: ${{ matrix.extension}}
|
||||||
run: ../../vendor/bin/simple-phpunit
|
run: ../../vendor/bin/simple-phpunit
|
||||||
|
|
||||||
#
|
#
|
||||||
# Drupal does not support Twig 3 now!
|
# Drupal does not support Twig 3 now!
|
||||||
#
|
#
|
||||||
@@ -160,10 +134,10 @@ jobs:
|
|||||||
#
|
#
|
||||||
# steps:
|
# steps:
|
||||||
# - name: "Checkout code"
|
# - name: "Checkout code"
|
||||||
# uses: actions/checkout@v2.3.3
|
# uses: actions/checkout@v2
|
||||||
#
|
#
|
||||||
# - name: "Install PHP with extensions"
|
# - name: "Install PHP with extensions"
|
||||||
# uses: shivammathur/setup-php@2.7.0
|
# uses: shivammathur/setup-php@2
|
||||||
# with:
|
# with:
|
||||||
# coverage: "none"
|
# coverage: "none"
|
||||||
# extensions: "gd, pdo_sqlite"
|
# extensions: "gd, pdo_sqlite"
|
||||||
|
|||||||
@@ -4,8 +4,12 @@ on:
|
|||||||
pull_request:
|
pull_request:
|
||||||
push:
|
push:
|
||||||
branches:
|
branches:
|
||||||
|
- '2.x'
|
||||||
- '3.x'
|
- '3.x'
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build:
|
build:
|
||||||
name: "Build"
|
name: "Build"
|
||||||
@@ -16,32 +20,32 @@ jobs:
|
|||||||
- name: "Checkout code"
|
- name: "Checkout code"
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v2
|
||||||
|
|
||||||
- name: "Set up Python 3.7"
|
- name: "Set-up PHP"
|
||||||
uses: actions/setup-python@v1
|
uses: shivammathur/setup-php@v2
|
||||||
with:
|
with:
|
||||||
python-version: '3.7' # Semantic version range syntax or exact version of a Python version
|
php-version: 8.1
|
||||||
|
coverage: none
|
||||||
|
tools: "composer:v2"
|
||||||
|
|
||||||
- name: "Display Python version"
|
- name: Get composer cache directory
|
||||||
run: python -c "import sys; print(sys.version)"
|
id: composercache
|
||||||
|
working-directory: doc/_build
|
||||||
|
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
||||||
|
|
||||||
- name: "Install Sphinx dependencies"
|
- name: Cache dependencies
|
||||||
run: sudo apt-get install python-dev build-essential
|
|
||||||
|
|
||||||
- name: "Cache pip"
|
|
||||||
uses: actions/cache@v2
|
uses: actions/cache@v2
|
||||||
with:
|
with:
|
||||||
path: ~/.cache/pip
|
path: ${{ steps.composercache.outputs.dir }}
|
||||||
key: ${{ runner.os }}-pip-${{ hashFiles('_build/.requirements.txt') }}
|
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
|
||||||
restore-keys: |
|
restore-keys: ${{ runner.os }}-composer-
|
||||||
${{ runner.os }}-pip-
|
|
||||||
|
|
||||||
- name: "Install Sphinx + requirements via pip"
|
- name: "Install dependencies"
|
||||||
working-directory: "doc"
|
working-directory: doc/_build
|
||||||
run: pip install -r _build/.requirements.txt
|
run: composer install --prefer-dist --no-progress
|
||||||
|
|
||||||
- name: "Build documentation"
|
- name: "Build the docs"
|
||||||
working-directory: "doc"
|
working-directory: doc/_build
|
||||||
run: make -C _build SPHINXOPTS="-nqW -j auto" html
|
run: php build.php --disable-cache
|
||||||
|
|
||||||
doctor-rst:
|
doctor-rst:
|
||||||
name: "DOCtor-RST"
|
name: "DOCtor-RST"
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
/doc/_build/vendor
|
||||||
|
/doc/_build/output
|
||||||
/composer.lock
|
/composer.lock
|
||||||
/phpunit.xml
|
/phpunit.xml
|
||||||
/vendor
|
/vendor
|
||||||
|
|||||||
+30
@@ -1,6 +1,36 @@
|
|||||||
|
# 3.4.3 (2022-09-28)
|
||||||
|
|
||||||
|
* Fix a security issue on filesystem loader (possibility to load a template outside a configured directory)
|
||||||
|
|
||||||
|
# 3.4.2 (2022-08-12)
|
||||||
|
|
||||||
|
* Allow inherited magic method to still run with calling class
|
||||||
|
* Fix CallExpression::reflectCallable() throwing TypeError
|
||||||
|
* Fix typo in naming (currency_code)
|
||||||
|
|
||||||
|
# 3.4.1 (2022-05-17)
|
||||||
|
|
||||||
|
* Fix optimizing non-public named closures
|
||||||
|
|
||||||
|
# 3.4.0 (2022-05-22)
|
||||||
|
|
||||||
|
* Add support for named closures
|
||||||
|
|
||||||
|
# 3.3.10 (2022-04-06)
|
||||||
|
|
||||||
|
* Enable bytecode invalidation when auto_reload is enabled
|
||||||
|
|
||||||
|
# 3.3.9 (2022-03-25)
|
||||||
|
|
||||||
|
* Fix custom escapers when using multiple Twig environments
|
||||||
|
* Add support for "constant('class', object)"
|
||||||
|
* Do not reuse internally generated variable names during parsing
|
||||||
|
|
||||||
# 3.3.8 (2022-02-04)
|
# 3.3.8 (2022-02-04)
|
||||||
|
|
||||||
* Fix a security issue when in a sandbox: the `sort` filter must require a Closure for the `arrow` parameter
|
* Fix a security issue when in a sandbox: the `sort` filter must require a Closure for the `arrow` parameter
|
||||||
|
* Fix deprecation notice on `round`
|
||||||
|
* Fix call to deprecated `convertToHtml` method
|
||||||
|
|
||||||
# 3.3.7 (2022-01-03)
|
# 3.3.7 (2022-01-03)
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -44,7 +44,7 @@
|
|||||||
},
|
},
|
||||||
"extra": {
|
"extra": {
|
||||||
"branch-alias": {
|
"branch-alias": {
|
||||||
"dev-master": "3.3-dev"
|
"dev-master": "3.4-dev"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+5
-5
@@ -38,11 +38,11 @@ use Twig\TokenParser\TokenParserInterface;
|
|||||||
*/
|
*/
|
||||||
class Environment
|
class Environment
|
||||||
{
|
{
|
||||||
public const VERSION = '3.3.8';
|
public const VERSION = '3.4.3';
|
||||||
public const VERSION_ID = 30308;
|
public const VERSION_ID = 30403;
|
||||||
public const MAJOR_VERSION = 3;
|
public const MAJOR_VERSION = 3;
|
||||||
public const MINOR_VERSION = 3;
|
public const MINOR_VERSION = 4;
|
||||||
public const RELEASE_VERSION = 8;
|
public const RELEASE_VERSION = 3;
|
||||||
public const EXTRA_VERSION = '';
|
public const EXTRA_VERSION = '';
|
||||||
|
|
||||||
private $charset;
|
private $charset;
|
||||||
@@ -228,7 +228,7 @@ class Environment
|
|||||||
{
|
{
|
||||||
if (\is_string($cache)) {
|
if (\is_string($cache)) {
|
||||||
$this->originalCache = $cache;
|
$this->originalCache = $cache;
|
||||||
$this->cache = new FilesystemCache($cache);
|
$this->cache = new FilesystemCache($cache, $this->autoReload ? FilesystemCache::FORCE_BYTECODE_INVALIDATION : 0);
|
||||||
} elseif (false === $cache) {
|
} elseif (false === $cache) {
|
||||||
$this->originalCache = $cache;
|
$this->originalCache = $cache;
|
||||||
$this->cache = new NullCache();
|
$this->cache = new NullCache();
|
||||||
|
|||||||
@@ -485,7 +485,7 @@ class ExpressionParser
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
throw new SyntaxError('Expected name or number.', $lineno, $stream->getSourceContext());
|
throw new SyntaxError(sprintf('Expected name or number, got value "%s" of type %s.', $token->getValue(), Token::typeToEnglish($token->getType())), $lineno, $stream->getSourceContext());
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($node instanceof NameExpression && null !== $this->parser->getImportedSymbol('template', $node->getAttribute('name'))) {
|
if ($node instanceof NameExpression && null !== $this->parser->getImportedSymbol('template', $node->getAttribute('name'))) {
|
||||||
|
|||||||
@@ -1359,6 +1359,10 @@ function twig_source(Environment $env, $name, $ignoreMissing = false)
|
|||||||
function twig_constant($constant, $object = null)
|
function twig_constant($constant, $object = null)
|
||||||
{
|
{
|
||||||
if (null !== $object) {
|
if (null !== $object) {
|
||||||
|
if ('class' === $constant) {
|
||||||
|
return \get_class($object);
|
||||||
|
}
|
||||||
|
|
||||||
$constant = \get_class($object).'::'.$constant;
|
$constant = \get_class($object).'::'.$constant;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1376,6 +1380,10 @@ function twig_constant($constant, $object = null)
|
|||||||
function twig_constant_is_defined($constant, $object = null)
|
function twig_constant_is_defined($constant, $object = null)
|
||||||
{
|
{
|
||||||
if (null !== $object) {
|
if (null !== $object) {
|
||||||
|
if ('class' === $constant) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
$constant = \get_class($object).'::'.$constant;
|
$constant = \get_class($object).'::'.$constant;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -387,13 +387,8 @@ function twig_escape_filter(Environment $env, $string, $strategy = 'html', $char
|
|||||||
return rawurlencode($string);
|
return rawurlencode($string);
|
||||||
|
|
||||||
default:
|
default:
|
||||||
static $escapers;
|
$escapers = $env->getExtension(EscaperExtension::class)->getEscapers();
|
||||||
|
if (array_key_exists($strategy, $escapers)) {
|
||||||
if (null === $escapers) {
|
|
||||||
$escapers = $env->getExtension(EscaperExtension::class)->getEscapers();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isset($escapers[$strategy])) {
|
|
||||||
return $escapers[$strategy]($env, $string, $charset);
|
return $escapers[$strategy]($env, $string, $charset);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -91,11 +91,11 @@ final class SandboxExtension extends AbstractExtension
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public function checkPropertyAllowed($obj, $method, int $lineno = -1, Source $source = null): void
|
public function checkPropertyAllowed($obj, $property, int $lineno = -1, Source $source = null): void
|
||||||
{
|
{
|
||||||
if ($this->isSandboxed()) {
|
if ($this->isSandboxed()) {
|
||||||
try {
|
try {
|
||||||
$this->policy->checkPropertyAllowed($obj, $method);
|
$this->policy->checkPropertyAllowed($obj, $property);
|
||||||
} catch (SecurityNotAllowedPropertyError $e) {
|
} catch (SecurityNotAllowedPropertyError $e) {
|
||||||
$e->setSourceContext($source);
|
$e->setSourceContext($source);
|
||||||
$e->setTemplateLine($lineno);
|
$e->setTemplateLine($lineno);
|
||||||
|
|||||||
@@ -183,9 +183,9 @@ class FilesystemLoader implements LoaderInterface
|
|||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
$this->validateName($name);
|
|
||||||
|
|
||||||
list($namespace, $shortname) = $this->parseName($name);
|
list($namespace, $shortname) = $this->parseName($name);
|
||||||
|
|
||||||
|
$this->validateName($shortname);
|
||||||
} catch (LoaderError $e) {
|
} catch (LoaderError $e) {
|
||||||
if (!$throw) {
|
if (!$throw) {
|
||||||
return null;
|
return null;
|
||||||
|
|||||||
@@ -24,19 +24,20 @@ abstract class CallExpression extends AbstractExpression
|
|||||||
{
|
{
|
||||||
$callable = $this->getAttribute('callable');
|
$callable = $this->getAttribute('callable');
|
||||||
|
|
||||||
$closingParenthesis = false;
|
|
||||||
$isArray = false;
|
|
||||||
if (\is_string($callable) && false === strpos($callable, '::')) {
|
if (\is_string($callable) && false === strpos($callable, '::')) {
|
||||||
$compiler->raw($callable);
|
$compiler->raw($callable);
|
||||||
} else {
|
} else {
|
||||||
list($r, $callable) = $this->reflectCallable($callable);
|
[$r, $callable] = $this->reflectCallable($callable);
|
||||||
if ($r instanceof \ReflectionMethod && \is_string($callable[0])) {
|
|
||||||
if ($r->isStatic()) {
|
if (\is_string($callable)) {
|
||||||
|
$compiler->raw($callable);
|
||||||
|
} elseif (\is_array($callable) && \is_string($callable[0])) {
|
||||||
|
if (!$r instanceof \ReflectionMethod || $r->isStatic()) {
|
||||||
$compiler->raw(sprintf('%s::%s', $callable[0], $callable[1]));
|
$compiler->raw(sprintf('%s::%s', $callable[0], $callable[1]));
|
||||||
} else {
|
} else {
|
||||||
$compiler->raw(sprintf('$this->env->getRuntime(\'%s\')->%s', $callable[0], $callable[1]));
|
$compiler->raw(sprintf('$this->env->getRuntime(\'%s\')->%s', $callable[0], $callable[1]));
|
||||||
}
|
}
|
||||||
} elseif ($r instanceof \ReflectionMethod && $callable[0] instanceof ExtensionInterface) {
|
} elseif (\is_array($callable) && $callable[0] instanceof ExtensionInterface) {
|
||||||
$class = \get_class($callable[0]);
|
$class = \get_class($callable[0]);
|
||||||
if (!$compiler->getEnvironment()->hasExtension($class)) {
|
if (!$compiler->getEnvironment()->hasExtension($class)) {
|
||||||
// Compile a non-optimized call to trigger a \Twig\Error\RuntimeError, which cannot be a compile-time error
|
// Compile a non-optimized call to trigger a \Twig\Error\RuntimeError, which cannot be a compile-time error
|
||||||
@@ -47,17 +48,11 @@ abstract class CallExpression extends AbstractExpression
|
|||||||
|
|
||||||
$compiler->raw(sprintf('->%s', $callable[1]));
|
$compiler->raw(sprintf('->%s', $callable[1]));
|
||||||
} else {
|
} else {
|
||||||
$closingParenthesis = true;
|
$compiler->raw(sprintf('$this->env->get%s(\'%s\')->getCallable()', ucfirst($this->getAttribute('type')), $this->getAttribute('name')));
|
||||||
$isArray = true;
|
|
||||||
$compiler->raw(sprintf('call_user_func_array($this->env->get%s(\'%s\')->getCallable(), ', ucfirst($this->getAttribute('type')), $this->getAttribute('name')));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->compileArguments($compiler, $isArray);
|
$this->compileArguments($compiler);
|
||||||
|
|
||||||
if ($closingParenthesis) {
|
|
||||||
$compiler->raw(')');
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function compileArguments(Compiler $compiler, $isArray = false): void
|
protected function compileArguments(Compiler $compiler, $isArray = false): void
|
||||||
@@ -244,10 +239,7 @@ abstract class CallExpression extends AbstractExpression
|
|||||||
|
|
||||||
private function getCallableParameters($callable, bool $isVariadic): array
|
private function getCallableParameters($callable, bool $isVariadic): array
|
||||||
{
|
{
|
||||||
list($r) = $this->reflectCallable($callable);
|
[$r, , $callableName] = $this->reflectCallable($callable);
|
||||||
if (null === $r) {
|
|
||||||
return [[], false];
|
|
||||||
}
|
|
||||||
|
|
||||||
$parameters = $r->getParameters();
|
$parameters = $r->getParameters();
|
||||||
if ($this->hasNode('node')) {
|
if ($this->hasNode('node')) {
|
||||||
@@ -274,11 +266,6 @@ abstract class CallExpression extends AbstractExpression
|
|||||||
array_pop($parameters);
|
array_pop($parameters);
|
||||||
$isPhpVariadic = true;
|
$isPhpVariadic = true;
|
||||||
} else {
|
} else {
|
||||||
$callableName = $r->name;
|
|
||||||
if ($r instanceof \ReflectionMethod) {
|
|
||||||
$callableName = $r->getDeclaringClass()->name.'::'.$callableName;
|
|
||||||
}
|
|
||||||
|
|
||||||
throw new \LogicException(sprintf('The last parameter of "%s" for %s "%s" must be an array with default value, eg. "array $arg = []".', $callableName, $this->getAttribute('type'), $this->getAttribute('name')));
|
throw new \LogicException(sprintf('The last parameter of "%s" for %s "%s" must be an array with default value, eg. "array $arg = []".', $callableName, $this->getAttribute('type'), $this->getAttribute('name')));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -292,29 +279,41 @@ abstract class CallExpression extends AbstractExpression
|
|||||||
return $this->reflector;
|
return $this->reflector;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (\is_array($callable)) {
|
if (\is_string($callable) && false !== $pos = strpos($callable, '::')) {
|
||||||
if (!method_exists($callable[0], $callable[1])) {
|
$callable = [substr($callable, 0, $pos), substr($callable, 2 + $pos)];
|
||||||
// __call()
|
|
||||||
return [null, []];
|
|
||||||
}
|
|
||||||
$r = new \ReflectionMethod($callable[0], $callable[1]);
|
|
||||||
} elseif (\is_object($callable) && !$callable instanceof \Closure) {
|
|
||||||
$r = new \ReflectionObject($callable);
|
|
||||||
$r = $r->getMethod('__invoke');
|
|
||||||
$callable = [$callable, '__invoke'];
|
|
||||||
} elseif (\is_string($callable) && false !== $pos = strpos($callable, '::')) {
|
|
||||||
$class = substr($callable, 0, $pos);
|
|
||||||
$method = substr($callable, $pos + 2);
|
|
||||||
if (!method_exists($class, $method)) {
|
|
||||||
// __staticCall()
|
|
||||||
return [null, []];
|
|
||||||
}
|
|
||||||
$r = new \ReflectionMethod($callable);
|
|
||||||
$callable = [$class, $method];
|
|
||||||
} else {
|
|
||||||
$r = new \ReflectionFunction($callable);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return $this->reflector = [$r, $callable];
|
if (\is_array($callable) && method_exists($callable[0], $callable[1])) {
|
||||||
|
$r = new \ReflectionMethod($callable[0], $callable[1]);
|
||||||
|
|
||||||
|
return $this->reflector = [$r, $callable, $r->class.'::'.$r->name];
|
||||||
|
}
|
||||||
|
|
||||||
|
$checkVisibility = $callable instanceof \Closure;
|
||||||
|
try {
|
||||||
|
$closure = \Closure::fromCallable($callable);
|
||||||
|
} catch (\TypeError $e) {
|
||||||
|
throw new \LogicException(sprintf('Callback for %s "%s" is not callable in the current scope.', $this->getAttribute('type'), $this->getAttribute('name')), 0, $e);
|
||||||
|
}
|
||||||
|
$r = new \ReflectionFunction($closure);
|
||||||
|
|
||||||
|
if (false !== strpos($r->name, '{closure}')) {
|
||||||
|
return $this->reflector = [$r, $callable, 'Closure'];
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($object = $r->getClosureThis()) {
|
||||||
|
$callable = [$object, $r->name];
|
||||||
|
$callableName = (\function_exists('get_debug_type') ? get_debug_type($object) : \get_class($object)).'::'.$r->name;
|
||||||
|
} elseif ($class = $r->getClosureScopeClass()) {
|
||||||
|
$callableName = (\is_array($callable) ? $callable[0] : $class->name).'::'.$r->name;
|
||||||
|
} else {
|
||||||
|
$callable = $callableName = $r->name;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($checkVisibility && \is_array($callable) && method_exists(...$callable) && !(new \ReflectionMethod(...$callable))->isPublic()) {
|
||||||
|
$callable = $r->getClosure();
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->reflector = [$r, $callable, $callableName];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+1
-2
@@ -58,7 +58,7 @@ class Parser
|
|||||||
public function parse(TokenStream $stream, $test = null, bool $dropNeedle = false): ModuleNode
|
public function parse(TokenStream $stream, $test = null, bool $dropNeedle = false): ModuleNode
|
||||||
{
|
{
|
||||||
$vars = get_object_vars($this);
|
$vars = get_object_vars($this);
|
||||||
unset($vars['stack'], $vars['env'], $vars['handlers'], $vars['visitors'], $vars['expressionParser'], $vars['reservedMacroNames']);
|
unset($vars['stack'], $vars['env'], $vars['handlers'], $vars['visitors'], $vars['expressionParser'], $vars['reservedMacroNames'], $vars['varNameSalt']);
|
||||||
$this->stack[] = $vars;
|
$this->stack[] = $vars;
|
||||||
|
|
||||||
// node visitors
|
// node visitors
|
||||||
@@ -78,7 +78,6 @@ class Parser
|
|||||||
$this->blockStack = [];
|
$this->blockStack = [];
|
||||||
$this->importedSymbols = [[]];
|
$this->importedSymbols = [[]];
|
||||||
$this->embeddedTemplates = [];
|
$this->embeddedTemplates = [];
|
||||||
$this->varNameSalt = 0;
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
$body = $this->subparse($test, $dropNeedle);
|
$body = $this->subparse($test, $dropNeedle);
|
||||||
|
|||||||
@@ -19,17 +19,27 @@ namespace Twig\Sandbox;
|
|||||||
interface SecurityPolicyInterface
|
interface SecurityPolicyInterface
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
|
* @param string[] $tags
|
||||||
|
* @param string[] $filters
|
||||||
|
* @param string[] $functions
|
||||||
|
*
|
||||||
* @throws SecurityError
|
* @throws SecurityError
|
||||||
*/
|
*/
|
||||||
public function checkSecurity($tags, $filters, $functions): void;
|
public function checkSecurity($tags, $filters, $functions): void;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* @param object $obj
|
||||||
|
* @param string $method
|
||||||
|
*
|
||||||
* @throws SecurityNotAllowedMethodError
|
* @throws SecurityNotAllowedMethodError
|
||||||
*/
|
*/
|
||||||
public function checkMethodAllowed($obj, $method): void;
|
public function checkMethodAllowed($obj, $method): void;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* @param object $obj
|
||||||
|
* @param string $property
|
||||||
|
*
|
||||||
* @throws SecurityNotAllowedPropertyError
|
* @throws SecurityNotAllowedPropertyError
|
||||||
*/
|
*/
|
||||||
public function checkPropertyAllowed($obj, $method): void;
|
public function checkPropertyAllowed($obj, $property): void;
|
||||||
}
|
}
|
||||||
Loaded 100 of 154 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user