add the new unsigned and natural assertion types
authorDenis Ovsienko <denis@ovsienko.info>
Fri, 18 May 2018 14:30:22 +0000 (15:30 +0100)
committerDenis Ovsienko <denis@ovsienko.info>
Fri, 18 May 2018 14:30:22 +0000 (15:30 +0100)
For clarity update genericAssertion() to accept new "natural" and
"unsigned" assertion types. Update the functions below to replace the
call(s) to assertUIntArg() with something else, mostly the natural number
type:

* render8021QOrderForm()
* renderObject8021QPorts()
* renderObject8021QSyncPreview()
* renderObject()
* renderPortsForObject()
* dynamic_title_decoder_throwing()
* renderDiscoveredNeighbors()
* addPortForwarding()
* delPortForwarding()
* updPortForwarding()
* editPortForObject()
* supplementAttrMap()
* clearSticker()
* deleteVS()
* updateVS()
* addPortToVS: unsigned()
* updatePortInVS: unsigned()
* removePortFromVS: unsigned()
* updateTripletConfig()
* removeTriplet()
* createTriplet()
* deleteRow()
* addOIFCompat()
* delOIFCompat()
* updateVLANDomain()
* handlePopupPortLink()
* renderPopupPortSelector()
* getTripletConfigAJAX()

wwwroot/inc/functions.php
wwwroot/inc/interface-8021q.php
wwwroot/inc/interface.php
wwwroot/inc/ophandlers.php
wwwroot/inc/popup.php
wwwroot/inc/slb2-interface.php

index e1c0d8b..1b4956b 100644 (file)
@@ -339,10 +339,22 @@ function genericAssertion ($argname, $argtype)
                return assertStringArg ($argname);
        case 'string0':
                return assertStringArg ($argname, TRUE);
+       case 'natural0':
+               if ('' == assertStringArg ($argname, TRUE))
+                       return '';
+               // fall through
+               // old style, for backward compatibility
        case 'uint':
-               return assertUIntArg ($argname);
+       case 'natural':
+               return assertNaturalNumArg ($argname);
+       case 'unsigned0':
+               if ('' == assertStringArg ($argname, TRUE))
+                       return '';
+               // fall through
+               // old style, for backward compatibility
        case 'uint0':
-               return assertUIntArg ($argname, TRUE);
+       case 'unsigned':
+               return assertUnsignedIntArg ($argname);
        case 'decimal0':
                if ('' == assertStringArg ($argname, TRUE))
                        return '';
@@ -469,7 +481,7 @@ function genericAssertion ($argname, $argtype)
                        throw new InvalidRequestArgException ($argname, $sic[$argname], 'Unknown value');
                return $sic[$argname];
        case 'iif':
-               assertUIntArg ($argname);
+               assertNaturalNumArg ($argname);
                if (!array_key_exists ($sic[$argname], getPortIIFOptions()))
                        throw new InvalidRequestArgException ($argname, $sic[$argname], 'Unknown value');
                return $sic[$argname];
@@ -477,7 +489,7 @@ function genericAssertion ($argname, $argtype)
        // 'vlan1' -- any valid VLAN ID including the default
        case 'vlan':
        case 'vlan1':
-               assertUIntArg ($argname);
+               assertNaturalNumArg ($argname);
                if (! isValidVLANID ($sic[$argname]))
                        throw new InvalidRequestArgException ($argname, $sic[$argname], 'not a valid VLAN ID');
                if ($argtype == 'vlan' && $sic[$argname] == VLAN_DFL_ID)
index d02fb13..f45a8fd 100644 (file)
@@ -14,10 +14,7 @@ function render8021QOrderForm ($some_id)
                $focus = array();
                foreach ($hintcodes as $hint_code => $option_name)
                        if (array_key_exists ($hint_code, $_REQUEST))
-                       {
-                               assertUIntArg ($hint_code);
-                               $focus[$hint_code] = $_REQUEST[$hint_code];
-                       }
+                               $focus[$hint_code] = genericAssertion ($hint_code, 'natural');
                        elseif ($option_name != NULL)
                                $focus[$hint_code] = getConfigVar ($option_name);
                        else
@@ -440,7 +437,7 @@ function renderObject8021QPorts ($object_id)
        $sockets = array();
        if (isset ($_REQUEST['hl_port_id']))
        {
-               assertUIntArg ('hl_port_id');
+               genericAssertion ('hl_port_id', 'natural');
                $hl_port_id = intval ($_REQUEST['hl_port_id']);
                $hl_port_name = NULL;
                addAutoScrollScript ("port-$hl_port_id");
@@ -1166,7 +1163,7 @@ function renderObject8021QSyncPreview ($object, $vswitch, $plan, $C, $R, $maxdec
 {
        if (isset ($_REQUEST['hl_port_id']))
        {
-               assertUIntArg ('hl_port_id');
+               genericAssertion ('hl_port_id', 'natural');
                $hl_port_id = intval ($_REQUEST['hl_port_id']);
                $hl_port_name = NULL;
                addAutoScrollScript ("port-$hl_port_id");
index d884333..9123af0 100644 (file)
@@ -1491,7 +1491,7 @@ function renderObject ($object_id)
                $hl_port_id = 0;
                if (isset ($_REQUEST['hl_port_id']))
                {
-                       assertUIntArg ('hl_port_id');
+                       genericAssertion ('hl_port_id', 'natural');
                        $hl_port_id = $_REQUEST['hl_port_id'];
                        addAutoScrollScript ("port-$hl_port_id");
                }
@@ -1722,7 +1722,7 @@ function renderPortsForObject ($object_id)
 
        if (isset ($_REQUEST['hl_port_id']))
        {
-               assertUIntArg ('hl_port_id');
+               genericAssertion ('hl_port_id', 'natural');
                $hl_port_id = intval ($_REQUEST['hl_port_id']);
                addAutoScrollScript ("port-$hl_port_id");
        }
@@ -5391,7 +5391,7 @@ function dynamic_title_decoder_throwing ($path_position)
                        'params' => array()
                );
        case 'chapter':
-               $chapter_no = assertUIntArg ('chapter_no');
+               $chapter_no = genericAssertion ('chapter_no', 'natural');
                $chapters = getChapterList();
                $chapter_name = isset ($chapters[$chapter_no]) ? $chapters[$chapter_no]['name'] : 'N/A';
                return array
@@ -5400,42 +5400,42 @@ function dynamic_title_decoder_throwing ($path_position)
                        'params' => array ('chapter_no' => $chapter_no)
                );
        case 'user':
-               $userinfo = spotEntity ('user', assertUIntArg ('user_id'));
+               $userinfo = spotEntity ('user', genericAssertion ('user_id', 'natural'));
                return array
                (
                        'name' => "Local user '" . $userinfo['user_name'] . "'",
                        'params' => array ('user_id' => $userinfo['user_id'])
                );
        case 'ipv4rspool':
-               $pool_info = spotEntity ('ipv4rspool', assertUIntArg ('pool_id'));
+               $pool_info = spotEntity ('ipv4rspool', genericAssertion ('pool_id', 'natural'));
                return array
                (
                        'name' => $pool_info['name'] == '' ? 'ANONYMOUS' : $pool_info['name'],
                        'params' => array ('pool_id' => $pool_info['id'])
                );
        case 'ipv4vs':
-               $vs_info = spotEntity ('ipv4vs', assertUIntArg ('vs_id'));
+               $vs_info = spotEntity ('ipv4vs', genericAssertion ('vs_id', 'natural'));
                return array
                (
                        'name' => $vs_info['dname'],
                        'params' => array ('vs_id' => $vs_info['id'])
                );
        case 'ipvs':
-               $vs_info = spotEntity ('ipvs', assertUIntArg ('vs_id'));
+               $vs_info = spotEntity ('ipvs', genericAssertion ('vs_id', 'natural'));
                return array
                (
                        'name' => $vs_info['name'],
                        'params' => array ('vs_id' => $vs_info['id'])
                );
        case 'object':
-               $object = spotEntity ('object', assertUIntArg ('object_id'));
+               $object = spotEntity ('object', genericAssertion ('object_id', 'natural'));
                return array
                (
                        'name' => $object['dname'],
                        'params' => array ('object_id' => $object['id'])
                );
        case 'location':
-               $location = spotEntity ('location', assertUIntArg ('location_id'));
+               $location = spotEntity ('location', genericAssertion ('location_id', 'natural'));
                return array
                (
                        'name' => $location['name'],
@@ -5445,14 +5445,14 @@ function dynamic_title_decoder_throwing ($path_position)
                switch ($pageno)
                {
                case 'rack':
-                       $rack = spotEntity ('rack', assertUIntArg ('rack_id'));
+                       $rack = spotEntity ('rack', genericAssertion ('rack_id', 'natural'));
                        return array
                        (
                                'name' => $rack['row_name'],
                                'params' => array ('row_id' => $rack['row_id'], 'location_id' => $rack['location_id'])
                        );
                case 'row':
-                       $row_info = getRowInfo (assertUIntArg ('row_id'));
+                       $row_info = getRowInfo (genericAssertion ('row_id', 'natural'));
                        return array
                        (
                                'name' => $row_info['name'],
@@ -5462,7 +5462,7 @@ function dynamic_title_decoder_throwing ($path_position)
                        break;
                }
        case 'rack':
-               $rack_info = spotEntity ('rack', assertUIntArg ('rack_id'));
+               $rack_info = spotEntity ('rack', genericAssertion ('rack_id', 'natural'));
                return array
                (
                        'name' => $rack_info['name'],
@@ -5482,7 +5482,7 @@ function dynamic_title_decoder_throwing ($path_position)
                                'params' => array()
                        );
        case 'file':
-               $file = spotEntity ('file', assertUIntArg ('file_id'));
+               $file = spotEntity ('file', genericAssertion ('file_id', 'natural'));
                return array
                (
                        'name' => niftyString ($file['name'], 30, FALSE),
@@ -5513,7 +5513,7 @@ function dynamic_title_decoder_throwing ($path_position)
                                );
                                return ($ret);
                        default:
-                               $net = spotEntity ($path_position, assertUIntArg ('id'));
+                               $net = spotEntity ($path_position, genericAssertion ('id', 'natural'));
                                return array
                                (
                                        'name' => $net['ip'] . '/' . $net['mask'],
@@ -5685,7 +5685,7 @@ function renderDiscoveredNeighbors ($object_id)
        // scroll to selected port
        if (isset ($_REQUEST['hl_port_id']))
        {
-               assertUIntArg('hl_port_id');
+               genericAssertion ('hl_port_id', 'natural');
                $hl_port_id = intval ($_REQUEST['hl_port_id']);
                addAutoScrollScript ("port-$hl_port_id");
        }
index bef4f83..9659718 100644 (file)
@@ -652,8 +652,8 @@ function addPortForwarding ()
        $proto = genericAssertion ('proto', 'enum/natv4proto');
        if ($proto != 'ALL')
        {
-               assertUIntArg ('localport');
-               assertUIntArg ('remoteport');
+               genericAssertion ('localport', 'natural');
+               genericAssertion ('remoteport', 'natural');
        }
        assertStringArg ('description', TRUE);
        $remoteport = isset ($_REQUEST['remoteport']) ? $_REQUEST['remoteport'] : '';
@@ -686,8 +686,8 @@ function delPortForwarding ()
        $proto = genericAssertion ('proto', 'enum/natv4proto');
        if ($proto != 'ALL')
        {
-               assertUIntArg ('localport');
-               assertUIntArg ('remoteport');
+               genericAssertion ('localport', 'natural');
+               genericAssertion ('remoteport', 'natural');
        }
 
        deletePortForwarding
@@ -708,8 +708,8 @@ function updPortForwarding ()
        $proto = genericAssertion ('proto', 'enum/natv4proto');
        if ($proto != 'ALL')
        {
-               assertUIntArg ('localport');
-               assertUIntArg ('remoteport');
+               genericAssertion ('localport', 'natural');
+               genericAssertion ('remoteport', 'natural');
        }
        assertStringArg ('description', TRUE);
 
@@ -756,7 +756,7 @@ function editPortForObject ()
 {
        setFuncMessages (__FUNCTION__, array ('OK' => 6));
        global $sic;
-       $port_id = assertUIntArg ('port_id');
+       $port_id = genericAssertion ('port_id', 'natural');
        try
        {
                commitUpdatePort
@@ -1056,7 +1056,7 @@ function updateUser ()
 function supplementAttrMap ()
 {
        setFuncMessages (__FUNCTION__, array ('OK' => 48, 'ERR1' => 154));
-       $attr_id = assertUIntArg ('attr_id');
+       $attr_id = genericAssertion ('attr_id', 'natural');
        if (getAttrType ($attr_id) != 'dict')
                $chapter_id = NULL;
        else
@@ -1078,7 +1078,7 @@ function supplementAttrMap ()
 function clearSticker ()
 {
        setFuncMessages (__FUNCTION__, array ('OK' => 49));
-       $attr_id = assertUIntArg ('attr_id');
+       $attr_id = genericAssertion ('attr_id', 'natural');
        if (permitted (NULL, NULL, NULL, array (array ('tag' => '$attr_' . $attr_id))))
                commitUpdateAttrValue (getBypassValue(), $attr_id);
        else
@@ -1718,7 +1718,7 @@ function deleteVService ()
 
 function deleteVS()
 {
-       $vsinfo = spotEntity ('ipvs', assertUIntArg ('vs_id'));
+       $vsinfo = spotEntity ('ipvs', genericAssertion ('vs_id', 'natural'));
        if (count (getTriplets ($vsinfo)) != 0)
        {
                showError ("Could not delete linked virtual service group");
@@ -1781,7 +1781,7 @@ function updateVService ()
 function updateVS ()
 {
        $taglist = genericAssertion ('taglist', 'array0');
-       $vs_id = assertUIntArg ('vs_id');
+       $vs_id = genericAssertion ('vs_id', 'natural');
        $name = assertStringArg ('name');
        $vsconfig = nullIfEmptyStr (assertStringArg ('vsconfig', TRUE));
        $rsconfig = nullIfEmptyStr (assertStringArg ('rsconfig', TRUE));
@@ -1809,7 +1809,7 @@ function addIPToVS()
 function addPortToVS()
 {
        $proto = genericAssertion ('proto', 'enum/ipproto');
-       $vport = assertUIntArg ('port', TRUE);
+       $vport = genericAssertion ('port', 'unsigned');
        if ($proto == 'MARK')
        {
                if ($vport > 0xFFFFFFFF)
@@ -1853,7 +1853,7 @@ function updatePortInVS()
 {
        $vs_id = getBypassValue();
        $proto = assertStringArg ('proto');
-       $vport = assertUIntArg ('port', TRUE);
+       $vport = genericAssertion ('port', 'unsigned');
        $vsconfig = nullIfEmptyStr (assertStringArg ('vsconfig', TRUE));
        $rsconfig = nullIfEmptyStr (assertStringArg ('rsconfig', TRUE));
        if (usePreparedUpdateBlade ('VSPorts', array ('vsconfig' => $vsconfig, 'rsconfig' => $rsconfig), array ('vs_id' => $vs_id, 'proto' => $proto, 'vport' => $vport)))
@@ -1879,7 +1879,7 @@ function removeIPFromVS()
 
 function removePortFromVS()
 {
-       $port = array ('proto' => assertStringArg ('proto'), 'vport' => assertUIntArg ('port', TRUE));
+       $port = array ('proto' => assertStringArg ('proto'), 'vport' => genericAssertion ('port', 'unsigned'));
        $vsinfo = spotEntity ('ipvs', getBypassValue());
        amplifyCell ($vsinfo);
        $used = 0;
@@ -1897,9 +1897,9 @@ function updateTripletConfig()
        global $op;
        $key_fields = array
        (
-               'object_id' => assertUIntArg ('object_id'),
-               'vs_id' => assertUIntArg ('vs_id'),
-               'rspool_id' => assertUIntArg ('rspool_id'),
+               'object_id' => genericAssertion ('object_id', 'natural'),
+               'vs_id' => genericAssertion ('vs_id', 'natural'),
+               'rspool_id' => genericAssertion ('rspool_id', 'natural'),
        );
        $config_fields = array
        (
@@ -1915,7 +1915,7 @@ function updateTripletConfig()
        {
                $table = 'VSEnabledPorts';
                $proto = assertStringArg ('proto');
-               $vport = assertUIntArg ('port', TRUE);
+               $vport = genericAssertion ('port', 'unsigned');
                $key_fields['proto'] = $proto;
                $key_fields['vport'] = $vport;
                $key = "Port $proto-$vport";
@@ -1998,9 +1998,9 @@ function removeTriplet()
 {
        $key_fields = array
        (
-               'object_id' => assertUIntArg ('object_id'),
-               'vs_id' => assertUIntArg ('vs_id'),
-               'rspool_id' => assertUIntArg ('rspool_id'),
+               'object_id' => genericAssertion ('object_id', 'natural'),
+               'vs_id' => genericAssertion ('vs_id', 'natural'),
+               'rspool_id' => genericAssertion ('rspool_id', 'natural'),
        );
 
        global $dbxlink;
@@ -2014,9 +2014,9 @@ function removeTriplet()
 function createTriplet()
 {
        global $dbxlink;
-       $object_id = assertUIntArg ('object_id');
-       $vs_id = assertUIntArg ('vs_id');
-       $rspool_id = assertUIntArg ('rspool_id');
+       $object_id = genericAssertion ('object_id', 'natural');
+       $vs_id = genericAssertion ('vs_id', 'natural');
+       $rspool_id = genericAssertion ('rspool_id', 'natural');
        $vips = genericAssertion ('enabled_vips', 'array0');
        $ports = genericAssertion ('enabled_ports', 'array0');
 
@@ -2361,7 +2361,7 @@ function updateRow ()
 function deleteRow ()
 {
        setFuncMessages (__FUNCTION__, array ('OK' => 7, 'UMOUNT' => 58));
-       $row_id = assertUIntArg ('row_id');
+       $row_id = genericAssertion ('row_id', 'natural');
        $rowData = spotEntity ('row', $row_id);
        $unmounted = getRowMountsCount ($row_id);
        commitDeleteRow ($row_id);
@@ -2669,16 +2669,16 @@ function addIIFOIFCompatPack ()
 
 function addOIFCompat ()
 {
-       $type1 = assertUIntArg ('type1');
-       $type2 = assertUIntArg ('type2');
+       $type1 = genericAssertion ('type1', 'natural');
+       $type2 = genericAssertion ('type2', 'natural');
        $n_changed = addPortOIFCompat ($type1, $type2);
        showSuccess ("$n_changed row(s) added");
 }
 
 function delOIFCompat ()
 {
-       $type1 = assertUIntArg ('type1');
-       $type2 = assertUIntArg ('type2');
+       $type1 = genericAssertion ('type1', 'natural');
+       $type2 = genericAssertion ('type2', 'natural');
        $n_changed = deletePortOIFCompat ($type1, $type2);
        showSuccess ("$n_changed row(s) deleted");
 }
@@ -3746,8 +3746,8 @@ function setPatchCableAmount()
 
 function updateVLANDomain()
 {
-       $domain_id = assertUIntArg ('vdom_id');
-       $group_id = assertUIntArg ('group_id', TRUE);
+       $domain_id = genericAssertion ('vdom_id', 'natural');
+       $group_id = genericAssertion ('group_id', 'unsigned');
        $description = assertStringArg ('vdom_descr');
 
        if (! $group_id)
index b88f18c..a53c6a2 100644 (file)
@@ -217,8 +217,8 @@ function renderPopupObjectSelector()
 function handlePopupPortLink()
 {
        assertPermission('depot', 'default');
-       assertUIntArg ('port');
-       assertUIntArg ('remote_port');
+       genericAssertion ('port', 'natural');
+       genericAssertion ('remote_port', 'natural');
        assertStringArg ('cable', TRUE);
        $port_info = getPortInfo ($_REQUEST['port']);
        $remote_port_info = getPortInfo ($_REQUEST['remote_port']);
@@ -364,7 +364,7 @@ function renderPopupPortSelector()
        if (isset ($_REQUEST['do_link']))
                return handlePopupPortLink();
        assertPermission('depot', 'default');
-       assertUIntArg ('port');
+       genericAssertion ('port', 'natural');
        $port_id = $_REQUEST['port'];
        $port_info = getPortInfo ($port_id);
        $in_rack = isCheckSet ('in_rack');
index f366567..4412e70 100644 (file)
@@ -492,9 +492,9 @@ function getTripletConfigAJAX()
        $tr_list = fetchTripletRows
        (
                array (
-                       'object_id' => assertUIntArg ('object_id'),
-                       'vs_id' => assertUIntArg ('vs_id'),
-                       'rspool_id' => assertUIntArg ('rspool_id'),
+                       'object_id' => genericAssertion ('object_id', 'natural'),
+                       'vs_id' => genericAssertion ('vs_id', 'natural'),
+                       'rspool_id' => genericAssertion ('rspool_id', 'natural'),
                )
        );
        echo '<div class="slbconf" style="max-height: 500px; max-width: 600px; overflow: auto">' . htmlspecialchars (generateSLBConfig2 ($tr_list)) . '</div>';