use of org.graylog.shaded.elasticsearch7.org.apache.http.client.config.RequestConfig in project zm-mailbox by Zimbra.
the class LmcSendMsgRequest method postAttachment.
/*
* Post the attachment represented by File f and return the attachment ID
*/
public String postAttachment(String uploadURL, LmcSession session, File f, // cookie domain e.g. ".example.zimbra.com"
String domain, int msTimeout) throws LmcSoapClientException, IOException, HttpException {
String aid = null;
// set the cookie.
if (session == null)
System.err.println(System.currentTimeMillis() + " " + Thread.currentThread() + " LmcSendMsgRequest.postAttachment session=null");
HttpClientBuilder clientBuilder = ZimbraHttpConnectionManager.getInternalHttpConnMgr().newHttpClient();
HttpPost post = new HttpPost(uploadURL);
ZAuthToken zat = session.getAuthToken();
Map<String, String> cookieMap = zat.cookieMap(false);
if (cookieMap != null) {
BasicCookieStore initialState = new BasicCookieStore();
for (Map.Entry<String, String> ck : cookieMap.entrySet()) {
BasicClientCookie cookie = new BasicClientCookie(ck.getKey(), ck.getValue());
cookie.setDomain(domain);
cookie.setPath("/");
cookie.setSecure(false);
cookie.setExpiryDate(null);
initialState.addCookie(cookie);
}
clientBuilder.setDefaultCookieStore(initialState);
RequestConfig reqConfig = RequestConfig.copy(ZimbraHttpConnectionManager.getInternalHttpConnMgr().getZimbraConnMgrParams().getReqConfig()).setCookieSpec(CookieSpecs.BROWSER_COMPATIBILITY).build();
clientBuilder.setDefaultRequestConfig(reqConfig);
}
SocketConfig config = SocketConfig.custom().setSoTimeout(msTimeout).build();
clientBuilder.setDefaultSocketConfig(config);
int statusCode = -1;
try {
String contentType = URLConnection.getFileNameMap().getContentTypeFor(f.getName());
MultipartEntityBuilder builder = MultipartEntityBuilder.create();
builder.addBinaryBody("upfile", f, ContentType.create(contentType, "UTF-8"), f.getName());
HttpEntity entity = builder.build();
post.setEntity(entity);
HttpClient client = clientBuilder.build();
HttpResponse httpResponse = HttpClientUtil.executeMethod(client, post);
statusCode = httpResponse.getStatusLine().getStatusCode();
// parse the response
if (statusCode == 200) {
// paw through the returned HTML and get the attachment id
String response = EntityUtils.toString(httpResponse.getEntity());
// System.out.println("response is\n" + response);
int lastQuote = response.lastIndexOf("'");
int firstQuote = response.indexOf("','") + 3;
if (lastQuote == -1 || firstQuote == -1)
throw new LmcSoapClientException("Attachment post failed, unexpected response: " + response);
aid = response.substring(firstQuote, lastQuote);
} else {
throw new LmcSoapClientException("Attachment post failed, status=" + statusCode);
}
} catch (IOException | HttpException e) {
System.err.println("Attachment post failed");
e.printStackTrace();
throw e;
} finally {
post.releaseConnection();
}
return aid;
}
use of org.graylog.shaded.elasticsearch7.org.apache.http.client.config.RequestConfig in project zm-mailbox by Zimbra.
the class HttpProxyUtil method configureProxy.
public static synchronized void configureProxy(HttpClientBuilder clientBuilder) {
try {
String url = Provisioning.getInstance().getLocalServer().getAttr(Provisioning.A_zimbraHttpProxyURL, null);
if (url == null)
return;
// need to initializae all the statics
if (sProxyUrl == null || !sProxyUrl.equals(url)) {
sProxyUrl = url;
sProxyUri = new URI(url);
sProxyAuthScope = null;
sProxyCreds = null;
String userInfo = sProxyUri.getUserInfo();
if (userInfo != null) {
int i = userInfo.indexOf(':');
if (i != -1) {
sProxyAuthScope = new AuthScope(sProxyUri.getHost(), sProxyUri.getPort(), null);
sProxyCreds = new UsernamePasswordCredentials(userInfo.substring(0, i), userInfo.substring(i + 1));
}
}
}
if (ZimbraLog.misc.isDebugEnabled()) {
ZimbraLog.misc.debug("setting proxy: " + url);
}
HttpHost proxy = new HttpHost(sProxyUri.getHost(), sProxyUri.getPort());
RequestConfig config = RequestConfig.custom().setProxy(proxy).build();
clientBuilder.setDefaultRequestConfig(config);
if (sProxyAuthScope != null && sProxyCreds != null) {
CredentialsProvider cred = new BasicCredentialsProvider();
cred.setCredentials(sProxyAuthScope, sProxyCreds);
clientBuilder.setDefaultCredentialsProvider(cred);
}
} catch (ServiceException e) {
ZimbraLog.misc.warn("Unable to configureProxy: " + e.getMessage(), e);
} catch (URISyntaxException e) {
ZimbraLog.misc.warn("Unable to configureProxy: " + e.getMessage(), e);
}
}
use of org.graylog.shaded.elasticsearch7.org.apache.http.client.config.RequestConfig in project zm-mailbox by Zimbra.
the class SoapHttpTransport method invoke.
public Element invoke(Element document, boolean raw, boolean noSession, String requestedAccountId, String changeToken, String tokenType, NotificationFormat nFormat, String curWaitSetID, ResponseHandler respHandler) throws IOException, ServiceException {
HttpPost method = null;
HttpClient client = null;
try {
// Assemble post method. Append document name, so that the request
// type is written to the access log.
String uri = getUriWithPath(document);
method = new HttpPost(uri);
// Set user agent if it's specified.
String agentName = getUserAgentName();
if (agentName != null) {
String agentVersion = getUserAgentVersion();
if (agentVersion != null)
agentName += " " + agentVersion;
method.addHeader(new BasicHeader("User-Agent", agentName));
}
// Set the original user agent if it's specified.
String originalUserAgent = getOriginalUserAgent();
if (originalUserAgent != null) {
method.addHeader(new BasicHeader(HeaderConstants.HTTP_HEADER_ORIG_USER_AGENT, originalUserAgent));
}
// the content-type charset will determine encoding used
// when we set the request body
method.addHeader("Content-Type", getRequestProtocol().getContentType());
if (getClientIp() != null) {
method.addHeader(RemoteIP.X_ORIGINATING_IP_HEADER, getClientIp());
if (ZimbraLog.misc.isDebugEnabled()) {
ZimbraLog.misc.debug("set remote IP header [%s] to [%s]", RemoteIP.X_ORIGINATING_IP_HEADER, getClientIp());
}
}
Element soapReq = generateSoapMessage(document, raw, noSession, requestedAccountId, changeToken, tokenType, nFormat, curWaitSetID);
String soapMessage = SoapProtocol.toString(soapReq, getPrettyPrint());
method.setEntity(new StringEntity(soapMessage, ContentType.create(ContentType.APPLICATION_XML.getMimeType(), "UTF-8")));
if (getRequestProtocol().hasSOAPActionHeader())
method.addHeader("SOAPAction", mUri);
if (mCustomHeaders != null) {
for (Map.Entry<String, String> entry : mCustomHeaders.entrySet()) method.addHeader(entry.getKey(), entry.getValue());
}
String host = method.getURI().getHost();
ZAuthToken zToken = getAuthToken();
BasicCookieStore cookieStore = HttpClientUtil.newHttpState(zToken, host, this.isAdmin());
String trustedToken = getTrustedToken();
if (trustedToken != null) {
BasicClientCookie cookie = new BasicClientCookie(ZimbraCookie.COOKIE_ZM_TRUST_TOKEN, trustedToken);
cookie.setDomain(host);
cookie.setPath("/");
cookie.setSecure(false);
cookieStore.addCookie(cookie);
}
if (zToken instanceof ZJWToken) {
method.addHeader(Constants.AUTH_HEADER, Constants.BEARER + " " + zToken.getValue());
}
ZimbraLog.soap.trace("Httpclient timeout: %s", mTimeout);
RequestConfig reqConfig = RequestConfig.custom().setCookieSpec(cookieStore.getCookies().size() == 0 ? CookieSpecs.IGNORE_COOKIES : CookieSpecs.BROWSER_COMPATIBILITY).setSocketTimeout(mTimeout).build();
SocketConfig socketConfig = SocketConfig.custom().setSoTimeout(mTimeout).setTcpNoDelay(LC.httpclient_external_connmgr_tcp_nodelay.booleanValue()).build();
method.setProtocolVersion(HttpVersion.HTTP_1_1);
method.addHeader("Connection", mKeepAlive ? "Keep-alive" : "Close");
client = mClientBuilder.setDefaultRequestConfig(reqConfig).setDefaultSocketConfig(socketConfig).setDefaultCookieStore(cookieStore).build();
ZimbraLog.soap.trace("Httpclient request config timeout: %s", reqConfig.getSocketTimeout());
if (mHostConfig != null && mHostConfig.getUsername() != null && mHostConfig.getPassword() != null) {
Credentials credentials = new UsernamePasswordCredentials(mHostConfig.getUsername(), mHostConfig.getPassword());
AuthScope authScope = new AuthScope(null, -1);
CredentialsProvider credsProvider = new BasicCredentialsProvider();
credsProvider.setCredentials(authScope, credentials);
client = HttpClientBuilder.create().setDefaultCredentialsProvider(credsProvider).setDefaultRequestConfig(reqConfig).setDefaultSocketConfig(socketConfig).setDefaultCookieStore(cookieStore).build();
}
if (mHttpDebugListener != null) {
mHttpDebugListener.sendSoapMessage(method, soapReq, cookieStore);
}
HttpResponse response = client.execute(method);
int responseCode = response.getStatusLine().getStatusCode();
// real server issues will probably be "503" or "404"
if (responseCode != HttpServletResponse.SC_OK && responseCode != HttpServletResponse.SC_INTERNAL_SERVER_ERROR)
throw ServiceException.PROXY_ERROR(response.getStatusLine().getReasonPhrase(), uri);
// Read the response body. Use the stream API instead of the byte[]
// version to avoid HTTPClient whining about a large response.
InputStreamReader reader = new InputStreamReader(response.getEntity().getContent(), SoapProtocol.getCharset());
String responseStr = "";
try {
if (respHandler != null) {
respHandler.process(reader);
return null;
} else {
HttpEntity httpEntity = response.getEntity();
httpEntity.getContentLength();
responseStr = ByteUtil.getContent(reader, (int) httpEntity.getContentLength(), false);
Element soapResp = parseSoapResponse(responseStr, raw);
if (mHttpDebugListener != null) {
mHttpDebugListener.receiveSoapMessage(method, soapResp);
}
return soapResp;
}
} catch (SoapFaultException x) {
// attach request/response to the exception and rethrow
x.setFaultRequest(soapMessage);
x.setFaultResponse(responseStr.substring(0, Math.min(10240, responseStr.length())));
throw x;
}
} finally {
// Release the connection to the connection manager
if (method != null)
method.releaseConnection();
// exits. Leave it here anyway.
if (!mKeepAlive)
ZimbraHttpConnectionManager.getInternalHttpConnMgr().closeIdleConnections();
}
}
use of org.graylog.shaded.elasticsearch7.org.apache.http.client.config.RequestConfig in project zm-mailbox by Zimbra.
the class WebDavClient method setAuthCookie.
public void setAuthCookie(ZAuthToken auth) {
Map<String, String> cookieMap = auth.cookieMap(false);
if (cookieMap != null) {
String host = null;
try {
host = new URL(mBaseUrl).getHost();
} catch (Exception e) {
}
BasicCookieStore cookieStore = new BasicCookieStore();
for (Map.Entry<String, String> ck : cookieMap.entrySet()) {
BasicClientCookie cookie = new BasicClientCookie(ck.getKey(), ck.getValue());
cookie.setDomain(host);
cookie.setPath("/");
cookie.setSecure(false);
cookieStore.addCookie(cookie);
}
mClient.setDefaultCookieStore(cookieStore);
RequestConfig reqConfig = RequestConfig.copy(ZimbraHttpConnectionManager.getInternalHttpConnMgr().getZimbraConnMgrParams().getReqConfig()).setCookieSpec(CookieSpecs.BROWSER_COMPATIBILITY).build();
mClient.setDefaultRequestConfig(reqConfig);
}
}
use of org.graylog.shaded.elasticsearch7.org.apache.http.client.config.RequestConfig in project zm-mailbox by Zimbra.
the class LmcMessage method downloadAttachment.
public byte[] downloadAttachment(String partNo, String baseURL, LmcSession session, String cookieDomain, int msTimeout) throws Exception {
// set the cookie.
if (session == null)
System.err.println(System.currentTimeMillis() + " " + Thread.currentThread() + " LmcMessage.downloadAttachment session=null");
HttpClientBuilder clientBuilder = ZimbraHttpConnectionManager.getInternalHttpConnMgr().newHttpClient();
String url = baseURL + "?id=" + getID() + "&part=" + partNo;
HttpGet get = new HttpGet(url);
ZAuthToken zat = session.getAuthToken();
Map<String, String> cookieMap = zat.cookieMap(false);
if (cookieMap != null) {
BasicCookieStore initialState = new BasicCookieStore();
for (Map.Entry<String, String> ck : cookieMap.entrySet()) {
BasicClientCookie cookie = new BasicClientCookie(ck.getKey(), ck.getValue());
cookie.setDomain(cookieDomain);
cookie.setPath("/");
cookie.setSecure(false);
cookie.setExpiryDate(null);
initialState.addCookie(cookie);
}
clientBuilder.setDefaultCookieStore(initialState);
RequestConfig reqConfig = RequestConfig.copy(ZimbraHttpConnectionManager.getInternalHttpConnMgr().getZimbraConnMgrParams().getReqConfig()).setCookieSpec(CookieSpecs.BROWSER_COMPATIBILITY).build();
clientBuilder.setDefaultRequestConfig(reqConfig);
}
SocketConfig config = SocketConfig.custom().setSoTimeout(msTimeout).build();
clientBuilder.setDefaultSocketConfig(config);
HttpClient client = clientBuilder.build();
int statusCode = -1;
try {
HttpResponse response = HttpClientUtil.executeMethod(client, get);
// parse the response
if (response.getStatusLine().getStatusCode() == 200) {
return EntityUtils.toByteArray(response.getEntity());
} else {
throw new LmcSoapClientException("Attachment download failed, status=" + statusCode);
}
} catch (IOException | HttpException e) {
System.err.println("Attachment download failed");
e.printStackTrace();
throw e;
} finally {
get.releaseConnection();
}
}
Aggregations