PageRenderTime 40ms CodeModel.GetById 12ms RepoModel.GetById 0ms app.codeStats 0ms

/examples/webkitdlib.php

https://github.com/picklingjar/Webkitd
PHP | 458 lines | 342 code | 44 blank | 72 comment | 52 complexity | 539e9d5608079622f8b2db199aeff4ed MD5 | raw file
  1. <?php
  2. /*
  3. * Copyright (c) 2010 The Pickling Jar Ltd <code@thepicklingjar.com>
  4. *
  5. * Permission to use, copy, modify, and distribute this software for any
  6. * purpose with or without fee is hereby granted, provided that the above
  7. * copyright notice and this permission notice appear in all copies.
  8. *
  9. * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
  10. * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
  11. * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
  12. * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
  13. * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
  14. * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
  15. * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  16. */
  17. //defines for commands from webkitd.py
  18. define('CMDURL', 1); //done
  19. define('CMDGET', 2); //done
  20. define('CMDPOST', 3); //test
  21. define('CMDSETPOSTVAL', 4); //test
  22. define('CMDSETCOOKIES', 5); //done
  23. define('CMDDELCOOKIE', 6); //DEPRECATED
  24. define('CMDGETCOOKIES', 7); //done
  25. define('CMDSETPROXY', 8); //done
  26. define('CMDRETURNPROXY', 9); //done
  27. define('CMDSETREFERRER', 10); //done
  28. define('CMDSETUSERAGENT', 11); //done
  29. define('CMDNEWCOOKIEJAR', 12); //DEPRECATED
  30. define('CMDEXECUTE', 13); //done
  31. define('CMDQUIT', 14); //done
  32. define('CMDRETURNHTML', 15); //done
  33. define('CMDRUNJS', 16); //done
  34. define('CMDSSLERRORSOFF', 17); //done
  35. define('CMDSSLERRORSON', 18); //done
  36. define('CMDHTACCESSUSERNAME', 19); //done
  37. define('CMDHTACCESSPASSWORD', 20); //done
  38. define('CMDRETURNURL', 21); //done
  39. define('CMDRETURNHEADER', 22); /* last request header, could be an img :/ */
  40. define('CMDRETURNHTMLSOUP', 23); //DEPRECATED
  41. define('CMDRETURNIMAGE', 24); //done
  42. define('CMDRUNJQUERY', 25); //DEPRECATED
  43. define('CMDINPUTFILL', 26); //done
  44. define('CMDINPUTCHECK', 27); //done
  45. define('CMDINPUTUNCHECK', 28); //done
  46. define('CMDINPUTCHOOSE', 29); //done
  47. define('CMDINPUTSELECT', 30); //done
  48. define('CMDFORMSUBMIT', 31); //DEPRECATED -use clicklink
  49. define('CMDSCREENSHOT', 32); //done
  50. define('CMDCLICKLINK', 33); //done
  51. define('CMDSHOWBROWSER', 34); //done
  52. define('CMDIFRAMECOUNT', 35); //done
  53. define('CMDIFRAMESOURCEURL', 36); //done
  54. define('CMDIFRAMESELECT', 37); //TODO
  55. define('CMDSTAT', 99); //done
  56. define('CMDHELP', 0); //done
  57. function webkitd_connect($webkitdip = '127.0.0.1', $webkitdport = 3817){
  58. $fd = fsockopen($webkitdip, $webkitdport, $errno, $errstr, 10);
  59. return $fd;
  60. }
  61. //0
  62. function webkitd_help($fd){
  63. fwrite($fd, CMDHELP."\n");
  64. $str = '';
  65. $len = fgets($fd, 1024);
  66. $tlen = 0;
  67. while($tlen < $len) {
  68. $fragment = fread($fd, $len);
  69. $str .= $fragment;
  70. $tlen += strlen($fragment);
  71. }
  72. return $str;
  73. }
  74. //1
  75. function webkitd_url($fd, $url){
  76. fwrite($fd, CMDURL." ".$url."\n");
  77. $str = fgets($fd, 1024);
  78. if(trim($str) == 'ok'){
  79. return true;
  80. }
  81. return false;
  82. }
  83. //2
  84. function webkitd_get($fd){
  85. fwrite($fd, CMDGET."\n");
  86. $str = fgets($fd, 1024);
  87. if(trim($str) == 'ok'){
  88. return true;
  89. }
  90. return false;
  91. }
  92. //3
  93. function webkitd_post($fd){
  94. fwrite($fd, CMDPOST."\n");
  95. $str = fgets($fd, 1024);
  96. if(trim($str) == 'ok'){
  97. return true;
  98. }
  99. return false;
  100. }
  101. //4
  102. function webkitd_setpostval($fd,$key,$val){
  103. fwrite($fd, CMDSETPOSTVAL." ".$key." ".$val."\n");
  104. $str = fgets($fd, 1024);
  105. if(trim($str) == 'ok'){
  106. return true;
  107. }
  108. return false;
  109. }
  110. //5
  111. function webkitd_setcookies($fd, $cookie){
  112. fwrite($fd, CMDSETCOOKIES." ".$cookie."\n");
  113. $str = fgets($fd, 1024);
  114. if(trim($str) == 'ok'){
  115. return true;
  116. }
  117. return false;
  118. }
  119. //6 DEPRECATED
  120. /* function webkitd_deletecookie($fd, $cookie){
  121. fwrite($fd, CMDDELCOOKIE." ".$cookie."\n");
  122. $str = fgets($fd, 1024);
  123. if(trim($str) == 'ok'){
  124. return true;
  125. }
  126. return false;
  127. } */
  128. //7
  129. function webkitd_getcookies($fd){
  130. fwrite($fd, CMDGETCOOKIES."\n");
  131. $cookies = '';
  132. while($str = fgets($fd,8192)){
  133. if(trim($str) == "# End Netscape HTTP Cookie File") break;
  134. $cookies .= $str;
  135. }
  136. return $cookies;
  137. }
  138. // 8
  139. function webkitd_setproxy($fd,$proxy){
  140. fwrite($fd, CMDSETPROXY." ".$proxy."\n");
  141. $str = fgets($fd, 1024);
  142. return $str;
  143. }
  144. //9
  145. function webkitd_returnproxy($fd){
  146. fwrite($fd, CMDRETURNPROXY."\n");
  147. $str = fgets($fd, 1024);
  148. return $str;
  149. }
  150. //10
  151. function webkitd_setreferrer($fd, $ref){
  152. fwrite($fd, CMDSETREFERRER." ".$ref."\n");
  153. $str = fgets($fd, 1024);
  154. if(trim($str) == 'ok'){
  155. return true;
  156. }
  157. return false;
  158. }
  159. //11
  160. function webkitd_setuseragent($fd, $ua){
  161. fwrite($fd, CMDSETUSERAGENT." ".$ua."\n");
  162. $str = fgets($fd, 1024);
  163. if(trim($str) == 'ok'){
  164. return true;
  165. }
  166. return false;
  167. }
  168. //12 DEPRECATED
  169. //13
  170. function webkitd_execute($fd){
  171. global $globalerrcode;
  172. global $globalerrstr;
  173. fwrite($fd, CMDEXECUTE."\n");
  174. $str = fgets($fd, 1024);
  175. if(trim($str) == 'ok'){
  176. return true;
  177. }
  178. $p = explode(" ",$str,3);
  179. $globalerrcode = $p[1];
  180. $globalerrstr = $p[2];
  181. return false;
  182. }
  183. //14
  184. function webkitd_close($fd){
  185. fwrite($fd, CMDQUIT."\n");
  186. $str = fgets($fd, 1024);
  187. if(trim($str) == 'ok'){
  188. fclose($fd);
  189. return true;
  190. }
  191. fclose($fd);
  192. return false;
  193. }
  194. //15
  195. function webkitd_gethtml($fd){
  196. fwrite($fd, CMDRETURNHTMLSOUP."\n");
  197. $html = '';
  198. $len = fgets($fd, 1024);
  199. $tlen = 0;
  200. while($tlen < $len) {
  201. $fragment = fread($fd, $len);
  202. $html .= $fragment;
  203. $tlen += strlen($fragment);
  204. }
  205. return $html;
  206. }
  207. //16
  208. function webkitd_runjs($fd, $js){
  209. fwrite($fd, CMDRUNJS." ".$js."\n");
  210. $res = '';
  211. while($str = fgets($fd,8192)){
  212. if(trim($str) == "# End run js") break;
  213. $res .= $str;
  214. }
  215. return $res;
  216. }
  217. //17
  218. function webkitd_sslerrorsoff($fd){
  219. fwrite($fd, CMDSSLERRORSOFF."\n");
  220. $str = fgets($fd, 1024);
  221. if(trim($str) == 'ok'){
  222. return true;
  223. }
  224. fclose($fd);
  225. return false;
  226. }
  227. //18
  228. function webkitd_sslerrorson($fd){
  229. fwrite($fd, CMDSSLERRORSON."\n");
  230. $str = fgets($fd, 1024);
  231. if(trim($str) == 'ok'){
  232. return true;
  233. }
  234. fclose($fd);
  235. return false;
  236. }
  237. //19
  238. function webkitd_htaccessusername($fd, $username){
  239. fwrite($fd, CMDHTACCESSUSERNAME." ".$username."\n");
  240. $str = fgets($fd, 1024);
  241. if(trim($str) == 'ok'){
  242. return true;
  243. }
  244. fclose($fd);
  245. return false;
  246. }
  247. //20
  248. function webkitd_htaccesspassword($fd, $password){
  249. fwrite($fd, CMDHTACCESSPASSWORD." ".$password."\n");
  250. $str = fgets($fd, 1024);
  251. if(trim($str) == 'ok'){
  252. return true;
  253. }
  254. fclose($fd);
  255. return false;
  256. }
  257. //21
  258. function webkitd_returnurl($fd){
  259. fwrite($fd, CMDRETURNURL."\n");
  260. $str = fgets($fd, 1024);
  261. return $str;
  262. }
  263. //22
  264. function webkitd_returnheader($fd){
  265. fwrite($fd, CMDRETURNHEADER."\n");
  266. $header = '';
  267. $len = fgets($fd, 1024);
  268. $tlen = 0;
  269. while($tlen < $len) {
  270. $fragment = fread($fd, $len);
  271. $header .= $fragment;
  272. $tlen += strlen($fragment);
  273. }
  274. return $header;
  275. }
  276. //23 DEPRECATED
  277. //24
  278. function webkitd_returnimage($fd,$regex){
  279. fwrite($fd, CMDRETURNIMAGE." ".$regex."\n");
  280. $img = '';
  281. $len = fgets($fd, 1024);
  282. if($len == 0) return false; //regex failed to find match
  283. //echo "imagelen ".$len;
  284. $tlen = 0;
  285. while($tlen < $len) {
  286. $fragment = fread($fd, $len);
  287. $img .= $fragment;
  288. $tlen += strlen($fragment);
  289. }
  290. return $img;
  291. }
  292. //25 DEPRECATED
  293. /*function webkitd_runjquery($fd, $js){
  294. fwrite($fd, CMDRUNJQUERY." ".$js."\n");
  295. $str = fgets($fd, 1024);
  296. return $str;
  297. }*/
  298. //26
  299. function webkitd_inputfill($fd, $selector, $value){
  300. fwrite($fd, CMDINPUTFILL." ".$selector." ".$value."\n");
  301. $str = fgets($fd, 1024);
  302. if(trim($str) == 'ok'){
  303. return true;
  304. }
  305. return false;
  306. }
  307. //27
  308. function webkitd_inputcheck($fd, $selector){
  309. fwrite($fd, CMDINPUTCHECK." ".$selector."\n");
  310. $str = fgets($fd, 1024);
  311. if(trim($str) == 'ok'){
  312. return true;
  313. }
  314. return false;
  315. }
  316. //28
  317. function webkitd_inputuncheck($fd, $selector){
  318. fwrite($fd, CMDINPUTUNCHECK." ".$selector."\n");
  319. $str = fgets($fd, 1024);
  320. if(trim($str) == 'ok'){
  321. return true;
  322. }
  323. return false;
  324. }
  325. //29
  326. function webkitd_inputchoose($fd, $selector, $value){
  327. fwrite($fd, CMDINPUTCHOOSE." ".$selector." ".$value."\n");
  328. $str = fgets($fd, 1024);
  329. if(trim($str) == 'ok'){
  330. return true;
  331. }
  332. return false;
  333. }
  334. //30
  335. function webkitd_inputselect($fd, $selector){
  336. fwrite($fd, CMDINPUTSELECT." ".$selector."\n");
  337. $str = fgets($fd, 1024);
  338. if(trim($str) == 'ok'){
  339. return true;
  340. }
  341. return false;
  342. }
  343. //32
  344. function webkitd_screenshot($fd){
  345. fwrite($fd, CMDSCREENSHOT."\n");
  346. $img = '';
  347. $len = fgets($fd, 1024);
  348. if($len == 0) return false;
  349. $tlen = 0;
  350. while($tlen < $len) {
  351. //echo "tlen: ".$tlen;
  352. //echo "len: ".$len;
  353. $fragment = fread($fd, $len);
  354. //echo $fragment;
  355. $img .= $fragment;
  356. $tlen += strlen($fragment);
  357. }
  358. return $img;
  359. }
  360. //33
  361. function webkitd_clicklink($fd, $selector, $timeout = 300){
  362. fwrite($fd, CMDCLICKLINK." ".$selector." ".$timeout."\n");
  363. $str = fgets($fd, 1024);
  364. if(trim($str) == 'ok'){
  365. return true;
  366. }
  367. return false;
  368. }
  369. //34
  370. function webkitd_showbrowser($fd, $wait){
  371. fwrite($fd, CMDSHOWBROWSER." ".$wait."\n");
  372. $str = fgets($fd, 1024);
  373. if(trim($str) == 'ok'){
  374. return true;
  375. }
  376. return false;
  377. }
  378. //35
  379. function webkitd_iframecount($fd){
  380. fwrite($fd, CMDIFRAMECOUNT."\n");
  381. $str = fgets($fd, 1024);
  382. return($str);
  383. }
  384. //36
  385. function webkitd_iframesourceurl($fd,$iframenum){
  386. fwrite($fd, CMDIFRAMESOURCEURL." ".$iframenum."\n");
  387. $str = fgets($fd, 1024);
  388. return($str);
  389. }
  390. //37
  391. function webkitd_iframehtml($fd,$iframenum){
  392. fwrite($fd, CMDIFRAMEHTML." ".$iframenum."\n");
  393. $str = fgets($fd, 1024);
  394. return($str);
  395. }
  396. //38
  397. function webkitd_iframeselect($fd,$iframenum){
  398. fwrite($fd, CMDIFRAMESELECT." ".$iframenum."\n");
  399. $str = fgets($fd, 1024);
  400. if(trim($str) == 'ok'){
  401. return true;
  402. }
  403. return false;
  404. }
  405. //99
  406. function webkitd_stat($fd){
  407. fwrite($fd, CMDSTAT."\n");
  408. $str = fgets($fd, 1024);
  409. if(trim($str) == 'ok'){
  410. return true;
  411. }
  412. return false;
  413. }
  414. ?>