r2110 + enable local extensions
authorDenis Ovsienko <infrastation@yandex.ru>
Tue, 5 Aug 2008 11:04:42 +0000 (11:04 +0000)
committerDenis Ovsienko <infrastation@yandex.ru>
Tue, 5 Aug 2008 11:04:42 +0000 (11:04 +0000)
+ introduce sendfile gateway instead of rtrconfig
+ make routernets a local extension and make it use the sendfile

gateways/rtrconfig/main [deleted file]
gateways/sendfile/main [new file with mode: 0755]
inc/functions.php
inc/gateways.php
inc/init.php
inc/interface.php
inc/navigation.php
inc/ophandlers.php
inc/triggers.php

diff --git a/gateways/rtrconfig/main b/gateways/rtrconfig/main
deleted file mode 100755 (executable)
index 7b11640..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-#!/bin/sh
-
-# This is a RackTables gateway for router configuration export. The configuration
-# is fed in arbitrary format and should only be somehow sent to the remote host
-# for further processing. This is a quick hack and should be replaced with a
-# generic file sender gateway in future.
-#
-# The only supported command is:
-#
-# * submit <username> <endpoint> <filename>: send the file
-#
-
-user=
-endpoint=
-cfgfile=
-MYDIR=`dirname $0`
-
-do_submit()
-{
-       user=`echo $args | cut -s -d' ' -f1`
-       endpoint=`echo $args | cut -s -d' ' -f2`
-       cfgfile=`echo $args | cut -s -d' ' -f3`
-       # sanity checks
-       if [ -z "$user" -o -z "$endpoint" -o -z "$cfgfile" ]; then
-               echo 'ERR!invalid arguments'
-               return
-       fi
-       if [ ! -s "$cfgfile" ]; then
-               echo "ERR!File $cfgfile is either missing or empty."
-               return
-       fi
-       if [ ! -x "$MYDIR/install" ]; then
-               echo "ERR!Cannot execute $MYDIR/install"
-               return
-       fi
-       "$MYDIR/install" $user $endpoint $cfgfile
-       ret=$?
-       if [ $ret = 0 ]; then
-               echo "OK!File sent successfully"
-       else
-               echo "ERR!File installer returned code $ret"
-       fi
-}
-
-# main loop
-while read cmd args; do
-       case $cmd in
-               submit)
-                       do_submit $args
-                       ;;
-               *)
-                       echo "ERR!unknown command $cmd"
-       esac
-done
-
-exit 0
diff --git a/gateways/sendfile/main b/gateways/sendfile/main
new file mode 100755 (executable)
index 0000000..83c1751
--- /dev/null
@@ -0,0 +1,59 @@
+#!/bin/sh
+
+# This is a RackTables gateway for arbitrary file export. File contents doesn't
+# matter here and will only be somehow sent to the remote host for further
+# processing.
+#
+# The only supported command is:
+#
+# * submit <username> <endpoint> <handler name> <data file name>: send the file
+#
+# Handler name can be any string used to distinguish different file processors.
+# The temporary file will be passed to a script in current directory, if it exists.
+# Script name is "<handlername>.install"
+
+user=
+endpoint=
+cfgfile=
+MYDIR=`dirname $0`
+
+do_submit()
+{
+       user=`echo $args | cut -s -d' ' -f1`
+       endpoint=`echo $args | cut -s -d' ' -f2`
+       handler=`echo $args | cut -s -d' ' -f3`
+       cfgfile=`echo $args | cut -s -d' ' -f4`
+       # sanity checks
+       if [ -z "$user" -o -z "$endpoint" -o -z "$handler" -o -z "$cfgfile" ]; then
+               echo 'ERR!invalid arguments'
+               return
+       fi
+       if [ ! -s "$cfgfile" ]; then
+               echo "ERR!File $cfgfile is either missing or empty."
+               return
+       fi
+       if [ ! -x "$MYDIR/$handler.install" ]; then
+               echo "ERR!Cannot execute $MYDIR/$handler.install"
+               return
+       fi
+       "$MYDIR/$handler.install" $user $endpoint $cfgfile
+       ret=$?
+       if [ $ret = 0 ]; then
+               echo "OK!File sent successfully"
+       else
+               echo "ERR!File handler returned code $ret"
+       fi
+}
+
+# main loop
+while read cmd args; do
+       case $cmd in
+               submit)
+                       do_submit $args
+                       ;;
+               *)
+                       echo "ERR!unknown command $cmd"
+       esac
+done
+
+exit 0
index ef58768..69e33b2 100644 (file)
@@ -1476,32 +1476,6 @@ function buildLVSConfig ($object_id = 0)
        return $newconfig;
 }
 
-function buildRouterConfig ($object_id = 0)
-{
-       if ($object_id <= 0)
-       {
-               showError ('Invalid argument', __FUNCTION__);
-               return;
-       }
-       $newconfig = "# RackTables asset dump version 0\n";
-       $alloclist = getObjectAddresses ($object_id);
-//     dump($alloclist);
-       $gwcount = 0;
-       foreach ($alloclist as $alloc)
-               if ($alloc['type'] == 'router')
-               {
-                       $netinfo = getIPv4Network (getIPv4AddressNetworkId ($alloc['ip']));
-                       $newconfig .= sprintf
-                       (
-                               "%s %s/%u\n",
-                               $alloc['name'],
-                               $alloc['ip'],
-                               $netinfo['mask']
-                       );
-               }
-       return $newconfig;
-}
-
 // Indicate occupation state of each IP address: none, ordinary or problematic.
 function markupIPv4AddrList (&$addrlist)
 {
index b3b6fce..264a9ad 100644 (file)
@@ -246,10 +246,12 @@ function activateSLBConfig ($object_id = 0, $configtext = '')
 }
 
 // FIXME: copied and pasted too
-function activateRouterConfig ($object_id = 0, $configtext = '')
+// Drop a file off RackTables platform. The gateway will catch the file and pass it to the given
+// installer script.
+function gwSendFile ($object_id = 0, $handlername, $filetext = '')
 {
        global $remote_username;
-       if ($object_id <= 0 or empty ($configtext))
+       if ($object_id <= 0 or empty ($handlername))
                return oneLiner (160); // invalid arguments
        $objectInfo = getObjectInfo ($object_id);
        $endpoints = findAllEndpoints ($object_id, $objectInfo['name']);
@@ -257,16 +259,15 @@ function activateRouterConfig ($object_id = 0, $configtext = '')
                return oneLiner (161); // endpoint not found
        if (count ($endpoints) > 1)
                return oneLiner (162); // can't pick an address
-       $hwtype = $swtype = 'unknown';
        $endpoint = str_replace (' ', '+', $endpoints[0]);
-       $tmpfilename = tempnam ('', 'RackTables-rtrconfig-');
+       $tmpfilename = tempnam ('', 'RackTables-sendfile-');
        $tmpfile = fopen ($tmpfilename, 'wb');
-       fwrite ($tmpfile, str_replace ("\r", '', $configtext));
+       fwrite ($tmpfile, $filetext);
        fclose ($tmpfile);
        $data = queryGateway
        (
-               'rtrconfig',
-               array ("submit ${remote_username} ${endpoint} ${tmpfilename}")
+               'sendfile',
+               array ("submit ${remote_username} ${endpoint} ${handlername} ${tmpfilename}")
        );
        unlink ($tmpfilename);
        if ($data == NULL)
index 68f1f40..f434fae 100644 (file)
@@ -171,6 +171,8 @@ require_once 'inc/ophandlers.php';
 require_once 'inc/triggers.php';
 require_once 'inc/gateways.php';
 require_once 'inc/snmp.php';
+if (file_exists ('inc/local.php'))
+       require_once 'inc/local.php';
 
 // These will be filled in by fixContext()
 $auto_tags = array();
index e7c3d4b..d3c4f48 100644 (file)
@@ -4025,25 +4025,6 @@ function renderLVSConfig ($object_id = 0)
        echo '</pre>';
 }
 
-function renderRouterConfig ($object_id = 0)
-{
-       showMessageOrError();
-       global $root, $pageno, $tabno;
-       if ($object_id <= 0)
-       {
-               showError ('Invalid argument', __FUNCTION__);
-               return;
-       }
-       echo '<br>';
-       echo "<form method=post action='${root}process.php?page=${pageno}&tab=${tabno}&op=submitRouterConfig'>";
-       echo "<input type=hidden name=object_id value=${object_id}>";
-       echo "<center><input type=submit value='Submit for activation'></center>";
-       echo "</form>";
-       echo '<pre>';
-       echo buildRouterConfig ($object_id);
-       echo '</pre>';
-}
-
 function renderVirtualService ($vsid)
 {
        global $root, $nextorder;
index 0f9aa90..8fdd3e6 100644 (file)
@@ -92,7 +92,6 @@ $tab['object']['editrspvs'] = 'RS pools';
 $tab['object']['lvsconfig'] = 'LVS config';
 $tab['object']['autoports'] = 'AutoPorts';
 $tab['object']['tags'] = 'Tags';
-$tab['object']['rtrconfig'] = 'Router config';
 $tabhandler['object']['default'] = 'renderRackObject';
 $tabhandler['object']['edit'] = 'renderEditObjectForm';
 $tabhandler['object']['rackspace'] = 'renderRackSpaceForObject';
@@ -105,7 +104,6 @@ $tabhandler['object']['lvsconfig'] = 'renderLVSConfig';
 $tabhandler['object']['autoports'] = 'renderAutoPortsForm';
 $tabhandler['object']['tags'] = 'renderObjectTags';
 $tabhandler['object']['editrspvs'] = 'renderObjectSLB';
-$tabhandler['object']['rtrconfig'] = 'renderRouterConfig';
 $tabextraclass['object']['snmpportfinder'] = 'attn';
 $tabextraclass['object']['autoports'] = 'attn';
 $trigger['object']['ipv4'] = 'trigger_ipv4';
@@ -115,7 +113,6 @@ $trigger['object']['snmpportfinder'] = 'trigger_snmpportfinder';
 $trigger['object']['editrspvs'] = 'trigger_natv4';
 $trigger['object']['lvsconfig'] = 'trigger_lvsconfig';
 $trigger['object']['autoports'] = 'trigger_autoports';
-$trigger['object']['rtrconfig'] = 'trigger_rtrconfig';
 $trigger['object']['tags'] = 'trigger_tags';
 $ophandler['object']['ports']['addPort'] = 'addPortForObject';
 $ophandler['object']['ports']['delPort'] = 'delPortFromObject';
@@ -140,7 +137,6 @@ $ophandler['object']['editrspvs']['addLB'] = 'addLoadBalancer';
 $ophandler['object']['editrspvs']['delLB'] = 'deleteLoadBalancer';
 $ophandler['object']['editrspvs']['updLB'] = 'updateLoadBalancer';
 $ophandler['object']['lvsconfig']['submitSLBConfig'] = 'submitSLBConfig';
-$ophandler['object']['rtrconfig']['submitRouterConfig'] = 'submitRouterConfig';
 $delayauth['object']['livevlans']['setPortVLAN'] = TRUE;
 $msgcode['object']['nat4']['addNATv4Rule']['OK'] = 2;
 $msgcode['object']['nat4']['addNATv4Rule']['ERR'] = 100;
index 2cf9378..ee57821 100644 (file)
@@ -1347,11 +1347,4 @@ function submitSLBConfig ()
        return buildWideRedirectURL ($msglog);
 }
 
-function submitRouterConfig ()
-{
-       assertUIntArg ('object_id', __FUNCTION__);
-       $msglog = activateRouterConfig ($_REQUEST['object_id'], buildRouterConfig ($_REQUEST['object_id']));
-       return buildWideRedirectURL ($msglog);
-}
-
 ?>
index 9a28ab7..10c7126 100644 (file)
@@ -106,16 +106,4 @@ function trigger_passwdchange ()
        return getConfigVar ('USER_AUTH_SRC') == 'database';
 }
 
-// There's a sense to export router configuration, 
-function trigger_rtrconfig ()
-{
-       assertUIntArg ('object_id', __FUNCTION__);
-       $alloclist = getObjectAddresses ($_REQUEST['object_id']);
-       $gwcount = 0;
-       foreach ($alloclist as $alloc)
-               if ($alloc['type'] == 'router')
-                       $gwcount++;
-       return $gwcount > 0;
-}
-
 ?>