Merge pull request #14 from informatik-ag-ngl/f/advanced_login
Support classes for handshake rejection
This commit is contained in:
		@@ -1,11 +1,111 @@
 | 
				
			|||||||
eclipse.preferences.version=1
 | 
					eclipse.preferences.version=1
 | 
				
			||||||
 | 
					org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
 | 
				
			||||||
 | 
					org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
 | 
				
			||||||
 | 
					org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
 | 
				
			||||||
 | 
					org.eclipse.jdt.core.compiler.annotation.nonnull.secondary=
 | 
				
			||||||
 | 
					org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
 | 
				
			||||||
 | 
					org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary=
 | 
				
			||||||
 | 
					org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
 | 
				
			||||||
 | 
					org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
 | 
				
			||||||
 | 
					org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
 | 
				
			||||||
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
 | 
					org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
 | 
				
			||||||
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
 | 
					org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
 | 
				
			||||||
org.eclipse.jdt.core.compiler.compliance=1.8
 | 
					org.eclipse.jdt.core.compiler.compliance=1.8
 | 
				
			||||||
 | 
					org.eclipse.jdt.core.compiler.problem.APILeak=warning
 | 
				
			||||||
 | 
					org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
 | 
				
			||||||
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
 | 
					org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
 | 
				
			||||||
 | 
					org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
 | 
				
			||||||
 | 
					org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
 | 
				
			||||||
 | 
					org.eclipse.jdt.core.compiler.problem.deadCode=warning
 | 
				
			||||||
 | 
					org.eclipse.jdt.core.compiler.problem.deprecation=warning
 | 
				
			||||||
 | 
					org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
 | 
				
			||||||
 | 
					org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
 | 
				
			||||||
 | 
					org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
 | 
				
			||||||
 | 
					org.eclipse.jdt.core.compiler.problem.emptyStatement=info
 | 
				
			||||||
org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
 | 
					org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
 | 
				
			||||||
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
 | 
					org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
 | 
				
			||||||
 | 
					org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=warning
 | 
				
			||||||
 | 
					org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
 | 
				
			||||||
 | 
					org.eclipse.jdt.core.compiler.problem.fatalOptionalError=disabled
 | 
				
			||||||
 | 
					org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore
 | 
				
			||||||
 | 
					org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
 | 
				
			||||||
 | 
					org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
 | 
				
			||||||
org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
 | 
					org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
 | 
				
			||||||
 | 
					org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
 | 
				
			||||||
 | 
					org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
 | 
				
			||||||
 | 
					org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
 | 
				
			||||||
 | 
					org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore
 | 
				
			||||||
 | 
					org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=warning
 | 
				
			||||||
 | 
					org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
 | 
				
			||||||
 | 
					org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
 | 
				
			||||||
 | 
					org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
 | 
				
			||||||
 | 
					org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
 | 
				
			||||||
 | 
					org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
 | 
				
			||||||
 | 
					org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
 | 
				
			||||||
 | 
					org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning
 | 
				
			||||||
 | 
					org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
 | 
				
			||||||
 | 
					org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
 | 
				
			||||||
 | 
					org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
 | 
				
			||||||
 | 
					org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
 | 
				
			||||||
 | 
					org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
 | 
				
			||||||
 | 
					org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore
 | 
				
			||||||
 | 
					org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
 | 
				
			||||||
 | 
					org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning
 | 
				
			||||||
 | 
					org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
 | 
				
			||||||
 | 
					org.eclipse.jdt.core.compiler.problem.nullReference=warning
 | 
				
			||||||
 | 
					org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
 | 
				
			||||||
 | 
					org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
 | 
				
			||||||
 | 
					org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
 | 
				
			||||||
 | 
					org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
 | 
				
			||||||
 | 
					org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning
 | 
				
			||||||
 | 
					org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=ignore
 | 
				
			||||||
 | 
					org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore
 | 
				
			||||||
 | 
					org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
 | 
				
			||||||
 | 
					org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
 | 
				
			||||||
 | 
					org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
 | 
				
			||||||
 | 
					org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
 | 
				
			||||||
 | 
					org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=warning
 | 
				
			||||||
 | 
					org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
 | 
				
			||||||
 | 
					org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
 | 
				
			||||||
 | 
					org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
 | 
				
			||||||
org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=ignore
 | 
					org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=ignore
 | 
				
			||||||
 | 
					org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
 | 
				
			||||||
 | 
					org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
 | 
				
			||||||
 | 
					org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
 | 
				
			||||||
 | 
					org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
 | 
				
			||||||
 | 
					org.eclipse.jdt.core.compiler.problem.suppressWarningsNotFullyAnalysed=info
 | 
				
			||||||
 | 
					org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
 | 
				
			||||||
 | 
					org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
 | 
				
			||||||
 | 
					org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning
 | 
				
			||||||
 | 
					org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
 | 
				
			||||||
 | 
					org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=disabled
 | 
				
			||||||
 | 
					org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
 | 
				
			||||||
 | 
					org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
 | 
				
			||||||
 | 
					org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
 | 
				
			||||||
 | 
					org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
 | 
				
			||||||
 | 
					org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning
 | 
				
			||||||
 | 
					org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled
 | 
				
			||||||
 | 
					org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=info
 | 
				
			||||||
 | 
					org.eclipse.jdt.core.compiler.problem.unnecessaryElse=warning
 | 
				
			||||||
 | 
					org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
 | 
				
			||||||
 | 
					org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
 | 
				
			||||||
 | 
					org.eclipse.jdt.core.compiler.problem.unstableAutoModuleName=warning
 | 
				
			||||||
 | 
					org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=warning
 | 
				
			||||||
 | 
					org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
 | 
				
			||||||
 | 
					org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
 | 
				
			||||||
 | 
					org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
 | 
				
			||||||
 | 
					org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore
 | 
				
			||||||
 | 
					org.eclipse.jdt.core.compiler.problem.unusedImport=warning
 | 
				
			||||||
 | 
					org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
 | 
				
			||||||
 | 
					org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
 | 
				
			||||||
 | 
					org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
 | 
				
			||||||
 | 
					org.eclipse.jdt.core.compiler.problem.unusedParameter=warning
 | 
				
			||||||
 | 
					org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
 | 
				
			||||||
 | 
					org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
 | 
				
			||||||
 | 
					org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
 | 
				
			||||||
 | 
					org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
 | 
				
			||||||
 | 
					org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=warning
 | 
				
			||||||
 | 
					org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
 | 
				
			||||||
 | 
					org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
 | 
				
			||||||
org.eclipse.jdt.core.compiler.release=disabled
 | 
					org.eclipse.jdt.core.compiler.release=disabled
 | 
				
			||||||
org.eclipse.jdt.core.compiler.source=1.8
 | 
					org.eclipse.jdt.core.compiler.source=1.8
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -17,24 +17,24 @@ import java.util.Formatter;
 | 
				
			|||||||
 */
 | 
					 */
 | 
				
			||||||
public class LoginCredentials implements Serializable {
 | 
					public class LoginCredentials implements Serializable {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	private final String	name;
 | 
						private final String	identifier;
 | 
				
			||||||
	private final byte[]	passwordHash;
 | 
						private final byte[]	passwordHash;
 | 
				
			||||||
	private final boolean	registration;
 | 
						private final boolean	registration;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	private static final long serialVersionUID = -7395245059059523314L;
 | 
						private static final long serialVersionUID = -7395245059059523314L;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/**
 | 
						/**
 | 
				
			||||||
	 * Creates an in stance of {@link LoginCredentials}.
 | 
						 * Creates an instance of {@link LoginCredentials} for a new {@link User}.
 | 
				
			||||||
	 *
 | 
						 *
 | 
				
			||||||
	 * @param name         the name of the user
 | 
						 * @param identifier   the identifier of the user
 | 
				
			||||||
	 * @param password     the password of the user (will be converted to a hash)
 | 
						 * @param password     the password of the user (will be converted to a hash)
 | 
				
			||||||
	 * @param registration signifies that these credentials are used for user
 | 
						 * @param registration signifies that these credentials are used for user
 | 
				
			||||||
	 *                     registration instead of user login
 | 
						 *                     registration instead of user login
 | 
				
			||||||
	 * @throws NoSuchAlgorithmException if the algorithm used is unknown
 | 
						 * @throws NoSuchAlgorithmException if the algorithm used is unknown
 | 
				
			||||||
	 * @since Envoy Common v0.2-alpha
 | 
						 * @since Envoy Common v0.2-alpha
 | 
				
			||||||
	 */
 | 
						 */
 | 
				
			||||||
	public LoginCredentials(String name, char[] password, boolean registration) throws NoSuchAlgorithmException {
 | 
						public LoginCredentials(String identifier, char[] password, boolean registration) throws NoSuchAlgorithmException {
 | 
				
			||||||
		this.name			= name;
 | 
							this.identifier		= identifier;
 | 
				
			||||||
		passwordHash		= getSha256(toByteArray(password));
 | 
							passwordHash		= getSha256(toByteArray(password));
 | 
				
			||||||
		this.registration	= registration;
 | 
							this.registration	= registration;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@@ -53,7 +53,7 @@ public class LoginCredentials implements Serializable {
 | 
				
			|||||||
	@Override
 | 
						@Override
 | 
				
			||||||
	public String toString() {
 | 
						public String toString() {
 | 
				
			||||||
		try (Formatter form = new Formatter()) {
 | 
							try (Formatter form = new Formatter()) {
 | 
				
			||||||
			form.format("LoginCredentials[name=%s,passwordHash=", name);
 | 
								form.format("LoginCredentials[identifier=%s,passwordHash=", identifier);
 | 
				
			||||||
			for (byte element : passwordHash)
 | 
								for (byte element : passwordHash)
 | 
				
			||||||
				form.format("%02x", element);
 | 
									form.format("%02x", element);
 | 
				
			||||||
			return form.format(",registration=%b]", registration).toString();
 | 
								return form.format(",registration=%b]", registration).toString();
 | 
				
			||||||
@@ -61,10 +61,10 @@ public class LoginCredentials implements Serializable {
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/**
 | 
						/**
 | 
				
			||||||
	 * @return the name of the user performing the login
 | 
						 * @return the identifier of the user performing the login
 | 
				
			||||||
	 * @since Envoy Common v0.2-alpha
 | 
						 * @since Envoy Common v0.2-alpha
 | 
				
			||||||
	 */
 | 
						 */
 | 
				
			||||||
	public String getName() { return name; }
 | 
						public String getIdentifier() { return identifier; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/**
 | 
						/**
 | 
				
			||||||
	 * @return the password hash of the user performing the login
 | 
						 * @return the password hash of the user performing the login
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -42,5 +42,8 @@ public abstract class Event<T> implements Serializable {
 | 
				
			|||||||
		private static final long serialVersionUID = -9019362144094097997L;
 | 
							private static final long serialVersionUID = -9019362144094097997L;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		protected Valueless() { super(null); }
 | 
							protected Valueless() { super(null); }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public String toString() { return this.getClass().getSimpleName(); }
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,5 +1,7 @@
 | 
				
			|||||||
package envoy.event;
 | 
					package envoy.event;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import envoy.data.LoginCredentials;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * Signifies to the client that the handshake failed for the attached
 | 
					 * Signifies to the client that the handshake failed for the attached
 | 
				
			||||||
 * reason.<br>
 | 
					 * reason.<br>
 | 
				
			||||||
@@ -13,6 +15,35 @@ package envoy.event;
 | 
				
			|||||||
 */
 | 
					 */
 | 
				
			||||||
public class HandshakeRejectionEvent extends Event<String> {
 | 
					public class HandshakeRejectionEvent extends Event<String> {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/**
 | 
				
			||||||
 | 
						 * Select this value if a given password hash was incorrect
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						public static final String WRONG_PASSWORD = "an incorrect password was entered";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/**
 | 
				
			||||||
 | 
						 * Select this value if a given {@link LoginCredentials} pointed at a client who
 | 
				
			||||||
 | 
						 * is already online
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						public static final String ALREADY_ONLINE = "user is already online";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/**
 | 
				
			||||||
 | 
						 * Select this value if a given {@link LoginCredentials} pointed at a client who
 | 
				
			||||||
 | 
						 * does not exist
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						public static final String USER_DOES_NOT_EXIST = "user does not exist";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/**
 | 
				
			||||||
 | 
						 * Select this value if a given {@link LoginCredentials} with
 | 
				
			||||||
 | 
						 * {@link LoginCredentials#isRegistration()}==true points at an already existing
 | 
				
			||||||
 | 
						 * user
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						public static final String USER_EXISTS_ALREADY = "user can not be created as he already exists";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/**
 | 
				
			||||||
 | 
						 * Select this value if an unknown error occurred
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						public static final String UNKNOWN_REASON = "cause of failure is unknown";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	private static final long serialVersionUID = -8723270093452609197L;
 | 
						private static final long serialVersionUID = -8723270093452609197L;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/**
 | 
						/**
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user