integration.t 28 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142
  1. use Test::Nginx::Socket 'no_plan';
  2. our $MainConfig = <<'_EOC_';
  3. env DETECTOR_IP;
  4. _EOC_
  5. our $HttpConfig = <<'_EOC_';
  6. lua_package_path "lib/?.lua;/usr/local/share/lua/5.1/?.lua;;";
  7. lua_socket_log_errors off;
  8. _EOC_
  9. run_tests();
  10. __DATA__
  11. === TEST 1: integration test blocked
  12. --- main_config eval: $::MainConfig
  13. --- http_config eval: $::HttpConfig
  14. --- config
  15. location /t {
  16. access_by_lua_block {
  17. local t1k = require "resty.t1k"
  18. local t = {
  19. mode = "block",
  20. host = os.getenv("DETECTOR_IP"),
  21. port = 8000,
  22. connect_timeout = 1000,
  23. send_timeout = 1000,
  24. read_timeout = 1000,
  25. req_body_size = 1024,
  26. keepalive_size = 16,
  27. keepalive_timeout = 10000,
  28. }
  29. local ok, err, result = t1k.do_access(t)
  30. if not ok then
  31. ngx.log(ngx.ERR, err)
  32. return
  33. end
  34. if t.mode ~= "block" then
  35. ngx.log(ngx.DEBUG, "skip blocking")
  36. return
  37. end
  38. ok, err = t1k.do_handle(result)
  39. if not ok then
  40. ngx.log(ngx.ERR, err)
  41. return
  42. end
  43. }
  44. header_filter_by_lua_block {
  45. local t1k = require "resty.t1k"
  46. t1k.do_header_filter()
  47. }
  48. content_by_lua_block {
  49. ngx.say("passed")
  50. }
  51. }
  52. --- request
  53. GET /t/shell.php
  54. --- response_headers
  55. Content-Type: application/json
  56. --- response_body_like eval
  57. '^{"code": 403, "success":false, "message": "blocked by Chaitin SafeLine Web Application Firewall", "event_id": ".*"}$'
  58. --- error_code: 403
  59. --- no_error_log
  60. [error]
  61. --- error_log eval
  62. "lua-resty-t1k: successfully connected to t1k server $ENV{DETECTOR_IP}:8000"
  63. --- log_level: debug
  64. --- skip_eval
  65. 4: not exists($ENV{DETECTOR_IP})
  66. === TEST 2: integration test blocked internal handle
  67. --- main_config eval: $::MainConfig
  68. --- http_config eval: $::HttpConfig
  69. --- config
  70. location /t {
  71. access_by_lua_block {
  72. local t1k = require "resty.t1k"
  73. local t = {
  74. mode = "block",
  75. host = os.getenv("DETECTOR_IP"),
  76. port = 8000,
  77. connect_timeout = 1000,
  78. send_timeout = 1000,
  79. read_timeout = 1000,
  80. req_body_size = 1024,
  81. keepalive_size = 16,
  82. keepalive_timeout = 10000,
  83. }
  84. local ok, err, result = t1k.do_access(t, true)
  85. if not ok then
  86. ngx.log(ngx.ERR, err)
  87. end
  88. }
  89. header_filter_by_lua_block {
  90. local t1k = require "resty.t1k"
  91. t1k.do_header_filter()
  92. }
  93. content_by_lua_block {
  94. ngx.say("passed")
  95. }
  96. }
  97. --- request
  98. GET /t/shell.php
  99. --- response_headers
  100. Content-Type: application/json
  101. --- response_body_like eval
  102. '^{"code": 403, "success":false, "message": "blocked by Chaitin SafeLine Web Application Firewall", "event_id": ".*"}$'
  103. --- error_code: 403
  104. --- no_error_log
  105. [error]
  106. --- error_log eval
  107. "lua-resty-t1k: successfully connected to t1k server $ENV{DETECTOR_IP}:8000"
  108. --- log_level: debug
  109. --- skip_eval
  110. 4: not exists($ENV{DETECTOR_IP})
  111. === TEST 3: integration test blocked http2
  112. --- main_config eval: $::MainConfig
  113. --- http_config eval: $::HttpConfig
  114. --- config
  115. location /t {
  116. access_by_lua_block {
  117. local t1k = require "resty.t1k"
  118. local t = {
  119. mode = "block",
  120. host = os.getenv("DETECTOR_IP"),
  121. port = 8000,
  122. connect_timeout = 1000,
  123. send_timeout = 1000,
  124. read_timeout = 1000,
  125. req_body_size = 1024,
  126. keepalive_size = 16,
  127. keepalive_timeout = 10000,
  128. }
  129. local ok, err, result = t1k.do_access(t)
  130. if not ok then
  131. ngx.log(ngx.ERR, err)
  132. return
  133. end
  134. if t.mode ~= "block" then
  135. ngx.log(ngx.DEBUG, "skip blocking")
  136. return
  137. end
  138. ok, err = t1k.do_handle(result)
  139. if not ok then
  140. ngx.log(ngx.ERR, err)
  141. return
  142. end
  143. }
  144. header_filter_by_lua_block {
  145. local t1k = require "resty.t1k"
  146. t1k.do_header_filter()
  147. }
  148. content_by_lua_block {
  149. ngx.say("passed")
  150. }
  151. }
  152. --- http2
  153. --- request
  154. GET /t/shell.php
  155. --- response_headers
  156. Content-Type: application/json
  157. --- response_body_like eval
  158. '^{"code": 403, "success":false, "message": "blocked by Chaitin SafeLine Web Application Firewall", "event_id": ".*"}$'
  159. --- error_code: 403
  160. --- no_error_log
  161. [error]
  162. --- error_log eval
  163. "lua-resty-t1k: successfully connected to t1k server $ENV{DETECTOR_IP}:8000"
  164. --- log_level: debug
  165. --- skip_eval
  166. 4: not exists($ENV{DETECTOR_IP})
  167. === TEST 4: integration test blocked http2 internal handle
  168. --- main_config eval: $::MainConfig
  169. --- http_config eval: $::HttpConfig
  170. --- config
  171. location /t {
  172. access_by_lua_block {
  173. local t1k = require "resty.t1k"
  174. local t = {
  175. mode = "block",
  176. host = os.getenv("DETECTOR_IP"),
  177. port = 8000,
  178. connect_timeout = 1000,
  179. send_timeout = 1000,
  180. read_timeout = 1000,
  181. req_body_size = 1024,
  182. keepalive_size = 16,
  183. keepalive_timeout = 10000,
  184. }
  185. local ok, err, result = t1k.do_access(t, true)
  186. if not ok then
  187. ngx.log(ngx.ERR, err)
  188. end
  189. }
  190. header_filter_by_lua_block {
  191. local t1k = require "resty.t1k"
  192. t1k.do_header_filter()
  193. }
  194. content_by_lua_block {
  195. ngx.say("passed")
  196. }
  197. }
  198. --- http2
  199. --- request
  200. GET /t/shell.php
  201. --- response_headers
  202. Content-Type: application/json
  203. --- response_body_like eval
  204. '^{"code": 403, "success":false, "message": "blocked by Chaitin SafeLine Web Application Firewall", "event_id": ".*"}$'
  205. --- error_code: 403
  206. --- no_error_log
  207. [error]
  208. --- error_log eval
  209. "lua-resty-t1k: successfully connected to t1k server $ENV{DETECTOR_IP}:8000"
  210. --- log_level: debug
  211. --- skip_eval
  212. 4: not exists($ENV{DETECTOR_IP})
  213. === TEST 5: integration test monitor
  214. --- main_config eval: $::MainConfig
  215. --- http_config eval: $::HttpConfig
  216. --- config
  217. location /t {
  218. access_by_lua_block {
  219. local t1k = require "resty.t1k"
  220. local t = {
  221. mode = "monitor",
  222. host = os.getenv("DETECTOR_IP"),
  223. port = 8000,
  224. connect_timeout = 1000,
  225. send_timeout = 1000,
  226. read_timeout = 1000,
  227. req_body_size = 1024,
  228. keepalive_size = 16,
  229. keepalive_timeout = 10000,
  230. }
  231. local ok, err, result = t1k.do_access(t)
  232. if not ok then
  233. ngx.log(ngx.ERR, err)
  234. return
  235. end
  236. if t.mode ~= "block" then
  237. ngx.log(ngx.DEBUG, "skip blocking")
  238. return
  239. end
  240. ok, err = t1k.do_handle(result)
  241. if not ok then
  242. ngx.log(ngx.ERR, err)
  243. return
  244. end
  245. }
  246. header_filter_by_lua_block {
  247. local t1k = require "resty.t1k"
  248. t1k.do_header_filter()
  249. }
  250. content_by_lua_block {
  251. ngx.say("passed")
  252. }
  253. }
  254. --- request
  255. GET /t/shell.php
  256. --- response_body
  257. passed
  258. --- no_error_log
  259. [error]
  260. --- error_log eval
  261. "lua-resty-t1k: successfully connected to t1k server $ENV{DETECTOR_IP}:8000"
  262. --- log_level: debug
  263. --- skip_eval
  264. 4: not exists($ENV{DETECTOR_IP})
  265. === TEST 6: integration test monitor internal handle
  266. --- main_config eval: $::MainConfig
  267. --- http_config eval: $::HttpConfig
  268. --- config
  269. location /t {
  270. access_by_lua_block {
  271. local t1k = require "resty.t1k"
  272. local t = {
  273. mode = "monitor",
  274. host = os.getenv("DETECTOR_IP"),
  275. port = 8000,
  276. connect_timeout = 1000,
  277. send_timeout = 1000,
  278. read_timeout = 1000,
  279. req_body_size = 1024,
  280. keepalive_size = 16,
  281. keepalive_timeout = 10000,
  282. }
  283. local ok, err, result = t1k.do_access(t, true)
  284. if not ok then
  285. ngx.log(ngx.ERR, err)
  286. end
  287. }
  288. header_filter_by_lua_block {
  289. local t1k = require "resty.t1k"
  290. t1k.do_header_filter()
  291. }
  292. content_by_lua_block {
  293. ngx.say("passed")
  294. }
  295. }
  296. --- request
  297. GET /t/shell.php
  298. --- response_body
  299. passed
  300. --- no_error_log
  301. [error]
  302. --- error_log eval
  303. "lua-resty-t1k: successfully connected to t1k server $ENV{DETECTOR_IP}:8000"
  304. --- log_level: debug
  305. --- skip_eval
  306. 4: not exists($ENV{DETECTOR_IP})
  307. === TEST 7: integration test monitor http2
  308. --- main_config eval: $::MainConfig
  309. --- http_config eval: $::HttpConfig
  310. --- config
  311. location /t {
  312. access_by_lua_block {
  313. local t1k = require "resty.t1k"
  314. local t = {
  315. mode = "monitor",
  316. host = os.getenv("DETECTOR_IP"),
  317. port = 8000,
  318. connect_timeout = 1000,
  319. send_timeout = 1000,
  320. read_timeout = 1000,
  321. req_body_size = 1024,
  322. keepalive_size = 16,
  323. keepalive_timeout = 10000,
  324. }
  325. local ok, err, result = t1k.do_access(t)
  326. if not ok then
  327. ngx.log(ngx.ERR, err)
  328. return
  329. end
  330. if t.mode ~= "block" then
  331. ngx.log(ngx.DEBUG, "skip blocking")
  332. return
  333. end
  334. ok, err = t1k.do_handle(result)
  335. if not ok then
  336. ngx.log(ngx.ERR, err)
  337. return
  338. end
  339. }
  340. header_filter_by_lua_block {
  341. local t1k = require "resty.t1k"
  342. t1k.do_header_filter()
  343. }
  344. content_by_lua_block {
  345. ngx.say("passed")
  346. }
  347. }
  348. --- http2
  349. --- request
  350. GET /t/shell.php
  351. --- response_body
  352. passed
  353. --- no_error_log
  354. [error]
  355. --- error_log eval
  356. ["lua-resty-t1k: successfully connected to t1k server $ENV{DETECTOR_IP}:8000", "skip blocking"]
  357. --- log_level: debug
  358. --- skip_eval
  359. 4: not exists($ENV{DETECTOR_IP})
  360. === TEST 8: integration test monitor http2 internal handle
  361. --- main_config eval: $::MainConfig
  362. --- http_config eval: $::HttpConfig
  363. --- config
  364. location /t {
  365. access_by_lua_block {
  366. local t1k = require "resty.t1k"
  367. local t = {
  368. mode = "monitor",
  369. host = os.getenv("DETECTOR_IP"),
  370. port = 8000,
  371. connect_timeout = 1000,
  372. send_timeout = 1000,
  373. read_timeout = 1000,
  374. req_body_size = 1024,
  375. keepalive_size = 16,
  376. keepalive_timeout = 10000,
  377. }
  378. local ok, err, result = t1k.do_access(t, true)
  379. if not ok then
  380. ngx.log(ngx.ERR, err)
  381. end
  382. }
  383. header_filter_by_lua_block {
  384. local t1k = require "resty.t1k"
  385. t1k.do_header_filter()
  386. }
  387. content_by_lua_block {
  388. ngx.say("passed")
  389. }
  390. }
  391. --- http2
  392. --- request
  393. GET /t/shell.php
  394. --- response_body
  395. passed
  396. --- no_error_log
  397. [error]
  398. --- error_log eval
  399. "lua-resty-t1k: successfully connected to t1k server $ENV{DETECTOR_IP}:8000"
  400. --- log_level: debug
  401. --- skip_eval
  402. 4: not exists($ENV{DETECTOR_IP})
  403. === TEST 9: integration test disabled
  404. --- http_config eval: $::HttpConfig
  405. --- config
  406. location /t {
  407. access_by_lua_block {
  408. local t1k = require "resty.t1k"
  409. local t = {
  410. mode = "off",
  411. }
  412. local ok, err, result = t1k.do_access(t)
  413. if not ok then
  414. ngx.log(ngx.ERR, err)
  415. return
  416. end
  417. if t.mode ~= "block" then
  418. ngx.log(ngx.DEBUG, "skip blocking")
  419. return
  420. end
  421. ok, err = t1k.do_handle(result)
  422. if not ok then
  423. ngx.log(ngx.ERR, err)
  424. return
  425. end
  426. }
  427. header_filter_by_lua_block {
  428. local t1k = require "resty.t1k"
  429. t1k.do_header_filter()
  430. }
  431. content_by_lua_block {
  432. ngx.say("passed")
  433. }
  434. }
  435. --- request
  436. GET /t/shell.php
  437. --- response_body
  438. passed
  439. --- no_error_log
  440. [error]
  441. --- error_log
  442. lua-resty-t1k: t1k is not enabled
  443. skip blocking
  444. --- log_level: debug
  445. === TEST 10: integration test configuration priority
  446. --- main_config eval: $::MainConfig
  447. --- http_config eval: $::HttpConfig
  448. --- config
  449. access_by_lua_block {
  450. local t1k = require "resty.t1k"
  451. local t = {
  452. mode = "block",
  453. host = os.getenv("DETECTOR_IP"),
  454. port = 8000,
  455. connect_timeout = 1000,
  456. send_timeout = 1000,
  457. read_timeout = 1000,
  458. req_body_size = 1024,
  459. keepalive_size = 16,
  460. keepalive_timeout = 10000,
  461. }
  462. local ok, err, result = t1k.do_access(t)
  463. if not ok then
  464. ngx.log(ngx.ERR, err)
  465. return
  466. end
  467. if t.mode ~= "block" then
  468. ngx.log(ngx.DEBUG, "skip blocking")
  469. return
  470. end
  471. ok, err = t1k.do_handle(result)
  472. if not ok then
  473. ngx.log(ngx.ERR, err)
  474. return
  475. end
  476. }
  477. header_filter_by_lua_block {
  478. local t1k = require "resty.t1k"
  479. t1k.do_header_filter()
  480. }
  481. location /pass {
  482. access_by_lua_block {
  483. }
  484. content_by_lua_block {
  485. ngx.say("passed")
  486. }
  487. }
  488. location /block {
  489. content_by_lua_block {
  490. ngx.say("there must be a problem when you see this line")
  491. }
  492. }
  493. --- request eval
  494. ["GET /pass/shell.php", "GET /block/shell.php"]
  495. --- response_body_like eval
  496. ["passed", '^{"code": 403, "success":false, "message": "blocked by Chaitin SafeLine Web Application Firewall", "event_id": ".*"}$']
  497. --- error_code eval
  498. [200, 403]
  499. --- no_error_log
  500. [error]
  501. --- skip_eval
  502. 6: not exists($ENV{DETECTOR_IP})
  503. === TEST 11: integration test blocked extra headers
  504. --- http_config eval: $::HttpConfig
  505. --- config
  506. location /t {
  507. access_by_lua_block {
  508. local t1k = require "resty.t1k"
  509. local t = {
  510. mode = "block",
  511. host = "127.0.0.1",
  512. port = 18000,
  513. connect_timeout = 1000,
  514. send_timeout = 1000,
  515. read_timeout = 1000,
  516. req_body_size = 1024,
  517. keepalive_size = 16,
  518. keepalive_timeout = 10000,
  519. }
  520. local ok, err, result = t1k.do_access(t)
  521. if not ok then
  522. ngx.log(ngx.ERR, err)
  523. return
  524. end
  525. if t.mode ~= "block" then
  526. ngx.log(ngx.DEBUG, "skip blocking")
  527. return
  528. end
  529. ok, err = t1k.do_handle(result)
  530. if not ok then
  531. ngx.log(ngx.ERR, err)
  532. return
  533. end
  534. }
  535. header_filter_by_lua_block {
  536. local t1k = require "resty.t1k"
  537. t1k.do_header_filter()
  538. }
  539. content_by_lua_block {
  540. ngx.say("passed")
  541. }
  542. }
  543. --- tcp_listen: 18000
  544. --- tcp_reply eval
  545. "\x41\x01\x00\x00\x00?\x02\x03\x00\x00\x00405\x23\x12\x00\x00\x00k1:v1\x0ak2:v2\x0ak3:v3\x0a\xa4\x33\x00\x00\x00<!-- event_id: c0c039a7c348486eaffd9e2f9846b66b -->"
  546. --- request
  547. GET /t/shell.php
  548. --- response_headers
  549. k1: v1
  550. k2: v2
  551. k3: v3
  552. --- response_headers
  553. Content-Type: application/json
  554. --- response_body
  555. {"code": 405, "success":false, "message": "blocked by Chaitin SafeLine Web Application Firewall", "event_id": "c0c039a7c348486eaffd9e2f9846b66b"}
  556. --- error_code eval
  557. "405"
  558. --- no_error_log
  559. [error]
  560. --- error_log
  561. lua-resty-t1k: successfully connected to t1k server 127.0.0.1:18000
  562. --- log_level: debug
  563. === TEST 12: integration test blocked extra headers internal handle
  564. --- http_config eval: $::HttpConfig
  565. --- config
  566. location /t {
  567. access_by_lua_block {
  568. local t1k = require "resty.t1k"
  569. local t = {
  570. mode = "block",
  571. host = "127.0.0.1",
  572. port = 18000,
  573. connect_timeout = 1000,
  574. send_timeout = 1000,
  575. read_timeout = 1000,
  576. req_body_size = 1024,
  577. keepalive_size = 16,
  578. keepalive_timeout = 10000,
  579. }
  580. local ok, err, result = t1k.do_access(t, true)
  581. if not ok then
  582. ngx.log(ngx.ERR, err)
  583. end
  584. }
  585. header_filter_by_lua_block {
  586. local t1k = require "resty.t1k"
  587. t1k.do_header_filter()
  588. }
  589. content_by_lua_block {
  590. ngx.say("passed")
  591. }
  592. }
  593. --- tcp_listen: 18000
  594. --- tcp_reply eval
  595. "\x41\x01\x00\x00\x00?\x02\x03\x00\x00\x00405\x23\x12\x00\x00\x00k1:v1\x0ak2:v2\x0ak3:v3\x0a\xa4\x33\x00\x00\x00<!-- event_id: c0c039a7c348486eaffd9e2f9846b66b -->"
  596. --- request
  597. GET /t/shell.php
  598. --- response_headers
  599. k1: v1
  600. k2: v2
  601. k3: v3
  602. --- response_headers
  603. Content-Type: application/json
  604. --- response_body
  605. {"code": 405, "success":false, "message": "blocked by Chaitin SafeLine Web Application Firewall", "event_id": "c0c039a7c348486eaffd9e2f9846b66b"}
  606. --- error_code eval
  607. "405"
  608. --- no_error_log
  609. [error]
  610. --- error_log
  611. lua-resty-t1k: successfully connected to t1k server 127.0.0.1:18000
  612. --- log_level: debug
  613. === TEST 13: integration test blocked extra headers with unix domain socket
  614. --- http_config eval: $::HttpConfig
  615. --- config
  616. location /t {
  617. access_by_lua_block {
  618. local t1k = require "resty.t1k"
  619. local t = {
  620. mode = "block",
  621. host = "unix:t1k.sock",
  622. connect_timeout = 1000,
  623. send_timeout = 1000,
  624. read_timeout = 1000,
  625. req_body_size = 1024,
  626. keepalive_size = 16,
  627. keepalive_timeout = 10000,
  628. }
  629. local ok, err, result = t1k.do_access(t)
  630. if not ok then
  631. ngx.log(ngx.ERR, err)
  632. return
  633. end
  634. if t.mode ~= "block" then
  635. ngx.log(ngx.DEBUG, "skip blocking")
  636. return
  637. end
  638. ok, err = t1k.do_handle(result)
  639. if not ok then
  640. ngx.log(ngx.ERR, err)
  641. return
  642. end
  643. }
  644. header_filter_by_lua_block {
  645. local t1k = require "resty.t1k"
  646. t1k.do_header_filter()
  647. }
  648. content_by_lua_block {
  649. ngx.say("passed")
  650. }
  651. }
  652. --- tcp_listen: t1k.sock
  653. --- tcp_reply eval
  654. "\x41\x01\x00\x00\x00?\x02\x03\x00\x00\x00405\x23\x12\x00\x00\x00k1:v1\x0ak2:v2\x0ak3:v3\x0a\xa4\x33\x00\x00\x00<!-- event_id: c0c039a7c348486eaffd9e2f9846b66b -->"
  655. --- request
  656. GET /t/shell.php
  657. --- response_headers
  658. k1: v1
  659. k2: v2
  660. k3: v3
  661. --- response_headers
  662. Content-Type: application/json
  663. --- response_body
  664. {"code": 405, "success":false, "message": "blocked by Chaitin SafeLine Web Application Firewall", "event_id": "c0c039a7c348486eaffd9e2f9846b66b"}
  665. --- error_code eval
  666. "405"
  667. --- no_error_log
  668. [error]
  669. --- error_log
  670. lua-resty-t1k: successfully connected to t1k server unix:t1k.sock
  671. --- log_level: debug
  672. === TEST 14: integration test passed extra headers
  673. --- http_config eval: $::HttpConfig
  674. --- config
  675. location /t {
  676. access_by_lua_block {
  677. local t1k = require "resty.t1k"
  678. local t = {
  679. mode = "block",
  680. host = "127.0.0.1",
  681. port = 18000,
  682. connect_timeout = 1000,
  683. send_timeout = 1000,
  684. read_timeout = 1000,
  685. req_body_size = 1024,
  686. keepalive_size = 16,
  687. keepalive_timeout = 10000,
  688. }
  689. local ok, err, result = t1k.do_access(t)
  690. if not ok then
  691. ngx.log(ngx.ERR, err)
  692. return
  693. end
  694. if t.mode ~= "block" then
  695. ngx.log(ngx.DEBUG, "skip blocking")
  696. return
  697. end
  698. ok, err = t1k.do_handle(result)
  699. if not ok then
  700. ngx.log(ngx.ERR, err)
  701. return
  702. end
  703. }
  704. header_filter_by_lua_block {
  705. local t1k = require "resty.t1k"
  706. t1k.do_header_filter()
  707. }
  708. content_by_lua_block {
  709. ngx.say("passed")
  710. }
  711. }
  712. --- tcp_listen: 18000
  713. --- tcp_reply eval
  714. "\x41\x01\x00\x00\x00.\xa3\x12\x00\x00\x00k1:v1\x0ak2:v2\x0ak3:v3\x0a"
  715. --- request
  716. GET /t
  717. --- response_headers
  718. k1: v1
  719. k2: v2
  720. k3: v3
  721. --- response_body
  722. passed
  723. --- no_error_log
  724. [error]
  725. --- error_log
  726. lua-resty-t1k: successfully connected to t1k server 127.0.0.1:18000
  727. --- log_level: debug
  728. === TEST 15: integration test passed extra headers internal handle
  729. --- http_config eval: $::HttpConfig
  730. --- config
  731. location /t {
  732. access_by_lua_block {
  733. local t1k = require "resty.t1k"
  734. local t = {
  735. mode = "block",
  736. host = "127.0.0.1",
  737. port = 18000,
  738. connect_timeout = 1000,
  739. send_timeout = 1000,
  740. read_timeout = 1000,
  741. req_body_size = 1024,
  742. keepalive_size = 16,
  743. keepalive_timeout = 10000,
  744. }
  745. local ok, err, result = t1k.do_access(t, true)
  746. if not ok then
  747. ngx.log(ngx.ERR, err)
  748. end
  749. }
  750. header_filter_by_lua_block {
  751. local t1k = require "resty.t1k"
  752. t1k.do_header_filter()
  753. }
  754. content_by_lua_block {
  755. ngx.say("passed")
  756. }
  757. }
  758. --- tcp_listen: 18000
  759. --- tcp_reply eval
  760. "\x41\x01\x00\x00\x00.\xa3\x12\x00\x00\x00k1:v1\x0ak2:v2\x0ak3:v3\x0a"
  761. --- request
  762. GET /t
  763. --- response_headers
  764. k1: v1
  765. k2: v2
  766. k3: v3
  767. --- response_body
  768. passed
  769. --- no_error_log
  770. [error]
  771. --- error_log
  772. lua-resty-t1k: successfully connected to t1k server 127.0.0.1:18000
  773. --- log_level: debug
  774. === TEST 16: integration test passed extra headers with unix domain socket
  775. --- http_config eval: $::HttpConfig
  776. --- config
  777. location /t {
  778. access_by_lua_block {
  779. local t1k = require "resty.t1k"
  780. local t = {
  781. mode = "block",
  782. host = "unix:t1k.sock",
  783. connect_timeout = 1000,
  784. send_timeout = 1000,
  785. read_timeout = 1000,
  786. req_body_size = 1024,
  787. keepalive_size = 16,
  788. keepalive_timeout = 10000,
  789. }
  790. local ok, err, result = t1k.do_access(t)
  791. if not ok then
  792. ngx.log(ngx.ERR, err)
  793. return
  794. end
  795. if t.mode ~= "block" then
  796. ngx.log(ngx.DEBUG, "skip blocking")
  797. return
  798. end
  799. ok, err = t1k.do_handle(result)
  800. if not ok then
  801. ngx.log(ngx.ERR, err)
  802. return
  803. end
  804. }
  805. header_filter_by_lua_block {
  806. local t1k = require "resty.t1k"
  807. t1k.do_header_filter()
  808. }
  809. content_by_lua_block {
  810. ngx.say("passed")
  811. }
  812. }
  813. --- tcp_listen: t1k.sock
  814. --- tcp_reply eval
  815. "\x41\x01\x00\x00\x00.\xa3\x12\x00\x00\x00k1:v1\x0ak2:v2\x0ak3:v3\x0a"
  816. --- request
  817. GET /t
  818. --- response_headers
  819. k1: v1
  820. k2: v2
  821. k3: v3
  822. --- response_body
  823. passed
  824. --- no_error_log
  825. [error]
  826. --- error_log
  827. lua-resty-t1k: successfully connected to t1k server unix:t1k.sock
  828. --- log_level: debug
  829. === TEST 17: integration test monitor extra headers
  830. --- http_config eval: $::HttpConfig
  831. --- config
  832. location /t {
  833. access_by_lua_block {
  834. local t1k = require "resty.t1k"
  835. local t = {
  836. mode = "monitor",
  837. host = "127.0.0.1",
  838. port = 18000,
  839. connect_timeout = 1000,
  840. send_timeout = 1000,
  841. read_timeout = 1000,
  842. req_body_size = 1024,
  843. keepalive_size = 16,
  844. keepalive_timeout = 10000,
  845. }
  846. local ok, err, result = t1k.do_access(t)
  847. if not ok then
  848. ngx.log(ngx.ERR, err)
  849. return
  850. end
  851. if t.mode ~= "block" then
  852. ngx.log(ngx.DEBUG, "skip blocking")
  853. return
  854. end
  855. ok, err = t1k.do_handle(result)
  856. if not ok then
  857. ngx.log(ngx.ERR, err)
  858. return
  859. end
  860. }
  861. header_filter_by_lua_block {
  862. local t1k = require "resty.t1k"
  863. t1k.do_header_filter()
  864. }
  865. content_by_lua_block {
  866. ngx.say("passed")
  867. }
  868. }
  869. --- tcp_listen: 18000
  870. --- tcp_reply eval
  871. "\x41\x01\x00\x00\x00?\x02\x03\x00\x00\x00405\x23\x12\x00\x00\x00k1:v1\x0ak2:v2\x0ak3:v3\x0a\xa4\x33\x00\x00\x00<!-- event_id: c0c039a7c348486eaffd9e2f9846b66b -->"
  872. --- request
  873. GET /t/shell.php
  874. --- raw_response_headers_unlike eval
  875. '.*k1: v1\r\n.*'
  876. --- response_body
  877. passed
  878. --- no_error_log
  879. [error]
  880. --- error_log
  881. lua-resty-t1k: successfully connected to t1k server 127.0.0.1:18000
  882. skip blocking
  883. --- log_level: debug
  884. === TEST 18: integration test monitor extra headers internal handle
  885. --- http_config eval: $::HttpConfig
  886. --- config
  887. location /t {
  888. access_by_lua_block {
  889. local t1k = require "resty.t1k"
  890. local t = {
  891. mode = "monitor",
  892. host = "127.0.0.1",
  893. port = 18000,
  894. connect_timeout = 1000,
  895. send_timeout = 1000,
  896. read_timeout = 1000,
  897. req_body_size = 1024,
  898. keepalive_size = 16,
  899. keepalive_timeout = 10000,
  900. }
  901. local ok, err, result = t1k.do_access(t, true)
  902. if not ok then
  903. ngx.log(ngx.ERR, err)
  904. end
  905. }
  906. header_filter_by_lua_block {
  907. local t1k = require "resty.t1k"
  908. t1k.do_header_filter()
  909. }
  910. content_by_lua_block {
  911. ngx.say("passed")
  912. }
  913. }
  914. --- tcp_listen: 18000
  915. --- tcp_reply eval
  916. "\x41\x01\x00\x00\x00?\x02\x03\x00\x00\x00405\x23\x12\x00\x00\x00k1:v1\x0ak2:v2\x0ak3:v3\x0a\xa4\x33\x00\x00\x00<!-- event_id: c0c039a7c348486eaffd9e2f9846b66b -->"
  917. --- request
  918. GET /t/shell.php
  919. --- raw_response_headers_unlike eval
  920. '.*k1: v1\r\n.*'
  921. --- response_body
  922. passed
  923. --- no_error_log
  924. [error]
  925. --- error_log
  926. lua-resty-t1k: successfully connected to t1k server 127.0.0.1:18000
  927. --- log_level: debug
  928. === TEST 19: integration test monitor extra headers with unix domain socket
  929. --- http_config eval: $::HttpConfig
  930. --- config
  931. location /t {
  932. access_by_lua_block {
  933. local t1k = require "resty.t1k"
  934. local t = {
  935. mode = "monitor",
  936. host = "unix:t1k.sock",
  937. connect_timeout = 1000,
  938. send_timeout = 1000,
  939. read_timeout = 1000,
  940. req_body_size = 1024,
  941. keepalive_size = 16,
  942. keepalive_timeout = 10000,
  943. }
  944. local ok, err, result = t1k.do_access(t)
  945. if not ok then
  946. ngx.log(ngx.ERR, err)
  947. return
  948. end
  949. if t.mode ~= "block" then
  950. ngx.log(ngx.DEBUG, "skip blocking")
  951. return
  952. end
  953. ok, err = t1k.do_handle(result)
  954. if not ok then
  955. ngx.log(ngx.ERR, err)
  956. return
  957. end
  958. }
  959. header_filter_by_lua_block {
  960. local t1k = require "resty.t1k"
  961. t1k.do_header_filter()
  962. }
  963. content_by_lua_block {
  964. ngx.say("passed")
  965. }
  966. }
  967. --- tcp_listen: t1k.sock
  968. --- tcp_reply eval
  969. "\x41\x01\x00\x00\x00?\x02\x03\x00\x00\x00405\x23\x12\x00\x00\x00k1:v1\x0ak2:v2\x0ak3:v3\x0a\xa4\x33\x00\x00\x00<!-- event_id: c0c039a7c348486eaffd9e2f9846b66b -->"
  970. --- request
  971. GET /t/shell.php
  972. --- raw_response_headers_unlike eval
  973. '.*k1: v1\r\n.*'
  974. --- response_body
  975. passed
  976. --- no_error_log
  977. [error]
  978. --- error_log
  979. lua-resty-t1k: successfully connected to t1k server unix:t1k.sock
  980. skip blocking
  981. --- log_level: debug