From 863f3e2aa5f3b06bbf53eb465ca1834653cb8dec Mon Sep 17 00:00:00 2001
From: isscbta <53144593+isscbta@users.noreply.github.com>
Date: Fri, 7 Apr 2023 13:40:23 +0200
Subject: [PATCH 001/365] Update README.md
---
README.md | 87 ++++++++++++++++++++++++++++++++++++++++++++++++-------
1 file changed, 77 insertions(+), 10 deletions(-)
diff --git a/README.md b/README.md
index c34d496b..6dfe1024 100644
--- a/README.md
+++ b/README.md
@@ -1,14 +1,81 @@
-myVesta
-==================================================
-Visit our homepage:
-- https://www.myvestacp.com/
+
-Forum:
-- https://forum.myvestacp.com/
+
+
+[](https://www.myvestacp.com/)
+
+
+
+About
+
+myVesta is a security and stability-focused fork of VestaCP, exclusively supporting Debian in order to maintain a streamlined ecosystem. Boasting a clean, clutter-free interface and the latest innovative technologies, our project is committed to staying synchronized with official VestaCP commits. We work independently to enhance security and develop new features, driven by our passion for contributing to the open-source community rather than monetary gain. As such, we will offer all features built for myVesta to the official VestaCP project through pull requests, without interfering with their development milestones.
+
+Latest stable release: Version 1.7.0 | View Changelog
+
+
+Links
+
+
+Features of myVesta
+
+ - Support for Debian 10 and 11 (Debian 11 is recommended, but previous Debian releases are also supported)
+ - Support for MySQL 8
+ - nginx templates that can prevent denial-of-service on your server
+ - Support for multi-PHP versions
+ - You can host NodeJS apps
+ - You can limit the maximum number of sent emails (per hour) per mail account and per hosting account, preventing hijacking of email accounts and preventing PHP malware scripts to send spam.
+ -
+ You can completely "lock" myVesta so it can be accessed only via secret URL, for example https://serverhost:8083/?MY-SECRET-URL
+
+ - During installation you will be asked to choose a secret URL for your hosting panel
+ - Literally no PHP scripts will be alive on your hosting panel (won't be able to get executed), unless you access the hosting panel with secret URL parameter. Thus, when it happens that, let's say, some zero-day exploit pops up - attackers won't be able to access it without knowing your secret URL - PHP scripts from VestaCP will be simply dead - no one will be able to interact with your panel unless they have the secret URL.
+ - You can see for yourself how this mechanism was built by looking at:
+
+ - If you didn't set the secret URL during installation, you can do it anytime. Just execute in shell:
echo " /usr/local/vesta/web/inc/login_url.php
+
+
+ - We disabled dangerous PHP functions in php.ini, so even if, for example, your customer's CMS gets compromised, hacker will not be able to execute shell scripts from within PHP.
+ - Apache is fully switched to mpm_event mode, while PHP is running in PHP-FPM mode, which is the most stable PHP-stack solution
+
- OPCache is turned on by default
+ - Auto-generating LetsEncrypt SSL for server hostname (signed SSL for Vesta 8083 port, for dovecot (IMAP & POP3) and for Exim (SMTP))
+ - You can change Vesta port during installation or later using one command line: v-change-vesta-port [number]
+ - ClamAV is configured to block zip/rar/7z archives that contains executable files (just like GMail)
+ - Backup will run with lowest priority (to avoid load on server), and can be configured to run only by night (and to stop on the morning and continue next night)
+
+ - You can compile Vesta binaries by yourself - src/deb/vesta_compile.sh
+- You can even create your own APT repository in a minute
+- We are using latest nginx version for vesta-nginx package
+- With your own APT infrastructure you can take security of Vesta-installer infrastructure in your own hands. You will have full control of your Vesta code (this way you can rest assured that there's 0% chance that you'll install malicious packages from repositories that may get hacked)
+- Binaries that you compile are 100% compatible with official VestaCP from vestacp.com, so you can run official VestaCP code with your own binaries (in case you don't want the source code from this fork)
+
+
+
+
+
+How to install
+Download the installation script:
+
+```shell
+curl -O http://c.myvestacp.com/vst-install-debian.sh
+```
+
+Then run it:
+
+```shell
+bash vst-install-debian.sh
+```
+
+Or use our installer generator.
+
+Licence
+myVesta is licensed under GPL v3 license.
-Knowledge base:
-- https://wiki.myvestacp.com/
-Changelog:
-- https://github.com/myvesta/vesta/blob/master/Changelog.md
From 5eabdd4784ca09356e865361b86ce6ac1ce8ca2f Mon Sep 17 00:00:00 2001
From: isscbta <53144593+isscbta@users.noreply.github.com>
Date: Fri, 7 Apr 2023 13:41:06 +0200
Subject: [PATCH 002/365] Update README.md
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 6dfe1024..55b6c2c8 100644
--- a/README.md
+++ b/README.md
@@ -11,7 +11,7 @@
myVesta is a security and stability-focused fork of VestaCP, exclusively supporting Debian in order to maintain a streamlined ecosystem. Boasting a clean, clutter-free interface and the latest innovative technologies, our project is committed to staying synchronized with official VestaCP commits. We work independently to enhance security and develop new features, driven by our passion for contributing to the open-source community rather than monetary gain. As such, we will offer all features built for myVesta to the official VestaCP project through pull requests, without interfering with their development milestones.
-Latest stable release: Version 1.7.0 | View Changelog
+
Latest stable release: Version 0.9.8-26-62 | View Changelog
Links
From e86585568d4baefb50b81f25ed9d692ddb3522a4 Mon Sep 17 00:00:00 2001
From: isscbta <53144593+isscbta@users.noreply.github.com>
Date: Fri, 7 Apr 2023 13:44:53 +0200
Subject: [PATCH 003/365] Update README.md
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 55b6c2c8..cc5d56d4 100644
--- a/README.md
+++ b/README.md
@@ -11,7 +11,7 @@
myVesta is a security and stability-focused fork of VestaCP, exclusively supporting Debian in order to maintain a streamlined ecosystem. Boasting a clean, clutter-free interface and the latest innovative technologies, our project is committed to staying synchronized with official VestaCP commits. We work independently to enhance security and develop new features, driven by our passion for contributing to the open-source community rather than monetary gain. As such, we will offer all features built for myVesta to the official VestaCP project through pull requests, without interfering with their development milestones.
-Latest stable release: Version 0.9.8-26-62 | View Changelog
+
View Changelog
Links
From f0a82f02d3ca34f8a0e4d03a81e5bf414b0c9775 Mon Sep 17 00:00:00 2001
From: isscbta <53144593+isscbta@users.noreply.github.com>
Date: Fri, 7 Apr 2023 13:50:02 +0200
Subject: [PATCH 004/365] Update README.md
---
README.md | 14 ++++++++++++++
1 file changed, 14 insertions(+)
diff --git a/README.md b/README.md
index cc5d56d4..62207405 100644
--- a/README.md
+++ b/README.md
@@ -75,6 +75,20 @@ bash vst-install-debian.sh
Or use our installer generator.
+UUseful scripts
+
+
+
Licence
myVesta is licensed under GPL v3 license.
From 0e16d8d59c8f9276a3bf3de9cd21ab7c2ec16ca9 Mon Sep 17 00:00:00 2001
From: isscbta <53144593+isscbta@users.noreply.github.com>
Date: Fri, 7 Apr 2023 13:50:17 +0200
Subject: [PATCH 005/365] Update README.md
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 62207405..1848be5d 100644
--- a/README.md
+++ b/README.md
@@ -75,7 +75,7 @@ bash vst-install-debian.sh
Or use our installer generator.
-UUseful scripts
+Useful scripts
- How to move accounts from one (my)Vesta server to another myVesta server
- WordPress installer in one second
(v-install-wordpress)
From 8dbfa3e2103790411c43084024db3fbd832ca06e Mon Sep 17 00:00:00 2001
From: isscbta <53144593+isscbta@users.noreply.github.com>
Date: Fri, 7 Apr 2023 13:53:10 +0200
Subject: [PATCH 006/365] Update README.md
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 1848be5d..44d414b8 100644
--- a/README.md
+++ b/README.md
@@ -36,7 +36,7 @@
- Literally no PHP scripts will be alive on your hosting panel (won't be able to get executed), unless you access the hosting panel with secret URL parameter. Thus, when it happens that, let's say, some zero-day exploit pops up - attackers won't be able to access it without knowing your secret URL - PHP scripts from VestaCP will be simply dead - no one will be able to interact with your panel unless they have the secret URL.
- You can see for yourself how this mechanism was built by looking at:
- If you didn't set the secret URL during installation, you can do it anytime. Just execute in shell:
echo " /usr/local/vesta/web/inc/login_url.php
From e2fcade5bb91ab978d6ffb59574d632858386e8b Mon Sep 17 00:00:00 2001
From: isscbta <53144593+isscbta@users.noreply.github.com>
Date: Sun, 9 Apr 2023 00:17:27 +0200
Subject: [PATCH 007/365] Update v-clone-website
---
bin/v-clone-website | 3 +++
1 file changed, 3 insertions(+)
diff --git a/bin/v-clone-website b/bin/v-clone-website
index df98c6db..57749f74 100644
--- a/bin/v-clone-website
+++ b/bin/v-clone-website
@@ -434,6 +434,9 @@ else
sudo -H -u$TO_USER wp search-replace "/home/$FROM_USER/" "/home/$TO_USER/" --precise --all-tables --skip-columns=guid
fi
sudo -H -u$TO_USER wp cache flush
+ cd $TO_FOLDER
+ sudo -H -u$TO_USER wp config shuffle-salts WP_CACHE_KEY_SALT --force
+ sudo -H -u$TO_USER wp config shuffle-salts
fi
echo "===== DONE ===="
From 2fae00ae7dcce79657f54c3e8c057694a3451566 Mon Sep 17 00:00:00 2001
From: isscbta <53144593+isscbta@users.noreply.github.com>
Date: Sun, 9 Apr 2023 00:22:04 +0200
Subject: [PATCH 008/365] Update v-clone-website
---
bin/v-clone-website | 6 ------
1 file changed, 6 deletions(-)
diff --git a/bin/v-clone-website b/bin/v-clone-website
index 57749f74..74de3271 100644
--- a/bin/v-clone-website
+++ b/bin/v-clone-website
@@ -420,12 +420,6 @@ if [ $IT_IS_WP -eq 0 ]; then
fi
else
cd $TO_FOLDER
- if [ -d "wp-content/plugins/w3-total-cache" ]; then
- rm -f wp-content/object-cache.php
- rm -f wp-content/db.php
- rm -f wp-content/advanced-cache.php
- rm -rf wp-content/w3tc-config
- rm -rf wp-content/plugins/w3-total-cache
fi
echo "=== Replacing $FROM_DOMAIN to $TO_DOMAIN in database $TO_DATABASE_NAME"
sudo -H -u$TO_USER wp search-replace "$FROM_DOMAIN" "$TO_DOMAIN" --precise --all-tables --skip-columns=guid
From 706e365a5e031f9d6d90630954d03cfabc1f0489 Mon Sep 17 00:00:00 2001
From: myvesta <38690722+myvesta@users.noreply.github.com>
Date: Sun, 9 Apr 2023 14:01:18 +0200
Subject: [PATCH 009/365] syntax fix
---
bin/v-clone-website | 2 --
1 file changed, 2 deletions(-)
diff --git a/bin/v-clone-website b/bin/v-clone-website
index 74de3271..46623db4 100644
--- a/bin/v-clone-website
+++ b/bin/v-clone-website
@@ -420,7 +420,6 @@ if [ $IT_IS_WP -eq 0 ]; then
fi
else
cd $TO_FOLDER
- fi
echo "=== Replacing $FROM_DOMAIN to $TO_DOMAIN in database $TO_DATABASE_NAME"
sudo -H -u$TO_USER wp search-replace "$FROM_DOMAIN" "$TO_DOMAIN" --precise --all-tables --skip-columns=guid
if [ "$FROM_USER" != "$TO_USER" ]; then
@@ -428,7 +427,6 @@ else
sudo -H -u$TO_USER wp search-replace "/home/$FROM_USER/" "/home/$TO_USER/" --precise --all-tables --skip-columns=guid
fi
sudo -H -u$TO_USER wp cache flush
- cd $TO_FOLDER
sudo -H -u$TO_USER wp config shuffle-salts WP_CACHE_KEY_SALT --force
sudo -H -u$TO_USER wp config shuffle-salts
fi
From 77467eeebddd6853c04f462be8117a24f3603c53 Mon Sep 17 00:00:00 2001
From: myvesta <38690722+myvesta@users.noreply.github.com>
Date: Wed, 12 Apr 2023 19:58:32 +0200
Subject: [PATCH 010/365] exim4 HELO authenticated patch
---
install/debian/10/exim/exim4.conf.template | 10 ++++++----
install/debian/11/exim/exim4.conf.template | 10 ++++++----
install/debian/11/exim/exim4.conf.template-RC | 10 ++++++----
install/debian/8/exim/exim4.conf.template | 10 ++++++----
install/debian/9/exim/exim4.conf.template | 10 ++++++----
.../tools/patches/exim_helo_authenticated.patch | 14 ++++++++++++++
6 files changed, 44 insertions(+), 20 deletions(-)
create mode 100644 src/deb/for-download/tools/patches/exim_helo_authenticated.patch
diff --git a/install/debian/10/exim/exim4.conf.template b/install/debian/10/exim/exim4.conf.template
index 70577b6e..0e5afaac 100644
--- a/install/debian/10/exim/exim4.conf.template
+++ b/install/debian/10/exim/exim4.conf.template
@@ -91,16 +91,18 @@ acl_check_mail:
deny condition = ${if eq{$sender_helo_name}{}}
message = HELO required before MAIL
- drop message = Helo name contains a ip address (HELO was $sender_helo_name) and not is valid
+ drop !authenticated = *
+ message = Helo name contains a ip address (HELO was $sender_helo_name) and not is valid
condition = ${if match{$sender_helo_name}{\N((\d{1,3}[.-]\d{1,3}[.-]\d{1,3}[.-]\d{1,3})|([0-9a-f]{8})|([0-9A-F]{8}))\N}{yes}{no}}
- condition = ${if match{${lc:$sender_host_name}}{.telenor.rs}{false}{true}}
condition = ${if match {${lookup dnsdb{>: defer_never,ptr=$sender_host_address}}\}{$sender_helo_name}{no}{yes}}
delay = 45s
- drop condition = ${if isip{$sender_helo_name}}
+ drop !authenticated = *
+ condition = ${if isip{$sender_helo_name}}
message = Access denied - Invalid HELO name (See RFC2821 4.1.3)
- drop condition = ${if eq{[$interface_address]}{$sender_helo_name}}
+ drop !authenticated = *
+ condition = ${if eq{[$interface_address]}{$sender_helo_name}}
message = $interface_address is _my_ address
accept
diff --git a/install/debian/11/exim/exim4.conf.template b/install/debian/11/exim/exim4.conf.template
index 4b3c0dd9..72e3f668 100644
--- a/install/debian/11/exim/exim4.conf.template
+++ b/install/debian/11/exim/exim4.conf.template
@@ -91,16 +91,18 @@ acl_check_mail:
deny condition = ${if eq{$sender_helo_name}{}}
message = HELO required before MAIL
- drop message = Helo name contains a ip address (HELO was $sender_helo_name) and not is valid
+ drop !authenticated = *
+ message = Helo name contains a ip address (HELO was $sender_helo_name) and not is valid
condition = ${if match{$sender_helo_name}{\N((\d{1,3}[.-]\d{1,3}[.-]\d{1,3}[.-]\d{1,3})|([0-9a-f]{8})|([0-9A-F]{8}))\N}{yes}{no}}
- condition = ${if match{${lc:$sender_host_name}}{.telenor.rs}{false}{true}}
condition = ${if match {${lookup dnsdb{>: defer_never,ptr=$sender_host_address}}\}{$sender_helo_name}{no}{yes}}
delay = 45s
- drop condition = ${if isip{$sender_helo_name}}
+ drop !authenticated = *
+ condition = ${if isip{$sender_helo_name}}
message = Access denied - Invalid HELO name (See RFC2821 4.1.3)
- drop condition = ${if eq{[$interface_address]}{$sender_helo_name}}
+ drop !authenticated = *
+ condition = ${if eq{[$interface_address]}{$sender_helo_name}}
message = $interface_address is _my_ address
accept
diff --git a/install/debian/11/exim/exim4.conf.template-RC b/install/debian/11/exim/exim4.conf.template-RC
index 36ba2a0d..e5ba36ab 100644
--- a/install/debian/11/exim/exim4.conf.template-RC
+++ b/install/debian/11/exim/exim4.conf.template-RC
@@ -108,16 +108,18 @@ acl_check_mail:
deny condition = ${if eq{$sender_helo_name}{}}
message = HELO required before MAIL
- drop message = Helo name contains a ip address (HELO was $sender_helo_name) and not is valid
+ drop !authenticated = *
+ message = Helo name contains a ip address (HELO was $sender_helo_name) and not is valid
condition = ${if match{$sender_helo_name}{\N((\d{1,3}[.-]\d{1,3}[.-]\d{1,3}[.-]\d{1,3})|([0-9a-f]{8})|([0-9A-F]{8}))\N}{yes}{no}}
- condition = ${if match{${lc:$sender_host_name}}{.telenor.rs}{false}{true}}
condition = ${if match {${lookup dnsdb{>: defer_never,ptr=$sender_host_address}}\}{$sender_helo_name}{no}{yes}}
delay = 45s
- drop condition = ${if isip{$sender_helo_name}}
+ drop !authenticated = *
+ condition = ${if isip{$sender_helo_name}}
message = Access denied - Invalid HELO name (See RFC2821 4.1.3)
- drop condition = ${if eq{[$interface_address]}{$sender_helo_name}}
+ drop !authenticated = *
+ condition = ${if eq{[$interface_address]}{$sender_helo_name}}
message = $interface_address is _my_ address
accept
diff --git a/install/debian/8/exim/exim4.conf.template b/install/debian/8/exim/exim4.conf.template
index e49bbf4e..261947d2 100644
--- a/install/debian/8/exim/exim4.conf.template
+++ b/install/debian/8/exim/exim4.conf.template
@@ -87,16 +87,18 @@ acl_check_mail:
deny condition = ${if eq{$sender_helo_name}{}}
message = HELO required before MAIL
- drop message = Helo name contains a ip address (HELO was $sender_helo_name) and not is valid
+ drop !authenticated = *
+ message = Helo name contains a ip address (HELO was $sender_helo_name) and not is valid
condition = ${if match{$sender_helo_name}{\N((\d{1,3}[.-]\d{1,3}[.-]\d{1,3}[.-]\d{1,3})|([0-9a-f]{8})|([0-9A-F]{8}))\N}{yes}{no}}
- condition = ${if match{${lc:$sender_host_name}}{.telenor.rs}{false}{true}}
condition = ${if match {${lookup dnsdb{>: defer_never,ptr=$sender_host_address}}\}{$sender_helo_name}{no}{yes}}
delay = 45s
- drop condition = ${if isip{$sender_helo_name}}
+ drop !authenticated = *
+ condition = ${if isip{$sender_helo_name}}
message = Access denied - Invalid HELO name (See RFC2821 4.1.3)
- drop condition = ${if eq{[$interface_address]}{$sender_helo_name}}
+ drop !authenticated = *
+ condition = ${if eq{[$interface_address]}{$sender_helo_name}}
message = $interface_address is _my_ address
accept
diff --git a/install/debian/9/exim/exim4.conf.template b/install/debian/9/exim/exim4.conf.template
index e49bbf4e..261947d2 100644
--- a/install/debian/9/exim/exim4.conf.template
+++ b/install/debian/9/exim/exim4.conf.template
@@ -87,16 +87,18 @@ acl_check_mail:
deny condition = ${if eq{$sender_helo_name}{}}
message = HELO required before MAIL
- drop message = Helo name contains a ip address (HELO was $sender_helo_name) and not is valid
+ drop !authenticated = *
+ message = Helo name contains a ip address (HELO was $sender_helo_name) and not is valid
condition = ${if match{$sender_helo_name}{\N((\d{1,3}[.-]\d{1,3}[.-]\d{1,3}[.-]\d{1,3})|([0-9a-f]{8})|([0-9A-F]{8}))\N}{yes}{no}}
- condition = ${if match{${lc:$sender_host_name}}{.telenor.rs}{false}{true}}
condition = ${if match {${lookup dnsdb{>: defer_never,ptr=$sender_host_address}}\}{$sender_helo_name}{no}{yes}}
delay = 45s
- drop condition = ${if isip{$sender_helo_name}}
+ drop !authenticated = *
+ condition = ${if isip{$sender_helo_name}}
message = Access denied - Invalid HELO name (See RFC2821 4.1.3)
- drop condition = ${if eq{[$interface_address]}{$sender_helo_name}}
+ drop !authenticated = *
+ condition = ${if eq{[$interface_address]}{$sender_helo_name}}
message = $interface_address is _my_ address
accept
diff --git a/src/deb/for-download/tools/patches/exim_helo_authenticated.patch b/src/deb/for-download/tools/patches/exim_helo_authenticated.patch
new file mode 100644
index 00000000..9dd8dbad
--- /dev/null
+++ b/src/deb/for-download/tools/patches/exim_helo_authenticated.patch
@@ -0,0 +1,14 @@
+--- /etc/exim4/exim4.conf.template.orig 2023-04-12 19:05:20.745847763 +0200
++++ /etc/exim4/exim4.conf.template 2023-04-12 19:34:29.000000000 +0200
+@@ -94 +94,2 @@
+- drop message = Helo name contains a ip address (HELO was $sender_helo_name) and not is valid
++ drop !authenticated = *
++ message = Helo name contains a ip address (HELO was $sender_helo_name) and not is valid
+@@ -100 +101,2 @@
+- drop condition = ${if isip{$sender_helo_name}}
++ drop !authenticated = *
++ condition = ${if isip{$sender_helo_name}}
+@@ -103 +105,2 @@
+- drop condition = ${if eq{[$interface_address]}{$sender_helo_name}}
++ drop !authenticated = *
++ condition = ${if eq{[$interface_address]}{$sender_helo_name}}
From 4dd6d22f077370e88ff049fc7ee9aab487008efb Mon Sep 17 00:00:00 2001
From: myvesta <38690722+myvesta@users.noreply.github.com>
Date: Fri, 14 Apr 2023 15:39:33 +0200
Subject: [PATCH 011/365] myvesta-php-func support for stdin
---
bin/v-php-func | 9 +++
func/bash-to-php-interpreter.php | 8 +++
func/main.php | 2 +
func/string.php | 113 +++++++++++++++++++++++++++++--
4 files changed, 126 insertions(+), 6 deletions(-)
diff --git a/bin/v-php-func b/bin/v-php-func
index f6192c33..f7a73385 100644
--- a/bin/v-php-func
+++ b/bin/v-php-func
@@ -8,5 +8,14 @@
# Action #
#----------------------------------------------------------#
+
+if [ -p /dev/stdin ]; then
+ STDIN=$(cat -)
+ if [ ! -z "$STDIN" ]; then
+ echo "$STDIN" | php /usr/local/vesta/func/bash-to-php-interpreter.php "$@"
+ exit $?
+ fi
+fi
+
php /usr/local/vesta/func/bash-to-php-interpreter.php "$@"
exit $?
diff --git a/func/bash-to-php-interpreter.php b/func/bash-to-php-interpreter.php
index 13995e1c..e780d41c 100644
--- a/func/bash-to-php-interpreter.php
+++ b/func/bash-to-php-interpreter.php
@@ -7,6 +7,14 @@ else $SHLVL=3;
if (!isset($argv)) exit(5);
+stream_set_blocking(STDIN, false);
+$myvesta_stdin='';
+$myvesta_f = fopen( 'php://stdin', 'r' );
+while( $myvesta_line = fgets( $myvesta_f ) ) {
+ $myvesta_stdin .= $myvesta_line;
+}
+fclose( $myvesta_f );
+
include ("/usr/local/vesta/func/main.php");
include ("/usr/local/vesta/func/string.php");
diff --git a/func/main.php b/func/main.php
index fcc96610..03a501a1 100644
--- a/func/main.php
+++ b/func/main.php
@@ -71,7 +71,9 @@ function myvesta_fix_args() {
}
function myvesta_test_func () {
+ global $myvesta_stdin;
$args=func_get_args();
+ if ($myvesta_stdin!='') array_splice( $args, 0, 0, array($myvesta_stdin) );
myvesta_echo ("You said: ");
myvesta_echo (trim(print_r ($args, true)));
}
diff --git a/func/string.php b/func/string.php
index 2b6a63d9..a38e068e 100644
--- a/func/string.php
+++ b/func/string.php
@@ -70,8 +70,23 @@ function myvesta_strip_in_file_between_including_borders($file, $left, $right) {
// --- string functions ---
-function myvesta_str_get_between (&$text, $left_substring, $right_substring, $start=0, $return_left_substring=0, $return_right_substring=0, $left_substring_necessary=1, $right_substring_necessary=1) {
- global $myvesta_str_found_at, $myvesta_str_end_at;
+function myvesta_str_get_between () {
+ global $myvesta_stdin, $myvesta_str_found_at, $myvesta_str_end_at;
+ $args=func_get_args();
+ $args_i=-1;
+ if ($myvesta_stdin!='') {
+ $text=$myvesta_stdin;
+ } else {
+ $args_i++; $text=$args[$args_i];
+ }
+ $args_i++; $left_substring=$args[$args_i];
+ $args_i++; $right_substring=$args[$args_i];
+ $args_i++; $start=0; if (!empty($args[$args_i])) $start=intval($args[$args_i]);
+ $args_i++; $return_left_substring=0; if (!empty($args[$args_i])) $return_left_substring=intval($args[$args_i]);
+ $args_i++; $return_right_substring=0; if (!empty($args[$args_i])) $return_right_substring=intval($args[$args_i]);
+ $args_i++; $left_substring_necessary=1; if (!empty($args[$args_i])) $left_substring_necessary=intval($args[$args_i]);
+ $args_i++; $right_substring_necessary=1; if (!empty($args[$args_i])) $right_substring_necessary=intval($args[$args_i]);
+
$myvesta_str_found_at=0;
$myvesta_str_end_at=0;
$from_null=0;
@@ -105,7 +120,19 @@ function myvesta_str_get_between (&$text, $left_substring, $right_substring, $st
return substr($text, $pos1, $len);
}
-function myvesta_str_replace_once_between_including_borders(&$text, $left, $right, $replace_with) {
+function myvesta_str_replace_once_between_including_borders() {
+ global $myvesta_stdin;
+ $args=func_get_args();
+ $args_i=-1;
+ if ($myvesta_stdin!='') {
+ $text=$myvesta_stdin;
+ } else {
+ $args_i++; $text=$args[$args_i];
+ }
+ $args_i++; $left=$args[$args_i];
+ $args_i++; $right=$args[$args_i];
+ $args_i++; $replace_with=$args[$args_i];
+
$pos1=strpos($text, $left);
if ($pos1===false) return $text;
$pos2=strpos($text, $right, $pos1+strlen($left));
@@ -113,7 +140,18 @@ function myvesta_str_replace_once_between_including_borders(&$text, $left, $righ
return substr($text, 0, $pos1).$replace_with.substr($text, $pos2+strlen($right));
}
-function myvesta_str_strip_once_between_including_borders(&$text, $left, $right) {
+function myvesta_str_strip_once_between_including_borders() {
+ global $myvesta_stdin;
+ $args=func_get_args();
+ $args_i=-1;
+ if ($myvesta_stdin!='') {
+ $text=$myvesta_stdin;
+ } else {
+ $args_i++; $text=$args[$args_i];
+ }
+ $args_i++; $left=$args[$args_i];
+ $args_i++; $right=$args[$args_i];
+
$pos1=strpos($text, $left);
if ($pos1===false) return $text;
$pos2=strpos($text, $right, $pos1+strlen($left));
@@ -121,7 +159,19 @@ function myvesta_str_strip_once_between_including_borders(&$text, $left, $right)
return substr($text, 0, $pos1).substr($text, $pos2+strlen($right));
}
-function myvesta_str_replace_between_including_borders($text, $left, $right, $replace_with) {
+function myvesta_str_replace_between_including_borders() {
+ global $myvesta_stdin;
+ $args=func_get_args();
+ $args_i=-1;
+ if ($myvesta_stdin!='') {
+ $text=$myvesta_stdin;
+ } else {
+ $args_i++; $text=$args[$args_i];
+ }
+ $args_i++; $left=$args[$args_i];
+ $args_i++; $right=$args[$args_i];
+ $args_i++; $replace_with=$args[$args_i];
+
$start=0;
$left_len=strlen($left);
$right_len=strlen($right);
@@ -135,7 +185,18 @@ function myvesta_str_replace_between_including_borders($text, $left, $right, $re
return $text;
}
-function myvesta_str_strip_between_including_borders($text, $left, $right) {
+function myvesta_str_strip_between_including_borders() {
+ global $myvesta_stdin;
+ $args=func_get_args();
+ $args_i=-1;
+ if ($myvesta_stdin!='') {
+ $text=$myvesta_stdin;
+ } else {
+ $args_i++; $text=$args[$args_i];
+ }
+ $args_i++; $left=$args[$args_i];
+ $args_i++; $right=$args[$args_i];
+
$left_len=strlen($left);
$right_len=strlen($right);
while (true) {
@@ -147,3 +208,43 @@ function myvesta_str_strip_between_including_borders($text, $left, $right) {
}
return $text;
}
+
+function myvesta_str_find() {
+ global $myvesta_stdin;
+ $args=func_get_args();
+ $args_i=-1;
+ if ($myvesta_stdin!='') {
+ $text=$myvesta_stdin;
+ } else {
+ $args_i++; $text=$args[$args_i];
+ }
+ $args_i++; $find=$args[$args_i];
+
+ $pos=strpos($text, $find);
+ if ($pos===false) return myvesta_throw_error (MYVESTA_ERROR_STRING_NOT_FOUND, "");
+ return $pos;
+}
+
+function myvesta_str_uppercase() {
+ global $myvesta_stdin;
+ $args=func_get_args();
+ $args_i=-1;
+ if ($myvesta_stdin!='') {
+ $text=$myvesta_stdin;
+ } else {
+ $args_i++; $text=$args[$args_i];
+ }
+ return strtoupper($text);
+}
+
+function myvesta_str_lowercase() {
+ global $myvesta_stdin;
+ $args=func_get_args();
+ $args_i=-1;
+ if ($myvesta_stdin!='') {
+ $text=$myvesta_stdin;
+ } else {
+ $args_i++; $text=$args[$args_i];
+ }
+ return strtolower($text);
+}
From 452f8a81d94380d02f163d110ab3ba4f2c22ea24 Mon Sep 17 00:00:00 2001
From: myvesta <38690722+myvesta@users.noreply.github.com>
Date: Fri, 14 Apr 2023 16:21:00 +0200
Subject: [PATCH 012/365] php myvesta_str_substring
---
func/string.php | 16 ++++++++++++++++
1 file changed, 16 insertions(+)
diff --git a/func/string.php b/func/string.php
index a38e068e..9e531fb8 100644
--- a/func/string.php
+++ b/func/string.php
@@ -248,3 +248,19 @@ function myvesta_str_lowercase() {
}
return strtolower($text);
}
+
+function myvesta_str_substring() {
+ global $myvesta_stdin;
+ $args=func_get_args();
+ $args_i=-1;
+ if ($myvesta_stdin!='') {
+ $text=$myvesta_stdin;
+ } else {
+ $args_i++; $text=$args[$args_i];
+ }
+ $args_i++; $start=$args[$args_i];
+ $args_i++; $length=null; if (!empty($args[$args_i])) $length=intval($args[$args_i]);
+
+ if ($length===null) return substr($text, $start);
+ if ($length!==null) return substr($text, $start, $length);
+}
From c5144bcbae09a3e332ce934127800b85cc1526df Mon Sep 17 00:00:00 2001
From: myvesta <38690722+myvesta@users.noreply.github.com>
Date: Fri, 14 Apr 2023 16:47:42 +0200
Subject: [PATCH 013/365] v-php-func str_find quiet
---
func/string.php | 14 ++++++++++----
1 file changed, 10 insertions(+), 4 deletions(-)
diff --git a/func/string.php b/func/string.php
index 9e531fb8..ffc7bf68 100644
--- a/func/string.php
+++ b/func/string.php
@@ -2,14 +2,18 @@
// --- file functions ---
-function myvesta_find_in_file($file, $find) {
- if (!file_exists($file)) return myvesta_throw_error (MYVESTA_ERROR_FILE_DOES_NOT_EXISTS, "File '$file' not found");
-
+function myvesta_find_in_file($file, $find, $quiet=false) {
+ if (!file_exists($file)) {
+ if ($quiet) return false;
+ return myvesta_throw_error (MYVESTA_ERROR_FILE_DOES_NOT_EXISTS, "File '$file' not found");
+ }
+
$buf=file_get_contents($file);
$pos=strpos($buf, $find);
+
if ($pos===false) return myvesta_throw_error (MYVESTA_ERROR_STRING_NOT_FOUND, "");
-
+ if ($quiet) return true;
return $pos;
}
@@ -219,9 +223,11 @@ function myvesta_str_find() {
$args_i++; $text=$args[$args_i];
}
$args_i++; $find=$args[$args_i];
+ $args_i++; $quiet=false; if (!empty($args[$args_i])) $quiet=boolval($args[$args_i]);
$pos=strpos($text, $find);
if ($pos===false) return myvesta_throw_error (MYVESTA_ERROR_STRING_NOT_FOUND, "");
+ if ($quiet) return true;
return $pos;
}
From 2f371245455db8e982ddf853c37c820d6b447d54 Mon Sep 17 00:00:00 2001
From: myvesta <38690722+myvesta@users.noreply.github.com>
Date: Fri, 14 Apr 2023 19:01:07 +0200
Subject: [PATCH 014/365] simplifying php str functions
---
func/bash-to-php-interpreter.php | 1 +
func/string.php | 110 ++++---------------------------
2 files changed, 12 insertions(+), 99 deletions(-)
diff --git a/func/bash-to-php-interpreter.php b/func/bash-to-php-interpreter.php
index e780d41c..461c1af0 100644
--- a/func/bash-to-php-interpreter.php
+++ b/func/bash-to-php-interpreter.php
@@ -29,6 +29,7 @@ if (!function_exists($func)) {
$params=array();
+if ($myvesta_stdin!='') $params[]=$myvesta_stdin;
for ($i=2; $i<$counter; $i++) {
$argv[$i]=myvesta_fix_backslashes($argv[$i]);
$params[]=$argv[$i];
diff --git a/func/string.php b/func/string.php
index ffc7bf68..69881c8f 100644
--- a/func/string.php
+++ b/func/string.php
@@ -7,7 +7,7 @@ function myvesta_find_in_file($file, $find, $quiet=false) {
if ($quiet) return false;
return myvesta_throw_error (MYVESTA_ERROR_FILE_DOES_NOT_EXISTS, "File '$file' not found");
}
-
+
$buf=file_get_contents($file);
$pos=strpos($buf, $find);
@@ -74,23 +74,8 @@ function myvesta_strip_in_file_between_including_borders($file, $left, $right) {
// --- string functions ---
-function myvesta_str_get_between () {
- global $myvesta_stdin, $myvesta_str_found_at, $myvesta_str_end_at;
- $args=func_get_args();
- $args_i=-1;
- if ($myvesta_stdin!='') {
- $text=$myvesta_stdin;
- } else {
- $args_i++; $text=$args[$args_i];
- }
- $args_i++; $left_substring=$args[$args_i];
- $args_i++; $right_substring=$args[$args_i];
- $args_i++; $start=0; if (!empty($args[$args_i])) $start=intval($args[$args_i]);
- $args_i++; $return_left_substring=0; if (!empty($args[$args_i])) $return_left_substring=intval($args[$args_i]);
- $args_i++; $return_right_substring=0; if (!empty($args[$args_i])) $return_right_substring=intval($args[$args_i]);
- $args_i++; $left_substring_necessary=1; if (!empty($args[$args_i])) $left_substring_necessary=intval($args[$args_i]);
- $args_i++; $right_substring_necessary=1; if (!empty($args[$args_i])) $right_substring_necessary=intval($args[$args_i]);
-
+function myvesta_str_get_between (&$text, $left_substring, $right_substring, $start=0, $return_left_substring=0, $return_right_substring=0, $left_substring_necessary=1, $right_substring_necessary=1) {
+ global $myvesta_str_found_at, $myvesta_str_end_at;
$myvesta_str_found_at=0;
$myvesta_str_end_at=0;
$from_null=0;
@@ -124,19 +109,7 @@ function myvesta_str_get_between () {
return substr($text, $pos1, $len);
}
-function myvesta_str_replace_once_between_including_borders() {
- global $myvesta_stdin;
- $args=func_get_args();
- $args_i=-1;
- if ($myvesta_stdin!='') {
- $text=$myvesta_stdin;
- } else {
- $args_i++; $text=$args[$args_i];
- }
- $args_i++; $left=$args[$args_i];
- $args_i++; $right=$args[$args_i];
- $args_i++; $replace_with=$args[$args_i];
-
+function myvesta_str_replace_once_between_including_borders(&$text, $left, $right, $replace_with) {
$pos1=strpos($text, $left);
if ($pos1===false) return $text;
$pos2=strpos($text, $right, $pos1+strlen($left));
@@ -144,18 +117,7 @@ function myvesta_str_replace_once_between_including_borders() {
return substr($text, 0, $pos1).$replace_with.substr($text, $pos2+strlen($right));
}
-function myvesta_str_strip_once_between_including_borders() {
- global $myvesta_stdin;
- $args=func_get_args();
- $args_i=-1;
- if ($myvesta_stdin!='') {
- $text=$myvesta_stdin;
- } else {
- $args_i++; $text=$args[$args_i];
- }
- $args_i++; $left=$args[$args_i];
- $args_i++; $right=$args[$args_i];
-
+function myvesta_str_strip_once_between_including_borders(&$text, $left, $right) {
$pos1=strpos($text, $left);
if ($pos1===false) return $text;
$pos2=strpos($text, $right, $pos1+strlen($left));
@@ -163,19 +125,7 @@ function myvesta_str_strip_once_between_including_borders() {
return substr($text, 0, $pos1).substr($text, $pos2+strlen($right));
}
-function myvesta_str_replace_between_including_borders() {
- global $myvesta_stdin;
- $args=func_get_args();
- $args_i=-1;
- if ($myvesta_stdin!='') {
- $text=$myvesta_stdin;
- } else {
- $args_i++; $text=$args[$args_i];
- }
- $args_i++; $left=$args[$args_i];
- $args_i++; $right=$args[$args_i];
- $args_i++; $replace_with=$args[$args_i];
-
+function myvesta_str_replace_between_including_borders($text, $left, $right, $replace_with) {
$start=0;
$left_len=strlen($left);
$right_len=strlen($right);
@@ -189,7 +139,7 @@ function myvesta_str_replace_between_including_borders() {
return $text;
}
-function myvesta_str_strip_between_including_borders() {
+function myvesta_str_strip_between_including_borders($text, $left, $right) {
global $myvesta_stdin;
$args=func_get_args();
$args_i=-1;
@@ -213,60 +163,22 @@ function myvesta_str_strip_between_including_borders() {
return $text;
}
-function myvesta_str_find() {
- global $myvesta_stdin;
- $args=func_get_args();
- $args_i=-1;
- if ($myvesta_stdin!='') {
- $text=$myvesta_stdin;
- } else {
- $args_i++; $text=$args[$args_i];
- }
- $args_i++; $find=$args[$args_i];
- $args_i++; $quiet=false; if (!empty($args[$args_i])) $quiet=boolval($args[$args_i]);
-
+function myvesta_str_find($text, $find, $quiet=false) {
$pos=strpos($text, $find);
if ($pos===false) return myvesta_throw_error (MYVESTA_ERROR_STRING_NOT_FOUND, "");
if ($quiet) return true;
return $pos;
}
-function myvesta_str_uppercase() {
- global $myvesta_stdin;
- $args=func_get_args();
- $args_i=-1;
- if ($myvesta_stdin!='') {
- $text=$myvesta_stdin;
- } else {
- $args_i++; $text=$args[$args_i];
- }
+function myvesta_str_uppercase($text) {
return strtoupper($text);
}
-function myvesta_str_lowercase() {
- global $myvesta_stdin;
- $args=func_get_args();
- $args_i=-1;
- if ($myvesta_stdin!='') {
- $text=$myvesta_stdin;
- } else {
- $args_i++; $text=$args[$args_i];
- }
+function myvesta_str_lowercase($text) {
return strtolower($text);
}
-function myvesta_str_substring() {
- global $myvesta_stdin;
- $args=func_get_args();
- $args_i=-1;
- if ($myvesta_stdin!='') {
- $text=$myvesta_stdin;
- } else {
- $args_i++; $text=$args[$args_i];
- }
- $args_i++; $start=$args[$args_i];
- $args_i++; $length=null; if (!empty($args[$args_i])) $length=intval($args[$args_i]);
-
+function myvesta_str_substring($text, $start, $length=null) {
if ($length===null) return substr($text, $start);
if ($length!==null) return substr($text, $start, $length);
}
From 888db2bc72a9951b53051ab32ac25a6eb7341ca8 Mon Sep 17 00:00:00 2001
From: myvesta <38690722+myvesta@users.noreply.github.com>
Date: Sat, 15 Apr 2023 15:50:27 +0200
Subject: [PATCH 015/365] myvesta php replacement for gnu 'grep' (but without
regular expression)
---
bin/v-php-func | 2 +-
func/bash-to-php-interpreter.php | 27 ++++++++++-
func/main.php | 83 ++++++++++++++++++++++++++++++--
func/string.php | 34 +++++++++++++
4 files changed, 140 insertions(+), 6 deletions(-)
diff --git a/bin/v-php-func b/bin/v-php-func
index f7a73385..0c789863 100644
--- a/bin/v-php-func
+++ b/bin/v-php-func
@@ -2,7 +2,7 @@
# info: calling myVesta PHP functions
# options: FUNCTION
#
-# The function is calling myVesta PHP functions.
+# The function is calling myVesta or standard PHP functions directly from bash
#----------------------------------------------------------#
# Action #
diff --git a/func/bash-to-php-interpreter.php b/func/bash-to-php-interpreter.php
index 461c1af0..baf9475e 100644
--- a/func/bash-to-php-interpreter.php
+++ b/func/bash-to-php-interpreter.php
@@ -11,7 +11,7 @@ stream_set_blocking(STDIN, false);
$myvesta_stdin='';
$myvesta_f = fopen( 'php://stdin', 'r' );
while( $myvesta_line = fgets( $myvesta_f ) ) {
- $myvesta_stdin .= $myvesta_line;
+ $myvesta_stdin .= $myvesta_line;
}
fclose( $myvesta_f );
@@ -27,13 +27,36 @@ if (!function_exists($func)) {
if (!function_exists($func)) myvesta_throw_error(2, 'Function does not exists');
}
+$insert_stdin_at_position=false;
+if ($func=="myvesta_grep") $insert_stdin_at_position=1;
+
$params=array();
-if ($myvesta_stdin!='') $params[]=$myvesta_stdin;
+$added=0;
+$stdin_content='';
+ $myvesta_stdin_return_not_found=false;
+if ($myvesta_stdin!='' && $insert_stdin_at_position===false) {$params[]=$myvesta_stdin; $added++;}
+
for ($i=2; $i<$counter; $i++) {
$argv[$i]=myvesta_fix_backslashes($argv[$i]);
+ if ($insert_stdin_at_position!==false && $myvesta_stdin=='') if ($insert_stdin_at_position==$added) {$stdin_content=$argv[$i]; $added++; continue;}
$params[]=$argv[$i];
+ $added++;
}
+if ($insert_stdin_at_position!=false) {
+ if ($myvesta_stdin=='') {
+ $file_or_stdin=$stdin_content;
+ if (!file_exists($file_or_stdin)) {
+ $myvesta_stdin_return_not_found=true;
+ $myvesta_stdin='';
+ } else {
+ $myvesta_stdin=file_get_contents($file_or_stdin);
+ }
+ }
+ if (isset($params[$insert_stdin_at_position])) array_splice($params, $insert_stdin_at_position, 0, array($myvesta_stdin));
+ else $params[$insert_stdin_at_position]=$myvesta_stdin;
+}
+//print_r($params); exit;
$r=call_user_func_array($func, $params);
if (is_bool($r)) {
diff --git a/func/main.php b/func/main.php
index 03a501a1..650f52ef 100644
--- a/func/main.php
+++ b/func/main.php
@@ -14,9 +14,88 @@ function myvesta_echo($str) {
echo $str;
}
-function myvesta_exit($code) {
+function myvesta_exit($code, $echo='') {
global $SHLVL, $myvesta_echo_done, $myvesta_last_echo;
// myvesta_echo ("==================== ".$argv[0].": ".$code." ====================\n");
+ if ($echo!='') myvesta_echo($echo);
+ if ($SHLVL<3 && $myvesta_echo_done==true) {
+ $last_char=substr($myvesta_last_echo, -1, 1);
+ if ($last_char!="\n") echo "\n";
+ }
+ exit($code);
+}
+
+$myvesta_current_user=exec('whoami', $myvesta_output, $myvesta_return_var);
+if ($myvesta_current_user != 'root') {myvesta_echo ("ERROR: You must be root to execute this script"); myvesta_exit(1);}
+
+function myvesta_throw_error($code, $message) {
+ global $myvesta_exit_on_error;
+ if ($message!=='') myvesta_echo ("ERROR: ".$message);
+ if ($myvesta_exit_on_error) myvesta_exit($code);
+ return $code;
+}
+
+function myvesta_fix_backslashes($s) {
+ $s=str_replace("\\n", "\n", $s);
+ $s=str_replace("\\r", "\r", $s);
+ $s=str_replace("\\t", "\t", $s);
+ return $s;
+}
+
+function myvesta_check_args ($requried_arguments, $arguments) {
+ global $argv;
+ $argument_counter=count($argv);
+ $argument_counter--;
+ $argv[0]=str_replace('/usr/local/vesta/bin/', '', $argv[0]);
+ // myvesta_echo ( "-------------------- ".$argv[0]." --------------------\n");
+ if ($argument_counter<$requried_arguments) {
+ $arguments=str_replace(" ", "' '", $arguments);
+ $arguments="'".$arguments."'";
+ return myvesta_throw_error(MYVESTA_ERROR_MISSING_ARGUMENTS, "Usage: $command $arguments");
+ }
+ $argument_arr=explode(" ", $arguments);
+ $i=1;
+ foreach ($argument_arr as $argument) {
+ $GLOBALS[$argument]=myvesta_fix_backslashes($argv[$i]);
+ $i++;
+ }
+}
+
+function myvesta_fix_args() {
+ global $argv;
+ $i=0;
+ foreach ($argv as $argument) {
+ if ($i==0) {$i++; continue;}
+ $argv[$i]=myvesta_fix_backslashes($argv[$i]);
+ $i++;
+ }
+}
+
+function myvesta_test_func () {
+ $args=func_get_args();
+ myvesta_echo ("You said: ");
+ myvesta_echo (trim(print_r ($args, true)));
+}
+
Date: Sat, 15 Apr 2023 15:53:21 +0200
Subject: [PATCH 016/365] correction for main.php
---
func/main.php | 78 ---------------------------------------------------
1 file changed, 78 deletions(-)
diff --git a/func/main.php b/func/main.php
index 650f52ef..b521ea2e 100644
--- a/func/main.php
+++ b/func/main.php
@@ -76,81 +76,3 @@ function myvesta_test_func () {
myvesta_echo ("You said: ");
myvesta_echo (trim(print_r ($args, true)));
}
-
Date: Sat, 15 Apr 2023 16:38:53 +0200
Subject: [PATCH 017/365] myvesta php replacement for gnu 'sed' (but without
regular expression)
---
func/bash-to-php-interpreter.php | 3 +++
func/main.php | 20 ++++++++++++--------
func/string.php | 26 +++++++++++++++++++++++---
3 files changed, 38 insertions(+), 11 deletions(-)
diff --git a/func/bash-to-php-interpreter.php b/func/bash-to-php-interpreter.php
index baf9475e..09c9c499 100644
--- a/func/bash-to-php-interpreter.php
+++ b/func/bash-to-php-interpreter.php
@@ -29,11 +29,13 @@ if (!function_exists($func)) {
$insert_stdin_at_position=false;
if ($func=="myvesta_grep") $insert_stdin_at_position=1;
+if ($func=="myvesta_sed") $insert_stdin_at_position=2;
$params=array();
$added=0;
$stdin_content='';
+$myvesta_stdin_from_file='';
$myvesta_stdin_return_not_found=false;
if ($myvesta_stdin!='' && $insert_stdin_at_position===false) {$params[]=$myvesta_stdin; $added++;}
@@ -51,6 +53,7 @@ if ($insert_stdin_at_position!=false) {
$myvesta_stdin='';
} else {
$myvesta_stdin=file_get_contents($file_or_stdin);
+ $myvesta_stdin_from_file=$file_or_stdin;
}
}
if (isset($params[$insert_stdin_at_position])) array_splice($params, $insert_stdin_at_position, 0, array($myvesta_stdin));
diff --git a/func/main.php b/func/main.php
index b521ea2e..967fb8fb 100644
--- a/func/main.php
+++ b/func/main.php
@@ -1,6 +1,7 @@
Date: Sat, 15 Apr 2023 18:51:15 +0200
Subject: [PATCH 018/365] MYVESTA_QUIET as export variable
---
func/main.php | 2 ++
func/string.php | 6 +++---
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/func/main.php b/func/main.php
index 967fb8fb..22834d42 100644
--- a/func/main.php
+++ b/func/main.php
@@ -2,6 +2,8 @@
$myvesta_exit_on_error=true;
$myvesta_quiet_mode=0;
+if (isset($_SERVER['MYVESTA_QUIET'])) $myvesta_quiet_mode=intval($_SERVER['MYVESTA_QUIET']);
+
define('MYVESTA_ERROR_PERMISSION_DENIED', 1);
define('MYVESTA_ERROR_MISSING_ARGUMENTS', 2);
define('MYVESTA_ERROR_FILE_DOES_NOT_EXISTS', 3);
diff --git a/func/string.php b/func/string.php
index e4ba2a5f..371c643c 100644
--- a/func/string.php
+++ b/func/string.php
@@ -81,8 +81,8 @@ function myvesta_grep($find, $file_or_stdin, $count=0, $quiet=0) {
$myvesta_quiet_mode=$quiet;
//echo "find = " . $find."\n"; echo "file_or_stdin = " . $file_or_stdin."\n"; echo "count = " . $count."\n"; echo "quiet = " . $quiet."\n"; exit;
if ($myvesta_stdin_return_not_found==true) {
- if ($count==1) return myvesta_throw_error (MYVESTA_ERROR_STRING_NOT_FOUND, "0");
- return myvesta_throw_error (MYVESTA_ERROR_STRING_NOT_FOUND, "");
+ if ($count==1) return myvesta_throw_error (MYVESTA_ERROR_FILE_DOES_NOT_EXISTS, "0");
+ return myvesta_throw_error (MYVESTA_ERROR_FILE_DOES_NOT_EXISTS, "");
}
$arr=explode("\n", $file_or_stdin);
@@ -111,7 +111,7 @@ function myvesta_sed($find, $replace, $file_or_stdin) {
global $myvesta_stdin, $myvesta_stdin_return_not_found, $myvesta_stdin_from_file;
//echo "find = " . $find."\n"; echo "replace = " . $replace."\n"; echo "file_or_stdin = " . $file_or_stdin."\n"; echo "stdin_from_file = " . $myvesta_stdin_from_file."\n"; exit;
if ($myvesta_stdin_return_not_found==true) {
- return myvesta_throw_error (MYVESTA_ERROR_STRING_NOT_FOUND, "File not found");
+ return myvesta_throw_error (MYVESTA_ERROR_FILE_DOES_NOT_EXISTS, "File not found");
}
if (strpos($file_or_stdin, $find)===false) return myvesta_throw_error (MYVESTA_ERROR_STRING_NOT_FOUND, "String '$find' not found");
From 502acb44c01a21fe4435d93ed59e1fe605441ac9 Mon Sep 17 00:00:00 2001
From: myvesta <38690722+myvesta@users.noreply.github.com>
Date: Sat, 15 Apr 2023 19:03:11 +0200
Subject: [PATCH 019/365] v-grep and v-sed
---
bin/v-grep | 21 +++++++++++++++++++++
bin/v-sed | 21 +++++++++++++++++++++
2 files changed, 42 insertions(+)
create mode 100644 bin/v-grep
create mode 100644 bin/v-sed
diff --git a/bin/v-grep b/bin/v-grep
new file mode 100644
index 00000000..3e467129
--- /dev/null
+++ b/bin/v-grep
@@ -0,0 +1,21 @@
+#!/bin/bash
+# info: calling myvesta_grep PHP function
+# options: PARAMETERS
+#
+# The function is calling myVesta PHP replacement for GNU 'grep' command (but without regular expression)
+
+#----------------------------------------------------------#
+# Action #
+#----------------------------------------------------------#
+
+
+if [ -p /dev/stdin ]; then
+ STDIN=$(cat -)
+ if [ ! -z "$STDIN" ]; then
+ echo "$STDIN" | php /usr/local/vesta/func/bash-to-php-interpreter.php 'myvesta_grep' "$@"
+ exit $?
+ fi
+fi
+
+php /usr/local/vesta/func/bash-to-php-interpreter.php 'myvesta_grep' "$@"
+exit $?
diff --git a/bin/v-sed b/bin/v-sed
new file mode 100644
index 00000000..9d1a82ee
--- /dev/null
+++ b/bin/v-sed
@@ -0,0 +1,21 @@
+#!/bin/bash
+# info: calling myvesta_sed PHP function
+# options: PARAMETERS
+#
+# The function is calling myVesta PHP replacement for GNU 'sed' command (but without regular expression)
+
+#----------------------------------------------------------#
+# Action #
+#----------------------------------------------------------#
+
+
+if [ -p /dev/stdin ]; then
+ STDIN=$(cat -)
+ if [ ! -z "$STDIN" ]; then
+ echo "$STDIN" | php /usr/local/vesta/func/bash-to-php-interpreter.php 'myvesta_sed' "$@"
+ exit $?
+ fi
+fi
+
+php /usr/local/vesta/func/bash-to-php-interpreter.php 'myvesta_sed' "$@"
+exit $?
From ae45e4a57198557a47a31ddf5e847dc0579d060b Mon Sep 17 00:00:00 2001
From: myvesta <38690722+myvesta@users.noreply.github.com>
Date: Sun, 16 Apr 2023 00:10:54 +0200
Subject: [PATCH 020/365] simplifying php code
---
func/bash-to-php-interpreter.php | 11 +++++++----
func/string.php | 26 +++++++++++++-------------
2 files changed, 20 insertions(+), 17 deletions(-)
diff --git a/func/bash-to-php-interpreter.php b/func/bash-to-php-interpreter.php
index 09c9c499..4c1e9dc5 100644
--- a/func/bash-to-php-interpreter.php
+++ b/func/bash-to-php-interpreter.php
@@ -41,13 +41,15 @@ if ($myvesta_stdin!='' && $insert_stdin_at_position===false) {$params[]=$myvesta
for ($i=2; $i<$counter; $i++) {
$argv[$i]=myvesta_fix_backslashes($argv[$i]);
- if ($insert_stdin_at_position!==false && $myvesta_stdin=='') if ($insert_stdin_at_position==$added) {$stdin_content=$argv[$i]; $added++; continue;}
+ //if ($insert_stdin_at_position!==false && $myvesta_stdin=='') if ($insert_stdin_at_position==$added) {$stdin_content=$argv[$i]; $added++; continue;}
$params[]=$argv[$i];
$added++;
}
+//print_r($params); exit;
+
if ($insert_stdin_at_position!=false) {
if ($myvesta_stdin=='') {
- $file_or_stdin=$stdin_content;
+ $file_or_stdin=$params[$insert_stdin_at_position];
if (!file_exists($file_or_stdin)) {
$myvesta_stdin_return_not_found=true;
$myvesta_stdin='';
@@ -55,9 +57,10 @@ if ($insert_stdin_at_position!=false) {
$myvesta_stdin=file_get_contents($file_or_stdin);
$myvesta_stdin_from_file=$file_or_stdin;
}
+ $params[$insert_stdin_at_position]=$myvesta_stdin;
+ } else {
+ array_splice($params, $insert_stdin_at_position, 0, array($myvesta_stdin));
}
- if (isset($params[$insert_stdin_at_position])) array_splice($params, $insert_stdin_at_position, 0, array($myvesta_stdin));
- else $params[$insert_stdin_at_position]=$myvesta_stdin;
}
//print_r($params); exit;
diff --git a/func/string.php b/func/string.php
index 371c643c..7ada2546 100644
--- a/func/string.php
+++ b/func/string.php
@@ -74,25 +74,25 @@ function myvesta_strip_in_file_between_including_borders($file, $left, $right) {
// --- mixed functions ---
-function myvesta_grep($find, $file_or_stdin, $count=0, $quiet=0) {
+function myvesta_grep($find, $content, $count=0, $quiet=0) {
global $myvesta_stdin, $myvesta_stdin_return_not_found, $myvesta_quiet_mode;
if ($count==='-c') {$count=1; $quiet=0;}
if ($count==='-q') {$count=0; $quiet=1;}
- $myvesta_quiet_mode=$quiet;
- //echo "find = " . $find."\n"; echo "file_or_stdin = " . $file_or_stdin."\n"; echo "count = " . $count."\n"; echo "quiet = " . $quiet."\n"; exit;
+ if ($myvesta_quiet_mode==0) $myvesta_quiet_mode=$quiet;
+ //echo "find = " . $find."\n"; echo "file_or_stdin = " . $content."\n"; echo "count = " . $count."\n"; echo "quiet = " . $quiet."\n"; exit;
if ($myvesta_stdin_return_not_found==true) {
if ($count==1) return myvesta_throw_error (MYVESTA_ERROR_FILE_DOES_NOT_EXISTS, "0");
return myvesta_throw_error (MYVESTA_ERROR_FILE_DOES_NOT_EXISTS, "");
}
- $arr=explode("\n", $file_or_stdin);
+ $arr=explode("\n", $content);
- $buf='';
+ $buffer='';
$hits=0;
foreach ($arr as $line) {
if (strpos($line, $find)!==false) {
$hits++;
- if ($quiet==false && $count==false) $buf.=$line."\n";
+ if ($quiet==false && $count==false) $buffer.=$line."\n";
}
}
if ($count==1) {
@@ -104,24 +104,24 @@ function myvesta_grep($find, $file_or_stdin, $count=0, $quiet=0) {
return true;
}
if ($hits==0) return myvesta_exit (MYVESTA_ERROR_STRING_NOT_FOUND, "");
- return $buf;
+ return $buffer;
}
-function myvesta_sed($find, $replace, $file_or_stdin) {
+function myvesta_sed($find, $replace, $content) {
global $myvesta_stdin, $myvesta_stdin_return_not_found, $myvesta_stdin_from_file;
- //echo "find = " . $find."\n"; echo "replace = " . $replace."\n"; echo "file_or_stdin = " . $file_or_stdin."\n"; echo "stdin_from_file = " . $myvesta_stdin_from_file."\n"; exit;
+ //echo "find = " . $find."\n"; echo "replace = " . $replace."\n"; echo "file_or_stdin = " . $content."\n"; echo "stdin_from_file = " . $myvesta_stdin_from_file."\n"; exit;
if ($myvesta_stdin_return_not_found==true) {
return myvesta_throw_error (MYVESTA_ERROR_FILE_DOES_NOT_EXISTS, "File not found");
}
- if (strpos($file_or_stdin, $find)===false) return myvesta_throw_error (MYVESTA_ERROR_STRING_NOT_FOUND, "String '$find' not found");
+ if (strpos($content, $find)===false) return myvesta_throw_error (MYVESTA_ERROR_STRING_NOT_FOUND, "String '$find' not found");
- $file_or_stdin=str_replace($find, $replace, $file_or_stdin);
+ $content=str_replace($find, $replace, $content);
if ($myvesta_stdin_from_file!='') {
- $r=file_put_contents($myvesta_stdin_from_file, $file_or_stdin);
+ $r=file_put_contents($myvesta_stdin_from_file, $content);
if ($r===false) return false;
} else {
- myvesta_echo ($file_or_stdin);
+ myvesta_echo ($content);
}
return true;
}
From 22d524cfceb793cf9c1a1f337fa2c58e0a70004e Mon Sep 17 00:00:00 2001
From: myvesta <38690722+myvesta@users.noreply.github.com>
Date: Sun, 30 Apr 2023 15:15:43 +0200
Subject: [PATCH 021/365] apache templates -FollowSymLinks
+SymLinksIfOwnerMatch
---
install/debian/10/templates/web/apache2/PHP-FPM-73-public.stpl | 2 +-
install/debian/10/templates/web/apache2/PHP-FPM-73-public.tpl | 2 +-
install/debian/10/templates/web/apache2/PHP-FPM-73.stpl | 2 +-
install/debian/10/templates/web/apache2/PHP-FPM-73.tpl | 2 +-
install/debian/11/templates/web/apache2/PHP-FPM-74-public.stpl | 2 +-
install/debian/11/templates/web/apache2/PHP-FPM-74-public.tpl | 2 +-
install/debian/11/templates/web/apache2/PHP-FPM-74.stpl | 2 +-
install/debian/11/templates/web/apache2/PHP-FPM-74.tpl | 2 +-
install/debian/8/templates/web/apache2/basedir.stpl | 2 +-
install/debian/8/templates/web/apache2/basedir.tpl | 2 +-
install/debian/8/templates/web/apache2/default.stpl | 2 +-
install/debian/8/templates/web/apache2/default.tpl | 2 +-
install/debian/8/templates/web/apache2/hosting.stpl | 2 +-
install/debian/8/templates/web/apache2/hosting.tpl | 2 +-
install/debian/8/templates/web/apache2/phpcgi.stpl | 2 +-
install/debian/8/templates/web/apache2/phpcgi.tpl | 2 +-
install/debian/8/templates/web/apache2/phpfcgid.stpl | 2 +-
install/debian/8/templates/web/apache2/phpfcgid.tpl | 2 +-
install/debian/9/templates/web/apache2/basedir.stpl | 2 +-
install/debian/9/templates/web/apache2/basedir.tpl | 2 +-
install/debian/9/templates/web/apache2/default.stpl | 2 +-
install/debian/9/templates/web/apache2/default.tpl | 2 +-
install/debian/9/templates/web/apache2/hosting.stpl | 2 +-
install/debian/9/templates/web/apache2/hosting.tpl | 2 +-
install/debian/9/templates/web/apache2/phpcgi.stpl | 2 +-
install/debian/9/templates/web/apache2/phpcgi.tpl | 2 +-
install/debian/9/templates/web/apache2/phpfcgid.stpl | 2 +-
install/debian/9/templates/web/apache2/phpfcgid.tpl | 2 +-
src/deb/for-download/tools/apache-fpm-tpl/PHP-FPM-56.stpl | 2 +-
src/deb/for-download/tools/apache-fpm-tpl/PHP-FPM-56.tpl | 2 +-
src/deb/for-download/tools/apache-fpm-tpl/PHP-FPM-70.stpl | 2 +-
src/deb/for-download/tools/apache-fpm-tpl/PHP-FPM-70.tpl | 2 +-
src/deb/for-download/tools/apache-fpm-tpl/PHP-FPM-71.stpl | 2 +-
src/deb/for-download/tools/apache-fpm-tpl/PHP-FPM-71.tpl | 2 +-
src/deb/for-download/tools/apache-fpm-tpl/PHP-FPM-72.stpl | 2 +-
src/deb/for-download/tools/apache-fpm-tpl/PHP-FPM-72.tpl | 2 +-
.../for-download/tools/apache-fpm-tpl/PHP-FPM-73-public.stpl | 2 +-
src/deb/for-download/tools/apache-fpm-tpl/PHP-FPM-73-public.tpl | 2 +-
src/deb/for-download/tools/apache-fpm-tpl/PHP-FPM-73.stpl | 2 +-
src/deb/for-download/tools/apache-fpm-tpl/PHP-FPM-73.tpl | 2 +-
.../for-download/tools/apache-fpm-tpl/PHP-FPM-74-public.stpl | 2 +-
src/deb/for-download/tools/apache-fpm-tpl/PHP-FPM-74-public.tpl | 2 +-
src/deb/for-download/tools/apache-fpm-tpl/PHP-FPM-74.stpl | 2 +-
src/deb/for-download/tools/apache-fpm-tpl/PHP-FPM-74.tpl | 2 +-
.../for-download/tools/apache-fpm-tpl/PHP-FPM-80-public.stpl | 2 +-
src/deb/for-download/tools/apache-fpm-tpl/PHP-FPM-80-public.tpl | 2 +-
src/deb/for-download/tools/apache-fpm-tpl/PHP-FPM-80.stpl | 2 +-
src/deb/for-download/tools/apache-fpm-tpl/PHP-FPM-80.tpl | 2 +-
.../for-download/tools/apache-fpm-tpl/PHP-FPM-81-public.stpl | 2 +-
src/deb/for-download/tools/apache-fpm-tpl/PHP-FPM-81-public.tpl | 2 +-
src/deb/for-download/tools/apache-fpm-tpl/PHP-FPM-81.stpl | 2 +-
src/deb/for-download/tools/apache-fpm-tpl/PHP-FPM-81.tpl | 2 +-
.../for-download/tools/apache-fpm-tpl/PHP-FPM-82-public.stpl | 2 +-
src/deb/for-download/tools/apache-fpm-tpl/PHP-FPM-82-public.tpl | 2 +-
src/deb/for-download/tools/apache-fpm-tpl/PHP-FPM-82.stpl | 2 +-
src/deb/for-download/tools/apache-fpm-tpl/PHP-FPM-82.tpl | 2 +-
56 files changed, 56 insertions(+), 56 deletions(-)
diff --git a/install/debian/10/templates/web/apache2/PHP-FPM-73-public.stpl b/install/debian/10/templates/web/apache2/PHP-FPM-73-public.stpl
index 9660c234..39777224 100644
--- a/install/debian/10/templates/web/apache2/PHP-FPM-73-public.stpl
+++ b/install/debian/10/templates/web/apache2/PHP-FPM-73-public.stpl
@@ -17,7 +17,7 @@
AllowOverride All
SSLRequireSSL
- Options +Includes -Indexes +ExecCGI
+ Options +Includes -Indexes -FollowSymLinks +SymLinksIfOwnerMatch
SSLEngine on
SSLVerifyClient none
diff --git a/install/debian/10/templates/web/apache2/PHP-FPM-73-public.tpl b/install/debian/10/templates/web/apache2/PHP-FPM-73-public.tpl
index 892c0d1f..b6e306d7 100644
--- a/install/debian/10/templates/web/apache2/PHP-FPM-73-public.tpl
+++ b/install/debian/10/templates/web/apache2/PHP-FPM-73-public.tpl
@@ -16,7 +16,7 @@
AllowOverride All
- Options +Includes -Indexes +ExecCGI
+ Options +Includes -Indexes -FollowSymLinks +SymLinksIfOwnerMatch
#
# RMode config
diff --git a/install/debian/10/templates/web/apache2/PHP-FPM-73.stpl b/install/debian/10/templates/web/apache2/PHP-FPM-73.stpl
index 28224413..902d647a 100644
--- a/install/debian/10/templates/web/apache2/PHP-FPM-73.stpl
+++ b/install/debian/10/templates/web/apache2/PHP-FPM-73.stpl
@@ -17,7 +17,7 @@
AllowOverride All
SSLRequireSSL
- Options +Includes -Indexes +ExecCGI
+ Options +Includes -Indexes -FollowSymLinks +SymLinksIfOwnerMatch
SSLEngine on
SSLVerifyClient none
diff --git a/install/debian/10/templates/web/apache2/PHP-FPM-73.tpl b/install/debian/10/templates/web/apache2/PHP-FPM-73.tpl
index 7bec5e73..40df2629 100644
--- a/install/debian/10/templates/web/apache2/PHP-FPM-73.tpl
+++ b/install/debian/10/templates/web/apache2/PHP-FPM-73.tpl
@@ -16,7 +16,7 @@
AllowOverride All
- Options +Includes -Indexes +ExecCGI
+ Options +Includes -Indexes -FollowSymLinks +SymLinksIfOwnerMatch
#
# RMode config
diff --git a/install/debian/11/templates/web/apache2/PHP-FPM-74-public.stpl b/install/debian/11/templates/web/apache2/PHP-FPM-74-public.stpl
index fdbc26f9..739cb48d 100644
--- a/install/debian/11/templates/web/apache2/PHP-FPM-74-public.stpl
+++ b/install/debian/11/templates/web/apache2/PHP-FPM-74-public.stpl
@@ -17,7 +17,7 @@
AllowOverride All
SSLRequireSSL
- Options +Includes -Indexes +ExecCGI
+ Options +Includes -Indexes -FollowSymLinks +SymLinksIfOwnerMatch
SSLEngine on
SSLVerifyClient none
diff --git a/install/debian/11/templates/web/apache2/PHP-FPM-74-public.tpl b/install/debian/11/templates/web/apache2/PHP-FPM-74-public.tpl
index 614f20c3..f31ed5a8 100644
--- a/install/debian/11/templates/web/apache2/PHP-FPM-74-public.tpl
+++ b/install/debian/11/templates/web/apache2/PHP-FPM-74-public.tpl
@@ -16,7 +16,7 @@
AllowOverride All
- Options +Includes -Indexes +ExecCGI
+ Options +Includes -Indexes -FollowSymLinks +SymLinksIfOwnerMatch
#
# RMode config
diff --git a/install/debian/11/templates/web/apache2/PHP-FPM-74.stpl b/install/debian/11/templates/web/apache2/PHP-FPM-74.stpl
index df607247..fbc1d9c6 100644
--- a/install/debian/11/templates/web/apache2/PHP-FPM-74.stpl
+++ b/install/debian/11/templates/web/apache2/PHP-FPM-74.stpl
@@ -17,7 +17,7 @@
AllowOverride All
SSLRequireSSL
- Options +Includes -Indexes +ExecCGI
+ Options +Includes -Indexes -FollowSymLinks +SymLinksIfOwnerMatch
SSLEngine on
SSLVerifyClient none
diff --git a/install/debian/11/templates/web/apache2/PHP-FPM-74.tpl b/install/debian/11/templates/web/apache2/PHP-FPM-74.tpl
index 7b6e2cb5..aaf8f62c 100644
--- a/install/debian/11/templates/web/apache2/PHP-FPM-74.tpl
+++ b/install/debian/11/templates/web/apache2/PHP-FPM-74.tpl
@@ -16,7 +16,7 @@
AllowOverride All
- Options +Includes -Indexes +ExecCGI
+ Options +Includes -Indexes -FollowSymLinks +SymLinksIfOwnerMatch
#
# RMode config
diff --git a/install/debian/8/templates/web/apache2/basedir.stpl b/install/debian/8/templates/web/apache2/basedir.stpl
index 2db1d52c..60a8f7fd 100644
--- a/install/debian/8/templates/web/apache2/basedir.stpl
+++ b/install/debian/8/templates/web/apache2/basedir.stpl
@@ -14,7 +14,7 @@
AllowOverride All
SSLRequireSSL
- Options +Includes -Indexes +ExecCGI
+ Options +Includes -Indexes -FollowSymLinks +SymLinksIfOwnerMatch
php_admin_value open_basedir %sdocroot%:%home%/%user%/tmp
php_admin_value upload_tmp_dir %home%/%user%/tmp
php_admin_value session.save_path %home%/%user%/tmp
diff --git a/install/debian/8/templates/web/apache2/basedir.tpl b/install/debian/8/templates/web/apache2/basedir.tpl
index 96c94a1b..3b8f875a 100644
--- a/install/debian/8/templates/web/apache2/basedir.tpl
+++ b/install/debian/8/templates/web/apache2/basedir.tpl
@@ -13,7 +13,7 @@
ErrorLog /var/log/%web_system%/domains/%domain%.error.log
AllowOverride All
- Options +Includes -Indexes +ExecCGI
+ Options +Includes -Indexes -FollowSymLinks +SymLinksIfOwnerMatch
php_admin_value open_basedir %docroot%:%home%/%user%/tmp
php_admin_value upload_tmp_dir %home%/%user%/tmp
php_admin_value session.save_path %home%/%user%/tmp
diff --git a/install/debian/8/templates/web/apache2/default.stpl b/install/debian/8/templates/web/apache2/default.stpl
index ec34c279..3fc7e160 100644
--- a/install/debian/8/templates/web/apache2/default.stpl
+++ b/install/debian/8/templates/web/apache2/default.stpl
@@ -14,7 +14,7 @@
AllowOverride All
SSLRequireSSL
- Options +Includes -Indexes +ExecCGI
+ Options +Includes -Indexes -FollowSymLinks +SymLinksIfOwnerMatch
php_admin_value open_basedir %sdocroot%:%home%/%user%/tmp
php_admin_value upload_tmp_dir %home%/%user%/tmp
php_admin_value session.save_path %home%/%user%/tmp
diff --git a/install/debian/8/templates/web/apache2/default.tpl b/install/debian/8/templates/web/apache2/default.tpl
index 3a227015..464257ec 100644
--- a/install/debian/8/templates/web/apache2/default.tpl
+++ b/install/debian/8/templates/web/apache2/default.tpl
@@ -13,7 +13,7 @@
ErrorLog /var/log/%web_system%/domains/%domain%.error.log
AllowOverride All
- Options +Includes -Indexes +ExecCGI
+ Options +Includes -Indexes -FollowSymLinks +SymLinksIfOwnerMatch
php_admin_value open_basedir %docroot%:%home%/%user%/tmp
php_admin_value upload_tmp_dir %home%/%user%/tmp
php_admin_value session.save_path %home%/%user%/tmp
diff --git a/install/debian/8/templates/web/apache2/hosting.stpl b/install/debian/8/templates/web/apache2/hosting.stpl
index c9c19512..b17014cd 100644
--- a/install/debian/8/templates/web/apache2/hosting.stpl
+++ b/install/debian/8/templates/web/apache2/hosting.stpl
@@ -14,7 +14,7 @@
AllowOverride All
SSLRequireSSL
- Options +Includes -Indexes +ExecCGI
+ Options +Includes -Indexes -FollowSymLinks +SymLinksIfOwnerMatch
php_admin_value upload_max_filesize 10M
php_admin_value max_execution_time 20
php_admin_value post_max_size 8M
diff --git a/install/debian/8/templates/web/apache2/hosting.tpl b/install/debian/8/templates/web/apache2/hosting.tpl
index 1eb26910..34f55b29 100644
--- a/install/debian/8/templates/web/apache2/hosting.tpl
+++ b/install/debian/8/templates/web/apache2/hosting.tpl
@@ -13,7 +13,7 @@
ErrorLog /var/log/%web_system%/domains/%domain%.error.log
AllowOverride All
- Options +Includes -Indexes +ExecCGI
+ Options +Includes -Indexes -FollowSymLinks +SymLinksIfOwnerMatch
php_admin_value upload_max_filesize 10M
php_admin_value max_execution_time 20
php_admin_value post_max_size 8M
diff --git a/install/debian/8/templates/web/apache2/phpcgi.stpl b/install/debian/8/templates/web/apache2/phpcgi.stpl
index ae560dbe..7c1248d4 100644
--- a/install/debian/8/templates/web/apache2/phpcgi.stpl
+++ b/install/debian/8/templates/web/apache2/phpcgi.stpl
@@ -14,7 +14,7 @@
SSLRequireSSL
AllowOverride All
- Options +Includes -Indexes +ExecCGI
+ Options +Includes -Indexes -FollowSymLinks +SymLinksIfOwnerMatch
php_admin_value open_basedir %sdocroot%:%home%/%user%/tmp
php_admin_value upload_tmp_dir %home%/%user%/tmp
php_admin_value session.save_path %home%/%user%/tmp
diff --git a/install/debian/8/templates/web/apache2/phpcgi.tpl b/install/debian/8/templates/web/apache2/phpcgi.tpl
index c6796d29..603ea8b9 100644
--- a/install/debian/8/templates/web/apache2/phpcgi.tpl
+++ b/install/debian/8/templates/web/apache2/phpcgi.tpl
@@ -13,7 +13,7 @@
ErrorLog /var/log/%web_system%/domains/%domain%.error.log
AllowOverride All
- Options +Includes -Indexes +ExecCGI
+ Options +Includes -Indexes -FollowSymLinks +SymLinksIfOwnerMatch
php_admin_value open_basedir %docroot%:%home%/%user%/tmp
php_admin_value upload_tmp_dir %home%/%user%/tmp
php_admin_value session.save_path %home%/%user%/tmp
diff --git a/install/debian/8/templates/web/apache2/phpfcgid.stpl b/install/debian/8/templates/web/apache2/phpfcgid.stpl
index bc3688d9..98304f2a 100644
--- a/install/debian/8/templates/web/apache2/phpfcgid.stpl
+++ b/install/debian/8/templates/web/apache2/phpfcgid.stpl
@@ -14,7 +14,7 @@
SSLRequireSSL
AllowOverride All
- Options +Includes -Indexes +ExecCGI
+ Options +Includes -Indexes -FollowSymLinks +SymLinksIfOwnerMatch
php_admin_value open_basedir %sdocroot%:%home%/%user%/tmp
php_admin_value upload_tmp_dir %home%/%user%/tmp
php_admin_value session.save_path %home%/%user%/tmp
diff --git a/install/debian/8/templates/web/apache2/phpfcgid.tpl b/install/debian/8/templates/web/apache2/phpfcgid.tpl
index a4c01269..525b1f53 100644
--- a/install/debian/8/templates/web/apache2/phpfcgid.tpl
+++ b/install/debian/8/templates/web/apache2/phpfcgid.tpl
@@ -13,7 +13,7 @@
ErrorLog /var/log/%web_system%/domains/%domain%.error.log
AllowOverride All
- Options +Includes -Indexes +ExecCGI
+ Options +Includes -Indexes -FollowSymLinks +SymLinksIfOwnerMatch
php_admin_value open_basedir %docroot%:%home%/%user%/tmp
php_admin_value upload_tmp_dir %home%/%user%/tmp
php_admin_value session.save_path %home%/%user%/tmp
diff --git a/install/debian/9/templates/web/apache2/basedir.stpl b/install/debian/9/templates/web/apache2/basedir.stpl
index 2db1d52c..60a8f7fd 100644
--- a/install/debian/9/templates/web/apache2/basedir.stpl
+++ b/install/debian/9/templates/web/apache2/basedir.stpl
@@ -14,7 +14,7 @@
AllowOverride All
SSLRequireSSL
- Options +Includes -Indexes +ExecCGI
+ Options +Includes -Indexes -FollowSymLinks +SymLinksIfOwnerMatch
php_admin_value open_basedir %sdocroot%:%home%/%user%/tmp
php_admin_value upload_tmp_dir %home%/%user%/tmp
php_admin_value session.save_path %home%/%user%/tmp
diff --git a/install/debian/9/templates/web/apache2/basedir.tpl b/install/debian/9/templates/web/apache2/basedir.tpl
index 96c94a1b..3b8f875a 100644
--- a/install/debian/9/templates/web/apache2/basedir.tpl
+++ b/install/debian/9/templates/web/apache2/basedir.tpl
@@ -13,7 +13,7 @@
ErrorLog /var/log/%web_system%/domains/%domain%.error.log
AllowOverride All
- Options +Includes -Indexes +ExecCGI
+ Options +Includes -Indexes -FollowSymLinks +SymLinksIfOwnerMatch
php_admin_value open_basedir %docroot%:%home%/%user%/tmp
php_admin_value upload_tmp_dir %home%/%user%/tmp
php_admin_value session.save_path %home%/%user%/tmp
diff --git a/install/debian/9/templates/web/apache2/default.stpl b/install/debian/9/templates/web/apache2/default.stpl
index ec34c279..3fc7e160 100644
--- a/install/debian/9/templates/web/apache2/default.stpl
+++ b/install/debian/9/templates/web/apache2/default.stpl
@@ -14,7 +14,7 @@
AllowOverride All
SSLRequireSSL
- Options +Includes -Indexes +ExecCGI
+ Options +Includes -Indexes -FollowSymLinks +SymLinksIfOwnerMatch
php_admin_value open_basedir %sdocroot%:%home%/%user%/tmp
php_admin_value upload_tmp_dir %home%/%user%/tmp
php_admin_value session.save_path %home%/%user%/tmp
diff --git a/install/debian/9/templates/web/apache2/default.tpl b/install/debian/9/templates/web/apache2/default.tpl
index 3a227015..464257ec 100644
--- a/install/debian/9/templates/web/apache2/default.tpl
+++ b/install/debian/9/templates/web/apache2/default.tpl
@@ -13,7 +13,7 @@
ErrorLog /var/log/%web_system%/domains/%domain%.error.log
AllowOverride All
- Options +Includes -Indexes +ExecCGI
+ Options +Includes -Indexes -FollowSymLinks +SymLinksIfOwnerMatch
php_admin_value open_basedir %docroot%:%home%/%user%/tmp
php_admin_value upload_tmp_dir %home%/%user%/tmp
php_admin_value session.save_path %home%/%user%/tmp
diff --git a/install/debian/9/templates/web/apache2/hosting.stpl b/install/debian/9/templates/web/apache2/hosting.stpl
index c9c19512..b17014cd 100644
--- a/install/debian/9/templates/web/apache2/hosting.stpl
+++ b/install/debian/9/templates/web/apache2/hosting.stpl
@@ -14,7 +14,7 @@
AllowOverride All
SSLRequireSSL
- Options +Includes -Indexes +ExecCGI
+ Options +Includes -Indexes -FollowSymLinks +SymLinksIfOwnerMatch
php_admin_value upload_max_filesize 10M
php_admin_value max_execution_time 20
php_admin_value post_max_size 8M
diff --git a/install/debian/9/templates/web/apache2/hosting.tpl b/install/debian/9/templates/web/apache2/hosting.tpl
index 1eb26910..34f55b29 100644
--- a/install/debian/9/templates/web/apache2/hosting.tpl
+++ b/install/debian/9/templates/web/apache2/hosting.tpl
@@ -13,7 +13,7 @@
ErrorLog /var/log/%web_system%/domains/%domain%.error.log
AllowOverride All
- Options +Includes -Indexes +ExecCGI
+ Options +Includes -Indexes -FollowSymLinks +SymLinksIfOwnerMatch
php_admin_value upload_max_filesize 10M
php_admin_value max_execution_time 20
php_admin_value post_max_size 8M
diff --git a/install/debian/9/templates/web/apache2/phpcgi.stpl b/install/debian/9/templates/web/apache2/phpcgi.stpl
index ae560dbe..7c1248d4 100644
--- a/install/debian/9/templates/web/apache2/phpcgi.stpl
+++ b/install/debian/9/templates/web/apache2/phpcgi.stpl
@@ -14,7 +14,7 @@
SSLRequireSSL
AllowOverride All
- Options +Includes -Indexes +ExecCGI
+ Options +Includes -Indexes -FollowSymLinks +SymLinksIfOwnerMatch
php_admin_value open_basedir %sdocroot%:%home%/%user%/tmp
php_admin_value upload_tmp_dir %home%/%user%/tmp
php_admin_value session.save_path %home%/%user%/tmp
diff --git a/install/debian/9/templates/web/apache2/phpcgi.tpl b/install/debian/9/templates/web/apache2/phpcgi.tpl
index c6796d29..603ea8b9 100644
--- a/install/debian/9/templates/web/apache2/phpcgi.tpl
+++ b/install/debian/9/templates/web/apache2/phpcgi.tpl
@@ -13,7 +13,7 @@
ErrorLog /var/log/%web_system%/domains/%domain%.error.log
AllowOverride All
- Options +Includes -Indexes +ExecCGI
+ Options +Includes -Indexes -FollowSymLinks +SymLinksIfOwnerMatch
php_admin_value open_basedir %docroot%:%home%/%user%/tmp
php_admin_value upload_tmp_dir %home%/%user%/tmp
php_admin_value session.save_path %home%/%user%/tmp
diff --git a/install/debian/9/templates/web/apache2/phpfcgid.stpl b/install/debian/9/templates/web/apache2/phpfcgid.stpl
index bc3688d9..98304f2a 100644
--- a/install/debian/9/templates/web/apache2/phpfcgid.stpl
+++ b/install/debian/9/templates/web/apache2/phpfcgid.stpl
@@ -14,7 +14,7 @@
SSLRequireSSL
AllowOverride All
- Options +Includes -Indexes +ExecCGI
+ Options +Includes -Indexes -FollowSymLinks +SymLinksIfOwnerMatch
php_admin_value open_basedir %sdocroot%:%home%/%user%/tmp
php_admin_value upload_tmp_dir %home%/%user%/tmp
php_admin_value session.save_path %home%/%user%/tmp
diff --git a/install/debian/9/templates/web/apache2/phpfcgid.tpl b/install/debian/9/templates/web/apache2/phpfcgid.tpl
index a4c01269..525b1f53 100644
--- a/install/debian/9/templates/web/apache2/phpfcgid.tpl
+++ b/install/debian/9/templates/web/apache2/phpfcgid.tpl
@@ -13,7 +13,7 @@
ErrorLog /var/log/%web_system%/domains/%domain%.error.log
AllowOverride All
- Options +Includes -Indexes +ExecCGI
+ Options +Includes -Indexes -FollowSymLinks +SymLinksIfOwnerMatch
php_admin_value open_basedir %docroot%:%home%/%user%/tmp
php_admin_value upload_tmp_dir %home%/%user%/tmp
php_admin_value session.save_path %home%/%user%/tmp
diff --git a/src/deb/for-download/tools/apache-fpm-tpl/PHP-FPM-56.stpl b/src/deb/for-download/tools/apache-fpm-tpl/PHP-FPM-56.stpl
index eb5631db..a24b368f 100644
--- a/src/deb/for-download/tools/apache-fpm-tpl/PHP-FPM-56.stpl
+++ b/src/deb/for-download/tools/apache-fpm-tpl/PHP-FPM-56.stpl
@@ -17,7 +17,7 @@
AllowOverride All
SSLRequireSSL
- Options +Includes -Indexes +ExecCGI
+ Options +Includes -Indexes -FollowSymLinks +SymLinksIfOwnerMatch
SSLEngine on
SSLVerifyClient none
diff --git a/src/deb/for-download/tools/apache-fpm-tpl/PHP-FPM-56.tpl b/src/deb/for-download/tools/apache-fpm-tpl/PHP-FPM-56.tpl
index cd4e797d..55bc8233 100644
--- a/src/deb/for-download/tools/apache-fpm-tpl/PHP-FPM-56.tpl
+++ b/src/deb/for-download/tools/apache-fpm-tpl/PHP-FPM-56.tpl
@@ -16,7 +16,7 @@
AllowOverride All
- Options +Includes -Indexes +ExecCGI
+ Options +Includes -Indexes -FollowSymLinks +SymLinksIfOwnerMatch
#
# RMode config
diff --git a/src/deb/for-download/tools/apache-fpm-tpl/PHP-FPM-70.stpl b/src/deb/for-download/tools/apache-fpm-tpl/PHP-FPM-70.stpl
index 38285302..5d944c0f 100644
--- a/src/deb/for-download/tools/apache-fpm-tpl/PHP-FPM-70.stpl
+++ b/src/deb/for-download/tools/apache-fpm-tpl/PHP-FPM-70.stpl
@@ -17,7 +17,7 @@
AllowOverride All
SSLRequireSSL
- Options +Includes -Indexes +ExecCGI
+ Options +Includes -Indexes -FollowSymLinks +SymLinksIfOwnerMatch
SSLEngine on
SSLVerifyClient none
diff --git a/src/deb/for-download/tools/apache-fpm-tpl/PHP-FPM-70.tpl b/src/deb/for-download/tools/apache-fpm-tpl/PHP-FPM-70.tpl
index 7d30d39c..c9378152 100644
--- a/src/deb/for-download/tools/apache-fpm-tpl/PHP-FPM-70.tpl
+++ b/src/deb/for-download/tools/apache-fpm-tpl/PHP-FPM-70.tpl
@@ -16,7 +16,7 @@
AllowOverride All
- Options +Includes -Indexes +ExecCGI
+ Options +Includes -Indexes -FollowSymLinks +SymLinksIfOwnerMatch
#
# RMode config
diff --git a/src/deb/for-download/tools/apache-fpm-tpl/PHP-FPM-71.stpl b/src/deb/for-download/tools/apache-fpm-tpl/PHP-FPM-71.stpl
index c5d284f7..a718b21f 100644
--- a/src/deb/for-download/tools/apache-fpm-tpl/PHP-FPM-71.stpl
+++ b/src/deb/for-download/tools/apache-fpm-tpl/PHP-FPM-71.stpl
@@ -17,7 +17,7 @@
AllowOverride All
SSLRequireSSL
- Options +Includes -Indexes +ExecCGI
+ Options +Includes -Indexes -FollowSymLinks +SymLinksIfOwnerMatch
SSLEngine on
SSLVerifyClient none
diff --git a/src/deb/for-download/tools/apache-fpm-tpl/PHP-FPM-71.tpl b/src/deb/for-download/tools/apache-fpm-tpl/PHP-FPM-71.tpl
index 695b9937..9f0cf8a7 100644
--- a/src/deb/for-download/tools/apache-fpm-tpl/PHP-FPM-71.tpl
+++ b/src/deb/for-download/tools/apache-fpm-tpl/PHP-FPM-71.tpl
@@ -16,7 +16,7 @@
AllowOverride All
- Options +Includes -Indexes +ExecCGI
+ Options +Includes -Indexes -FollowSymLinks +SymLinksIfOwnerMatch
#
# RMode config
diff --git a/src/deb/for-download/tools/apache-fpm-tpl/PHP-FPM-72.stpl b/src/deb/for-download/tools/apache-fpm-tpl/PHP-FPM-72.stpl
index 2b4363b4..20792e92 100644
--- a/src/deb/for-download/tools/apache-fpm-tpl/PHP-FPM-72.stpl
+++ b/src/deb/for-download/tools/apache-fpm-tpl/PHP-FPM-72.stpl
@@ -17,7 +17,7 @@
AllowOverride All
SSLRequireSSL
- Options +Includes -Indexes +ExecCGI
+ Options +Includes -Indexes -FollowSymLinks +SymLinksIfOwnerMatch
SSLEngine on
SSLVerifyClient none
diff --git a/src/deb/for-download/tools/apache-fpm-tpl/PHP-FPM-72.tpl b/src/deb/for-download/tools/apache-fpm-tpl/PHP-FPM-72.tpl
index be2ca7ae..89b19147 100644
--- a/src/deb/for-download/tools/apache-fpm-tpl/PHP-FPM-72.tpl
+++ b/src/deb/for-download/tools/apache-fpm-tpl/PHP-FPM-72.tpl
@@ -16,7 +16,7 @@
AllowOverride All
- Options +Includes -Indexes +ExecCGI
+ Options +Includes -Indexes -FollowSymLinks +SymLinksIfOwnerMatch
#
# RMode config
diff --git a/src/deb/for-download/tools/apache-fpm-tpl/PHP-FPM-73-public.stpl b/src/deb/for-download/tools/apache-fpm-tpl/PHP-FPM-73-public.stpl
index 9660c234..39777224 100644
--- a/src/deb/for-download/tools/apache-fpm-tpl/PHP-FPM-73-public.stpl
+++ b/src/deb/for-download/tools/apache-fpm-tpl/PHP-FPM-73-public.stpl
@@ -17,7 +17,7 @@
AllowOverride All
SSLRequireSSL
- Options +Includes -Indexes +ExecCGI
+ Options +Includes -Indexes -FollowSymLinks +SymLinksIfOwnerMatch
SSLEngine on
SSLVerifyClient none
diff --git a/src/deb/for-download/tools/apache-fpm-tpl/PHP-FPM-73-public.tpl b/src/deb/for-download/tools/apache-fpm-tpl/PHP-FPM-73-public.tpl
index 892c0d1f..b6e306d7 100644
--- a/src/deb/for-download/tools/apache-fpm-tpl/PHP-FPM-73-public.tpl
+++ b/src/deb/for-download/tools/apache-fpm-tpl/PHP-FPM-73-public.tpl
@@ -16,7 +16,7 @@
AllowOverride All
- Options +Includes -Indexes +ExecCGI
+ Options +Includes -Indexes -FollowSymLinks +SymLinksIfOwnerMatch
#
# RMode config
diff --git a/src/deb/for-download/tools/apache-fpm-tpl/PHP-FPM-73.stpl b/src/deb/for-download/tools/apache-fpm-tpl/PHP-FPM-73.stpl
index 28224413..902d647a 100644
--- a/src/deb/for-download/tools/apache-fpm-tpl/PHP-FPM-73.stpl
+++ b/src/deb/for-download/tools/apache-fpm-tpl/PHP-FPM-73.stpl
@@ -17,7 +17,7 @@
AllowOverride All
SSLRequireSSL
- Options +Includes -Indexes +ExecCGI
+ Options +Includes -Indexes -FollowSymLinks +SymLinksIfOwnerMatch
SSLEngine on
SSLVerifyClient none
diff --git a/src/deb/for-download/tools/apache-fpm-tpl/PHP-FPM-73.tpl b/src/deb/for-download/tools/apache-fpm-tpl/PHP-FPM-73.tpl
index 7bec5e73..40df2629 100644
--- a/src/deb/for-download/tools/apache-fpm-tpl/PHP-FPM-73.tpl
+++ b/src/deb/for-download/tools/apache-fpm-tpl/PHP-FPM-73.tpl
@@ -16,7 +16,7 @@
AllowOverride All
- Options +Includes -Indexes +ExecCGI
+ Options +Includes -Indexes -FollowSymLinks +SymLinksIfOwnerMatch
#
# RMode config
diff --git a/src/deb/for-download/tools/apache-fpm-tpl/PHP-FPM-74-public.stpl b/src/deb/for-download/tools/apache-fpm-tpl/PHP-FPM-74-public.stpl
index fdbc26f9..739cb48d 100644
--- a/src/deb/for-download/tools/apache-fpm-tpl/PHP-FPM-74-public.stpl
+++ b/src/deb/for-download/tools/apache-fpm-tpl/PHP-FPM-74-public.stpl
@@ -17,7 +17,7 @@
AllowOverride All
SSLRequireSSL
- Options +Includes -Indexes +ExecCGI
+ Options +Includes -Indexes -FollowSymLinks +SymLinksIfOwnerMatch
SSLEngine on
SSLVerifyClient none
diff --git a/src/deb/for-download/tools/apache-fpm-tpl/PHP-FPM-74-public.tpl b/src/deb/for-download/tools/apache-fpm-tpl/PHP-FPM-74-public.tpl
index 614f20c3..f31ed5a8 100644
--- a/src/deb/for-download/tools/apache-fpm-tpl/PHP-FPM-74-public.tpl
+++ b/src/deb/for-download/tools/apache-fpm-tpl/PHP-FPM-74-public.tpl
@@ -16,7 +16,7 @@
AllowOverride All
- Options +Includes -Indexes +ExecCGI
+ Options +Includes -Indexes -FollowSymLinks +SymLinksIfOwnerMatch
#
# RMode config
diff --git a/src/deb/for-download/tools/apache-fpm-tpl/PHP-FPM-74.stpl b/src/deb/for-download/tools/apache-fpm-tpl/PHP-FPM-74.stpl
index df607247..fbc1d9c6 100644
--- a/src/deb/for-download/tools/apache-fpm-tpl/PHP-FPM-74.stpl
+++ b/src/deb/for-download/tools/apache-fpm-tpl/PHP-FPM-74.stpl
@@ -17,7 +17,7 @@
AllowOverride All
SSLRequireSSL
- Options +Includes -Indexes +ExecCGI
+ Options +Includes -Indexes -FollowSymLinks +SymLinksIfOwnerMatch
SSLEngine on
SSLVerifyClient none
diff --git a/src/deb/for-download/tools/apache-fpm-tpl/PHP-FPM-74.tpl b/src/deb/for-download/tools/apache-fpm-tpl/PHP-FPM-74.tpl
index 7b6e2cb5..aaf8f62c 100644
--- a/src/deb/for-download/tools/apache-fpm-tpl/PHP-FPM-74.tpl
+++ b/src/deb/for-download/tools/apache-fpm-tpl/PHP-FPM-74.tpl
@@ -16,7 +16,7 @@
AllowOverride All
- Options +Includes -Indexes +ExecCGI
+ Options +Includes -Indexes -FollowSymLinks +SymLinksIfOwnerMatch
#
# RMode config
diff --git a/src/deb/for-download/tools/apache-fpm-tpl/PHP-FPM-80-public.stpl b/src/deb/for-download/tools/apache-fpm-tpl/PHP-FPM-80-public.stpl
index 4ce4b993..b1335a44 100644
--- a/src/deb/for-download/tools/apache-fpm-tpl/PHP-FPM-80-public.stpl
+++ b/src/deb/for-download/tools/apache-fpm-tpl/PHP-FPM-80-public.stpl
@@ -17,7 +17,7 @@
AllowOverride All
SSLRequireSSL
- Options +Includes -Indexes +ExecCGI
+ Options +Includes -Indexes -FollowSymLinks +SymLinksIfOwnerMatch
SSLEngine on
SSLVerifyClient none
diff --git a/src/deb/for-download/tools/apache-fpm-tpl/PHP-FPM-80-public.tpl b/src/deb/for-download/tools/apache-fpm-tpl/PHP-FPM-80-public.tpl
index 41a5d506..1b0a610c 100644
--- a/src/deb/for-download/tools/apache-fpm-tpl/PHP-FPM-80-public.tpl
+++ b/src/deb/for-download/tools/apache-fpm-tpl/PHP-FPM-80-public.tpl
@@ -16,7 +16,7 @@
AllowOverride All
- Options +Includes -Indexes +ExecCGI
+ Options +Includes -Indexes -FollowSymLinks +SymLinksIfOwnerMatch
#
# RMode config
diff --git a/src/deb/for-download/tools/apache-fpm-tpl/PHP-FPM-80.stpl b/src/deb/for-download/tools/apache-fpm-tpl/PHP-FPM-80.stpl
index f39e9631..fae336fc 100644
--- a/src/deb/for-download/tools/apache-fpm-tpl/PHP-FPM-80.stpl
+++ b/src/deb/for-download/tools/apache-fpm-tpl/PHP-FPM-80.stpl
@@ -17,7 +17,7 @@
AllowOverride All
SSLRequireSSL
- Options +Includes -Indexes +ExecCGI
+ Options +Includes -Indexes -FollowSymLinks +SymLinksIfOwnerMatch
SSLEngine on
SSLVerifyClient none
diff --git a/src/deb/for-download/tools/apache-fpm-tpl/PHP-FPM-80.tpl b/src/deb/for-download/tools/apache-fpm-tpl/PHP-FPM-80.tpl
index b9e32f14..64699c22 100644
--- a/src/deb/for-download/tools/apache-fpm-tpl/PHP-FPM-80.tpl
+++ b/src/deb/for-download/tools/apache-fpm-tpl/PHP-FPM-80.tpl
@@ -16,7 +16,7 @@
AllowOverride All
- Options +Includes -Indexes +ExecCGI
+ Options +Includes -Indexes -FollowSymLinks +SymLinksIfOwnerMatch
#
# RMode config
diff --git a/src/deb/for-download/tools/apache-fpm-tpl/PHP-FPM-81-public.stpl b/src/deb/for-download/tools/apache-fpm-tpl/PHP-FPM-81-public.stpl
index 0d6404ec..4116fd42 100644
--- a/src/deb/for-download/tools/apache-fpm-tpl/PHP-FPM-81-public.stpl
+++ b/src/deb/for-download/tools/apache-fpm-tpl/PHP-FPM-81-public.stpl
@@ -17,7 +17,7 @@
AllowOverride All
SSLRequireSSL
- Options +Includes -Indexes +ExecCGI
+ Options +Includes -Indexes -FollowSymLinks +SymLinksIfOwnerMatch
SSLEngine on
SSLVerifyClient none
diff --git a/src/deb/for-download/tools/apache-fpm-tpl/PHP-FPM-81-public.tpl b/src/deb/for-download/tools/apache-fpm-tpl/PHP-FPM-81-public.tpl
index f2814063..ee319a20 100644
--- a/src/deb/for-download/tools/apache-fpm-tpl/PHP-FPM-81-public.tpl
+++ b/src/deb/for-download/tools/apache-fpm-tpl/PHP-FPM-81-public.tpl
@@ -16,7 +16,7 @@
AllowOverride All
- Options +Includes -Indexes +ExecCGI
+ Options +Includes -Indexes -FollowSymLinks +SymLinksIfOwnerMatch
#
# RMode config
diff --git a/src/deb/for-download/tools/apache-fpm-tpl/PHP-FPM-81.stpl b/src/deb/for-download/tools/apache-fpm-tpl/PHP-FPM-81.stpl
index fb191d03..5822a27a 100644
--- a/src/deb/for-download/tools/apache-fpm-tpl/PHP-FPM-81.stpl
+++ b/src/deb/for-download/tools/apache-fpm-tpl/PHP-FPM-81.stpl
@@ -17,7 +17,7 @@
AllowOverride All
SSLRequireSSL
- Options +Includes -Indexes +ExecCGI
+ Options +Includes -Indexes -FollowSymLinks +SymLinksIfOwnerMatch
SSLEngine on
SSLVerifyClient none
diff --git a/src/deb/for-download/tools/apache-fpm-tpl/PHP-FPM-81.tpl b/src/deb/for-download/tools/apache-fpm-tpl/PHP-FPM-81.tpl
index 1a02ec15..7864b3a4 100644
--- a/src/deb/for-download/tools/apache-fpm-tpl/PHP-FPM-81.tpl
+++ b/src/deb/for-download/tools/apache-fpm-tpl/PHP-FPM-81.tpl
@@ -16,7 +16,7 @@
AllowOverride All
- Options +Includes -Indexes +ExecCGI
+ Options +Includes -Indexes -FollowSymLinks +SymLinksIfOwnerMatch
#
# RMode config
diff --git a/src/deb/for-download/tools/apache-fpm-tpl/PHP-FPM-82-public.stpl b/src/deb/for-download/tools/apache-fpm-tpl/PHP-FPM-82-public.stpl
index 6afebb6e..809e7f33 100644
--- a/src/deb/for-download/tools/apache-fpm-tpl/PHP-FPM-82-public.stpl
+++ b/src/deb/for-download/tools/apache-fpm-tpl/PHP-FPM-82-public.stpl
@@ -17,7 +17,7 @@
AllowOverride All
SSLRequireSSL
- Options +Includes -Indexes +ExecCGI
+ Options +Includes -Indexes -FollowSymLinks +SymLinksIfOwnerMatch
SSLEngine on
SSLVerifyClient none
diff --git a/src/deb/for-download/tools/apache-fpm-tpl/PHP-FPM-82-public.tpl b/src/deb/for-download/tools/apache-fpm-tpl/PHP-FPM-82-public.tpl
index 03e67a3d..679d1409 100644
--- a/src/deb/for-download/tools/apache-fpm-tpl/PHP-FPM-82-public.tpl
+++ b/src/deb/for-download/tools/apache-fpm-tpl/PHP-FPM-82-public.tpl
@@ -16,7 +16,7 @@
AllowOverride All
- Options +Includes -Indexes +ExecCGI
+ Options +Includes -Indexes -FollowSymLinks +SymLinksIfOwnerMatch
diff --git a/src/deb/for-download/tools/apache-fpm-tpl/PHP-FPM-82.stpl b/src/deb/for-download/tools/apache-fpm-tpl/PHP-FPM-82.stpl
index ed39fad4..e0d04794 100644
--- a/src/deb/for-download/tools/apache-fpm-tpl/PHP-FPM-82.stpl
+++ b/src/deb/for-download/tools/apache-fpm-tpl/PHP-FPM-82.stpl
@@ -17,7 +17,7 @@
AllowOverride All
SSLRequireSSL
- Options +Includes -Indexes +ExecCGI
+ Options +Includes -Indexes -FollowSymLinks +SymLinksIfOwnerMatch
SSLEngine on
SSLVerifyClient none
diff --git a/src/deb/for-download/tools/apache-fpm-tpl/PHP-FPM-82.tpl b/src/deb/for-download/tools/apache-fpm-tpl/PHP-FPM-82.tpl
index 789ee9d3..eba95935 100644
--- a/src/deb/for-download/tools/apache-fpm-tpl/PHP-FPM-82.tpl
+++ b/src/deb/for-download/tools/apache-fpm-tpl/PHP-FPM-82.tpl
@@ -16,7 +16,7 @@
AllowOverride All
- Options +Includes -Indexes +ExecCGI
+ Options +Includes -Indexes -FollowSymLinks +SymLinksIfOwnerMatch
From c2511876c2a73489a5885efd5ff38af97babb662 Mon Sep 17 00:00:00 2001
From: myvesta <38690722+myvesta@users.noreply.github.com>
Date: Tue, 2 May 2023 12:59:16 +0200
Subject: [PATCH 022/365] --retry-connrefused exception for Debian8
---
bin/v-add-letsencrypt-domain | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/bin/v-add-letsencrypt-domain b/bin/v-add-letsencrypt-domain
index 7a306ab3..1f1f5a6e 100755
--- a/bin/v-add-letsencrypt-domain
+++ b/bin/v-add-letsencrypt-domain
@@ -21,6 +21,8 @@ if [[ "$LE_STAGING" = 'yes' ]]; then
API='https://acme-staging-v02.api.letsencrypt.org'
fi
+deb_release=$(cat /etc/debian_version | tr "." "\n" | head -n1)
+
# Includes
source $VESTA/func/main.sh
source $VESTA/func/domain.sh
@@ -60,7 +62,11 @@ query_le_v2() {
# 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 --location --user-agent "myVesta" --insecure --retry 5 --retry-connrefused --silent --dump-header /dev/stdout --data "$post_data" "$1" --header "$content" --output "$save_to_file"
+ if [ "$deb_release" -gt 8 ]; then
+ curl --location --user-agent "myVesta" --insecure --retry 5 --retry-connrefused --silent --dump-header /dev/stdout --data "$post_data" "$1" --header "$content" --output "$save_to_file"
+ else
+ curl --location --user-agent "myVesta" --insecure --retry 5 --silent --dump-header /dev/stdout --data "$post_data" "$1" --header "$content" --output "$save_to_file"
+ fi
}
From ec8e1741588dc9554d07a0d6b2f3a764d461d9d4 Mon Sep 17 00:00:00 2001
From: myvesta <38690722+myvesta@users.noreply.github.com>
Date: Sat, 27 May 2023 19:03:41 +0200
Subject: [PATCH 023/365] Update README.md, fixing < char
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 44d414b8..71d9f5a9 100644
--- a/README.md
+++ b/README.md
@@ -39,7 +39,7 @@
- src/deb/for-download/php/php.ini
- web/inc/secure_login.php
- If you didn't set the secret URL during installation, you can do it anytime. Just execute in shell: echo " /usr/local/vesta/web/inc/login_url.php
+ If you didn't set the secret URL during installation, you can do it anytime. Just execute in shell: echo "<?php \$login_url='MY-SECRET-URL';" > /usr/local/vesta/web/inc/login_url.php
We disabled dangerous PHP functions in php.ini, so even if, for example, your customer's CMS gets compromised, hacker will not be able to execute shell scripts from within PHP.
From 2afbc2cddfbbc57f296640cb28d89fb29b2526c2 Mon Sep 17 00:00:00 2001
From: myvesta <38690722+myvesta@users.noreply.github.com>
Date: Sun, 4 Jun 2023 16:41:08 +0200
Subject: [PATCH 024/365] Patching exim4.conf for: smtputf8_advertise_hosts
---
install/debian/10/exim/exim4.conf.template | 1 +
install/debian/11/exim/exim4.conf.template | 1 +
install/debian/9/exim/exim4.conf.template | 1 +
src/deb/vesta/postinst | 20 ++++++++++++++++++++
4 files changed, 23 insertions(+)
diff --git a/install/debian/10/exim/exim4.conf.template b/install/debian/10/exim/exim4.conf.template
index 0e5afaac..8fa12c2d 100644
--- a/install/debian/10/exim/exim4.conf.template
+++ b/install/debian/10/exim/exim4.conf.template
@@ -11,6 +11,7 @@
disable_ipv6=true
add_environment=<; PATH=/bin:/usr/bin
keep_environment=
+smtputf8_advertise_hosts =
domainlist local_domains = dsearch;/etc/exim4/domains/
domainlist relay_to_domains = dsearch;/etc/exim4/domains/
diff --git a/install/debian/11/exim/exim4.conf.template b/install/debian/11/exim/exim4.conf.template
index 72e3f668..cbc2e75f 100644
--- a/install/debian/11/exim/exim4.conf.template
+++ b/install/debian/11/exim/exim4.conf.template
@@ -11,6 +11,7 @@
disable_ipv6=true
add_environment=<; PATH=/bin:/usr/bin
keep_environment=
+smtputf8_advertise_hosts =
domainlist local_domains = dsearch;/etc/exim4/domains/
domainlist relay_to_domains = dsearch;/etc/exim4/domains/
diff --git a/install/debian/9/exim/exim4.conf.template b/install/debian/9/exim/exim4.conf.template
index 261947d2..c9344903 100644
--- a/install/debian/9/exim/exim4.conf.template
+++ b/install/debian/9/exim/exim4.conf.template
@@ -11,6 +11,7 @@
disable_ipv6=true
add_environment=<; PATH=/bin:/usr/bin
keep_environment=
+smtputf8_advertise_hosts =
domainlist local_domains = dsearch;/etc/exim4/domains/
domainlist relay_to_domains = dsearch;/etc/exim4/domains/
diff --git a/src/deb/vesta/postinst b/src/deb/vesta/postinst
index 975d12cd..97df816e 100755
--- a/src/deb/vesta/postinst
+++ b/src/deb/vesta/postinst
@@ -25,6 +25,26 @@ fi
echo "1" > /usr/local/vesta/data/upgrades/show_changelog
chmod a=rw /usr/local/vesta/data/upgrades/show_changelog
+# Patching exim4.conf for: smtputf8_advertise_hosts
+if [ "$release" -gt 8 ]; then
+ if [ -f "/etc/exim4/exim4.conf.template" ]; then
+ if ! grep -q 'smtputf8_advertise_hosts' /etc/exim4/exim4.conf.template; then
+ echo 'Patching exim4.conf for: smtputf8_advertise_hosts'
+ sed -i "/^domainlist local_domains = dsearch;\/etc\/exim4\/domains\//i smtputf8_advertise_hosts =" /etc/exim4/exim4.conf.template
+ systemctl restart exim4
+ fi
+ fi
+fi
+
+# Patching exim4.conf for: Helo name contains a ip address
+if [ -f "/etc/exim4/exim4.conf.template" ]; then
+ if grep -q 'drop message = Helo name contains a ip address (HELO was $sender_helo_name) and not is valid' /etc/exim4/exim4.conf.template; then
+ echo 'Patching exim4.conf for: Helo name contains a ip address'
+ patch /etc/exim4/exim4.conf.template < /usr/local/vesta/src/deb/for-download/tools/patches/exim_helo_authenticated.patch
+ sed -i '/telenor\.rs/d' /etc/exim4/exim4.conf.template
+ systemctl restart exim4
+ fi
+fi
# Making sure yescrypt is disabled
if [ "$release" -eq 11 ]; then
From c3d0c17c518153a6bcb725b0d6842706206bb814 Mon Sep 17 00:00:00 2001
From: myvesta <38690722+myvesta@users.noreply.github.com>
Date: Sun, 4 Jun 2023 17:56:44 +0200
Subject: [PATCH 025/365] Redesign of hosting panel
---
bin/v-list-user-log | 8 +-
bin/v-update-sys-rrd-la | 4 +-
web/add/user/index.php | 2 +-
web/css/styles.fix.css | 1001 ++++++
web/css/styles.fix.css.map | 1 +
web/css/styles.min.css | 3491 ++++++++++-----------
web/images/myvesta-large-white-130.png | Bin 0 -> 5284 bytes
web/images/sprite.png | Bin 57521 -> 35005 bytes
web/images/vesta_logo.png | Bin 5902 -> 5438 bytes
web/inc/main.php | 5 +-
web/js/fix.js | 157 +
web/js/init.js | 20 +-
web/templates/admin/list_dns_rec.html | 2 +-
web/templates/admin/list_server_info.html | 6 +-
web/templates/admin/list_user.html | 19 +-
web/templates/admin/list_weblog.html | 6 +-
web/templates/admin/panel.html | 25 +-
web/templates/footer.html | 3 -
web/templates/header.html | 15 +-
web/templates/login.html | 2 +-
web/templates/reset_1.html | 6 +-
web/templates/reset_2.html | 6 +-
web/templates/reset_3.html | 6 +-
web/templates/scripts.html | 161 +
web/templates/user/list_dns_rec.html | 2 +-
web/templates/user/list_user.html | 2 +-
web/templates/user/panel.html | 23 +-
27 files changed, 3143 insertions(+), 1830 deletions(-)
create mode 100644 web/css/styles.fix.css
create mode 100644 web/css/styles.fix.css.map
create mode 100644 web/images/myvesta-large-white-130.png
create mode 100644 web/js/fix.js
diff --git a/bin/v-list-user-log b/bin/v-list-user-log
index ca317f7d..6be9f9ae 100755
--- a/bin/v-list-user-log
+++ b/bin/v-list-user-log
@@ -12,6 +12,7 @@
# Argument definition
user=$1
format=${2-shell}
+limit=${3-300}
# Includes
source $VESTA/func/main.sh
@@ -34,6 +35,9 @@ json_list() {
"TIME": "'$TIME'",
"DATE": "'$DATE'"
}'
+ if [ "$limit" -gt 0 ] && [ "$i" = "$limit" ]; then
+ break;
+ fi
if [ "$i" -lt "$objects" ]; then
echo ','
else
@@ -83,7 +87,7 @@ csv_list() {
# Verifications #
#----------------------------------------------------------#
-check_args '1' "$#" 'USER [FORMAT]'
+check_args '1' "$#" 'USER [FORMAT] [LIMIT]'
is_format_valid 'user'
is_object_valid 'user' 'USER' "$user"
@@ -93,7 +97,7 @@ is_object_valid 'user' 'USER' "$user"
#----------------------------------------------------------#
# Parsing history log
-logs=$(tail -n 300 $USER_DATA/history.log 2>/dev/null)
+logs=$(tail -n $limit $USER_DATA/history.log | tac)
case $format in
json) json_list ;;
diff --git a/bin/v-update-sys-rrd-la b/bin/v-update-sys-rrd-la
index c8266626..860bdec6 100755
--- a/bin/v-update-sys-rrd-la
+++ b/bin/v-update-sys-rrd-la
@@ -74,7 +74,7 @@ rrdtool graph $RRD/la/$period-la.png \
-c "SHADEA#ffffff" \
-c "SHADEB#ffffff" \
-c "FONT#555555" \
- -c "CANVAS#302c2d" \
+ -c "CANVAS#F2F2F2" \
-c "GRID#666666" \
-c "MGRID#AAAAAA" \
-c "FRAME#777777" \
@@ -82,7 +82,7 @@ rrdtool graph $RRD/la/$period-la.png \
DEF:la=$RRD/la/la.rrd:LA:AVERAGE \
DEF:pr=$RRD/la/la.rrd:PR:AVERAGE \
COMMENT:'\r' \
- AREA:la#C8EA2E:"LA * 100"\
+ AREA:la#00CD2E:"LA * 100"\
GPRINT:la:'LAST: Current\:''%8.0lf' \
GPRINT:la:'MIN: Min\:''%8.0lf' \
GPRINT:la:'MAX: Max\:''%8.0lf\j' \
diff --git a/web/add/user/index.php b/web/add/user/index.php
index 1ed521e3..04043484 100644
--- a/web/add/user/index.php
+++ b/web/add/user/index.php
@@ -100,7 +100,7 @@ if (!empty($_POST['ok'])) {
// Flush field values on success
if (empty($_SESSION['error_msg'])) {
$_SESSION['ok_msg'] = __('USER_CREATED_OK',htmlentities($_POST['v_username']),htmlentities($_POST['v_username']));
- $_SESSION['ok_msg'] .= " / " . __('login as') ." ".htmlentities($_POST['v_username']). "";
+ $_SESSION['ok_msg'] .= " / " . __('login as') ." ".htmlentities($_POST['v_username']). "";
unset($v_username);
unset($v_password);
unset($v_email);
diff --git a/web/css/styles.fix.css b/web/css/styles.fix.css
new file mode 100644
index 00000000..5fbdb6ec
--- /dev/null
+++ b/web/css/styles.fix.css
@@ -0,0 +1,1001 @@
+body {
+ background: #f0f3f5;
+ color: #58666f;
+ font-family: 'Source Sans Pro', sans-serif;
+}
+b, strong {
+ color: #58666f;
+}
+.l-percent {
+ border-bottom: none;
+ margin-top: 1px;
+ width: 200px;
+ background: #e4eaed;
+}
+.l-percent__fill {
+ background-color: #2ac34e;
+ bottom: 0;
+}
+.to-top {
+ z-index: 100;
+ top: unset;
+ bottom: 30px;
+ right: 85px;
+}
+.to-shortcuts {
+ z-index: 100;
+ top: unset;
+ bottom: 30px;
+ right: 130px;
+}
+.shortcuts {
+ right: calc(50% - 400px);
+ bottom: calc(50% - 213px);
+}
+.l-separator {
+ display: none;
+}
+.l-header {
+ position: fixed;
+ width: calc(100% - 40px);
+ z-index: 99;
+ background: #fff;
+ box-shadow: 0 2px 2px rgba(0, 0, 0, 0.05), 0 1px 0 rgba(0, 0, 0, 0.05);
+ color: #58666f;
+ height: 50px;
+ padding: 0 20px;
+ margin-bottom: unset;
+}
+.l-header a {
+ color: #58666f;
+ font-size: 14px;
+}
+.l-header a:hover {
+ color: #58666f;
+}
+.l-header .l-center {
+ max-width: none !important;
+}
+.l-header .l-center .l-logo {
+ background-position: -65px -182px;
+ /* background-position: -125px -478px; */
+ background-repeat: no-repeat;
+ display: block;
+ height: 40px;
+ margin-top: 0;
+ width: 80px;
+ /* width: 42px; */
+ margin-left: 0;
+ background-size: 235px 325px;
+ position: relative;
+ top: 5px;
+ left: 0;
+ float: left;
+ padding-right: 20px;
+}
+.l-header .l-center .l-menu {
+ position: unset;
+ margin-left: unset;
+}
+.l-header .l-center .l-menu .l-menu__item a {
+ line-height: 50px;
+ padding: 0 18px;
+ display: inline-block;
+}
+.l-header .l-center .l-menu .l-menu__item a:hover {
+ background-color: rgba(0, 0, 0, 0.05);
+}
+.l-header .l-center .l-menu .l-menu__item a:active {
+ background-color: rgba(0, 0, 0, 0.05);
+}
+.l-header .l-center .l-menu .l-menu__item.l-menu__item--active a {
+ color: unset;
+ font-size: unset;
+ font-weight: unset;
+ text-transform: unset;
+ background-color: rgba(0, 0, 0, 0.05);
+}
+.l-header .l-center .l-profile .l-profile__notifications {
+ margin-top: 13px;
+}
+.l-header .l-center .l-profile .l-profile__notifications:hover {
+ background-color: rgba(0, 0, 0, 0.05);
+}
+.l-header .l-center .l-profile .l-profile__username {
+ padding: 15px 0 0 10px;
+}
+.l-header .l-center .l-profile .l-profile__logout {
+ padding: 15px 0 0 10px;
+}
+.l-header > .l-center {
+ margin-left: 200px;
+}
+.l-content {
+ position: relative;
+ top: 50px;
+}
+.l-content + div {
+ right: 100px !important;
+ top: unset !important;
+ bottom: 40px !important;
+}
+.l-content + div div {
+ background-color: #e4eaed !important;
+ padding: 10px;
+ border-radius: 5px;
+}
+.l-content .l-center {
+ max-width: none !important;
+}
+.l-content .l-center .l-stat {
+ display: block;
+ position: fixed;
+ z-index: 100;
+ padding-top: 0 !important;
+ width: 200px;
+ height: 100%;
+ top: 0;
+ margin-top: 0;
+ background: #1c2b35;
+ overflow-y: scroll;
+ scrollbar-width: thin;
+ /* Firefox */
+ -ms-overflow-style: scrollbar;
+ /* Internet Explorer 10+ */
+ /* width */
+}
+.l-content .l-center .l-stat::-webkit-scrollbar {
+ display: block;
+ width: 7px;
+ /* Track */
+}
+.l-content .l-center .l-stat::-webkit-scrollbar-track {
+ background: rgba(255, 255, 255, 0);
+ /* Handle */
+}
+.l-content .l-center .l-stat::-webkit-scrollbar-thumb {
+ background: rgba(255, 255, 255, 0.15);
+}
+.l-content .l-center .l-stat:hover {
+ /* Handle on hover */
+}
+.l-content .l-center .l-stat:hover::-webkit-scrollbar-thumb {
+ background: rgba(255, 255, 255, 0.4);
+}
+.l-content .l-center .l-stat .l-stat__col--active ul {
+ display: block !important;
+}
+.l-content .l-center .l-stat .l-stat__col--active {
+ background: #131e27;
+}
+.l-content .l-center .l-stat .l-stat__col--active a {
+ border-bottom: 2px solid #131e27;
+}
+.l-content .l-center .l-stat .l-stat__col--active a .l-stat__col-title {
+ background: #16232d;
+ color: white !important;
+ font-size: 20px;
+ font-weight: 400;
+ margin-top: unset;
+ letter-spacing: unset;
+ margin-right: unset;
+}
+.l-content .l-center .l-stat .l-stat__col--active span {
+ display: none;
+}
+.l-content .l-center .l-stat .focus {
+ background: #5e5e5e;
+}
+.l-content .l-center .l-stat .focus a {
+ border-bottom: 2px solid #131e27;
+}
+.l-content .l-center .l-stat .focus a ul li {
+ color: #c2e5ff !important;
+}
+.l-content .l-center .l-stat .focus a .l-stat__col-title {
+ background: #5e5e5e;
+ color: #c4d0d8;
+ font-size: 20px;
+ font-weight: 400;
+ margin-top: unset;
+ letter-spacing: unset;
+ margin-right: unset;
+}
+.l-content .l-center .l-stat .l-stat__col {
+ display: block;
+ float: unset;
+}
+.l-content .l-center .l-stat .l-stat__col:hover .l-stat__col-title {
+ color: #fff;
+}
+.l-content .l-center .l-stat .l-stat__col:hover .l-stat__col-title:after {
+ color: #fff;
+}
+.l-content .l-center .l-stat .l-stat__col a {
+ height: unset !important;
+ min-height: unset !important;
+ display: block;
+ width: unset;
+ border-bottom: 2px solid #131e27;
+ background-color: transparent;
+ padding-left: unset;
+ padding-bottom: 10px;
+ padding-top: unset;
+ margin-top: unset;
+}
+.l-content .l-center .l-stat .l-stat__col a .l-stat__col-title {
+ min-height: unset !important;
+ color: #869fb2;
+ font-size: 20px;
+ font-weight: 400;
+ padding: 15px 15px 15px 20px;
+ margin-bottom: 0;
+ margin-top: 0 !important;
+}
+.l-content .l-center .l-stat .l-stat__col a .l-stat__col-title:after {
+ font-family: 'Font Awesome 5 Free';
+ font-weight: bold;
+ content: "\f054";
+ float: right;
+ font-size: 10px;
+ color: #5c798f;
+ margin-top: 8px;
+ margin-right: 26px;
+}
+.l-content .l-center .l-stat .l-stat__col a .l-stat__col-title:before {
+ font-family: 'Font Awesome 5 Free';
+ font-weight: bold;
+ content: "\f233";
+ padding-right: 10px;
+ font-size: 17px;
+}
+
+.l-content .l-center .l-stat .l-stat__col--active a .l-stat__col-title:after {
+ margin-right: 26px;
+}
+
+.l-content .l-center .l-stat .l-stat__col a ul {
+ margin: 0;
+ display: none;
+}
+.l-content .l-center .l-stat .l-stat__col a ul li {
+ color: #92adc2;
+ margin-bottom: unset;
+ padding: 10px 20px 10px 20px;
+ font-size: 14px;
+}
+.l-content .l-center .l-stat .l-stat__col a ul li span {
+ float: right;
+ padding: 3px 5px 4px 5px;
+ font-size: 13px;
+ color: #fff;
+ background-color: #27c54e;
+ font-weight: 700;
+ text-shadow: 0 1px 0 rgba(0, 0, 0, 0.2);
+ display: inline-block;
+ min-width: 10px;
+ line-height: 1;
+ text-align: center;
+ white-space: nowrap;
+ vertical-align: baseline;
+ border-radius: 0.25em;
+ left: 140px;
+}
+.l-content .l-center .l-stat .l-stat__col a ul li:first-child span {
+ float: right;
+ padding: 3px 5px 4px 5px;
+ font-size: 13px;
+ color: #fff;
+ background-color: #34b5dd;
+ font-weight: 700;
+ text-shadow: 0 1px 0 rgba(0, 0, 0, 0.2);
+ display: inline-block;
+ min-width: 10px;
+ line-height: 1;
+ text-align: center;
+ white-space: nowrap;
+ vertical-align: baseline;
+ border-radius: 10px;
+}
+.l-content .l-center .l-stat .l-stat__col a ul li:before {
+ font-family: 'Font Awesome 5 Free';
+ font-weight: bold;
+ content: "\f03a";
+ padding-right: 15px;
+}
+.l-content .l-center .l-stat .l-stat__col:nth-of-type(1) a .l-stat__col-title:before {
+ content: "\f500";
+}
+.l-content .l-center .l-stat .l-stat__col:nth-of-type(1) a ul li:nth-of-type(1):before {
+ content: "\f0a0";
+}
+.l-content .l-center .l-stat .l-stat__col:nth-of-type(1) a ul li:nth-of-type(2):before {
+ content: "\f75b";
+}
+.l-content .l-center .l-stat .l-stat__col:nth-of-type(1) a ul li:nth-of-type(3):before {
+ content: "\f05e";
+}
+.l-content .l-center .l-stat .l-stat__col:nth-of-type(2) a .l-stat__col-title:before {
+ content: "\f233";
+}
+.l-content .l-center .l-stat .l-stat__col:nth-of-type(2) a ul li:nth-of-type(1):before {
+ content: "\f0ac";
+}
+.l-content .l-center .l-stat .l-stat__col:nth-of-type(2) a ul li:nth-of-type(2):before {
+ content: "\f0c5";
+}
+.l-content .l-center .l-stat .l-stat__col:nth-of-type(2) a ul li:nth-of-type(3):before {
+ content: "\f05e";
+}
+.l-content .l-center .l-stat .l-stat__col:nth-of-type(3) a .l-stat__col-title:before {
+ content: "\f6ff";
+}
+.l-content .l-center .l-stat .l-stat__col:nth-of-type(3) a ul li:nth-of-type(1):before {
+ content: "\f0ac";
+}
+.l-content .l-center .l-stat .l-stat__col:nth-of-type(3) a ul li:nth-of-type(2):before {
+ content: "\f303";
+}
+.l-content .l-center .l-stat .l-stat__col:nth-of-type(3) a ul li:nth-of-type(3):before {
+ content: "\f05e";
+}
+.l-content .l-center .l-stat .l-stat__col:nth-of-type(4) a .l-stat__col-title:before {
+ content: "\f674";
+}
+.l-content .l-center .l-stat .l-stat__col:nth-of-type(4) a ul li:nth-of-type(1):before {
+ content: "\f0ac";
+}
+.l-content .l-center .l-stat .l-stat__col:nth-of-type(4) a ul li:nth-of-type(2):before {
+ content: "\f2bb";
+}
+.l-content .l-center .l-stat .l-stat__col:nth-of-type(4) a ul li:nth-of-type(3):before {
+ content: "\f05e";
+}
+.l-content .l-center .l-stat .l-stat__col:nth-of-type(5) a .l-stat__col-title:before {
+ content: "\f1c0";
+}
+.l-content .l-center .l-stat .l-stat__col:nth-of-type(5) a ul li:nth-of-type(1):before {
+ content: "\f1c0";
+}
+.l-content .l-center .l-stat .l-stat__col:nth-of-type(5) a ul li:nth-of-type(2):before {
+ content: "\f05e";
+}
+.l-content .l-center .l-stat .l-stat__col:nth-of-type(5) a ul li:nth-of-type(3):before {
+ content: "\f05e";
+}
+.l-content .l-center .l-stat .l-stat__col:nth-of-type(6) a .l-stat__col-title:before {
+ content: "\f120";
+}
+.l-content .l-center .l-stat .l-stat__col:nth-of-type(6) a ul li:nth-of-type(1):before {
+ content: "\f120";
+}
+.l-content .l-center .l-stat .l-stat__col:nth-of-type(6) a ul li:nth-of-type(2):before {
+ content: "\f05e";
+}
+.l-content .l-center .l-stat .l-stat__col:nth-of-type(6) a ul li:nth-of-type(3):before {
+ content: "\f05e";
+}
+.l-content .l-center .l-stat .l-stat__col:nth-of-type(7) a .l-stat__col-title:before {
+ content: "\f019";
+}
+.l-content .l-center .l-stat .l-stat__col:nth-of-type(7) a ul li:nth-of-type(1):before {
+ content: "\f019";
+}
+.l-content .l-center .l-stat .l-stat__col:nth-of-type(7) a ul li:nth-of-type(2):before {
+ content: "\f05e";
+}
+.l-content .l-center .l-stat .l-stat__col:nth-of-type(7) a ul li:nth-of-type(3):before {
+ content: "\f05e";
+}
+.l-content .l-center .l-sort {
+ padding: 0 20px;
+ position: relative;
+ z-index: 98;
+ width: auto;
+ margin-top: unset !important;
+ background-color: #f6f8f8;
+ border-bottom: 1px solid #dee5e8;
+ margin-bottom: 30px;
+}
+.l-content .l-center .l-sort .l-sort__create-btn {
+ bottom: -20px;
+}
+.l-content .l-center .l-sort .context-menu {
+ top: 77px;
+}
+.l-content .l-center .l-sort .l-sort-toolbar {
+ padding: 24px 0 22px 0;
+ color: #98a6ac;
+}
+.l-content .l-center .l-sort .l-sort-toolbar .l-select {
+ border-radius: 3px 0 0 3px;
+ background: #fff;
+ border: 1px solid #dee5e8;
+}
+.l-content .l-center .l-sort .l-sort-toolbar .l-sort-toolbar__filter-apply {
+ border-radius: 0 3px 3px 0;
+}
+.l-content .l-center .l-sort .l-sort-toolbar table tbody tr .l-sort-toolbar__search-box form .search-input {
+ border-radius: 3px 0 0 3px;
+ border: 1px solid #dee5e8;
+}
+.l-content .l-center .l-sort .l-sort-toolbar table tbody tr .l-sort-toolbar__search-box form .l-sort-toolbar__search {
+ border-radius: 0 3px 3px 0;
+}
+.l-content .l-center .l-sort .l-sort-toolbar table tbody tr .sort-by {
+ padding-left: 30px;
+}
+.l-content .l-center .l-unit {
+ padding: 0 0 0 15px;
+ overflow: hidden;
+ margin: 0px 20px 20px 20px;
+ background: #fff;
+ border-radius: 3px;
+ border-bottom: none !important;
+ border-left: none !important;
+ color: #98a6ac;
+ font-size: 14px;
+}
+.l-content .l-center .l-unit.selected {
+ background-color: #e4eaed;
+}
+.l-content .l-center .l-unit--suspended {
+ background-color: #eaeaea !important;
+}
+.l-content .l-center .l-unit.selected .l-percent {
+ border-bottom: none;
+ margin-top: 1px;
+ width: 200px;
+ background: #cbd3d7;
+}
+.l-content .l-center .l-unit .l-unit-toolbar .l-unit-toolbar__col.l-unit-toolbar__col--right {
+ position: relative;
+ top: 20px;
+ right: 20px;
+ display: block;
+}
+.l-content .l-center .l-unit .l-unit-toolbar .l-unit-toolbar__col.l-unit-toolbar__col--right .actions-panel__col {
+ margin-left: 10px;
+ border-radius: 3px;
+ overflow: hidden;
+ border-right: none;
+ background-color: #dde6e8;
+}
+.l-content .l-center .l-unit .l-unit-toolbar .l-unit-toolbar__col.l-unit-toolbar__col--right .actions-panel__col a {
+ font-weight: 500;
+}
+.l-content .l-center .l-unit .l-unit-toolbar .l-unit-toolbar__col .check-label:before {
+ z-index: 97;
+}
+.l-content .l-center .l-unit .l-unit__col .l-unit__name {
+ color: #34b5dd;
+ font-weight: 500;
+ font-size: 24px;
+ margin-bottom: unset;
+}
+.l-content .l-center .l-unit .l-unit__col .l-unit__ip {
+ font-size: 18px;
+}
+.l-content .l-center .l-unit .l-unit__col .l-unit__date {
+ letter-spacing: unset;
+ display: inline-block;
+ border-bottom: solid 10px #ffeb0087;
+ line-height: 3px;
+ padding: 0 0px;
+ margin-bottom: 30px;
+ font-weight: 400;
+ font-size: 16px;
+}
+.l-content .l-center .l-unit .l-unit__col .l-unit__stats td {
+ height: 27px;
+}
+.l-content .l-center .io-box {
+ overflow: hidden;
+ margin: 20px 20px 0px 20px;
+ color: #98a6ac;
+}
+.l-content .l-center .io-box .io-box-left {
+ float: left;
+ width: calc(100% - 800px);
+ min-width: 410px;
+ text-align: center;
+}
+.l-content .l-center .io-box .io-box-left .io-box-left-items {
+ float: left;
+ width: calc(50% - 20px);
+ height: 137px;
+ margin-right: 20px;
+ margin-bottom: 20px;
+ background: #fff;
+ border-radius: 3px;
+}
+.l-content .l-center .io-box .io-box-left .io-box-left-items a {
+ display: block;
+ font-size: 36px;
+ font-weight: 300;
+ margin-top: 32px;
+}
+.l-content .l-center .io-box .io-box-left .io-1-homepage-block {
+ color: #98a6ac;
+}
+.l-content .l-center .io-box .io-box-left .io-1-homepage-block a {
+ color: #34b5dd;
+}
+.l-content .l-center .io-box .io-box-left .io-2-homepage-block {
+ color: #b4efc2;
+ background-color: #27c54e;
+}
+.l-content .l-center .io-box .io-box-left .io-2-homepage-block a {
+ color: #ecfff1;
+}
+.l-content .l-center .io-box .io-box-left .io-3-homepage-block {
+ color: #b0e1f1;
+ background-color: #34b5dd;
+}
+.l-content .l-center .io-box .io-box-left .io-3-homepage-block a {
+ color: #dcf2f8;
+}
+.l-content .l-center .io-box .io-box-left .io-4-homepage-block {
+ color: #98a6ac;
+}
+.l-content .l-center .io-box .io-box-left .io-4-homepage-block a {
+ color: #58666f;
+}
+.l-content .l-center .io-box .io-box-left .io-5-homepage-block {
+ width: calc(100% - 20px);
+ color: #98a6ac;
+ background: #e4eaed;
+}
+.l-content .l-center .io-box .io-box-left .io-5-homepage-block a {
+ color: #27c54e;
+}
+.l-content .l-center .io-box .io-box-left .io-5-homepage-block:before {
+ font-family: 'Font Awesome 5 Free';
+ font-weight: bold;
+ font-size: 32px;
+ background: #dde6e8;
+ height: 121px;
+ width: 115px;
+ line-height: 90px;
+ content: "\f581";
+ color: #fff;
+ float: left;
+ border-radius: 5px 0 0 5px;
+ padding-top: 16px;
+}
+.l-content .l-center .io-box .io-box-right {
+ float: right;
+ width: 800px;
+ background: #fff;
+ height: 450px;
+ overflow: hidden;
+ border-radius: 3px;
+ text-align: center;
+}
+.l-content .l-center .io-box .io-box-right img {
+ margin-top: 8px;
+ width: 767px;
+ height: 433px;
+ position: relative;
+}
+.l-content .l-center .l-unit-ft {
+ padding: 0 0 37px 15px;
+ overflow: hidden;
+ margin: 0px 20px 19px 20px;
+ background: #e4eaed;
+ border-radius: 3px;
+ border-bottom: none !important;
+ border-left: none !important;
+ position: relative;
+ color: #a6b0b4;
+ font-weight: bold;
+ text-transform: uppercase;
+ font-size: 11px;
+}
+.l-content .l-center .l-unit-ft:before {
+ font-family: "Font Awesome 5 Free";
+ font-weight: bold;
+ font-size: 32px;
+ background: #dde6e8;
+ height: 100%;
+ width: 90px;
+ line-height: 108px;
+ content: "\f05a";
+ color: #fff;
+ float: left;
+ border-radius: 5px 0 0 5px;
+ position: absolute;
+ left: 0;
+ text-align: center;
+}
+.l-content .l-center .l-unit-ft .data {
+ margin: 0 0 50px 0;
+}
+.l-content .l-center #vstobjects {
+ padding: 0 0 0 15px;
+ overflow: hidden;
+ margin: 0px 20px 20px 20px;
+ background: #fff;
+ border-radius: 3px;
+ border-bottom: none !important;
+ border-left: none !important;
+ color: #98a6ac;
+ font-size: 14px;
+}
+.l-content .l-center #vstobjects .data-date {
+ color: #98A6AC;
+ letter-spacing: unset;
+ display: inline-block;
+ border-bottom: solid 10px #ffeb0087;
+ line-height: 3px;
+ padding: 0 0px;
+ margin-bottom: 30px;
+ font-weight: 400;
+ font-size: 16px;
+}
+.l-content .l-center .vst-text.step-top.helper-container {
+ margin-bottom: unset;
+ margin-top: 0;
+ float: unset;
+ height: auto;
+ width: auto;
+}
+.l-content .l-center .vst-text.step-top.helper-container #tabs.cron-helper-tabs {
+ padding: 0 0 0 15px;
+ overflow: hidden;
+ margin: 0 20px 20px 20px;
+ background: #fff;
+ border-radius: 3px;
+ border-bottom: none !important;
+ border-left: none !important;
+ color: #98a6ac;
+ font-size: 14px;
+ border: none !important;
+}
+.l-content > .units.l-center::before {
+ content: '';
+ display: block;
+ height: 0;
+}
+.l-content > .l-center {
+ margin-left: 200px;
+ margin-right: 40px;
+}
+.l-content > .l-center:first-child {
+ margin-left: 0;
+}
+.l-content #vstobjects > .l-center {
+ margin-left: 200px;
+ margin-right: 40px;
+ padding-top: 0;
+ padding-bottom: 1px;
+}
+.l-content .io-log {
+ color: #58666f;
+ border-left: 1px solid #dee5e8;
+ width: 240px;
+ position: fixed;
+ display: block;
+ /*overflow-scrolling: auto;*/
+ z-index: 98;
+ top: 50px;
+ right: -200px;
+ background: #fff;
+ word-break: break-word;
+ overflow: hidden;
+ border-right: 10px solid #e3e3e3;
+ box-sizing: border-box;
+ /* Firefox */
+ /* width */
+}
+.l-content .io-log::-webkit-scrollbar {
+ width: 7px;
+ /* Track */
+}
+.l-content .io-log::-webkit-scrollbar-track {
+ background: rgba(255, 255, 255, 0);
+ /* Handle */
+}
+.l-content .io-log::-webkit-scrollbar-thumb {
+ background: rgba(0, 0, 0, 0.15);
+ border-radius: 7px;
+ /* Handle on hover */
+}
+.l-content .io-log::-webkit-scrollbar-thumb:hover {
+ background: rgba(0, 0, 0, 0.4);
+ border-radius: 7px;
+}
+.l-content .io-log > * {
+ margin: 0 20px;
+}
+.l-content .io-log h2 {
+ margin: 0 0 20px 0;
+ padding-left: 20px;
+ font-size: 24px;
+ font-weight: 300;
+ line-height: 60px;
+ color: #98a6ac;
+ border-bottom: 1px solid #dee5e8;
+ cursor: pointer;
+}
+.l-content .io-log h2:before {
+ font-family: "Font Awesome 5 Free";
+ font-weight: bold;
+ content: "\f15c";
+ padding-right: 10px;
+ font-size: 17px;
+}
+.l-content .io-log > div {
+ /* border-left: solid 1px #dee5e8; */
+ padding-left: 15px;
+ position: relative;
+ margin-left: 25px;
+}
+.l-content .io-log > div > div {
+ position: relative;
+ margin-bottom: 25px;
+}
+.l-content .io-log > div > div > div:nth-of-type(2) {
+ color: #98a6ac;
+ font-size: 13px;
+ margin-bottom: 5px;
+}
+.l-content .io-log > div > div > div:nth-of-type(3) {
+ color: #98a6ac;
+ font-size: 13px;
+ margin-bottom: 5px;
+}
+.l-content .io-log > div > div:before {
+ content: '';
+ position: absolute;
+ height: 100%;
+ width: 7px;
+ border-radius: 10px;
+ border: solid 1px #dee5e8;
+ background: #e0fff9;
+ left: -20px;
+}
+.l-content .io-log > div > div:first-child(1n):before {
+ background: #e0fff9;
+}
+.l-content .io-log > div > div:nth-child(2n):before {
+ background: #fbffe0;
+}
+.l-content .io-log > div > div:nth-child(3n):before {
+ background: #fbffe0;
+}
+.l-content .io-log > div > div:nth-child(4n):before {
+ background: #fbffe0;
+}
+.l-content .io-log > div > div:nth-child(5n):before {
+ background: #fbffe0;
+}
+
+
+.l-content .io-log2 {
+ color: #58666f;
+ border-left: 1px solid #dee5e8;
+ border-top: 1px solid #cecece;
+ width: 240px;
+ position: fixed;
+ height: 100%;
+ display: block;
+ /*overflow-scrolling: auto;*/
+ z-index: 98;
+ top: 380px;
+ right: -200px;
+ background: #fff;
+ word-break: break-word;
+ overflow-y: scroll;
+ scrollbar-width: thin;
+ box-sizing: border-box;
+ /* Firefox */
+ /* width */
+}
+.l-content .io-log2::-webkit-scrollbar {
+ width: 7px;
+ /* Track */
+}
+.l-content .io-log2::-webkit-scrollbar-track {
+ background: rgba(255, 255, 255, 0);
+ /* Handle */
+}
+.l-content .io-log2::-webkit-scrollbar-thumb {
+ background: rgba(0, 0, 0, 0.15);
+ border-radius: 7px;
+ /* Handle on hover */
+}
+.l-content .io-log2::-webkit-scrollbar-thumb:hover {
+ background: rgba(0, 0, 0, 0.4);
+ border-radius: 7px;
+}
+.l-content .io-log2 > * {
+ margin: 0 20px;
+}
+.l-content .io-log2 h2 {
+ margin: 0 0 20px 0;
+ padding-left: 20px;
+ font-size: 24px;
+ font-weight: 300;
+ line-height: 60px;
+ color: #98a6ac;
+ border-bottom: 1px solid #dee5e8;
+ cursor: pointer;
+}
+.l-content .io-log2 h2:before {
+ font-family: "Font Awesome 5 Free";
+ font-weight: bold;
+ content: "\f15c";
+ padding-right: 10px;
+ font-size: 17px;
+}
+.l-content .io-log2 > div {
+ border-left: solid 1px #dee5e8;
+ padding-left: 15px;
+ position: relative;
+ margin-left: 25px;
+}
+.l-content .io-log2 > div > div {
+ position: relative;
+ margin-bottom: 25px;
+}
+.l-content .io-log2 > div > div > div:nth-of-type(2) {
+ color: #98a6ac;
+ font-size: 12px;
+ margin-bottom: 5px;
+}
+.l-content .io-log2 > div > div:before {
+ content: '';
+ position: absolute;
+ height: 100%;
+ width: 7px;
+ border-radius: 10px;
+ border: solid 1px #dee5e8;
+ background: #fff;
+ left: -20px;
+}
+.l-content .io-log2 > div > div:nth-child(2n):before {
+ border: solid 1px #27c54e;
+}
+.l-content .io-log2 > div > div:nth-child(3n):before {
+ border: solid 1px #27bbc5;
+}
+.l-content .io-log2 > div > div:nth-child(4n):before {
+ border: solid 1px #275bc5;
+}
+.l-content .io-log2 > div > div:nth-child(5n):before {
+ border: solid 1px #ffcc00;
+}
+
+
+#tooltip {
+ background-color: #34b5dd;
+}
+.l-sort__create-btn.edit:hover #tooltip {
+ background-color: #49c8ef;
+}
+.l-sort__create-btn.edit:active #tooltip {
+ background-color: #00d8ff !important;
+}
+.l-sort__create-btn:active #tooltip {
+ background-color: #00d8ff;
+}
+.body-login, .body-reset {
+ background-color: #f0f3f5;
+}
+.body-login .login, .body-reset .login {
+ font-family: Arial, Helvetica, sans-serif;
+ border: 1px solid #e7ecee;
+ border-radius: 10px;
+ overflow: hidden;
+ position: relative;
+ padding: 35px 35px 10px 35px;
+ display: block;
+ width: 420px;
+ box-shadow: 0 2px 2px rgba(0, 0, 0, 0.05), 0 1px 0 rgba(0, 0, 0, 0.05);
+}
+.body-login .login > tbody > tr > td > table > tbody > tr:nth-of-type(1) > td:nth-of-type(1), .body-reset .login > tbody > tr > td > table > tbody > tr:nth-of-type(1) > td:nth-of-type(1) {
+ position: absolute;
+ text-align: center;
+ width: calc(100% - 46px);
+}
+/*
+.body-login .login > tbody > tr > td > table > tbody > tr:nth-of-type(1) > td:nth-of-type(1) a, .body-reset .login > tbody > tr > td > table > tbody > tr:nth-of-type(1) > td:nth-of-type(1) a {
+ background-image: url(/images/sprite.png?1446554103);
+ background-position: -65px -182px;
+ background-repeat: no-repeat;
+ display: inline-block;
+ height: 40px;
+ margin-top: 0;
+ width: 80px;
+ margin-left: 0;
+ background-size: 235px 325px;
+ position: relative;
+}
+*/
+/*
+.body-login .login > tbody > tr > td > table > tbody > tr:nth-of-type(1) > td:nth-of-type(1) a img, .body-reset .login > tbody > tr > td > table > tbody > tr:nth-of-type(1) > td:nth-of-type(1) a img {
+ display: none;
+}
+*/
+.body-login .login > tbody > tr > td > table > tbody > tr:nth-of-type(1) > td:nth-of-type(2), .body-reset .login > tbody > tr > td > table > tbody > tr:nth-of-type(1) > td:nth-of-type(2) {
+ position: relative;
+ padding: 65px 0 0 0 !important;
+}
+.body-login .login > tbody > tr > td > table > tbody > tr:nth-of-type(1) > td:nth-of-type(2) .vst-input, .body-reset .login > tbody > tr > td > table > tbody > tr:nth-of-type(1) > td:nth-of-type(2) .vst-input {
+ padding: 5px 10px;
+ margin: 0;
+ width: 320px !important;
+ margin-top: 7px;
+ border-radius: 3px;
+ border: solid 1px #d3d9e2;
+}
+.body-login .login > tbody > tr > td > table > tbody > tr:nth-of-type(1) > td:nth-of-type(2) .button, .body-reset .login > tbody > tr > td > table > tbody > tr:nth-of-type(1) > td:nth-of-type(2) .button, .body-login .login > tbody > tr > td > table > tbody > tr:nth-of-type(1) > td:nth-of-type(2) .button:hover, .body-reset .login > tbody > tr > td > table > tbody > tr:nth-of-type(1) > td:nth-of-type(2) .button:hover, .body-login .login > tbody > tr > td > table > tbody > tr:nth-of-type(1) > td:nth-of-type(2) .button:active, .body-reset .login > tbody > tr > td > table > tbody > tr:nth-of-type(1) > td:nth-of-type(2) .button:active {
+ width: 100% !important;
+ border: 1px solid #27c54e;
+ background-color: #27c54e;
+ color: #f4f3f9;
+ margin-bottom: 20px;
+}
+.body-login .login > tbody > tr > td > table > tbody > tr:nth-of-type(2) .login-bottom, .body-reset .login > tbody > tr > td > table > tbody > tr:nth-of-type(2) .login-bottom {
+ width: auto;
+ text-align: center;
+ padding-bottom: unset;
+ padding: 0;
+}
+.body-login .login-box .vst-advanced, .body-reset .login-box .vst-advanced {
+ color: #34b5dd;
+}
+.body-web-log .l-header > .l-center {
+ margin-left: 0;
+}
+.l-stat__col span {
+ padding: 4px 0;
+ font-size: 15px;
+ position: fixed;
+ display: inline-block;
+ left: 159px;
+}
+.l-sort__create-btn2 {
+ background-image: url("/images/sprite.png?1446554103");
+ background-position: -331px -107px;
+ background-repeat: no-repeat;
+ display: inline-block;
+ height: 45px;
+ width: 45px;
+}
+/*
+.ui-resizable-handle {
+ background-color: #333 !important;
+}
+*/
+/*
+div.ui-dialog div {
+ background-color: #333 !important;
+}
+*/
+div.ui-dialog > div {
+ background-color: #333 !important;
+}
+div.ui-dialog > div div {
+ background-color: #333 !important;
+}
+/*
+div.ui-dialog > div > div {
+ background-color: #333 !important;
+}
+div.ui-dialog + div {
+ background-color: #333 !important;
+}
+div.ui-dialog + div div{
+ background-color: #333 !important;
+}
+*/
+/*
+.ui-dialog-titlebar {
+ background-color: #333 !important;
+}
+.ui-dialog-buttonpane {
+ background-color: #333 !important;
+}
+*/
diff --git a/web/css/styles.fix.css.map b/web/css/styles.fix.css.map
new file mode 100644
index 00000000..c6718a78
--- /dev/null
+++ b/web/css/styles.fix.css.map
@@ -0,0 +1 @@
+{"version":3,"sourceRoot":"","sources":["styles.fix.scss"],"names":[],"mappings":";AAAA;EACI;EACA;EACA;;;AAMJ;EACI;;;AAGJ;EACI;EACA;EACA;EACA;;;AAGJ;EACI;EACA;;;AAGJ;EACI;EACA;EACA;EACA;;AAOJ;EACI;EACA;EACA;EACA;;AAOJ;EACI;EACA;;;AAGJ;EACI;;;AAGJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;;AAEA;EACI;EACA;;AAEA;EACI;;AAMR;EACI;;AAEA;EACI;AACA;EACA;EACA;EACA;EACA;EACA;AACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGJ;EACI;EACA;;AAII;EACI;EACA;EACA;;AAEA;EACI;;AAEJ;EACI;;AAMJ;EACI;EACA;EACA;EACA;EACA;;AAQZ;EACI;;AAEA;EACI;;AAIR;EACI;;AAGJ;EACI;;AAKZ;EACI;;;AAQR;EACI;EACA;;AAEA;EACI;;AAEA;EACI;EACA;EAGA;EACA;EACA;EACA;EACA;EACA;EACA;EAyCA;EAEA;AAAwB;EACxB;AAAgC;AAEhC;AAMA;AAKA;;AAVA;EACI;EACA;;AAIJ;EACI;;AAIJ;EACI;;AAIJ;AACI;;AACA;EACI;;AAKR;EAEI;EAKA;EACA;EACA;EACA;EACA;EAGA;EACA;;AAIJ;EACI;;AAEA;EACI;;AAEA;EACI;EACA;EACA;EACA;EACA;EACA;EACA;;AAQZ;EACI;EACA;;AAII;EACI;;AAEA;EACI;;AAMZ;EACI;EACA;EAEA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;;AAEA;EACI;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;EACA;EACA;EACA;EACA;EACA;EACA;;AAGJ;EACI;EACA;EACA;EACA;EACA;;AAIR;EACI;;AAEA;EAEI;EACA;EACA;;AAEA;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAIA;EAEA;EACA;EACA;EAEA;;AA8BA;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAIA;EAEA;EACA;EACA;EAEA;;AAIR;EACI;EACA;EACA;EACA;;AASR;EACI;;AAKA;EACI;;AAEJ;EAEI;;AAEJ;EACI;;AAQR;EACI;;AAKA;EACI;;AAEJ;EACI;;AAEJ;EACI;;AAQR;EACI;;AAKA;EACI;;AAEJ;EACI;;AAEJ;EACI;;AAQR;EACI;;AAKA;EACI;;AAEJ;EACI;;AAEJ;EACI;;AAQR;EACI;;AAKA;EACI;;AAEJ;EACI;;AAEJ;EACI;;AAQR;EACI;;AAKA;EACI;;AAEJ;EACI;;AAEJ;EACI;;AAQR;EACI;;AAKA;EACI;;AAEJ;EACI;;AAEJ;EACI;;AAWxB;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;;AAGJ;EACI;;AAcJ;EACI;EACA;;AAEA;EACI;EACA;EACA;;AAGJ;EACI;;AAiBgB;EACI;EACA;;AAGJ;EACI;;AAqCZ;EACI;;AAmBxB;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EAEI;;AAOI;EACI;EACA;EACA;EACA;;AAEA;EACI;EACA;EACA;EACA;EACA;;AAEA;EACI;;AAUR;EACI;;AAQZ;EACI;EACA;EACA;EACA;EACA;;AAGJ;EACI;;AAGJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAOJ;EACI;;AAYZ;EACI;EACA;EACA;;AAEA;EACI;EACA;EACA;;AAEA;EACI;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;EACA;EACA;EACA;;AAQR;EACI;;AAEA;EACI;;AAGR;EACI;EAEA;;AAEA;EACI;;AAGR;EACI;EACA;;AAEA;EACI;;AAGR;EACI;;AAEA;EACI;;AAGR;EACI;EACA;EACA;;AAEA;EACI;;AAGJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;EAEA;EACA;;AAKZ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EAII;EACA;EACA;;AAKZ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGJ;EACI;;AAIR;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAIR;EACI;EACA;EACA;EACA;EACA;;AAEA;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAKZ;EACI;EACA;EACA;;AAEJ;EACI;EACA;;AAEA;EACI;;AAUJ;EACI;EACA;EACA;EACA;;AA0BR;EACI;EACA;EACA;EACA;EACA;EACA;EACA;AACA;EACA;EACA;EACA;EACA;EACA;EAQA;EAEA;AAAwB;AAExB;AAKA;AAKA;AAMA;;AAfA;EACI;;AAIJ;EACI;;AAIJ;EACI;EACA;;AAIJ;EACI;EACA;;AAGJ;EACI;;AAIJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;EACA;EACA;EACA;EACA;;AAKR;EACI;EACA;EACA;EACA;;AAEA;EACI;EACA;;AAEA;EACI;EACA;EACA;;AAGJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAIA;EACI;;AAKJ;EACI;;AAKJ;EACI;;AAKJ;EACI;;;AA8CxB;EACI;;;AAGJ;EACI;;;AAEJ;EACI;;;AAGJ;EACI;;;AAIJ;EACI;;AAEA;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAQwB;EACI;EACA;EACA;;AAEA;EACI;EACA;AACA;EACA;EACA;EACA;EACA;EACA;AACA;EACA;EACA;EACA;;AAEA;EACI;;AAIZ;EACI;EACA;;AAEA;EACI;EACA;EACA;EACA;EACA;EACA;;AAGJ;EACI;EACA;EACA;EACA;EACA;;AAKR;EACI;EACA;EACA;EACA;;AAUhC;EACI;;;AAMJ;EACI","file":"styles.fix.css"}
\ No newline at end of file
diff --git a/web/css/styles.min.css b/web/css/styles.min.css
index edc706d5..5f63b030 100644
--- a/web/css/styles.min.css
+++ b/web/css/styles.min.css
@@ -149,20 +149,20 @@
* `em` units.
*/
html {
- font-family: sans-serif;
- /* 1 */
- -ms-text-size-adjust: 100%;
- /* 2 */
- -webkit-text-size-adjust: 100%;
- /* 2 */
+ font-family: sans-serif;
+ /* 1 */
+ -ms-text-size-adjust: 100%;
+ /* 2 */
+ -webkit-text-size-adjust: 100%;
+ /* 2 */
}
/**
* Remove default margin.
*/
body {
- margin: 0;
- background-color: #fff;
+ margin: 0;
+ background-color: #fff;
}
/* HTML5 display definitions
@@ -173,34 +173,19 @@ body {
* and Firefox.
* Correct `block` display not defined for `main` in IE 11.
*/
-article,
-aside,
-details,
-figcaption,
-figure,
-footer,
-header,
-hgroup,
-main,
-menu,
-nav,
-section,
-summary {
- display: block;
+article, aside, details, figcaption, figure, footer, header, hgroup, main, menu, nav, section, summary {
+ display: block;
}
/**
* 1. Correct `inline-block` display not defined in IE 6/7/8/9 and Firefox 3.
* 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.
*/
-audio,
-canvas,
-progress,
-video {
- display: inline-block;
- /* 1 */
- vertical-align: baseline;
- /* 2 */
+audio, canvas, progress, video {
+ display: inline-block;
+ /* 1 */
+ vertical-align: baseline;
+ /* 2 */
}
/**
@@ -208,61 +193,55 @@ video {
* Remove excess height in iOS 5 devices.
*/
audio:not([controls]) {
- display: none;
- height: 0;
+ display: none;
+ height: 0;
}
/**
* Address `[hidden]` styling not present in IE 8/9/10.
* Hide the `template` element in IE 8/9/11, Safari, and Firefox < 22.
*/
-[hidden],
-template {
- display: none;
+[hidden], template, .hidden {
+ display: none;
}
-.hidden {
- display: none;
-}
/* Links
========================================================================== */
/**
* Remove the gray background color from active links in IE 10.
*/
a {
- background-color: transparent;
+ background-color: transparent;
+}
+a:active, a:hover {
+ outline: 0;
}
/**
* Improve readability when focused and also mouse hovered in all browsers.
*/
-a:active, a:hover {
- outline: 0;
-}
-
/* Text-level semantics
========================================================================== */
/**
* Address styling not present in IE 8/9/10/11, Safari, and Chrome.
*/
abbr[title] {
- border-bottom: 1px dotted;
+ border-bottom: 1px dotted;
}
/**
* Address style set to `bolder` in Firefox 4+, Safari, and Chrome.
*/
-b,
-strong {
- font-weight: bold;
- color: #5f5f5f;
+b, strong {
+ font-weight: bold;
+ color: #5f5f5f;
}
/**
* Address styling not present in Safari and Chrome.
*/
dfn {
- font-style: italic;
+ font-style: italic;
}
/**
@@ -270,42 +249,45 @@ dfn {
* contexts in Firefox 4+, Safari, and Chrome.
*/
h1 {
- font-size: 2em;
- margin: 0.67em 0;
+ font-size: 2em;
+ margin: 0.67em 0;
}
/**
* Addresses styling not present in IE 8/9.
*/
mark {
- background: #ff0;
- color: #000;
+ background: #ff0;
+ color: #000;
}
/**
* Address inconsistent and variable font size in all browsers.
*/
small {
- font-size: 80%;
+ font-size: 80%;
}
/**
* Prevent `sub` and `sup` affecting `line-height` in all browsers.
*/
-sub,
-sup {
- font-size: 75%;
- line-height: 0;
- position: relative;
- vertical-align: baseline;
+sub {
+ font-size: 75%;
+ line-height: 0;
+ position: relative;
+ vertical-align: baseline;
}
sup {
- top: -0.5em;
+ font-size: 75%;
+ line-height: 0;
+ position: relative;
+ vertical-align: baseline;
+ top: -0.5em;
}
sub {
- bottom: -0.25em;
+ bottom: -0.25em;
}
/* Embedded content
@@ -315,14 +297,14 @@ sub {
* 2. Improves image quality when scaled in IE 7.
*/
img {
- border: 0;
+ border: 0;
}
/**
* Correct overflow not hidden in IE 9/10/11.
*/
svg:not(:root) {
- overflow: hidden;
+ overflow: hidden;
}
/* Grouping content
@@ -331,34 +313,31 @@ svg:not(:root) {
* Address margin not present in IE 8/9 and Safari.
*/
figure {
- margin: 1em 40px;
+ margin: 1em 40px;
}
/**
* Address differences between Firefox and other browsers.
*/
hr {
- box-sizing: content-box;
- height: 0;
+ box-sizing: content-box;
+ height: 0;
}
/**
* Contain overflow in all browsers.
*/
pre {
- overflow: auto;
+ overflow: auto;
}
/**
* Address odd `em`-unit font size rendering in all browsers.
* Correct font family set oddly in IE 6, Safari 4/5, and Chrome.
*/
-code,
-kbd,
-pre,
-samp {
- font-family: monospace, monospace;
- font-size: 1em;
+code, kbd, pre, samp {
+ font-family: monospace, monospace;
+ font-size: 1em;
}
/* Forms
@@ -374,24 +353,23 @@ samp {
* 3. Address margins set differently in Firefox 4+, Safari, and Chrome.
* 4. Improves appearance and consistency in all browsers.
*/
-button,
-input,
-optgroup,
-select,
-textarea {
- color: inherit;
- /* 1 */
- font: inherit;
- /* 2 */
- margin: 0;
- /* 3 */
+button, input, optgroup, select, textarea {
+ color: inherit;
+ /* 1 */
+ font: inherit;
+ /* 2 */
+ margin: 0;
+ /* 3 */
}
/**
* Address `overflow` set to `hidden` in IE 8/9/10/11.
*/
button {
- overflow: visible;
+ overflow: visible;
+ text-transform: none;
+ /*color: transparent !important;*/
+ text-shadow: 0 0 0 #555 !important;
}
/**
@@ -400,11 +378,10 @@ button {
* Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera.
* Correct `select` style inheritance in Firefox.
*/
-button,
select {
- text-transform: none;
- /*color: transparent !important;*/
- text-shadow: 0 0 0 #555 !important;
+ text-transform: none;
+ /*color: transparent !important;*/
+ text-shadow: 0 0 0 #555 !important;
}
/**
@@ -416,93 +393,92 @@ select {
* 4. Removes inner spacing in IE 7 without affecting normal text inputs.
* Known issue: inner spacing remains in IE 6.
*/
-button,
-html input[type="button"],
-input[type="reset"],
-input[type="submit"] {
- -webkit-appearance: button;
- /* 2 */
- cursor: pointer;
- /* 3 */
+button, html input[type=button] {
+ -webkit-appearance: button;
+ /* 2 */
+ cursor: pointer;
+ /* 3 */
+}
+
+input[type=reset], input[type=submit] {
+ -webkit-appearance: button;
+ /* 2 */
+ cursor: pointer;
+ /* 3 */
}
/**
* Re-set default cursor for disabled elements.
*/
-button[disabled],
-html input[disabled] {
- cursor: default;
+button[disabled], html input[disabled] {
+ cursor: default;
}
/**
* Remove inner padding and border in Firefox 4+.
*/
-button::-moz-focus-inner,
+button::-moz-focus-inner {
+ border: 0;
+ padding: 0;
+}
+
+input {
+ line-height: normal;
+}
input::-moz-focus-inner {
- border: 0;
- padding: 0;
+ border: 0;
+ padding: 0;
+}
+input[type=checkbox], input[type=radio] {
+ box-sizing: border-box;
+ /* 1 */
+ padding: 0;
+ /* 2 */
+}
+input[type=number]::-webkit-inner-spin-button, input[type=number]::-webkit-outer-spin-button {
+ height: auto;
+}
+input[type=search] {
+ -webkit-appearance: textfield;
+ /* 1 */
+ /* 2 */
+ box-sizing: content-box;
+}
+input[type=search]::-webkit-search-cancel-button, input[type=search]::-webkit-search-decoration {
+ -webkit-appearance: none;
}
/**
* Address Firefox 4+ setting `line-height` on `input` using `!important` in
* the UA stylesheet.
*/
-input {
- line-height: normal;
-}
-
/**
* 1. Address box sizing set to `content-box` in IE 8/9/10.
* 2. Remove excess padding in IE 8/9/10.
* Known issue: excess padding remains in IE 6.
*/
-input[type="checkbox"],
-input[type="radio"] {
- box-sizing: border-box;
- /* 1 */
- padding: 0;
- /* 2 */
-}
-
/**
* Fix the cursor style for Chrome's increment/decrement buttons. For certain
* `font-size` values of the `input`, it causes the cursor style of the
* decrement button to change from `default` to `text`.
*/
-input[type="number"]::-webkit-inner-spin-button,
-input[type="number"]::-webkit-outer-spin-button {
- height: auto;
-}
-
/**
* 1. Address `appearance` set to `searchfield` in Safari and Chrome.
* 2. Address `box-sizing` set to `border-box` in Safari and Chrome
* (include `-moz` to future-proof).
*/
-input[type="search"] {
- -webkit-appearance: textfield;
- /* 1 */
- /* 2 */
- box-sizing: content-box;
-}
-
/**
* Remove inner padding and search cancel button in Safari and Chrome on OS X.
* Safari (but not Chrome) clips the cancel button when the search input has
* padding (and `textfield` appearance).
*/
-input[type="search"]::-webkit-search-cancel-button,
-input[type="search"]::-webkit-search-decoration {
- -webkit-appearance: none;
-}
-
/**
* Define consistent border, margin, and padding.
*/
fieldset {
- border: 1px solid #c0c0c0;
- margin: 0 2px;
- padding: 0.35em 0.625em 0.75em;
+ border: 1px solid #c0c0c0;
+ margin: 0 2px;
+ padding: 0.35em 0.625em 0.75em;
}
/**
@@ -512,17 +488,17 @@ fieldset {
* 4. Corrects alignment displayed oddly in IE 6/7.
*/
legend {
- border: 0;
- /* 1 */
- padding: 0;
- /* 2 */
+ border: 0;
+ /* 1 */
+ padding: 0;
+ /* 2 */
}
/**
* Remove default vertical scrollbar in IE 8/9/10/11.
*/
textarea {
- overflow: auto;
+ overflow: auto;
}
/**
@@ -530,7 +506,7 @@ textarea {
* NOTE: the default cannot safely be changed in Chrome and Safari on OS X.
*/
optgroup {
- font-weight: bold;
+ font-weight: bold;
}
/* Tables
@@ -539,2249 +515,2248 @@ optgroup {
* Remove most spacing between table cells.
*/
table {
- border-collapse: collapse;
- border-spacing: 0;
+ border-collapse: collapse;
+ border-spacing: 0;
}
-td,
-th {
- padding: 0;
+td, th {
+ padding: 0;
}
* {
- -webkit-tap-highlight-color: transparent;
+ -webkit-tap-highlight-color: transparent;
}
body {
-/* -webkit-touch-callout: none;
- -webkit-text-size-adjust: none;
- -webkit-user-select: none; */
+ /* -webkit-touch-callout: none;
+ -webkit-text-size-adjust: none;
+ -webkit-user-select: none; */
}
-html,
-input,
-textarea,
-select,
-button {
- -webkit-font-smoothing: antialiased;
- -moz-osx-font-smoothing: grayscale;
+html, input, textarea, select, button {
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
}
html {
- height: 100%;
+ height: 100%;
}
body {
- font-family: arial;
- overflow-x: hidden;
- font-size: 14px;
- height: 100%;
- color: #929292;
+ font-family: arial;
+ overflow-x: hidden;
+ font-size: 14px;
+ height: 100%;
+ color: #929292;
}
.body-login, .body-reset {
- height: auto;
- padding-top: 10%;
- /*background: url(/images/edit_bg.png);*/
- background-color: #eee;
+ height: auto;
+ padding-top: 10%;
+ /*background: url(/images/edit_bg.png);*/
+ background-color: #eee;
}
a {
- text-decoration: none;
- color: #929292;
+ text-decoration: none;
+ color: #929292;
}
.disabled {
- text-decoration: line-through;
+ text-decoration: line-through;
}
-.clearfix:before,
-.clearfix:after {
- content: '';
- display: table;
+.clearfix:before {
+ content: "";
+ display: table;
}
-
.clearfix:after {
- clear: both;
+ content: "";
+ display: table;
+ clear: both;
}
.text-right {
- text-align: right;
+ text-align: right;
}
.text-center {
- text-align: center;
+ text-align: center;
}
.check-label {
- display: inline-block;
- cursor: pointer;
- position: relative;
- line-height: 16px;
- padding-left: 26px;
+ display: inline-block;
+ cursor: pointer;
+ position: relative;
+ line-height: 16px;
+ padding-left: 26px;
}
-
.check-label:before {
- content: '';
- width: 16px;
- height: 16px;
- position: absolute;
- left: 0;
- top: 0;
- display: inline-block;
- background-image: url("/images/sprite.png?1446554103");
- background-size: 450px auto;
- background-repeat: no-repeat;
- background-position: -232px -9px;
- z-index: 99;
+ content: "";
+ width: 16px;
+ height: 16px;
+ position: absolute;
+ left: 0;
+ top: 0;
+ display: inline-block;
+ background-image: url("/images/sprite.png?1446554103");
+ background-size: 450px auto;
+ background-repeat: no-repeat;
+ background-position: -232px -9px;
+ z-index: 99;
}
-input[type="checkbox"] {
- display: none;
+input[type=checkbox] {
+ display: none;
}
-.clicked-on.check-label:before,
-.selected .check-label:before {
- content: '';
- display: inline-block;
- width: 27px;
- height: 27px;
- background-position: -225px -42px;
- left: -6px;
- top: -6px;
+
+.clicked-on.check-label:before, .selected .check-label:before {
+ content: "";
+ display: inline-block;
+ width: 27px;
+ height: 27px;
+ background-position: -225px -42px;
+ left: -6px;
+ top: -6px;
}
.l-center {
- margin: 0 auto;
- max-width: 998px;
+ margin: 0 auto;
+ max-width: 998px;
}
.l-logo {
- background-image: url("/images/sprite.png?1446554103");
- background-position: -117px -7px;
-/* background-position: -125px -478px; */
- background-repeat: no-repeat;
- display: inline-block;
- float: left;
- height: 22px;
- margin-top: 4px;
- width: 73px;
-/* width: 42px; */
- margin-left: -2px;
+ background-image: url("/images/sprite.png?1446554103");
+ background-position: -117px -7px;
+ /* background-position: -125px -478px; */
+ background-repeat: no-repeat;
+ display: inline-block;
+ float: left;
+ height: 22px;
+ margin-top: 4px;
+ width: 73px;
+ /* width: 42px; */
+ margin-left: -2px;
}
.l-header {
- background-color: #5d5d5d;
- overflow: hidden;
- margin-bottom: 28px;
- position: fixed;
- width: 100%;
- z-index: 100;
- height: 34px
+ background-color: #5d5d5d;
+ overflow: hidden;
+ margin-bottom: 28px;
+ position: fixed;
+ width: 100%;
+ z-index: 100;
+ height: 34px;
}
.l-header a {
- font-size: 12px;
-}
-
-.l-menu__item--active {
- //background-color: #fff;
+ font-size: 12px;
}
.l-menu__item.l-menu__item--active a {
- color: #ff6701;
- font-size: 10px;
- font-weight: bold;
- text-transform: uppercase;
- background-color: #fff;
+ color: #9c8cff;
+ font-size: 10px;
+ font-weight: bold;
+ text-transform: uppercase;
+ background-color: #fff;
}
.l-menu {
- float: left;
- position: fixed;
- margin-left: 70px;
+ float: left;
+ position: fixed;
+ margin-left: 70px;
}
+
.l-menu__item {
- float: left;
+ float: left;
}
.l-menu__item a {
- color: #f7f7f7;
- position: relative;
- line-height: 34px;
- padding: 11px 18px;
+ color: #f7f7f7;
+ position: relative;
+ line-height: 34px;
+ padding: 11px 18px;
}
.l-menu__item a:hover {
- background-color: #f79b44;
- color: #fff;
+ background-color: #f79b44;
+ color: #fff;
}
.l-menu__item a:active {
- color: #fff;
- background-color: #ff6701;
+ color: #fff;
+ background-color: #9c8cff;
}
.l-menu.active .l-menu__item.focus a {
- text-decoration: underline;
- color: #5edad0;
+ text-decoration: underline;
+ color: #5edad0;
}
.l-menu.active .l-menu__item.focus a:hover {
- background-color: #f79b44;
- color: #fff;
+ background-color: #f79b44;
+ color: #fff;
}
+.lang-ua .l-menu__item a, .lang-nl .l-menu__item a, .lang-fr .l-menu__item a, .lang-ru .l-menu__item a {
+ padding: 11px 18px;
+}
-.lang-ua .l-menu__item a,
-.lang-nl .l-menu__item a,
-.lang-fr .l-menu__item a,
-.lang-ru .l-menu__item a {
- padding: 11px 18px;
-}
-.lang-el .l-menu__item a,
-.lang-tr .l-menu__item a {
- padding: 11px 15px;
+.lang-el .l-menu__item a, .lang-tr .l-menu__item a {
+ padding: 11px 15px;
}
+
.lang-ar .l-menu__item a {
- padding: 11px 11px;
-}
-.lang-ar .l-menu__item a {
- line-height: 35px;
+ padding: 11px 11px;
+ line-height: 35px;
}
.lang-de .l-menu__item a {
- padding: 11px 12px;
+ padding: 11px 12px;
}
.lang-tw .l-menu__item a {
- padding: 13px 18px;
+ padding: 13px 18px;
}
.l-profile {
- overflow: hidden;
- float: right;
+ overflow: hidden;
+ float: right;
}
+
.l-profile__username {
- float: left;
- color: #a4abad;
- font-weight: 700;
- padding: 10px 0 0 10px;
- margin-right: 12px;
+ float: left;
+ color: #a4abad;
+ font-weight: 700;
+ padding: 10px 0 0 10px;
+ margin-right: 12px;
}
.l-profile__username:hover {
- color: #ffd62e;
+ color: #ffd62e;
}
.l-profile__username:active {
- color: #f79b44;
+ color: #f79b44;
}
-
.l-profile__logout {
- float: left;
- color: #fff;
-/* margin-left: 40px; */
- padding: 10px 0 0 10px;
+ float: left;
+ color: #fff;
+ /* margin-left: 40px; */
+ padding: 10px 0 0 10px;
}
.l-profile__logout:hover {
- color: #C0E60E;
+ color: #C0E60E;
}
.l-profile__logout:active {
- color: #ffd62e;
+ color: #ffd62e;
}
-.lang-cn .l-profile__logout {
- padding: 8px 5px;
-}
-.lang-tw .l-profile__logout {
- padding: 8px 5px;
+
+.lang-cn .l-profile__logout, .lang-tw .l-profile__logout {
+ padding: 8px 5px;
}
.l-profile__notifications {
- background: url("/images/sprite.png?1446554103") no-repeat scroll -129px -135px;
- border-radius: 30px;
- color: #fff;
- cursor: pointer;
- float: left;
- font-weight: bold;
- height: 15px;
- margin-right: 4px;
- margin-top: 5px;
- padding: 10px 5px 0;
- width: 15px;
+ background: url("/images/sprite.png?1446554103") no-repeat scroll -129px -135px;
+ border-radius: 30px;
+ color: #fff;
+ cursor: pointer;
+ float: left;
+ font-weight: bold;
+ height: 15px;
+ margin-right: 4px;
+ margin-top: 5px;
+ padding: 10px 5px 0;
+ width: 15px;
}
.l-profile__notifications.active {
- background-color: #454545;
+ background-color: #454545;
}
.l-profile__notifications:hover {
- background-color: #333;
+ background-color: #333;
}
.l-profile__notifications:active {
- background-color: #c4da5e;
+ background-color: #c4da5e;
}
.l-profile__notifications.updates {
- background-position: -202px -135px;
+ background-position: -202px -135px;
}
.notification-container {
- background-color: #454545;
- box-shadow: 0 2px 7px 0 rgba(0, 0, 0, 0.3);
- list-style-type: none;
- margin: 0;
- overflow: hidden;
- padding-left: 0;
- position: fixed;
- top: 34px;
- width: 351px;
- z-index: 200;
- font-size: 12px;
- padding: 0;
- color: #7f7f7f;
+ background-color: #454545;
+ box-shadow: 0 2px 7px 0 rgba(0, 0, 0, 0.3);
+ list-style-type: none;
+ margin: 0;
+ overflow: hidden;
+ padding-left: 0;
+ position: fixed;
+ top: 34px;
+ width: 351px;
+ z-index: 200;
+ font-size: 12px;
+ padding: 0;
+ color: #7f7f7f;
}
.notification-container .unseen {
- color: #ABABAB;
+ color: #ABABAB;
}
-
-
.notification-container li {
- border-bottom: 1px solid #555;
- padding: 10px 15px 24px;
+ border-bottom: 1px solid #555;
+ padding: 10px 15px 24px;
}
.notification-container .mark-seen {
- background-color: #abc04b;
- border: 2px solid #454545;
- border-radius: 10px;
- cursor: pointer;
- display: none;
- float: right;
- height: 7px;
- margin-right: -5px;
- margin-top: 0;
- width: 7px;
+ background-color: #abc04b;
+ border: 2px solid #454545;
+ border-radius: 10px;
+ cursor: pointer;
+ display: none;
+ float: right;
+ height: 7px;
+ margin-right: -5px;
+ margin-top: 0;
+ width: 7px;
}
.notification-container .mark-seen:hover {
- background-color: #333;
- border-color: #abc04b;
+ background-color: #333;
+ border-color: #abc04b;
}
.notification-container .mark-seen:active {
- background-color: #777;
- border-color: #777;
+ background-color: #777;
+ border-color: #777;
}
-.notification-container .unseen .mark-seen{
- display: inline-block;
+.notification-container .unseen .mark-seen {
+ display: inline-block;
}
.notification-container .title {
- color: #9e9e9e;
- font-weight: bold;
- line-height: 30px;
- padding: 0;
- text-transform: none;
- float: none;
- display: block;
+ color: #9e9e9e;
+ font-weight: bold;
+ line-height: 30px;
+ padding: 0;
+ text-transform: none;
+ float: none;
+ display: block;
}
.notification-container .title a {
- color: #9e9e9e;
+ color: #9e9e9e;
}
-
-.notification-container .unseen .title a,
.notification-container .unseen .title {
- color: #C4DA5E;
+ color: #C4DA5E;
+}
+.notification-container .unseen .title a {
+ color: #C4DA5E;
}
.notification-container .unseen .title a:hover {
- color: #ffcc00;
+ color: #ffcc00;
}
.notification-container .unseen .title a:active {
- color: #dacf2e;
+ color: #dacf2e;
}
-
.notification-container a {
- color: #5ABDB5;/* #eee;*/
+ color: #5ABDB5;
+ /* #eee;*/
}
.notification-container a:hover {
- color: #2CA99B;
+ color: #2CA99B;
}
.notification-container a:active {
- color: #00C0C0;
+ color: #00C0C0;
}
-
.notification-container .icon {
- display: inline-block;
- width: 0;
+ display: inline-block;
+ width: 0;
}
.notification-container .icon.filemanager {
- display: inline-block;
- width: 22px;
- background: url("/images/flat_icons.png") repeat scroll -31px -100px;
+ display: inline-block;
+ width: 22px;
+ background: url("/images/flat_icons.png") repeat scroll -31px -100px;
}
.notification-container .icon.starred {
- display: inline-block;
- width: 21px;
- background: url("/images/sprite.png?1446554103") repeat scroll -184px 556px;
+ display: inline-block;
+ width: 21px;
+ background: url("/images/sprite.png?1446554103") repeat scroll -184px 556px;
}
-
-
.l-stat {
- margin: 0 auto;
- margin: 34px auto;
- position: fixed;
- background-color: #fff;
- z-index: 100;
- padding-top: 30px;
- width: 100%;
- overflow: hidden;
+ margin: 0 auto;
+ margin: 34px auto;
+ position: fixed;
+ background-color: #fff;
+ z-index: 100;
+ padding-top: 30px;
+ width: 100%;
+ overflow: hidden;
}
+
.l-stat__col {
- display: block;
- vertical-align: top;
- float: left;
+ display: block;
+ vertical-align: top;
+ float: left;
}
.l-stat__col a {
- display: inline-block;
- padding-bottom: 36px;
- min-height: 111px;
- width: 138px;
- border-bottom: 3px solid #fff;
- overflow: hidden;
- background-color: #fff;
- padding-top: 3px;
- margin-top: -3px;
- padding-left: 5px;
+ display: inline-block;
+ padding-bottom: 36px;
+ min-height: 111px;
+ width: 138px;
+ border-bottom: 3px solid #fff;
+ overflow: hidden;
+ background-color: #fff;
+ padding-top: 3px;
+ margin-top: -3px;
+ padding-left: 5px;
}
.l-stat__col a:hover {
- border-bottom: 3px solid #ff8e61;
+ border-bottom: 3px solid #ff8e61;
}
.l-stat__col a:active {
- border-bottom: 3px solid #f72b44;
+ border-bottom: 3px solid #796cc7;
}
+
.l-stat__col--active a {
- border-bottom: 3px solid #ff6e42;
+ border-bottom: 3px solid #ff6e42;
}
.l-stat.active .l-stat__col.focus a {
- border-bottom: 3px solid #5edad0;
+ border-bottom: 3px solid #5edad0;
}
.l-stat.active .l-stat__col.focus a .l-stat__col-title {
- color: #36B3A9;
+ color: #36B3A9;
}
-
-
.l-stat__col a:hover .l-stat__col-title {
- color: #ff6701;
+ color: #9c8cff;
}
.l-stat__col a:active .l-stat__col-title {
- color: #f72b44;
+ color: #796cc7;
}
-
-
.l-stat__col ul {
- list-style-type: none;
- font-size: 12px;
- padding-left: 0;
+ list-style-type: none;
+ font-size: 12px;
+ padding-left: 0;
}
.l-stat__col li {
- color: #a0a0a0;
- margin-bottom: 8px;
- text-transform: lowercase;
+ color: #a0a0a0;
+ margin-bottom: 8px;
+ text-transform: lowercase;
}
.l-stat__col span {
- padding-left: 15px;
-}
-.l-stat__col-title {
- text-transform: uppercase;
- font-weight: 700;
- color: #212134;
- min-height: 21px;
-}
-.l-stat__col--active .l-stat__col-title {
- color: #ff6701;
- font-size: 24px;
- margin-top: -7px;
- letter-spacing: -1px;
- margin-right: -8px;
+ padding-left: 15px;
+}
+
+.l-stat__col-title {
+ text-transform: uppercase;
+ font-weight: 700;
+ color: #212134;
+ min-height: 21px;
+}
+
+.l-stat__col--active .l-stat__col-title {
+ color: #9c8cff;
+ font-size: 24px;
+ margin-top: -7px;
+ letter-spacing: -1px;
+ margin-right: -8px;
}
-.l-separator.selected,
.l-separator {
- height: 1px;
- background-color: #ddd;
+ height: 1px;
+ background-color: #ddd;
+}
+.l-separator.selected {
+ height: 1px;
+ background-color: #ddd;
}
div.l-content > div.l-separator:nth-of-type(2) {
- margin-top: 214px;
- width: 100%;
- position: fixed;
- z-index: 120;
+ margin-top: 214px;
+ width: 100%;
+ position: fixed;
+ z-index: 120;
}
-
div.l-content > div.l-separator:nth-of-type(4) {
- margin-top: 259px;
- width: 100%;
- position: fixed;
- z-index: 100;
+ margin-top: 259px;
+ width: 100%;
+ position: fixed;
+ z-index: 100;
}
.l-sort {
- position: fixed;
- width: 998px;
- background-color: #fff;
- z-index: 110;
- margin-top: 215px;
+ position: fixed;
+ width: 998px;
+ background-color: #fff;
+ z-index: 110;
+ margin-top: 215px;
}
+
.l-sort__create-btn {
- background-image: url("/images/sprite.png?1446554103");
- background-position: -331px -107px;
- background-repeat: no-repeat;
- bottom: -23px;
- display: inline-block;
- height: 45px;
- left: 30px;
- position: absolute;
- width: 45px;
- z-index: 3;
+ background-image: url("/images/sprite.png?1446554103");
+ background-position: -331px -107px;
+ background-repeat: no-repeat;
+ bottom: -23px;
+ display: inline-block;
+ height: 45px;
+ left: 30px;
+ position: absolute;
+ width: 45px;
+ z-index: 3;
}
.l-sort__create-btn:hover {
- background-position: -378px -107px;
+ background-position: -378px -107px;
}
.l-sort__create-btn:active {
- background-position: -425px -107px;
+ background-position: -425px -107px;
}
+
.l-sort__create-btn--active {
- background-position: -425px -107px;
+ background-position: -425px -107px;
}
.l-sort__create-btn.restore {
- background-position: -331px -250px;
- bottom: -22px;
+ background-position: -331px -250px;
+ bottom: -22px;
}
-.l-sort__create-btn.restore:hover {
- background-position: -331px -250px;
+.l-sort__create-btn.restore:hover, .l-sort__create-btn.restore:active {
+ background-position: -331px -250px;
}
-.l-sort__create-btn.restore:active {
- background-position: -331px -250px;
-}
-
.l-sort__create-btn.edit {
- background-position: -331px -154px;
- bottom: -22px;
+ background-position: -331px -154px;
+ bottom: -22px;
}
.l-sort__create-btn.edit:hover {
- background-position: -378px -154px;
+ background-position: -378px -154px;
}
.l-sort__create-btn.edit:active {
- background-position: -425px -154px;
+ background-position: -425px -154px;
}
.context-menu.sort-order {
- display: inline-block;
- position: absolute;
- z-index: 3;
- left: 397px;
- margin: 0;
- overflow: hidden;
- top: 42px;
- width: 201px;
- background-color: #5c5c5c;
- list-style-type: none;
- padding-left: 0;
- box-shadow: 0 2px 7px 0 rgba(0, 0, 0, 0.3);
+ display: inline-block;
+ position: absolute;
+ z-index: 3;
+ left: 397px;
+ margin: 0;
+ overflow: hidden;
+ top: 42px;
+ width: 201px;
+ background-color: #5c5c5c;
+ list-style-type: none;
+ padding-left: 0;
+ box-shadow: 0 2px 7px 0 rgba(0, 0, 0, 0.3);
}
.context-menu.sort-order li {
- padding: 0;
+ padding: 0;
}
.context-menu li {
- border-bottom: 1px solid #777;
- color: #fff;
- cursor: pointer;
- font-size: 12px;
- padding: 12px;
+ border-bottom: 1px solid #777;
+ color: #fff;
+ cursor: pointer;
+ font-size: 12px;
+ padding: 12px;
}
.context-menu.sort-order span.name {
- background: url("/images/sprite.png?1446554103") no-repeat scroll -292px -361px rgba(0, 0, 0, 0);
- display: inline-block;
- padding: 12px 28px 12px 12px;
- width: 117px;
- text-transform: uppercase;
- font-weight: bold;
+ background: url("/images/sprite.png?1446554103") no-repeat scroll -292px -361px rgba(0, 0, 0, 0);
+ display: inline-block;
+ padding: 12px 28px 12px 12px;
+ width: 117px;
+ text-transform: uppercase;
+ font-weight: bold;
}
.context-menu.sort-order span.up {
- background: url("/images/sprite.png?1446554103") no-repeat scroll -434px -417px rgba(0, 0, 0, 0);
- display: inline-block;
- padding: 12px 14px;
- width: 16px;
+ background: url("/images/sprite.png?1446554103") no-repeat scroll -434px -417px rgba(0, 0, 0, 0);
+ display: inline-block;
+ padding: 12px 14px;
+ width: 16px;
}
.context-menu.sort-order span.active {
- background-color: #FFD437;
- color: #555;
+ background-color: #FFD437;
+ color: #555;
}
.context-menu.sort-order span:hover {
- background-color: #777;
- color: #fff;
+ background-color: #777;
+ color: #fff;
}
.context-menu.sort-order span:active {
- background-color: #ffcc00;
+ background-color: #ffcc00;
}
-
-
-
.l-sort-toolbar {
- float: right;
- padding: 7px 0 7px 0;
- width: 100%;
+ float: right;
+ padding: 7px 0 7px 0;
+ width: 100%;
}
-.l-sort-toolbar table{
- float: right;
+.l-sort-toolbar table {
+ float: right;
}
-
.l-sort-toolbar td.toggle-all {
- padding-top: 7px;
- padding-right: 20px;
+ padding-top: 7px;
+ padding-right: 20px;
}
-
.l-sort-toolbar .sort-by {
- cursor: pointer;
- padding-top: 7px;
- padding-left: 40px;
+ cursor: pointer;
+ padding-top: 7px;
+ padding-left: 40px;
}
.l-sort-toolbar .sort-by:hover {
- color: #555;
+ color: #555;
}
.l-sort-toolbar .sort-by:hover b {
- color: #555;
+ color: #555;
}
.l-sort-toolbar .sort-by:active {
- color: #55c9c0;
+ color: #23b7e5;
}
.l-sort-toolbar .sort-by:active b {
- color: #55c9c0;
+ color: #23b7e5;
}
-
.l-sort-toolbar .sort-by b {
- text-transform: uppercase;
- padding-left: 3px;
- font-size: 12px;
+ text-transform: uppercase;
+ padding-left: 3px;
+ font-size: 12px;
}
-
.l-sort-toolbar .toggle-all:hover {
- color: #555;
+ color: #555;
}
.l-sort-toolbar .toggle-all:active {
- color: #55c9c0;
+ color: #23b7e5;
}
-
.l-sort-toolbar .l-select {
- float: left;
+ float: left;
}
.l-sort-toolbar td {
- vertical-align: middle;
+ vertical-align: middle;
}
-
-.l-sort-toolbar.subtitle {
- padding-left: 96px;
+.l-sort-toolbar.subtitle {
+ padding-left: 96px;
}
-
-
.l-sort-toolbar td:first-of-type {
- padding-left: 40px;
+ padding-left: 40px;
}
-
-
.l-sort-toolbar td.step-right:first-of-type {
- padding-right: 20px;
+ padding-right: 20px;
}
-
.l-sort-toolbar td:nth-of-type(2) {
-/* /// padding-right: 60px;*/
- padding-right: 20px;
+ /* /// padding-right: 60px;*/
+ padding-right: 20px;
}
.l-sort-toolbar td:last-of-type {
-/* /// padding-left: 40px; */
+ /* /// padding-left: 40px; */
}
+
.l-sort-toolbar__filter-apply {
- float: left;
- width: 30px;
- height: 30px;
- background-image: url("/images/sprite.png?1446554103");
- background-position: -333px -1px;
- border: none;
+ float: left;
+ width: 30px;
+ height: 30px;
+ background-image: url("/images/sprite.png?1446554103");
+ background-position: -333px -1px;
+ border: none;
}
.l-sort-toolbar__filter-apply:hover {
- background-position: -368px -1px;
- border-color: #afafac;
+ background-position: -368px -1px;
+ border-color: #afafac;
}
.l-sort-toolbar__filter-apply:active {
- background-position: -404px -1px;
- border-color: #afafac;
+ background-position: -404px -1px;
+ border-color: #afafac;
}
+
.l-sort-toolbar__filter-apply--active {
- background-position: -404px -1px;
- border-color: #50bdb5;
+ background-position: -404px -1px;
+ border-color: #50bdb5;
}
.l-sort-toolbar__search {
- float: left;
- width: 25px;
- height: 25px;
- background-image: url("/images/sprite.png?1446554103");
- background-position: -333px -37px;
- border: none;
+ float: left;
+ width: 25px;
+ height: 25px;
+ background-image: url("/images/sprite.png?1446554103");
+ background-position: -333px -37px;
+ border: none;
}
.l-sort-toolbar__search:hover {
- background-position: -368px -37px;
- border-color: #afafac;
+ background-position: -368px -37px;
+ border-color: #afafac;
}
.l-sort-toolbar__search:active {
- background-position: -404px -37px;
- border-color: #50bdb5;
+ background-position: -404px -37px;
+ border-color: #50bdb5;
}
+
.l-sort-toolbar__search--active {
- background-position: -404px -37px;
- border-color: #50bdb5;
+ background-position: -404px -37px;
+ border-color: #50bdb5;
}
+
.l-sort-toolbar .vst {
- padding: 0 12px;
- color: #777;
- text-transform: uppercase;
- font-size: 11px;
- font-weight: bold;
- line-height: 30px;
+ padding: 0 12px;
+ color: #777;
+ text-transform: uppercase;
+ font-size: 11px;
+ font-weight: bold;
+ line-height: 30px;
}
.l-sort-toolbar .vst:hover {
- color: #ff6701;
+ color: #9c8cff;
}
.l-sort-toolbar .vst:active {
- color: #55C9C0;
+ color: #23b7e5;
}
.l-sort-toolbar .vst.selected {
- color: #ff6701;
-// color: #92af0b;
+ color: #9c8cff;
}
-
-
.l-select {
- width: 178px;
- height: 28px;
- border: 1px solid #ddd;
- border-radius: 0;
- overflow-x: hidden;
- position: relative;
- display: inline-block;
- border-style: solid none solid solid;
+ width: 178px;
+ height: 28px;
+ border: 1px solid #ddd;
+ border-radius: 0;
+ overflow-x: hidden;
+ position: relative;
+ display: inline-block;
+ border-style: solid none solid solid;
}
+
.lang-ru .l-select {
- width: 199px;
+ width: 199px;
}
.l-select:after {
- pointer-events: none;
- background-image: url("/images/sprite.png?1446554103");
- background-position: -245px -175px;
- width: 7px;
- height: 4px;
- margin-top: -2px;
- content: '';
- position: absolute;
- right: 10px;
- top: 50%;
+ pointer-events: none;
+ background-image: url("/images/sprite.png?1446554103");
+ background-position: -245px -175px;
+ width: 7px;
+ height: 4px;
+ margin-top: -2px;
+ content: "";
+ position: absolute;
+ right: 10px;
+ top: 50%;
}
.l-select select {
- border: 0;
- background-color: transparent;
- line-height: 28px;
- height: 28px;
- min-width: 208px;
- padding-left: 4px;
- appearance:none;
- -moz-appearance:none;
- -webkit-appearance:none;
- padding-left: 10px;
+ border: 0;
+ background-color: transparent;
+ line-height: 28px;
+ height: 28px;
+ min-width: 208px;
+ padding-left: 4px;
+ appearance: none;
+ -moz-appearance: none;
+ -webkit-appearance: none;
+ padding-left: 10px;
}
.l-select select:focus {
- border: 0;
- outline: 0;
+ border: 0;
+ outline: 0;
}
+
.lang-ru .l-select select {
- min-width: 215px;
+ min-width: 215px;
}
+
.l-select select option {
- padding: 7px;
+ padding: 7px;
}
.l-unit {
- color: #888;
- padding: 0 0 0 15px;
- overflow: hidden;
- font-size: 13px;
-}
-.units .l-unit {
- border-bottom: 1px solid #ddd;
- border-left: 2px solid #fff;
-}
-.units .l-unit.l-unit--starred {
- border-left: 2px solid #ff6701;
-}
-.units.active .l-unit.focus {
- border-left: 2px solid #5edad0;
-}
-.units.active .l-unit.focus .l-unit__name {
- color: #36b3a9;
-}
-.units.active .l-unit.focus .l-unit-toolbar__col--right {
- display: block;
+ color: #888;
+ padding: 0 0 0 15px;
+ overflow: hidden;
+ font-size: 13px;
}
+.units .l-unit {
+ border-bottom: 1px solid #ddd;
+ border-left: 2px solid #fff;
+}
+.units .l-unit.l-unit--starred {
+ border-left: 2px solid #9c8cff;
+}
+.units.active .l-unit.focus {
+ border-left: 2px solid #5edad0;
+ background: #f4faff;
+}
+.units.active .l-unit.focus .l-unit__name {
+ color: #36b3a9;
+}
+.units.active .l-unit.focus .l-unit-toolbar__col--right {
+ display: block;
+}
.units > div:last-child {
- border-bottom: none;
+ border-bottom: none;
}
.l-unit-ft {
- color: #929292;
- padding: 0 0 0 15px;
+ color: #929292;
+ padding: 0 0 0 15px;
}
.l-unit:hover .l-unit-toolbar__col--right {
- display: block;
+ display: block;
}
+
.l-unit--blue {
- border-left: 2px solid #55c9c0;
+ border-left: 2px solid #23b7e5;
}
.l-unit--suspended {
- background-color: #eaeaea;
- color: #c0c0c0;
+ background-color: #eaeaea;
+ color: #c0c0c0;
}
-
.units .l-unit.l-unit--outdated {
- background-color: #ffcaca;
- color: #555;
- border-left: 5px solid #ff6f6f;
- border-bottom: 1px solid #fff;
+ background-color: #ffcaca;
+ color: #555;
+ border-left: 5px solid #ff6f6f;
+ border-bottom: 1px solid #fff;
}
-.l-unit--suspended .l-unit__name,
-.l-unit--suspended b,
-.l-unit--outdated .l-unit__name,
-.l-unit--outdated b {
- color: #c0c0c0;
+.l-unit--suspended .l-unit__name, .l-unit--suspended b {
+ color: #c0c0c0;
}
+.l-unit--outdated .l-unit__name, .l-unit--outdated b {
+ color: #c0c0c0;
+}
.l-unit--outdated .l-unit__name {
- color: #333;
+ color: #333;
}
.l-unit--outdated b {
- color: #555;
+ color: #555;
}
.l-unit--suspended .l-percent {
- border-color: #fff;
+ border-color: #fff;
}
.l-unit--suspended .l-percent__fill {
- background-color: #fff;
+ background-color: #fff;
+}
+.l-unit--suspended .l-unit__name {
+ color: #ADADAD;
}
-.l-unit--suspended .l-unit__name,
.l-unit--suspended .l-unit__name span {
- color: #ADADAD;
+ color: #ADADAD;
}
-
-.l-unit--suspended.selected .l-unit__name,
-.l-unit--suspended.selected .l-unit__name span {
- color: #777;
-}
-
.l-unit--suspended.selected {
- background-color: #f2eab8 !important;
- color: #b2ac87 !important;
+ background-color: #f2eab8 !important;
+ color: #b2ac87 !important;
+}
+.l-unit--suspended.selected .l-unit__name {
+ color: #777;
+}
+.l-unit--suspended.selected .l-unit__name span {
+ color: #777;
}
.l-unit--outdated.selected {
- background: #765D5D !important;
- color: #333 !important;
+ background: #765D5D !important;
+ color: #333 !important;
}
+.l-unit--suspended.selected .l-unit__name, .l-unit--suspended.selected b {
+ color: #333 !important;
+}
+.l-unit--outdated.selected .l-unit__name, .l-unit--outdated.selected b {
+ color: #333 !important;
+}
-.l-unit--suspended.selected .l-unit__name,
-.l-unit--suspended.selected b,
-.l-unit--outdated.selected .l-unit__name,
-.l-unit--outdated.selected b,
-.l-unit--suspended.selected .l-percent,
-.l-unit--suspended.selected .l-percent__fill,
-.l-unit--suspended.selected .l-unit__name,
+.l-unit--suspended.selected .l-percent, .l-unit--suspended.selected .l-percent__fill {
+ color: #333 !important;
+}
+.l-unit--suspended.selected .l-unit__name {
+ color: #333 !important;
+}
.l-unit--suspended.selected .l-unit__name span {
- color: #333 !important;
+ color: #333 !important;
}
.l-unit.selected .l-percent {
- border-bottom: 1px dotted #777;
+ border-bottom: 1px dotted #777;
}
-
.l-unit--selected {
- background-color: #d1eddc;
+ background-color: #d1eddc;
}
-.l-unit-toolbar{
- height: 39px;
+
+.l-unit-toolbar {
+ height: 39px;
}
.l-unit label {
- margin-bottom: 20px;
+ margin-bottom: 20px;
}
+
.l-unit__columns {
- display: table;
- width: 100%;
+ display: table;
+ width: 100%;
}
+
.l-unit__col {
- display: table-cell;
- padding-top: 1px;
- vertical-align: top;
+ display: table-cell;
+ padding-top: 1px;
+ vertical-align: top;
}
+
.l-unit__col--left {
- width: 124px;
- padding-right: 10px;
+ width: 124px;
+ padding-right: 10px;
}
+
.units.compact .l-unit__col--left {
- vertical-align: top;
+ vertical-align: top;
}
.l-unit__col--left.step-left {
- padding-left: 30px;
+ padding-left: 30px;
}
.l-unit__col--right.total {
- padding-left: 16px;
+ padding-left: 16px;
}
-
.l-unit__col--right.back {
- padding-left: 78px
+ padding-left: 78px;
}
.l-sort-toolbar .step-left {
- padding-left: 40px;
+ padding-left: 40px;
}
+
.step-right {
- padding-right: 40px;
+ padding-right: 40px;
}
.l-unit__date {
- font-size: 12px;
- letter-spacing: 1px;
- margin-top: 10px;
- padding-bottom: 30px;
+ font-size: 12px;
+ letter-spacing: 1px;
+ margin-top: 10px;
+ padding-bottom: 30px;
}
.l-unit__suspended {
- display: none;
- font-size: 11px;
- font-weight: bold;
- letter-spacing: 3px;
- margin-top: 36px;
- text-transform: uppercase;
- margin-bottom: 14px;
+ display: none;
+ font-size: 11px;
+ font-weight: bold;
+ letter-spacing: 3px;
+ margin-top: 36px;
+ text-transform: uppercase;
+ margin-bottom: 14px;
}
.units.compact .l-unit__suspended {
- margin-top: 1px;
+ margin-top: 1px;
}
-.l-unit--outdated .l-unit__suspended,
-.l-unit--suspended .l-unit__suspended {
- display: block;
+.l-unit--outdated .l-unit__suspended, .l-unit--suspended .l-unit__suspended {
+ display: block;
+}
+
+.l-unit-ft .subtitle {
+ color: #9c8cff;
+ font-size: 12px;
+ font-weight: bold;
+ margin: 20px 0 18px 129px;
+ text-transform: uppercase;
}
-.l-unit-ft .subtitle,
.l-unit .subtitle {
- color: #ff6701;
- font-size: 12px;
- font-weight: bold;
- margin: 20px 0 18px 129px;
- text-transform: uppercase;
+ color: #9c8cff;
+ font-size: 12px;
+ font-weight: bold;
+ margin: 20px 0 18px 129px;
+ text-transform: uppercase;
}
-
.l-unit.l-unit--outdated .l-unit__date {
- color: #d24c4c;
- font-size: 10px;
- letter-spacing: 3px;
- text-transform: uppercase;
- font-weight: bold;
+ color: #d24c4c;
+ font-size: 10px;
+ letter-spacing: 3px;
+ text-transform: uppercase;
+ font-weight: bold;
}
.l-unit__name {
- color: #111;
- font-size: 32px;
- margin-bottom: 10px;
+ color: #111;
+ font-size: 32px;
+ margin-bottom: 10px;
}
-.l-unit__stats.separate,
+
+.l-unit__stats.separate {
+ padding-bottom: 15px;
+}
+
.l-unit__name.separate {
- padding-bottom: 15px;
+ padding-bottom: 15px;
}
-
.l-unit__name.small {
- font-size: 19px;
+ font-size: 19px;
}
-
.l-unit__name.small-2 {
- font-size: 24px;
+ font-size: 24px;
}
-
-
.l-unit__name span {
- color: #999;
- margin-left: 30px;
- font-size: 14px;
- font-style: italic;
+ color: #999;
+ margin-left: 30px;
+ font-size: 14px;
+ font-style: italic;
}
.l-unit__name span:first-of-type {
- margin-left: 39px;
+ margin-left: 39px;
}
.l-unit__name b {
- font-weight: normal;
- font-style: italic;
+ font-weight: normal;
+ font-style: italic;
}
.l-unit__ip {
- margin-bottom: 26px;
- font-size: 12px;
- letter-spacing: 1px;
+ margin-bottom: 26px;
+ font-size: 12px;
+ letter-spacing: 1px;
}
.l-unit__ip span {
- padding-left: 3px;
- padding-right: 3px;
+ padding-left: 3px;
+ padding-right: 3px;
}
+
.display-ip {
- font-size: 12px;
- letter-spacing: 1px;
+ font-size: 12px;
+ letter-spacing: 1px;
}
.display-ip span {
- padding-left: 3px;
- padding-right: 3px;
+ padding-left: 3px;
+ padding-right: 3px;
}
.l-unit__stats {
- margin-bottom: 50px;
+ margin-bottom: 50px;
}
.l-unit__stats table {
- width: 100%;
- table-layout: fixed;
+ width: 100%;
+ table-layout: fixed;
}
.l-unit__stats td {
- height: 22px;
- padding-bottom: 3px;
- vertical-align: top;
+ height: 22px;
+ padding-bottom: 3px;
+ vertical-align: top;
}
+
.l-unit__stat-col--left {
- float: left;
- width: 124px;
+ float: left;
+ width: 124px;
}
.l-unit__stat-col--left.compact {
- width: 70px;
+ width: 70px;
}
.l-unit__stat-col--left.compact-2 {
- width: 95px;
+ width: 95px;
}
.l-unit__stat-col--left.wide {
- width: 190px;
+ width: 190px;
}
.l-unit__stat-col--left.wide-2 {
- width: 230px;
+ width: 230px;
}
.l-unit__stat-col--left.wide-3 {
- width: 250px;
+ width: 250px;
}
.l-unit__stat-col--left.wide-4 {
- width: 550px;
+ width: 550px;
}
-
-
.l-unit__stat-col--left.small-2 {
- line-height: 11px;
+ line-height: 11px;
}
-
.l-unit__stat-col--left.tiny {
- font-size: 11px;
+ font-size: 11px;
}
-
.l-unit__stat-col--left.tiny b {
- font-size: 18px;
+ font-size: 18px;
}
-
.l-unit__stat-col--right {
- float: left;
- max-width: 152px;
+ float: left;
+ max-width: 152px;
}
.l-unit-toolbar__col--left {
- float: left;
- margin-left: -15px;
- margin-top: 0;
- padding-bottom: 0px;/* 8px */
- padding-left: 15px;
- padding-top: 15px;
- width: 30px;
- cursor: pointer;
+ float: left;
+ margin-left: -15px;
+ margin-top: 0;
+ padding-bottom: 0px;
+ /* 8px */
+ padding-left: 15px;
+ padding-top: 15px;
+ width: 30px;
+ cursor: pointer;
}
.l-unit-toolbar__col--right {
- float: right;
- display: none;
+ float: right;
+ display: none;
}
body.mobile .l-unit-toolbar__col--right {
- display: block;
+ display: block;
}
.l-unit-toolbar .shortcut {
- display: none;
+ display: none;
}
.units.active .l-unit.focus .l-unit-toolbar .shortcut {
- display: block;
- background-color: #69a298;
- border-radius: 13px;
- color: #fff;
- cursor: pointer;
- display: block;
- font-size: 12px;
- font-weight: 700;
- line-height: 25px;
- padding-left: 7px;
- padding-right: 9px;
- position: absolute;
- right: 3px;
- top: 3px;
+ display: block;
+ background-color: #69a298;
+ border-radius: 13px;
+ color: #fff;
+ cursor: pointer;
+ display: block;
+ font-size: 12px;
+ font-weight: 700;
+ line-height: 25px;
+ padding-left: 7px;
+ padding-right: 9px;
+ position: absolute;
+ right: 3px;
+ top: 3px;
}
.units.active .l-unit.focus .l-unit-toolbar .shortcut.delete {
- font-size: 10px;
- padding-left: 2px;
- padding-right: 5px;
- text-transform: capitalize;
+ font-size: 10px;
+ padding-left: 2px;
+ padding-right: 5px;
+ text-transform: capitalize;
}
.units.active .l-unit.focus .l-unit-toolbar .shortcut.enter {
- font-size: 17px;
- padding-left: 1px;
- padding-right: 7px;
+ font-size: 17px;
+ padding-left: 1px;
+ padding-right: 7px;
}
.units.active .l-unit.focus .l-unit-toolbar i {
- background: none;
+ background: none;
}
.l-unit__stat-col.volume {
- font-size: 12px;
- line-height: 17px;
- float: right;
+ font-size: 12px;
+ line-height: 17px;
+ float: right;
}
.actions-panel__col {
- float: left;
- min-width: 95px;
- min-height: 31px;
- text-transform: uppercase;
- background-color: #dfdedd;
- border-right: 1px solid #d8d7d7;
- position: relative;
+ float: left;
+ min-width: 95px;
+ min-height: 31px;
+ text-transform: uppercase;
+ background-color: #dde6e9;
+ border-right: 1px solid #dde6e9;
+ position: relative;
}
+
.selected .actions-panel__col {
- -webkit-filter: contrast(80%);
- filter: contrast(80%);
+ -webkit-filter: contrast(80%);
+ filter: contrast(80%);
}
+
.actions-panel__col i {
- background-image: url("/images/sprite.png?1446554103");
- background-repeat: no-repeat;
- display: inline-block;
- float: right;
- content: '';
- width: 31px;
- height: 31px;
- position: absolute;
- top: 0;
- right: 0;
+ background-image: url("/images/sprite.png?1446554103");
+ background-repeat: no-repeat;
+ display: inline-block;
+ float: right;
+ content: "";
+ width: 31px;
+ height: 31px;
+ position: absolute;
+ top: 0;
+ right: 0;
}
.actions-panel__col a {
- line-height: 31px;
- color: #777;
- font-weight: 700;
- font-size: 12px;
- padding-left: 13px;
- display: block;
- cursor: pointer;
- position: relative;
- padding-right: 36px;
-}
-.lang-ru .actions-panel__col a {
- font-size: 11px;
- padding-top: 1px;
-}
-.lang-tw .actions-panel__col a {
- font-size: 15px;
- font-weight: normal;
- line-height: 29px;
-}
-.lang-ar .actions-panel__col a {
- font-size: 15px;
- font-weight: normal;
- line-height: 31px;
+ line-height: 31px;
+ color: #777;
+ font-weight: 700;
+ font-size: 12px;
+ padding-left: 13px;
+ display: block;
+ cursor: pointer;
+ position: relative;
+ padding-right: 36px;
}
+.lang-ru .actions-panel__col a {
+ font-size: 11px;
+ padding-top: 1px;
+}
+
+.lang-tw .actions-panel__col a {
+ font-size: 15px;
+ font-weight: normal;
+ line-height: 29px;
+}
+
+.lang-ar .actions-panel__col a {
+ font-size: 15px;
+ font-weight: normal;
+ line-height: 31px;
+}
.actions-panel__favorite a {
- background-color: #afafac;
- color: #fff;
+ background-color: #afafac;
+ color: #fff;
}
.actions-panel__favorite i {
- background-position: -39px -85px;
+ background-position: -39px -85px;
}
.actions-panel__edit i {
- background-position: -1px -169px;
+ background-position: -1px -169px;
}
.actions-panel__edit:hover a {
- background-color: #9fbf0c;
- color: #fff;
+ background-color: #27c24c;
+ color: #fff;
}
.actions-panel__edit:active a {
- background-color: #c0e60f;
- color: #555;
+ background-color: #32f360;
+ color: #555;
}
.actions-panel__edit:hover a i {
- background-position: -41px -169px;
+ background-position: -41px -169px;
}
.actions-panel__edit:active a i {
- background-position: -81px -169px;
+ background-position: -81px -169px;
}
+
.actions-panel__edit--active a {
- background-color: #c0e60f;
- color: #fff;
+ background-color: #32f360;
+ color: #fff;
}
.actions-panel__edit--active i {
- background-position: -78px -169px;
+ background-position: -78px -169px;
}
.actions-panel__restart i {
- background-position: -1px -520px;
+ background-position: -1px -520px;
}
.actions-panel__restart:hover a {
- background-color: #9fbf0c;
- color: #fff;
+ background-color: #27c24c;
+ color: #fff;
}
.actions-panel__restart:active a {
- background-color: #c0e60f;
- color: #555;
+ background-color: #32f360;
+ color: #555;
}
.actions-panel__restart:hover a i {
- background-position: -41px -520px;
+ background-position: -41px -520px;
}
.actions-panel__restart:active a i {
- background-position: -81px -520px;
+ background-position: -81px -520px;
}
+
.actions-panel__restart--active a {
- background-color: #c0e60f;
- color: #fff;
+ background-color: #32f360;
+ color: #fff;
}
.actions-panel__restart--active i {
- background-position: -78px -520px;
+ background-position: -78px -520px;
}
.actions-panel__add i {
- background-position: -1px -285px;
+ background-position: -1px -285px;
}
.actions-panel__add:hover a {
- background-color: #9fbf0c;
- color: #fff;
+ background-color: #27c24c;
+ color: #fff;
}
.actions-panel__add:active a {
- background-color: #c0e60f;
- color: #555;
+ background-color: #32f360;
+ color: #555;
}
.actions-panel__add:hover a i {
- background-position: -41px -285px;
+ background-position: -41px -285px;
}
.actions-panel__add:active a i {
- background-position: -81px -285px;
+ background-position: -81px -285px;
}
.actions-panel__add--active a {
- background-color: #c0e60f;
- color: #fff;
+ background-color: #32f360;
+ color: #fff;
}
.actions-panel__add--active i {
- background-position: -78px -285px;
+ background-position: -78px -285px;
}
.actions-panel__update i {
- background-position: -1px -481px;
+ background-position: -1px -481px;
}
.actions-panel__update:hover a {
- background-color: #9fbf0c;
- color: #fff;
+ background-color: #27c24c;
+ color: #fff;
}
.actions-panel__update:active a {
- background-color: #c0e60f;
- color: #555;
+ background-color: #32f360;
+ color: #555;
}
.actions-panel__update:hover a i {
- background-position: -41px -481px;
+ background-position: -41px -481px;
}
.actions-panel__update:active a i {
- background-position: -81px -481px;
+ background-position: -81px -481px;
}
+
.actions-panel__update--active a {
- background-color: #c0e60f;
- color: #fff;
+ background-color: #32f360;
+ color: #fff;
}
.actions-panel__update--active i {
- background-position: -78px -481px;
+ background-position: -78px -481px;
}
.actions-panel__logs i {
- background-position: -2px -130px;
+ background-position: -2px -130px;
}
.actions-panel__logs:hover a {
- background-color: #afafac;
- color: #fff;
+ background-color: #afafac;
+ color: #fff;
}
.actions-panel__logs:active a {
- background-color: #55c9c0;
- color: #fff;
+ background-color: #23b7e5;
+ color: #fff;
}
.actions-panel__logs:hover a i {
- background-position: -42px -130px;
+ background-position: -42px -130px;
}
.actions-panel__logs:active a i {
- background-position: -82px -130px;
+ background-position: -82px -130px;
}
+
.actions-panel__logs--active a {
- background-color: #55c9c0;
- color: #fff;
+ background-color: #23b7e5;
+ color: #fff;
}
.actions-panel__logs--active i {
- background-position: -79px -130px;
+ background-position: -79px -130px;
}
.actions-panel__db i {
- background-position: -2px -363px;
+ background-position: -2px -363px;
}
.actions-panel__db:hover a {
- background-color: #afafac;
- color: #fff;
+ background-color: #afafac;
+ color: #fff;
}
.actions-panel__db:active a {
- background-color: #55c9c0;
- color: #fff;
+ background-color: #23b7e5;
+ color: #fff;
}
.actions-panel__db:hover a i {
- background-position: -42px -363px;
+ background-position: -42px -363px;
}
.actions-panel__db:active a i {
- background-position: -82px -363px;
+ background-position: -82px -363px;
}
+
.actions-panel__db--active a {
- background-color: #55c9c0;
- color: #fff;
+ background-color: #23b7e5;
+ color: #fff;
}
.actions-panel__db--active i {
- background-position: -79px -362px;
+ background-position: -79px -362px;
}
.actions-panel__suspend i {
- background-position: -1px -51px;
+ background-position: -1px -51px;
}
.actions-panel__suspend:hover a {
- background-color: #afafac;
- color: #fff;
+ background-color: #afafac;
+ color: #fff;
}
.actions-panel__suspend:active a {
- background-color: #55c9c0;
- color: #fff;
+ background-color: #23b7e5;
+ color: #fff;
}
.actions-panel__suspend:hover a i {
- background-position: -41px -51px;
+ background-position: -41px -51px;
}
.actions-panel__suspend:active a i {
- background-position: -81px -51px;
+ background-position: -81px -51px;
}
+
.actions-panel__suspend--active a {
- background-color: #55c9c0;
- color: #fff;
+ background-color: #23b7e5;
+ color: #fff;
}
.actions-panel__suspend--active i {
- background-position: -78px -51px;
+ background-position: -78px -51px;
}
.actions-panel__unsuspend i {
- background-position: -1px -12px;
+ background-position: -1px -12px;
}
.actions-panel__unsuspend:hover a {
- background-color: #afafac;
- color: #fff;
+ background-color: #afafac;
+ color: #fff;
}
.actions-panel__unsuspend:active a {
- background-color: #55c9c0;
- color: #fff;
+ background-color: #23b7e5;
+ color: #fff;
}
.actions-panel__unsuspend:hover a i {
- background-position: -41px -12px;
+ background-position: -41px -12px;
}
.actions-panel__unsuspend:active a i {
- background-position: -81px -12px;
+ background-position: -81px -12px;
}
+
.actions-panel__unsuspend--active a {
- background-color: #55c9c0;
- color: #fff;
+ background-color: #23b7e5;
+ color: #fff;
}
.actions-panel__unsuspend--active i {
- background-position: -78px -12px;
+ background-position: -78px -12px;
}
-
.actions-panel__loginas i {
- background-position: -1px -245px;
+ background-position: -1px -245px;
}
.actions-panel__loginas:hover a {
- background-color: #afafac;
- color: #fff;
+ background-color: #afafac;
+ color: #fff;
}
.actions-panel__loginas:active a {
- background-color: #55c9c0;
- color: #fff;
+ background-color: #23b7e5;
+ color: #fff;
}
.actions-panel__loginas:hover a i {
- background-position: -41px -245px;
+ background-position: -41px -245px;
}
.actions-panel__loginas:active a i {
- background-position: -81px -245px;
+ background-position: -81px -245px;
}
+
.actions-panel__loginas--active a {
- background-color: #55c9c0;
- color: #fff;
+ background-color: #23b7e5;
+ color: #fff;
}
.actions-panel__loginas--active i {
- background-position: -78px -245px;
+ background-position: -78px -245px;
}
.actions-panel__download i {
- background-position: -1px -402px;
+ background-position: -1px -402px;
}
.actions-panel__download:hover a {
- background-color: #9fbf0c;
- color: #fff;
+ background-color: #27c24c;
+ color: #fff;
}
.actions-panel__download:active a {
- background-color: #c0e60f;
- color: #555;
+ background-color: #32f360;
+ color: #555;
}
.actions-panel__download:hover a i {
- background-position: -41px -402px;
+ background-position: -41px -402px;
}
.actions-panel__download:active a i {
- background-position: -81px -402px;
+ background-position: -81px -402px;
}
+
.actions-panel__download--active a {
- background-color: #c0e60f;
- color: #fff;
+ background-color: #32f360;
+ color: #fff;
}
.actions-panel__download--active i {
- background-position: -78px -402px;
+ background-position: -78px -402px;
}
.actions-panel__configure i {
- background-position: -1px -442px;
+ background-position: -1px -442px;
}
.actions-panel__configure:hover a {
- background-color: #55c9c0;
- color: #fff;
+ background-color: #23b7e5;
+ color: #fff;
}
.actions-panel__configure:active a {
- background-color: #afafac;
- color: #fff;
+ background-color: #afafac;
+ color: #fff;
}
.actions-panel__configure:hover a i {
- background-position: -81px -442px;
+ background-position: -81px -442px;
}
.actions-panel__configure:active a i {
- background-position: -41px -442px;
+ background-position: -41px -442px;
}
+
.actions-panel__configure--active a {
- background-color: #55c9c0;
- color: #fff;
+ background-color: #23b7e5;
+ color: #fff;
}
.actions-panel__configure--active i {
- background-position: -78px -442px;
+ background-position: -78px -442px;
}
.actions-panel__.l-icon-starmail i {
- background-position: -1px -324px;
+ background-position: -1px -324px;
}
+
.actions-panel__mail:hover a {
- background-color: #afafac;
- color: #fff;
+ background-color: #afafac;
+ color: #fff;
}
.actions-panel__mail:active a {
- background-color: #55c9c0;
- color: #fff;
+ background-color: #23b7e5;
+ color: #fff;
}
.actions-panel__mail:hover a i {
- background-position: -41px -324px;
+ background-position: -41px -324px;
}
.actions-panel__mail:active a i {
- background-position: -81px -324px;
+ background-position: -81px -324px;
}
+
.actions-panel__mail--active a {
- background-color: #55c9c0;
- color: #fff;
+ background-color: #23b7e5;
+ color: #fff;
}
.actions-panel__mail--active i {
- background-position: -78px -324px;
+ background-position: -78px -324px;
}
.actions-panel__delete i {
- background-position: -1px -207px;
+ background-position: -1px -207px;
}
.actions-panel__delete:hover a {
- background-color: #ff3438;
- color: #fff;
+ background-color: #ff3438;
+ color: #fff;
}
.actions-panel__delete:active a {
- background-color: #ff5f5f;
- color: #fff;
+ background-color: #ff5f5f;
+ color: #fff;
}
.actions-panel__delete:hover a i {
- background-position: -41px -207px;
+ background-position: -41px -207px;
}
.actions-panel__delete:active a i {
- background-position: -81px -207px;
+ background-position: -81px -207px;
}
+
.actions-panel__delete--active a {
- background-color: #ff5f5f;
- color: #fff;
+ background-color: #ff5f5f;
+ color: #fff;
}
.actions-panel__delete--active i {
- background-position: -78px -207px;
+ background-position: -78px -207px;
}
.actions-panel__stop i {
- background-position: -1px -561px;
+ background-position: -1px -561px;
}
.actions-panel__stop:hover a {
- background-color: #ff3438;
- color: #fff;
+ background-color: #ff3438;
+ color: #fff;
}
.actions-panel__stop:active a {
- background-color: #ff5f5f;
- color: #fff;
+ background-color: #ff5f5f;
+ color: #fff;
}
.actions-panel__stop:hover a i {
- background-position: -41px -561px;
+ background-position: -41px -561px;
}
.actions-panel__stop:active a i {
- background-position: -81px -561px;
+ background-position: -81px -561px;
}
+
.actions-panel__stop--active a {
- background-color: #ff5f5f;
- color: #fff;
+ background-color: #ff5f5f;
+ color: #fff;
}
.actions-panel__stop--active i {
- background-position: -78px -561px;
+ background-position: -78px -561px;
}
.actions-panel__start i {
- background-position: -1px -482px;
+ background-position: -1px -482px;
}
.actions-panel__start:hover a {
- background-color: #9fbf0c;
- color: #fff;
+ background-color: #27c24c;
+ color: #fff;
}
.actions-panel__start:active a {
- background-color: #c0e60f;
- color: #555;
+ background-color: #32f360;
+ color: #555;
}
.actions-panel__start:hover a i {
- background-position: -41px -482px;
+ background-position: -41px -482px;
}
.actions-panel__start:active a i {
- background-position: -81px -482px;
+ background-position: -81px -482px;
}
+
.actions-panel__start--active a {
- background-color: #c0e60f;
- color: #fff;
+ background-color: #32f360;
+ color: #fff;
}
.actions-panel__start--active i {
- background-position: -78px -482px;
+ background-position: -78px -482px;
}
-
.l-icon-up-arrow, .l-icon-down-arrow, .l-icon-star, .l-icon-to-top, .l-icon-shortcuts, .l-icon-star-orange, .l-icon-star-blue {
- display: inline-block;
- vertical-align: middle;
- background-image: url("/images/sprite.png?1446554103");
+ display: inline-block;
+ vertical-align: middle;
+ background-image: url("/images/sprite.png?1446554103");
}
.l-icon-down-arrow {
- width: 7px;
- height: 15px;
- background-position: -280px -128px;
+ width: 7px;
+ height: 15px;
+ background-position: -280px -128px;
}
.l-icon-up-arrow {
- width: 7px;
- height: 15px;
- background-position: -299px -129px;
+ width: 7px;
+ height: 15px;
+ background-position: -299px -129px;
}
-
.l-icon-star {
- width: 36px;
- height: 36px;
- background-position: -216px 560px;
- cursor: pointer;
- visibility: hidden;
+ width: 36px;
+ height: 36px;
+ background-position: -216px 560px;
+ cursor: pointer;
+ visibility: hidden;
}
+
.l-unit--starred .l-icon-star {
- background-position: -174px 560px;
- visibility: visible;
+ background-position: -174px 560px;
+ visibility: visible;
}
+
.selected .l-icon-star {
- filter: contrast(70%);
- -webkit-filter: contrast(70%);
+ filter: contrast(70%);
+ -webkit-filter: contrast(70%);
}
.units.compact .l-icon-star {
- margin-top: -14px;
+ margin-top: -14px;
}
.l-icon-star:hover {
- background-position: 0px 560px;
+ background-position: 0px 560px;
}
-
.l-icon-star:active {
- -background-position: -174px 560px;
- background-position: -80px 562px;
+ -background-position: -174px 560px;
+ background-position: -80px 562px;
}
.l-unit:hover .l-icon-star {
- visibility: visible;
+ visibility: visible;
}
-
.l-icon-to-top {
- width: 35px;
- height: 35px;
- background-position: -330px -68px;
+ width: 35px;
+ height: 35px;
+ background-position: -330px -68px;
}
.l-icon-to-top:hover {
- background-position: -366px -68px;
+ background-position: -366px -68px;
}
.l-icon-to-top:active {
- background-position: -402px -68px;
+ background-position: -402px -68px;
}
.l-icon-shortcuts {
- width: 35px;
- height: 35px;
- background-position: -240px -281px;
- border-radius: 18px;
+ width: 35px;
+ height: 35px;
+ background-position: -240px -281px;
+ border-radius: 18px;
}
.l-icon-shortcuts:hover {
- background-position: -160px -281px;
+ background-position: -160px -281px;
}
.l-icon-shortcuts:active {
- background-position: -198px -281px;
+ background-position: -198px -281px;
}
-body.mobile .l-icon-to-top,
-body.mobile .l-icon-shortcuts {
- display: none;
+body.mobile .l-icon-to-top, body.mobile .l-icon-shortcuts {
+ display: none;
}
-
.l-icon-star-orange {
- width: 13px;
- height: 13px;
- background-position: -178px -97px;
+ width: 13px;
+ height: 13px;
+ background-position: -178px -97px;
}
.l-icon-star-blue {
- width: 13px;
- height: 13px;
- background-position: -134px -97px;
+ width: 13px;
+ height: 13px;
+ background-position: -134px -97px;
}
.media-top {
- vertical-align: top;
+ vertical-align: top;
}
.l-unit__stat-cols {
- padding-right: 10px;
+ padding-right: 10px;
}
.l-unit__stat-cols.last {
- padding-right: 0;
+ padding-right: 0;
}
.l-unit__stat-cols.graph {
- width: 200px;
+ width: 200px;
}
.l-unit__stat-cols.tiny {
- font-size:11px;
- line-height: 19px;
+ font-size: 11px;
+ line-height: 19px;
}
.l-percent {
- border-bottom: 1px dotted #ccc;
- margin-top: 1px;
- width: 200px;
+ border-bottom: 1px dotted #ccc;
+ margin-top: 1px;
+ width: 200px;
}
+
.l-percent__fill {
- background-color: #aacc0d;
- height: 3px;
- position: relative;
- bottom: -1px;
+ background-color: #aacc0d;
+ height: 3px;
+ position: relative;
+ bottom: -1px;
}
.to-top {
- display: inline-block;
- position: fixed;
- top: 92%;
- right: 1%;
+ display: inline-block;
+ position: fixed;
+ top: 92%;
+ right: 1%;
}
.to-shortcuts {
- display: inline-block;
- position: fixed;
- top: 92%;
- right: 4%;
+ display: inline-block;
+ position: fixed;
+ top: 92%;
+ right: 4%;
}
-
/*
#vstobjects {
margin-top: -1px;
}
*/
-
#vstobjects .l-center {
- padding-top: 20px;
- padding-bottom: 30px;
- font-size: 12px;
+ padding-top: 20px;
+ padding-bottom: 30px;
+ font-size: 12px;
}
.timer-container {
- margin-top: 4px;
+ margin-top: 4px;
}
-
.timer-container .refresh-timer {
- border: 2px solid #9f9f9f;
- border-radius: 14px;
- height: 14px;
- width: 14px;
- float: left;
- margin: 2px 10px 0 0;
+ border: 2px solid #9f9f9f;
+ border-radius: 14px;
+ height: 14px;
+ width: 14px;
+ float: left;
+ margin: 2px 10px 0 0;
}
.timer-container .refresh-timer.paused {
- border: 2px solid #9f9f9f;
+ border: 2px solid #9f9f9f;
}
-.timer-container .refresh-timer.paused .loader-half.right,
-.timer-container .refresh-timer.paused .loader-half.dark {
- background-color: #9d9f9f;
+.timer-container .refresh-timer.paused .loader-half.right, .timer-container .refresh-timer.paused .loader-half.dark {
+ background-color: #9d9f9f;
}
.timer-container .loader-half {
- border-radius: 0 14px 14px 0;
- height: 14px;
- width: 7px;
- float: left;
+ border-radius: 0 14px 14px 0;
+ height: 14px;
+ width: 7px;
+ float: left;
}
.timer-container .loader-half.left {
- border-radius: 14px 0 0 14px;
- background-color: #fff;
+ border-radius: 14px 0 0 14px;
+ background-color: #fff;
}
.timer-container .loader-half.right {
- margin-left: 7px;
- background-color: #9f9f9f;
+ margin-left: 7px;
+ background-color: #9f9f9f;
}
.timer-container .loader-half.dark {
- background-color: #9f9f9f;
+ background-color: #9f9f9f;
}
.timer-container .movement {
- float: left;
- width: 14px;
- height: 14px;
- position: absolute;
+ float: left;
+ width: 14px;
+ height: 14px;
+ position: absolute;
}
.timer-container .movement.left {
- z-index: 10;
+ z-index: 10;
}
.timer-container .movement.right {
- transform: rotate(180deg);
- -webkit-transform: rotate(180deg);
+ transform: rotate(180deg);
+ -webkit-transform: rotate(180deg);
}
.timer-container .timer-button {
- cursor: pointer;
- text-decotation: underline;
- margin: 7px 0 0 38px;
- width: 15px;
- float: left;
- height: 10px;
+ cursor: pointer;
+ text-decotation: underline;
+ margin: 7px 0 0 38px;
+ width: 15px;
+ float: left;
+ height: 10px;
}
.timer-container .timer-button.pause {
- background: url(/images/pause.png) no-repeat ;
+ background: url(/images/pause.png) no-repeat;
}
.timer-container .timer-button.play {
- background: url(/images/start.png) no-repeat;
+ background: url(/images/start.png) no-repeat;
}
.uppercase {
- text-transform: uppercase;
-}
-
-.title b,
-.title {
- color: #ff6701;
- font-size: 12px;
- font-weight: bold;
- padding: 0 30px 0px 73px;
- line-height: 30px;
- text-transform: uppercase;
+ text-transform: uppercase;
}
.title {
- display: inline-block;
- float: left;
+ color: #9c8cff;
+ font-size: 12px;
+ font-weight: bold;
+ padding: 0 30px 0px 73px;
+ line-height: 30px;
+ text-transform: uppercase;
+ display: inline-block;
+ float: left;
+}
+.title b {
+ color: #9c8cff;
+ font-size: 12px;
+ font-weight: bold;
+ padding: 0 30px 0px 73px;
+ line-height: 30px;
+ text-transform: uppercase;
}
-
-
-
/* form styles */
-
-
-
.vst-error {
- color: #BE5ABF;
- font-weight: bold;
- display: inline-block;
- height: 17px;
- overflow: hidden;
- padding-top: 6px;
- width: 593px;
+ color: #BE5ABF;
+ font-weight: bold;
+ display: inline-block;
+ height: 17px;
+ overflow: hidden;
+ padding-top: 6px;
+ width: 593px;
}
.vst-ok {
- color: #9fbf0c;
- font-weight: bold;
- display: inline-block;
- height: 17px;
- overflow: hidden;
- padding-top: 6px;
- max-width: 600px;
+ color: #27c24c;
+ font-weight: bold;
+ display: inline-block;
+ height: 17px;
+ overflow: hidden;
+ padding-top: 6px;
+ max-width: 600px;
}
-
.vst-ok a {
- color: #2c9491;
+ color: #27c24c;
}
.vst-ok a:hover {
- color: #ff6701;
+ color: #9c8cff;
}
.vst-ok a:active {
- color: #f72b44;
+ color: #796cc7;
}
-
-
-
.data {
- margin: 0 0 90px 0;
+ margin: 0 0 90px 0;
}
+
.data-col1 {
- width: 148px;
+ width: 148px;
}
-
.data-col1 td {
- padding: 10px 0 0 5px;
+ padding: 10px 0 0 5px;
}
-
.data-col1 tr:first-child td {
- padding: 59px 0 0 5px;
+ padding: 59px 0 0 5px;
}
-.login-box td,
-.data td {
- color: #555;
- font-size: 15px;
- padding-bottom: 3px;
- font-weight: bold;
+.login-box td, .data td {
+ color: #555;
+ font-size: 15px;
+ padding-bottom: 3px;
+ font-weight: bold;
}
+
.input-label {
- padding-top: 20px;
+ padding-top: 20px;
}
-.data input[type="checkbox"] {
- display: inline;
- cursor: pointer;
+
+.data input[type=checkbox] {
+ display: inline;
+ cursor: pointer;
}
+
.step-top {
- padding-top: 42px;
+ padding-top: 42px;
}
+
.step-top-small {
- padding-top: 22px;
+ padding-top: 22px;
}
+
.jump-top {
- margin-top: -60px;
+ margin-top: -60px;
}
+
.jump-small-top {
- margin-top: -12px;
+ margin-top: -12px;
}
+
.float-right {
display: inline-block;
float: right;
}
.data a {
- text-decoration: none;
-}
-label {
- cursor: pointer;
+ text-decoration: none;
}
+label {
+ cursor: pointer;
+}
label:hover {
- color: #333;
+ color: #333;
}
.vst-input {
- background-color: #fff;
- border: 1px solid #cfcfcf;
- border-radius: 0px;
- color: #555;
- font-family: Arial;
- font-size: 19px;
- height: 28px;
- margin: 2px 6px 0 0;
- padding: 7px 3px 9px 14px;
- width: 360px;
- font-weight: normal;
+ background-color: #fff;
+ border: 1px solid #dee5e7;
+ border-radius: 3px;
+ color: #555;
+ font-family: Arial;
+ font-size: 19px;
+ height: 28px;
+ margin: 2px 6px 0 0;
+ padding: 7px 3px 9px 14px;
+ width: 360px;
+ font-weight: normal;
}
.vst-input:hover {
- border: 1px solid #909090;
+ border: 1px solid #909090;
}
.vst-input:focus {
- border: 1px solid #55C9C0;
- background-color: #D7F9FF;
- color: #333;
+ border: 1px solid #23b7e5;
+ background-color: #fff;
+ color: #333;
+}
+.vst-input:disabled {
+ background-color: #e0e0e0;
}
-.vst-input:disabled,
.vst-list:disabled {
- background-color: #e0e0e0;
+ background-color: #e0e0e0;
}
+
.vst-input:focus:disabled {
- border-color: #f1f1f1;
- background-color: #f1f1f1;
+ border-color: #f1f1f1;
+ background-color: #f1f1f1;
}
.vst-input.long {
- width: 832px;
+ width: 100%;
}
.vst-input.short {
- width: 200px;
+ width: 200px;
}
.vst-list {
- background-color: #fff;
- border: 1px solid #ccc;
- border-radius: 0;
- color: #555;
- font-family: Arial,Helvetica,sans-serif;
- font-size: 19px;
- font-weight: normal;
- height: 43px;
- cursor: pointer;
- margin: 2px 6px 0 0;
- min-width: 138px;
- padding: 8px 1px 6px 10px;
- background-image: url("/images/sprite.png?1446554103");
- background-position: -185px -604px;
- width: 270px;
- appearance:none;
- -moz-appearance:none;
- -webkit-appearance:none;
- text-shadow: 0 0 0 #555;
+ background-color: #fff;
+ border: 1px solid #dee5e7;
+ border-radius: 3px;
+ color: #555;
+ font-family: Arial, Helvetica, sans-serif;
+ font-size: 19px;
+ font-weight: normal;
+ height: 43px;
+ cursor: pointer;
+ margin: 2px 6px 0 0;
+ min-width: 138px;
+ padding: 8px 1px 6px 10px;
+ background-image: url("/images/sprite.png?1446554103");
+ background-position: -185px -604px;
+ width: 270px;
+ appearance: none;
+ -moz-appearance: none;
+ -webkit-appearance: none;
+ text-shadow: 0 0 0 #555;
}
-
.vst-list.long-2 {
- width: 486px;
- background-position: 502px -604px;
+ width: 486px;
+ background-position: 502px -604px;
}
.vst-list option {
- padding: 6px 1px 6px 15px;
+ padding: 6px 1px 6px 15px;
}
.vst-list:hover {
- border: 1px solid #909090;
+ border: 1px solid #909090;
}
.vst-list:focus {
- border: 1px solid #55C9C0;
- color: #333;
+ border: 1px solid #23b7e5;
+ color: #333;
}
-
.vst-list.flat {
- border: 1px solid #fff;
- color: #2c9491;
- text-transform: uppercase;
- font-weight: bold;
- font-size: 11px;
- margin-left: -14px;
- background-position: -210px -604px;
- text-shadow: none !important;
+ border: 1px solid #fff;
+ color: #27c24c;
+ text-transform: uppercase;
+ font-weight: bold;
+ font-size: 11px;
+ margin-left: -14px;
+ background-position: -210px -604px;
+ text-shadow: none !important;
}
.vst-list.flat:hover {
- color: #ff6701;
+ color: #9c8cff;
}
.vst-list.flat option {
- color: #555;
+ color: #555;
}
-a.vst-text,
-a.vst-text b{
- color: #2c9491;
+a.vst-text {
+ color: #27c24c;
}
-a.vst-text:hover,
-a.vst-text:hover b{
- color: #ff6701;
+a.vst-text b {
+ color: #27c24c;
}
-a.vst-text:active,
-a.vst-text:active b{
- color: #ff6701;
+a.vst-text:hover, a.vst-text:active {
+ color: #9c8cff;
+}
+a.vst-text:hover b, a.vst-text:active b {
+ color: #9c8cff;
}
.vst-textinput {
- background-color: #fff;
- border: 1px solid #cfcfcf;
- border-radius: 0px;
- color: #555;
- font-size: 19px;
- padding: 5px;
- width: 560px;
- height: 90px;
- font-family:Arial, Helvetica, sans-serif;
- padding: 9px 1px 6px 14px;
- font-weight: normal;
+ background-color: #fff;
+ border: 1px solid #dee5e7;
+ border-radius: 3px;
+ color: #555;
+ font-size: 19px;
+ padding: 5px;
+ width: 560px;
+ height: 90px;
+ font-family: Arial, Helvetica, sans-serif;
+ padding: 9px 1px 6px 14px;
+ font-weight: normal;
}
.vst-textinput:hover {
- border: 1px solid #909090;
+ border: 1px solid #909090;
}
.vst-textinput:focus {
- border: 1px solid #55C9C0;
- background-color: #D7F9FF;
- color: #333;
+ border: 1px solid #23b7e5;
+ background-color: #fff;
+ color: #333;
}
.vst-textinput:disabled {
- background-color: #f1f1f1;
+ background-color: #f1f1f1;
}
-.vst-textinput.console{
- font-size: 13px;
- width: 630px;
- height: 300px;
- font-family:"Lucida Console", Monaco, monospace;
- white-space: pre;
+.vst-textinput.console {
+ font-size: 13px;
+ width: 630px;
+ height: 300px;
+ font-family: "Lucida Console", Monaco, monospace;
+ white-space: pre;
}
.vst-textinput.short {
- width: 360px;
+ width: 360px;
}
-#advanced-options .console{
- width: 833px;
- height: 600px;
+
+#advanced-options .console {
+ width: 833px;
+ height: 600px;
}
+
.generate {
- color: #2C9491;
- text-decoration: underline;
- cursor: pointer;
- margin-left: -3px;
- padding: 0 3px;
+ color: #27c24c;
+ text-decoration: underline;
+ cursor: pointer;
+ margin-left: -3px;
+ padding: 0 3px;
}
.generate:hover {
- background-color: #ff6701;
- border-color: #ff6701;
- color: #fff;
+ background-color: #9c8cff;
+ border-color: #9c8cff;
+ color: #fff;
}
.generate:active {
- background-color: #F7D616;
- border-color: #F7D616;
+ background-color: #F7D616;
+ border-color: #F7D616;
}
+
.vst-advanced {
- border-bottom: 1px solid #2c9491;
- color: #2c9491;
- font-size: 11px;
- letter-spacing: 1px;
- padding: 2px 2px 0;
- text-decoration: none;
- text-transform: uppercase;
+ border-bottom: 1px solid #27c24c;
+ color: #27c24c;
+ font-size: 11px;
+ letter-spacing: 1px;
+ padding: 2px 2px 0;
+ text-decoration: none;
+ text-transform: uppercase;
}
+
.login-box .vst-advanced:hover {
- color: #ff6701;
- background-color: transparent;
- border-color: transparent;
+ color: #9c8cff;
+ background-color: transparent;
+ border-color: transparent;
}
.vst-advanced:hover {
- color: #fff;
- background-color: #ff6701;
- border-color: #ff6701;
+ color: #fff;
+ background-color: #9c8cff;
+ border-color: #9c8cff;
}
-.login-box .vst-advanced:active,
-.vst-advanced:active {
- color: #fff;
- background-color: #F7D616;
- border-color: #F7D616;
+.login-box .vst-advanced:active, .vst-advanced:active {
+ color: #fff;
+ background-color: #F7D616;
+ border-color: #F7D616;
}
.login-box .vst-advanced {
- border-bottom: none;
- color: #2c9491;
- font-size: 10px;
- letter-spacing: 1px;
- padding: 2px 2px 0;
- text-decoration: none;
- text-transform: uppercase;
+ border-bottom: none;
+ color: #27c24c;
+ font-size: 10px;
+ letter-spacing: 1px;
+ padding: 2px 2px 0;
+ text-decoration: none;
+ text-transform: uppercase;
}
+
.vst-checkbox {
- font-size: 19px;
- margin: 2px 6px 0 3px;
- padding: 5px;
+ font-size: 19px;
+ margin: 2px 6px 0 3px;
+ padding: 5px;
}
+
.lets-encrypt-note {
- color: #89a40a !important;
- font-style: italic;
- font-weight: normal !important;
- height: 30px;
- padding-top: 10px;
- vertical-align: top;
+ color: #89a40a !important;
+ font-style: italic;
+ font-weight: normal !important;
+ height: 30px;
+ padding-top: 10px;
+ vertical-align: top;
}
.additional-control {
- margin-left: 17px;
- color: #2C9491;
- border-bottom: 1px solid #2C9491;
- font-size: 11px;
- letter-spacing: 1px;
- cursor: pointer;
- text-transform: uppercase;
- font-weight: bold;
- padding: 2px 2px 0;
+ margin-left: 17px;
+ color: #27c24c;
+ border-bottom: 1px solid #27c24c;
+ font-size: 11px;
+ letter-spacing: 1px;
+ cursor: pointer;
+ text-transform: uppercase;
+ font-weight: bold;
+ padding: 2px 2px 0;
}
.additional-control:hover {
- background-color: #ff6701;
- border-color: #ff6701;
- color: #fff;
+ background-color: #9c8cff;
+ border-color: #9c8cff;
+ color: #fff;
}
.additional-control:active {
- color: #fff;
- background-color: #aaa;
+ color: #fff;
+ background-color: #aaa;
}
-
.additional-control.ftp-remove-user {
- padding: 2px 0 0 0;
+ padding: 2px 0 0 0;
}
-
-.additional-control.delete:hover,
-.additional-control.ftp-remove-user:hover {
- background-color: #FF3438;
- border-color: #FF3438;
+.additional-control.delete:hover, .additional-control.ftp-remove-user:hover {
+ background-color: #FF3438;
+ border-color: #FF3438;
}
-.additional-control.delete:active,
-.additional-control.ftp-remove-user:active {
- background-color: #FF5F5F;
- border-color: #FF5F5F;
+.additional-control.delete:active, .additional-control.ftp-remove-user:active {
+ background-color: #FF5F5F;
+ border-color: #FF5F5F;
}
.additional-control.add:hover {
- background-color: #9FBF0C;
- border-color: #9FBF0C;
+ background-color: #27c24c;
+ border-color: #27c24c;
}
-.additional-control.add:active{
- background-color: #c0e60f;
- border-color: #c0e60f;
+.additional-control.add:active {
+ background-color: #32f360;
+ border-color: #32f360;
}
-
.additional-control.remove-ns {
- display: none;
+ display: none;
}
.data .step-left {
- padding-left: 50px;
+ padding-left: 50px;
}
+
.hide-password {
- color: #2361a1;
- margin-left: -36px;
- padding-left: 3px;
- z-index: 1;
+ color: #2361a1;
+ margin-left: -36px;
+ padding-left: 3px;
+ z-index: 1;
}
+
.toggle-psw-visibility-icon {
- cursor: pointer;
- opacity: 1;
+ cursor: pointer;
+ opacity: 1;
}
+
.show-passwords-enabled-action {
- opacity: 0.4;
-}
-.ftp-path-value,
-.hint,
-td.hint {
- color: #777;
- font-size: 15px;
- font-style: italic;
- font-weight: normal;
-}
-.ftp-path-prefix { padding-top: 7px; }
-
-.ui-button,
-.button {
- filter:chroma(color=#000);
- cursor: pointer;
- border-radius: 3px 3px 3px 3px;
- font-size: 13px;
- font-weight: bold;
- padding: 1px 16px 3px 16px;
- width: 108px;
- height: 34px;
- color: #fafafa;
- border: 1px solid #9FBF0C;
- background-color: #9FBF0C;
-}
-.ui-button:hover,
-.button:hover {
- color: #555;
- border: 1px solid #C0E60F;
- background-color: #C0E60F;
-}
-.ui-button:active,
-.button:active {
- border: 1px solid #D1D70D !important;
- background-color: #D1D70D !important;
+ opacity: 0.4;
}
-.ui-button:focus,
-.button:focus {
- border: 1px solid #90AD0D;
- background-color: #90AD0D;
+.ftp-path-value, .hint, td.hint {
+ color: #777;
+ font-size: 15px;
+ font-style: italic;
+ font-weight: normal;
}
-.ui-button.cancel,
-.button.cancel {
- color: #777;
- border: 1px solid #DFDEDD;
- background-color: #DFDEDD;
+.ftp-path-prefix {
+ padding-top: 7px;
}
-.ui-button.cancel:hover,
-.button.cancel:hover {
- color: #fff;
- border: 1px solid #999;
- background-color: #999;
+
+.ui-button, .button {
+ filter: chroma(color=#000);
+ cursor: pointer;
+ border-radius: 3px 3px 3px 3px;
+ font-size: 13px;
+ font-weight: bold;
+ padding: 1px 16px 3px 16px;
+ width: 108px;
+ height: 34px;
+ color: #fafafa;
+ border: 1px solid #27c24c;
+ background-color: #27c24c;
}
-.ui-button.cancel:active,
-.button.cancel:active {
- border: 1px solid #D1D70D;
- background-color: #D1D70D;
+
+.ui-button:hover, .button:hover {
+ color: #555;
+ border: 1px solid #32f360;
+ background-color: #32f360;
}
+
+.ui-button:active, .button:active {
+ border: 1px solid #54ca70 !important;
+ background-color: #54ca70 !important;
+}
+
+.ui-button:focus, .button:focus {
+ border: 1px solid #25af49;
+ background-color: #25af49;
+}
+
+.ui-button.cancel, .button.cancel {
+ color: #777;
+ border: 1px solid #dde6e9;
+ background-color: #dde6e9;
+}
+
+.ui-button.cancel:hover, .button.cancel:hover {
+ color: #fff;
+ border: 1px solid #999;
+ background-color: #999;
+}
+
+.ui-button.cancel:active, .button.cancel:active {
+ border: 1px solid #54ca70;
+ background-color: #54ca70;
+}
+
a.button.cancel {
- padding: 8px 38px;
- text-transform: capitalize;
+ padding: 8px 38px;
+ text-transform: capitalize;
}
-
.ui-dialog button.cancel {
- color: #000;
- border: 1px solid #555;
- background-color: #555;
+ color: #000;
+ border: 1px solid #555;
+ background-color: #555;
}
+
/*
.ui-dialog button.cancel:hover {
color: #fff;
@@ -2789,105 +2764,101 @@ a.button.cancel {
background-color: #999;
}
.ui-dialog button.cancel:active {
- border: 1px solid #D1D70D;
- background-color: #D1D70D;
+ border: 1px solid #54ca70;
+ background-color: #54ca70;
}
*/
-
-
-
.ui-button span {
- color: #fff;
+ color: #fff;
}
.ui-button:hover span {
- color: #555 !important;
+ color: #555 !important;
}
.ui-button:active span {
- color: #555;
+ color: #555;
}
.ui-button.cancel span {
- color: #777;
+ color: #777;
}
-.ui-button:hover span {
- color: #fff;
-}
-.ui-button:active span {
- color: #fff;
+.ui-button:hover span, .ui-button:active span {
+ color: #fff;
}
.ui-dialog button.cancel span {
- color: #ccc;
+ color: #ccc;
}
-
.unlim-trigger {
- cursor: pointer;
- margin-left: -36px;
- padding-left: 3px;
- z-index: 1;
+ cursor: pointer;
+ margin-left: -36px;
+ padding-left: 3px;
+ z-index: 1;
}
+
.optional {
- font-size: 12px;
- padding: 0 0 0 6px;
- font-weight: normal;
+ font-size: 12px;
+ padding: 0 0 0 6px;
+ font-weight: normal;
}
+
.data-active b {
- color: #9FBF0C;
- font-size: 11px;
- letter-spacing: 1px;
- text-transform: uppercase;
+ color: #27c24c;
+ font-size: 11px;
+ letter-spacing: 1px;
+ text-transform: uppercase;
}
+
.data-suspended b {
- color: #A3A3A3;
- font-size: 11px;
- letter-spacing: 3px;
- font-weight: bold;
- text-transform: uppercase;
+ color: #A3A3A3;
+ font-size: 11px;
+ letter-spacing: 3px;
+ font-weight: bold;
+ text-transform: uppercase;
}
+
.data-date {
- font-weight: normal;
- color: #777;
- font-size: 12px;
- letter-spacing: 1px;
- line-height: 23px;
+ font-weight: normal;
+ color: #777;
+ font-size: 12px;
+ letter-spacing: 1px;
+ line-height: 23px;
}
-.data-dotted {
- vertical-align: top;
-}
-.mail-infoblock-td {
- vertical-align: top;
+
+.data-dotted, .mail-infoblock-td {
+ vertical-align: top;
}
+
.mail-infoblock {
- margin-left: -110px;
- font-size: 12px;
- color: #777;
- border: 1px solid #d9d9d9;
- padding: 0px 5px 12px 20px;
- margin-top: 64px;
- width: 334px;
- overflow: hidden;
+ margin-left: -110px;
+ font-size: 12px;
+ color: #777;
+ border: 1px solid #d9d9d9;
+ padding: 0px 5px 12px 20px;
+ margin-top: 64px;
+ width: 334px;
+ overflow: hidden;
}
.mail-infoblock:hover {
- overflow: visible;
+ overflow: visible;
}
.mail-infoblock td {
- color: #777;
- font-size: 14px;
- height: 18px;
- font-weight: normal;
+ color: #777;
+ font-size: 14px;
+ height: 18px;
+ font-weight: normal;
}
-.mail-infoblock td:first-child{
- padding-right: 15px;
+.mail-infoblock td:first-child {
+ padding-right: 15px;
}
.mail-infoblock div {
- width: 190px;
- white-space: nowrap;
+ width: 190px;
+ white-space: nowrap;
}
.mail-infoblock a {
- color: #2c9491;
+ color: #27c24c;
}
.mail-infoblock a:hover {
- color: #ff6701;
+ color: #9c8cff;
}
.additional-info {
@@ -2904,489 +2875,467 @@ a.button.cancel {
padding-left: 20px;
}
+:focus {
+ outline: none;
+}
-
-:focus {outline:none;}
-::-moz-focus-inner {border:0;}
+::-moz-focus-inner {
+ border: 0;
+}
.login {
- background-color: #fff;
- box-shadow: 0 2px 6px rgba(100, 100, 100, 0.3);
- font-family: Arial,Helvetica,sans-serif;
- margin: 0;
- padding: 0;
- text-align: left;
- vertical-align: top;
- width: 550px;
+ background-color: #fff;
+ box-shadow: 0 2px 6px rgba(100, 100, 100, 0.3);
+ font-family: Arial, Helvetica, sans-serif;
+ margin: 0;
+ padding: 0;
+ text-align: left;
+ vertical-align: top;
+ width: 500px;
+}
+.login a.error {
+ color: #BE5ABF;
}
-.login a.error {
- color: #BE5ABF;
-}
.vestacp {
- color: #505050;
- font-size: 10px;
- text-align: right;
+ color: #505050;
+ font-size: 10px;
+ text-align: right;
}
.vestacp:hover {
- color: #2c9491;
+ color: #27c24c;
}
.vestacp:active {
- color: #ff6701;
+ color: #9c8cff;
}
+
.login-bottom {
- height: 50px;
- margin: 0;
- padding: 0 26px 0 0;
- text-align: right;
- vertical-align: top;
- width: 520px;
+ height: 50px;
+ margin: 0;
+ padding: 0 26px 0 0;
+ text-align: right;
+ vertical-align: top;
+ width: 474px;
}
.l-unit.selected {
- background-color: #feef9a;
- color: #555;
- border-bottom: 1px solid #c0b990;
+ background-color: #feef9a;
+ color: #555;
+ border-bottom: 1px solid #c0b990;
}
-
-.l-unit.selected b,
-.l-unit.selected strong {
- color: #555;
+.l-unit.selected b, .l-unit.selected strong {
+ color: #555;
}
-
/* MAIN MENU COLLAPSED */
.collapsed .l-stat {
- padding-top: 20px;
+ padding-top: 20px;
}
-
.collapsed .l-stat__col a {
- height: 0;
- min-height: 0;
- overflow: hidden;
+ height: 0;
+ min-height: 0;
+ overflow: hidden;
}
-
.collapsed .l-stat__col-title {
- padding-top: 2px;
+ padding-top: 2px;
}
div.l-content.collapsed > div.l-separator:nth-of-type(2) {
- margin-top: 93px;
- position: fixed;
+ margin-top: 93px;
+ position: fixed;
}
-
div.l-content.collapsed > div.l-separator:nth-of-type(4) {
- margin-top: 138px;
- position: fixed;
+ margin-top: 138px;
+ position: fixed;
}
-
div.l-content.collapsed .l-sort {
- margin-top: 94px;
+ margin-top: 94px;
}
.l-content > .units.l-center::before {
- content: '';
- display: block;
- height: 260px;
+ content: "";
+ display: block;
+ height: 260px;
}
form#vstobjects {
- padding-top: 280px;
+ padding-top: 280px;
}
-
form#vstobjects.suspended {
- background-color: #EAEAEA;
- padding-bottom: 30px;
+ background-color: #EAEAEA;
+ padding-bottom: 30px;
}
#add-icon {
- width: 45px;
- height: 45px;
- background-image: url("/images/sprite.png?1446554103");
- background-position: -378px -107px;
- background-repeat: no-repeat;
- display: inline-block;
- z-index: 3;
+ width: 45px;
+ height: 45px;
+ background-image: url("/images/sprite.png?1446554103");
+ background-position: -378px -107px;
+ background-repeat: no-repeat;
+ display: inline-block;
+ z-index: 3;
}
+
.l-sort__create-btn.restore #add-icon {
- background-position: -378px -250px;
+ background-position: -378px -250px;
}
.l-sort__create-btn.edit #add-icon {
- background-position: -378px -154px;
+ background-position: -378px -154px;
}
+
#tooltip {
- background-color: #aacc0d;
- border-radius: 15px;
- bottom: 6px;
- color: #fff;
- font-size: 12px;
- font-weight: bold;
- height: 26px;
- left: 12px;
- letter-spacing: 0;
- line-height: 25px;
- margin-left: 12px;
- margin-top: 7px;
- padding: 3px 14px 3px 27px;
- position: absolute;
- text-transform: uppercase;
- white-space: nowrap;
- word-break: keep-all;
- z-index: -1;
+ background-color: #aacc0d;
+ border-radius: 15px;
+ bottom: 6px;
+ color: #fff;
+ font-size: 12px;
+ font-weight: bold;
+ height: 26px;
+ left: 12px;
+ letter-spacing: 0;
+ line-height: 25px;
+ margin-left: 12px;
+ margin-top: 7px;
+ padding: 3px 14px 3px 27px;
+ position: absolute;
+ text-transform: uppercase;
+ white-space: nowrap;
+ word-break: keep-all;
+ z-index: -1;
}
.l-sort__create-btn:active #add-icon {
- background-position: -425px -107px;
+ background-position: -425px -107px;
}
.l-sort__create-btn.restore:active #add-icon {
- background-position: -425px -250px !important;
+ background-position: -425px -250px !important;
}
-
.l-sort__create-btn.edit:active #add-icon {
- background-position: -425px -154px !important;
+ background-position: -425px -154px !important;
}
-
.l-sort__create-btn.edit:hover #tooltip {
- background-color: #55C9C0;
+ background-color: #23b7e5;
}
.l-sort__create-btn.edit:active #tooltip {
- background-color: #3BF0E6 !important;
+ background-color: #3BF0E6 !important;
}
-
-
-
-
.l-sort__create-btn:active #tooltip {
- background-color: #D9F210;
+ background-color: #D9F210;
}
.noselect {
- -webkit-touch-callout: none;
- -webkit-user-select: none;
- -khtml-user-select: none;
- -moz-user-select: none;
- -ms-user-select: none;
- user-select: none;
+ -webkit-touch-callout: none;
+ -webkit-user-select: none;
+ -khtml-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
}
.search-input {
- background-color: #fff;
- border: 1px solid #ddd;
- height: 21px;
- line-height: 28px;
- padding-left: 7px;
- float: left;
- width: 74px;
-/* visibility: hidden;*/
- -webkit-transition: width .2s ease-out;
- -moz-transition: width .2s ease-out;
- -o-transition: width .2s ease-out;
- transition: width .2s ease-out;
-}
-.lang-ru .search-input.activated{
- width: 70px;
-}
-.search-input.activated{
- width: 130px;
- visibility: visible;
-}
-.search-input:focus {
-// background-color: #e8fcff;
-// border-color: #75c9c2;
-// color: #333;
+ background-color: #fff;
+ border: 1px solid #ddd;
+ height: 21px;
+ line-height: 28px;
+ padding-left: 7px;
+ float: left;
+ width: 74px;
+ /* visibility: hidden;*/
+ -webkit-transition: width 0.2s ease-out;
+ -moz-transition: width 0.2s ease-out;
+ -o-transition: width 0.2s ease-out;
+ transition: width 0.2s ease-out;
}
+.lang-ru .search-input.activated {
+ width: 70px;
+}
+
+.search-input.activated {
+ width: 130px;
+ visibility: visible;
+}
.float-left {
- float: left;
+ float: left;
}
+
.float-right {
- float: right;
+ float: right;
}
+
.display-inline-block {
- display: inline-block;
+ display: inline-block;
}
+
.width-100p {
- width: 100%;
+ width: 100%;
}
.l-sort-toolbar table td {
- float: left;
+ float: left;
}
+
.l-sort-toolbar__search-box {
- float: right !important;
- padding-top: 3px;
- padding-right: 0 !important;
+ float: right !important;
+ padding-top: 3px;
+ padding-right: 0 !important;
}
+
.ui-dialog .ui-dialog-buttonpane button:nth-of-type(2) {
- -background-color: #dfdedd;
+ -background-color: #dde6e9;
}
.shortcuts {
- background: rgba(50, 50, 50, 0.9);
- display: inline-block;
- position: fixed;
- left: 50%;
- bottom: 0;
- color: #eee;
- width: 800px;
- border: 1px solid #333;
- font-size: 13px;
- z-index: 120;
- transform: translate(-50%, 0);
+ background: rgba(50, 50, 50, 0.9);
+ display: inline-block;
+ position: fixed;
+ left: 50%;
+ bottom: 0;
+ color: #eee;
+ width: 800px;
+ border: 1px solid #333;
+ font-size: 13px;
+ z-index: 120;
+ transform: translate(-50%, 0);
}
.shortcuts .header {
- border-bottom: 1px solid #333;
- height: 43px;
+ border-bottom: 1px solid #333;
+ height: 43px;
}
.shortcuts .title {
- text-transform: uppercase;
- color: #ffcc00;
- padding: 7px 0 7px 14px;
- display: inline-block;
- float: left;
- font-size: 11px;
- letter-spacing: 3px;
+ text-transform: uppercase;
+ color: #ffcc00;
+ padding: 7px 0 7px 14px;
+ display: inline-block;
+ float: left;
+ font-size: 11px;
+ letter-spacing: 3px;
}
.shortcuts .close {
- background: url("/images/sprite.png?1446554103") repeat scroll -408px -469px;
- cursor: pointer;
- display: inline-block;
- float: right;
- height: 32px;
- padding-top: 11px;
- width: 46px;
+ background: url("/images/sprite.png?1446554103") repeat scroll -408px -469px;
+ cursor: pointer;
+ display: inline-block;
+ float: right;
+ height: 32px;
+ padding-top: 11px;
+ width: 46px;
}
.shortcuts .close:hover {
- background-color: #000;
+ background-color: #000;
}
.shortcuts .close:active {
- background-color: #55c9c0;
+ background-color: #23b7e5;
}
.shortcuts ul {
- list-style-type: none;
- padding: 30px 20px;
- display: inline-block;
- float: left;
- width: 360px;
+ list-style-type: none;
+ padding: 30px 20px;
+ display: inline-block;
+ float: left;
+ width: 360px;
}
.shortcuts ul li {
- padding: 5px 20px;
+ padding: 5px 20px;
}
.shortcuts ul li.step-top {
- padding-top: 30px;
+ padding-top: 30px;
}
.shortcuts ul li span {
- color: #48F4EF;
- display: inline-block;
- font-weight: bold;
- padding: 0 20px 0 0;
- text-align: right;
-/* width: 140px;*/
+ color: #48F4EF;
+ display: inline-block;
+ font-weight: bold;
+ padding: 0 20px 0 0;
+ text-align: right;
+ /* width: 140px;*/
}
.shortcuts ul li span.bigger {
- font-size: 18px;
+ font-size: 18px;
}
.description {
- font-weight: normal;
- line-height: 25px;
- padding-bottom: 45px;
- margin-left: 50px;
+ font-weight: normal;
+ line-height: 25px;
+ padding-bottom: 45px;
+ margin-left: 50px;
}
-.description ul{
- margin-top: 15px;
- list-style: none;
- padding-left: 0;
+.description ul {
+ margin-top: 15px;
+ list-style: none;
+ padding-left: 0;
}
-
-.description li{
- margin: 10px 0;
+.description li {
+ margin: 10px 0;
}
-
.description a {
- line-height: 30px;
- text-decoration: underline;
- color: #2c9491;
+ line-height: 30px;
+ text-decoration: underline;
+ color: #27c24c;
}
.description a.purchase {
- color: #FFF;
- background-color: #9fbf0c;
- border: none;
- border-radius: 3px;
- font-size: 13px;
- font-weight: bold;
- padding: 7px 15px;;
- text-transform: capitalize;
- text-decoration: none;
+ color: #FFF;
+ background-color: #27c24c;
+ border: none;
+ border-radius: 3px;
+ font-size: 13px;
+ font-weight: bold;
+ padding: 7px 15px;
+ text-transform: capitalize;
+ text-decoration: none;
}
.description a.purchase:hover {
- background-color: #c0e60f;
- color: #555;
+ background-color: #32f360;
+ color: #555;
}
.description a.purchase:active {
- background-color: #D9F210;
- color: #555;
+ background-color: #D9F210;
+ color: #555;
}
-
.description a.cancel {
- background-color: #999;
- border: none;
- border-radius: 3px;
- color: #fff;
- font-size: 13px;
- font-weight: bold;
- padding: 7px 15px;
- text-transform: capitalize;
- text-decoration: none;
+ background-color: #999;
+ border: none;
+ border-radius: 3px;
+ color: #fff;
+ font-size: 13px;
+ font-weight: bold;
+ padding: 7px 15px;
+ text-transform: capitalize;
+ text-decoration: none;
}
.description a.cancel:hover {
- background-color: #2c9491;
+ background-color: #27c24c;
}
.description a.cancel:active {
- background-color: #5f9491;
+ background-color: #5f9491;
}
-
.description.cancel-success {
- color: #8fac0a;
- font-weight: bold;
+ color: #8fac0a;
+ font-weight: bold;
}
-
.description .licence {
- padding: 20px 0;
- color: #2c9491;
+ padding: 20px 0;
+ color: #27c24c;
}
-
.description .licence input {
- margin-left: 17px;
- width: 137px;
+ margin-left: 17px;
+ width: 137px;
}
-
.description span {
- font-style: italic;
- line-height: 45px;
- padding-top: 20px;
+ font-style: italic;
+ line-height: 45px;
+ padding-top: 20px;
}
-
.description .twoco {
- font-style: italic;
- line-height: 15px;
- font-size: 12px;
+ font-style: italic;
+ line-height: 15px;
+ font-size: 12px;
}
.ui-dialog .ui-dialog-content {
- padding: 10px 26px 30px !important;
+ padding: 10px 26px 30px !important;
}
.helper-container {
- float: right;
- height: 293px;
- margin-bottom: -450px;
- margin-top: 459px;
- padding-top: 3px;
- width: 563px;
+ float: right;
+ height: 293px;
+ margin-bottom: -450px;
+ margin-top: 459px;
+ padding-top: 3px;
+ width: 563px;
}
.context-helper {
- text-transform: uppercase;
-# text-decoration: underline;
- color: #777;
- font-size: 11px;
- cursor: pointer;
- font-weight: bold;
- float: right;
+ text-transform: uppercase;
+ color: #777;
+ font-size: 11px;
+ cursor: pointer;
+ font-weight: bold;
+ float: right;
}
.context-helper:hover {
- color: #55C9C0;
+ color: #23b7e5;
}
.context-helper:active {
- color: #ff6701;
+ color: #9c8cff;
}
-
.cron-helper-tabs {
-/* margin-top: 30px;*/
- border: 1px solid #d9d9d9 !important;
+ /* margin-top: 30px;*/
+ border: 1px solid #d9d9d9 !important;
}
-
.cron-helper-tabs a {
- color: #777;
- font-size: 11px;
- font-weight: bold;
- line-height: 30px;
- padding: 0 12px;
- text-transform: uppercase;
+ color: #777;
+ font-size: 11px;
+ font-weight: bold;
+ line-height: 30px;
+ padding: 0 12px;
+ text-transform: uppercase;
}
-
.cron-helper-tabs a:hover {
- color: #ff6701;
+ color: #9c8cff;
}
.cron-helper-tabs a:active {
- color: #55C9C0;
+ color: #23b7e5;
}
.cron-helper-tabs .ui-tabs-selected a {
- color: #ff6701;
+ color: #9c8cff;
}
-
.cron-helper-tabs select {
- font-size: 15px !important;
+ font-size: 15px !important;
}
.cron-helper-tabs select.short {
- background-position: -388px -604px;
- min-width: 30px;
- width: 70px;
+ background-position: -388px -604px;
+ min-width: 30px;
+ width: 70px;
}
-
.cron-helper-tabs p {
- color: #777;
- font-size: 12px;
+ color: #777;
+ font-size: 12px;
}
-.cron-helper-tabs p span{
- padding-right: 15px;
- padding-left: 25px;
+.cron-helper-tabs p span {
+ padding-right: 15px;
+ padding-left: 25px;
}
-.cron-helper-tabs p span.first{
- display: inline-block;
- padding-right: 15px;
- width: 100px;
- padding-left: 0;
+.cron-helper-tabs p span.first {
+ display: inline-block;
+ padding-right: 15px;
+ width: 100px;
+ padding-left: 0;
}
-
.cron-helper-tabs .button {
- width: auto;
- background-color: #55C9C0;
- border: 1px solid #55C9C0;
- text-transform: capitalize;
+ width: auto;
+ background-color: #23b7e5;
+ border: 1px solid #23b7e5;
+ text-transform: capitalize;
}
.cron-helper-tabs .button:hover {
- background-color: #5BD8CF;
- border: 1px solid #5BD8CF;
+ background-color: #00d8ff;
+ border: 1px solid #00d8ff;
}
.cron-helper-tabs .button:active {
- background-color: #4FBCB4;
- border: 1px solid #4FBCB4;
+ background-color: #49c8ef;
+ border: 1px solid #49c8ef;
}
.context-helper-close {
- background: rgba(0, 0, 0, 0) url("/images/sprite.png?1446554103") repeat scroll -408px -469px;
- cursor: pointer;
- display: inline-block;
- float: right;
- height: 32px;
- padding-top: 11px;
- width: 46px;
- filter: contrast(50%);
+ background: rgba(0, 0, 0, 0) url("/images/sprite.png?1446554103") repeat scroll -408px -469px;
+ cursor: pointer;
+ display: inline-block;
+ float: right;
+ height: 32px;
+ padding-top: 11px;
+ width: 46px;
+ filter: contrast(50%);
}
.context-helper-close:hover {
- background-color: #aaa;
- filter: none;
+ background-color: #aaa;
+ filter: none;
}
.context-helper-close:active {
- background-color: #999;
- filter: none;
+ background-color: #999;
+ filter: none;
}
@media screen and (max-width: 950px) {
- .helper-container {
- display: none;
- }
+ .helper-container {
+ display: none;
+ }
}
diff --git a/web/images/myvesta-large-white-130.png b/web/images/myvesta-large-white-130.png
new file mode 100644
index 0000000000000000000000000000000000000000..2007b0bcf7cdd0506f97f510834aee84386c42b8
GIT binary patch
literal 5284
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
literal 0
HcmV?d00001
diff --git a/web/images/sprite.png b/web/images/sprite.png
index 456ab6f8d441083a881bcfca34a77bb118374c79..061392c3677cc4e7d9659d877a407891e538dde4 100644
GIT binary patch
literal 35005
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
literal 57521
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