Update all elements

This commit is contained in:
Edouard DUPIN 2022-10-11 22:02:46 +02:00
parent 772ec1e9a5
commit d29e219fa4
12 changed files with 107 additions and 51 deletions

View File

@ -74,6 +74,6 @@ COPY --from=buildFront /tmp/dist /application/karideo/
WORKDIR /application/ WORKDIR /application/
EXPOSE 18080 EXPOSE 80
CMD ["java", "-Xms64M", "-Xmx1G", "-cp", "/application/application.jar", "org.kar.karideo.WebLauncher"] CMD ["java", "-Xms64M", "-Xmx1G", "-cp", "/application/application.jar", "org.kar.karideo.WebLauncher"]

View File

@ -70,7 +70,7 @@
<dependency> <dependency>
<groupId>mysql</groupId> <groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId> <artifactId>mysql-connector-java</artifactId>
<version>5.1.45</version> <version>8.0.30</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.glassfish.jersey.media</groupId> <groupId>org.glassfish.jersey.media</groupId>

View File

@ -1,6 +1,7 @@
package org.kar.karideo; package org.kar.karideo;
import org.glassfish.grizzly.http.server.HttpServer; import org.glassfish.grizzly.http.server.HttpServer;
import org.glassfish.jersey.grizzly2.httpserver.GrizzlyHttpServerFactory; import org.glassfish.jersey.grizzly2.httpserver.GrizzlyHttpServerFactory;
import org.glassfish.jersey.media.multipart.MultiPartFeature; import org.glassfish.jersey.media.multipart.MultiPartFeature;
import org.glassfish.jersey.server.ResourceConfig; import org.glassfish.jersey.server.ResourceConfig;
@ -14,12 +15,37 @@ import org.kar.karideo.util.JWTWrapper;
import org.glassfish.jersey.jackson.JacksonFeature; import org.glassfish.jersey.jackson.JacksonFeature;
import javax.ws.rs.core.UriBuilder; import javax.ws.rs.core.UriBuilder;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.net.URI; import java.net.URI;
import java.util.Properties;
class UpdateJwtPublicKey extends Thread {
boolean kill = false;
public void run() {
try {
Thread.sleep(1000*20, 0);
} catch (InterruptedException e2) {
// TODO Auto-generated catch block
e2.printStackTrace();
}
while (this.kill == false) {
// need to uppgrade when server call us...
try {
JWTWrapper.initLocalTokenRemote(ConfigVariable.getSSOAddress(), "karideo");
} catch (Exception e1) {
e1.printStackTrace();
System.out.println("Can not retreive the basic tocken");
return;
}
try {
Thread.sleep(1000*60*5, 0);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
public void kill() {
this.kill = true;
}
}
public class WebLauncher { public class WebLauncher {
public static DBConfig dbConfig; public static DBConfig dbConfig;
@ -31,23 +57,13 @@ public class WebLauncher {
} }
public static void main(String[] args) { public static void main(String[] args) {
ResourceConfig rc = new ResourceConfig();
// need to uppgrade when server call us...
try {
JWTWrapper.initLocalTokenRemote(ConfigVariable.getSSOAddress(), "karideo");
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
System.out.println("Wait 10 seconds ....");
try {
Thread.sleep(10000);
} catch (InterruptedException e) {
e.printStackTrace();
}
return;
}
// add multipart models .. // ===================================================================
// Configure resources
// ===================================================================
ResourceConfig rc = new ResourceConfig();
// add multi-part models ..
//rc.register(new MultiPartFeature()); //rc.register(new MultiPartFeature());
//rc.register(new InjectionBinder()); //rc.register(new InjectionBinder());
rc.register(new MultiPartFeature()); rc.register(new MultiPartFeature());
@ -69,7 +85,7 @@ public class WebLauncher {
rc.registerClasses(VideoResource.class); rc.registerClasses(VideoResource.class);
rc.registerClasses(HealthCheck.class); rc.registerClasses(HealthCheck.class);
rc.registerClasses(Front.class); rc.registerClasses(Front.class);
// add jackson to be discovenr when we are ins standalone server // add jackson to be discover when we are ins standalone server
rc.register(JacksonFeature.class); rc.register(JacksonFeature.class);
// enable this to show low level request // enable this to show low level request
//rc.property(LoggingFeature.LOGGING_FEATURE_LOGGER_LEVEL_SERVER, Level.WARNING.getName()); //rc.property(LoggingFeature.LOGGING_FEATURE_LOGGER_LEVEL_SERVER, Level.WARNING.getName());
@ -96,7 +112,16 @@ public class WebLauncher {
} }
}, "shutdownHook")); }, "shutdownHook"));
// run
// ===================================================================
// start periodic update of the token ...
// ===================================================================
UpdateJwtPublicKey keyUpdater = new UpdateJwtPublicKey();
keyUpdater.start();
// ===================================================================
// run JERSEY
// ===================================================================
try { try {
server.start(); server.start();
System.out.println("Jersey app started at " + getBaseURI()); System.out.println("Jersey app started at " + getBaseURI());
@ -106,5 +131,12 @@ public class WebLauncher {
System.out.println("There was an error while starting Grizzly HTTP server."); System.out.println("There was an error while starting Grizzly HTTP server.");
e.printStackTrace(); e.printStackTrace();
} }
keyUpdater.kill();
try {
keyUpdater.join(4000, 0);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} }
} }

View File

@ -3,6 +3,9 @@ package org.kar.karideo.api;
import javax.annotation.security.PermitAll; import javax.annotation.security.PermitAll;
import javax.ws.rs.*; import javax.ws.rs.*;
import javax.ws.rs.core.MediaType; import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import org.kar.karideo.util.JWTWrapper;
@Path("/health_check") @Path("/health_check")
@Produces(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON)
@ -16,7 +19,10 @@ public class HealthCheck {
// todo : do it better... // todo : do it better...
@GET @GET
@PermitAll @PermitAll
public HealthResult getHealth() { public Response getHealth() {
return new HealthResult("alive and kicking"); if (JWTWrapper.getPublicKey() == null) {
return Response.status(500).entity(new HealthResult("Missing Jwt public token")).build();
}
return Response.status(200).entity(new HealthResult("alive and kicking")).build();
} }
} }

View File

@ -55,6 +55,6 @@ public class DBConfig {
} }
public String getUrl() { public String getUrl() {
return "jdbc:mysql://" + this.hostname + ":" + this.port + "/" + this.dbName + "?useSSL=false&serverTimezone=UTC"; return "jdbc:mysql://" + this.hostname + ":" + this.port + "/" + this.dbName + "?allowPublicKeyRetrieval=true&useSSL=false&serverTimezone=UTC";
} }
} }

View File

@ -1,9 +1,10 @@
package org.kar.karideo.util; package org.kar.karideo.util;
public class ConfigVariable { public class ConfigVariable {
public static final String BASE_NAME = "ORG_KARIDEO_";
public static String getTmpDataFolder() { public static String getTmpDataFolder() {
String out = System.getenv("org.kar.karideo.dataTmpFolder"); String out = System.getenv(BASE_NAME + "DATA_TMP_FOLDER");
if (out == null) { if (out == null) {
return "/application/data/tmp"; return "/application/data/tmp";
} }
@ -11,7 +12,7 @@ public class ConfigVariable {
} }
public static String getMediaDataFolder() { public static String getMediaDataFolder() {
String out = System.getenv("org.kar.karideo.dataFolder"); String out = System.getenv(BASE_NAME + "DATA_FOLDER");
if (out == null) { if (out == null) {
return "/application/data/media"; return "/application/data/media";
} }
@ -19,7 +20,7 @@ public class ConfigVariable {
} }
public static String getFrontFolder() { public static String getFrontFolder() {
String out = System.getenv("ORG_KARIDEO_FRONT_FOLDER"); String out = System.getenv(BASE_NAME + "FRONT_FOLDER");
if (out == null) { if (out == null) {
return "/application/karideo"; return "/application/karideo";
} }
@ -28,7 +29,7 @@ public class ConfigVariable {
public static String getDBHost() { public static String getDBHost() {
String out = System.getenv("ORG_KARIDEO_DB_HOST"); String out = System.getenv(BASE_NAME + "DB_HOST");
if (out == null) { if (out == null) {
return "localhost"; return "localhost";
} }
@ -36,31 +37,32 @@ public class ConfigVariable {
} }
public static String getDBPort() { public static String getDBPort() {
String out = System.getenv("ORG_KARIDEO_DB_PORT"); String out = System.getenv(BASE_NAME + "DB_PORT");
if (out == null) { if (out == null) {
return "17036"; return "3306";
//return "17036";
} }
return out; return out;
} }
public static String getDBLogin() { public static String getDBLogin() {
String out = System.getenv("ORG_KARIDEO_DB_LOGIN"); String out = System.getenv(BASE_NAME + "DB_USER");
if (out == null) { if (out == null) {
return "root"; return "karideo";
} }
return out; return out;
} }
public static String getDBPassword() { public static String getDBPassword() {
String out = System.getenv("MYSQL_ROOT_PASSWORD"); String out = System.getenv(BASE_NAME + "DB_PASSWORD");
if (out == null) { if (out == null) {
return "ZERTYSDGFVHSDFGHJYZSDFGSQxfgsqdfgsqdrf4564654"; return "karideo_password";
} }
return out; return out;
} }
public static String getDBName() { public static String getDBName() {
String out = System.getenv("MYSQL_DATABASE"); String out = System.getenv(BASE_NAME + "DB_DATABASE");
if (out == null) { if (out == null) {
return "karideo"; return "karideo";
} }
@ -68,9 +70,10 @@ public class ConfigVariable {
} }
public static String getlocalAddress() { public static String getlocalAddress() {
String out = System.getenv("ORG_KARIDEO_ADDRESS"); String out = System.getenv(BASE_NAME + "ADDRESS");
if (out == null) { if (out == null) {
return "http://0.0.0.0:18080/karideo/api/"; return "http://0.0.0.0:80/karideo/api/";
//return "http://0.0.0.0:18080/karideo/api/";
} }
return out; return out;
} }
@ -78,7 +81,8 @@ public class ConfigVariable {
public static String getSSOAddress() { public static String getSSOAddress() {
String out = System.getenv("SSO_ADDRESS"); String out = System.getenv("SSO_ADDRESS");
if (out == null) { if (out == null) {
return "http://192.168.1.156/karauth/api/"; return "http://sso_host/karauth/api/";
//return "http://192.168.1.156/karauth/api/";
} }
return out; return out;
} }

View File

@ -59,11 +59,11 @@ public class JWTWrapper {
} }
in.close(); in.close();
// print result // print result
System.out.println(response.toString()); //System.out.println(response.toString());
ObjectMapper mapper = new ObjectMapper(); ObjectMapper mapper = new ObjectMapper();
;
PublicKey values = mapper.readValue(response.toString(), PublicKey.class); PublicKey values = mapper.readValue(response.toString(), PublicKey.class);
rsaPublicJWK = RSAKey.parse(values.key); rsaPublicJWK = RSAKey.parse(values.key);
return;
} }
System.out.println("GET JWT validator token not worked"); System.out.println("GET JWT validator token not worked");
} }

View File

@ -5,7 +5,7 @@
"scripts": { "scripts": {
"all": "npm run build && npm run test", "all": "npm run build && npm run test",
"ng": "ng", "ng": "ng",
"start": "ng serve --watch", "start": "ng serve --watch --port 4202",
"build": "ng build --prod", "build": "ng build --prod",
"test": "ng test", "test": "ng test",
"lint": "ng lint", "lint": "ng lint",

View File

@ -18,7 +18,7 @@ export class ElementSeasonComponent implements OnInit {
// input parameters // input parameters
@Input() element:NodeData; @Input() element:NodeData;
numberSeason: number; numberSeason: string;
count: number; count: number;
covers: string[]; covers: string[];
description: string; description: string;
@ -34,7 +34,7 @@ export class ElementSeasonComponent implements OnInit {
this.covers = undefined; this.covers = undefined;
this.description = undefined; this.description = undefined;
} }
this.numberSeason = this.element.id; this.numberSeason = this.element.name;
this.description = this.element.description; this.description = this.element.description;
this.covers = this.dataService.getCoverListThumbnailUrl(this.element.covers); this.covers = this.dataService.getCoverListThumbnailUrl(this.element.covers);
let self = this; let self = this;

View File

@ -3,6 +3,22 @@
// `ng build --env=prod` then `environment.prod.ts` will be used instead. // `ng build --env=prod` then `environment.prod.ts` will be used instead.
// The list of which env maps to which file can be found in `.angular-cli.json`. // The list of which env maps to which file can be found in `.angular-cli.json`.
const environment_back_prod = {
production: false,
// URL of development API
applName: "karideo",
defaultServer: "karideo",
server: {
karideo: 'http://192.168.1.156/karideo/api',
karauth: 'http://192.168.1.156/karauth/api',
},
ssoSignIn: 'http://192.168.1.156/karso/signin/karideo-dev/',
ssoSignUp: 'http://192.168.1.156/karso/signup/karideo-dev/',
ssoSignOut: 'http://192.168.1.156/karso/signout/karideo-dev/',
frontBaseUrl: '',
//apiMode: 'REWRITE'
};
const environment_local = { const environment_local = {
production: false, production: false,
// URL of development API // URL of development API
@ -36,5 +52,5 @@ const environment_hybrid = {
}; };
export const environment = environment_hybrid; export const environment = environment_back_prod;

View File

@ -24,9 +24,7 @@ docker-compose up -d
build the local image: build the local image:
docker build -t kangaroo-and-rabbit/karideo . docker build -t gitea.atria-soft.org/kangaroo-and-rabbit/karideo:latest .
docker tag kangaroo-and-rabbit/karideo:latest gitea.atria-soft.org/kangaroo-and-rabbit/karideo:latest
docker login gitea.atria-soft.org docker login gitea.atria-soft.org