diff --git a/graylog2-server/src/main/java/org/graylog2/Configuration.java b/graylog2-server/src/main/java/org/graylog2/Configuration.java index c378a32f6dcd..da5afb1418e8 100644 --- a/graylog2-server/src/main/java/org/graylog2/Configuration.java +++ b/graylog2-server/src/main/java/org/graylog2/Configuration.java @@ -21,6 +21,7 @@ import com.github.joschi.jadconfig.validators.PositiveIntegerValidator; import com.github.joschi.jadconfig.validators.PositiveLongValidator; import org.graylog2.plugin.BaseConfiguration; +import org.joda.time.DateTimeZone; import java.net.URI; @@ -75,6 +76,12 @@ public class Configuration extends BaseConfiguration { @Parameter(value = "root_password_sha2", required = true) private String rootPasswordSha2; + @Parameter(value = "root_timezone") + private DateTimeZone rootTimeZone = DateTimeZone.UTC; + + @Parameter(value = "root_email") + private String rootEmail = ""; + @Parameter(value = "allow_leading_wildcard_searches") private boolean allowLeadingWildcardSearches = false; @@ -171,6 +178,14 @@ public String getRootPasswordSha2() { return rootPasswordSha2; } + public DateTimeZone getRootTimeZone() { + return rootTimeZone; + } + + public String getRootEmail() { + return rootEmail; + } + public boolean isAllowLeadingWildcardSearches() { return allowLeadingWildcardSearches; } diff --git a/graylog2-server/src/main/java/org/graylog2/users/UserImpl.java b/graylog2-server/src/main/java/org/graylog2/users/UserImpl.java index f1374ecc7c8a..53b9dc7cb432 100644 --- a/graylog2-server/src/main/java/org/graylog2/users/UserImpl.java +++ b/graylog2-server/src/main/java/org/graylog2/users/UserImpl.java @@ -38,6 +38,7 @@ import java.util.concurrent.TimeUnit; import static com.google.common.base.MoreObjects.firstNonNull; +import static com.google.common.base.Strings.nullToEmpty; @CollectionName("users") public class UserImpl extends PersistedImpl implements User { @@ -52,6 +53,8 @@ public class UserImpl extends PersistedImpl implements User { public static final String TIMEZONE = "timezone"; public static final String EXTERNAL_USER = "external_user"; public static final String SESSION_TIMEOUT = "session_timeout_ms"; + public static final String STARTPAGE = "startpage"; + public static final String HASH_ALGORITHM = "SHA-1"; public static final int MAX_USERNAME_LENGTH = 100; public static final int MAX_EMAIL_LENGTH = 254; @@ -107,8 +110,7 @@ public void setName(final String username) { @Override public String getEmail() { - final Object email = fields.get(EMAIL); - return email == null ? "" : email.toString(); + return nullToEmpty((String) fields.get(EMAIL)); } @Override @@ -142,9 +144,9 @@ public void setPreferences(final Map preferences) { public Map getStartpage() { final Map startpage = Maps.newHashMap(); - if (fields.containsKey("startpage")) { + if (fields.containsKey(STARTPAGE)) { @SuppressWarnings("unchecked") - final Map obj = (Map) fields.get("startpage"); + final Map obj = (Map) fields.get(STARTPAGE); startpage.put("type", obj.get("type")); startpage.put("id", obj.get("id")); } @@ -181,14 +183,14 @@ public void setPassword(final String password, final String passwordSecret) { // If no password is given, we leave the hashed password empty and we fail during validation. setHashedPassword(""); } else { - final String newPassword = new SimpleHash("SHA-1", password, passwordSecret).toString(); + final String newPassword = new SimpleHash(HASH_ALGORITHM, password, passwordSecret).toString(); setHashedPassword(newPassword); } } @Override public boolean isUserPassword(final String password, final String passwordSecret) { - final String oldPasswordHash = new SimpleHash("SHA-1", password, passwordSecret).toString(); + final String oldPasswordHash = new SimpleHash(HASH_ALGORITHM, password, passwordSecret).toString(); return getHashedPassword().equals(oldPasswordHash); } @@ -247,7 +249,7 @@ public void setStartpage(final String type, final String id) { startpage.put("id", id); } - this.fields.put("startpage", startpage); + this.fields.put(STARTPAGE, startpage); } public static class LocalAdminUser extends UserImpl { @@ -269,7 +271,7 @@ public String getFullName() { } public String getEmail() { - return "none"; + return configuration.getRootEmail(); } @Override @@ -304,7 +306,7 @@ public long getSessionTimeoutMs() { @Override public DateTimeZone getTimeZone() { - return null; + return configuration.getRootTimeZone(); } @Override diff --git a/misc/graylog2.conf b/misc/graylog2.conf index f6aa5883cb76..a12ccfea7efe 100644 --- a/misc/graylog2.conf +++ b/misc/graylog2.conf @@ -21,6 +21,14 @@ password_secret = # and put the resulting hash value into the following line root_password_sha2 = +# The email address of the root user. +# Default is empty +#root_email = "" + +# The time zone setting of the root user. +# Default is UTC +#root_timezone = UTC + # Set plugin directory here (relative or absolute) plugin_dir = plugin