diff --git a/.gitignore b/.gitignore
index ac74d790..9bb68054 100644
--- a/.gitignore
+++ b/.gitignore
@@ -18,6 +18,7 @@ debian/alternc-slave
debian/alternc-squirrelmail
debian/alternc-upnp
debian/files
+debian/.debhelper
lang/de_DE.po
lang/es_ES.po
lang/fr_FR.po
diff --git a/README.md b/README.md
index 3840fdbb..56295d7d 100644
--- a/README.md
+++ b/README.md
@@ -19,30 +19,30 @@ This project native tongue is French, and the code is commented in English. The
## Developper information
-* This software is built around a Debian package for Jessie whose packaging instructions are located in [debian/](debian/) folder
+* This software is built around a Debian package for Stretch whose packaging instructions are located in [debian/](debian/) folder (this package can be installed on Jessie safely too)
* To **build the packages**, clone this repository in a Debian machine and use `debuild` or `dpkg-buildpackage` from source code root.
-* If you want to **build it for Squeeze**, clone the source and patch it for Squeeze using [squeeze/patch.sh](squeeze/patch.sh) script. You'll be able to use dpkg-buildpackage to build the Wheezy version.
-* If you want to **build it for Wheezy**, clone the source and patch it for Wheezy using [wheezy/patch.sh](wheezy/patch.sh) script. You'll be able to use dpkg-buildpackage to build the Wheezy version.
-
* The web control panel pages written in PHP are located in [bureau/admin](bureau/admin) and the associated PHP classes doing the stuff are in [bureau/class](bureau/class).
## Nightly build
-We have 3 nightly build repositories:
+We have 1 nightly build repositories:
+* stretch - [stable 3.5](http://stable-3-5.nightly.alternc.org/)
+
+and 3 nightly from former Debian releases (now unmaintained)
* jessie - [stable 3.3](http://stable-3-3.nightly.alternc.org/)
* wheezy - [stable 3.2](http://stable-3-2.nightly.alternc.org/)
* squeeze - [stable 3.1](http://stable-3-1.nightly.alternc.org/)
-To use one of them, create a file named `/etc/apt/sources.list.d/alternc-nightly-stable-3.3.list` (for debian jessie) as follow :
+To use one of them, create a file named `/etc/apt/sources.list.d/alternc-nightly-stable-3.5.list` (for debian Jessie or Stretch) as follow :
```
- deb http://stable-3-3.nightly.alternc.org/ latest/
+ deb http://stable-3-5.nightly.alternc.org/ latest/
```
The repository and the packages are signed by the pgp key of AlternC nightly build user :
```
-wget http://stable-3-3.nightly.alternc.org/nightly.key -O - | apt-key add -
+wget http://stable-3-5.nightly.alternc.org/nightly.key -O - | apt-key add -
```
## License
diff --git a/bureau/admin/adm_variables.php b/bureau/admin/adm_variables.php
index 4507dafc..c7d276a8 100755
--- a/bureau/admin/adm_variables.php
+++ b/bureau/admin/adm_variables.php
@@ -59,7 +59,7 @@ foreach( variables_list() as $vars) { ?>
-
+
diff --git a/bureau/admin/dom_edit.inc.php b/bureau/admin/dom_edit.inc.php
index 1b16a315..e69c4de2 100755
--- a/bureau/admin/dom_edit.inc.php
+++ b/bureau/admin/dom_edit.inc.php
@@ -136,7 +136,11 @@ $dom->unlock();
} else {
__("Add this subdomain");
}
-?>" />
+?>" />
+
+ " onclick="document.location = 'dom_edit.php?domain='"/>
+
+
diff --git a/bureau/admin/styles/style.css b/bureau/admin/styles/style.css
index 33b33b32..5c408cd1 100644
--- a/bureau/admin/styles/style.css
+++ b/bureau/admin/styles/style.css
@@ -1,47 +1,128 @@
-html, body {
- margin: 0px;
- padding: 0px;
+:root {
+ --blue: #007bff;
+ --indigo: #6610f2;
+ --purple: #6f42c1;
+ --pink: #e83e8c;
+ --red: #dc3545;
+ --orange: #fd7e14;
+ --yellow: #ffc107;
+ --green: #5cb85c;
+ --teal: #20c997;
+ --cyan: #17a2b8;
+ --white: #fff;
+ --gray: #868e96;
+ --gray-dark: #343a40;
+ --primary: #007bff;
+ --secondary: #868e96;
+ --success: #5cb85c;
+ --info: #17a2b8;
+ --warning: #ffc107;
+ --danger: #dc3545;
+ --light: #f8f9fa;
+ --dark: #343a40;
+ --breakpoint-xs: 0;
+ --breakpoint-sm: 576px;
+ --breakpoint-md: 768px;
+ --breakpoint-lg: 992px;
+ --breakpoint-xl: 1200px;
+ --font-family-sans-serif: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
+ --font-family-monospace: "SFMono-Regular", Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
+}
+
+html {
+ height: 100%;
}
body {
- font-family: Verdana, Arial, Helvetica, sans-serif;
- font-size: 11px;
+ height: 100%;
+ font-family: "Helvetica Neue",Helvetica,Arial,sans-serif;
+ font-size: 14px;
color: #000000;
- background-color: #B2CFE4;
+ background-color: #f0f0f0;
+ margin:0px;
+
}
body.light {
- background-color: #F0F0F4;
+ background-color: #fff;
}
.hlp {
font-family: Helvetica, Tahoma, sans-serif;
- font-size: 11px;
+ font-size: 14px;
color: #202020;
}
table {
- border-collapse: collapse;
+ border-radius: 5px;
+}
+
+.lst2 {
+ /*background-color: #F1F8FD;*/
+ background-color: none;
+}
+.lst1 {
+ background-color: #f9f9f9;
+}
+
+.lst:nth-child(even) {
+ background:#f9f9f9;
+}
+
+.lst:nth-child(odd) {
+ background:none;
+}
+
+thead tr th:hover, table.tlist tbody tr:first-child th:hover {
+ background-color: #f0f0f0 !important;
+}
+
+tbody tr:first-child {
+ border-bottom: 1px solid #eee;
+}
+
+table.tlist > tbody > tr.lst:hover,
+table.tlist > tbody > tr.lst > td:hover,
+form[action="adm_dodel.php"] > table.tlist > tbody > tr:hover,
+form[action="adm_dodel.php"] > table.tlist > tbody > tr > td:hover {
+ background-color: #DFEEF8 !important;
+}
+
+table.tlist > tbody > tr.lst:first-child {
+ background-color: #fff;
+}
+
+table.tlist > thead {
+ border-bottom: 1px solid #eee;
+}
+
+table.tlist > thead + tbody > tr.lst {
+ border-bottom: transparent !important;
+}
+
+tr:hover, td:hover
+{
+ background-color: transparent;
}
td {
- font-family: Verdana, Arial, Helvetica, sans-serif;
- font-size: 11px;
+ font-family: "Helvetica Neue",Helvetica,Arial,sans-serif;
+ font-size: 14px;
color: #000000;
padding-right: 6px;
}
th {
- font-family: Verdana, Arial, Helvetica, sans-serif;
- font-size: 11px;
+ font-family: "Helvetica Neue",Helvetica,Arial,sans-serif;
+ font-size: 14px;
color: black;
- background: #B2CFE4;
- font-weight: normal;
+ background: #f0f0f0;
+ font-weight: bold;
text-align: left;
}
h3 {
- font-family: Verdana, Arial, Helvetica, sans-serif;
+ font-family: "Helvetica Neue",Helvetica,Arial,sans-serif;
font-size: 23px;
font-weight: normal;
color: #444;
@@ -52,12 +133,19 @@ h3 {
word-wrap: break-word;
}
+#content > h3 {
+ padding-bottom: 9px;
+ margin: 20px 0 20px 15px;
+ border-bottom: 1px solid #eee;
+}
+
.trbtn {
text-align: right;
+
}
h4 {
- font-family: Verdana, Arial, Helvetica, sans-serif;
+ font-family: "Helvetica Neue",Helvetica,Arial,sans-serif;
font-size: 16px;
font-weight: bold;
color: #007777
@@ -67,204 +155,367 @@ hr {
/*color: #007799;*/
height: 1px;
/*border: 1px solid #007799;*/
- border: 1px solid #555;
+ border: 1px solid transparent;
border-width: 1px 0 0 0;
}
+#content > hr, #content br {
+ display: none;
+}
+
+.block_login_page br, td br, form > br, p.hlp > br, td br {
+ display: block !important;
+}
+
a {
text-decoration: none;
- color: #0D5689;
+ color: #337ab7;
}
a:hover {
text-decoration: underline;
- color: #000000;
+ color: black;
+ text-decoration: none;
+}
+
+td[style='background: red'], td[style='background: green'], td[style='background: yellow'], td[style='background: orange'] {
+ border-radius: 1000px;
+ display: block;
+ vertical-align: middle;
+ width: 10px;
+ height: 10px;
+}
+
+th:hover {
+ background-color: #DFEEF8;
+}
+
+td[style='padding-right: 2px; border-right: 1px solid black; '], td[style='padding-right: 2px; border-right: 1px solid black; color: red'] {
+ border-right: 1px solid #ddd !important;
+}
+
+.trbtn:hover {
+ background-color: transparent !important;
}
fieldset {
- border: 1px solid #555;
+ border: 1px solid transparent;
}
pre {
overflow: auto;
- background-color: #ddd;
- padding: 10px;
- border: solid 1px #999;
+ background-color: #eee;
+ border: 1px solid transparent;
border-radius: 4px;
-webkit-border-radius: 4px;
-moz-border-radius: 4px;
}
-.inp {
- /* Should not be use anymore !!! */
- border-color: blue;
- border-width: 5px;
- background-color: #500000;
- color: white;
+div.ui-accordion-content > ul {
+ margin-top: 0px !important;
+}
+
+select {
+ border: 1px solid #999;
+ font-family: "Helvetica Neue",Helvetica,Arial,sans-serif;
+ font-size: 13px;
+ color: black;
+ background: white;
+ text-transform: lowercase;
}
.inc, .inl {
- border: 1px solid black;
- font-family: Verdana, Arial, Helvetica, sans-serif;
- font-size: 10px;
- border-style: none;
+ border: 1px solid #999;
+ font-family: "Helvetica Neue",Helvetica,Arial,sans-serif;
+ font-size: 13px;
color: black;
background: white;
}
-.inb {
- -webkit-border-radius: 3px;
- -moz-border-radius: 3px;
- border-radius: 3px;
- border: 1px solid #999;
- font-family: Verdana, Arial, Helvetica, sans-serif;
- font-size: 11px;
- padding: 4px 6px;
- color: black;
- background-color: #CFE3F1;
- cursor: pointer;
- margin-right: 4px;
- height: 25px;
- vertical-align: middle;
-}
-.inb:hover {
- background-color: #BFD3E1;
-}
-.ina a, .ina a:hover, .inb a, .inb a:hover {
- color: #000;
- text-decoration: none;
- vertical-align: middle;
- line-height: 15px;
-}
-input.ui-state-hover {
- font-weight: normal;
+#inp1 {
+ min-width: 50%;
+ margin-top: 5px;
}
-span.inb {
- display: inline-block;
- height: 15px;
- padding: 4px 6px;
+form > br + .inb, form > br + .ina, form > br + .inb + .inb, form > br + .ina + .inb, form > br + .inb + .ina, form > br + .ina + .ina {
+ margin-top: 10px;
}
-input.ina, input.inav {
- border: 1px solid #999;
- font-family: Verdana, Arial, Helvetica, sans-serif;
- font-size: 10px;
- padding: 2px 4px 2px 4px;
- color: black;
- cursor: pointer;
- /*float: right;*/
+p > input#file + br + .inb, p > input#file + br + .inb + .inb {
+ margin-top: 10px;
}
-input.ina:hover, input.ina, input.inav, input.inav:hover {
- border: 1px solid #999;
- font-family: Verdana, Arial, Helvetica, sans-serif;
- font-size: 10px;
- color: black;
- cursor: pointer;
- /*float: right;*/
+.showdirsize_button {
+ margin-top: 10px;
}
-input.ina, .ina a {
- background-color: #F1F8FD;
-}
-input.ina:hover, .ina a:hover,
-input.inav, .inav a {
- background-color: #CFE3F1;
-}
-input.inav:hover, .inav a:hover, a.inav:hover {
- background-color: #F1F8FD;
-}
-
-.ina-active a, a.ina-active, input.ina-active {
- background-color: #C1FFCD;
-}
-
-.ina a, a.ina, .inav a, a.inav {
+input.inb, input.ina{
color: black;
white-space: nowrap;
border: 1px solid #999;
- font-family: Verdana, Arial, Helvetica, sans-serif;
- font-size: 10px;
+ font-family: "Helvetica Neue",Helvetica,Arial,sans-serif;
+ font-size: 14px;
+ padding: 4px 10px 4px 0px;
+ cursor: pointer;
+ -webkit-border-radius: 5px;
+ -moz-border-radius: 5px;
+ border-radius: 5px;
+ vertical-align: middle;
+ padding-left: 10px;
+ height: auto;
+}
+
+input.inb:hover, input.ina:hover {
+ border: 1px solid #999;
+ text-decoration: none;
+ background-color: #F0F0F0;
+}
+
+input.inb:focus, input.ina.focus {
+ box-shadow: 0 0 0 0.2rem inbrgba(40, 167, 69, 0.5);
+}
+
+.inb.disabled, .inb:disabled {
+ background-color: #5cb85c;
+ border-color: #5cb85c;
+}
+
+
+.cancel.inb:not([disabled]):not(.disabled):active:, .cancel.inb:not([disabled]):not(.disabled).active,
+.cancel.show > .inb.dropdown-toggle {
+ color: #fff;
+ background-color: #f0ad4e;
+ border-color: #eea236;
+}
+
+input.inb.cancel:active {
+ color: #fff;
+ background-color: #f0ad4e;
+ border-color: #eea236;
+}
+
+.cancel:active{
+ color: #fff;
+ background-color: #f0ad4e;
+ border-color: #eea236;
+}
+
+.delete.inb:not([disabled]):not(.disabled):active, .delete.inb:not([disabled]):not(.disabled).active,
+.delete.show > .inb.dropdown-toggle {
+ color: #fff;
+ background-color: #d9534f;
+ border-color: #d43f3a;
+}
+
+input.inb.delete:active {
+ color: #fff;
+ background-color: #d9534f;
+ border-color: #d43f3a;
+
+}
+
+.ok.inb:not([disabled]):not(.disabled):active, .ok.inb:not([disabled]):not(.disabled).active,
+.ok.show > .inb.dropdown-toggle {
+ color: #fff;
+ background-color: #449d44;
+ border-color: #255625;
+}
+
+input.inb.ok:active {
+ color: #fff;
+ background-color: #449d44;
+ border-color: #255625;
+}
+
+.add.inb:not([disabled]):not(.disabled):active, .add.inb:not([disabled]):not(.disabled).active,
+.add.show > .inb.dropdown-toggle {
+ color: #fff;
+ background-color: #449d44;
+ border-color: #255625;
+}
+
+input.inb.add:active {
+ color: #fff;
+ background-color: #449d44;
+ border-color: #255625;
+}
+
+input.ui-state-hover {
+ font-weight: normal;
+}
+
+input.ina, input.inav,
+input.ina:hover, input.inav:hover {
+ border: 1px solid #999;
+ font-family: "Helvetica Neue",Helvetica,Arial,sans-serif;
+ font-size: 14px;
+ color: black;
+ cursor: pointer;
+}
+
+input.ina[name="actdel"], input.ina[name="actrename"], input.ina[name="actperms"], input.ina[name="actcopy"], input.ina[name="actmove"] {
+ padding-top: 5px;
+ padding-bottom: 4px;
+}
+
+input.ina, .ina a, .inb a, input.inb, input.ina,
+input.inav, .inav a {
+ background-color: #fff;
+}
+
+input.inav:hover, .inav a:hover, a.inav:hover,
+input.ina:hover, .ina a:hover, .inb a:hover {
+ background-color: #F0F0F0;
+}
+
+.ina a, a.ina, .inb a, a.inb,.inav a, a.inav {
+ color: black;
+ white-space: nowrap;
+ border: 1px solid #999;
+ font-family: "Helvetica Neue",Helvetica,Arial,sans-serif;
+ font-size: 14px;
padding: 4px 10px;
color: black;
cursor: pointer;
- -webkit-border-radius: 3px;
- -moz-border-radius: 3px;
- border-radius: 3px;
- display: inline-block;
+ -webkit-border-radius: 5px;
+ -moz-border-radius: 5px;
+ border-radius: 5px;
vertical-align: middle;
- line-height: 15px;
- height: 15px;
-}
-
-.inb a, a.inb {
- padding: 4px 10px;
-}
-
-input[type=button],
-input[type=submit] {
- -webkit-border-radius: 3px;
- -moz-border-radius: 3px;
- border-radius: 3px;
+ line-height: 23px;
height: 25px;
}
-.ina a:hover, a.ina:hover, .inav a:hover, a.inav:hover {
+
+#emaildom.int, #newsubname.int, #create_dom_list {
+ border-top-left-radius: 0px;
+ border-bottom-left-radius: 0px;
+ padding-right: 10px;
+}
+
+#tabsdom-addsub #newsubname.int {
+ border-top-left-radius: 0px;
+ border-bottom-left-radius: 0px;
+ padding-right: 10px;
+ display: inline-table;
+ padding-top: 0.23em;
+ padding-bottom: 0.23em;
+}
+
+span#newsubname {
+ border-top-left-radius: 0px;
+ border-bottom-left-radius: 0px;
+ padding-right: 10px;
+ display: inline-table;
+ padding-top: 0.28em;
+ padding-bottom: 0.18em;
+}
+
+.int#sub, .int#mail_arg {
+ border-top-right-radius: 0px;
+ border-bottom-right-radius: 0px;
+ display: inline-table;
+}
+
+.ina a:hover, a.ina:hover, .inb a:hover, a.inb:hover,.inav a:hover, a.inav:hover {
text-decoration: none;
color: black;
}
-.ina img, .ina img {
+.ina img, .inb img {
vertical-align: middle;
padding: 0 2px 0 0;
float: left;
}
.bff {
border: 1px solid #999;
- background-color: #F1F8FD;
- font-family: Verdana, Arial, Helvetica, sans-serif;
- font-size: 10px;
+ background-color: #F0F0F0;
+ font-family: "Helvetica Neue",Helvetica,Arial,sans-serif;
+ font-size: 13px;
padding-left: 2px;
padding-right: 4px;
color: black;
cursor: pointer;
}
-.int {
- border: 1px dotted black;
- background-color: white;
- font-family: Verdana, Arial, Helvetica, sans-serif;
- font-size: 11px;
- padding: 2px;
+
+form[action='adm_dodefquotas.php'] table {
+ border-color: transparent;
}
+
+.int {
+ font-size: 14px;
+ line-height: 1.4;
+ color: #555;
+ background-color: #fff;
+ background-image: none;
+ border: 1px solid #ccc;
+ border-radius: 4px;
+ transition: border-color ease-in-out .15s,box-shadow ease-in-out .15s;
+ min-height: 2em;
+ padding-left: 6px;
+ padding-right: 6px;
+}
+
+span.intleft, #usernpfx, #newdomwww {
+ border: 0; /* disabled, not compatible with bootstrap */
+}
+
+form#formlist1 > span.int.intleft {
+ padding-bottom: 0.14em;
+ padding-top: 0.43em;
+}
+
+input[name="domain_id"] + input.inb.add {
+ margin-top: -4px;
+}
+
+#create_dom_list_pfx {
+ border-top-right-radius: 0px;
+ border-bottom-right-radius: 0px;
+ border-right: 0;
+ padding-bottom: 5px;
+ padding-top: 3px;
+ padding-right: 10px;
+ padding-left: 10px;
+ padding-right: 0px;
+}
+
+#usern, #newdomain {
+ border-top-left-radius: 0px;
+ border-bottom-left-radius: 0px;
+}
+
+span.intright {
+ border-top-left-radius: 0px;
+ border-bottom-left-radius: 0px;
+ padding-bottom: 4px;
+ padding-top: 3px;
+ padding-right: 10px;
+}
+
+input.intleft {
+ border-top-right-radius: 0px;
+ border-bottom-right-radius: 0px;
+}
+
+input.intright {
+ border-top-left-radius: 0px;
+ border-bottom-left-radius: 0px;
+}
+
+input.int[name="userfile"] {
+ padding-top: 5px;
+ padding-bottom: 2px;
+}
+
.intleft {
border-right: 0px;
padding-right: 0px;
}
+
.intright {
border-left: 0px;
padding-left: 0px;
}
-.lst2 {
- /*background-color: #F1F8FD;*/
- background-color: #E7F0F9;
-}
-.lst1 {
- background-color: #CFE3F1;
-}
-
-.lst:nth-child(even) { background:#E7F0F9; }
-.lst:nth-child(odd) { background:#CFE3F1; }
-
-.dlogin {
- text-align: center;
-}
-
-.login {
- margin-left: auto;
- margin-right: auto;
-}
-
img {
border: 0px;
vertical-align: middle;
@@ -272,81 +523,83 @@ img {
/* Alerts */
.alert {
- border: 1px solid transparent;
- border-radius: 4px 4px 4px 4px;
- margin-bottom: 20px;
- padding: 15px;
+ border: 1px solid transparent;
+ border-radius: 4px 4px 4px 4px;
+ margin-bottom: 20px;
+ padding: 15px;
}
.alert h4 {
- color: inherit;
- margin-top: 0;
+ color: inherit;
+ margin-top: 0;
}
.alert .alert-link {
- font-weight: bold;
+ font-weight: bold;
}
.alert > p, .alert > ul {
- margin-bottom: 0;
- margin-top: 0;
+ margin-bottom: 0;
+ margin-top: 0;
}
.alert > p + p {
- margin-top: 5px;
+ margin-top: 5px;
}
.alert-dismissable {
- padding-right: 35px;
+ padding-right: 35px;
}
.alert-dismissable .close {
- color: inherit;
- position: relative;
- right: -21px;
- top: -2px;
+ color: inherit;
+ position: relative;
+ right: -21px;
+ top: -2px;
}
.alert-success {
- background-color: #DFF0D8;
- border-color: #D6E9C6;
- color: #356635;
+ background-color: #DFF0D8;
+ border-color: #D6E9C6;
+ color: #356635;
}
.alert-success hr {
- border-top-color: #C9E2B3;
+ border-top-color: #C9E2B3;
}
.alert-success .alert-link,
.alert-success a{
- color: #234323;
+ color: #234323;
}
+
.alert-info {
- background-color: #D9EDF7;
- border-color: #BCE8F1;
- color: #2D6987;}
+ background-color: #D9EDF7;
+ border-color: #BCE8F1;
+ color: #2D6987;
+}
.alert-info hr {
- border-top-color: #A6E1EC;
+ border-top-color: #A6E1EC;
}
.alert-info .alert-link,
.alert-info a
{
- color: #193B4D;
+ color: #193B4D;
}
.alert-warning {
- background-color: #FCF8E3;
- border-color: #FBEED5;
- color: #A47E3C;
+ background-color: #FCF8E3;
+ border-color: #FBEED5;
+ color: #A47E3C;
}
.alert-warning hr {
- border-top-color: #F8E5BE;
+ border-top-color: #F8E5BE;
}
.alert-warning .alert-link,
.alert-warning a {
- color: #6C5228;
+ color: #6C5228;
}
.alert-danger {
- background-color: #F2DEDE;
- border-color: #EED3D7;
- color: #953B39;
+ background-color: #F2DEDE;
+ border-color: #EED3D7;
+ color: #953B39;
}
.alert-danger hr {
- border-top-color: #E6C1C7;
+ border-top-color: #E6C1C7;
}
.alert-danger .alert-link,
.alert-danger a{
- color: #6F2B2A;
+ color: #6F2B2A;
}
.alert-danger-tr {
background-color: #F2DEDE !important;
@@ -355,24 +608,23 @@ img {
/* Alert icons */
#content .alert {
- background-position: 12px center;
- background-repeat: no-repeat;
- padding-left: 48px;
+ background-position: 12px center;
+ background-repeat: no-repeat;
+ padding-left: 48px;
}
#content .alert-danger {
- background-image: url("../images/danger.png");
+ background-image: url("../images/danger.png");
}
#content .alert-info{
- background-image: url("../images/info.png");
+ background-image: url("../images/info.png");
}
#content .alert-success {
- background-image: url("../images/success.png");
+ background-image: url("../images/success.png");
}
#content .alert-warning {
- background-image: url("../images/warning.png");
+ background-image: url("../images/warning.png");
}
-
.alerte {
color: #A00;
font-style: italic;
@@ -398,24 +650,21 @@ img {
text-align: center;
}
+ul > li > a > span > img {
+ display: none;
+}
+
#global {
display: block;
- margin-left: auto;
- margin-right: auto;
- margin-top: 20px;
- margin-bottom: 20px;
width: 1020px;
- border: 1px solid #888;
- -webkit-border-radius: 10px;
- -moz-border-radius: 10px;
- border-radius: 10px;
- box-shadow: 1px 1px 15px #555;
- background-color: #F0F0F4;
+ border: 1px solid #ddd;
+ background-color: #fff;
+ border: 0;
+ min-height: 100%;
}
@media screen and (min-width: 1000px) {
#global {
- margin: 20px 50px;
width: auto;
display: flex;
}
@@ -430,76 +679,105 @@ img {
#menu {
display: block;
- border-right: 1px solid #888;
- padding: 0;
+ border-right: 1px solid #ddd;
+ border-bottom: transparent;
+ padding: 0px;
+
}
#content {
display: block;
- width: 770px;
float: right;
- margin-left: 10px;
- padding-right: 10px;
+ padding: 10px;
vertical-align: top;
+ background-color: #fff;
+
}
.clearfix:after {
- visibility: hidden;
- display: block;
- content: "";
- clear: both;
- height: 0;
- }
+ visibility: hidden;
+ display: block;
+ content: "";
+ clear: both;
+}
+
+a[href="ftp_edit.php?create=1"], a[href="httpperm_list.php"] {
+ margin-left: -4px;
+}
+
+form[action="mman_edit.php"] > table > tbody > tr.lst1:hover, form[action="mman_edit.php"] > table > tbody > tr.lst2:hover {
+ background-color: #DFEEF8;
+}
/* Menu */
#menu {
display: block;
+ background-color: #f0f0f0;
float: left;
padding: 0px;
margin: 0px;
- width: 200px;
- padding-right: 10px;
- padding-bottom: 10px;
- padding-left: 10px;
- border-radius: 10px 0 0 10px;
- -webkit-border-radius: 10px 0 0 10px;
- -moz-border-radius: 10px 0 0 10px;
+ width: 250px;
+}
+
+.menu-title:active {
+ background-color: #DFEEF8;
+}
+
+#menu-dom:active {
+ background-color: #DFEEF8;
+}
+
+.block_login_page .menu-box {
+ font-size: 14px;
+ background-color: #fff;
+ border: 1px solid #ddd;
+ border-radius: 5px;
+ -webkit-box-shadow: 0 1px 1px rgba(0,0,0,.05);
+ box-shadow: 0 1px 1px rgba(0,0,0,.05);
+}
+
+.menu-box a .menu-title {
+ border-bottom: 1px solid #e7e7e7;
+}
+
+.menu-box li:last-child {
+ border-bottom: 1px solid #e7e7e7;
}
.menu-box {
- margin-bottom: 10px;
- font-size: 11px;
- background-color: #F4F4FA;
- border: 1px solid #888;
- box-shadow: 1px 1px 5px #888;
- border-radius: 4px 4px 0 0;
- -webkit-border-radius: 4px 4px 0 0;
- -moz-border-radius: 4px 4px 0 0;
+ font-size: 14px;
+ background-color: #f0f0f0;
+ border-top-color: transparent;
+ height: auto;
}
.menu-box .menu-title {
display: block;
color: #000000;
- border-bottom: 2px solid #AAA;
- background-color: #CFE3F1;
+ background-color: #f0f0f0;
padding: 3px;
- -webkit-border-radius: 4px 4px 0 0;
- -moz-border-radius: 4px 4px 0 0;
- border-radius: 4px 4px 0 0;
}
.menu-box a .menu-title {
- min-height: 16px;
+ min-height: 30px;
+ padding-top: 7px;
}
.menu-box .menu-conmargin {
margin: 0 5px 5px 5px;
}
+.menu-content {
+ background: white;
+}
+.menu-content ul li a span {
+ margin-left: 22px;
+}
+
.menu-box ul {
margin: 0px;
- padding: 5px 0 5px 0;
+ padding: 0px;
list-style-type: none;
}
@@ -508,7 +786,7 @@ img {
.menu-box a {
text-decoration: none;
- color: #0D5689;
+ color: #337ab7;
}
.menu-box a:hover,
@@ -517,15 +795,20 @@ img {
background-color: #DFEEF8;
}
+.menu-box a:focus,
+.menu-box a:focus .menu-title {
+ text-decoration: none;
+ background-color: #DFEEF8;
+}
+
.menu-box li a {
display: block;
padding: 5px 5px 5px 10px;
- color: #0D5689;
+ color: #444;
text-decoration: none;
border: 1px solid transparent;
border-width: 1px 0;
- line-height: 0.75em;
- height: 10px;
+ height: 25px;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
@@ -545,7 +828,6 @@ img {
.menu-box li a:hover {
color: #000000;
- border: 1px solid #C1D8E9;
border-width: 1px 0;
text-decoration: none;
background-color: #DFEEF8;
@@ -580,8 +862,7 @@ img {
}
table.searchtable {
- width: 700px;
- border: 1px dotted #99f;
+ width: 900px;
margin: 20px 0 20px 0px;
}
@@ -594,6 +875,11 @@ table.searchtable td {
text-align: center;
margin-left: auto;
margin-right: auto;
+ bottom: 0;
+}
+
+#content > .center {
+ display: none;
}
.border {
@@ -606,11 +892,12 @@ table.searchtable td {
#sendthisfile {
+ display: flex;
margin-top: 6px;
}
.breadcrumb {
- font-size: 12px;
+ font-size: 14px;
}
@@ -623,17 +910,11 @@ table.searchtable td {
padding-left: 0;
}
-#create_dom_list_pfx {
- border-right: 0;
- padding: 3px;
-}
#create_dom_list {
border-left: 0;
padding-left: 0;
}
-
-
input#email {
border-right: 0;
padding-right: 0;
@@ -643,28 +924,32 @@ input#email {
span#emaildom {
border-left: 0;
padding-left: 2px;
+ display: inline-table;
+ padding-top: 0.28em;
+ padding-bottom: 0.18em;
}
-.tedit {
- border: 1px solid #aaa;
- padding: 6px;
- margin: 0;
- border-collapse: collapse;
- }
-.tedit td, .tedit th {
+.tedit {
+ border: 1px solid #aaa;
+ padding: 6px;
+ margin: 0;
+ border-collapse: collapse;
+ border: 1px solid #ddd;
+ border-radius: 5px;
+}
+.tedit td, .tedit th {
border: 1px solid #aaa;
padding: 10px;
- margin: 0;
+ margin: 0;
}
-.formcell {
+.formcell {
vertical-align: top;
- border: 1px solid #aaa;
padding: 10px;
}
.tlist, .tlist td, .tlist th,
-.tlist2, .tlist2 td, .tlist2 th {
+.tlist2, .tlist2 td, .tlist2 th {
padding: 4px;
margin: 0;
border-collapse: collapse;
@@ -672,33 +957,25 @@ span#emaildom {
.tlist {
width: 100%;
- border: 1px solid #C1D8E9;
+ border: 1px solid #ddd;
}
-.tlistb, .tlistb td, .tlistb th {
+.tlistb, .tlistb td, .tlistb th {
padding: 4px;
margin: 0;
border-collapse: collapse;
}
-table.tlistb, .tlistb tr {
- border: solid 1px #C1D8E9;
+table.tlistb, .tlistb tr, form > table {
+ border: 1px solid transparent;
}
-.tlist tr:hover, .tlist2 tr:hover {
- background-color: #F1D5CF;
-}
-
-.tlist th, .tlist2 th {
- font-size: 125%;
-}
-
-input#dir, input#sub_local {
+input#dir, input#sub_local {
width: 200px;
}
.tab-ok {
- background-color: lightgreen;
+ background-color: green;
}
.tab-err {
background-color: red;
@@ -728,17 +1005,18 @@ input#dir, input#sub_local {
}
.retour-auto {
- max-width:220px;
+ max-width:220px;
word-wrap:break-word;
}
.menutoplogo {
- margin: 10px 0 0 5px;
+ top : 0;
+ margin: 20px 30px;
width: 190px;
}
.currentuser {
- margin: 5px 5px 10px 5px;
+ margin: 25px 5px 10px 5px;
color:#444;
}
@@ -753,8 +1031,10 @@ input#dir, input#sub_local {
.menu-quota div.progress-bar {
width: 180px;
background: #fff;
- border: solid 1px #AAA;
+ color: white;
+ border: 1px solid transparent;
margin-left: 10px;
+ display: none;
}
div.progress-bar {
@@ -762,11 +1042,11 @@ div.progress-bar {
width: 100%;
height: 20px;
background-color: #fff;
- border: solid 1px #aaa;
+ border: 1px solid transparent;
overflow: hidden;
-webkit-border-radius: 4px;
-moz-border-radius: 4px;
- border-radius: 4px;
+ border-radius: 4px;
}
div.progress-bar div.barre {
@@ -780,15 +1060,13 @@ div.progress-bar div.barre {
div.progress-bar div.txt {
position: absolute;
- top: 3px;
left: 0;
width: 100%;
- text-align:center;
+ text-align:center;
}
.ombrage {
- border: 1px solid #888;
- box-shadow: 1px 1px 15px #555;
+ border: 1px solid #ddd;
}
.petit,
@@ -799,271 +1077,395 @@ div.progress-bar div.txt {
}
#adm_panel li, #adm_panel_root li {
- padding: 4px 0 4px 0;
+ padding: 4px 0 4px 0;
}
#adm_panel li:hover, #adm_panel_root li:hover {
- background-color: #BFD3E1;
+ background-color: #DFEEF8;
}
.edit a, a.edit, input.edit {
background-image: url(../images/edit.png);
background-repeat: no-repeat;
- background-position: 8px 3px;
+ background-position: 8px 5px;
padding-left: 30px;
}
.view a, a.view, input.view {
background-image: url(../images/code.png);
background-repeat: no-repeat;
- background-position: 8px 3px;
- padding-left: 30px;
-}
-
-.delete a, a.delete, input.delete {
- background-image: url(../icon/delete.png);
- background-repeat: no-repeat;
- background-position: 8px 3px;
+ background-position: 8px 5px;
padding-left: 30px;
}
.lock a, a.lock, input.lock {
background-image: url(../icon/encrypted.png);
background-repeat: no-repeat;
- background-position: 8px 3px;
+ background-position: 8px 5px;
padding-left: 30px;
}
.settings a, a.settings, input.settings {
background-image: url(../icon/settings.png);
background-repeat: no-repeat;
- background-position: 8px 3px;
+ background-position: 8px 5px;
padding-left: 30px;
}
.ok a, a.ok, input.ok {
background-image: url(../icon/ok.png);
background-repeat: no-repeat;
- background-position: 8px 3px;
+ background-position: 8px 5px;
padding-left: 30px;
+ color: #fff;
+ background-color: #5cb85c;
+ border-color: #4cae4c;
+}
+
+input.ok:hover, input.ok:focus {
+ background-image: url(../icon/ok.png);
+ background-repeat: no-repeat;
+ background-position: 8px 5px;
+ padding-left: 30px;
+ color: #fff;
+ background-color: #449d44;
+ border-color: #398439;
+}
+
+input[value="Supprimer les utilisateurs cochés"],
+input[value="Delete the checked users"] {
+ margin-bottom: 10px;
+}
+
+.add a, a.add,
+input.add, span.add .ina {
+ background-image: url(../icon/add.png);
+ background-repeat: no-repeat;
+ background-position: 8px 5px;
+ padding-left: 30px;
+}
+
+div.add > a:hover,
+div > .add a:hover, p > a.add:hover {
+ color: #fff;
+ background-color: #5cb85c;
+ border-color: #4cae4c;
+}
+
+input.add:hover, input.add:focus {
+ background-image: url(../icon/add.png);
+ background-repeat: no-repeat;
+ background-position: 8px 5px;
+ padding-left: 30px;
+ color: #fff;
+ background-color: #449d44;
+ border-color: #398439;
+}
+
+.delete a, a.delete, input.delete {
+ background-image: url(../icon/delete.png);
+ background-repeat: no-repeat;
+ background-position: 8px 5px;
+ padding-left: 30px;
+}
+
+div.delete a:hover,
+div > .delete a:hover, p > a.delete:hover {
+ color: #fff;
+ background-color: #d9534f;
+ border-color: #d43f3a;
+}
+
+input.delete:hover, input.delete:focus {
+ background-image: url(../icon/delete.png);
+ background-repeat: no-repeat;
+ background-position: 8px 5px;
+ padding-left: 30px;
+ color: #fff;
+ background-color: #d9534f;
+ border-color: #d43f3a;
}
.cancel a, a.cancel, input.cancel {
background-image: url(../icon/cancel.png);
background-repeat: no-repeat;
- background-position: 8px 3px;
+ background-position: 8px 5px;
padding-left: 30px;
}
-.add a, a.add, input.add {
- background-image: url(../icon/add.png);
+input.cancel:hover {
+ background-image: url(../icon/cancel.png);
background-repeat: no-repeat;
- background-position: 8px 3px;
+ background-position: 8px 5px;
padding-left: 30px;
+ background-color: #fcf8e3;
+}
+
+input.cancel:active {
+ background-image: url(../icon/cancel.png);
+ background-repeat: no-repeat;
+ background-position: 8px 5px;
+ padding-left: 30px;
+ background-color: #f0ad4e;
+ border-color: #eea236;
+}
+
+.inb[name='cancel']:active {
+ background-color: #f0ad4e;
+ border-color: #eea236;
+}
+.inb[name='cancel']:hover {
+ background-color: #fcf8e3;
+}
+
+.inb[name='select']:active {
+ background-color: #449d44;
+ border-color: #255625;
+}
+.inb[name='select']:hover {
+ background-color: #dff0d8;
}
.configure a, a.configure, input.configure {
background-image: url(../icon/configure.png);
background-repeat: no-repeat;
- background-position: 8px 3px;
+ background-position: 8px 5px;
padding-left: 30px;
}
.edit a, a.edit, input.edit {
background-image: url(../icon/edit.png);
background-repeat: no-repeat;
- background-position: 8px 3px;
+ background-position: 8px 5px;
padding-left: 30px;
}
.save a, a.save, input.save {
background-image: url(../icon/save.png);
background-repeat: no-repeat;
- background-position: 8px 3px;
+ background-position: 8px 5px;
padding-left: 30px;
}
.down a, a.down, input.down {
background-image: url(../icon/save.png);
background-repeat: no-repeat;
- background-position: 8px 3px;
+ background-position: 8px 5px;
padding-left: 30px;
}
.up a, a.up, input.up {
background-image: url(../icon/up.png);
background-repeat: no-repeat;
- background-position: 8px 3px;
+ background-position: 8px 5px;
padding-left: 30px;
+ padding-top: 5px;
+ padding-bottom: 5px;
+}
+
+.up a:hover, a.up:hover, input.up:hover {
+ background-image: url(../icon/up.png);
+ background-repeat: no-repeat;
+ background-position: 8px 5px;
+ padding-left: 30px;
+ padding-top: 5px;
+ padding-bottom: 5px;
+}
+
+#btb1.ina {
+ padding-top: 5px;
+ padding-bottom: 4px;
}
.back a, a.back, input.back {
background-image: url(../icon/back.png);
background-repeat: no-repeat;
- background-position: 8px 3px;
+ background-position: 8px 5px;
padding-left: 30px;
}
.admin a, a.admin, input.admin, .admin-menu .menu-title {
background-image: url(../images/admin.png);
background-repeat: no-repeat;
- background-position: 8px 3px;
+ background-position: 8px 10px;
padding-left: 30px;
}
.home a, a.home, input.home, .home-menu .menu-title {
background-image: url(../images/home.png);
background-repeat: no-repeat;
- background-position: 8px 3px;
+ background-position: 8px 10px;
padding-left: 30px;
+ margin-top: 10px;
+ border-top: 1px solid #ddd;
}
.dom a, a.dom, input.dom, .dom-menu .menu-title {
background-image: url(../images/dom.png);
background-repeat: no-repeat;
- background-position: 8px 3px;
+ background-position: 8px 10px;
padding-left: 30px;
}
.mail a, a.mail, input.mail, .mail-menu .menu-title {
background-image: url(../images/mail.png);
background-repeat: no-repeat;
- background-position: 8px 3px;
+ background-position: 8px 10px;
padding-left: 30px;
}
.bro a, a.bro, input.bro, .bro-menu .menu-title {
background-image: url(../images/folder.png);
background-repeat: no-repeat;
- background-position: 8px 3px;
+ background-position: 8px 10px;
padding-left: 30px;
}
.hta a, a.hta, input.hta, .hta-menu .menu-title {
background-image: url(../images/password.png);
background-repeat: no-repeat;
- background-position: 8px 3px;
+ background-position: 8px 10px;
padding-left: 30px;
}
.ftp a, a.ftp, input.ftp, .ftp-menu .menu-title {
background-image: url(../images/ftp.png);
background-repeat: no-repeat;
- background-position: 8px 3px;
+ background-position: 8px 10px;
padding-left: 30px;
}
.cron a, a.cron, input.cron, .cron-menu .menu-title {
background-image: url(../images/schedule.png);
background-repeat: no-repeat;
- background-position: 8px 3px;
+ background-position: 8px 10px;
padding-left: 30px;
}
.lxc a, a.lxc, input.lxc, .lxc-menu .menu-title {
background-image: url(../images/ssh.png);
background-repeat: no-repeat;
- background-position: 8px 3px;
+ background-position: 8px 10px;
padding-left: 30px;
}
.mysql a, a.mysql, input.mysql, .mysql-menu .menu-title {
background-image: url(../images/mysql.png);
background-repeat: no-repeat;
- background-position: 8px 3px;
+ background-position: 8px 10px;
padding-left: 30px;
}
.quota a, a.quota, input.quota, .quota-menu .menu-title {
background-image: url(../images/quota.png);
background-repeat: no-repeat;
- background-position: 8px 3px;
+ background-position: 8px 10px;
padding-left: 30px;
}
.authip a, a.authip, input.authip, .authip-menu .menu-title {
background-image: url(../images/ip.png);
background-repeat: no-repeat;
- background-position: 8px 3px;
+ background-position: 8px 10px;
padding-left: 30px;
}
.log a, a.log, input.log, .log-menu .menu-title {
background-image: url(../images/logs.png);
background-repeat: no-repeat;
- background-position: 8px 3px;
+ background-position: 8px 10px;
padding-left: 30px;
}
.help a, a.help, input.help, .help-menu .menu-title {
background-image: url(../images/help.png);
background-repeat: no-repeat;
- background-position: 8px 3px;
+ background-position: 8px 10px;
padding-left: 30px;
}
.lang a, a.lang, input.lang, .lang-menu .menu-title {
background-image: url(../images/lang.png);
background-repeat: no-repeat;
- background-position: 8px 3px;
+ background-position: 8px 10px;
padding-left: 30px;
}
.mem a, a.mem, input.mem, .mem-menu .menu-title {
background-image: url(../images/settings.png);
background-repeat: no-repeat;
- background-position: 8px 3px;
+ background-position: 8px 10px;
padding-left: 30px;
}
-.logout a, a.logout, input.logout, .logout-menu .menu-title {
- background-image: url(../images/exit.png);
- background-repeat: no-repeat;
- background-position: 8px 3px;
- padding-left: 30px;
-}
-.ssl a, a.ssl, input.ssl, .ssl-menu .menu-title {
- background-image: url(../images/ssl.png);
- background-repeat: no-repeat;
- background-position: 8px 3px;
- padding-left: 30px;
-}
.filter a, a.edit, input.filter {
background-image: url(../icon/filter.png);
background-repeat: no-repeat;
- background-position: 8px 3px;
+ background-position: 8px 5px;
padding-left: 30px;
}
+
/* Jquery-ui */
+body .ui-tabs {
+ padding: 0em;
+ border: transparent;
+}
+
body .ui-widget-content {
-/* margin-top: 15px; */
+ margin-top: 15px;
+ background: #fff;
+}
+
+#b1 {
+ display:contents;
+ background: #fff;
+}
+
+#browseiframe {
+ padding: 20px;
}
body .ui-widget-header {
- background: #CFE3F1;
+ background: #fff;
+ border: 1px solid transparent;
+ border-bottom-color: #ddd;
+ border-radius: 4px 4px 0 0;
}
body .ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited {
- color: #0D5689;
+ color: #337ab7;
}
body .ui-state-default, body .ui-widget-content .ui-state-default, body .ui-widget-header .ui-state-default {
- background: #F0F0F4;
+ background: #fff;
+ border: 1px solid transparent;
}
body .ui-state-active, body .ui-widget-content, body .ui-state-active, body .ui-widget-header .ui-state-active {
- background: #F0F0F4;
+ color: #555;
+ cursor: default;
+ background-color: #fff;
+ border: 1px solid #ddd;
+}
+
+body .ui-accordion .ui-accordion-content {
+ padding: 0 !important;
+ margin: 0 !important;
+ border: 0;
+ border-radius: 0;
+ border-bottom: 1px solid #ddd;
}
body .ui-state-active a, body .ui-state-active a:link {
- color: black;
+ color: #555;
}
body .ui-tabs .ui-tabs-panel {
- background: #F0F0F4;
+ background: #fff;
+ margin: 0 !important;
}
body .ui-tabs .ui-tabs-nav li a {
@@ -1081,7 +1483,15 @@ body .ui-dialog .ui-dialog-title {
}
body .ui-widget-content a {
- color: #0D5689;
+ color: #337ab7;
+}
+
+li.ui-state-hover[aria-selected='false'] {
+ background: #eee;
+}
+
+li.ui-state-active[role='tab'] {
+ border-bottom-color: transparent;
}
.ui-tabs .ui-tabs-nav li.ui-tabs-active a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-tabs-loading a {
@@ -1093,121 +1503,278 @@ body .ui-widget-content a {
}
.info-toggle {
- background: none repeat scroll 0 0 #CFE3F1;
+ background: none repeat scroll 0 0 #f5f5f5;
border: 1px solid #CCCCCC;
border-radius: 15px 15px 15px 15px;
margin: 16px 0;
padding: 0 16px;
}
+th.headerSortUp {
+ background-image: url(../images/asc.gif);
+ background-repeat: no-repeat;
+ background-position: right;
+ cursor: pointer;
+ background-color: #3399FF;
+}
+
+th.headerSortDown {
+ background-image: url(../images/desc.gif);
+ background-repeat: no-repeat;
+ background-position: right;
+ cursor: pointer;
+ background-color: #3399FF;
+}
+
+.sub-disabled {
+ text-decoration: line-through;
+}
+
+.dlogin {
+ text-align: center;
+}
+
+span.menu-title > span > img {
+ display: none;
+
+}
+
+.login_page .inb {
+ display: inline-block;
+ font-weight: 400;
+ text-align: center;
+ white-space: nowrap;
+ vertical-align: middle;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ border: 1px solid transparent;
+ font-size: 1rem;
+ line-height: 1.5;
+ border-radius: 0.25rem;
+ transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
+ color: #fff;
+ background-color: #5cb85c;
+ border-color: #5cb85c;
+}
+.login_page .inb:hover {
+ text-decoration: none;
+ color: #fff;
+ background-color: #449d44;
+ border-color: #449d44;
+}
+
+.login_page .inb:focus, .login_page .inb.focus {
+ box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.5);
+}
+
+.login_page .inb.disabled, .login_page .inb:disabled {
+ background-color: #5cb85c;
+ border-color: #5cb85c;
+}
+
+
+.login_page .inb:not([disabled]):not(.disabled):active, .login_page .inb:not([disabled]):not(.disabled).active,
+.show > .inb.dropdown-toggle {
+ color: #fff;
+ background-color: #1e7e34;
+ border-color: #1c7430;
+ box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.5);
+}
+
+.login {
+ margin-left: auto;
+ margin-right: auto;
+}
+
+body.login_page {
+ max-height: 100px !important;
+}
+
+.login_page #global {
+ max-width: 1024px !important;
+ margin: 60px auto !important;
+ width: auto !important;
+}
+
+.login_page .unsecure {
+ font-size: 14px;
+ margin-bottom: 1em;
+}
+
+.login_page #content {
+ padding: 10px 10px 10px 10px;
+ border: 1px solid #ddd;
+ border-radius: 5px;
+ width: auto;
+}
+
+.login_page #logo, .login_page {
+ text-align:center;
+}
+
+.login_page #logo, .login_page > img {
+ margin-right: 10px;
+}
+
+.login_page .block_list {
+ display: flex;
+ flex-flow: column;
+ padding: 0 10%;
+}
+.login_page .block_login_page {
+ margin: 10px 15px;
+}
+
+.login_page .menu-box {
+ width: 400px;
+}
+
+.login_page .block_list .menu-box {
+ display: inline-block;
+}
+
+.menu-title {
+ background-position: 8px 10px !important;
+}
+
+.block_login_page > b {
+
+ font-weight: inherit;
+}
+
+.login_page .menu-box .menu-title {
+ text-align: center;
+ font-size: 1.2em;
+}
+
+.login_page .menu-box .menu-content {
+ margin: 15px;
+}
+
+.login_page .menu-box .menu-content > div {
+ margin-bottom: 7px;
+}
+
+.login_page .menu-box .menu-content label {
+ width: 25%;
+ margin-bottom: 10px;
+ text-align: left;
+ display: inline-block;
+}
+
+.login_page .menu-box .menu-content input {
+ width: 60%;
+}
+
+.login_page .menu-box .menu-content .submit {
+ text-align: center;
+}
+
+.login_page .menu-box .menu-content input[type='submit']{
+ height: 2em;
+ width: 85%;
+}
+
+small > i {
+ display: flex;
+}
+
+.content {
+ height: 100%;
+}
+
+@media (max-width:1000px) {
+ .login_page .block_login_page {
+ width: 100%;
+ }
+
+ .login_page #global {
+ margin: 0 !important;
+ }
+
+ #global {
+ margin-top: 60px;
+ width: auto;
+ display: flex;
+ min-height: 100%;
+ }
+
+ .global {
+ display: block;
+ width: auto;
+ height: auto;
+ }
+
+ .menu, .content, #menu, #content {
+ float: block;
+ width: auto;
+ height: auto;
+ }
+
+ .content {
+ height: 100%;
+ }
+}
+
+.logout a, a.logout, input.logout, .logout-menu .menu-title {
+ background-image: url(../images/exit.png);
+ background-repeat: no-repeat;
+ background-position: 8px 10px;
+ padding-left: 30px;
+ text-align: center;
+}
+
+.alternc_powered {
+ text-align:right;
+}
+
+.toggle_menu {
+ display: none;
+ position: fixed;
+ top: 10px;
+ right: 10px;
+ z-index: 1000;
+}
+
+@media (max-width:2000px) {
+ span#emaildom {
+ padding-top: 0.17em;
+ padding-bottom: 0.27em;
+ }
+ form#formlist1 > span.int.intleft {
+ padding-bottom: 0.15em;
+ padding-top: 0.4em;
+ }
+ span.intright {
+ padding-bottom: 0.4em;
+ padding-top: 0.25em;
+ }
+ span#newsubname {
+ padding-top: 0.17em;
+ padding-bottom: 0.27em;
+ }
+ #tabsdom-addsub #newsubname.int {
+ padding-top: 0.1em;
+ padding-bottom: 0.35em;
+ }
+}
+
+
+.ssl a, a.ssl, input.ssl, .ssl-menu .menu-title {
+ background-image: url(../images/ssl.png);
+ background-repeat: no-repeat;
+ background-position: 8px 3px;
+ padding-left: 30px;
+}
+
textarea.cert {
font-family: Courier New, Courier, monospace, fixed;
font-size: 12px;
}
-th.headerSortUp {
- background-image: url(../images/asc.gif);
- background-repeat: no-repeat;
- background-position: right;
- cursor: pointer;
- background-color: #3399FF;
-}
-
-th.headerSortDown {
- background-image: url(../images/desc.gif);
- background-repeat: no-repeat;
- background-position: right;
- cursor: pointer;
- background-color: #3399FF;
-}
-
-.sub-disabled {
- text-decoration: line-through;
-}
-
-.login_page #global {
- max-width: 1000px !important;
- margin: 20px auto !important;
- width: auto !important;
-}
-
-
-
-.login_page .unsecure {
- font-size: 1.1em;
- width: 90%;
- margin-bottom: 1em;
-}
-
-.login_page #content {
- padding: 10px;
- width: auto;
-}
-.login_page #logo, .login_page .alternc_powered {
- text-align:center;
-}
-
-.login_page .block_list {
- display: flex;
- flex-flow: row wrap;
-}
-.login_page .block_login_page {
- margin: 10px;
- width: 420px;
-}
-
-.login_page .menu-box .menu-title {
- text-align: center;
- font-weight: bold;
- font-size: 1.2em;
-}
-
-.login_page .menu-box .menu-content {
- margin: 15px;
-}
-.login_page .menu-box .menu-content > div {
- margin-bottom: 7px;
-}
-.login_page .menu-box .menu-content label {
- width: 30%;
- display: inline-block;
-}
-.login_page .menu-box .menu-content input {
- width: 60%;
-}
-.login_page .menu-box .menu-content .submit {
- text-align: center;
-}
-.login_page .menu-box .menu-content input[type='submit']{
- width: 100px;
- height: 2em;
-}
-
-.toggle_menu {
- display: none;
- position: fixed;
- top: 10px;
- right: 10px;
- z-index: 1000;
-}
-
-@media (max-width:980px) {
- .login_page .block_login_page {
- width: 100%;
- }
-
- .login_page #global {
- margin: 0 !important;
- }
- #global {
- display: block;
- width: auto;
- }
-
- #menu, #content {
- float: none;
- width:auto;
- }
textarea[readonly='readonly'] {
background-color: #ddd;
}
+
diff --git a/bureau/class/functions.php b/bureau/class/functions.php
index 0627744e..0fe4f259 100755
--- a/bureau/class/functions.php
+++ b/bureau/class/functions.php
@@ -541,7 +541,6 @@ function _md5cr($pass, $salt = "") {
return crypt($pass, $salt);
}
-
/** split mysql database name between username and custom database name
* @param string $dbname database name
* @return array returns username as first element, custom name as second
@@ -1204,3 +1203,42 @@ function csrf_check($token=null) {
$db->exec("DELETE FROM csrf WHERE created= 7.0
+ $salt = base64_encode(random_bytes(12));
+ }
+ else if (function_exists('mcrypt_create_iv')) {
+ $salt = base64_encode(mcrypt_create_iv(12, MCRYPT_DEV_URANDOM));
+ }
+ else if (function_exists('')) {
+ $salt = base64_encode(openssl_random_pseudo_bytes(12));
+ }
+ if (!$salt) {
+ throw Error('Unable to generate salt');
+ }
+ }
+ $salt = '$6$rounds=20000$' . $salt;
+ $hash = crypt($password, $salt);
+ return $hash;
+}
+
+/**
+ * Create a password hash for use with dovecot.
+ */
+function _dovecot_hash($password) {
+ // In any case the final password saved for dovecot can store the
+ // scheme to override the default on a per-account basis.
+ // Ideally this is updated to bcrypt or argon2 when those become
+ // available in dovecot.
+ // @see https://wiki.dovecot.org/Authentication/PasswordSchemes
+ $hash = _sha512cr($password);
+ return '{SHA512-CRYPT}' . $hash;
+}
diff --git a/bureau/class/m_admin.php b/bureau/class/m_admin.php
index 1fdb4691..11d30db2 100644
--- a/bureau/class/m_admin.php
+++ b/bureau/class/m_admin.php
@@ -634,7 +634,7 @@ class m_admin {
$msg->raise("ERROR", "admin", _("Login can only contains characters a-z, 0-9 and -"));
return false;
}
- $pass = _md5cr($pass);
+ $pass = password_hash($pass, PASSWORD_BCRYPT);
$db = new DB_System();
// Already exist?
$db->query("SELECT count(*) AS cnt FROM membres WHERE login= ?;", array($login));
@@ -772,7 +772,7 @@ class m_admin {
$db = new DB_System();
if ($pass) {
- $pass = _md5cr($pass);
+ $pass = password_hash($pass, PASSWORD_BCRYPT);
$second_query = "UPDATE membres SET mail= ?, canpass= ?, enabled= ?, `type`= ?, notes= ? , pass = ? WHERE uid= ?;";
$second_query_args = array($mail, $canpass, $enabled, $type, $notes, $pass, $uid);
} else {
diff --git a/bureau/class/m_ftp.php b/bureau/class/m_ftp.php
index 74b02788..11566a79 100644
--- a/bureau/class/m_ftp.php
+++ b/bureau/class/m_ftp.php
@@ -321,7 +321,7 @@ class m_ftp {
return false; // The error has been raised by checkPolicy()
}
}
- $encrypted_password = _md5cr($pass, strrev(microtime(true)));
+ $encrypted_password = _sha512cr($pass);
$db->query("UPDATE ftpusers SET name= ? , password='', encrypted_password= ?, homedir= ?, uid= ? WHERE id= ?;", array($full_login, $encrypted_password, $absolute, $cuid, $id));
} else {
$db->query("UPDATE ftpusers SET name= ? , homedir= ? , uid= ? WHERE id= ? ;", array($full_login, $absolute, $cuid, $id));
@@ -406,7 +406,7 @@ class m_ftp {
}
if ($quota->cancreate("ftp")) {
- $encrypted_password = _md5cr($pass, strrev(microtime(true)));
+ $encrypted_password = _sha512cr($pass);
$db->query("INSERT INTO ftpusers (name,password, encrypted_password,homedir,uid) VALUES ( ?, '', ?, ?, ?)", array($full_login, $encrypted_password, $absolute, $cuid));
return true;
} else {
diff --git a/bureau/class/m_mail.php b/bureau/class/m_mail.php
index 28bcdb78..eec5c9a0 100644
--- a/bureau/class/m_mail.php
+++ b/bureau/class/m_mail.php
@@ -620,8 +620,10 @@ ORDER BY
return false;
}
if ($canbeempty && empty($pass)) {
- return $db->query("UPDATE address SET password= ? where id = ? ;", array(null, $mail_id ));
- } else if (!$db->query("UPDATE address SET password= ? where id = ? ;", array(_md5cr($pass), $mail_id ))) {
+ return $db->query("UPDATE address SET password= ? where id = ? ;",
+ array(null, $mail_id ));
+ } else if (!$db->query("UPDATE address SET password= ? where id = ? ;",
+ array(_dovecot_hash($pass), $mail_id ))) {
return false;
}
return true;
diff --git a/bureau/class/m_mem.php b/bureau/class/m_mem.php
index b5420b98..4885bed9 100644
--- a/bureau/class/m_mem.php
+++ b/bureau/class/m_mem.php
@@ -93,7 +93,7 @@ class m_mem {
return false;
}
$db->next_record();
- if (_md5cr($password, $db->f("pass")) != $db->f("pass")) {
+ if (!password_verify($password, $db->f('pass'))) {
$db->query("UPDATE membres SET lastfail=lastfail+1 WHERE uid= ? ;", array($db->f("uid")));
$msg->raise("ERROR", "mem", _("User or password incorrect"));
return false;
@@ -104,6 +104,12 @@ class m_mem {
}
$this->user = $db->Record;
$cuid = $db->f("uid");
+ // Transitional code to update md5 hashed passwords to those created
+ // with password_hash().
+ if (strncmp($db->f('pass'), '$1$', 3) == 0) {
+ $db->query("update membres set pass = ? where uid = ?",
+ array(password_hash($password, PASSWORD_BCRYPT), $cuid));
+ }
if (panel_islocked() && $cuid != 2000) {
$msg->raise("ALERT", "mem", _("This website is currently under maintenance, login is currently disabled."));
@@ -396,7 +402,7 @@ class m_mem {
$msg->raise("ERROR", "mem", _("You are not allowed to change your password."));
return false;
}
- if ($this->user["pass"] != _md5cr($oldpass, $this->user["pass"])) {
+ if (!password_verify($oldpass, $this->user['pass'])) {
$msg->raise("ERROR", "mem", _("The old password is incorrect"));
return false;
}
@@ -410,7 +416,7 @@ class m_mem {
if (!$admin->checkPolicy("mem", $login, $newpass)) {
return false; // The error has been raised by checkPolicy()
}
- $newpass = _md5cr($newpass);
+ $newpass = password_hash($newpass, PASSWORD_BCRYPT);
$db->query("UPDATE membres SET pass= ? WHERE uid= ?;", array($newpass, $cuid));
$msg->init_msgs();
return true;
diff --git a/debian/changelog b/debian/changelog
index 3ed86856..191ee5c7 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,22 @@
+alternc (3.5.0rc1) stable; urgency=low
+
+ * AlternC 3.5 for Jessie & Stretch
+ * added AlternC-ssl natively now, based on cert providers (external package)
+
+ -- Benjamin Sonntag Fri, 21 Jun 2018 15:26:00 +0100
+
+alternc (3.1.11) oldoldstable; urgency=low
+
+ * fix This is a big security upgrade of AlternC 3.x
+ * added CSRF token to all forms (as much as possible) to prevent cross-site attacks
+ * added XSS protection to many form fields and views
+ * migrated the DB abstraction layer from mysql_* functions to PDO
+ * migrated the DB calls from addslases to prepared-queries or quotes
+ * fix many unix rights issues (prevents a root escalation from alterncpanel!)
+ * fix some little interface issues on forms
+
+ -- Benjamin Sonntag Fri, 27 May 2016 10:36:00 +0200
+
alternc (3.3.10) stable; urgency=low
* Version identical to 3.1 for Squeeze
diff --git a/debian/control b/debian/control
index f3c1ece3..02449f92 100644
--- a/debian/control
+++ b/debian/control
@@ -302,31 +302,3 @@ Description: Rest or get/post API for AlternC
.
More information at http://www.alternc.com/
Homepage: http://www.alternc.com/
-
-Package: alternc-ssl
-Priority: optional
-Section: admin
-Architecture: all
-Depends: openssl
- , mysql-client | mariadb-client
- , debconf
- , alternc (>= 3.0)
- , php5-cli | php7.0-cli
- , ${misc:Depends}
-Conflicts: alternc (<< 3.0)
-Description: HTTPS module for AlternC
- AlternC is a mutualized hosting software manager for Linux.
- It allows you to manage your websites, domains, ftp, emails, aliases,
- web statistics, mailing-lists, jabber accounts, etc.
- .
- This package is an optional module that adds HTTPS vhosts and SSL Certificates
- management to the virtual desktop.
- .
- More information on http://www.alternc.com/
-Description-fr.UTF-8: Module HTTPS pour AlternC
- AlternC est un logiciel d'hébergement mutualisé pour serveur Linux.
- Il permet de gérer les sites web, domaines, ftp, emails, alias,
- statistiques web, listes de discussions, comptes jabber, etc.
- .
- Ce paquet est un module optionnel qui permet aux utilisateurs
- de gérer des hôtes virtuels HTTPS et des certificats SSL dans AlternC.
diff --git a/etc/alternc/templates/alternc/apache2.conf b/etc/alternc/templates/alternc/apache2.conf
index 7fb527e6..0efcdf26 100644
--- a/etc/alternc/templates/alternc/apache2.conf
+++ b/etc/alternc/templates/alternc/apache2.conf
@@ -11,7 +11,7 @@ AssignUserId www-data www-data
# Deny access to the root filesystem
- Options FollowSymLinks
+ Options +FollowSymLinks
AllowOverride None
Order allow,deny
Deny from all
@@ -22,15 +22,13 @@ ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
- Order allow,deny
- Allow from all
+ Require all granted
- Order allow,deny
- Allow from all
-
+ Require all granted
+
php_admin_flag safe_mode_gid off
php_admin_flag safe_mode off
AddDefaultCharset UTF-8
@@ -43,8 +41,8 @@ ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
AllowOverride AuthConfig FileInfo Limit Options Indexes
Options -Indexes +Includes -FollowSymLinks +MultiViews +SymLinksIfOwnerMatch
- Order allow,deny
- Allow from all
+ Require all granted
+
php_admin_flag safe_mode_gid off
php_admin_flag safe_mode off
php_admin_flag enable_dl off
@@ -62,18 +60,16 @@ ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
AllowOverride AuthConfig Options FileInfo Limit Indexes
- Options Indexes Includes FollowSymLinks MultiViews
- Order allow,deny
- Allow from all
+ Options +Indexes +Includes +FollowSymLinks +MultiViews
+ Require all granted
AllowOverride AuthConfig Options FileInfo Limit Indexes
- Options Indexes Includes FollowSymLinks MultiViews
- Order allow,deny
- Allow from all
+ Options +Indexes +Includes +FollowSymLinks +MultiViews
+ Require all granted
- allow from all
+ Require all granted
diff --git a/etc/alternc/templates/apache2/roundcube-ssl.conf b/etc/alternc/templates/apache2/roundcube-ssl.conf
index 8e5e5e2f..659eaeca 100644
--- a/etc/alternc/templates/apache2/roundcube-ssl.conf
+++ b/etc/alternc/templates/apache2/roundcube-ssl.conf
@@ -19,10 +19,9 @@
# Access to tinymce files
- Options Indexes MultiViews FollowSymLinks
+ Options +Indexes +MultiViews +FollowSymLinks
AllowOverride None
- Order allow,deny
- allow from all
+ Require all granted
@@ -30,8 +29,7 @@
# This is needed to parse /var/lib/roundcube/.htaccess. See its
# content before setting AllowOverride to None.
AllowOverride All
- order allow,deny
- allow from all
+ Require all granted
# Protecting basic directories:
@@ -57,9 +55,8 @@
Alias /javascript /usr/share/javascript/
- Options FollowSymLinks MultiViews
- Order allow,deny
- Allow from all
+ Options +FollowSymLinks +MultiViews
+ Require all granted
SSLEngine On
diff --git a/etc/alternc/templates/apache2/squirrelmail-ssl.conf b/etc/alternc/templates/apache2/squirrelmail-ssl.conf
index a67b8837..f5132599 100644
--- a/etc/alternc/templates/apache2/squirrelmail-ssl.conf
+++ b/etc/alternc/templates/apache2/squirrelmail-ssl.conf
@@ -19,13 +19,13 @@
php_value open_basedir /usr/share/squirrelmail:/etc/squirrelmail/:/var/lib/squirrelmail/data/:/var/spool/squirrelmail/:/etc/mailname
php_admin_flag safe_mode off
- Options Indexes FollowSymLinks
+ Options +Indexes +FollowSymLinks
Alias /javascript /usr/share/javascript/
- Options FollowSymLinks MultiViews
+ Options +FollowSymLinks +MultiViews
Order allow,deny
Allow from all
diff --git a/install/mysql.sql b/install/mysql.sql
index 0b9f628a..0eb6b8da 100644
--- a/install/mysql.sql
+++ b/install/mysql.sql
@@ -129,7 +129,7 @@ CREATE TABLE IF NOT EXISTS ftpusers (
id int(10) unsigned NOT NULL auto_increment,
name varchar(64) NOT NULL default '',
password varchar(32) NOT NULL default '',
- encrypted_password VARCHAR(32) default NULL,
+ encrypted_password VARCHAR(255) default NULL,
homedir varchar(128) NOT NULL default '',
uid int(10) unsigned NOT NULL default '0',
enabled boolean NOT NULL DEFAULT TRUE,
@@ -159,7 +159,7 @@ CREATE TABLE IF NOT EXISTS local (
CREATE TABLE IF NOT EXISTS membres (
uid int(10) unsigned NOT NULL auto_increment, -- Numéro du membre (GID)
login varchar(128) NOT NULL default '', -- Nom d`utilisateur
- pass varchar(64) NOT NULL default '', -- Mot de passe
+ pass varchar(255) NOT NULL default '', -- Mot de passe
enabled tinyint(4) NOT NULL default '1', -- Le compte est-il actif ?
su tinyint(4) NOT NULL default '0', -- Le compte est-il super-admin ?
mail varchar(128) NOT NULL default '', -- Adresse email du possesseur
diff --git a/install/upgrades/3.4.11.sql b/install/upgrades/3.4.11.sql
new file mode 100644
index 00000000..643d3bc8
--- /dev/null
+++ b/install/upgrades/3.4.11.sql
@@ -0,0 +1,2 @@
+ALTER TABLE `membres` MODIFY `pass` varchar(255);
+ALTER TABLE `ftpusers` MODIFY `encrypted_password` varchar(255);
diff --git a/roundcube/class/m_roundcube.php b/roundcube/class/m_roundcube.php
index 2d17734c..6626b6d3 100644
--- a/roundcube/class/m_roundcube.php
+++ b/roundcube/class/m_roundcube.php
@@ -101,7 +101,7 @@ class m_roundcube {
$req=$stmt->execute(array($fullmail));
if ($req) {
- foreach ( $req->fetchAll() as $t ) {
+ foreach ( $stmt->fetchAll() as $t ) {
if (empty($t['user_id'])) continue ;
$rcuser_id=$t['user_id'];
diff --git a/roundcube/roundcube-install b/roundcube/roundcube-install
index 59a26119..d5fda51a 100644
--- a/roundcube/roundcube-install
+++ b/roundcube/roundcube-install
@@ -96,3 +96,10 @@ EOF
fi
+if [ "$1" = "end" ]; then
+ #This is necessary because upgrading roundcube from 7.1 to 7.2 changes this setting
+ chown alternc-roundcube:root /etc/roundcube/main.inc.php
+ # In case owner is reset to www-data
+ chown alternc-roundcube:nogroup /var/lib/roundcube/temp
+fi
+
diff --git a/wheezy/patch.sh b/wheezy/patch.sh
deleted file mode 100755
index efb16bce..00000000
--- a/wheezy/patch.sh
+++ /dev/null
@@ -1,18 +0,0 @@
-#!/bin/bash
-
-# Apply diffs to build for wheezy
-
-# DON'T COMMIT ANYTHING AFTER launching this
-# reset your repos back to the serverside one!
-
-# The patch files were generated by running
-# REV_NEW=ebb3471f04d49dd839237608bafc396e8b5090e5 REV_OLD=3ae6c0a5c2eecf864319dd42afbfc995baee9f68 \
-# for i in `git diff --name-only $REV_NEW $REV_OLD` ; do BASE_NAME=`echo $i | rev | cut -d '/' -f 1 | rev` ; \
-# git diff -p $REV_NEW $REV_OLD -- "$i" > jessie/$BASE_NAME ; done
-
-DIR_NAME=`dirname $0`
-cd "$DIR_NAME"/../
-
-for i in `ls "$DIR_NAME"`; do
- patch -p1 < "$DIR_NAME/$i"
-done