]> git.basschouten.com Git - openhab-addons.git/commitdiff
Solves issue #13196 (#13281)
authorGaël L'hopital <gael@lhopital.org>
Thu, 18 Aug 2022 07:15:41 +0000 (09:15 +0200)
committerGitHub <noreply@github.com>
Thu, 18 Aug 2022 07:15:41 +0000 (09:15 +0200)
Signed-off-by: clinique <gael@lhopital.org>
bundles/org.openhab.binding.linky/src/main/java/org/openhab/binding/linky/internal/LinkyHandlerFactory.java
bundles/org.openhab.binding.linky/src/main/java/org/openhab/binding/linky/internal/api/EnedisHttpApi.java

index 33b51ed42f2ef9a96b9680ebfb2d9dbdb89b6469..b504acf431d2b24bec668484797cde51a9f88372 100644 (file)
@@ -14,15 +14,21 @@ package org.openhab.binding.linky.internal;
 
 import static org.openhab.binding.linky.internal.LinkyBindingConstants.THING_TYPE_LINKY;
 
+import java.security.KeyManagementException;
+import java.security.NoSuchAlgorithmException;
 import java.time.ZonedDateTime;
 import java.time.format.DateTimeFormatter;
 
+import javax.net.ssl.SSLContext;
+import javax.net.ssl.TrustManager;
+
 import org.eclipse.jdt.annotation.NonNullByDefault;
 import org.eclipse.jdt.annotation.Nullable;
 import org.eclipse.jetty.client.HttpClient;
 import org.openhab.binding.linky.internal.handler.LinkyHandler;
 import org.openhab.core.i18n.LocaleProvider;
 import org.openhab.core.io.net.http.HttpClientFactory;
+import org.openhab.core.io.net.http.TrustAllTrustManager;
 import org.openhab.core.thing.Thing;
 import org.openhab.core.thing.ThingTypeUID;
 import org.openhab.core.thing.binding.BaseThingHandlerFactory;
@@ -70,8 +76,17 @@ public class LinkyHandlerFactory extends BaseThingHandlerFactory {
         super.activate(componentContext);
         httpClient.setFollowRedirects(false);
         httpClient.setRequestBufferSize(REQUEST_BUFFER_SIZE);
+
         try {
+            SSLContext sslContext = SSLContext.getInstance("SSL");
+            sslContext.init(null, new TrustManager[] { TrustAllTrustManager.getInstance() }, null);
+            httpClient.getSslContextFactory().setSslContext(sslContext);
             httpClient.start();
+        } catch (NoSuchAlgorithmException e) {
+            logger.warn("An exception occurred while requesting the SSL encryption algorithm : '{}'", e.getMessage(),
+                    e);
+        } catch (KeyManagementException e) {
+            logger.warn("An exception occurred while initialising the SSL context : '{}'", e.getMessage(), e);
         } catch (Exception e) {
             logger.warn("Unable to start Jetty HttpClient {}", e.getMessage());
         }
index 74ede525e40593519991680feb8e5f3144b9a636..73766c7a9f27770a8895b816c944c833c2c0417e 100644 (file)
@@ -12,7 +12,6 @@
  */
 package org.openhab.binding.linky.internal.api;
 
-import java.net.CookieStore;
 import java.net.HttpCookie;
 import java.net.URI;
 import java.time.LocalDate;
@@ -71,7 +70,6 @@ public class EnedisHttpApi {
     private final Logger logger = LoggerFactory.getLogger(EnedisHttpApi.class);
     private final Gson gson;
     private final HttpClient httpClient;
-    private final CookieStore cookieStore;
     private final LinkyConfiguration config;
 
     private boolean connected = false;
@@ -80,7 +78,6 @@ public class EnedisHttpApi {
         this.gson = gson;
         this.httpClient = httpClient;
         this.config = config;
-        this.cookieStore = httpClient.getCookieStore();
     }
 
     public void initialize() throws LinkyException {
@@ -158,7 +155,7 @@ public class EnedisHttpApi {
             result = httpClient.POST(el.attr("action")).content(getFormContent("SAMLResponse", samlInput.attr("value")))
                     .send();
             if (result.getStatus() != 302) {
-                throw new LinkyException("Connection failed step 5");
+                throw new LinkyException("Connection failed step 6");
             }
             connected = true;
         } catch (InterruptedException | TimeoutException | ExecutionException | JsonSyntaxException e) {
@@ -178,7 +175,7 @@ public class EnedisHttpApi {
                 String location = getLocation(httpClient.GET(URL_APPS_LINCS + "/logout"));
                 location = getLocation(httpClient.GET(location));
                 getLocation(httpClient.GET(location));
-                cookieStore.removeAll();
+                httpClient.getCookieStore().removeAll();
             } catch (InterruptedException | ExecutionException | TimeoutException e) {
                 throw new LinkyException(e, "Error while disconnecting from Enedis webservice");
             }
@@ -197,7 +194,7 @@ public class EnedisHttpApi {
         HttpCookie cookie = new HttpCookie(key, value);
         cookie.setDomain(ENEDIS_DOMAIN);
         cookie.setPath("/");
-        cookieStore.add(COOKIE_URI, cookie);
+        httpClient.getCookieStore().add(COOKIE_URI, cookie);
     }
 
     private FormContentProvider getFormContent(String fieldName, String fieldValue) {