13
13
namespace Shieldon \Firewall \Driver ;
14
14
15
15
use Shieldon \Firewall \Driver \DriverProvider ;
16
+ use Shieldon \Firewall \Driver \SqlTrait ;
16
17
use Exception ;
17
18
use PDO ;
18
19
19
- use function is_array ;
20
20
use function is_bool ;
21
+ use function is_null ;
21
22
22
23
/**
23
24
* SQL Driver provider.
24
25
*/
25
26
class SqlDriverProvider extends DriverProvider
26
27
{
28
+ use SqlTrait;
29
+
27
30
/**
28
31
* Data engine will be used on.
29
32
*
@@ -196,10 +199,16 @@ protected function doSave(string $ip, array $data, string $type = 'filter', $exp
196
199
*/
197
200
protected function doDelete (string $ ip , string $ type = 'filter ' ): bool
198
201
{
202
+
199
203
switch ($ type ) {
200
- case 'rule ' : return $ this ->remove ($ this ->tableRuleList , ['log_ip ' => $ ip ]);
201
- case 'filter ' : return $ this ->remove ($ this ->tableFilterLogs , ['log_ip ' => $ ip ]);
202
- case 'session ' : return $ this ->remove ($ this ->tableSessions , ['id ' => $ ip ]);
204
+ case 'rule ' :
205
+ return $ this ->remove ($ this ->tableRuleList , ['log_ip ' => $ ip ]);
206
+
207
+ case 'filter ' :
208
+ return $ this ->remove ($ this ->tableFilterLogs , ['log_ip ' => $ ip ]);
209
+
210
+ case 'session ' :
211
+ return $ this ->remove ($ this ->tableSessions , ['id ' => $ ip ]);
203
212
}
204
213
205
214
return false ;
@@ -222,7 +231,7 @@ protected function doRebuild(): bool
222
231
*
223
232
* @return bool
224
233
*/
225
- private function update (string $ table , array $ data , array $ where )
234
+ protected function update (string $ table , array $ data , array $ where )
226
235
{
227
236
$ placeholder = [];
228
237
foreach ($ data as $ k => $ v ) {
@@ -288,7 +297,7 @@ private function update(string $table, array $data, array $where)
288
297
*
289
298
* @return bool
290
299
*/
291
- private function insert (string $ table , array $ data )
300
+ protected function insert (string $ table , array $ data )
292
301
{
293
302
$ placeholderField = [];
294
303
$ placeholderValue = [];
@@ -347,7 +356,7 @@ private function insert(string $table, array $data)
347
356
*
348
357
* @return bool
349
358
*/
350
- private function remove (string $ table , array $ where ): bool
359
+ protected function remove (string $ table , array $ where ): bool
351
360
{
352
361
353
362
$ placeholder = [];
@@ -469,7 +478,7 @@ protected function rebuildSql(): bool
469
478
470
479
$ this ->installSql ();
471
480
472
- return true ;
481
+
473
482
474
483
// @codeCoverageIgnoreStart
475
484
@@ -478,6 +487,8 @@ protected function rebuildSql(): bool
478
487
}
479
488
480
489
// @codeCoverageIgnoreEnd
490
+
491
+ return true ;
481
492
}
482
493
483
494
/**
@@ -497,165 +508,4 @@ protected function checkTableExists(): bool
497
508
498
509
return false ;
499
510
}
500
-
501
- /**
502
- * Fetch data from filter table.
503
- *
504
- * @param string $ip An IP address.
505
- *
506
- * @return array
507
- */
508
- private function doFetchFromFilterTable (string $ ip ): array
509
- {
510
- $ results = [];
511
-
512
- $ sql = 'SELECT log_ip, log_data FROM ' . $ this ->tableFilterLogs . '
513
- WHERE log_ip = :log_ip
514
- LIMIT 1 ' ;
515
-
516
- $ query = $ this ->db ->prepare ($ sql );
517
- $ query ->bindValue (':log_ip ' , $ ip , $ this ->db ::PARAM_STR );
518
- $ query ->execute ();
519
- $ resultData = $ query ->fetch ($ this ->db ::FETCH_ASSOC );
520
-
521
- // No data found.
522
- if (is_bool ($ resultData ) && !$ resultData ) {
523
- $ resultData = [];
524
- }
525
-
526
- if (!empty ($ resultData ['log_data ' ])) {
527
- $ results = json_decode ($ resultData ['log_data ' ], true );
528
- }
529
-
530
- return $ results ;
531
- }
532
-
533
- /**
534
- * Fetch data from rule table.
535
- *
536
- * @param string $ip An IP address.
537
- *
538
- * @return array
539
- */
540
- private function doFetchFromRuleTable (string $ ip ): array
541
- {
542
- $ results = [];
543
-
544
- $ sql = 'SELECT * FROM ' . $ this ->tableRuleList . '
545
- WHERE log_ip = :log_ip
546
- LIMIT 1 ' ;
547
-
548
- $ query = $ this ->db ->prepare ($ sql );
549
- $ query ->bindValue (':log_ip ' , $ ip , $ this ->db ::PARAM_STR );
550
- $ query ->execute ();
551
- $ resultData = $ query ->fetch ($ this ->db ::FETCH_ASSOC );
552
-
553
- // No data found.
554
- if (is_bool ($ resultData ) && !$ resultData ) {
555
- $ resultData = [];
556
- }
557
-
558
- if (is_array ($ resultData )) {
559
- $ results = $ resultData ;
560
- }
561
-
562
- return $ results ;
563
- }
564
-
565
- /**
566
- * Fetch data from session table.
567
- *
568
- * @param string $ip An IP address.
569
- *
570
- * @return array
571
- */
572
- private function doFetchFromSessionTable (string $ ip ): array
573
- {
574
- $ results = [];
575
-
576
- $ sql = 'SELECT * FROM ' . $ this ->tableSessions . '
577
- WHERE id = :id
578
- LIMIT 1 ' ;
579
-
580
- $ query = $ this ->db ->prepare ($ sql );
581
- $ query ->bindValue (':id ' , $ ip , $ this ->db ::PARAM_STR );
582
- $ query ->execute ();
583
- $ resultData = $ query ->fetch ($ this ->db ::FETCH_ASSOC );
584
-
585
- // No data found.
586
- if (is_bool ($ resultData ) && !$ resultData ) {
587
- $ resultData = [];
588
- }
589
-
590
- if (is_array ($ resultData )) {
591
- $ results = $ resultData ;
592
- }
593
-
594
- return $ results ;
595
- }
596
-
597
- /**
598
- * Fetch all data from filter table.
599
- *
600
- * @return array
601
- */
602
- private function doFetchAllFromFilterTable (): array
603
- {
604
- $ results = [];
605
-
606
- $ sql = 'SELECT log_ip, log_data FROM ' . $ this ->tableFilterLogs ;
607
-
608
- $ query = $ this ->db ->prepare ($ sql );
609
- $ query ->execute ();
610
- $ resultData = $ query ->fetchAll ($ this ->db ::FETCH_ASSOC );
611
-
612
- if (is_array ($ resultData )) {
613
- $ results = $ resultData ;
614
- }
615
-
616
- return $ results ;
617
- }
618
-
619
- /**
620
- * Fetch all data from filter table.
621
- *
622
- * @return array
623
- */
624
- private function doFetchAllFromRuleTable (): array
625
- {
626
- $ results = [];
627
-
628
- $ sql = 'SELECT * FROM ' . $ this ->tableRuleList ;
629
-
630
- $ query = $ this ->db ->prepare ($ sql );
631
- $ query ->execute ();
632
- $ resultData = $ query ->fetchAll ($ this ->db ::FETCH_ASSOC );
633
-
634
- if (is_array ($ resultData )) {
635
- $ results = $ resultData ;
636
- }
637
-
638
- return $ results ;
639
- }
640
-
641
- /**
642
- * Fetch all data from session table.
643
- * @return array
644
- */
645
- private function doFetchAllFromSessionTable (): array
646
- {
647
- $ results = [];
648
-
649
- $ sql = 'SELECT * FROM ' . $ this ->tableSessions . ' ORDER BY microtimesamp ASC ' ;
650
-
651
- $ query = $ this ->db ->prepare ($ sql );
652
- $ query ->execute ();
653
- $ resultData = $ query ->fetchAll ($ this ->db ::FETCH_ASSOC );
654
-
655
- if (is_array ($ resultData )) {
656
- $ results = $ resultData ;
657
- }
658
-
659
- return $ results ;
660
- }
661
511
}
0 commit comments