{"id":15309508,"url":"https://github.com/nguyenanhung/basic-firewall","last_synced_at":"2025-04-15T01:07:19.371Z","repository":{"id":41010272,"uuid":"401791796","full_name":"nguyenanhung/basic-firewall","owner":"nguyenanhung","description":"PHP Basic Firewall","archived":false,"fork":false,"pushed_at":"2024-11-05T16:43:11.000Z","size":102,"stargazers_count":4,"open_issues_count":0,"forks_count":3,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-04-06T06:48:41.542Z","etag":null,"topics":["firewall","ip-filter","php","php-basic"],"latest_commit_sha":null,"homepage":"","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nguyenanhung.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-08-31T17:39:05.000Z","updated_at":"2024-11-05T16:42:27.000Z","dependencies_parsed_at":"2024-03-01T16:24:37.514Z","dependency_job_id":"113687e0-732f-449d-ac03-19523473ca17","html_url":"https://github.com/nguyenanhung/basic-firewall","commit_stats":{"total_commits":44,"total_committers":2,"mean_commits":22.0,"dds":0.06818181818181823,"last_synced_commit":"34a3ce25357c37391f84feb4a8b00db3b45e8c64"},"previous_names":[],"tags_count":23,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nguyenanhung%2Fbasic-firewall","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nguyenanhung%2Fbasic-firewall/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nguyenanhung%2Fbasic-firewall/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nguyenanhung%2Fbasic-firewall/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nguyenanhung","download_url":"https://codeload.github.com/nguyenanhung/basic-firewall/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248852185,"owners_count":21171843,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["firewall","ip-filter","php","php-basic"],"created_at":"2024-10-01T08:24:03.669Z","updated_at":"2025-04-15T01:07:19.340Z","avatar_url":"https://github.com/nguyenanhung.png","language":"PHP","funding_links":[],"categories":["PHP"],"sub_categories":[],"readme":"[![Latest Stable Version](https://img.shields.io/packagist/v/nguyenanhung/basic-firewall.svg?style=flat-square)](https://packagist.org/packages/nguyenanhung/basic-firewall)\n[![Total Downloads](https://img.shields.io/packagist/dt/nguyenanhung/basic-firewall.svg?style=flat-square)](https://packagist.org/packages/nguyenanhung/basic-firewall)\n[![Daily Downloads](https://img.shields.io/packagist/dd/nguyenanhung/basic-firewall.svg?style=flat-square)](https://packagist.org/packages/nguyenanhung/basic-firewall)\n[![Monthly Downloads](https://img.shields.io/packagist/dm/nguyenanhung/basic-firewall.svg?style=flat-square)](https://packagist.org/packages/nguyenanhung/basic-firewall)\n[![License](https://img.shields.io/packagist/l/nguyenanhung/basic-firewall.svg?style=flat-square)](https://packagist.org/packages/nguyenanhung/basic-firewall)\n[![PHP Version Require](https://img.shields.io/packagist/dependency-v/nguyenanhung/basic-firewall/php)](https://packagist.org/packages/nguyenanhung/basic-firewall)\n\n# PHP Basic Firewall\n\nThư viện `PHP Basic Firewall` được xây dựng bằng PHP cung cấp 1 phương thức đơn giản để hạn chế quyền truy cập website /\napi / webservice dựa vào địa chỉ `IP` truy cập của người dùng.\n\nThông thường Firewall tốt nhất nên được thiết đặt từ tầng hệ thống: hệ điều hành có cài tường lửa\nnhư `iptables`, `firewalld` hay `CSF`.\n\nTuy nhiên, trong 1 số trường hợp DEV không có quyền can thiệp hệ thống hoặc không nắm chắc. Hoặc giả như muốn chủ động\ntrong các tình huống thì có thể tích hợp gói `PHP Basic Firewall` này vào để thực hiện từ tầng Application.\n\n## Version Support\n\n- [x] V1.x support all PHP version `\u003e=5.4`\n- [x] V2.x support all PHP version `\u003e=7.0`\n\n## Hướng dẫn sử dụng\n\n### Cài đặt gói\n\nCài đặt gói Basic Firewall thông qua composer với lệnh như sau\n\n```shell\ncomposer require nguyenanhung/basic-firewall\n```\n\n### Hướng dẫn tích hợp Firewall\n\nTham khảo cách tích hợp thông qua hướng dẫn tại đoạn code ví dụ dưới đây\n\n```php\n\u003c?php\n/**\n * Project basic-firewall\n * Created by PhpStorm\n * User: 713uk13m \u003cdev@nguyenanhung.com\u003e\n * Copyright: 713uk13m \u003cdev@nguyenanhung.com\u003e\n * Date: 09/01/2021\n * Time: 00:50\n */\nrequire_once __DIR__ . '/vendor/autoload.php';\n\nuse nguyenanhung\\PhpBasicFirewall\\FirewallIP;\n\n// ==================================== Setup List IP Whitelist\n// Setup constants HUNGNG_IP_WHITELIST\ndefined('HUNGNG_IP_WHITELIST') or define('HUNGNG_IP_WHITELIST', array(\n    '127.0.0.1',\n    '192.168.0.*',\n));\n// Or Whitelist Array\n$whiteList = array(\n    '127.0.0.1',\n    '192.168.0.*',\n);\n\n// ==================================== Setup List IP Blacklist\n// Setup constants HUNGNG_IP_BLACKLIST\ndefined('HUNGNG_IP_BLACKLIST') or define('HUNGNG_IP_BLACKLIST', array(\n    '127.0.0.1',\n    '192.168.0.*',\n));\n// Or Blacklist Array\n$blackList = array(\n    '192.168.0.50',\n);\n\n// ==================================== Start Firewall\n\n$firewall = new FirewallIP();\n$firewall-\u003esetLogDestination(__DIR__ . '/logs/FirewallLog.log')\n         -\u003esetIpWhiteList($whiteList)\n         -\u003esetIpBlackList($blackList)\n         -\u003echeckUserConnect(false);\n\nif (true !== $firewall-\u003eisAccess()) {\n    $firewall-\u003ewriteErrorLog($firewall-\u003eerrorLogMessage()); // Write log to /tmp/FirewallLog.log\n    $firewall-\u003eaccessDeniedResponse(); // Response 403 http code, Access Denied message\n}\n\n// ==================================== End Firewall\n\n// Pass qua firewall sẽ là các đoạn code thực hiện nghiệp vụ của bạn\n```\n\nTrong ví dụ trên, chỉ những IP bắt đầu bằng *192.168.0* (loại trừ *192.168.0.50*) và *127.0.0.1* sẽ được cho phép truy\ncập bởi Firewall. Tất cả các IP khác, firewall sẽ return `false`\n\n* `checkUserConnect(false)` khai báo `true` hoặc `false` để xác định mặc định firewall cho phép hay từ chối truy cập (\n  Optional - Default `false`). `true` nếu mặc định cho phép truy cập, `false` nếu mặc định từ chối\n* `setIpWhiteList($whiteList)` khai báo `$whiteList` IP list cho phép truy cập\n* `setIpBlackList($blackList)` khai báo `$blackList` IP list từ chối truy cập\n\n### IP List Formats\n\nFirewall hỗ trợ input các IP whitelist và blacklist như sau\n\n| Type        | Syntax                      | Details                                                                                                                                                        |\n|-------------|-----------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| IPV6        | `::1`                       | Hỗ trợ các viết tắt                                                                                                                                            |\n| IPV4        | `192.168.0.1`               |                                                                                                                                                                |\n| Range       | `192.168.0.0-192.168.1.60`  | Bao gồm tất cả các IP từ `192.168.0.0` đến `192.168.0.255`\u003cbr /\u003evà từ `192.168.1.0` đến `198.168.1.60`                                                         |\n| Wild card   | `192.168.0.*`               | Tất cả IP bắt đầu bằng `192.168.0`\u003cbr /\u003eNó tương tự với cách khai báo `192.168.0.0-192.168.0.255`                                                              |\n| Subnet mask | `192.168.0.0/255.255.255.0` | Tất cả IP bắt đầu bằng `192.168.0`\u003cbr /\u003eNó tương tự với cách khai báo `192.168.0.0-192.168.0.255` \u003cbr /\u003evà `192.168.0.*`                                       |\n| CIDR Mask   | `192.168.0.0/24`            | Tất cả IP bắt đầu bằng `192.168.0`\u003cbr /\u003eNó tương tự với cách khai báo `192.168.0.0-192.168.0.255` \u003cbr /\u003e và `192.168.0.*` cũng như `192.168.0.0/255.255.255.0` |\n\n### Hướng dẫn tích hợp hàm tiện ích Check System\n\nGói này cung cấp thêm 1 lớp tiện ích, dùng kiểm tra mạng, extension hoặc kiểm tra kết nối tới MySQL Database. Tham khảo\ncách sử dụng dưới đây\n\n```php\n\u003c?php\n/**\n * Project basic-firewall\n * Created by PhpStorm\n * User: 713uk13m \u003cdev@nguyenanhung.com\u003e\n * Copyright: 713uk13m \u003cdev@nguyenanhung.com\u003e\n * Date: 09/01/2021\n * Time: 00:55\n */\nrequire_once __DIR__ . '/../vendor/autoload.php';\n\nuse nguyenanhung\\PhpBasicFirewall\\CheckSystem;\n\n$system = new CheckSystem();\n\n// Kiểm tra phiên bản PHP\n$system-\u003ephpVersion();\n\n// Kiểm tra các extension cần thiết\n$system-\u003echeckExtension('curl');\n$system-\u003echeckExtension('pdo');\n$system-\u003echeckExtension('mysqli');\n$system-\u003echeckExtension('gd');\n$system-\u003echeckExtension('mbstring');\n$system-\u003echeckExtension('json');\n$system-\u003echeckExtension('session');\n$system-\u003echeckExtension('sockets');\n$system-\u003echeckExtension('bcmath');\n\n// Kiểm tra kết nối tới 1 server nào đó\n$system-\u003ephpTelnet('127.0.0.1', 3306);\n$system-\u003ephpTelnet('127.0.0.1', 2842);\n\n// Kiểm tra kết nối CSDL\n$system-\u003echeckConnectDatabase('127.0.0.1', '3306', 'my_data', 'root', 'hungna');\n\n```\n\n## LICENSE\n\nGói được phân phối bởi giấy phép ![License](http://poser.pugx.org/nguyenanhung/basic-firewall/license), tham khảo chi\ntiết giấy phép [tại đây](https://github.com/nguyenanhung/basic-firewall/blob/main/LICENSE)\n\nGói có sử dụng packages `m6web/firewall` được cung cấp bởi `M6Web`, bạn cũng có thể sử dụng riêng gói này theo đường\nlink [tại đây](https://packagist.org/packages/m6web/firewall)\n\n## Hỗ trợ\n\nNếu có bất kì câu hỏi hoặc cần hỗ trợ nào, liên hệ theo thông tin sau\n\n| Name        | Email                | Skype            | Facebook      |\n|-------------|----------------------|------------------|---------------|\n| Hung Nguyen | dev@nguyenanhung.com | nguyenanhung5891 | @nguyenanhung |\n\nFrom Vietnam with Love ❤️","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnguyenanhung%2Fbasic-firewall","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnguyenanhung%2Fbasic-firewall","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnguyenanhung%2Fbasic-firewall/lists"}