Skip to content

Commit 1c1e8cd

Browse files
committed
Merge branch 'enh-ngconfig'
2 parents bc5430f + 1c04d8d commit 1c1e8cd

File tree

166 files changed

+6328
-4432
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

166 files changed

+6328
-4432
lines changed

server/pom.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@
5252
</goals>
5353
<phase>test</phase>
5454
<configuration>
55+
<trimStackTrace>false</trimStackTrace>
5556
<skipTests>${skipTests}</skipTests>
5657
<excludes>
5758
<exclude>**/ExtendedTest*.java</exclude>

server/src/main/java/password/pwm/PwmAboutProperty.java

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,10 @@
2828
import password.pwm.util.java.StringUtil;
2929
import password.pwm.util.logging.PwmLogger;
3030

31+
import javax.net.ssl.SSLContext;
3132
import java.lang.management.ManagementFactory;
3233
import java.nio.charset.Charset;
34+
import java.security.NoSuchAlgorithmException;
3335
import java.time.Instant;
3436
import java.util.Collections;
3537
import java.util.Date;
@@ -69,6 +71,7 @@ public enum PwmAboutProperty
6971
app_secureBlockAlgorithm( null, pwmApplication -> pwmApplication.getSecureService().getDefaultBlockAlgorithm().getLabel() ),
7072
app_secureHashAlgorithm( null, pwmApplication -> pwmApplication.getSecureService().getDefaultHashAlgorithm().toString() ),
7173
app_ldapProfileCount( null, pwmApplication -> Integer.toString( pwmApplication.getConfig().getLdapProfiles().size() ) ),
74+
app_ldapConnectionCount( null, pwmApplication -> Integer.toString( pwmApplication.getLdapConnectionService().connectionCount() ) ),
7275

7376
build_Time( "Build Time", pwmApplication -> PwmConstants.BUILD_TIME ),
7477
build_Number( "Build Number", pwmApplication -> PwmConstants.BUILD_NUMBER ),
@@ -91,9 +94,10 @@ public enum PwmAboutProperty
9194
java_osName( "Operating System Name", pwmApplication -> System.getProperty( "os.name" ) ),
9295
java_osVersion( "Operating System Version", pwmApplication -> System.getProperty( "os.version" ) ),
9396
java_osArch( "Operating System Architecture", pwmApplication -> System.getProperty( "os.arch" ) ),
94-
java_randomAlgorithm( null, pwmApplication -> pwmApplication.getSecureService().pwmRandom().getAlgorithm() ),
95-
java_defaultCharset( null, pwmApplication -> Charset.defaultCharset().name() ),
97+
java_randomAlgorithm( "Random Algorithm", pwmApplication -> pwmApplication.getSecureService().pwmRandom().getAlgorithm() ),
98+
java_defaultCharset( "Default Character Set", pwmApplication -> Charset.defaultCharset().name() ),
9699
java_appServerInfo( "Java AppServer Info", pwmApplication -> pwmApplication.getPwmEnvironment().getContextManager().getServerInfo() ),
100+
java_sslVersions( "Java SSL Versions", pwmApplication -> readSslVersions() ),
97101

98102
database_driverName( null,
99103
pwmApplication -> pwmApplication.getDatabaseService().getConnectionDebugProperties().get( DatabaseService.DatabaseAboutProperty.driverName ) ),
@@ -188,4 +192,16 @@ public static Map<String, String> toStringMap( final Map<PwmAboutProperty, Strin
188192
}
189193
return Collections.unmodifiableMap( outputProps );
190194
}
195+
196+
private static String readSslVersions()
197+
{
198+
try
199+
{
200+
return String.join( " ", SSLContext.getDefault().getSupportedSSLParameters().getProtocols() );
201+
}
202+
catch ( NoSuchAlgorithmException e )
203+
{
204+
return "";
205+
}
206+
}
191207
}

server/src/main/java/password/pwm/PwmApplication.java

Lines changed: 32 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@
2828
import password.pwm.bean.UserIdentity;
2929
import password.pwm.config.Configuration;
3030
import password.pwm.config.PwmSetting;
31+
import password.pwm.config.stored.StoredConfiguration;
32+
import password.pwm.config.stored.StoredConfigurationUtil;
3133
import password.pwm.error.ErrorInformation;
3234
import password.pwm.error.PwmError;
3335
import password.pwm.error.PwmException;
@@ -101,8 +103,8 @@
101103
import java.util.Locale;
102104
import java.util.Map;
103105
import java.util.concurrent.ExecutorService;
104-
105106
import java.util.concurrent.atomic.AtomicInteger;
107+
import java.util.function.Supplier;
106108

107109
/**
108110
* A repository for objects common to the servlet context. A singleton
@@ -305,34 +307,16 @@ private void postInitTasks( )
305307
{
306308
final Instant startTime = Instant.now();
307309

308-
pwmEnvironment.getConfig().outputToLog();
309-
310-
// detect if config has been modified since previous startup
311310
try
312311
{
313-
final String previousHash = readAppAttribute( AppAttribute.CONFIG_HASH, String.class );
314-
final String currentHash = pwmEnvironment.getConfig().configurationHash();
315-
if ( previousHash == null || !previousHash.equals( currentHash ) )
316-
{
317-
writeAppAttribute( AppAttribute.CONFIG_HASH, currentHash );
318-
LOGGER.warn( "configuration checksum does not match previously seen checksum, configuration has been modified since last startup" );
319-
if ( this.getAuditManager() != null )
320-
{
321-
final String modifyMessage = "configuration was modified directly (not using ConfigEditor UI)";
322-
this.getAuditManager().submit( new AuditRecordFactory( this ).createUserAuditRecord(
323-
AuditEvent.MODIFY_CONFIGURATION,
324-
null,
325-
null,
326-
modifyMessage
327-
) );
328-
}
329-
}
312+
outputConfigurationToLog( this );
330313
}
331-
catch ( Exception e )
314+
catch ( PwmException e )
332315
{
333-
LOGGER.debug( () -> "unable to detect if configuration has been modified since previous startup: " + e.getMessage() );
316+
LOGGER.error( "error outputting log to debug: " + e.getMessage() );
334317
}
335318

319+
336320
if ( this.getConfig() != null )
337321
{
338322
final Map<AppProperty, String> nonDefaultProperties = getConfig().readAllNonDefaultAppProperties();
@@ -511,6 +495,31 @@ private static void outputTomcatConf( final PwmApplication pwmApplication ) thro
511495
}
512496
}
513497

498+
private static void outputConfigurationToLog( final PwmApplication pwmApplication )
499+
throws PwmUnrecoverableException
500+
{
501+
if ( !LOGGER.isEnabled( PwmLogLevel.TRACE ) )
502+
{
503+
return;
504+
}
505+
506+
final StoredConfiguration storedConfiguration = pwmApplication.getConfig().getStoredConfiguration();
507+
final Map<String, String> debugStrings = StoredConfigurationUtil.makeDebugMap( storedConfiguration, storedConfiguration.modifiedItems(), PwmConstants.DEFAULT_LOCALE );
508+
final List<Supplier<CharSequence>> outputStrings = new ArrayList<>();
509+
510+
for ( final Map.Entry<String, String> entry : debugStrings.entrySet() )
511+
{
512+
final String spacedValue = entry.getValue().replace( "\n", "\n " );
513+
final String output = " " + entry.getKey() + "\n " + spacedValue + "\n";
514+
outputStrings.add( () -> output );
515+
}
516+
517+
LOGGER.trace( () -> "--begin current configuration output--" );
518+
outputStrings.forEach( LOGGER::trace );
519+
LOGGER.trace( () -> "--end current configuration output--" );
520+
}
521+
522+
514523
public String getInstanceID( )
515524
{
516525
return instanceID;

server/src/main/java/password/pwm/PwmConstants.java

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@
2323
import org.apache.commons.csv.CSVFormat;
2424
import password.pwm.util.java.JsonUtil;
2525
import password.pwm.util.java.StringUtil;
26-
import password.pwm.util.secure.PwmHashAlgorithm;
2726

2827
import java.io.InputStream;
2928
import java.net.URL;
@@ -101,6 +100,7 @@ public abstract class PwmConstants
101100

102101
public static final String LDAP_AD_PASSWORD_POLICY_CONTROL_ASN = "1.2.840.113556.1.4.2066";
103102
public static final String PROFILE_ID_ALL = "all";
103+
public static final String PROFILE_ID_DEFAULT = "default";
104104

105105
public static final String TOKEN_KEY_PWD_CHG_DATE = "_lastPwdChange";
106106

@@ -118,9 +118,6 @@ public abstract class PwmConstants
118118
public static final String REQUEST_ATTR_FORGOTTEN_PW_AVAIL_TOKEN_DEST_CACHE = "ForgottenPw-AvailableTokenDestCache";
119119
public static final String REQUEST_ATTR_PWM_APPLICATION = "PwmApplication";
120120

121-
public static final PwmHashAlgorithm SETTING_CHECKSUM_HASH_METHOD = PwmHashAlgorithm.SHA256;
122-
123-
124121
public static final String LOG_REMOVED_VALUE_REPLACEMENT = readPwmConstantsBundle( "log.removedValue" );
125122

126123
public static final Collection<Locale> INCLUDED_LOCALES;

server/src/main/java/password/pwm/PwmEnvironment.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,8 @@ public enum ApplicationParameter
7474
AppliancePort,
7575
ApplianceHostnameFile,
7676
ApplianceTokenFile,
77-
InstanceID,;
77+
InstanceID,
78+
InitConsoleLogLevel,;
7879

7980
public static ApplicationParameter forString( final String input )
8081
{
@@ -317,7 +318,7 @@ public static Map<ApplicationParameter, String> readApplicationParmsFromSystem(
317318
final String rawValue = readValueFromSystem( EnvironmentParameter.applicationParamFile, contextName );
318319
if ( rawValue != null )
319320
{
320-
return parseApplicationParamValueParameter( rawValue );
321+
return readAppParametersFromPath( rawValue );
321322
}
322323
return Collections.emptyMap();
323324
}
@@ -393,7 +394,7 @@ public static Collection<ApplicationFlag> parseApplicationFlagValueParameter( fi
393394
return returnFlags;
394395
}
395396

396-
public static Map<ApplicationParameter, String> parseApplicationParamValueParameter( final String input )
397+
public static Map<ApplicationParameter, String> readAppParametersFromPath( final String input )
397398
{
398399
if ( input == null )
399400
{

server/src/main/java/password/pwm/bean/PrivateKeyCertificate.java

Lines changed: 5 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -20,30 +20,16 @@
2020

2121
package password.pwm.bean;
2222

23+
import lombok.Value;
24+
2325
import java.io.Serializable;
2426
import java.security.PrivateKey;
2527
import java.security.cert.X509Certificate;
26-
import java.util.Collections;
2728
import java.util.List;
2829

30+
@Value
2931
public class PrivateKeyCertificate implements Serializable
3032
{
31-
private final List<X509Certificate> certificates;
32-
private final PrivateKey key;
33-
34-
public PrivateKeyCertificate( final List<X509Certificate> certificates, final PrivateKey key )
35-
{
36-
this.certificates = Collections.unmodifiableList( certificates );
37-
this.key = key;
38-
}
39-
40-
public List<X509Certificate> getCertificates( )
41-
{
42-
return Collections.unmodifiableList( certificates );
43-
}
44-
45-
public PrivateKey getKey( )
46-
{
47-
return key;
48-
}
33+
private List<X509Certificate> certificates;
34+
private PrivateKey key;
4935
}

0 commit comments

Comments
 (0)