/******************************************************************************* * Copyright (c) 2010, Oliver Egger, visionary ag * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * *******************************************************************************/ package ch.swissmedicalsuite; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; import java.security.KeyManagementException; import java.security.NoSuchAlgorithmException; import java.security.cert.CertificateException; import javax.net.ssl.HttpsURLConnection; import javax.net.ssl.SSLContext; import javax.net.ssl.TrustManager; import javax.net.ssl.X509TrustManager; import ch.elexis.core.ui.util.Log; import com.sun.jna.ptr.PointerByReference; public class HCardBrowser { final private String gln; final private String browserUrl; static boolean initApi = false; static String glnOld; protected static Log log = Log.get("HCardBrowser"); //$NON-NLS-1$ public HCardBrowser(String gln, String browserUrl){ if (!HCardBrowser.initApi) { HCardBrowser.initApi = true; PointerByReference pByReference = new PointerByReference(); HCardAPI.INSTANCE.initApi("hCard-OEM-Test", false, pByReference); System.setProperty("https.proxyHost", "localhost"); } this.browserUrl = browserUrl; this.gln = gln; log.log("hcardbrowser initiated " + browserUrl + " " + gln, Log.DEBUGMSG); } public void setProxyPort(){ if (glnOld == null || !glnOld.equals(gln)) { int port = HCardAPI.INSTANCE.getUserProxyPort(gln); log.log("getting proxy port for gln:" + gln + " port " + port, Log.DEBUGMSG); System.setProperty("https.proxyPort", "" + port); glnOld = gln; TrustManager[] trustAllCerts = new TrustManager[] { new X509TrustManager() { public java.security.cert.X509Certificate[] getAcceptedIssuers(){ return null; } public void checkClientTrusted(java.security.cert.X509Certificate[] chain, String authType) throws CertificateException{} public void checkServerTrusted(java.security.cert.X509Certificate[] chain, String authType) throws CertificateException{} } }; SSLContext sc; try { sc = SSLContext.getInstance("SSL"); sc.init(null, trustAllCerts, new java.security.SecureRandom()); HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory()); } catch (NoSuchAlgorithmException e1) { e1.printStackTrace(); } catch (KeyManagementException e) { e.printStackTrace(); } // HostnameVerifier allHostsValid = new HostnameVerifier() { // public boolean verify(String arg0, SSLSession arg1) { // return true; // } // }; // // HttpsURLConnection.setDefaultHostnameVerifier(allHostsValid); } } private String getPageParam(String page){ try { return "?page=" + URLEncoder.encode(page, "UTF-8"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } return ""; } public int setTerminvereinbarung(){ log.log("startSmsBroser, Terminvereinbarung:" + gln, Log.DEBUGMSG); String url = browserUrl + this.getPageParam("AppBookingWizzard"); return HCardAPI.INSTANCE.startSmsBrowser(gln, url, 0); } public int setHome(){ log.log("startSmsBroser, setHome :" + gln, Log.DEBUGMSG); String url = browserUrl + this.getPageParam("MainWelcome"); return HCardAPI.INSTANCE.startSmsBrowser(gln, url, 0); } public int setHospitalReferral(){ log.log("startSmsBroser, setHospitalReferral: " + gln, Log.DEBUGMSG); String url = browserUrl + this.getPageParam("HospitalApplicationsOverview"); return HCardAPI.INSTANCE.startSmsBrowser(gln, url, 0); } public int setMyPatient(){ log.log("startSmsBroser, setMyPatient: " + gln, Log.DEBUGMSG); String url = browserUrl + this.getPageParam("MyPatient"); return HCardAPI.INSTANCE.startSmsBrowser(gln, url, 0); } public int setAppointment(String terminId){ log.log("startSmsBroser, setAppointment: " + gln, Log.DEBUGMSG); String url = browserUrl + getPageParam("DocCalendar"); if (terminId != null) { String id = terminId; if (id.endsWith("2")) { id = id.substring(0, id.length() - 1); } try { url += "&id=" + URLEncoder.encode(id, "UTF-8"); } catch (UnsupportedEncodingException e) {} } return HCardAPI.INSTANCE.startSmsBrowser(gln, url, 0); } }