summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorUdo Walter2020-10-27 18:56:19 +0100
committerUdo Walter2020-10-27 18:56:19 +0100
commit60c53021df660563d0be52b307f8dbbcbbbca22c (patch)
tree045b9c5063adf5d0275e9d47797c4987eef27c8d
parentFix logo in firefox (diff)
downloadbwlp-guacamole-ext-60c53021df660563d0be52b307f8dbbcbbbca22c.tar.gz
bwlp-guacamole-ext-60c53021df660563d0be52b307f8dbbcbbbca22c.tar.xz
bwlp-guacamole-ext-60c53021df660563d0be52b307f8dbbcbbbca22c.zip
fix language tags for Guacamole 1.2.0, workaround for greyed out continue button, add build logging
Build revision and timestamp are logged on start and sent as http request headers on connection to the sat server. (Bwlp-Plugin-Build-Revision and Bwlp-Plugin-Build-Timestamp) This build now requires guacamole >=1.2.0
-rw-r--r--pom.xml42
-rw-r--r--src/main/java/de/bwlehrpool/bwlp_guac/BwlpAuthenticationProvider.java44
-rw-r--r--src/main/java/de/bwlehrpool/bwlp_guac/ConnectionManager.java13
-rw-r--r--src/main/resources/continue-patch.html5
-rw-r--r--src/main/resources/guac-manifest.json7
-rw-r--r--src/main/resources/translations/de.json3
-rw-r--r--src/main/resources/translations/en.json3
7 files changed, 99 insertions, 18 deletions
diff --git a/pom.xml b/pom.xml
index 288cd6b..20cde4c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -11,13 +11,38 @@
<name>bwlp-guac</name>
<url>http://maven.apache.org</url>
+ <scm>
+ <connection>scm:git:git://git.openslx.org/bwlp/bwlp-guacamole-ext.git</connection>
+ </scm>
+
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+ <maven.build.timestamp.format>yyyy.MM.dd HH:mm</maven.build.timestamp.format>
</properties>
<build>
<plugins>
<plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>buildnumber-maven-plugin</artifactId>
+ <version>1.4</version>
+ <executions>
+ <execution>
+ <phase>validate</phase>
+ <goals>
+ <goal>create</goal>
+ <goal>create-timestamp</goal>
+ </goals>
+ </execution>
+ </executions>
+ <configuration>
+ <doCheck>false</doCheck>
+ <doUpdate>false</doUpdate>
+ <timestampPropertyName>revision.timestamp</timestampPropertyName>
+ </configuration>
+ </plugin>
+
+ <plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.6.1</version>
@@ -27,6 +52,21 @@
</configuration>
</plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-jar-plugin</artifactId>
+ <version>3.0.0</version>
+ <configuration>
+ <archive>
+ <manifestEntries>
+ <Build-Timestamp>${maven.build.timestamp}</Build-Timestamp>
+ <Build-Revision>${buildNumber}</Build-Revision>
+ <Build-Revision-Timestamp>${revision.timestamp}</Build-Revision-Timestamp>
+ </manifestEntries>
+ </archive>
+ </configuration>
+ </plugin>
+
<!-- Pre-cache Angular templates with maven-angular-plugin -->
<plugin>
<groupId>com.keithbranton.mojo</groupId>
@@ -110,7 +150,7 @@
<dependency>
<groupId>org.apache.guacamole</groupId>
<artifactId>guacamole-ext</artifactId>
- <version>1.1.0</version>
+ <version>1.2.0</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
diff --git a/src/main/java/de/bwlehrpool/bwlp_guac/BwlpAuthenticationProvider.java b/src/main/java/de/bwlehrpool/bwlp_guac/BwlpAuthenticationProvider.java
index f73de84..3043339 100644
--- a/src/main/java/de/bwlehrpool/bwlp_guac/BwlpAuthenticationProvider.java
+++ b/src/main/java/de/bwlehrpool/bwlp_guac/BwlpAuthenticationProvider.java
@@ -1,23 +1,45 @@
package de.bwlehrpool.bwlp_guac;
+import java.net.URL;
+import java.net.URLClassLoader;
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
import java.util.*;
-
import org.apache.guacamole.GuacamoleException;
import org.apache.guacamole.net.auth.*;
-import org.apache.guacamole.net.auth.credentials.GuacamoleCredentialsException;
+import org.apache.guacamole.language.TranslatableGuacamoleCredentialsException;
import org.codehaus.jackson.JsonNode;
import org.codehaus.jackson.map.ObjectMapper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.servlet.http.HttpServletRequest;
-
import org.apache.guacamole.form.Field;
-import org.apache.guacamole.net.auth.credentials.GuacamoleInsufficientCredentialsException;
+import org.apache.guacamole.language.TranslatableGuacamoleInsufficientCredentialsException;
import org.apache.guacamole.net.auth.credentials.CredentialsInfo;
public class BwlpAuthenticationProvider implements AuthenticationProvider {
- Logger LOGGER = LoggerFactory.getLogger(BwlpAuthenticationProvider.class);
+ static Logger LOGGER = LoggerFactory.getLogger(BwlpAuthenticationProvider.class);
+
+ static Properties MANIFEST = new Properties();
+
+ static {
+ URLClassLoader cl = (URLClassLoader) BwlpAuthenticationProvider.class.getClassLoader();
+ URL url = cl.findResource("META-INF/MANIFEST.MF");
+ try {
+ MANIFEST.load(url.openStream());
+ LOGGER.info("Plugin build revision: " + MANIFEST.getProperty("Build-Revision"));
+
+ String timestamp = MANIFEST.getProperty("Build-Revision-Timestamp");
+ DateFormat formatter = new SimpleDateFormat("yyyy.MM.dd HH:mm");
+ long milliSeconds= Long.parseLong(timestamp);
+ Calendar calendar = Calendar.getInstance();
+ calendar.setTimeInMillis(milliSeconds);
+ LOGGER.info("Plugin build timestamp: " + formatter.format(calendar.getTime()));
+ } catch (Exception e) {
+ System.out.println("unable to read manifest " + e.getMessage());
+ }
+ }
public String getIdentifier() {
return "de.bwlehrpool.bwgpul";
@@ -58,6 +80,8 @@ public class BwlpAuthenticationProvider implements AuthenticationProvider {
public UserContext redecorate(UserContext decorated, UserContext context, AuthenticatedUser authenticatedUser,
Credentials credentials) throws GuacamoleException {
+ LOGGER.info(MANIFEST.getProperty("Build-Revision"));
+
String username = Util.getUsername(authenticatedUser);
if (username == null) {
LOGGER.warn("redecorate: Ignoring user without name");
@@ -97,8 +121,9 @@ public class BwlpAuthenticationProvider implements AuthenticationProvider {
String groupJson = request.getParameter("group");
if (groupJson == null) {
- throw new GuacamoleInsufficientCredentialsException(
- "GROUP_SELECTION.TITLE", new CredentialsInfo(
+ LOGGER.warn("test 1");
+ throw new TranslatableGuacamoleInsufficientCredentialsException(
+ "GROUP_SELECTION.TITLE", "GROUP_SELECTION.TITLE", new CredentialsInfo(
Collections.<Field>singletonList(new GroupField())
));
}
@@ -130,8 +155,9 @@ public class BwlpAuthenticationProvider implements AuthenticationProvider {
}
if (tryAgain) {
- throw new GuacamoleCredentialsException(
- message, new CredentialsInfo(
+ LOGGER.warn("test 2");
+ throw new TranslatableGuacamoleCredentialsException(
+ message, message, new CredentialsInfo(
Collections.<Field>singletonList(new GroupField())
));
}
diff --git a/src/main/java/de/bwlehrpool/bwlp_guac/ConnectionManager.java b/src/main/java/de/bwlehrpool/bwlp_guac/ConnectionManager.java
index db8ff07..1f7d928 100644
--- a/src/main/java/de/bwlehrpool/bwlp_guac/ConnectionManager.java
+++ b/src/main/java/de/bwlehrpool/bwlp_guac/ConnectionManager.java
@@ -30,7 +30,8 @@ import javax.net.ssl.X509TrustManager;
import org.apache.guacamole.form.Field;
import org.apache.guacamole.net.auth.credentials.CredentialsInfo;
import org.apache.guacamole.net.auth.credentials.GuacamoleCredentialsException;
-import org.apache.guacamole.net.auth.credentials.GuacamoleInsufficientCredentialsException;
+import org.apache.guacamole.language.TranslatableGuacamoleCredentialsException;
+import org.apache.guacamole.language.TranslatableGuacamoleInsufficientCredentialsException;
import org.codehaus.jackson.map.ObjectMapper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -135,8 +136,8 @@ public class ConnectionManager {
JsonGroup group = groupPool.get(groupid);
if (group == null) {
// Request the user to select a group
- throw new GuacamoleInsufficientCredentialsException(
- "GROUP_SELECTION.TITLE", new CredentialsInfo(
+ throw new TranslatableGuacamoleInsufficientCredentialsException(
+ "GROUP_SELECTION.TITLE", "GROUP_SELECTION.TITLE", new CredentialsInfo(
Collections.<Field>singletonList(new GroupField())
));
}
@@ -164,8 +165,8 @@ public class ConnectionManager {
}
if (freeClient == null) {
// Request the user to select another Group
- throw new GuacamoleCredentialsException(
- "GROUP_SELECTION.NO_FREE_ERROR", new CredentialsInfo(
+ throw new TranslatableGuacamoleCredentialsException(
+ "GROUP_SELECTION.NO_FREE_ERROR", "GROUP_SELECTION.NO_FREE_ERROR", new CredentialsInfo(
Collections.<Field>singletonList(new GroupField())
));
}
@@ -217,6 +218,8 @@ public class ConnectionManager {
((HttpsURLConnection) con).setHostnameVerifier(ignorer);
((HttpsURLConnection) con).setSSLSocketFactory(sockFac);
}
+ con.setRequestProperty("Bwlp-Plugin-Build-Revision", BwlpAuthenticationProvider.MANIFEST.getProperty("Build-Revision"));
+ con.setRequestProperty("Bwlp-Plugin-Build-Timestamp", BwlpAuthenticationProvider.MANIFEST.getProperty("Build-Revision-Timestamp"));
try (BufferedInputStream in = new BufferedInputStream(con.getInputStream())) {
byte dataBuffer[] = new byte[2048];
int bytesRead;
diff --git a/src/main/resources/continue-patch.html b/src/main/resources/continue-patch.html
new file mode 100644
index 0000000..85204b6
--- /dev/null
+++ b/src/main/resources/continue-patch.html
@@ -0,0 +1,5 @@
+<meta name="replace" content=".continue-login">
+
+<input type="submit" name="login" class="continue-login"
+ ng-disabled="false"
+ value="{{ 'GROUP_SELECTION.CONTINUE' | translate }}"/> \ No newline at end of file
diff --git a/src/main/resources/guac-manifest.json b/src/main/resources/guac-manifest.json
index 565984d..fb4bfb4 100644
--- a/src/main/resources/guac-manifest.json
+++ b/src/main/resources/guac-manifest.json
@@ -6,7 +6,12 @@
"largeIcon" : "images/Logo_bwLehrpool_symbol.png",
"authProviders": ["de.bwlehrpool.bwlp_guac.BwlpAuthenticationProvider"],
"listeners" : ["de.bwlehrpool.bwlp_guac.TunnelListener"],
- "html" : [ "login-logo.html", "selection-logo.html", "secondary-logo.html" ],
+ "html" : [
+ "login-logo.html",
+ "selection-logo.html",
+ "secondary-logo.html",
+ "continue-patch.html"
+ ],
"translations" : [
"translations/en.json",
"translations/de.json"
diff --git a/src/main/resources/translations/de.json b/src/main/resources/translations/de.json
index e4212e4..e574f3c 100644
--- a/src/main/resources/translations/de.json
+++ b/src/main/resources/translations/de.json
@@ -12,6 +12,7 @@
"PASSWORD_PROTECTED": "Passwortgeschützt",
"LOG_OUT": "Ausloggen",
"PASSWORD_ERROR": "Falsches Passwort!",
- "NO_FREE_ERROR": "Keinen freien Client gefunden. Wähle einen anderen Raum aus."
+ "NO_FREE_ERROR": "Keinen freien Client gefunden. Wähle einen anderen Raum aus.",
+ "CONTINUE": "Weiter"
}
} \ No newline at end of file
diff --git a/src/main/resources/translations/en.json b/src/main/resources/translations/en.json
index 96d9b2c..2b0c0d6 100644
--- a/src/main/resources/translations/en.json
+++ b/src/main/resources/translations/en.json
@@ -12,6 +12,7 @@
"PASSWORD_PROTECTED": "Password protected",
"LOG_OUT": "Log out",
"PASSWORD_ERROR": "Wrong password!",
- "NO_FREE_ERROR": "No free client. Select another Location."
+ "NO_FREE_ERROR": "No free client. Select another Location.",
+ "CONTINUE": "Continue"
}
} \ No newline at end of file