Download the PHP package plinker/iptables without Composer
On this page you can find all versions of the php package plinker/iptables. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download plinker/iptables
More information about plinker/iptables
Files in plinker/iptables
Package iptables
Short Description WIP: Control iptables through plinker RPC
License MIT
Homepage https://github.com/plinker-rpc/iptables
Informations about the package iptables
PlinkerRPC - IPtables
Control iptables for pre routing rules (port forwarding). Specifically suited for forwarding ports to internal LXC containers.
Install
Require this package with composer using the following command:
Then navigate to ./vendor/plinker/iptables/scripts
and run bash install.sh
.
Client
Creating a client instance is done as follows:
<?php
require 'vendor/autoload.php';
/**
* Initialize plinker client.
*
* @param string $server - URL to server listener.
* @param string $config - server secret, and/or a additional component data
*/
$client = new \Plinker\Core\Client(
'http://example.com/server.php',
[
'secret' => 'a secret password',
// database connection
'database' => [
'dsn' => 'sqlite:./.plinker/database.db',
'host' => '',
'name' => '',
'username' => '',
'password' => '',
'freeze' => false,
'debug' => false,
]
]
);
// or using global function
$client = plinker_client('http://example.com/server.php', 'a secret password', [
// database connection
'database' => [
'dsn' => 'sqlite:./.plinker/database.db',
'host' => '',
'name' => '',
'username' => '',
'password' => '',
'freeze' => false,
'debug' => false,
]
]);
Methods
Once setup, you call the class though its namespace to its method.
Setup
Applies build tasks to plinker/tasks queue.
Parameter | Type | Description | Default |
---|---|---|---|
options | array | Build options |
Call
$client->iptables->setup([
'build_sleep' => 5,
'lxd' => [
'bridge' => 'lxcbr0',
'ip' => '10.171.90.0/8'
],
'docker' => [
'bridge' => 'docker0',
'ip' => '172.17.0.0/16'
]
])
Response
Update Package
Runs composer update to update package.
Call
$client->iptables->update_package();
Response
Fetch
Fetch currently configured forward or blocked rules from database.
Parameter | Type | Description | Default |
---|---|---|---|
placeholder | string | Query placeholder | |
values | array | Match values |
Call
all - $client->iptables->fetch();
ruleById(1) - $client->iptables->fetch('id = ?', [1]);
ruleByName(1) - $client->iptables->fetch('name = ?', ['guidV4-value'])
Response
Count
Fetch count of currently configured forward or blocked rules from database.
Parameter | Type | Description | Default |
---|---|---|---|
placeholder | string | Query placeholder | |
values | array | Match values |
Call
all - $client->iptables->count();
ruleById(1) - $client->iptables->count('id = ?', [1]);
ruleByName(1) - $client->iptables->count('name = ?', ['guidV4-value'])
Response
Rebuild
Rebuild forward or blocked rule.
Parameter | Type | Description | Default |
---|---|---|---|
placeholder | string | Query placeholder | |
values | array | Match values |
Call
ruleById(1) - $client->iptables->rebuild('id = ?', [1]);
ruleByName(1) - $client->iptables->rebuild('name = ?', ['guidV4-value'])
Response
Remove
Remove forward or blocked rule.
Parameter | Type | Description | Default |
---|---|---|---|
placeholder | string | Query placeholder | |
values | array | Match values |
Call
ruleById(1) - $client->iptables->remove('id = ?', [1]);
ruleByName(1) - $client->iptables->remove('name = ?', ['guidV4-value'])
Response
Reset
Remove all forwards and blocked rules.
Parameter | Type | Description | Default |
---|---|---|---|
purge | bool | Also remove tasks | false |
Call
$client->iptables->reset(); // remove just rules
$client->iptables->reset(true); // remove rules and tasks (purge)
Response
Add Block
Add an IP address to blocked rules.
Parameter | Type | Description | Default |
---|---|---|---|
data | array | Rule data |
Call
$client->iptables->addBlock([
'ip' => '123.123.123.123',
'range' => 32,
'note' => 'Port scanned server',
'enabled' => 1
]);
Response
Update Block
Update a blocked IP address rule.
Parameter | Type | Description | Default |
---|---|---|---|
placeholder | string | Query placeholder | |
values | array | Match values | |
data | array | Updated rule data |
Call
$client->iptables->updateBlock('id = ?', [3], [
'label' => '',
'enabled' => 1,
'ip' => '212.123.123.123',
'range' => 32,
'note' => 'FooBar',
'bantime' => 0
]);
Response
Status
Enumarate and return status of used and available ports.
Call
$client->iptables->status();
Response
Raw
Fetch raw iptables, equivalent to iptables-save
.
Call
$client->iptables->raw();
Response
Available Ports
Fetch available ports within a range type.
Parameter | Type | Description | Default |
---|---|---|---|
type | string | Port range type | all |
The following port ranges (400 ports) are externally available for forwarding.
Type | Range | Description |
---|---|---|
all | 2200 - 8099 | Returns all available ports |
ssh | 2200 - 2299 | Returns available ssh ports |
http | 8000 - 8099 | Returns available http ports |
mysql | 3300 - 3399 | Returns available mysql ports |
shellinabox | 4200 - 4299 | Returns available shellinabox ports |
Call
$client->iptables->availablePorts('http');
Response
Check Port In Use
Check if a port is already in use by a rule.
Parameter | Type | Description | Default |
---|---|---|---|
port | int | Port to check | 0 |
Call
$client->iptables->checkPortInUse(8000);
Response
Check Allowed Port
Check if a port is in allowed ranges.
Parameter | Type | Description | Default |
---|---|---|---|
port | int | Port to check | 0 |
Call
$client->iptables->checkAllowedPort(12345);
Response
Add Forward
Add new port forward rule.
Parameter | Type | Description | Default |
---|---|---|---|
data | array | Rule data |
Call
$client->iptables->addForward([
'label' => 'Example',
'ip' => '10.158.250.5',
'port' => 2252,
'srv_type' => 'SSH',
'srv_port' => 22,
'enabled' => 1
]);
Response
Update Forward
Update port forward rule.
Parameter | Type | Description | Default |
---|---|---|---|
placeholder | string | Query placeholder | |
values | array | Match values | |
data | array | Updated rule data |
Call
$client->iptables->updateForward('id = ?', [4], [
'name' => '8610e47a-cf06-4806-964b-c5a3642954bb', // always use, to bypass port in use check
'label' => 'Example',
'ip' => '10.158.250.5',
'port' => 2252,
'srv_type' => 'SSH',
'srv_port' => 22,
'enabled' => 1
]);
Response
Testing
There are no tests setup for this component.
Contributing
Please see CONTRIBUTING for details.
Security
If you discover any security related issues, please contact me via https://cherone.co.uk instead of using the issue tracker.
Credits
Development Encouragement
If you use this project and make money from it or want to show your appreciation, please feel free to make a donation https://www.paypal.me/lcherone, thanks.
Sponsors
Get your company or name listed throughout the documentation and on each github repository, contact me at https://cherone.co.uk for further details.
License
The MIT License (MIT). Please see License File for more information.
See the organisations page for additional components.