>что мешает вызывать из скрипта консольный ipfw и при помощи него добавлять
>правила? Мешает то, что добавлять правила должен не один человек, а допустим несколько и проблема в том, что консольный набор осилит только тот, кто это все делал, остальные в этом ни как. То есть, грубо горя есть 2 администратора, которые от Unix далеки, но вполне могут выполнять эту работу. Пускать на сам сервер под root, как-то не хотелось бы. По этому и такие вот извращения. :)
Проблема еще в том, что в Perl я как-то не силен. Ну не нравится мне его синтаксис...
Накропал на PHP скриптик. Работает. Но, придется его руками запускать после добавления правил в БД.
<?php
$filename = '/etc/rc.firewall';
$conn = mysql_connect("localhost", "user", "password");
if (!$conn)
{
echo "Unable to connect to DB: " . mysql_error();
exit;
}
if (!mysql_select_db("network"))
{
echo "Unable to select table: " . mysql_error();
exit;
}
$sql = "SELECT * FROM ipfw";
$result = mysql_query($sql);
if (!$result)
{
echo "Error run ($sql) from DB: " . mysql_error();
exit;
}
if (mysql_num_rows($result) == 0)
{
echo "No record in table!";
exit;
}
if (is_writable($filename))
{
if (!$handle = fopen($filename, 'w+'))
{
echo "Error open ($filename)";
exit;
}
while ($row = mysql_fetch_assoc($result))
{
$somecontent = $row["rule"];
if (fwrite($handle, $somecontent. "\n") === FALSE) {
echo "No write to ($filename)";
exit;
}
$somecontent = '';
}
fclose($handle);
}
mysql_free_result($result);
?>
Вот, как-то так.