Advertisement
Guest User

Untitled

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