summaryrefslogtreecommitdiffstats
path: root/src/etc/rc.update_urltables
diff options
context:
space:
mode:
Diffstat (limited to 'src/etc/rc.update_urltables')
-rwxr-xr-xsrc/etc/rc.update_urltables60
1 files changed, 60 insertions, 0 deletions
diff --git a/src/etc/rc.update_urltables b/src/etc/rc.update_urltables
new file mode 100755
index 0000000..c4dfeb1
--- /dev/null
+++ b/src/etc/rc.update_urltables
@@ -0,0 +1,60 @@
+#!/usr/local/bin/php-cgi -q
+<?php
+require_once("config.inc");
+require_once("util.inc");
+require_once("pfsense-utils.inc");
+
+if (!is_array($config['aliases']['alias'])) {
+ // No aliases
+ return;
+}
+
+// Gather list of urltable aliases
+$todo = array();
+foreach ($config['aliases']['alias'] as $alias) {
+ if (preg_match('/urltable/i', $alias['type'])) {
+ $tmp = array();
+ $tmp['type'] = $alias['type'];
+ $tmp['name'] = $alias['name'];
+ $tmp['url'] = $alias['url'];
+ $tmp['freq'] = $alias['updatefreq'];
+ $todo[] = $tmp;
+ }
+}
+
+if (count($todo) > 0) {
+ log_error("{$argv[0]}: Starting up.");
+
+ if ($argv[1] != "now") {
+ // Wait a little before updating.
+ $wait = mt_rand(5, 60);
+ log_error("{$argv[0]}: Sleeping for {$wait} seconds.");
+ sleep($wait);
+ }
+
+ log_error("{$argv[0]}: Starting URL table alias updates");
+
+ $filter_reload = false;
+ foreach ($todo as $t) {
+ $r = process_alias_urltable($t['name'], $t['url'], $t['freq']);
+ if ($r == 1) {
+ $result = "";
+ // TODO: Change it when pf supports tables with ports
+ if ($t['type'] == "urltable") {
+ exec("/sbin/pfctl -t " . escapeshellarg($t['name']) . " -T replace -f /var/db/aliastables/" . escapeshellarg($t['name']) . ".txt 2>&1", $result);
+ } else {
+ $filter_reload = true;
+ }
+ log_error("{$argv[0]}: Updated {$t['name']} content from {$t['url']}: {$result[0]}");
+ } elseif ($r == -1) {
+ log_error("{$argv[0]}: {$t['name']} does not need updating.");
+ } else {
+ log_error("{$argv[0]}: ERROR: could not update {$t['name']} content from {$t['url']}");
+ }
+ }
+
+ if ($filter_reload) {
+ send_event("filter reload");
+ }
+}
+?>
OpenPOWER on IntegriCloud