Advertisement
Guest User

Untitled

a guest
Aug 23rd, 2017
126
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 14.93 KB | None | 0 0
  1. package Extensions;
  2.  
  3. import java.io.IOException;
  4. import java.io.InputStreamReader;
  5. import java.net.Socket;
  6. import java.net.UnknownHostException;
  7. import java.nio.charset.Charset;
  8. import java.security.KeyManagementException;
  9. import java.security.KeyStore;
  10. import java.security.KeyStoreException;
  11. import java.security.NoSuchAlgorithmException;
  12. import java.security.UnrecoverableKeyException;
  13. import java.security.cert.CertificateException;
  14. import java.security.cert.X509Certificate;
  15.  
  16. import javax.net.ssl.SSLContext;
  17. import javax.net.ssl.TrustManager;
  18. import javax.net.ssl.X509TrustManager;
  19.  
  20. import org.apache.http.HeaderElement;
  21. import org.apache.http.HttpEntity;
  22. import org.apache.http.HttpResponse;
  23. import org.apache.http.HttpVersion;
  24. import org.apache.http.NameValuePair;
  25. import org.apache.http.StatusLine;
  26. import org.apache.http.auth.UsernamePasswordCredentials;
  27. import org.apache.http.client.methods.HttpRequestBase;
  28. import org.apache.http.conn.ClientConnectionManager;
  29. import org.apache.http.conn.scheme.PlainSocketFactory;
  30. import org.apache.http.conn.scheme.Scheme;
  31. import org.apache.http.conn.scheme.SchemeRegistry;
  32. import org.apache.http.conn.ssl.SSLSocketFactory;
  33. import org.apache.http.impl.auth.BasicScheme;
  34. import org.apache.http.impl.client.DefaultHttpClient;
  35. import org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager;
  36. import org.apache.http.params.BasicHttpParams;
  37. import org.apache.http.params.HttpConnectionParams;
  38. import org.apache.http.params.HttpParams;
  39. import org.apache.http.params.HttpProtocolParams;
  40. import org.apache.http.protocol.HTTP;
  41.  
  42. import android.util.Log;
  43.  
  44. public class CRunGetThread extends Thread
  45. {
  46. public DefaultHttpClient client;
  47. public HttpRequestBase request;
  48.  
  49. String text;
  50. volatile Boolean finished;
  51. String Password;
  52. String Username;
  53. String Hosts;
  54. int Ports;
  55. String Header;
  56. int Timeout;
  57. boolean isHttps = false;
  58.  
  59. int nError;
  60.  
  61. public CRunGetThread()
  62. {
  63. text = "";
  64. finished = false;
  65. }
  66.  
  67. public DefaultHttpClient mmfHttpClient() {
  68.  
  69. try {
  70. KeyStore trustStore = KeyStore.getInstance(KeyStore.getDefaultType());
  71. trustStore.load(null, null);
  72.  
  73. SSLSocketFactory sf = new MySSLSocketFactory(trustStore);
  74. sf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
  75.  
  76. HttpParams params = new BasicHttpParams();
  77. HttpConnectionParams.setSoTimeout(params, Timeout);
  78. HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1);
  79. HttpProtocolParams.setContentCharset(params, HTTP.UTF_8);
  80.  
  81. SchemeRegistry registry = new SchemeRegistry();
  82. registry.register(new Scheme("http", PlainSocketFactory.getSocketFactory(), 80));
  83. registry.register(new Scheme("https", sf, 443));
  84.  
  85. ClientConnectionManager ccm = new ThreadSafeClientConnManager(params, registry);
  86.  
  87. return new DefaultHttpClient(ccm, params);
  88.  
  89. } catch (Exception e) {
  90. return new DefaultHttpClient();
  91. }
  92. }
  93.  
  94.  
  95. @Override
  96. public void run()
  97. {
  98. try
  99. {
  100. nError = 0;
  101.  
  102. HttpParams params = request.getParams();
  103.  
  104. HttpProtocolParams.setContentCharset(params, HTTP.UTF_8);
  105. HttpProtocolParams.setUseExpectContinue(params, false);
  106. request.setParams(params);
  107.  
  108. client = mmfHttpClient();
  109.  
  110. if(Username != null && Password != null) {
  111. UsernamePasswordCredentials creds = new UsernamePasswordCredentials(Username, Password);
  112. request.addHeader(BasicScheme.authenticate(creds,"US-ASCII",false));
  113. }
  114.  
  115. HttpResponse response = client.execute(request);
  116. StatusLine statusLine = response.getStatusLine();
  117.  
  118. int statusCode = statusLine.getStatusCode();
  119.  
  120. if (statusCode == 200) { // Status OK
  121. HttpEntity entity = response.getEntity();
  122.  
  123. String charset = GetCharset(entity);
  124.  
  125. InputStreamReader reader;
  126.  
  127. if(charset !=null)
  128. reader = new InputStreamReader(entity.getContent(), charset);
  129. else
  130. reader = new InputStreamReader(entity.getContent(), "UTF-8");
  131.  
  132. char [] buffer = new char [1024 * 32];
  133. StringBuilder builder = new StringBuilder();
  134.  
  135. for (;;)
  136. {
  137. int length = reader.read (buffer);
  138.  
  139. if (length < 0)
  140. break;
  141.  
  142. builder.append(buffer, 0, length);
  143. }
  144.  
  145. text = builder.toString();
  146. if(charset == null) {
  147. if(text.contains("charset")) {
  148. String textTmp = text;
  149. String charsetName;
  150. int count = textTmp.indexOf("charset=",1);
  151. charsetName = textTmp.substring(textTmp.indexOf("=",count+1)+1, textTmp.indexOf(">", count+2));
  152. charsetName = charsetName.replace(""", "");
  153. charsetName = charsetName.replace("/", "");
  154. charsetName = charsetName.replace(" ", "");
  155. text = new String(textTmp.getBytes(), charsetName);
  156. }
  157. }
  158. }
  159. else {
  160. text="";
  161. nError = statusCode;
  162. }
  163. finished = true;
  164. }
  165. catch(Exception e)
  166. {
  167. Log.i("GET","Error: "+e.toString());
  168. text = "";
  169. finished = true;
  170. }
  171. finally
  172. {
  173. if (client != null && client.getConnectionManager() != null) {
  174. client.getConnectionManager().shutdown();
  175. client = null;
  176. }
  177. finished = true;
  178. }
  179. }
  180.  
  181. public String GetCharset(HttpEntity entity) {
  182. String charset = null;
  183. if (entity.getContentType() != null) {
  184. HeaderElement values[] = entity.getContentType().getElements();
  185. if (values.length > 0) {
  186. NameValuePair param = values[0].getParameterByName("charset");
  187. if (param != null) {
  188. charset = param.getValue();
  189. }
  190. }
  191. }
  192. return charset;
  193. }
  194. }
  195.  
  196. class MySSLSocketFactory extends SSLSocketFactory {
  197. SSLContext sslContext = SSLContext.getInstance("TLS");
  198.  
  199. public MySSLSocketFactory(KeyStore truststore) throws NoSuchAlgorithmException, KeyManagementException, KeyStoreException, UnrecoverableKeyException {
  200. super(truststore);
  201.  
  202. TrustManager tm = new X509TrustManager() {
  203. @Override
  204. public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {
  205. }
  206.  
  207. @Override
  208. public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException {
  209. }
  210.  
  211. @Override
  212. public X509Certificate[] getAcceptedIssuers() {
  213. return null;
  214. }
  215. };
  216.  
  217. sslContext.init(null, new TrustManager[] { tm }, null);
  218. }
  219.  
  220. @Override
  221. public Socket createSocket(Socket socket, String host, int port, boolean autoClose) throws IOException, UnknownHostException {
  222. return sslContext.getSocketFactory().createSocket(socket, host, port, autoClose);
  223. }
  224.  
  225. @Override
  226. public Socket createSocket() throws IOException {
  227. return sslContext.getSocketFactory().createSocket();
  228. }
  229. }
  230.  
  231. package Extensions;
  232.  
  233. import java.net.MalformedURLException;
  234. import java.net.URI;
  235. import java.net.URISyntaxException;
  236. import java.net.URL;
  237. import java.net.URLEncoder;
  238. import java.util.ArrayList;
  239. import java.util.List;
  240.  
  241. import org.apache.http.NameValuePair;
  242. import org.apache.http.client.entity.UrlEncodedFormEntity;
  243. import org.apache.http.client.methods.HttpGet;
  244. import org.apache.http.client.methods.HttpPost;
  245. import org.apache.http.client.utils.URLEncodedUtils;
  246.  
  247. import Actions.CActExtension;
  248. import Conditions.CCndExtension;
  249. import Expressions.CValue;
  250. import RunLoop.CCreateObjectInfo;
  251. import Services.CBinaryFile;
  252.  
  253.  
  254. public class CRunGet extends CRunExtension
  255. {
  256. private Boolean usePost;
  257.  
  258. private CRunGetThread thread;
  259. private String response;
  260. private String sURL;
  261. private URL mURL;
  262. private String mHeader="";
  263. private String mUser="";
  264. private String mPassword="";
  265. private String mUserAgent="";
  266. private int Timeout;
  267.  
  268. private int nError;
  269.  
  270. private ArrayList<NameValuePair> postData;
  271.  
  272. @Override public int getNumberOfConditions()
  273. {
  274. return 3;
  275. }
  276.  
  277. @Override
  278. public boolean createRunObject(CBinaryFile file, CCreateObjectInfo cob, int version)
  279. {
  280. usePost = false;
  281. postData = new ArrayList<NameValuePair>();
  282.  
  283. return true;
  284. }
  285.  
  286. @Override
  287. public void destroyRunObject(boolean bFast)
  288. {
  289. if(thread != null)
  290. thread = null;
  291. }
  292.  
  293. @Override
  294. public int handleRunObject()
  295. {
  296. if(thread != null)
  297. {
  298. if(thread.finished)
  299. {
  300. response = thread.text;
  301.  
  302. ho.generateEvent(0, 0);
  303. thread = null;
  304. }
  305. }
  306.  
  307. return 0;
  308. }
  309.  
  310. @Override
  311. public boolean condition(int num, CCndExtension cnd)
  312. {
  313. switch (num)
  314. {
  315. case 0:
  316. return true;
  317.  
  318. case 1:
  319. return thread != null;
  320.  
  321. case 2:
  322. return true;
  323. }
  324.  
  325. return false;
  326. }
  327.  
  328. @Override
  329. public void action(int num, CActExtension act)
  330. {
  331. switch (num)
  332. {
  333. case 0:
  334.  
  335. if(thread != null)
  336. return;
  337.  
  338. try
  339. {
  340. thread = new CRunGetThread();
  341.  
  342. sURL = act.getParamExpString(rh, 0);
  343. mURL = new URL(sURL);
  344.  
  345. thread.Hosts = mURL.getHost();
  346. thread.Ports = mURL.getPort();
  347.  
  348. if(mURL.getUserInfo() != null){
  349. String UserInfo = mURL.getUserInfo();
  350. String Login[] = UserInfo.split(":");
  351. thread.Username = Login[0];
  352. thread.Password = Login[1];
  353. mURL = new URL (mURL.getProtocol(), mURL.getHost(), mURL.getPort(), mURL.getFile());
  354. }
  355. else if(mUser.length()>0){
  356. thread.Username = mUser;
  357. if(mPassword.length()>0)
  358. thread.Password = mPassword;
  359. else
  360. thread.Password = null;
  361. }
  362. else {
  363. thread.Username = null;
  364. thread.Password = null;
  365. }
  366.  
  367. // Verify for what type of protocol it is
  368. if(mURL.getProtocol().toLowerCase().equals("https"))
  369. thread.isHttps = true;
  370. else
  371. thread.isHttps = false;
  372.  
  373. thread.Timeout = Timeout;
  374.  
  375. if(usePost)
  376. {
  377.  
  378. HttpPost post = new HttpPost(mURL.toString());
  379.  
  380. if(mUserAgent.length()==0)
  381. post.addHeader("user-agent", "Chrome");
  382. else
  383. post.addHeader("user-agent", mUserAgent);
  384.  
  385. post.addHeader("Content-Type", "application/x-www-form-urlencoded");
  386.  
  387.  
  388. if(mHeader.length() > 0) {
  389. String lines[] = mHeader.split("[\r\n]+");
  390. for (int i=0; i < lines.length; i++) {
  391. String fields[] = lines[i].split(":");
  392. post.addHeader(fields[0].trim(), fields[1].trim());
  393. }
  394. }
  395.  
  396.  
  397. try
  398. {
  399. post.setEntity(new UrlEncodedFormEntity(postData));
  400. }
  401. catch(Exception e)
  402. {
  403. response = "";
  404. nError = -1;
  405. ho.generateEvent(0, 0);
  406. thread.finished = true;
  407. return;
  408. }
  409.  
  410. thread.request = post;
  411. thread.start();
  412.  
  413. usePost = false;
  414. postData = new ArrayList<NameValuePair>();
  415. }
  416. else
  417. {
  418. HttpGet get = new HttpGet(mURL.toString());
  419.  
  420. thread.request = get;
  421. thread.start();
  422. }
  423. }
  424. catch(RuntimeException e)
  425. {
  426. response = "";
  427. nError=-1;
  428. ho.generateEvent(0, 0);
  429. thread.finished = true;
  430. return;
  431.  
  432. } catch (MalformedURLException e1) {
  433. // TODO Auto-generated catch block
  434. e1.printStackTrace();
  435. }
  436.  
  437. break;
  438.  
  439. case 1:
  440.  
  441. usePost = true;
  442.  
  443. final String name = act.getParamExpString(rh, 0);
  444. final String value = act.getParamExpString(rh, 1);
  445.  
  446. postData.add(new NameValuePair()
  447. {
  448. @Override
  449. public String getName()
  450. {
  451. return name;
  452. }
  453.  
  454. @Override
  455. public String getValue()
  456. {
  457. return value;
  458. }
  459. });
  460.  
  461. break;
  462.  
  463. case 2: // Custom Header
  464. mHeader = act.getParamExpString(rh, 0);
  465. break;
  466. case 3: // Set User
  467. mUser = act.getParamExpString(rh, 0);
  468. break;
  469. case 4: // Set password
  470. mPassword = act.getParamExpString(rh, 0);
  471. break;
  472. case 5: // Set Timeout
  473. Timeout = act.getParamExpression(rh, 0);
  474. break;
  475. case 6: // Set User-Agent
  476. mUserAgent = act.getParamExpString(rh, 0);
  477. break;
  478.  
  479. }
  480. }
  481.  
  482. @Override
  483. public CValue expression(int num)
  484. {
  485. switch (num)
  486. {
  487. case 0:
  488. return new CValue(response);
  489.  
  490. case 1:
  491. return new CValue(java.net.URLEncoder.encode(ho.getExpParam().getString()));
  492.  
  493. case 2:
  494. return new CValue(nError);
  495. }
  496.  
  497. return new CValue(0);
  498. }
  499.  
  500. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement