mirror of
https://github.com/serghey-rodin/vesta.git
synced 2025-08-21 05:44:07 -07:00
Compare commits
304 commits
Author | SHA1 | Date | |
---|---|---|---|
|
873693b2ed |
||
|
2a91899846 |
||
|
2a6852b805 |
||
|
f978badd95 |
||
|
73d60c4591 |
||
|
93f4b6c182 |
||
|
343a877f06 | ||
|
1d7978ae2c | ||
|
762d7586e0 | ||
|
564af6aa2d | ||
|
8f6ac637d8 | ||
|
e6df9a65a2 |
||
|
ffd180b4f7 |
||
|
371cc02eda |
||
|
94d60267a8 |
||
|
c053bb4c1c | ||
|
4c78719897 | ||
|
765a67a6eb |
||
|
99cb78ce81 |
||
|
56c66fdef0 | ||
|
a2ebd2efdc |
||
|
c28f745069 | ||
|
1a37b33eb2 |
||
|
ee48d9a406 |
||
|
b4dab88694 |
||
|
51e468c22f |
||
|
7c4e9bad7d |
||
|
0682f7b10c |
||
|
1ce9ec299c | ||
|
e527827174 |
||
|
6714e1d35d | ||
|
d386c3598c |
||
|
39561c32c1 |
||
|
8bc587db41 |
||
|
da853d78cb |
||
|
956bc6697c |
||
|
8efaf5fe93 | ||
|
0b95fc283e |
||
|
969dc68561 |
||
|
653348242f |
||
|
64ddc9cfe8 |
||
|
b7bdfd2d87 | ||
|
0420ecc0e6 | ||
|
22f3dd11e2 |
||
|
df5962fc2e | ||
|
c863a592a5 | ||
|
067d43b418 | ||
|
2f3041bf05 |
||
|
5dc474846b |
||
|
4871bd1326 | ||
|
7ebcab3cbf | ||
|
cae9a1550d | ||
|
7d317c4fe8 |
||
|
84bc07d8f1 |
||
|
97f558465e |
||
|
f8936c6847 |
||
|
1dee07c3f1 |
||
|
2e7083668c | ||
|
bf65cae7f9 |
||
|
c7bef6bf33 |
||
|
bb4fc4c47d |
||
|
e2e3d1d113 |
||
|
bdf140d3c9 |
||
|
f53183cb7f |
||
|
1c46ce5cf7 |
||
|
89b3328a0d |
||
|
0c656b0c20 | ||
|
c308a42d2f | ||
|
5b2c180d86 | ||
|
eb5a045252 |
||
|
09e87f4af6 | ||
|
8ec606d5f6 | ||
|
354bacf1f3 | ||
|
c5612c827a | ||
|
a60b158049 |
||
|
790cd631a6 | ||
|
32a6be9adf |
||
|
51a95b9d72 |
||
|
62d9652437 | ||
|
8f8dbd5b25 |
||
|
60f75bc739 |
||
|
fc2403dc2f |
||
|
ddee8801a4 |
||
|
52a5425a94 |
||
|
85ee500306 | ||
|
85fb81f6d2 | ||
|
f012520f0e | ||
|
96124cca25 | ||
|
185f70651e | ||
|
612b8cbfc0 | ||
|
d67ea881fc |
||
|
604f1948e4 |
||
|
e66ec829f7 | ||
|
334ee00d25 |
||
|
859e65647f | ||
|
387e6c8e0a | ||
|
ec355d8137 | ||
|
b543c0c2f3 | ||
|
ed94787cd0 |
||
|
5f86fab58b | ||
|
335fd746db | ||
|
43a6fc23ef | ||
|
57401060c8 | ||
|
b539119ead | ||
|
2c79b0874b | ||
|
fabe2f1ec7 | ||
|
06a97a5551 |
||
|
b0bcc43154 | ||
|
b8083e008d | ||
|
539a926026 | ||
|
1738423829 | ||
|
474257fd72 | ||
|
8f10e5f94d | ||
|
6e4c59ab0d | ||
|
781933ea48 | ||
|
a7c5714d85 |
||
|
1ab9e12f2c | ||
|
0bb63b01c4 | ||
|
be834ddd17 | ||
|
93e9fe9f99 | ||
|
08513755b2 | ||
|
8e97eb2dad | ||
|
926376295a | ||
|
718e458fc9 | ||
|
dbbbe94d8f | ||
|
bfc94fbd10 | ||
|
fb9d3fddb0 |
||
|
5f0856f1c4 |
||
|
70748e302e |
||
|
7444a6b0a9 |
||
|
638ef7de51 |
||
|
3431bbbd8f |
||
|
f832525f65 |
||
|
350c6fc9c9 |
||
|
2ecb3a10ac | ||
|
7540c9881d | ||
|
b7cf917141 | ||
|
2a12fec5ea | ||
|
4306a4fb4f | ||
|
91e7d9ff4a | ||
|
4a9bfc94ad |
||
|
c520eb283a |
||
|
095e2e9e4a | ||
|
bfe31a82df | ||
|
67f2ad0c99 |
||
|
b6e7c18e29 |
||
|
c12c21ec8b | ||
|
4c6dd0d719 |
||
|
382732f87f | ||
|
1308b508ff | ||
|
4feb62c4c8 | ||
|
404b405656 | ||
|
1ed1505169 | ||
|
aab2b4d31d | ||
|
3f5246b144 | ||
|
1ba4238b84 | ||
|
47dab17c48 | ||
|
6b7dc97731 | ||
|
960e3a20df | ||
|
7a6dc72f29 | ||
|
402a69049c |
||
|
450fa0d7d0 |
||
|
6225820910 |
||
|
2fc0dc34fe |
||
|
6fdfef4e88 |
||
|
df9377519e |
||
|
e01adf78f8 |
||
|
a6884ad898 |
||
|
3a0bcfea66 |
||
|
cc2d60bf05 |
||
|
b4ec733dcc |
||
|
14a9fa4f8b |
||
|
0403b0c4a3 |
||
|
b1ca176d44 |
||
|
d0e9395c9f |
||
|
4affb916ef |
||
|
9aeef63ff4 |
||
|
a6cb9df163 |
||
|
d20a682c1d |
||
|
6aaf189547 |
||
|
cc97aeef02 |
||
|
10a59574d7 |
||
|
9f26aa785e |
||
|
29bdd18e95 |
||
|
88e54a8671 |
||
|
f3872ada4a |
||
|
06ff183f21 |
||
|
b0f65509e0 |
||
|
78133f35aa |
||
|
350a19edb1 |
||
|
98fd0827be |
||
|
a8ff57047c |
||
|
9d2c0ca64c |
||
|
55e58f5cce |
||
|
ffe3e1bbd9 |
||
|
2a2cfee433 |
||
|
76072b7398 |
||
|
b378cf18ed |
||
|
d68ac3993c |
||
|
0cdb05bb03 |
||
|
cde1cd6651 |
||
|
0fcbadda78 |
||
|
d97adaeb6a |
||
|
6b3cd17202 |
||
|
c582ff3766 |
||
|
374d6c6b19 |
||
|
1c801b2d60 |
||
|
1ff5208968 |
||
|
b123fa2178 |
||
|
393c81d46c |
||
|
93eec18723 |
||
|
45b13a2105 |
||
|
f41ad21e1e |
||
|
8a60b257a2 |
||
|
ea1e22613e |
||
|
bbe06d10b6 |
||
|
3c31647926 |
||
|
10bedc72f1 |
||
|
102ecb2c32 |
||
|
d0a21b4859 |
||
|
5f92fc5380 |
||
|
a4e4542a6d |
||
|
c6b79fe5da |
||
|
04bf5fc042 |
||
|
bba7400b8a |
||
|
fb7f6254fa |
||
|
1b85b7b313 |
||
|
d7de756d70 |
||
|
2dc4adb08e | ||
|
246ea6888d | ||
|
8d5c2e2e8e |
||
|
af94a23962 |
||
|
ce5d209c13 |
||
|
ef0f62a59b |
||
|
311827c4b3 |
||
|
f74301b19f |
||
|
ccea621787 |
||
|
c171d5e68e |
||
|
3b96845f8a |
||
|
e0ebf729f3 |
||
|
83d0b9ed90 |
||
|
d9e9c64369 |
||
|
8d9e349b23 |
||
|
a9e46047e9 |
||
|
c377e19df8 | ||
|
b6cadcd992 | ||
|
37fc05081b | ||
|
cfc46bb2a9 |
||
|
cc8a3e0c58 |
||
|
ce417f65a2 |
||
|
7177dbb4e7 |
||
|
e4710ae715 |
||
|
e75b62efad |
||
|
58807feb80 |
||
|
c915bff32e |
||
|
00e1f46276 |
||
|
c9844805a4 |
||
|
c3c4de43d6 |
||
|
a5712542d7 | ||
|
dae2eb0854 | ||
|
993796fcf2 | ||
|
99abd5ed05 |
||
|
931fb5beeb |
||
|
949c011321 |
||
|
9d2ca4b592 |
||
|
f0782d1f82 |
||
|
d0ca10a5d3 |
||
|
ec8631b2d2 |
||
|
9947b17144 | ||
|
6645586fb2 |
||
|
270d29ff06 | ||
|
52c32962a8 | ||
|
ae328a0935 | ||
|
84ef0a118f |
||
|
e82ad200b7 |
||
|
a9ddd4159c |
||
|
6d6e3f3723 |
||
|
e0a3439415 | ||
|
7f833efcde |
||
|
3881e36967 |
||
|
9f671ccf90 |
||
|
be300fd82e |
||
|
5852424830 |
||
|
bdb0959e1b |
||
|
d8f372d99c |
||
|
3b58b4a8b7 |
||
|
c79785c790 |
||
|
13e2f473e2 |
||
|
f8734d15e9 |
||
|
7c9afbca32 |
||
|
1dae236693 |
||
|
6689e5c839 |
||
|
fb13db40ce |
||
|
57429a3203 |
||
|
b1e0e6a2a5 |
||
|
8d48fca193 |
||
|
041fd2914f |
||
|
95a345f2dc | ||
|
cb67641bed | ||
|
965e23f30c | ||
|
dccd29f455 | ||
|
847e4f223b |
||
|
33ba05c35b |
||
|
979d6e7083 |
1182 changed files with 63658 additions and 10138 deletions
3
.gitignore
vendored
3
.gitignore
vendored
|
@ -4,3 +4,6 @@
|
|||
*.gz
|
||||
.vscode
|
||||
.DS_Store
|
||||
src/react/node_modules
|
||||
src/react/build
|
||||
/.idea
|
|
@ -1,6 +1,8 @@
|
|||
[Vesta Control Panel](http://vestacp.com/)
|
||||
==================================================
|
||||
|
||||
Vesta is back under active development as of 25 February 2024. We are commited to open source, and will engage with the community to identify the new roadmap for Vesta. Stay tuned!
|
||||
|
||||
[](https://gitter.im/vesta-cp/Lobby?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
|
||||
|
||||
* Vesta is an open source hosting control panel.
|
||||
|
@ -16,7 +18,7 @@ ssh root@your.server
|
|||
|
||||
Download the installation script, and run it:
|
||||
```bash
|
||||
curl http://vestacp.com/pub/vst-install.sh | bash
|
||||
curl https://vestacp.com/pub/vst-install.sh | bash
|
||||
```
|
||||
|
||||
How to install (3 step)
|
||||
|
@ -29,7 +31,7 @@ ssh root@your.server
|
|||
|
||||
Download the installation script:
|
||||
```bash
|
||||
curl -O http://vestacp.com/pub/vst-install.sh
|
||||
curl -O https://vestacp.com/pub/vst-install.sh
|
||||
```
|
||||
Then run it:
|
||||
```bash
|
||||
|
@ -38,5 +40,5 @@ bash vst-install.sh
|
|||
|
||||
License
|
||||
----------------------------
|
||||
Vesta is licensed under [GPL v3 ](https://github.com/serghey-rodin/vesta/blob/master/LICENSE) license
|
||||
Vesta is licensed under [GPL v3 ](https://github.com/outroll/vesta/blob/master/LICENSE) license
|
||||
|
||||
|
|
5
SECURITY.md
Normal file
5
SECURITY.md
Normal file
|
@ -0,0 +1,5 @@
|
|||
# Security Policy
|
||||
|
||||
## Reporting a Vulnerability
|
||||
|
||||
Please report security issues to dev@vestacp.com
|
|
@ -27,7 +27,7 @@ source $VESTA/conf/vesta.conf
|
|||
|
||||
# Checking arg number
|
||||
check_args '2' "$#" 'MODULE LICENSE'
|
||||
|
||||
is_user_format_valid "$license" "license"
|
||||
|
||||
#----------------------------------------------------------#
|
||||
# Action #
|
||||
|
@ -35,7 +35,7 @@ check_args '2' "$#" 'MODULE LICENSE'
|
|||
|
||||
# Activating license
|
||||
v_host='https://vestacp.com/checkout'
|
||||
answer=$(curl -s $v_host/activate.php?licence_key=$license&module=$module)
|
||||
answer=$(curl -s "$v_host/activate.php?licence_key=$license&module=$module")
|
||||
check_result $? "cant' connect to vestacp.com " $E_CONNECT
|
||||
|
||||
# Checking server answer
|
||||
|
|
|
@ -55,7 +55,7 @@ if [ "$domain_lvl" -eq 1 ] || [ "${#top_domain}" -le '6' ]; then
|
|||
fi
|
||||
|
||||
# Adding top-level domain and then its sub
|
||||
$BIN/v-add-dns-domain $user $top_domain $ip '' '' '' '' '' $restart >> /dev/null
|
||||
$BIN/v-add-dns-domain $user $top_domain $ip '' '' '' '' '' '' '' '' $restart >> /dev/null
|
||||
|
||||
# Checking top-level domain
|
||||
if [ ! -e "$USER_DATA/dns/$top_domain.conf" ]; then
|
||||
|
|
|
@ -22,7 +22,7 @@ protocol=$(echo $protocol|tr '[:lower:]' '[:upper:]')
|
|||
iptables="/sbin/iptables"
|
||||
|
||||
# Get vesta port by reading nginx.conf
|
||||
vestaport=$(grep 'listen' /usr/local/vesta/nginx/conf/nginx.conf | awk '{print $2}' | sed "s|;||")
|
||||
vestaport=$(grep 'listen' $VESTA/nginx/conf/nginx.conf | awk '{print $2}' | sed "s|;||")
|
||||
if [ -z "$vestaport" ]; then
|
||||
vestaport=8083
|
||||
fi
|
||||
|
|
|
@ -53,7 +53,10 @@ query_le_v2() {
|
|||
post_data=$post_data'"payload":"'"$payload_"'",'
|
||||
post_data=$post_data'"signature":"'"$signature_"'"}'
|
||||
|
||||
curl -s -i -d "$post_data" "$1" -H "$content"
|
||||
# Save http response to file passed as "$4" arg or print to stdout if not provided
|
||||
# http response headers are always sent to stdout
|
||||
local save_to_file=${4:-"/dev/stdout"}
|
||||
curl --silent --dump-header /dev/stdout --data "$post_data" "$1" --header "$content" --output "$save_to_file"
|
||||
}
|
||||
|
||||
|
||||
|
@ -70,11 +73,16 @@ is_object_unsuspended 'user' 'USER' "$user"
|
|||
is_object_valid 'web' 'DOMAIN' "$domain"
|
||||
is_object_unsuspended 'web' 'DOMAIN' "$domain"
|
||||
get_domain_values 'web'
|
||||
|
||||
echo "-----------------------------------------------------------------------------------" >> /usr/local/vesta/log/letsencrypt.log
|
||||
echo "[$(date)] : v-add-letsencrypt-domain $domain [$aliases]" >> /usr/local/vesta/log/letsencrypt.log
|
||||
|
||||
# check if alias is the letsencrypt wildcard domain, if not, make the normal checks
|
||||
if [[ "$aliases" != "*.$domain" ]]; then
|
||||
for alias in $(echo "$aliases" |tr ',' '\n' |sort -u); do
|
||||
check_alias="$(echo $ALIAS |tr ',' '\n' |grep ^$alias$)"
|
||||
if [ -z "$check_alias" ]; then
|
||||
echo "[$(date)] : EXIT=domain alias $alias doesn't exist" >> /usr/local/vesta/log/letsencrypt.log
|
||||
check_result $E_NOTEXIST "domain alias $alias doesn't exist"
|
||||
fi
|
||||
done
|
||||
|
@ -85,11 +93,14 @@ fi;
|
|||
#----------------------------------------------------------#
|
||||
|
||||
# Registering LetsEncrypt user account
|
||||
echo "[$(date)] : v-add-letsencrypt-user $user" >> /usr/local/vesta/log/letsencrypt.log
|
||||
$BIN/v-add-letsencrypt-user $user
|
||||
echo "[$(date)] : result: $?" >> /usr/local/vesta/log/letsencrypt.log
|
||||
if [ "$?" -ne 0 ]; then
|
||||
touch $VESTA/data/queue/letsencrypt.pipe
|
||||
sed -i "/ $domain /d" $VESTA/data/queue/letsencrypt.pipe
|
||||
send_notice "LETSENCRYPT" "Account registration failed"
|
||||
echo "[$(date)] : EXIT=LE account registration" >> /usr/local/vesta/log/letsencrypt.log
|
||||
check_result $E_CONNECT "LE account registration" >/dev/null
|
||||
fi
|
||||
|
||||
|
@ -98,9 +109,11 @@ source $USER_DATA/ssl/le.conf
|
|||
|
||||
# Checking wildcard alias
|
||||
if [ "$aliases" = "*.$domain" ]; then
|
||||
echo "[$(date)] : Checking wildcard alias" >> /usr/local/vesta/log/letsencrypt.log
|
||||
wildcard='yes'
|
||||
proto="dns-01"
|
||||
if [ ! -e "$VESTA/data/users/$user/dns/$domain.conf" ]; then
|
||||
echo "[$(date)] : EXIT=DNS domain $domain doesn't exist" >> /usr/local/vesta/log/letsencrypt.log
|
||||
check_result $E_NOTEXIST "DNS domain $domain doesn't exist"
|
||||
fi
|
||||
else
|
||||
|
@ -108,14 +121,21 @@ else
|
|||
fi
|
||||
|
||||
# Requesting nonce / STEP 1
|
||||
echo "[$(date)] : --- Requesting nonce / STEP 1 ---" >> /usr/local/vesta/log/letsencrypt.log
|
||||
echo "[$(date)] : curl -s -I \"$API/directory\"" >> /usr/local/vesta/log/letsencrypt.log
|
||||
answer=$(curl -s -I "$API/directory")
|
||||
nonce=$(echo "$answer" |grep Nonce |cut -f2 -d \ |tr -d '\r\n')
|
||||
status=$(echo "$answer"|grep HTTP/1.1 |tail -n1 |cut -f 2 -d ' ')
|
||||
echo "[$(date)] : answer=$answer" >> /usr/local/vesta/log/letsencrypt.log
|
||||
nonce=$(echo "$answer" |grep -i nonce |cut -f2 -d \ |tr -d '\r\n')
|
||||
echo "[$(date)] : nonce=$nonce" >> /usr/local/vesta/log/letsencrypt.log
|
||||
status=$(echo "$answer"|grep HTTP/ |tail -n1 |cut -f 2 -d ' ')
|
||||
echo "[$(date)] : status=$status" >> /usr/local/vesta/log/letsencrypt.log
|
||||
if [[ "$status" -ne 200 ]]; then
|
||||
echo "[$(date)] : EXIT=Let's Encrypt nonce request status $status" >> /usr/local/vesta/log/letsencrypt.log
|
||||
check_result $E_CONNECT "Let's Encrypt nonce request status $status"
|
||||
fi
|
||||
|
||||
# Placing new order / STEP 2
|
||||
echo "[$(date)] : --- Placing new order / STEP 2 ---" >> /usr/local/vesta/log/letsencrypt.log
|
||||
url="$API/acme/new-order"
|
||||
payload='{"identifiers":['
|
||||
for identifier in $(echo $domain,$aliases |tr ',' '\n' |sort -u); do
|
||||
|
@ -124,68 +144,116 @@ for identifier in $(echo $domain,$aliases |tr ',' '\n' |sort -u); do
|
|||
done
|
||||
payload=$(echo "$payload"|sed "s/,$//")
|
||||
payload=$payload']}'
|
||||
echo "[$(date)] : payload=$payload" >> /usr/local/vesta/log/letsencrypt.log
|
||||
echo "[$(date)] : query_le_v2 \"$url\" \"$payload\" \"$nonce\"" >> /usr/local/vesta/log/letsencrypt.log
|
||||
answer=$(query_le_v2 "$url" "$payload" "$nonce")
|
||||
nonce=$(echo "$answer" |grep Nonce |cut -f2 -d \ |tr -d '\r\n')
|
||||
echo "[$(date)] : answer=$answer" >> /usr/local/vesta/log/letsencrypt.log
|
||||
nonce=$(echo "$answer" |grep -i nonce |cut -f2 -d \ |tr -d '\r\n')
|
||||
echo "[$(date)] : nonce=$nonce" >> /usr/local/vesta/log/letsencrypt.log
|
||||
authz=$(echo "$answer" |grep "acme/authz" |cut -f2 -d '"')
|
||||
echo "[$(date)] : authz=$authz" >> /usr/local/vesta/log/letsencrypt.log
|
||||
finalize=$(echo "$answer" |grep 'finalize":' |cut -f4 -d '"')
|
||||
status=$(echo "$answer" |grep HTTP/1.1 |tail -n1 |cut -f2 -d ' ')
|
||||
echo "[$(date)] : finalize=$finalize" >> /usr/local/vesta/log/letsencrypt.log
|
||||
status=$(echo "$answer" |grep HTTP/ |tail -n1 |cut -f2 -d ' ')
|
||||
echo "[$(date)] : status=$status" >> /usr/local/vesta/log/letsencrypt.log
|
||||
if [[ "$status" -ne 201 ]]; then
|
||||
echo "[$(date)] : EXIT=Let's Encrypt new auth status $status" >> /usr/local/vesta/log/letsencrypt.log
|
||||
check_result $E_CONNECT "Let's Encrypt new auth status $status"
|
||||
fi
|
||||
|
||||
# Requesting authorization token / STEP 3
|
||||
echo "[$(date)] : --- Requesting authorization token / STEP 3 ---" >> /usr/local/vesta/log/letsencrypt.log
|
||||
for auth in $authz; do
|
||||
payload=''
|
||||
echo "[$(date)] : for auth=$auth" >> /usr/local/vesta/log/letsencrypt.log
|
||||
echo "[$(date)] : query_le_v2 \"$auth\" \"$payload\" \"$nonce\"" >> /usr/local/vesta/log/letsencrypt.log
|
||||
answer=$(query_le_v2 "$auth" "$payload" "$nonce")
|
||||
url=$(echo "$answer" |grep -A3 $proto |grep url |cut -f 4 -d \")
|
||||
echo "[$(date)] : answer=$answer" >> /usr/local/vesta/log/letsencrypt.log
|
||||
url=$(echo "$answer" |grep -A3 $proto |grep '"url"' |cut -f 4 -d \")
|
||||
echo "[$(date)] : url=$url" >> /usr/local/vesta/log/letsencrypt.log
|
||||
token=$(echo "$answer" |grep -A3 $proto |grep token |cut -f 4 -d \")
|
||||
nonce=$(echo "$answer" |grep Nonce |cut -f2 -d \ |tr -d '\r\n')
|
||||
status=$(echo "$answer"|grep HTTP/1.1 |tail -n1 |cut -f 2 -d ' ')
|
||||
echo "[$(date)] : token=$token" >> /usr/local/vesta/log/letsencrypt.log
|
||||
nonce=$(echo "$answer" |grep -i nonce |cut -f2 -d \ |tr -d '\r\n')
|
||||
echo "[$(date)] : nonce=$nonce" >> /usr/local/vesta/log/letsencrypt.log
|
||||
status=$(echo "$answer"|grep HTTP/ |tail -n1 |cut -f 2 -d ' ')
|
||||
echo "[$(date)] : status=$status" >> /usr/local/vesta/log/letsencrypt.log
|
||||
if [[ "$status" -ne 200 ]]; then
|
||||
echo "[$(date)] : EXIT=Let's Encrypt acme/authz bad status $status" >> /usr/local/vesta/log/letsencrypt.log
|
||||
check_result $E_CONNECT "Let's Encrypt acme/authz bad status $status"
|
||||
fi
|
||||
|
||||
# Accepting challenge / STEP 4
|
||||
# Configuring challenge / STEP 4
|
||||
echo "[$(date)] : --- Configuring challenge / STEP 4 ---" >> /usr/local/vesta/log/letsencrypt.log
|
||||
echo "[$(date)] : wildcard=$wildcard" >> /usr/local/vesta/log/letsencrypt.log
|
||||
if [ "$wildcard" = 'yes' ]; then
|
||||
record=$(printf "%s" "$token.$THUMB" |\
|
||||
openssl dgst -sha256 -binary |encode_base64)
|
||||
old_records=$($BIN/v-list-dns-records $user $domain plain|grep 'TXT')
|
||||
old_records=$(echo "$old_records" |grep _acme-challenge |cut -f 1)
|
||||
for old_record in $old_records; do
|
||||
$BIN/v-delete-dns-record $user $domain $old_record
|
||||
$BIN/v-delete-dns-record "$user" "$domain" "$old_record"
|
||||
done
|
||||
$BIN/v-add-dns-record $user $domain "_acme-challenge" "TXT" $record
|
||||
check_result $? "DNS _acme-challenge record wasn't created"
|
||||
$BIN/v-add-dns-record "$user" "$domain" "_acme-challenge" "TXT" "$record"
|
||||
exitstatus=$?
|
||||
echo "[$(date)] : v-add-dns-record \"$user\" \"$domain\" \"_acme-challenge\" \"TXT\" \"$record\"" >> /usr/local/vesta/log/letsencrypt.log
|
||||
if [ "$exitstatus" -ne 0 ]; then
|
||||
echo "[$(date)] : EXIT=DNS _acme-challenge record wasn't created" >> /usr/local/vesta/log/letsencrypt.log
|
||||
fi
|
||||
check_result $exitstatus "DNS _acme-challenge record wasn't created"
|
||||
else
|
||||
if [ "$WEB_SYSTEM" = 'nginx' ] || [ ! -z "$PROXY_SYSTEM" ]; then
|
||||
if [ -f "/usr/local/vesta/web/inc/nginx_proxy" ]; then
|
||||
# if vesta is behind main nginx
|
||||
well_known="$HOMEDIR/$user/web/$domain/public_html/.well-known"
|
||||
acme_challenge="$well_known/acme-challenge"
|
||||
mkdir -p $acme_challenge
|
||||
echo "$token.$THUMB" > $acme_challenge/$token
|
||||
echo "[$(date)] : in $acme_challenge/$token we put: $token.$THUMB" >> /usr/local/vesta/log/letsencrypt.log
|
||||
chown -R $user:$user $well_known
|
||||
else
|
||||
# default nginx method
|
||||
conf="$HOMEDIR/$user/conf/web/nginx.$domain.conf_letsencrypt"
|
||||
sconf="$HOMEDIR/$user/conf/web/snginx.$domain.conf_letsencrypt"
|
||||
if [ ! -e "$conf" ]; then
|
||||
# if [ ! -e "$conf" ]; then
|
||||
echo 'location ~ "^/\.well-known/acme-challenge/(.*)$" {' \
|
||||
> $conf
|
||||
echo ' default_type text/plain;' >> $conf
|
||||
echo ' return 200 "$1.'$THUMB'";' >> $conf
|
||||
echo '}' >> $conf
|
||||
fi
|
||||
# fi
|
||||
echo "[$(date)] : in $conf we put: $THUMB" >> /usr/local/vesta/log/letsencrypt.log
|
||||
if [ ! -e "$sconf" ]; then
|
||||
ln -s "$conf" "$sconf"
|
||||
fi
|
||||
echo "[$(date)] : v-restart-proxy" >> /usr/local/vesta/log/letsencrypt.log
|
||||
$BIN/v-restart-proxy
|
||||
check_result $? "Proxy restart failed" >/dev/null
|
||||
|
||||
if [ -z "$PROXY_SYSTEM" ]; then
|
||||
# apache-less variant
|
||||
echo "[$(date)] : v-restart-web" >> /usr/local/vesta/log/letsencrypt.log
|
||||
$BIN/v-restart-web
|
||||
fi
|
||||
exitstatus=$?
|
||||
if [ "$exitstatus" -ne 0 ]; then
|
||||
echo "[$(date)] : EXIT=Proxy restart failed = $exitstatus" >> /usr/local/vesta/log/letsencrypt.log
|
||||
fi
|
||||
check_result $exitstatus "Proxy restart failed" >/dev/null
|
||||
fi
|
||||
else
|
||||
well_known="$HOMEDIR/$user/web/$domain/public_html/.well-known"
|
||||
acme_challenge="$well_known/acme-challenge"
|
||||
mkdir -p $acme_challenge
|
||||
echo "$token.$THUMB" > $acme_challenge/$token
|
||||
chown -R $user:$user $well_known
|
||||
echo "[$(date)] : in $acme_challenge/$token we put: $token.$THUMB" >> /usr/local/vesta/log/letsencrypt.log
|
||||
# $BIN/v-restart-web
|
||||
# check_result $? "Web restart failed" >/dev/null
|
||||
fi
|
||||
$BIN/v-restart-web
|
||||
check_result $? "Web restart failed" >/dev/null
|
||||
fi
|
||||
|
||||
# Requesting ACME validation / STEP 5
|
||||
echo "[$(date)] : --- Requesting ACME validation / STEP 5 ---" >> /usr/local/vesta/log/letsencrypt.log
|
||||
validation_check=$(echo "$answer" |grep '"valid"')
|
||||
echo "[$(date)] : validation_check=$validation_check" >> /usr/local/vesta/log/letsencrypt.log
|
||||
if [[ ! -z "$validation_check" ]]; then
|
||||
validation='valid'
|
||||
else
|
||||
|
@ -195,22 +263,33 @@ for auth in $authz; do
|
|||
# Doing pol check on status
|
||||
i=1
|
||||
while [ "$validation" = 'pending' ]; do
|
||||
echo "[$(date)] : - Doing pol check on status" >> /usr/local/vesta/log/letsencrypt.log
|
||||
payload='{}'
|
||||
echo "[$(date)] : query_le_v2 \"$url\" \"$payload\" \"$nonce\"" >> /usr/local/vesta/log/letsencrypt.log
|
||||
answer=$(query_le_v2 "$url" "$payload" "$nonce")
|
||||
echo "[$(date)] : answer=$answer" >> /usr/local/vesta/log/letsencrypt.log
|
||||
validation=$(echo "$answer"|grep -A1 $proto |tail -n1|cut -f4 -d \")
|
||||
nonce=$(echo "$answer" |grep Nonce |cut -f2 -d \ |tr -d '\r\n')
|
||||
status=$(echo "$answer"|grep HTTP/1.1 |tail -n1 |cut -f 2 -d ' ')
|
||||
echo "[$(date)] : validation=$validation" >> /usr/local/vesta/log/letsencrypt.log
|
||||
nonce=$(echo "$answer" |grep -i nonce |cut -f2 -d \ |tr -d '\r\n')
|
||||
echo "[$(date)] : nonce=$nonce" >> /usr/local/vesta/log/letsencrypt.log
|
||||
status=$(echo "$answer"|grep HTTP/ |tail -n1 |cut -f 2 -d ' ')
|
||||
echo "[$(date)] : status=$status" >> /usr/local/vesta/log/letsencrypt.log
|
||||
if [[ "$status" -ne 200 ]]; then
|
||||
echo "[$(date)] : EXIT=Let's Encrypt validation status $status" >> /usr/local/vesta/log/letsencrypt.log
|
||||
check_result $E_CONNECT "Let's Encrypt validation status $status"
|
||||
fi
|
||||
|
||||
i=$((i + 1))
|
||||
if [ "$i" -gt 10 ]; then
|
||||
echo "[$(date)] : EXIT=Let's Encrypt domain validation timeout" >> /usr/local/vesta/log/letsencrypt.log
|
||||
check_result $E_CONNECT "Let's Encrypt domain validation timeout"
|
||||
fi
|
||||
sleep 1
|
||||
sleeping=$((i*2))
|
||||
echo "[$(date)] : sleep $sleeping (i=$i)" >> /usr/local/vesta/log/letsencrypt.log
|
||||
sleep $sleeping
|
||||
done
|
||||
if [ "$validation" = 'invalid' ]; then
|
||||
echo "[$(date)] : EXIT=Let's Encrypt domain verification failed" >> /usr/local/vesta/log/letsencrypt.log
|
||||
check_result $E_CONNECT "Let's Encrypt domain verification failed"
|
||||
fi
|
||||
done
|
||||
|
@ -221,37 +300,69 @@ ssl_dir=$($BIN/v-generate-ssl-cert "$domain" "info@$domain" "US" "California"\
|
|||
"San Francisco" "Vesta" "IT" "$aliases" |tail -n1 |awk '{print $2}')
|
||||
|
||||
# Sending CSR to finalize order / STEP 6
|
||||
echo "[$(date)] : --- Sending CSR to finalize order / STEP 6 ---" >> /usr/local/vesta/log/letsencrypt.log
|
||||
|
||||
csr=$(openssl req -in $ssl_dir/$domain.csr -outform DER |encode_base64)
|
||||
payload='{"csr":"'$csr'"}'
|
||||
echo "[$(date)] : query_le_v2 \"$finalize\" \"$payload\" \"$nonce\"" >> /usr/local/vesta/log/letsencrypt.log
|
||||
answer=$(query_le_v2 "$finalize" "$payload" "$nonce")
|
||||
nonce=$(echo "$answer" |grep Nonce |cut -f2 -d \ |tr -d '\r\n')
|
||||
status=$(echo "$answer"|grep HTTP/1.1 |tail -n1 |cut -f 2 -d ' ')
|
||||
echo "[$(date)] : answer=$answer" >> /usr/local/vesta/log/letsencrypt.log
|
||||
nonce=$(echo "$answer" |grep -i nonce |cut -f2 -d \ |tr -d '\r\n')
|
||||
echo "[$(date)] : nonce=$nonce" >> /usr/local/vesta/log/letsencrypt.log
|
||||
status=$(echo "$answer"|grep HTTP/ |tail -n1 |cut -f 2 -d ' ')
|
||||
echo "[$(date)] : status=$status" >> /usr/local/vesta/log/letsencrypt.log
|
||||
certificate=$(echo "$answer"|grep 'certificate":' |cut -f4 -d '"')
|
||||
echo "[$(date)] : certificate=$certificate" >> /usr/local/vesta/log/letsencrypt.log
|
||||
if [[ "$status" -ne 200 ]]; then
|
||||
echo "[$(date)] : EXIT=Let's Encrypt finalize bad status $status" >> /usr/local/vesta/log/letsencrypt.log
|
||||
check_result $E_CONNECT "Let's Encrypt finalize bad status $status"
|
||||
fi
|
||||
|
||||
# Downloading signed certificate / STEP 7
|
||||
curl -s "$certificate" -o $ssl_dir/$domain.pem
|
||||
echo "[$(date)] : --- Downloading signed certificate / STEP 7 ---" >> /usr/local/vesta/log/letsencrypt.log
|
||||
echo "[$(date)] : query_le_v2 \"$certificate\" \"\" \"$nonce\"" >> /usr/local/vesta/log/letsencrypt.log
|
||||
answer=$(query_le_v2 "$certificate" "" "$nonce" "$ssl_dir/$domain.pem")
|
||||
echo "[$(date)] : answer=$answer" >> /usr/local/vesta/log/letsencrypt.log
|
||||
status=$(echo "$answer"|grep HTTP/ |tail -n1 |cut -f 2 -d ' ')
|
||||
echo "[$(date)] : status=$status" >> /usr/local/vesta/log/letsencrypt.log
|
||||
if [[ "$status" -ne 200 ]]; then
|
||||
[ -d "$ssl_dir" ] && rm -rf "$ssl_dir"
|
||||
echo "[$(date)] : EXIT=Let's Encrypt downloading signed cert failed status: $status" >> /usr/local/vesta/log/letsencrypt.log
|
||||
check_result $E_NOTEXIST "Let's Encrypt downloading signed cert failed status: $status"
|
||||
fi
|
||||
|
||||
# Splitting up downloaded pem
|
||||
crt_end=$(grep -n END $ssl_dir/$domain.pem |head -n1 |cut -f1 -d:)
|
||||
# echo "[$(date)] : - Splitting up downloaded pem" >> /usr/local/vesta/log/letsencrypt.log
|
||||
crt_end=$(grep -n 'END CERTIFICATE' $ssl_dir/$domain.pem |head -n1 |cut -f1 -d:)
|
||||
# echo "[$(date)] : crt_end=$crt_end" >> /usr/local/vesta/log/letsencrypt.log
|
||||
head -n $crt_end $ssl_dir/$domain.pem > $ssl_dir/$domain.crt
|
||||
|
||||
pem_lines=$(wc -l $ssl_dir/$domain.pem |cut -f 1 -d ' ')
|
||||
ca_end=$(grep -n "BEGIN" $ssl_dir/$domain.pem |tail -n1 |cut -f 1 -d :)
|
||||
# echo "[$(date)] : pem_lines=$pem_lines" >> /usr/local/vesta/log/letsencrypt.log
|
||||
ca_end=$(grep -n 'BEGIN CERTIFICATE' $ssl_dir/$domain.pem |tail -n1 |cut -f 1 -d :)
|
||||
# echo "[$(date)] : ca_end=$ca_end" >> /usr/local/vesta/log/letsencrypt.log
|
||||
ca_end=$(( pem_lines - crt_end + 1 ))
|
||||
# echo "[$(date)] : ca_end=$ca_end" >> /usr/local/vesta/log/letsencrypt.log
|
||||
tail -n $ca_end $ssl_dir/$domain.pem > $ssl_dir/$domain.ca
|
||||
|
||||
# Temporary fix for double "END CERTIFICATE"
|
||||
if [[ $(head -n 1 $ssl_dir/$domain.ca) = "-----END CERTIFICATE-----" ]]; then
|
||||
sed -i '1,2d' $ssl_dir/$domain.ca
|
||||
fi
|
||||
|
||||
# Adding SSL
|
||||
ssl_home=$(search_objects 'web' 'LETSENCRYPT' 'yes' 'SSL_HOME')
|
||||
$BIN/v-delete-web-domain-ssl $user $domain >/dev/null 2>&1
|
||||
echo "[$(date)] : v-add-web-domain-ssl $user $domain $ssl_dir $ssl_home" >> /usr/local/vesta/log/letsencrypt.log
|
||||
$BIN/v-add-web-domain-ssl $user $domain $ssl_dir $ssl_home
|
||||
if [ "$?" -ne '0' ]; then
|
||||
exitstatus=$?
|
||||
echo "[$(date)] : v-add-web-domain-ssl status: $exitstatus" >> /usr/local/vesta/log/letsencrypt.log
|
||||
if [ "$exitstatus" -ne '0' ]; then
|
||||
touch $VESTA/data/queue/letsencrypt.pipe
|
||||
sed -i "/ $domain /d" $VESTA/data/queue/letsencrypt.pipe
|
||||
echo "[$(date)] : EXIT=$domain certificate installation failed" >> /usr/local/vesta/log/letsencrypt.log
|
||||
send_notice 'LETSENCRYPT' "$domain certificate installation failed"
|
||||
check_result $? "SSL install" >/dev/null
|
||||
check_result $exitstatus "SSL install" >/dev/null
|
||||
fi
|
||||
|
||||
# Adding LE autorenew cronjob
|
||||
|
@ -268,6 +379,7 @@ if [ -z "$LETSENCRYPT" ]; then
|
|||
fi
|
||||
update_object_value 'web' 'DOMAIN' "$domain" '$LETSENCRYPT' 'yes'
|
||||
|
||||
reset_web_counter "$user" "$domain" 'LETSENCRYPT_FAIL_COUNT'
|
||||
|
||||
#----------------------------------------------------------#
|
||||
# Vesta #
|
||||
|
@ -279,7 +391,7 @@ sed -i "/ $domain /d" $VESTA/data/queue/letsencrypt.pipe
|
|||
|
||||
# Notifying user
|
||||
send_notice 'LETSENCRYPT' "$domain SSL has been installed successfully"
|
||||
|
||||
echo "[$(date)] : EXIT=***** $domain SSL has been installed successfully *****" >> /usr/local/vesta/log/letsencrypt.log
|
||||
|
||||
# Logging
|
||||
log_event "$OK" "$ARGUMENTS"
|
||||
|
|
|
@ -103,16 +103,16 @@ fi
|
|||
|
||||
|
||||
# Requesting ACME nonce
|
||||
nonce=$(curl -s -I "$API/directory" |grep Nonce |cut -f 2 -d \ |tr -d '\r\n')
|
||||
nonce=$(curl -s -I "$API/directory" |grep -i nonce |cut -f2 -d\ |tr -d '\r\n')
|
||||
|
||||
# Creating ACME account
|
||||
url="$API/acme/new-acct"
|
||||
payload='{"termsOfServiceAgreed": true}'
|
||||
answer=$(query_le_v2 "$url" "$payload" "$nonce")
|
||||
kid=$(echo "$answer" |grep Location: |cut -f2 -d ' '|tr -d '\r')
|
||||
kid=$(echo "$answer" |grep -i location: |cut -f2 -d ' '|tr -d '\r')
|
||||
|
||||
# Checking answer status
|
||||
status=$(echo "$answer" |grep HTTP/1.1 |tail -n1 |cut -f2 -d ' ')
|
||||
status=$(echo "$answer" |grep HTTP/ |tail -n1 |cut -f2 -d ' ')
|
||||
if [[ "${status:0:2}" -ne "20" ]]; then
|
||||
check_result $E_CONNECT "Let's Encrypt acc registration failed $status"
|
||||
fi
|
||||
|
|
|
@ -48,6 +48,8 @@ is_object_unsuspended 'user' 'USER' "$user"
|
|||
is_package_full 'WEB_DOMAINS' 'WEB_ALIASES'
|
||||
is_domain_new 'web' "$domain,$aliases"
|
||||
is_dir_symlink $HOMEDIR/$user/web
|
||||
if_dir_exists $HOMEDIR/$user/web/$domain
|
||||
is_dir_symlink $HOMEDIR/$user/web/$domain
|
||||
if [ ! -z "$ip" ]; then
|
||||
is_ip_valid "$ip" "$user"
|
||||
else
|
||||
|
@ -89,9 +91,9 @@ done
|
|||
chown -R $user:$user $HOMEDIR/$user/web/$domain
|
||||
chown root:$user /var/log/$WEB_SYSTEM/domains/$domain.* $conf
|
||||
chmod 640 /var/log/$WEB_SYSTEM/domains/$domain.*
|
||||
chmod 751 $HOMEDIR/$user/web/$domain $HOMEDIR/$user/web/$domain/*
|
||||
chmod 551 $HOMEDIR/$user/web/$domain/stats $HOMEDIR/$user/web/$domain/logs
|
||||
chmod 644 $HOMEDIR/$user/web/$domain/public_*html/*.*
|
||||
sudo -u $user chmod 751 $HOMEDIR/$user/web/$domain $HOMEDIR/$user/web/$domain/*
|
||||
sudo -u $user chmod 551 $HOMEDIR/$user/web/$domain/stats $HOMEDIR/$user/web/$domain/logs
|
||||
sudo -u $user chmod 644 $HOMEDIR/$user/web/$domain/public_*html/*.*
|
||||
|
||||
# Addding PHP-FPM backend
|
||||
if [ ! -z "$WEB_BACKEND" ]; then
|
||||
|
|
|
@ -46,7 +46,7 @@ fi
|
|||
|
||||
# Allocating backend port
|
||||
backend_port=9000
|
||||
ports=$(grep -v '^;' $pool/* 2>/dev/null |grep listen |grep -o :[0-9].*)
|
||||
ports=$(grep listen $pool/* 2>/dev/null |grep -o :[0-9].*)
|
||||
ports=$(echo "$ports" |sed "s/://" |sort -n)
|
||||
for port in $ports; do
|
||||
if [ "$backend_port" -eq "$port" ]; then
|
||||
|
|
|
@ -84,7 +84,7 @@ fi
|
|||
/usr/sbin/useradd $ftp_user \
|
||||
-s $shell \
|
||||
-o -u $(id -u $user) \
|
||||
-g $(id -u $user) \
|
||||
-g $(id -g $user) \
|
||||
-M -d "$ftp_path_a" > /dev/null 2>&1
|
||||
|
||||
# Set ftp user password
|
||||
|
|
|
@ -143,6 +143,8 @@ if [ ! -z "$UPDATE_HOSTNAME_SSL" ] && [ "$UPDATE_HOSTNAME_SSL" = "yes" ]; then
|
|||
fi
|
||||
fi
|
||||
|
||||
UPDATE_SSL_SCRIPT=''
|
||||
source $VESTA/conf/vesta.conf
|
||||
if [ ! -z "$UPDATE_SSL_SCRIPT" ]; then
|
||||
eval "$UPDATE_SSL_SCRIPT $user $domain"
|
||||
fi
|
||||
|
|
|
@ -479,7 +479,8 @@ if [ "$USER" != '*' ]; then
|
|||
exclusion=$(echo "$USER" |tr ',' '\n' |grep "^$udir$")
|
||||
if [ -z "$exclusion" ]; then
|
||||
((i ++))
|
||||
udir_list="$udir_list $udir"
|
||||
udir_str=$(echo "$udir" |sed -e "s|'|\\\'|g")
|
||||
udir_list="$udir_list $udir_str"
|
||||
echo -e "$(date "+%F %T") adding $udir" |tee -a $BACKUP/$user.log
|
||||
|
||||
# Backup files and dirs
|
||||
|
@ -594,7 +595,7 @@ ftp_backup() {
|
|||
fi
|
||||
|
||||
# Debug info
|
||||
echo -e "$(date "+%F %T") Remote: ftp://$HOST$BPATH/$user.$backup_new_date.tar"
|
||||
echo -e "$(date "+%F %T") Remote: ftp://$HOST/$BPATH/$user.$backup_new_date.tar"
|
||||
|
||||
# Checking ftp connection
|
||||
fconn=$(ftpc)
|
||||
|
|
|
@ -52,8 +52,11 @@ salt=$(generate_password "$PW_MATRIX" "8")
|
|||
md5="{MD5}$($BIN/v-generate-password-hash md5 $salt <<<$password)"
|
||||
|
||||
if [[ "$MAIL_SYSTEM" =~ exim ]]; then
|
||||
quota=$(grep $account $VESTA/data/users/${user}/mail/${domain}.conf)
|
||||
quota=$(echo $quota | awk '{ print $7 }' | sed -e "s/'//g" )
|
||||
quota=$(echo $quota | cut -d "=" -f 2 | sed -e "s/unlimited/0/g")
|
||||
sed -i "/^$account:/d" $HOMEDIR/$user/conf/mail/$domain/passwd
|
||||
str="$account:$md5:$user:mail::$HOMEDIR/$user:$quota"
|
||||
str="$account:$md5:$user:mail::$HOMEDIR/$user:${quota}M"
|
||||
echo $str >> $HOMEDIR/$user/conf/mail/$domain/passwd
|
||||
fi
|
||||
|
||||
|
|
|
@ -28,6 +28,7 @@ PATH="$PATH:/usr/local/sbin:/sbin:/usr/sbin:/root/bin"
|
|||
check_args '2' "$#" 'KEY VALUE'
|
||||
is_format_valid 'key'
|
||||
|
||||
format_no_quotes "$value" 'value'
|
||||
|
||||
#----------------------------------------------------------#
|
||||
# Action #
|
||||
|
|
|
@ -63,6 +63,7 @@ case $service in
|
|||
spamd) dst=$($BIN/v-list-sys-spamd-config plain);;
|
||||
spamassassin) dst=$($BIN/v-list-sys-spamd-config plain);;
|
||||
clamd) dst=$($BIN/v-list-sys-clamd-config plain);;
|
||||
clamd.scan) dst=$($BIN/v-list-sys-clamd-config plain);;
|
||||
cron) dst='/etc/crontab';;
|
||||
crond) dst='/etc/crontab';;
|
||||
fail2ban) dst='/etc/fail2ban/jail.local';;
|
||||
|
|
|
@ -16,16 +16,12 @@ force=$3
|
|||
|
||||
# Includes
|
||||
source $VESTA/func/main.sh
|
||||
source $VESTA/func/domain.sh
|
||||
source $VESTA/conf/vesta.conf
|
||||
|
||||
is_package_avalable() {
|
||||
|
||||
usr_data=$(cat $USER_DATA/user.conf)
|
||||
IFS=$'\n'
|
||||
for key in $usr_data; do
|
||||
eval ${key%%=*}=${key#*=}
|
||||
done
|
||||
|
||||
source $USER_DATA/user.conf
|
||||
WEB_DOMAINS='0'
|
||||
DATABASES='0'
|
||||
MAIL_DOMAINS='0'
|
||||
|
@ -33,9 +29,13 @@ is_package_avalable() {
|
|||
DISK_QUOTA='0'
|
||||
BANDWIDTH='0'
|
||||
|
||||
pkg_data=$(cat $VESTA/data/packages/$package.pkg |grep -v TIME |\
|
||||
grep -v DATE)
|
||||
eval $pkg_data
|
||||
pkg_data=$(cat $VESTA/data/packages/$package.pkg| egrep -v "TIME|DATE")
|
||||
IFS=$'\n'
|
||||
for str in $pkg_data; do
|
||||
key=$(echo $str |cut -f 1 -d =)
|
||||
value=$(echo $str |cut -f 2 -d \')
|
||||
eval $key="$value"
|
||||
done
|
||||
|
||||
# Checking usage agains package limits
|
||||
if [ "$WEB_DOMAINS" != 'unlimited' ]; then
|
||||
|
@ -73,11 +73,22 @@ is_package_avalable() {
|
|||
check_result $E_LIMIT "Package doesn't cover BANDWIDTH usage"
|
||||
fi
|
||||
fi
|
||||
|
||||
# Checking templates
|
||||
is_web_template_valid $WEB_TEMPLATE
|
||||
is_dns_template_valid $DNS_TEMPLATE
|
||||
is_proxy_template_valid $PROXY_TEMPLATE
|
||||
}
|
||||
|
||||
change_user_package() {
|
||||
eval $(cat $USER_DATA/user.conf)
|
||||
eval $(cat $VESTA/data/packages/$package.pkg |egrep -v "TIME|DATE")
|
||||
source $USER_DATA/user.conf
|
||||
pkg_data=$(cat $VESTA/data/packages/$package.pkg| egrep -v "TIME|DATE")
|
||||
IFS=$'\n'
|
||||
for str in $pkg_data; do
|
||||
key=$(echo $str |cut -f 1 -d =)
|
||||
value=$(echo $str |cut -f 2 -d \')
|
||||
eval $key="$value"
|
||||
done
|
||||
echo "FNAME='$FNAME'
|
||||
LNAME='$LNAME'
|
||||
PACKAGE='$package'
|
||||
|
|
|
@ -13,6 +13,10 @@
|
|||
user=$1
|
||||
password=$2; HIDE=2
|
||||
|
||||
# Importing system enviroment as we run this script
|
||||
# mostly by cron wich not read it by itself
|
||||
source /etc/profile
|
||||
|
||||
# Includes
|
||||
source $VESTA/func/main.sh
|
||||
source $VESTA/conf/vesta.conf
|
||||
|
@ -22,6 +26,9 @@ source $VESTA/conf/vesta.conf
|
|||
# Verifications #
|
||||
#----------------------------------------------------------#
|
||||
|
||||
if [ "$user" = "root" ]; then
|
||||
check_result $E_FORBIDEN "Changing root password is forbiden"
|
||||
fi
|
||||
check_args '2' "$#" 'USER PASSWORD'
|
||||
is_format_valid 'user'
|
||||
is_object_valid 'user' 'USER' "$user"
|
||||
|
|
60
bin/v-change-vesta-port
Normal file
60
bin/v-change-vesta-port
Normal file
|
@ -0,0 +1,60 @@
|
|||
#!/bin/bash
|
||||
# info: change vesta port
|
||||
# options: port
|
||||
#
|
||||
# Function will change vesta port
|
||||
|
||||
#----------------------------------------------------------#
|
||||
# Variable&Function #
|
||||
#----------------------------------------------------------#
|
||||
|
||||
# Argument definition
|
||||
port=$1
|
||||
|
||||
if [ -z "$VESTA" ]; then
|
||||
VESTA="/usr/local/vesta"
|
||||
fi
|
||||
|
||||
# Get current vesta port by reading nginx.conf
|
||||
oldport=$(grep 'listen' $VESTA/nginx/conf/nginx.conf | awk '{print $2}' | sed "s|;||")
|
||||
if [ -z "$oldport" ]; then
|
||||
oldport=8083
|
||||
fi
|
||||
|
||||
# Includes
|
||||
source $VESTA/func/main.sh
|
||||
|
||||
#----------------------------------------------------------#
|
||||
# Verifications #
|
||||
#----------------------------------------------------------#
|
||||
|
||||
# Checking permissions
|
||||
if [ "$(id -u)" != '0' ]; then
|
||||
check_result $E_FORBIDEN "You must be root to execute this script"
|
||||
fi
|
||||
|
||||
check_args '1' "$#" 'PORT'
|
||||
is_int_format_valid "$port" 'port number'
|
||||
|
||||
#----------------------------------------------------------#
|
||||
# Action #
|
||||
#----------------------------------------------------------#
|
||||
|
||||
sed -i "s|$oldport;|$port;|g" $VESTA/nginx/conf/nginx.conf
|
||||
if [ -f "/etc/roundcube/plugins/password/config.inc.php" ]; then
|
||||
sed -i "s|'$oldport'|'$port'|g" /etc/roundcube/plugins/password/config.inc.php
|
||||
fi
|
||||
sed -i "s|'$oldport'|'$port'|g" $VESTA/data/firewall/rules.conf
|
||||
$VESTA/bin/v-update-firewall
|
||||
systemctl restart fail2ban.service
|
||||
sed -i "s| $oldport | $port |g" /etc/iptables.rules
|
||||
systemctl restart vesta
|
||||
|
||||
#----------------------------------------------------------#
|
||||
# Vesta #
|
||||
#----------------------------------------------------------#
|
||||
|
||||
# Logging
|
||||
log_event "$OK" "$ARGUMENTS"
|
||||
|
||||
exit 0;
|
|
@ -52,7 +52,7 @@ rm -f $pool/$backend_type.conf
|
|||
|
||||
# Allocating backend port
|
||||
backend_port=9000
|
||||
ports=$(grep -v '^;' $pool/* 2>/dev/null |grep listen |grep -o :[0-9].*)
|
||||
ports=$(grep listen $pool/* 2>/dev/null |grep -o :[0-9].*)
|
||||
ports=$(echo "$ports" |sed "s/://" |sort -n)
|
||||
for port in $ports; do
|
||||
if [ "$backend_port" -eq "$port" ]; then
|
||||
|
|
|
@ -35,7 +35,7 @@ check_args '2' "$#" 'MODULE LICENSE'
|
|||
|
||||
# Activating license
|
||||
v_host='https://vestacp.com/checkout'
|
||||
answer=$(curl -s $v_host/cancel.php?licence_key=$license)
|
||||
answer=$(curl -s "$v_host/cancel.php?licence_key=$license&module=$module")
|
||||
check_result $? "cant' connect to vestacp.com " $E_CONNECT
|
||||
|
||||
# Checking server answer
|
||||
|
|
|
@ -57,7 +57,13 @@ fi
|
|||
|
||||
# Deleting old certificate
|
||||
tmpdir=$(mktemp -p $HOMEDIR/$user/web/$domain/private -d)
|
||||
rm -f $HOMEDIR/$user/conf/web/ssl.$domain.*
|
||||
|
||||
# remove certificate files - do not use wildcard, as this might remove other domains
|
||||
rm -f $HOMEDIR/$user/conf/web/ssl.$domain.ca
|
||||
rm -f $HOMEDIR/$user/conf/web/ssl.$domain.crt
|
||||
rm -f $HOMEDIR/$user/conf/web/ssl.$domain.key
|
||||
rm -f $HOMEDIR/$user/conf/web/ssl.$domain.pem
|
||||
|
||||
mv $USER_DATA/ssl/$domain.* $tmpdir
|
||||
chown -R $user:$user $tmpdir
|
||||
|
||||
|
|
|
@ -82,7 +82,7 @@ fi
|
|||
# Extracting ziped archive
|
||||
if [ ! -z "$(echo $src_file |grep -i '.zip')" ]; then
|
||||
sudo -u $user mkdir -p "$dst_dir" >/dev/null 2>&1
|
||||
sudo -u $user unzip "$src_file" -d "$dst_dir" >/dev/null 2>&1
|
||||
sudo -u $user unzip -o "$src_file" -d "$dst_dir" >/dev/null 2>&1
|
||||
rc=$?
|
||||
fi
|
||||
|
||||
|
|
|
@ -67,7 +67,7 @@ fi
|
|||
|
||||
args_usage='DOMAIN EMAIL COUNTRY STATE CITY ORG UNIT [ALIASES] [FORMAT]'
|
||||
check_args '7' "$#" "$args_usage"
|
||||
is_format_valid 'domain_alias' 'format'
|
||||
is_format_valid 'domain' 'alias' 'format'
|
||||
|
||||
|
||||
#----------------------------------------------------------#
|
||||
|
|
|
@ -22,7 +22,7 @@ json_list() {
|
|||
i=1
|
||||
objects=$(grep BACKUP $USER_DATA/backup.conf |wc -l)
|
||||
echo "{"
|
||||
while read str; do
|
||||
while read -r str; do
|
||||
eval $str
|
||||
echo -n ' "'$BACKUP'": {
|
||||
"TYPE": "'$TYPE'",
|
||||
|
|
|
@ -22,6 +22,7 @@ json_list() {
|
|||
echo '{'
|
||||
echo ' "'$PACKAGE'": {
|
||||
"WEB_TEMPLATE": "'$WEB_TEMPLATE'",
|
||||
"BACKEND_TEMPLATE": "'$BACKEND_TEMPLATE'",
|
||||
"PROXY_TEMPLATE": "'$PROXY_TEMPLATE'",
|
||||
"DNS_TEMPLATE": "'$DNS_TEMPLATE'",
|
||||
"WEB_DOMAINS": "'$WEB_DOMAINS'",
|
||||
|
@ -47,6 +48,7 @@ json_list() {
|
|||
shell_list() {
|
||||
echo "PACKAGE: $PACKAGE"
|
||||
echo "WEB TEMPLATE: $WEB_TEMPLATE"
|
||||
echo "BACKEND_TEMPLATE: $BACKEND_TEMPLATE"
|
||||
echo "PROXY TEMPLATE: $PROXY_TEMPLATE"
|
||||
echo "DNS TEMPLATE: $DNS_TEMPLATE"
|
||||
echo "WEB DOMAINS: $WEB_DOMAINS"
|
||||
|
@ -68,7 +70,7 @@ shell_list() {
|
|||
|
||||
# PLAIN list function
|
||||
plain_list() {
|
||||
echo -ne "$PACKAGE\t$WEB_TEMPLATE\t$PROXY_TEMPLATE\t$DNS_TEMPLATE\t"
|
||||
echo -ne "$PACKAGE\t$WEB_TEMPLATE\t$BACKEND_TEMPLATE\t$PROXY_TEMPLATE\t$DNS_TEMPLATE\t"
|
||||
echo -ne "$WEB_DOMAINS\t$WEB_ALIASES\t$DNS_DOMAINS\t$DNS_RECORDS\t"
|
||||
echo -ne "$MAIL_DOMAINS\t$MAIL_ACCOUNTS\t$DATABASES\t$CRON_JOBS\t"
|
||||
echo -e "$DISK_QUOTA\t$BANDWIDTH\t$NS\t$SHELL\t$BACKUPS\t$TIME\t$DATE"
|
||||
|
@ -76,11 +78,11 @@ plain_list() {
|
|||
|
||||
# CSV list function
|
||||
csv_list() {
|
||||
echo -n "PACKAGE,WEB_TEMPLATE,PROXY_TEMPLATE,DNS_TEMPLATE,"
|
||||
echo -n "PACKAGE,WEB_TEMPLATE,BACKEND_TEMPLATE,PROXY_TEMPLATE,DNS_TEMPLATE,"
|
||||
echo -n "WEB_DOMAINS,WEB_ALIASES,DNS_DOMAINS,DNS_RECORDS,"
|
||||
echo -n "MAIL_DOMAINS,MAIL_ACCOUNTS,DATABASES,CRON_JOBS,"
|
||||
echo "DISK_QUOTA,BANDWIDTH,NS,SHELL,BACKUPS,TIME,DATE"
|
||||
echo -n "$PACKAGE,$WEB_TEMPLATE,$PROXY_TEMPLATE,$DNS_TEMPLATE,"
|
||||
echo -n "$PACKAGE,$WEB_TEMPLATE,$BACKEND_TEMPLATE,$PROXY_TEMPLATE,$DNS_TEMPLATE,"
|
||||
echo -n "$WEB_DOMAINS,$WEB_ALIASES,$DNS_DOMAINS,$DNS_RECORDS,"
|
||||
echo -n "$MAIL_DOMAINS,$MAIL_ACCOUNTS,$DATABASES,$CRON_JOBS,"
|
||||
echo "$DISK_QUOTA,$BANDWIDTH,\"$NS\",$SHELL,$BACKUPS,$TIME,$DATE"
|
||||
|
|
|
@ -27,6 +27,7 @@ json_list() {
|
|||
source $VESTA/data/packages/$package
|
||||
echo -n ' "'$PACKAGE'": {
|
||||
"WEB_TEMPLATE": "'$WEB_TEMPLATE'",
|
||||
"BACKEND_TEMPLATE": "'$BACKEND_TEMPLATE'",
|
||||
"PROXY_TEMPLATE": "'$PROXY_TEMPLATE'",
|
||||
"DNS_TEMPLATE": "'$DNS_TEMPLATE'",
|
||||
"WEB_DOMAINS": "'$WEB_DOMAINS'",
|
||||
|
@ -65,7 +66,7 @@ shell_list() {
|
|||
package_data=$(cat $VESTA/data/packages/$package)
|
||||
package_data=$(echo "$package_data" |sed -e 's/unlimited/unlim/g')
|
||||
eval $package_data
|
||||
echo -n "$PACKAGE $WEB_TEMPLATE $WEB_DOMAINS $DNS_DOMAINS "
|
||||
echo -n "$PACKAGE $WEB_TEMPLATE $BACKEND_TEMPLATE $WEB_DOMAINS $DNS_DOMAINS "
|
||||
echo "$MAIL_DOMAINS $DATABASES $SHELL $DISK_QUOTA $BANDWIDTH"
|
||||
done
|
||||
}
|
||||
|
@ -75,7 +76,7 @@ plain_list() {
|
|||
for package in $packages; do
|
||||
source $VESTA/data/packages/$package
|
||||
PACKAGE=${package/.pkg/}
|
||||
echo -ne "$PACKAGE\t$WEB_TEMPLATE\t$PROXY_TEMPLATE\t$DNS_TEMPLATE\t"
|
||||
echo -ne "$PACKAGE\t$WEB_TEMPLATE\t$BACKEND_TEMPLATE\t$PROXY_TEMPLATE\t$DNS_TEMPLATE\t"
|
||||
echo -ne "$WEB_DOMAINS\t$WEB_ALIASES\t$DNS_DOMAINS\t$DNS_RECORDS\t"
|
||||
echo -ne "$MAIL_DOMAINS\t$MAIL_ACCOUNTS\t$DATABASES\t$CRON_JOBS\t"
|
||||
echo -e "$DISK_QUOTA\t$BANDWIDTH\t$NS\t$SHELL\t$BACKUPS\t$TIME\t$DATE"
|
||||
|
@ -84,13 +85,13 @@ plain_list() {
|
|||
|
||||
# CSV list function
|
||||
csv_list() {
|
||||
echo -n "PACKAGE,WEB_TEMPLATE,PROXY_TEMPLATE,DNS_TEMPLATE,"
|
||||
echo -n "PACKAGE,WEB_TEMPLATE,BACKEND_TEMPLATE,PROXY_TEMPLATE,DNS_TEMPLATE,"
|
||||
echo -n "WEB_DOMAINS,WEB_ALIASES,DNS_DOMAINS,DNS_RECORDS,"
|
||||
echo -n "MAIL_DOMAINS,MAIL_ACCOUNTS,DATABASES,CRON_JOBS,"
|
||||
echo "DISK_QUOTA,BANDWIDTH,NS,SHELL,BACKUPS,TIME,DATE"
|
||||
for package in $packages; do
|
||||
PACKAGE=${package/.pkg/}
|
||||
echo -n "$PACKAGE,$WEB_TEMPLATE,$PROXY_TEMPLATE,$DNS_TEMPLATE,"
|
||||
echo -n "$PACKAGE,$WEB_TEMPLATE,$BACKEND_TEMPLATE,$PROXY_TEMPLATE,$DNS_TEMPLATE,"
|
||||
echo -n "$WEB_DOMAINS,$WEB_ALIASES,$DNS_DOMAINS,$DNS_RECORDS,"
|
||||
echo -n "$MAIL_DOMAINS,$MAIL_ACCOUNTS,$DATABASES,$CRON_JOBS,"
|
||||
echo "$DISK_QUOTA,$BANDWIDTH,\"$NS\",$SHELL,$BACKUPS,$TIME,$DATE"
|
||||
|
|
|
@ -112,7 +112,7 @@ if [ -e "$USER_DATA/ssl/$domain.crt" ]; then
|
|||
crt=$(cat $USER_DATA/ssl/$domain.crt |sed ':a;N;$!ba;s/\n/\\n/g')
|
||||
|
||||
info=$(openssl x509 -text -in $USER_DATA/ssl/$domain.crt)
|
||||
subj=$(echo "$info" |grep Subject: |cut -f 2 -d =)
|
||||
subj=$(echo "$info" |grep Subject: |cut -f 2 -d =|cut -f 2 -d \")
|
||||
before=$(echo "$info" |grep Before: |sed -e "s/.*Before: //")
|
||||
after=$(echo "$info" |grep "After :" |sed -e "s/.*After : //")
|
||||
signature=$(echo "$info" |grep "Algorithm:" |head -n1 )
|
||||
|
|
|
@ -50,7 +50,13 @@ if [ -z "$PROXY_SYSTEM" ] || [ "$PROXY_SYSTEM" = 'remote' ]; then
|
|||
fi
|
||||
|
||||
# Restart system
|
||||
if [ ! -f "/etc/debian_version" ]; then
|
||||
service $PROXY_SYSTEM restart >/dev/null 2>&1
|
||||
else
|
||||
systemctl reset-failed $PROXY_SYSTEM
|
||||
systemctl restart $PROXY_SYSTEM > /dev/null 2>&1
|
||||
fi
|
||||
|
||||
if [ $? -ne 0 ]; then
|
||||
send_email_report
|
||||
check_result $E_RESTART "$PROXY_SYSTEM restart failed"
|
||||
|
|
|
@ -56,6 +56,7 @@ ftpc() {
|
|||
quote USER $USERNAME
|
||||
quote PASS $PASSWORD
|
||||
binary
|
||||
lcd $BACKUP
|
||||
$1
|
||||
$2
|
||||
$3
|
||||
|
@ -289,7 +290,7 @@ if [ "$web" != 'no' ] && [ ! -z "$WEB_SYSTEM" ]; then
|
|||
if [ -z "$web" ] || [ "$web" = '*' ]; then
|
||||
domains="$backup_domains"
|
||||
else
|
||||
echo "$web" |tr ',' '\n' > $tmpdir/selected.txt
|
||||
echo "$web" | tr ',' '\n' | sed -e "s/^/^/" > $tmpdir/selected.txt
|
||||
domains=$(echo "$backup_domains" |egrep -f $tmpdir/selected.txt)
|
||||
fi
|
||||
|
||||
|
@ -409,7 +410,7 @@ if [ "$web" != 'no' ] && [ ! -z "$WEB_SYSTEM" ]; then
|
|||
chown $user $tmpdir
|
||||
chmod u+w $HOMEDIR/$user/web/$domain
|
||||
sudo -u $user tar -xzpf $tmpdir/web/$domain/domain_data.tar.gz \
|
||||
-C $HOMEDIR/$user/web/$domain/ --exclude=logs/* \
|
||||
-C $HOMEDIR/$user/web/$domain/ --exclude=./logs/* \
|
||||
2> $HOMEDIR/$user/web/$domain/restore_errors.log
|
||||
if [ -e "$HOMEDIR/$user/web/$domain/restore_errors.log" ]; then
|
||||
chown $user:$user $HOMEDIR/$user/web/$domain/restore_errors.log
|
||||
|
@ -458,7 +459,7 @@ if [ "$dns" != 'no' ] && [ ! -z "$DNS_SYSTEM" ]; then
|
|||
if [ -z "$dns" ] || [ "$dns" = '*' ]; then
|
||||
domains="$backup_domains"
|
||||
else
|
||||
echo "$dns" |tr ',' '\n' > $tmpdir/selected.txt
|
||||
echo "$dns" | tr ',' '\n' | sed -e "s/^/^/" > $tmpdir/selected.txt
|
||||
domains=$(echo "$backup_domains" |egrep -f $tmpdir/selected.txt)
|
||||
fi
|
||||
|
||||
|
@ -538,7 +539,7 @@ if [ "$mail" != 'no' ] && [ ! -z "$MAIL_SYSTEM" ]; then
|
|||
if [ -z "$mail" ] || [ "$mail" = '*' ]; then
|
||||
domains="$backup_domains"
|
||||
else
|
||||
echo "$mail" |tr ',' '\n' > $tmpdir/selected.txt
|
||||
echo "$mail" | tr ',' '\n' | sed -e "s/^/^/" > $tmpdir/selected.txt
|
||||
domains=$(echo "$backup_domains" |egrep -f $tmpdir/selected.txt)
|
||||
fi
|
||||
|
||||
|
@ -635,7 +636,7 @@ if [ "$db" != 'no' ] && [ ! -z "$DB_SYSTEM" ]; then
|
|||
if [ -z "$db" ] || [ "$db" = '*' ]; then
|
||||
databases="$backup_databases"
|
||||
else
|
||||
echo "$db" |tr ',' '\n' > $tmpdir/selected.txt
|
||||
echo "$db" |tr ',' '\n' | sed -e "s/$/$/" > $tmpdir/selected.txt
|
||||
databases=$(echo "$backup_databases" |egrep -f $tmpdir/selected.txt)
|
||||
fi
|
||||
|
||||
|
|
|
@ -23,6 +23,19 @@ udir=$8
|
|||
source $VESTA/func/main.sh
|
||||
source $VESTA/conf/vesta.conf
|
||||
|
||||
# Check backup ownership function
|
||||
is_backup_available() {
|
||||
passed=false
|
||||
if [[ $2 =~ ^$1.[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]_[0-9][0-9]-[0-9][0-9]-[0-9][0-9].tar$ ]]; then
|
||||
passed=true
|
||||
elif [[ $2 =~ ^$1.[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9].tar$ ]]; then
|
||||
passed=true
|
||||
fi
|
||||
|
||||
if [ $passed = false ]; then
|
||||
check_result $E_FORBIDEN "permission denied"
|
||||
fi
|
||||
}
|
||||
|
||||
#----------------------------------------------------------#
|
||||
# Verifications #
|
||||
|
@ -34,6 +47,7 @@ is_system_enabled "$BACKUP_SYSTEM" 'BACKUP_SYSTEM'
|
|||
is_object_valid 'user' 'USER' "$user"
|
||||
is_backup_enabled
|
||||
is_backup_scheduled 'restore'
|
||||
is_backup_available "$user" "$backup"
|
||||
|
||||
|
||||
#----------------------------------------------------------#
|
||||
|
|
|
@ -84,6 +84,22 @@ OLD_IFS=$IFS
|
|||
IFS=$'\n'
|
||||
|
||||
# User loop
|
||||
search_user=$(ls -1 $VESTA/data/users |grep $object)
|
||||
for user in $search_user; do
|
||||
if [ -e "$VESTA/data/users/$user/user.conf" ]; then
|
||||
source $VESTA/data/users/$user/user.conf
|
||||
((i ++))
|
||||
type=$(echo $type|cut -f1 -d \.)
|
||||
str="ID='$i' USER='$user' TYPE='user' KEY='$user'"
|
||||
str="$str RESULT='$user' ALIAS=''"
|
||||
str="$str LINK='$user' PARENT=''"
|
||||
str="$str SUSPENDED='$SUSPENDED' TIME='$TIME'"
|
||||
str="$str DATE='$DATE'"
|
||||
echo $str >> $conf
|
||||
fi
|
||||
done
|
||||
|
||||
# User data loop
|
||||
for user in $(ls $VESTA/data/users/); do
|
||||
# Search query
|
||||
search=$(grep "$object" \
|
||||
|
@ -154,12 +170,13 @@ for user in $(ls $VESTA/data/users/); do
|
|||
|
||||
# DNS Records
|
||||
if [ "$type" = 'dns' ]; then
|
||||
if [ -n "$(echo $RECORD |grep $object)" ]; then
|
||||
if [ -n "$(echo $RECORD $VALUE |grep $object)" ]; then
|
||||
dom="$(echo $row|cut -f 1 -d :|cut -f 9 -d /|sed 's/.conf//')"
|
||||
key="RECORD"
|
||||
result="$RECORD.$DOMAIN"
|
||||
result="$RECORD.$dom"
|
||||
suspended=$SUSPENDED
|
||||
object_link=$ID
|
||||
object_parent=$DOMAIN
|
||||
object_parent=$dom
|
||||
object_time=$TIME
|
||||
object_date=$DATE
|
||||
((i ++))
|
||||
|
|
|
@ -23,12 +23,34 @@ source $VESTA/conf/vesta.conf
|
|||
#----------------------------------------------------------#
|
||||
|
||||
lecounter=0
|
||||
hostname=$(hostname)
|
||||
|
||||
echo "[$(date)] : -----------------------------------------------------------------------------------" >> /usr/local/vesta/log/letsencrypt_cron.log
|
||||
|
||||
# Checking user certificates
|
||||
for user in $($BIN/v-list-users plain |cut -f 1); do
|
||||
USER_DATA=$VESTA/data/users/$user
|
||||
|
||||
for domain in $(search_objects 'web' 'LETSENCRYPT' 'yes' 'DOMAIN'); do
|
||||
|
||||
limit_check=1
|
||||
fail_counter=$(get_web_counter "$user" "$domain" 'LETSENCRYPT_FAIL_COUNT')
|
||||
|
||||
if [[ "$hostname" = "$domain" ]]; then
|
||||
if [[ "$fail_counter" -eq 7 ]]; then
|
||||
limit_check=0
|
||||
fi
|
||||
if [[ "$fail_counter" -eq 8 ]]; then
|
||||
fail_counter=$(alter_web_counter "$user" "$domain" 'LETSENCRYPT_FAIL_COUNT')
|
||||
send_email_to_admin "LetsEncrypt renewing hostname $hostname" "Warning: hostname $domain failed for LetsEncrypt renewing"
|
||||
fi
|
||||
fi
|
||||
|
||||
if [[ "$fail_counter" -ge 7 ]] && [[ "$limit_check" -eq 1 ]]; then
|
||||
# echo "$domain failed $fail_counter times for LetsEncrypt renewing, skipping"
|
||||
echo "[$(date)] : $domain failed $fail_counter times for LetsEncrypt renewing, skipping" >> /usr/local/vesta/log/letsencrypt_cron.log
|
||||
continue;
|
||||
fi
|
||||
crt_data=$(openssl x509 -text -in $USER_DATA/ssl/$domain.crt)
|
||||
not_after=$(echo "$crt_data" |grep "Not After" |cut -f 2,3,4 -d :)
|
||||
expiration=$(date -d "$not_after" +%s)
|
||||
|
@ -37,7 +59,7 @@ for user in $($BIN/v-list-users plain |cut -f 1); do
|
|||
days_valid=$((seconds_valid / 86400))
|
||||
if [[ "$days_valid" -lt 31 ]]; then
|
||||
if [ $lecounter -gt 0 ]; then
|
||||
sleep 10
|
||||
sleep 120
|
||||
fi
|
||||
((lecounter++))
|
||||
aliases=$(echo "$crt_data" |grep DNS:)
|
||||
|
@ -47,7 +69,15 @@ for user in $($BIN/v-list-users plain |cut -f 1); do
|
|||
aliases=$(echo "$aliases" |sed -e ':a;N;$!ba;s/\n/,/g')
|
||||
msg=$($BIN/v-add-letsencrypt-domain $user $domain $aliases)
|
||||
if [ $? -ne 0 ]; then
|
||||
if [[ $msg == *"is suspended" ]]; then
|
||||
echo "[$(date)] : SUSPENDED: $domain $msg" >> /usr/local/vesta/log/letsencrypt_cron.log
|
||||
else
|
||||
echo "[$(date)] : $domain $msg" >> /usr/local/vesta/log/letsencrypt_cron.log
|
||||
echo "$domain $msg"
|
||||
fail_counter=$(alter_web_counter "$user" "$domain" 'LETSENCRYPT_FAIL_COUNT')
|
||||
echo "[$(date)] : fail_counter = $fail_counter" >> /usr/local/vesta/log/letsencrypt_cron.log
|
||||
echo "fail_counter = $fail_counter"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
done
|
||||
|
|
|
@ -61,13 +61,13 @@ fi
|
|||
# Parsing data
|
||||
if [ "$period" = 'daily' ]; then
|
||||
mem=$(free -m)
|
||||
used=$(echo "$mem" |grep Mem |awk '{print $3}')
|
||||
used=$(echo "$mem" |awk '(NR == 2)' |awk '{print $3}')
|
||||
if [ -z "$(echo "$mem" | grep available)" ]; then
|
||||
free=$(echo "$mem" |grep buffers/cache |awk '{print $4}')
|
||||
free=$(echo "$mem" |grep buff/cache |awk '{print $4}')
|
||||
else
|
||||
free=$(echo "$mem" |grep Mem |awk '{print $7}')
|
||||
free=$(echo "$mem" |awk '(NR == 2)' |awk '{print $7}')
|
||||
fi
|
||||
swap=$(echo "$mem" |grep Swap |awk '{print $3}')
|
||||
swap=$(echo "$mem" |awk '(NR == 3)' |awk '{print $3}')
|
||||
|
||||
# Updating rrd
|
||||
rrdtool update $RRD/mem/mem.rrd N:$used:$swap:$free
|
||||
|
|
|
@ -28,6 +28,26 @@ source $VESTA/conf/vesta.conf
|
|||
# Checking arg number
|
||||
check_args '1' "$#" 'PACKAGE'
|
||||
|
||||
valid=0
|
||||
if [ "$package" = "vesta" ]; then
|
||||
valid=1
|
||||
fi
|
||||
if [ "$package" = "vesta-nginx" ]; then
|
||||
valid=1
|
||||
fi
|
||||
if [ "$package" = "vesta-php" ]; then
|
||||
valid=1
|
||||
fi
|
||||
if [ "$package" = "vesta-ioncube" ]; then
|
||||
valid=1
|
||||
fi
|
||||
if [ "$package" = "vesta-softaculous" ]; then
|
||||
valid=1
|
||||
fi
|
||||
if [ $valid -eq 0 ]; then
|
||||
echo "Package $package is not valid"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
#----------------------------------------------------------#
|
||||
# Action #
|
||||
|
|
|
@ -322,7 +322,7 @@ delete_pgsql_database() {
|
|||
psql_connect $HOST
|
||||
|
||||
query="REVOKE ALL PRIVILEGES ON DATABASE $database FROM $DBUSER"
|
||||
psql_qyery "$query" > /dev/null
|
||||
psql_query "$query" > /dev/null
|
||||
|
||||
query="DROP DATABASE $database"
|
||||
psql_query "$query" > /dev/null
|
||||
|
|
|
@ -412,6 +412,24 @@ update_domain_zone() {
|
|||
VALUE=$(idn --quiet -a -t "$VALUE")
|
||||
fi
|
||||
|
||||
# Split long TXT entries into 255 chunks
|
||||
if [ "$TYPE" = 'TXT' ]; then
|
||||
txtlength=${#VALUE}
|
||||
if [ $txtlength -gt 255 ]; then
|
||||
already_chunked=0
|
||||
if [[ $VALUE == *"\" \""* ]] || [[ $VALUE == *"\"\""* ]]; then
|
||||
already_chunked=1
|
||||
fi
|
||||
if [ $already_chunked -eq 0 ]; then
|
||||
if [[ ${VALUE:0:1} = '"' ]]; then
|
||||
txtlength=$(( $txtlength - 2 ))
|
||||
VALUE=${VALUE:1:txtlength}
|
||||
fi
|
||||
VALUE=$(echo $VALUE | fold -w 255 | xargs -I '$' echo -n '"$"')
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ "$SUSPENDED" != 'yes' ]; then
|
||||
eval echo -e "\"$fields\""|sed "s/%quote%/'/g" >> $zn_conf
|
||||
fi
|
||||
|
|
111
func/main.sh
111
func/main.sh
|
@ -296,6 +296,20 @@ is_dir_symlink() {
|
|||
fi
|
||||
}
|
||||
|
||||
# Check if file exists
|
||||
if_file_exists() {
|
||||
if [[ -f "$1" ]]; then
|
||||
check_result $E_FORBIDEN "$1 file exists"
|
||||
fi
|
||||
}
|
||||
|
||||
# Check if directory exists
|
||||
if_dir_exists() {
|
||||
if [[ -d "$1" ]]; then
|
||||
check_result $E_FORBIDEN "$1 directory exists"
|
||||
fi
|
||||
}
|
||||
|
||||
# Get object value
|
||||
get_object_value() {
|
||||
object=$(grep "$2='$3'" $USER_DATA/$1.conf)
|
||||
|
@ -817,6 +831,23 @@ is_format_valid_shell() {
|
|||
exit $E_INVALID
|
||||
fi
|
||||
}
|
||||
|
||||
format_no_quotes() {
|
||||
exclude="['|\"]"
|
||||
if [[ "$1" =~ $exclude ]]; then
|
||||
check_result "$E_INVALID" "Invalid $2 contains qoutes (\" or ') :: $1"
|
||||
fi
|
||||
is_no_new_line_format "$1"
|
||||
}
|
||||
|
||||
is_no_new_line_format() {
|
||||
test=$(echo "$1" | head -n1 );
|
||||
if [[ "$test" != "$1" ]]; then
|
||||
check_result "$E_INVALID" "invalid value :: $1"
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
# Format validation controller
|
||||
is_format_valid() {
|
||||
for arg_name in $*; do
|
||||
|
@ -825,6 +856,7 @@ is_format_valid() {
|
|||
case $arg_name in
|
||||
account) is_user_format_valid "$arg" "$arg_name";;
|
||||
action) is_fw_action_format_valid "$arg";;
|
||||
alias) is_alias_format_valid "$arg" ;;
|
||||
aliases) is_alias_format_valid "$arg" ;;
|
||||
antispam) is_boolean_format_valid "$arg" 'antispam' ;;
|
||||
antivirus) is_boolean_format_valid "$arg" 'antivirus' ;;
|
||||
|
@ -850,6 +882,7 @@ is_format_valid() {
|
|||
host) is_object_format_valid "$arg" "$arg_name" ;;
|
||||
hour) is_cron_format_valid "$arg" $arg_name ;;
|
||||
id) is_int_format_valid "$arg" 'id' ;;
|
||||
interface) is_interface_format_valid "$arg" ;;
|
||||
ip) is_ip_format_valid "$arg" ;;
|
||||
ip_name) is_domain_format_valid "$arg" 'IP name';;
|
||||
ip_status) is_ip_status_format_valid "$arg" ;;
|
||||
|
@ -939,3 +972,81 @@ format_aliases() {
|
|||
aliases=$(echo "$aliases" |tr '\n' ',' |sed -e "s/,$//")
|
||||
fi
|
||||
}
|
||||
|
||||
alter_web_counter() {
|
||||
user=$1
|
||||
domain=$2
|
||||
USER_DATA=$VESTA/data/users/$user
|
||||
|
||||
varc=$3
|
||||
vard="\$${varc}"
|
||||
counter=$(get_object_value 'web' 'DOMAIN' "$domain" "$vard")
|
||||
|
||||
if [ -z "$counter" ]; then
|
||||
add_object_key "web" 'DOMAIN' "$domain" "$varc" "TIME"
|
||||
counter=0
|
||||
fi
|
||||
|
||||
((counter++))
|
||||
backup_counter=$counter
|
||||
|
||||
update_object_value 'web' 'DOMAIN' "$domain" "$vard" "$counter"
|
||||
counter=$backup_counter
|
||||
|
||||
echo $counter
|
||||
}
|
||||
|
||||
reset_web_counter() {
|
||||
user=$1
|
||||
domain=$2
|
||||
USER_DATA=$VESTA/data/users/$user
|
||||
|
||||
varc=$3
|
||||
vard="\$${varc}"
|
||||
|
||||
update_object_value 'web' 'DOMAIN' "$domain" "$vard" "0"
|
||||
}
|
||||
|
||||
get_web_counter() {
|
||||
user=$1
|
||||
domain=$2
|
||||
USER_DATA=$VESTA/data/users/$user
|
||||
|
||||
varc=$3
|
||||
vard="\$${varc}"
|
||||
counter=$(get_object_value 'web' 'DOMAIN' "$domain" "$vard")
|
||||
|
||||
if [ -z "$counter" ]; then
|
||||
counter=0
|
||||
fi
|
||||
|
||||
echo $counter
|
||||
}
|
||||
|
||||
# Simple chmod wrapper that skips symlink files after glob expand
|
||||
# Taken from HestiaCP
|
||||
no_symlink_chmod() {
|
||||
local filemode=$1; shift;
|
||||
|
||||
for i in "$@"; do
|
||||
[[ -L ${i} ]] && continue
|
||||
|
||||
chmod "${filemode}" "${i}"
|
||||
done
|
||||
}
|
||||
|
||||
# $1 = subject
|
||||
# $2 = body
|
||||
send_email_to_admin() {
|
||||
email=$(grep CONTACT /usr/local/vesta/data/users/admin/user.conf)
|
||||
email=$(echo "$email" | cut -f 2 -d "'")
|
||||
if [ -z "$email" ]; then
|
||||
if [ ! -z "$NOTIFY_ADMIN_FULL_BACKUP" ]; then
|
||||
email=$NOTIFY_ADMIN_FULL_BACKUP
|
||||
fi
|
||||
fi
|
||||
if [ -z "$email" ]; then
|
||||
return;
|
||||
fi
|
||||
echo "$2" | $SENDMAIL -s "$1" "$email" 'yes'
|
||||
}
|
||||
|
|
|
@ -51,7 +51,7 @@ rebuild_user_conf() {
|
|||
mkdir -p $HOMEDIR/$user/conf
|
||||
chmod a+x $HOMEDIR/$user
|
||||
chmod a+x $HOMEDIR/$user/conf
|
||||
chown $user:$user $HOMEDIR/$user
|
||||
chown --no-dereference $user:$user $HOMEDIR/$user
|
||||
chown root:root $HOMEDIR/$user/conf
|
||||
|
||||
# Update disk pipe
|
||||
|
@ -80,7 +80,7 @@ rebuild_user_conf() {
|
|||
chmod 751 $HOMEDIR/$user/conf/web
|
||||
chmod 751 $HOMEDIR/$user/web
|
||||
chmod 771 $HOMEDIR/$user/tmp
|
||||
chown $user:$user $HOMEDIR/$user/web
|
||||
chown --no-dereference $user:$user $HOMEDIR/$user/web
|
||||
if [ -z "$create_user" ]; then
|
||||
$BIN/v-rebuild-web-domains $user $restart
|
||||
fi
|
||||
|
@ -183,10 +183,10 @@ rebuild_web_domain_conf() {
|
|||
fi
|
||||
|
||||
# Set folder permissions
|
||||
chmod 551 $HOMEDIR/$user/web/$domain \
|
||||
no_symlink_chmod 551 $HOMEDIR/$user/web/$domain \
|
||||
$HOMEDIR/$user/web/$domain/stats \
|
||||
$HOMEDIR/$user/web/$domain/logs
|
||||
chmod 751 $HOMEDIR/$user/web/$domain/private \
|
||||
no_symlink_chmod 751 $HOMEDIR/$user/web/$domain/private \
|
||||
$HOMEDIR/$user/web/$domain/cgi-bin \
|
||||
$HOMEDIR/$user/web/$domain/public_html \
|
||||
$HOMEDIR/$user/web/$domain/public_shtml \
|
||||
|
@ -194,7 +194,7 @@ rebuild_web_domain_conf() {
|
|||
chmod 640 /var/log/$WEB_SYSTEM/domains/$domain.*
|
||||
|
||||
# Set ownership
|
||||
chown $user:$user $HOMEDIR/$user/web/$domain \
|
||||
chown --no-dereference $user:$user $HOMEDIR/$user/web/$domain \
|
||||
$HOMEDIR/$user/web/$domain/private \
|
||||
$HOMEDIR/$user/web/$domain/cgi-bin \
|
||||
$HOMEDIR/$user/web/$domain/public_html \
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
location /phpmyadmin {
|
||||
alias /usr/share/phpmyadmin/;
|
||||
alias /usr/share/phpmyadmin;
|
||||
|
||||
location ~ /(libraries|setup) {
|
||||
return 404;
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
location /phppgadmin {
|
||||
alias /usr/share/phppgadmin/;
|
||||
alias /usr/share/phppgadmin;
|
||||
|
||||
location ~ ^/phppgadmin/(.*\.php)$ {
|
||||
alias /usr/share/phppgadmin/$1;
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
location /webmail {
|
||||
alias /var/lib/roundcube/;
|
||||
alias /var/lib/roundcube;
|
||||
|
||||
location ~ /(config|temp|logs) {
|
||||
return 404;
|
||||
|
|
|
@ -15,6 +15,7 @@ Alias /phpmyadmin /usr/share/phpmyadmin
|
|||
php_admin_flag allow_url_fopen Off
|
||||
php_value include_path .
|
||||
php_admin_value upload_tmp_dir /var/lib/phpmyadmin/tmp
|
||||
php_admin_value sys_temp_dir /var/lib/phpmyadmin/tmp
|
||||
php_admin_value open_basedir /usr/share/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/:/usr/share/php/php-gettext
|
||||
</IfModule>
|
||||
|
||||
|
|
|
@ -17,6 +17,7 @@
|
|||
Options +Includes -Indexes +ExecCGI
|
||||
php_admin_value open_basedir %sdocroot%:%home%/%user%/tmp
|
||||
php_admin_value upload_tmp_dir %home%/%user%/tmp
|
||||
php_admin_value sys_temp_dir %home%/%user%/tmp
|
||||
php_admin_value session.save_path %home%/%user%/tmp
|
||||
php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f info@%domain_idn%"
|
||||
</Directory>
|
||||
|
|
|
@ -16,6 +16,7 @@
|
|||
Options +Includes -Indexes +ExecCGI
|
||||
php_admin_value open_basedir %docroot%:%home%/%user%/tmp
|
||||
php_admin_value upload_tmp_dir %home%/%user%/tmp
|
||||
php_admin_value sys_temp_dir %home%/%user%/tmp
|
||||
php_admin_value session.save_path %home%/%user%/tmp
|
||||
php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f info@%domain_idn%"
|
||||
</Directory>
|
||||
|
|
|
@ -17,6 +17,7 @@
|
|||
Options +Includes -Indexes +ExecCGI
|
||||
php_admin_value open_basedir %sdocroot%:%home%/%user%/tmp
|
||||
php_admin_value upload_tmp_dir %home%/%user%/tmp
|
||||
php_admin_value sys_temp_dir %home%/%user%/tmp
|
||||
php_admin_value session.save_path %home%/%user%/tmp
|
||||
</Directory>
|
||||
<Directory %home%/%user%/web/%domain%/stats>
|
||||
|
|
|
@ -16,6 +16,7 @@
|
|||
Options +Includes -Indexes +ExecCGI
|
||||
php_admin_value open_basedir %docroot%:%home%/%user%/tmp
|
||||
php_admin_value upload_tmp_dir %home%/%user%/tmp
|
||||
php_admin_value sys_temp_dir %home%/%user%/tmp
|
||||
php_admin_value session.save_path %home%/%user%/tmp
|
||||
</Directory>
|
||||
<Directory %home%/%user%/web/%domain%/stats>
|
||||
|
|
|
@ -24,6 +24,7 @@
|
|||
php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f info@%domain_idn%"
|
||||
php_admin_value open_basedir %sdocroot%:%home%/%user%/tmp:/bin:/usr/bin:/usr/local/bin:/var/www/html:/tmp:/usr/share:/etc/phpMyAdmin:/etc/phpmyadmin:/var/lib/phpmyadmin:/etc/roundcubemail:/etc/roundcube:/var/lib/roundcube
|
||||
php_admin_value upload_tmp_dir %home%/%user%/tmp
|
||||
php_admin_value sys_temp_dir %home%/%user%/tmp
|
||||
php_admin_value session.save_path %home%/%user%/tmp
|
||||
</Directory>
|
||||
<Directory %home%/%user%/web/%domain%/stats>
|
||||
|
|
|
@ -14,7 +14,6 @@
|
|||
<Directory %docroot%>
|
||||
AllowOverride All
|
||||
Options +Includes -Indexes +ExecCGI
|
||||
php_admin_value upload_tmp_dir %home%/%user%/tmp
|
||||
php_admin_value upload_max_filesize 10M
|
||||
php_admin_value max_execution_time 20
|
||||
php_admin_value post_max_size 8M
|
||||
|
@ -24,6 +23,7 @@
|
|||
php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f info@%domain_idn%"
|
||||
php_admin_value open_basedir %docroot%:%home%/%user%/tmp:/bin:/usr/bin:/usr/local/bin:/var/www/html:/tmp:/usr/share:/etc/phpMyAdmin:/etc/phpmyadmin:/var/lib/phpmyadmin:/etc/roundcubemail:/etc/roundcube:/var/lib/roundcube
|
||||
php_admin_value upload_tmp_dir %home%/%user%/tmp
|
||||
php_admin_value sys_temp_dir %home%/%user%/tmp
|
||||
php_admin_value session.save_path %home%/%user%/tmp
|
||||
</Directory>
|
||||
<Directory %home%/%user%/web/%domain%/stats>
|
||||
|
|
|
@ -17,6 +17,7 @@
|
|||
Options +Includes -Indexes +ExecCGI
|
||||
php_admin_value open_basedir %sdocroot%:%home%/%user%/tmp
|
||||
php_admin_value upload_tmp_dir %home%/%user%/tmp
|
||||
php_admin_value sys_temp_dir %home%/%user%/tmp
|
||||
php_admin_value session.save_path %home%/%user%/tmp
|
||||
Action phpcgi-script /cgi-bin/php
|
||||
<Files *.php>
|
||||
|
|
|
@ -16,6 +16,7 @@
|
|||
Options +Includes -Indexes +ExecCGI
|
||||
php_admin_value open_basedir %docroot%:%home%/%user%/tmp
|
||||
php_admin_value upload_tmp_dir %home%/%user%/tmp
|
||||
php_admin_value sys_temp_dir %home%/%user%/tmp
|
||||
php_admin_value session.save_path %home%/%user%/tmp
|
||||
Action phpcgi-script /cgi-bin/php
|
||||
<Files *.php>
|
||||
|
|
|
@ -17,6 +17,7 @@
|
|||
Options +Includes -Indexes +ExecCGI
|
||||
php_admin_value open_basedir %sdocroot%:%home%/%user%/tmp
|
||||
php_admin_value upload_tmp_dir %home%/%user%/tmp
|
||||
php_admin_value sys_temp_dir %home%/%user%/tmp
|
||||
php_admin_value session.save_path %home%/%user%/tmp
|
||||
<Files *.php>
|
||||
SetHandler fcgid-script
|
||||
|
|
|
@ -16,6 +16,7 @@
|
|||
Options +Includes -Indexes +ExecCGI
|
||||
php_admin_value open_basedir %docroot%:%home%/%user%/tmp
|
||||
php_admin_value upload_tmp_dir %home%/%user%/tmp
|
||||
php_admin_value sys_temp_dir %home%/%user%/tmp
|
||||
php_admin_value session.save_path %home%/%user%/tmp
|
||||
<Files *.php>
|
||||
SetHandler fcgid-script
|
||||
|
|
|
@ -11,6 +11,7 @@ pm.max_requests = 4000
|
|||
pm.process_idle_timeout = 10s
|
||||
pm.status_path = /status
|
||||
|
||||
php_admin_value[sys_temp_dir] = /home/%user%/tmp
|
||||
php_admin_value[upload_tmp_dir] = /home/%user%/tmp
|
||||
php_admin_value[session.save_path] = /home/%user%/tmp
|
||||
|
||||
|
|
|
@ -14,6 +14,7 @@ pm.max_requests = 4000
|
|||
pm.process_idle_timeout = 10s
|
||||
pm.status_path = /status
|
||||
|
||||
php_admin_value[sys_temp_dir] = /home/%user%/tmp
|
||||
php_admin_value[upload_tmp_dir] = /home/%user%/tmp
|
||||
php_admin_value[session.save_path] = /home/%user%/tmp
|
||||
|
||||
|
|
|
@ -18,7 +18,7 @@
|
|||
<body>
|
||||
<h1>%domain%</h1>
|
||||
<div>
|
||||
<a href="http://vestacp.com/">Powered by VESTA</a>
|
||||
<a href="https://vestacp.com/">Server control panel by VESTA</a>
|
||||
</div>
|
||||
</body>
|
||||
|
||||
|
|
|
@ -18,7 +18,7 @@
|
|||
<body>
|
||||
<h1>%domain%</h1>
|
||||
<div>
|
||||
<a href="http://vestacp.com/">Powered by VESTA</a>
|
||||
<a href="https://vestacp.com/">Server control panel by VESTA</a>
|
||||
</div>
|
||||
</body>
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
location /phpmyadmin {
|
||||
alias /usr/share/phpmyadmin/;
|
||||
alias /usr/share/phpmyadmin;
|
||||
|
||||
location ~ /(libraries|setup) {
|
||||
return 404;
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
location /phppgadmin {
|
||||
alias /usr/share/phppgadmin/;
|
||||
alias /usr/share/phppgadmin;
|
||||
|
||||
location ~ ^/phppgadmin/(.*\.php)$ {
|
||||
alias /usr/share/phppgadmin/$1;
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
location /webmail {
|
||||
alias /var/lib/roundcube/;
|
||||
alias /var/lib/roundcube;
|
||||
|
||||
location ~ /(config|temp|logs) {
|
||||
return 404;
|
||||
|
|
|
@ -15,6 +15,7 @@ Alias /phpmyadmin /usr/share/phpmyadmin
|
|||
php_admin_flag allow_url_fopen Off
|
||||
php_value include_path .
|
||||
php_admin_value upload_tmp_dir /var/lib/phpmyadmin/tmp
|
||||
php_admin_value sys_temp_dir /var/lib/phpmyadmin/tmp
|
||||
php_admin_value open_basedir /usr/share/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/:/usr/share/php/php-gettext
|
||||
</IfModule>
|
||||
|
||||
|
|
|
@ -17,6 +17,7 @@
|
|||
Options +Includes -Indexes +ExecCGI
|
||||
php_admin_value open_basedir %sdocroot%:%home%/%user%/tmp
|
||||
php_admin_value upload_tmp_dir %home%/%user%/tmp
|
||||
php_admin_value sys_temp_dir %home%/%user%/tmp
|
||||
php_admin_value session.save_path %home%/%user%/tmp
|
||||
php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f info@%domain_idn%"
|
||||
</Directory>
|
||||
|
|
|
@ -16,6 +16,7 @@
|
|||
Options +Includes -Indexes +ExecCGI
|
||||
php_admin_value open_basedir %docroot%:%home%/%user%/tmp
|
||||
php_admin_value upload_tmp_dir %home%/%user%/tmp
|
||||
php_admin_value sys_temp_dir %home%/%user%/tmp
|
||||
php_admin_value session.save_path %home%/%user%/tmp
|
||||
php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f info@%domain_idn%"
|
||||
</Directory>
|
||||
|
|
|
@ -17,6 +17,7 @@
|
|||
Options +Includes -Indexes +ExecCGI
|
||||
php_admin_value open_basedir %sdocroot%:%home%/%user%/tmp
|
||||
php_admin_value upload_tmp_dir %home%/%user%/tmp
|
||||
php_admin_value sys_temp_dir %home%/%user%/tmp
|
||||
php_admin_value session.save_path %home%/%user%/tmp
|
||||
</Directory>
|
||||
<Directory %home%/%user%/web/%domain%/stats>
|
||||
|
|
|
@ -16,6 +16,7 @@
|
|||
Options +Includes -Indexes +ExecCGI
|
||||
php_admin_value open_basedir %docroot%:%home%/%user%/tmp
|
||||
php_admin_value upload_tmp_dir %home%/%user%/tmp
|
||||
php_admin_value sys_temp_dir %home%/%user%/tmp
|
||||
php_admin_value session.save_path %home%/%user%/tmp
|
||||
</Directory>
|
||||
<Directory %home%/%user%/web/%domain%/stats>
|
||||
|
|
|
@ -24,6 +24,7 @@
|
|||
php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f info@%domain_idn%"
|
||||
php_admin_value open_basedir %sdocroot%:%home%/%user%/tmp:/bin:/usr/bin:/usr/local/bin:/var/www/html:/tmp:/usr/share:/etc/phpMyAdmin:/etc/phpmyadmin:/var/lib/phpmyadmin:/etc/roundcubemail:/etc/roundcube:/var/lib/roundcube
|
||||
php_admin_value upload_tmp_dir %home%/%user%/tmp
|
||||
php_admin_value sys_temp_dir %home%/%user%/tmp
|
||||
php_admin_value session.save_path %home%/%user%/tmp
|
||||
</Directory>
|
||||
<Directory %home%/%user%/web/%domain%/stats>
|
||||
|
|
|
@ -23,6 +23,7 @@
|
|||
php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f info@%domain_idn%"
|
||||
php_admin_value open_basedir %docroot%:%home%/%user%/tmp:/bin:/usr/bin:/usr/local/bin:/var/www/html:/tmp:/usr/share:/etc/phpMyAdmin:/etc/phpmyadmin:/var/lib/phpmyadmin:/etc/roundcubemail:/etc/roundcube:/var/lib/roundcube
|
||||
php_admin_value upload_tmp_dir %home%/%user%/tmp
|
||||
php_admin_value sys_temp_dir %home%/%user%/tmp
|
||||
php_admin_value session.save_path %home%/%user%/tmp
|
||||
</Directory>
|
||||
<Directory %home%/%user%/web/%domain%/stats>
|
||||
|
|
|
@ -17,6 +17,7 @@
|
|||
Options +Includes -Indexes +ExecCGI
|
||||
php_admin_value open_basedir %sdocroot%:%home%/%user%/tmp
|
||||
php_admin_value upload_tmp_dir %home%/%user%/tmp
|
||||
php_admin_value sys_temp_dir %home%/%user%/tmp
|
||||
php_admin_value session.save_path %home%/%user%/tmp
|
||||
Action phpcgi-script /cgi-bin/php
|
||||
<Files *.php>
|
||||
|
|
|
@ -16,6 +16,7 @@
|
|||
Options +Includes -Indexes +ExecCGI
|
||||
php_admin_value open_basedir %docroot%:%home%/%user%/tmp
|
||||
php_admin_value upload_tmp_dir %home%/%user%/tmp
|
||||
php_admin_value sys_temp_dir %home%/%user%/tmp
|
||||
php_admin_value session.save_path %home%/%user%/tmp
|
||||
Action phpcgi-script /cgi-bin/php
|
||||
<Files *.php>
|
||||
|
|
|
@ -17,6 +17,7 @@
|
|||
Options +Includes -Indexes +ExecCGI
|
||||
php_admin_value open_basedir %sdocroot%:%home%/%user%/tmp
|
||||
php_admin_value upload_tmp_dir %home%/%user%/tmp
|
||||
php_admin_value sys_temp_dir %home%/%user%/tmp
|
||||
php_admin_value session.save_path %home%/%user%/tmp
|
||||
<Files *.php>
|
||||
SetHandler fcgid-script
|
||||
|
|
|
@ -16,6 +16,7 @@
|
|||
Options +Includes -Indexes +ExecCGI
|
||||
php_admin_value open_basedir %docroot%:%home%/%user%/tmp
|
||||
php_admin_value upload_tmp_dir %home%/%user%/tmp
|
||||
php_admin_value sys_temp_dir %home%/%user%/tmp
|
||||
php_admin_value session.save_path %home%/%user%/tmp
|
||||
<Files *.php>
|
||||
SetHandler fcgid-script
|
||||
|
|
|
@ -11,6 +11,7 @@ pm.max_requests = 4000
|
|||
pm.process_idle_timeout = 10s
|
||||
pm.status_path = /status
|
||||
|
||||
php_admin_value[sys_temp_dir] = /home/%user%/tmp
|
||||
php_admin_value[upload_tmp_dir] = /home/%user%/tmp
|
||||
php_admin_value[session.save_path] = /home/%user%/tmp
|
||||
|
||||
|
|
|
@ -14,6 +14,7 @@ pm.max_requests = 4000
|
|||
pm.process_idle_timeout = 10s
|
||||
pm.status_path = /status
|
||||
|
||||
php_admin_value[sys_temp_dir] = /home/%user%/tmp
|
||||
php_admin_value[upload_tmp_dir] = /home/%user%/tmp
|
||||
php_admin_value[session.save_path] = /home/%user%/tmp
|
||||
|
||||
|
|
|
@ -18,7 +18,7 @@
|
|||
<body>
|
||||
<h1>%domain%</h1>
|
||||
<div>
|
||||
<a href="http://vestacp.com/">Powered by VESTA</a>
|
||||
<a href="https://vestacp.com/">Server control panel by VESTA</a>
|
||||
</div>
|
||||
</body>
|
||||
|
||||
|
|
|
@ -18,7 +18,7 @@
|
|||
<body>
|
||||
<h1>%domain%</h1>
|
||||
<div>
|
||||
<a href="http://vestacp.com/">Powered by VESTA</a>
|
||||
<a href="https://vestacp.com/">Server control panel by VESTA</a>
|
||||
</div>
|
||||
</body>
|
||||
|
||||
|
|
|
@ -138,7 +138,7 @@ acl_check_rcpt:
|
|||
acl_check_data:
|
||||
.ifdef CLAMD
|
||||
deny message = Message contains a virus ($malware_name) and has been rejected
|
||||
malware = *
|
||||
malware = */defer_ok
|
||||
condition = ${if eq{$acl_m0}{yes}{yes}{no}}
|
||||
.endif
|
||||
|
||||
|
@ -164,7 +164,7 @@ acl_check_data:
|
|||
|
||||
acl_check_mime:
|
||||
deny message = Blacklisted file extension detected
|
||||
condition = ${if match {${lc:$mime_filename}}{\N(\.ade|\.adp|\.bat|\.chm|\.cmd|\.com|\.cpl|\.exe|\.hta|\.ins|\.isp|\.jse|\.lib|\.lnk|\.mde|\.msc|\.msp|\.mst|\.pif|\.scr|\.sct|\.shb|\.sys|\.vb|\.vbe|\.vbs|\.vxd|\.wsc|\.wsf|\.wsh)$\N}{1}{0}}
|
||||
condition = ${if match {${lc:$mime_filename}}{\N(\.ade|\.adp|\.bat|\.chm|\.cmd|\.com|\.cpl|\.exe|\.hta|\.ins|\.isp|\.jse|\.lib|\.lnk|\.mde|\.msc|\.msp|\.mst|\.pif|\.scr|\.sct|\.shb|\.sys|\.vb|\.vbe|\.vbs|\.vxd|\.wsc|\.wsf|\.wsh|\.jar)$\N}{1}{0}}
|
||||
|
||||
accept
|
||||
|
||||
|
|
|
@ -75,7 +75,9 @@ http {
|
|||
set_real_ip_from 103.21.244.0/22;
|
||||
set_real_ip_from 103.22.200.0/22;
|
||||
set_real_ip_from 103.31.4.0/22;
|
||||
set_real_ip_from 104.16.0.0/12;
|
||||
set_real_ip_from 104.16.0.0/13;
|
||||
set_real_ip_from 104.24.0.0/14;
|
||||
#set_real_ip_from 104.16.0.0/12;
|
||||
set_real_ip_from 108.162.192.0/18;
|
||||
set_real_ip_from 131.0.72.0/22;
|
||||
set_real_ip_from 141.101.64.0/18;
|
||||
|
@ -97,10 +99,10 @@ http {
|
|||
|
||||
|
||||
# SSL PCI Compliance
|
||||
ssl_session_cache shared:SSL:10m;
|
||||
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
|
||||
ssl_session_cache shared:SSL:20m;
|
||||
ssl_protocols TLSv1.2 TLSv1.3;
|
||||
ssl_prefer_server_ciphers on;
|
||||
ssl_ciphers "ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4";
|
||||
ssl_ciphers "ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS";
|
||||
|
||||
|
||||
# Error pages
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
location /phpmyadmin {
|
||||
alias /usr/share/phpmyadmin/;
|
||||
alias /usr/share/phpmyadmin;
|
||||
|
||||
location ~ /(libraries|setup) {
|
||||
return 404;
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
location /phppgadmin {
|
||||
alias /usr/share/phppgadmin/;
|
||||
alias /usr/share/phppgadmin;
|
||||
|
||||
location ~ ^/phppgadmin/(.*\.php)$ {
|
||||
alias /usr/share/phppgadmin/$1;
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
location /webmail {
|
||||
alias /var/lib/roundcube/;
|
||||
alias /var/lib/roundcube;
|
||||
|
||||
location ~ /(config|temp|logs) {
|
||||
return 404;
|
||||
|
|
|
@ -15,6 +15,7 @@ Alias /phpmyadmin /usr/share/phpmyadmin
|
|||
php_admin_flag allow_url_fopen Off
|
||||
php_value include_path .
|
||||
php_admin_value upload_tmp_dir /var/lib/phpmyadmin/tmp
|
||||
php_admin_value sys_temp_dir /var/lib/phpmyadmin/tmp
|
||||
php_admin_value open_basedir /usr/share/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/:/usr/share/php/php-gettext
|
||||
</IfModule>
|
||||
|
||||
|
|
|
@ -17,6 +17,7 @@
|
|||
Options +Includes -Indexes +ExecCGI
|
||||
php_admin_value open_basedir %sdocroot%:%home%/%user%/tmp
|
||||
php_admin_value upload_tmp_dir %home%/%user%/tmp
|
||||
php_admin_value sys_temp_dir %home%/%user%/tmp
|
||||
php_admin_value session.save_path %home%/%user%/tmp
|
||||
php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f info@%domain_idn%"
|
||||
</Directory>
|
||||
|
|
|
@ -16,6 +16,7 @@
|
|||
Options +Includes -Indexes +ExecCGI
|
||||
php_admin_value open_basedir %docroot%:%home%/%user%/tmp
|
||||
php_admin_value upload_tmp_dir %home%/%user%/tmp
|
||||
php_admin_value sys_temp_dir %home%/%user%/tmp
|
||||
php_admin_value session.save_path %home%/%user%/tmp
|
||||
php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f info@%domain_idn%"
|
||||
</Directory>
|
||||
|
|
|
@ -17,6 +17,7 @@
|
|||
Options +Includes -Indexes +ExecCGI
|
||||
php_admin_value open_basedir %sdocroot%:%home%/%user%/tmp
|
||||
php_admin_value upload_tmp_dir %home%/%user%/tmp
|
||||
php_admin_value sys_temp_dir %home%/%user%/tmp
|
||||
php_admin_value session.save_path %home%/%user%/tmp
|
||||
</Directory>
|
||||
<Directory %home%/%user%/web/%domain%/stats>
|
||||
|
|
|
@ -16,6 +16,7 @@
|
|||
Options +Includes -Indexes +ExecCGI
|
||||
php_admin_value open_basedir %docroot%:%home%/%user%/tmp
|
||||
php_admin_value upload_tmp_dir %home%/%user%/tmp
|
||||
php_admin_value sys_temp_dir %home%/%user%/tmp
|
||||
php_admin_value session.save_path %home%/%user%/tmp
|
||||
</Directory>
|
||||
<Directory %home%/%user%/web/%domain%/stats>
|
||||
|
|
|
@ -24,6 +24,7 @@
|
|||
php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f info@%domain_idn%"
|
||||
php_admin_value open_basedir %sdocroot%:%home%/%user%/tmp:/bin:/usr/bin:/usr/local/bin:/var/www/html:/tmp:/usr/share:/etc/phpMyAdmin:/etc/phpmyadmin:/var/lib/phpmyadmin:/etc/roundcubemail:/etc/roundcube:/var/lib/roundcube
|
||||
php_admin_value upload_tmp_dir %home%/%user%/tmp
|
||||
php_admin_value sys_temp_dir %home%/%user%/tmp
|
||||
php_admin_value session.save_path %home%/%user%/tmp
|
||||
</Directory>
|
||||
<Directory %home%/%user%/web/%domain%/stats>
|
||||
|
|
|
@ -23,6 +23,7 @@
|
|||
php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f info@%domain_idn%"
|
||||
php_admin_value open_basedir %docroot%:%home%/%user%/tmp:/bin:/usr/bin:/usr/local/bin:/var/www/html:/tmp:/usr/share:/etc/phpMyAdmin:/etc/phpmyadmin:/var/lib/phpmyadmin:/etc/roundcubemail:/etc/roundcube:/var/lib/roundcube
|
||||
php_admin_value upload_tmp_dir %home%/%user%/tmp
|
||||
php_admin_value sys_temp_dir %home%/%user%/tmp
|
||||
php_admin_value session.save_path %home%/%user%/tmp
|
||||
</Directory>
|
||||
<Directory %home%/%user%/web/%domain%/stats>
|
||||
|
|
|
@ -17,6 +17,7 @@
|
|||
Options +Includes -Indexes +ExecCGI
|
||||
php_admin_value open_basedir %sdocroot%:%home%/%user%/tmp
|
||||
php_admin_value upload_tmp_dir %home%/%user%/tmp
|
||||
php_admin_value sys_temp_dir %home%/%user%/tmp
|
||||
php_admin_value session.save_path %home%/%user%/tmp
|
||||
Action phpcgi-script /cgi-bin/php
|
||||
<Files *.php>
|
||||
|
|
|
@ -16,6 +16,7 @@
|
|||
Options +Includes -Indexes +ExecCGI
|
||||
php_admin_value open_basedir %docroot%:%home%/%user%/tmp
|
||||
php_admin_value upload_tmp_dir %home%/%user%/tmp
|
||||
php_admin_value sys_temp_dir %home%/%user%/tmp
|
||||
php_admin_value session.save_path %home%/%user%/tmp
|
||||
Action phpcgi-script /cgi-bin/php
|
||||
<Files *.php>
|
||||
|
|
|
@ -17,6 +17,7 @@
|
|||
Options +Includes -Indexes +ExecCGI
|
||||
php_admin_value open_basedir %sdocroot%:%home%/%user%/tmp
|
||||
php_admin_value upload_tmp_dir %home%/%user%/tmp
|
||||
php_admin_value sys_temp_dir %home%/%user%/tmp
|
||||
php_admin_value session.save_path %home%/%user%/tmp
|
||||
<Files *.php>
|
||||
SetHandler fcgid-script
|
||||
|
|
|
@ -16,6 +16,7 @@
|
|||
Options +Includes -Indexes +ExecCGI
|
||||
php_admin_value open_basedir %docroot%:%home%/%user%/tmp
|
||||
php_admin_value upload_tmp_dir %home%/%user%/tmp
|
||||
php_admin_value sys_temp_dir %home%/%user%/tmp
|
||||
php_admin_value session.save_path %home%/%user%/tmp
|
||||
<Files *.php>
|
||||
SetHandler fcgid-script
|
||||
|
|
|
@ -0,0 +1,64 @@
|
|||
server {
|
||||
listen %ip%:%web_ssl_port%;
|
||||
server_name %domain_idn% %alias_idn%;
|
||||
root %sdocroot%/public;
|
||||
index index.php index.html index.htm;
|
||||
access_log /var/log/nginx/domains/%domain%.log combined;
|
||||
access_log /var/log/nginx/domains/%domain%.bytes bytes;
|
||||
error_log /var/log/nginx/domains/%domain%.error.log error;
|
||||
|
||||
ssl on;
|
||||
ssl_certificate %ssl_pem%;
|
||||
ssl_certificate_key %ssl_key%;
|
||||
|
||||
location / {
|
||||
try_files $uri $uri/ /index.php?$query_string;
|
||||
}
|
||||
|
||||
location ~* ^.+\.(jpeg|jpg|png|gif|bmp|ico|svg|css|js)$ {
|
||||
expires max;
|
||||
}
|
||||
|
||||
location = /favicon.ico { access_log off; log_not_found off; }
|
||||
location = /robots.txt { access_log off; log_not_found off; }
|
||||
|
||||
sendfile off;
|
||||
|
||||
location ~ \.php$ {
|
||||
fastcgi_split_path_info ^(.+\.php)(/.+)$;
|
||||
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
|
||||
|
||||
fastcgi_pass %backend_lsnr%;
|
||||
fastcgi_index index.php;
|
||||
include /etc/nginx/fastcgi_params;
|
||||
|
||||
fastcgi_intercept_errors off;
|
||||
fastcgi_buffer_size 16k;
|
||||
fastcgi_buffers 4 16k;
|
||||
}
|
||||
}
|
||||
|
||||
error_page 403 /error/404.html;
|
||||
error_page 404 /error/404.html;
|
||||
error_page 500 502 503 504 /error/50x.html;
|
||||
|
||||
location /error/ {
|
||||
alias %home%/%user%/web/%domain%/document_errors/;
|
||||
}
|
||||
|
||||
location ~* "/\.(htaccess|htpasswd)$" {
|
||||
deny all;
|
||||
return 404;
|
||||
}
|
||||
|
||||
location /vstats/ {
|
||||
alias %home%/%user%/web/%domain%/stats/;
|
||||
include %home%/%user%/conf/web/%domain%.auth*;
|
||||
}
|
||||
|
||||
include /etc/nginx/conf.d/phpmyadmin.inc*;
|
||||
include /etc/nginx/conf.d/phppgadmin.inc*;
|
||||
include /etc/nginx/conf.d/webmail.inc*;
|
||||
|
||||
include %home%/%user%/conf/web/snginx.%domain%.conf*;
|
||||
}
|
|
@ -0,0 +1,59 @@
|
|||
server {
|
||||
listen %ip%:%web_port%;
|
||||
server_name %domain_idn% %alias_idn%;
|
||||
root %docroot%/public;
|
||||
index index.php index.html index.htm;
|
||||
access_log /var/log/nginx/domains/%domain%.log combined;
|
||||
access_log /var/log/nginx/domains/%domain%.bytes bytes;
|
||||
error_log /var/log/nginx/domains/%domain%.error.log error;
|
||||
|
||||
location / {
|
||||
try_files $uri $uri/ /index.php?$query_string;
|
||||
}
|
||||
|
||||
location ~* ^.+\.(jpeg|jpg|png|gif|bmp|ico|svg|css|js)$ {
|
||||
expires max;
|
||||
}
|
||||
|
||||
location = /favicon.ico { access_log off; log_not_found off; }
|
||||
location = /robots.txt { access_log off; log_not_found off; }
|
||||
|
||||
sendfile off;
|
||||
|
||||
location ~ \.php$ {
|
||||
fastcgi_split_path_info ^(.+\.php)(/.+)$;
|
||||
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
|
||||
|
||||
fastcgi_pass %backend_lsnr%;
|
||||
fastcgi_index index.php;
|
||||
include /etc/nginx/fastcgi_params;
|
||||
|
||||
fastcgi_intercept_errors off;
|
||||
fastcgi_buffer_size 16k;
|
||||
fastcgi_buffers 4 16k;
|
||||
}
|
||||
|
||||
error_page 403 /error/404.html;
|
||||
error_page 404 /error/404.html;
|
||||
error_page 500 502 503 504 /error/50x.html;
|
||||
|
||||
location /error/ {
|
||||
alias %home%/%user%/web/%domain%/document_errors/;
|
||||
}
|
||||
|
||||
location ~* "/\.(htaccess|htpasswd)$" {
|
||||
deny all;
|
||||
return 404;
|
||||
}
|
||||
|
||||
location /vstats/ {
|
||||
alias %home%/%user%/web/%domain%/stats/;
|
||||
include %home%/%user%/conf/web/%domain%.auth*;
|
||||
}
|
||||
|
||||
include /etc/nginx/conf.d/phpmyadmin.inc*;
|
||||
include /etc/nginx/conf.d/phppgadmin.inc*;
|
||||
include /etc/nginx/conf.d/webmail.inc*;
|
||||
|
||||
include %home%/%user%/conf/web/nginx.%domain%.conf*;
|
||||
}
|
48
install/debian/9/templates/web/nginx/php-fpm/mautic.stpl
Normal file
48
install/debian/9/templates/web/nginx/php-fpm/mautic.stpl
Normal file
|
@ -0,0 +1,48 @@
|
|||
server {
|
||||
listen %ip%:%web_ssl_port%;
|
||||
server_name %domain_idn% %alias_idn%;
|
||||
root %sdocroot%;
|
||||
index index.php index.html index.htm;
|
||||
access_log /var/log/nginx/domains/%domain%.log combined;
|
||||
access_log /var/log/nginx/domains/%domain%.bytes bytes;
|
||||
error_log /var/log/nginx/domains/%domain%.error.log error;
|
||||
|
||||
ssl on;
|
||||
ssl_certificate %ssl_pem%;
|
||||
ssl_certificate_key %ssl_key%;
|
||||
|
||||
location / {
|
||||
try_files $uri /index.php?$query_string;
|
||||
}
|
||||
|
||||
location ~ '\.php$' {
|
||||
fastcgi_split_path_info ^(.+?\.php)(|/.*)$;
|
||||
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
|
||||
fastcgi_pass %backend_lsnr%;
|
||||
include /etc/nginx/fastcgi_params;
|
||||
}
|
||||
|
||||
error_page 403 /error/404.html;
|
||||
error_page 404 /error/404.html;
|
||||
error_page 500 502 503 504 /error/50x.html;
|
||||
|
||||
location /error/ {
|
||||
alias %home%/%user%/web/%domain%/document_errors/;
|
||||
}
|
||||
|
||||
location ~* "/\.(htaccess|htpasswd)$" {
|
||||
deny all;
|
||||
return 404;
|
||||
}
|
||||
|
||||
location /vstats/ {
|
||||
alias %home%/%user%/web/%domain%/stats/;
|
||||
include %home%/%user%/conf/web/%domain%.auth*;
|
||||
}
|
||||
|
||||
include /etc/nginx/conf.d/phpmyadmin.inc*;
|
||||
include /etc/nginx/conf.d/phppgadmin.inc*;
|
||||
include /etc/nginx/conf.d/webmail.inc*;
|
||||
|
||||
include %home%/%user%/conf/web/snginx.%domain%.conf*;
|
||||
}
|
44
install/debian/9/templates/web/nginx/php-fpm/mautic.tpl
Normal file
44
install/debian/9/templates/web/nginx/php-fpm/mautic.tpl
Normal file
|
@ -0,0 +1,44 @@
|
|||
server {
|
||||
listen %ip%:%web_port%;
|
||||
server_name %domain_idn% %alias_idn%;
|
||||
root %docroot%;
|
||||
index index.php index.html index.htm;
|
||||
access_log /var/log/nginx/domains/%domain%.log combined;
|
||||
access_log /var/log/nginx/domains/%domain%.bytes bytes;
|
||||
error_log /var/log/nginx/domains/%domain%.error.log error;
|
||||
|
||||
location / {
|
||||
try_files $uri /index.php?$query_string;
|
||||
}
|
||||
|
||||
location ~ '\.php$' {
|
||||
fastcgi_split_path_info ^(.+?\.php)(|/.*)$;
|
||||
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
|
||||
fastcgi_pass %backend_lsnr%;
|
||||
include /etc/nginx/fastcgi_params;
|
||||
}
|
||||
|
||||
error_page 403 /error/404.html;
|
||||
error_page 404 /error/404.html;
|
||||
error_page 500 502 503 504 /error/50x.html;
|
||||
|
||||
location /error/ {
|
||||
alias %home%/%user%/web/%domain%/document_errors/;
|
||||
}
|
||||
|
||||
location ~* "/\.(htaccess|htpasswd)$" {
|
||||
deny all;
|
||||
return 404;
|
||||
}
|
||||
|
||||
location /vstats/ {
|
||||
alias %home%/%user%/web/%domain%/stats/;
|
||||
include %home%/%user%/conf/web/%domain%.auth*;
|
||||
}
|
||||
|
||||
include /etc/nginx/conf.d/phpmyadmin.inc*;
|
||||
include /etc/nginx/conf.d/phppgadmin.inc*;
|
||||
include /etc/nginx/conf.d/webmail.inc*;
|
||||
|
||||
include %home%/%user%/conf/web/nginx.%domain%.conf*;
|
||||
}
|
|
@ -11,6 +11,7 @@ pm.max_requests = 4000
|
|||
pm.process_idle_timeout = 10s
|
||||
pm.status_path = /status
|
||||
|
||||
php_admin_value[sys_temp_dir] = /home/%user%/tmp
|
||||
php_admin_value[upload_tmp_dir] = /home/%user%/tmp
|
||||
php_admin_value[session.save_path] = /home/%user%/tmp
|
||||
|
||||
|
|
|
@ -14,6 +14,7 @@ pm.max_requests = 4000
|
|||
pm.process_idle_timeout = 10s
|
||||
pm.status_path = /status
|
||||
|
||||
php_admin_value[sys_temp_dir] = /home/%user%/tmp
|
||||
php_admin_value[upload_tmp_dir] = /home/%user%/tmp
|
||||
php_admin_value[session.save_path] = /home/%user%/tmp
|
||||
|
||||
|
|
|
@ -18,7 +18,7 @@
|
|||
<body>
|
||||
<h1>%domain%</h1>
|
||||
<div>
|
||||
<a href="http://vestacp.com/">Powered by VESTA</a>
|
||||
<a href="https://vestacp.com/">Server control panel by VESTA</a>
|
||||
</div>
|
||||
</body>
|
||||
|
||||
|
|
|
@ -18,7 +18,7 @@
|
|||
<body>
|
||||
<h1>%domain%</h1>
|
||||
<div>
|
||||
<a href="http://vestacp.com/">Powered by VESTA</a>
|
||||
<a href="https://vestacp.com/">Server control panel by VESTA</a>
|
||||
</div>
|
||||
</body>
|
||||
|
||||
|
|
|
@ -24,3 +24,16 @@ pasv_enable=YES
|
|||
pasv_max_port=12100
|
||||
pasv_min_port=12000
|
||||
use_localtime=YES
|
||||
ssl_enable=YES
|
||||
allow_anon_ssl=YES
|
||||
force_local_data_ssl=YES
|
||||
force_local_logins_ssl=YES
|
||||
ssl_tlsv1_2=YES
|
||||
ssl_sslv2=NO
|
||||
ssl_sslv3=NO
|
||||
require_ssl_reuse=YES
|
||||
ssl_ciphers=HIGH
|
||||
idle_session_timeout=600
|
||||
data_connection_timeout=120
|
||||
rsa_cert_file=/usr/local/vesta/ssl/certificate.crt
|
||||
rsa_private_key_file=/usr/local/vesta/ssl/certificate.key
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue