mirror of
https://gitee.com/dromara/MaxKey.git
synced 2026-05-16 05:20:42 +08:00
separate sdk & connectors
separate sdk & connectors
This commit is contained in:
59
maxkey-core/src/main/java/org/maxkey/util/HttpEncoder.java
Normal file
59
maxkey-core/src/main/java/org/maxkey/util/HttpEncoder.java
Normal file
@@ -0,0 +1,59 @@
|
||||
/*
|
||||
* Copyright [2020] [MaxKey of copyright http://www.maxkey.top]
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
|
||||
package org.maxkey.util;
|
||||
|
||||
import java.io.*;
|
||||
import java.net.*;
|
||||
import java.util.*;
|
||||
import java.util.regex.*;
|
||||
|
||||
public abstract class HttpEncoder {
|
||||
|
||||
private static final String CHARSET = "UTF-8";
|
||||
private static final Map<String, String> ENCODING_RULES;
|
||||
|
||||
static {
|
||||
final Map<String, String> rules = new HashMap<>();
|
||||
rules.put("*", "%2A");
|
||||
rules.put("+", "%20");
|
||||
rules.put("%7E", "~");
|
||||
ENCODING_RULES = Collections.unmodifiableMap(rules);
|
||||
}
|
||||
|
||||
public static String encode(String plain) throws Exception {
|
||||
String encoded;
|
||||
try {
|
||||
encoded = URLEncoder.encode(plain, CHARSET);
|
||||
} catch (UnsupportedEncodingException uee) {
|
||||
throw new Exception("Charset not found while encoding string: " + CHARSET, uee);
|
||||
}
|
||||
for (Map.Entry<String, String> rule : ENCODING_RULES.entrySet()) {
|
||||
encoded = applyRule(encoded, rule.getKey(), rule.getValue());
|
||||
}
|
||||
return encoded;
|
||||
}
|
||||
|
||||
private static String applyRule(String encoded, String toReplace, String replacement) {
|
||||
return encoded.replaceAll(Pattern.quote(toReplace), replacement);
|
||||
}
|
||||
|
||||
public static String decode(String encoded) throws UnsupportedEncodingException {
|
||||
return URLDecoder.decode(encoded, CHARSET);
|
||||
|
||||
}
|
||||
}
|
||||
75
maxkey-core/src/main/java/org/maxkey/util/HttpsTrusts.java
Normal file
75
maxkey-core/src/main/java/org/maxkey/util/HttpsTrusts.java
Normal file
@@ -0,0 +1,75 @@
|
||||
/*
|
||||
* Copyright [2020] [MaxKey of copyright http://www.maxkey.top]
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
|
||||
package org.maxkey.util;
|
||||
|
||||
import javax.net.ssl.HostnameVerifier;
|
||||
import javax.net.ssl.HttpsURLConnection;
|
||||
import javax.net.ssl.SSLSession;
|
||||
|
||||
public class HttpsTrusts {
|
||||
|
||||
private static void trustAllHttpsCertificates() throws Exception {
|
||||
javax.net.ssl.TrustManager[] trustAllCerts = new javax.net.ssl.TrustManager[1];
|
||||
javax.net.ssl.TrustManager tm = new HttpsTrustsTM();
|
||||
trustAllCerts[0] = tm;
|
||||
javax.net.ssl.SSLContext sc = javax.net.ssl.SSLContext.getInstance("SSL");
|
||||
sc.init(null, trustAllCerts, null);
|
||||
javax.net.ssl.HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
|
||||
}
|
||||
/*
|
||||
* https ssl auto trust
|
||||
*/
|
||||
public static void beforeConnection() {
|
||||
try {
|
||||
trustAllHttpsCertificates();
|
||||
HttpsURLConnection.setDefaultHostnameVerifier(new HostnameVerifier() {
|
||||
public boolean verify(String urlHostName, SSLSession session) {
|
||||
System.out.println("Warning: URL Host: " + urlHostName + " vs. " + session.getPeerHost());
|
||||
return true;
|
||||
}
|
||||
});
|
||||
} catch(Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
static class HttpsTrustsTM implements javax.net.ssl.TrustManager,javax.net.ssl.X509TrustManager {
|
||||
public java.security.cert.X509Certificate[] getAcceptedIssuers() {
|
||||
return null;
|
||||
}
|
||||
|
||||
public boolean isServerTrusted(java.security.cert.X509Certificate[] certs) {
|
||||
return true;
|
||||
}
|
||||
|
||||
public boolean isClientTrusted(java.security.cert.X509Certificate[] certs) {
|
||||
return true;
|
||||
}
|
||||
|
||||
public void checkServerTrusted(java.security.cert.X509Certificate[] certs, String authType)
|
||||
throws java.security.cert.CertificateException {
|
||||
return;
|
||||
}
|
||||
|
||||
public void checkClientTrusted(java.security.cert.X509Certificate[] certs, String authType)
|
||||
throws java.security.cert.CertificateException {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user