2006-04-16 12:49:12 +00:00
< ? php
2017-03-06 18:12:02 +00:00
namespace LAM\CONFIG ;
use \LAMCfgMain ;
use \htmlTable ;
use \htmlTitle ;
use \htmlStatusMessage ;
use \htmlSubTitle ;
use \htmlTableExtendedInputTextarea ;
use \htmlSpacer ;
use \htmlTableExtendedSelect ;
use \htmlOutputText ;
use \htmlTableExtendedInputCheckbox ;
use \htmlLink ;
use \htmlGroup ;
use \htmlButton ;
use \htmlHelpLink ;
use \htmlInputField ;
use \htmlInputFileUpload ;
use \htmlEqualWidth ;
use \htmlTableExtendedRadio ;
use \htmlHiddenInput ;
use \htmlTableExtendedInputField ;
use \DateTime ;
use \DateTimeZone ;
2006-04-16 12:49:12 +00:00
/*
$Id $
2009-10-27 18:47:12 +00:00
This code is part of LDAP Account Manager ( http :// www . ldap - account - manager . org / )
2017-03-06 18:12:02 +00:00
Copyright ( C ) 2003 - 2017 Roland Gruber
2006-04-16 12:49:12 +00:00
This program is free software ; you can redistribute it and / or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation ; either version 2 of the License , or
( at your option ) any later version .
This program is distributed in the hope that it will be useful ,
but WITHOUT ANY WARRANTY ; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
GNU General Public License for more details .
You should have received a copy of the GNU General Public License
along with this program ; if not , write to the Free Software
Foundation , Inc . , 59 Temple Place , Suite 330 , Boston , MA 02111 - 1307 USA
*/
2006-09-24 14:19:50 +00:00
2006-04-16 12:49:12 +00:00
/**
* Manages the main configuration options .
*
* @ package configuration
* @ author Roland Gruber
*/
/** Access to config functions */
include_once ( '../../lib/config.inc' );
/** Used to print status messages */
include_once ( '../../lib/status.inc' );
2016-08-21 09:16:44 +00:00
/** LAM Pro */
include_once ( '../../lib/selfService.inc' );
2006-04-16 12:49:12 +00:00
// start session
2009-07-08 18:03:28 +00:00
if ( strtolower ( session_module_name ()) == 'files' ) {
session_save_path ( " ../../sess " );
}
2006-04-16 12:49:12 +00:00
@ session_start ();
setlanguage ();
2013-08-10 12:43:01 +00:00
if ( ! isset ( $_SESSION [ 'cfgMain' ])) {
$cfg = new LAMCfgMain ();
$_SESSION [ 'cfgMain' ] = $cfg ;
}
$cfg = & $_SESSION [ 'cfgMain' ];
2006-04-16 12:49:12 +00:00
// check if user is logged in
2007-11-07 21:02:13 +00:00
if ( ! isset ( $_SESSION [ " mainconf_password " ]) || ( ! $cfg -> checkPassword ( $_SESSION [ " mainconf_password " ]))) {
2006-04-16 12:49:12 +00:00
require ( 'mainlogin.php' );
exit ();
}
2010-05-28 08:48:57 +00:00
if ( isset ( $_POST [ 'cancel' ])) {
// back to login
metaRefresh ( '../login.php' );
exit ();
2010-01-01 17:39:38 +00:00
}
2006-04-16 12:49:12 +00:00
2010-05-28 08:48:57 +00:00
$errors = array ();
2013-08-10 12:43:01 +00:00
$messages = array ();
2006-04-16 12:49:12 +00:00
// check if submit button was pressed
2013-08-10 12:43:01 +00:00
if ( isset ( $_POST [ 'submitFormData' ])) {
2006-04-23 16:33:25 +00:00
// remove double slashes if magic quotes are on
if ( get_magic_quotes_gpc () == 1 ) {
$postKeys = array_keys ( $_POST );
for ( $i = 0 ; $i < sizeof ( $postKeys ); $i ++ ) {
if ( is_string ( $_POST [ $postKeys [ $i ]])) $_POST [ $postKeys [ $i ]] = stripslashes ( $_POST [ $postKeys [ $i ]]);
}
}
2006-04-16 12:49:12 +00:00
// set master password
if ( isset ( $_POST [ 'masterpassword' ]) && ( $_POST [ 'masterpassword' ] != " " )) {
if ( $_POST [ 'masterpassword' ] && $_POST [ 'masterpassword2' ] && ( $_POST [ 'masterpassword' ] == $_POST [ 'masterpassword2' ])) {
2007-11-07 21:02:13 +00:00
$cfg -> setPassword ( $_POST [ 'masterpassword' ]);
2006-04-16 12:49:12 +00:00
$msg = _ ( " New master password set successfully. " );
unset ( $_SESSION [ " mainconf_password " ]);
}
2006-04-18 10:57:16 +00:00
else $errors [] = _ ( " Master passwords are different or empty! " );
2006-04-16 12:49:12 +00:00
}
2016-08-21 09:16:44 +00:00
// set license
if ( isLAMProVersion ()) {
$licenseLines = explode ( " \n " , $_POST [ 'license' ]);
$licenseLines = array_map ( 'trim' , $licenseLines );
$cfg -> setLicenseLines ( $licenseLines );
}
2006-04-18 10:57:16 +00:00
// set session timeout
$cfg -> sessionTimeout = $_POST [ 'sessionTimeout' ];
2006-04-25 11:25:07 +00:00
// set allowed hosts
if ( isset ( $_POST [ 'allowedHosts' ])) {
$allowedHosts = $_POST [ 'allowedHosts' ];
$allowedHostsList = explode ( " \n " , $allowedHosts );
for ( $i = 0 ; $i < sizeof ( $allowedHostsList ); $i ++ ) {
$allowedHostsList [ $i ] = trim ( $allowedHostsList [ $i ]);
// ignore empty lines
if ( $allowedHostsList [ $i ] == " " ) {
unset ( $allowedHostsList [ $i ]);
continue ;
}
// check each line
2012-03-13 21:02:37 +00:00
$ipRegex = '/^[0-9a-f\\.:\\*]+$/i' ;
2009-08-14 18:06:15 +00:00
if ( ! preg_match ( $ipRegex , $allowedHostsList [ $i ]) || ( strlen ( $allowedHostsList [ $i ]) > 15 )) {
2012-03-13 21:02:37 +00:00
$errors [] = sprintf ( _ ( " The IP address %s is invalid! " ), htmlspecialchars ( str_replace ( '%' , '%%' , $allowedHostsList [ $i ])));
2006-04-25 11:25:07 +00:00
}
}
$allowedHosts = implode ( " , " , $allowedHostsList );
}
else $allowedHosts = " " ;
$cfg -> allowedHosts = $allowedHosts ;
2014-01-12 19:58:15 +00:00
// set allowed hosts for self service
if ( isLAMProVersion ()) {
if ( isset ( $_POST [ 'allowedHostsSelfService' ])) {
$allowedHostsSelfService = $_POST [ 'allowedHostsSelfService' ];
$allowedHostsSelfServiceList = explode ( " \n " , $allowedHostsSelfService );
for ( $i = 0 ; $i < sizeof ( $allowedHostsSelfServiceList ); $i ++ ) {
$allowedHostsSelfServiceList [ $i ] = trim ( $allowedHostsSelfServiceList [ $i ]);
// ignore empty lines
if ( $allowedHostsSelfServiceList [ $i ] == " " ) {
unset ( $allowedHostsSelfServiceList [ $i ]);
continue ;
}
// check each line
$ipRegex = '/^[0-9a-f\\.:\\*]+$/i' ;
if ( ! preg_match ( $ipRegex , $allowedHostsSelfServiceList [ $i ]) || ( strlen ( $allowedHostsSelfServiceList [ $i ]) > 15 )) {
$errors [] = sprintf ( _ ( " The IP address %s is invalid! " ), htmlspecialchars ( str_replace ( '%' , '%%' , $allowedHostsSelfServiceList [ $i ])));
}
}
$allowedHostsSelfService = implode ( " , " , $allowedHostsSelfServiceList );
}
else $allowedHostsSelfService = " " ;
$cfg -> allowedHostsSelfService = $allowedHostsSelfService ;
}
2014-01-12 11:08:43 +00:00
// set session encryption
if ( function_exists ( 'mcrypt_create_iv' )) {
$encryptSession = 'false' ;
if ( isset ( $_POST [ 'encryptSession' ]) && ( $_POST [ 'encryptSession' ] == 'on' )) {
$encryptSession = 'true' ;
}
$cfg -> encryptSession = $encryptSession ;
}
2006-04-23 16:33:25 +00:00
// set log level
$cfg -> logLevel = $_POST [ 'logLevel' ];
// set log destination
if ( $_POST [ 'logDestination' ] == " none " ) $cfg -> logDestination = " NONE " ;
elseif ( $_POST [ 'logDestination' ] == " syslog " ) $cfg -> logDestination = " SYSLOG " ;
else {
2009-10-28 16:05:25 +00:00
if ( isset ( $_POST [ 'logFile' ]) && ( $_POST [ 'logFile' ] != " " ) && preg_match ( " /^[a-z0-9 \\ / \\ \\ : \\ ._-]+ $ /i " , $_POST [ 'logFile' ])) {
2006-04-23 16:33:25 +00:00
$cfg -> logDestination = $_POST [ 'logFile' ];
}
else $errors [] = _ ( " The log file is empty or contains invalid characters! Valid characters are: a-z, A-Z, 0-9, /, \\ , ., :, _ and -. " );
}
2008-02-10 13:19:05 +00:00
// password policies
$cfg -> passwordMinLength = $_POST [ 'passwordMinLength' ];
$cfg -> passwordMinLower = $_POST [ 'passwordMinLower' ];
$cfg -> passwordMinUpper = $_POST [ 'passwordMinUpper' ];
$cfg -> passwordMinNumeric = $_POST [ 'passwordMinNumeric' ];
$cfg -> passwordMinSymbol = $_POST [ 'passwordMinSymbol' ];
$cfg -> passwordMinClasses = $_POST [ 'passwordMinClasses' ];
2014-04-05 18:42:46 +00:00
$cfg -> checkedRulesCount = $_POST [ 'passwordRulesCount' ];
$cfg -> passwordMustNotContain3Chars = isset ( $_POST [ 'passwordMustNotContain3Chars' ]) && ( $_POST [ 'passwordMustNotContain3Chars' ] == 'on' ) ? 'true' : 'false' ;
$cfg -> passwordMustNotContainUser = isset ( $_POST [ 'passwordMustNotContainUser' ]) && ( $_POST [ 'passwordMustNotContainUser' ] == 'on' ) ? 'true' : 'false' ;
2013-08-10 12:43:01 +00:00
if ( isset ( $_POST [ 'sslCaCertUpload' ])) {
if ( ! isset ( $_FILES [ 'sslCaCert' ]) || ( $_FILES [ 'sslCaCert' ][ 'size' ] == 0 )) {
$errors [] = _ ( 'No file selected.' );
}
else {
$handle = fopen ( $_FILES [ 'sslCaCert' ][ 'tmp_name' ], " r " );
$data = fread ( $handle , 10000000 );
fclose ( $handle );
$sslReturn = $cfg -> uploadSSLCaCert ( $data );
if ( $sslReturn !== true ) {
$errors [] = $sslReturn ;
}
else {
$messages [] = _ ( 'You might need to restart your webserver for changes to take effect.' );
}
}
}
if ( isset ( $_POST [ 'sslCaCertDelete' ])) {
$cfg -> deleteSSLCaCert ();
$messages [] = _ ( 'You might need to restart your webserver for changes to take effect.' );
}
if ( isset ( $_POST [ 'sslCaCertImport' ])) {
$matches = array ();
if ( preg_match ( '/^([a-zA-Z0-9_\\.-]+)(:([0-9]+))?$/' , $_POST [ 'serverurl' ], $matches )) {
$port = '636' ;
if ( isset ( $matches [ 3 ]) && ! empty ( $matches [ 3 ])) {
$port = $matches [ 3 ];
}
$pemResult = getLDAPSSLCertificate ( $matches [ 1 ], $port );
if ( $pemResult !== false ) {
$messages [] = _ ( 'Imported certificate from server.' );
$messages [] = _ ( 'You might need to restart your webserver for changes to take effect.' );
$cfg -> uploadSSLCaCert ( $pemResult );
}
else {
$errors [] = _ ( 'Unable to import server certificate. Please use the upload function.' );
}
}
else {
$errors [] = _ ( 'Invalid server name. Please enter "server" or "server:port".' );
}
}
foreach ( $_POST as $key => $value ) {
if ( strpos ( $key , 'deleteCert_' ) === 0 ) {
$index = substr ( $key , strlen ( 'deleteCert_' ));
$cfg -> deleteSSLCaCert ( $index );
}
}
2013-10-16 16:48:59 +00:00
// mail EOL
if ( isLAMProVersion ()) {
$cfg -> mailEOL = $_POST [ 'mailEOL' ];
}
2013-10-18 17:43:09 +00:00
$cfg -> errorReporting = $_POST [ 'errorReporting' ];
2006-04-18 10:57:16 +00:00
// save settings
2013-08-10 12:43:01 +00:00
if ( isset ( $_POST [ 'submit' ])) {
$cfg -> save ();
if ( sizeof ( $errors ) == 0 ) {
metaRefresh ( '../login.php?confMainSavedOk=1' );
exit ();
}
2006-04-16 12:49:12 +00:00
}
}
2009-11-06 19:15:56 +00:00
2010-05-28 08:48:57 +00:00
echo $_SESSION [ 'header' ];
?>
< title >
< ? php
echo _ ( " Edit general settings " );
?>
</ title >
2015-08-23 17:56:27 +00:00
< ? php
2010-08-31 18:05:17 +00:00
// include all CSS files
$cssDirName = dirname ( __FILE__ ) . '/../../style' ;
$cssDir = dir ( $cssDirName );
2012-11-02 17:45:35 +00:00
$cssFiles = array ();
$cssEntry = $cssDir -> read ();
while ( $cssEntry !== false ) {
if ( substr ( $cssEntry , strlen ( $cssEntry ) - 4 , 4 ) == '.css' ) {
$cssFiles [] = $cssEntry ;
}
$cssEntry = $cssDir -> read ();
}
sort ( $cssFiles );
foreach ( $cssFiles as $cssEntry ) {
2010-08-31 18:05:17 +00:00
echo " <link rel= \" stylesheet \" type= \" text/css \" href= \" ../../style/ " . $cssEntry . " \" > \n " ;
}
?>
2010-05-28 08:48:57 +00:00
< link rel = " shortcut icon " type = " image/x-icon " href = " ../../graphics/favicon.ico " >
</ head >
< body >
2010-08-31 18:05:17 +00:00
< table border = 0 width = " 100% " class = " lamHeader ui-corner-all " >
2010-07-30 16:08:20 +00:00
< tr >
< td align = " left " height = " 30 " >
2014-03-29 11:04:14 +00:00
< a class = " lamLogo " href = " http://www.ldap-account-manager.org/ " target = " new_window " > LDAP Account Manager </ a >
2010-07-30 16:08:20 +00:00
</ td >
</ tr >
</ table >
< br >
2010-11-18 19:29:44 +00:00
<!-- form for adding / renaming / deleting profiles -->
2013-08-10 12:43:01 +00:00
< form enctype = " multipart/form-data " action = " mainmanage.php " method = " post " >
2010-05-28 08:48:57 +00:00
< ? php
// include all JavaScript files
$jsDirName = dirname ( __FILE__ ) . '/../lib' ;
$jsDir = dir ( $jsDirName );
2010-08-28 12:27:06 +00:00
$jsFiles = array ();
2010-05-28 08:48:57 +00:00
while ( $jsEntry = $jsDir -> read ()) {
if ( substr ( $jsEntry , strlen ( $jsEntry ) - 3 , 3 ) != '.js' ) continue ;
2010-08-28 12:27:06 +00:00
$jsFiles [] = $jsEntry ;
}
sort ( $jsFiles );
foreach ( $jsFiles as $jsEntry ) {
2010-05-28 08:48:57 +00:00
echo " <script type= \" text/javascript \" src= \" ../lib/ " . $jsEntry . " \" ></script> \n " ;
}
2016-09-02 12:57:11 +00:00
$container = new htmlTable ( '100%' );
$container -> setCSSClasses ( array ( 'ui-corner-all' , 'roundedShadowBox' ));
$container -> addElement ( new htmlTitle ( _ ( 'General settings' )), true );
2010-11-18 19:29:44 +00:00
2010-05-28 08:48:57 +00:00
// print messages
for ( $i = 0 ; $i < sizeof ( $errors ); $i ++ ) {
2010-11-18 19:29:44 +00:00
$container -> addElement ( new htmlStatusMessage ( " ERROR " , $errors [ $i ]), true );
2010-05-28 08:48:57 +00:00
}
2013-08-10 12:43:01 +00:00
for ( $i = 0 ; $i < sizeof ( $messages ); $i ++ ) {
$container -> addElement ( new htmlStatusMessage ( " INFO " , $messages [ $i ]), true );
}
2010-05-28 08:48:57 +00:00
2009-11-06 19:15:56 +00:00
// check if config file is writable
if ( ! $cfg -> isWritable ()) {
2010-11-18 19:29:44 +00:00
$container -> addElement ( new htmlStatusMessage ( 'WARN' , 'The config file is not writable.' , 'Your changes cannot be saved until you make the file writable for the webserver user.' ), true );
2009-11-06 19:15:56 +00:00
}
2006-04-16 12:49:12 +00:00
2016-08-21 09:16:44 +00:00
// license
if ( isLAMProVersion ()) {
2016-08-29 17:44:58 +00:00
$container -> addElement ( new htmlSubTitle ( _ ( 'Licence' )), true );
2016-08-21 09:16:44 +00:00
$licenseTable = new htmlTable ();
2016-08-29 17:44:58 +00:00
$licenseTable -> addElement ( new htmlTableExtendedInputTextarea ( 'license' , implode ( " \n " , $cfg -> getLicenseLines ()), 50 , 10 , _ ( 'Licence' ), '287' ));
2016-08-21 09:16:44 +00:00
$container -> addElement ( $licenseTable , true );
$container -> addElement ( new htmlSpacer ( null , '10px' ), true );
}
2010-11-18 19:29:44 +00:00
// security settings
2013-08-10 12:43:01 +00:00
$container -> addElement ( new htmlSubTitle ( _ ( " Security settings " )), true );
2010-11-18 19:29:44 +00:00
$securityTable = new htmlTable ();
2013-02-28 17:42:09 +00:00
$options = array ( 5 , 10 , 20 , 30 , 60 , 90 , 120 , 240 );
2010-11-18 19:29:44 +00:00
$securityTable -> addElement ( new htmlTableExtendedSelect ( 'sessionTimeout' , $options , array ( $cfg -> sessionTimeout ), _ ( " Session timeout " ), '238' ), true );
$securityTable -> addElement ( new htmlTableExtendedInputTextarea ( 'allowedHosts' , implode ( " \n " , explode ( " , " , $cfg -> allowedHosts )), '30' , '7' , _ ( " Allowed hosts " ), '241' ), true );
2014-01-12 19:58:15 +00:00
if ( isLAMProVersion ()) {
$securityTable -> addElement ( new htmlTableExtendedInputTextarea ( 'allowedHostsSelfService' , implode ( " \n " , explode ( " , " , $cfg -> allowedHostsSelfService )), '30' , '7' , _ ( " Allowed hosts (self service) " ), '241' ), true );
}
2014-01-12 11:08:43 +00:00
$encryptSession = ( $cfg -> encryptSession === 'true' );
$encryptSessionBox = new htmlTableExtendedInputCheckbox ( 'encryptSession' , $encryptSession , _ ( 'Encrypt session' ), '245' );
$encryptSessionBox -> setIsEnabled ( function_exists ( 'mcrypt_create_iv' ));
$securityTable -> addElement ( $encryptSessionBox , true );
2013-08-10 12:43:01 +00:00
// SSL certificate
$securityTable -> addElement ( new htmlOutputText ( _ ( 'SSL certificates' )));
$sslMethod = _ ( 'use system certificates' );
$sslFileName = $cfg -> getSSLCaCertTempFileName ();
if ( $sslFileName != null ) {
2013-08-10 13:25:09 +00:00
$sslMethod = _ ( 'use custom CA certificates' );
2013-08-10 12:43:01 +00:00
}
$sslDelSaveGroup = new htmlGroup ();
$sslDelSaveGroup -> addElement ( new htmlOutputText ( $sslMethod ));
$sslDelSaveGroup -> addElement ( new htmlSpacer ( '5px' , null ));
// delete+download button
if ( $sslFileName != null ) {
$sslDownloadBtn = new htmlLink ( '' , '../../tmp/' . $sslFileName , '../../graphics/save.png' );
$sslDownloadBtn -> setTargetWindow ( '_blank' );
$sslDownloadBtn -> setTitle ( _ ( 'Download CA certificates' ));
$sslDelSaveGroup -> addElement ( $sslDownloadBtn );
$sslDeleteBtn = new htmlButton ( 'sslCaCertDelete' , 'delete.png' , true );
$sslDeleteBtn -> setTitle ( _ ( 'Delete all CA certificates' ));
$sslDelSaveGroup -> addElement ( $sslDeleteBtn );
}
$securityTable -> addElement ( $sslDelSaveGroup );
$securityTable -> addElement ( new htmlHelpLink ( '204' ));
$securityTable -> addElement ( new htmlSpacer ( '250px' , null ), true );
$securityTable -> addElement ( new htmlOutputText ( '' ));
$sslButtonTable = new htmlTable ();
$sslButtonTable -> colspan = 3 ;
$sslButtonTable -> addElement ( new htmlInputFileUpload ( 'sslCaCert' ));
$sslUploadBtn = new htmlButton ( 'sslCaCertUpload' , _ ( 'Upload' ));
$sslUploadBtn -> setIconClass ( 'upButton' );
2013-08-10 13:25:09 +00:00
$sslUploadBtn -> setTitle ( _ ( 'Upload CA certificate in DER/PEM format.' ));
2013-08-10 12:43:01 +00:00
$sslButtonTable -> addElement ( $sslUploadBtn , true );
2013-08-15 15:30:19 +00:00
if ( function_exists ( 'stream_socket_client' ) && function_exists ( 'stream_context_get_params' )) {
2013-08-10 12:43:01 +00:00
$sslImportGroup = new htmlGroup ();
$sslImportGroup -> addElement ( new htmlOutputText ( 'ldaps://' ));
$sslImportServerUrl = ! empty ( $_POST [ 'serverurl' ]) ? $_POST [ 'serverurl' ] : '' ;
$sslImportGroup -> addElement ( new htmlInputField ( 'serverurl' ));
$sslButtonTable -> addElement ( $sslImportGroup );
$sslImportBtn = new htmlButton ( 'sslCaCertImport' , _ ( 'Import from server' ));
$sslImportBtn -> setIconClass ( 'downButton' );
$sslImportBtn -> setTitle ( _ ( 'Imports the certificate directly from your LDAP server.' ));
$sslImportBtn -> setCSSClasses ( array ( 'nowrap' ));
$sslButtonTable -> addElement ( $sslImportBtn );
$sslButtonTable -> addElement ( new htmlEqualWidth ( array ( 'btn_sslCaCertUpload' , 'btn_sslCaCertImport' )));
}
$securityTable -> addElement ( $sslButtonTable , true );
$sslCerts = $cfg -> getSSLCaCertificates ();
if ( sizeof ( $sslCerts ) > 0 ) {
$certTable = new htmlTable ();
$certTable -> colspan = 3 ;
$certSpace = new htmlSpacer ( '5px' , null );
$certTable -> addElement ( new htmlOutputText ( '' ));
$certTable -> addElement ( new htmlOutputText ( _ ( 'Serial number' )));
$certTable -> addElement ( $certSpace );
$certTable -> addElement ( new htmlOutputText ( _ ( 'Valid to' )));
$certTable -> addElement ( $certSpace );
$certTable -> addElement ( new htmlOutputText ( _ ( 'Common name' )), true );
for ( $i = 0 ; $i < sizeof ( $sslCerts ); $i ++ ) {
$serial = isset ( $sslCerts [ $i ][ 'serialNumber' ]) ? $sslCerts [ $i ][ 'serialNumber' ] : '' ;
$validTo = isset ( $sslCerts [ $i ][ 'validTo_time_t' ]) ? $sslCerts [ $i ][ 'validTo_time_t' ] : '' ;
$cn = isset ( $sslCerts [ $i ][ 'subject' ][ 'CN' ]) ? $sslCerts [ $i ][ 'subject' ][ 'CN' ] : '' ;
$certTable -> addElement ( new htmlButton ( 'deleteCert_' . $i , 'delete.png' , true ));
$certTable -> addElement ( new htmlOutputText ( $serial ));
$certTable -> addElement ( $certSpace );
$certTable -> addElement ( new htmlOutputText ( formatSSLTimestamp ( $validTo )));
$certTable -> addElement ( $certSpace );
$certTable -> addElement ( new htmlOutputText ( $cn ), true );
}
$securityTable -> addElement ( new htmlOutputText ( '' ));
$securityTable -> addElement ( $certTable , true );
}
$container -> addElement ( $securityTable , true );
2010-11-18 19:29:44 +00:00
$container -> addElement ( new htmlSpacer ( null , '10px' ), true );
2006-04-16 12:49:12 +00:00
2010-11-18 19:29:44 +00:00
// password policy
2013-08-10 12:43:01 +00:00
$container -> addElement ( new htmlSubTitle ( _ ( " Password policy " )), true );
2010-11-18 19:29:44 +00:00
$policyTable = new htmlTable ();
$options20 = array ( 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 , 16 , 17 , 18 , 19 , 20 );
$options4 = array ( 0 , 1 , 2 , 3 , 4 );
$policyTable -> addElement ( new htmlTableExtendedSelect ( 'passwordMinLength' , $options20 , array ( $cfg -> passwordMinLength ), _ ( 'Minimum password length' ), '242' ), true );
2014-04-05 18:42:46 +00:00
$policyTable -> addVerticalSpace ( '5px' );
2010-11-18 19:29:44 +00:00
$policyTable -> addElement ( new htmlTableExtendedSelect ( 'passwordMinLower' , $options20 , array ( $cfg -> passwordMinLower ), _ ( 'Minimum lowercase characters' ), '242' ), true );
$policyTable -> addElement ( new htmlTableExtendedSelect ( 'passwordMinUpper' , $options20 , array ( $cfg -> passwordMinUpper ), _ ( 'Minimum uppercase characters' ), '242' ), true );
$policyTable -> addElement ( new htmlTableExtendedSelect ( 'passwordMinNumeric' , $options20 , array ( $cfg -> passwordMinNumeric ), _ ( 'Minimum numeric characters' ), '242' ), true );
$policyTable -> addElement ( new htmlTableExtendedSelect ( 'passwordMinSymbol' , $options20 , array ( $cfg -> passwordMinSymbol ), _ ( 'Minimum symbolic characters' ), '242' ), true );
$policyTable -> addElement ( new htmlTableExtendedSelect ( 'passwordMinClasses' , $options4 , array ( $cfg -> passwordMinClasses ), _ ( 'Minimum character classes' ), '242' ), true );
2014-04-05 18:42:46 +00:00
$policyTable -> addVerticalSpace ( '5px' );
$rulesCountOptions = array ( _ ( 'all' ) => '-1' , '3' => '3' , '4' => '4' );
$rulesCountSelect = new htmlTableExtendedSelect ( 'passwordRulesCount' , $rulesCountOptions , array ( $cfg -> checkedRulesCount ), _ ( 'Number of rules that must match' ), '246' );
$rulesCountSelect -> setHasDescriptiveElements ( true );
$policyTable -> addElement ( $rulesCountSelect , true );
$passwordMustNotContainUser = ( $cfg -> passwordMustNotContainUser === 'true' ) ? true : false ;
$policyTable -> addElement ( new htmlTableExtendedInputCheckbox ( 'passwordMustNotContainUser' , $passwordMustNotContainUser , _ ( 'Password must not contain user name' ), '247' ), true );
$passwordMustNotContain3Chars = ( $cfg -> passwordMustNotContain3Chars === 'true' ) ? true : false ;
$policyTable -> addElement ( new htmlTableExtendedInputCheckbox ( 'passwordMustNotContain3Chars' , $passwordMustNotContain3Chars , _ ( 'Password must not contain part of user/first/last name' ), '248' ), true );
2013-08-10 12:43:01 +00:00
$container -> addElement ( $policyTable , true );
2010-11-18 19:29:44 +00:00
$container -> addElement ( new htmlSpacer ( null , '10px' ), true );
// logging
2013-08-10 12:43:01 +00:00
$container -> addElement ( new htmlSubTitle ( _ ( " Logging " )), true );
2010-11-18 19:29:44 +00:00
$loggingTable = new htmlTable ();
$levelOptions = array ( _ ( " Debug " ) => LOG_DEBUG , _ ( " Notice " ) => LOG_NOTICE , _ ( " Warning " ) => LOG_WARNING , _ ( " Error " ) => LOG_ERR );
$levelSelect = new htmlTableExtendedSelect ( 'logLevel' , $levelOptions , array ( $cfg -> logLevel ), _ ( " Log level " ), '239' );
$levelSelect -> setHasDescriptiveElements ( true );
$loggingTable -> addElement ( $levelSelect , true );
$destinationOptions = array ( _ ( " No logging " ) => " none " , _ ( " System logging " ) => " syslog " , _ ( " File " ) => 'file' );
$destinationSelected = 'file' ;
$destinationPath = $cfg -> logDestination ;
if ( $cfg -> logDestination == 'NONE' ) {
$destinationSelected = 'none' ;
$destinationPath = '' ;
}
elseif ( $cfg -> logDestination == 'SYSLOG' ) {
$destinationSelected = 'syslog' ;
$destinationPath = '' ;
}
$loggingTable -> addElement ( new htmlTableExtendedRadio ( _ ( " Log destination " ), 'logDestination' , $destinationOptions , $destinationSelected , '240' ), true );
$loggingTable -> addElement ( new htmlOutputText ( '' ));
$loggingTable -> addElement ( new htmlInputField ( 'logFile' , $destinationPath ), true );
2013-10-18 17:43:09 +00:00
$loggingTable -> addElement ( new htmlSpacer ( null , '10px' ), true );
$errorLogOptions = array (
_ ( 'PHP system setting' ) => LAMCfgMain :: ERROR_REPORTING_SYSTEM ,
2014-04-21 10:52:46 +00:00
_ ( 'default' ) => LAMCfgMain :: ERROR_REPORTING_DEFAULT ,
_ ( 'all' ) => LAMCfgMain :: ERROR_REPORTING_ALL
2013-10-18 17:43:09 +00:00
);
$errorLogSelect = new htmlTableExtendedSelect ( 'errorReporting' , $errorLogOptions , array ( $cfg -> errorReporting ), _ ( 'PHP error reporting' ), '244' );
$errorLogSelect -> setHasDescriptiveElements ( true );
$loggingTable -> addElement ( $errorLogSelect , true );
2013-08-10 12:43:01 +00:00
$container -> addElement ( $loggingTable , true );
2010-11-18 19:29:44 +00:00
$container -> addElement ( new htmlSpacer ( null , '10px' ), true );
2013-10-16 16:48:59 +00:00
// additional options
if ( isLAMProVersion ()) {
$container -> addElement ( new htmlSubTitle ( _ ( 'Additional options' )), true );
$additionalTable = new htmlTable ();
$mailEOLOptions = array (
_ ( 'Default (\r\n)' ) => 'default' ,
_ ( 'Non-standard (\n)' ) => 'unix'
);
$mailEOLSelect = new htmlTableExtendedSelect ( 'mailEOL' , $mailEOLOptions , array ( $cfg -> mailEOL ), _ ( 'Email format' ), '243' );
$mailEOLSelect -> setHasDescriptiveElements ( true );
$additionalTable -> addElement ( $mailEOLSelect , true );
$container -> addElement ( $additionalTable , true );
$container -> addElement ( new htmlSpacer ( null , '10px' ), true );
}
2010-11-18 19:29:44 +00:00
// change master password
2013-08-10 12:43:01 +00:00
$container -> addElement ( new htmlSubTitle ( _ ( " Change master password " )), true );
2010-11-18 19:29:44 +00:00
$passwordTable = new htmlTable ();
$pwd1 = new htmlTableExtendedInputField ( _ ( " New master password " ), 'masterpassword' , '' , '235' );
$pwd1 -> setIsPassword ( true );
$passwordTable -> addElement ( $pwd1 , true );
2012-01-14 13:24:03 +00:00
$pwd2 = new htmlTableExtendedInputField ( _ ( " Reenter password " ), 'masterpassword2' , '' );
2010-11-18 19:29:44 +00:00
$pwd2 -> setIsPassword ( true );
2014-05-25 14:37:05 +00:00
$pwd2 -> setSameValueFieldID ( 'masterpassword' );
2010-11-18 19:29:44 +00:00
$passwordTable -> addElement ( $pwd2 , true );
2013-08-10 12:43:01 +00:00
$container -> addElement ( $passwordTable , true );
2010-11-18 19:29:44 +00:00
$container -> addElement ( new htmlSpacer ( null , '20px' ), true );
// buttons
if ( $cfg -> isWritable ()) {
$buttonTable = new htmlTable ();
$buttonTable -> addElement ( new htmlButton ( 'submit' , _ ( " Ok " )));
$buttonTable -> addElement ( new htmlButton ( 'cancel' , _ ( " Cancel " )));
2013-08-10 12:43:01 +00:00
$container -> addElement ( $buttonTable , true );
2010-11-18 19:29:44 +00:00
}
2013-08-10 12:43:01 +00:00
$container -> addElement ( new htmlHiddenInput ( 'submitFormData' , '1' ), true );
2010-11-18 19:29:44 +00:00
$tabindex = 1 ;
2016-09-02 12:57:11 +00:00
parseHtml ( null , $container , array (), false , $tabindex , 'user' );
2013-08-10 12:43:01 +00:00
/**
* Formats an LDAP time string ( e . g . from createTimestamp ) .
2015-08-23 17:56:27 +00:00
*
2013-08-10 12:43:01 +00:00
* @ param String $time LDAP time value
* @ return String formated time
*/
function formatSSLTimestamp ( $time ) {
$matches = array ();
if ( ! empty ( $time )) {
2015-08-23 17:56:27 +00:00
$timeZone = 'UTC' ;
$sysTimeZone = @ date_default_timezone_get ();
if ( ! empty ( $sysTimeZone )) {
$timeZone = $sysTimeZone ;
}
$date = new DateTime ( '@' . $time , new DateTimeZone ( $timeZone ));
return $date -> format ( 'd.m.Y' );
2013-08-10 12:43:01 +00:00
}
return '' ;
}
2010-11-18 19:29:44 +00:00
?>
2006-09-24 14:19:50 +00:00
2006-04-16 12:49:12 +00:00
</ form >
< p >< br ></ p >
</ body >
</ html >