diff --git a/web/add/firewall/index.php b/web/add/firewall/index.php
new file mode 100644
index 000000000..992d42b30
--- /dev/null
+++ b/web/add/firewall/index.php
@@ -0,0 +1,76 @@
+ $error) {
+ if ( $i == 0 ) {
+ $error_msg = $error;
+ } else {
+ $error_msg = $error_msg.", ".$error;
+ }
+ }
+ $_SESSION['error_msg'] = __('Field "%s" can not be blank.',$error_msg);
+ }
+
+ // Protect input
+ $v_action = escapeshellarg($_POST['v_action']);
+ $v_protocol = escapeshellarg($_POST['v_protocol']);
+ $v_port = str_replace(" ",",", $_POST['v_port']);
+ $v_port = preg_replace('/\,+/', ',', $v_port);
+ $v_port = trim($v_port, ",");
+ $v_port = escapeshellarg($v_port);
+ $v_ip = escapeshellarg($_POST['v_ip']);
+ $v_comment = escapeshellarg($_POST['v_comment']);
+
+ // Add firewall rule
+ if (empty($_SESSION['error_msg'])) {
+ exec (VESTA_CMD."v-add-sys-firewall-rule ".$v_action." ".$v_protocol." ".$v_port." ".$v_ip." ".$v_comment, $output, $return_var);
+ check_return_code($return_var,$output);
+ unset($output);
+ }
+
+ // Flush field values on success
+ if (empty($_SESSION['error_msg'])) {
+ $_SESSION['ok_msg'] = __('RULE_CREATED_OK');
+ unset($v_port);
+ unset($v_ip);
+ unset($v_comment);
+ }
+}
+
+// Header
+include($_SERVER['DOCUMENT_ROOT'].'/templates/header.html');
+
+// Panel
+top_panel($user,$TAB);
+
+// Display body
+include($_SERVER['DOCUMENT_ROOT'].'/templates/admin/add_firewall.html');
+
+// Flush session messages
+unset($_SESSION['error_msg']);
+unset($_SESSION['ok_msg']);
+
+// Footer
+include($_SERVER['DOCUMENT_ROOT'].'/templates/footer.html');
diff --git a/web/bulk/firewall/index.php b/web/bulk/firewall/index.php
new file mode 100644
index 000000000..d5d2e0e07
--- /dev/null
+++ b/web/bulk/firewall/index.php
@@ -0,0 +1,36 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/web/templates/admin/list_firewall.html b/web/templates/admin/list_firewall.html
new file mode 100644
index 000000000..6ce2e28f3
--- /dev/null
+++ b/web/templates/admin/list_firewall.html
@@ -0,0 +1,91 @@
+
+
+
+
+
+ $value) {
+ ++$i;
+ if ($data[$key]['SUSPENDED'] == 'yes') {
+ $status = 'suspended';
+ $spnd_action = 'unsuspend' ;
+ $spnd_confirmation = 'UNSUSPEND_RULE_CONFIRMATION' ;
+ } else {
+ $status = 'active';
+ $spnd_action = 'suspend' ;
+ $spnd_confirmation = 'UNSUSPEND_RULE_CONFIRMATION' ;
+ }
+ ?>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+