Name

global.ScopedIPRange

Description

The input range can be comma separated in the following three formats 1. IP addresses. (10.10.10.1, 10.10.10.2) 2. IP networks. (10.10.10.0/23) 3. IP ranges. (10.10.10.1-10.10.11.254) The output is the list of ip addresses.

Script

var ScopedIPRange = Class.create();
ScopedIPRange.prototype = {
  initialize: function() {},

  parse: function(ip_range) {
      var nRanges = [];
      if (JSUtil.nil(ip_range))
          return nRanges;
      gs.debug('ScopedIPRange: iprange' + ip_range);
      var ranges = ip_range;

      var ipAddress;
      var ipNetwork;
      var ipRange;
      var useLegacyParsing = false;

      try {
          ipAddress = SncIPAddress;
          ipNetwork = SncIPNetwork;
          ipRange = SncIPRange;
      } catch (e) {
          ipAddress = SncIPAddressV4;
          ipNetwork = SncIPNetworkV4;
          ipRange = SncIPRangeV4;
          useLegacyParsing = true;
      }

      if (!useLegacyParsing) {
          var elements = ranges.split(',');
          gs.debug('ScopedIPRange: elements :' + elements);

          for (var i = 0; i < elements.length; i++) {
              var elem = elements[i];
              if (elem.includes(':')) {
                  nRanges.push(elem);
                  gs.debug('ScopedIPRange:' + nRanges + ' ' + elem);
                  continue;
              }
              var coll = ipNetwork.getIPNetworkInstance(elem);
              if (coll) {
                  var itr = coll.iterator();
                  while (itr.hasNext()) {

                      nRanges.push(itr.next());
                  }
                  continue;
              }
              coll = ipRange.getIPRangeV4Instance(elem);
              if (coll) {
                  var itr = coll.iterator();
                  while (itr.hasNext()) {

                      nRanges.push(itr.next());
                  }
                  continue;
              }
              coll = ipAddress.getIPAddressV4Instance(elem);
              if (coll) {
                  nRanges.push(coll);
                  continue;
              }
          }

      } else {
          var elements = ranges.split(',');
          gs.debug('ScopedIPRange: elements :' + elements);

          for (var i = 0; i < elements.length; i++) {
              var elem = elements[i];
              if (elem.includes(':')) {
                  nRanges.push(elem);
                  gs.debug('ScopedIPRange:' + nRanges + ' ' + elem);
                  continue;
              }
              if (elem.includes('/')) {
                  var coll = new ipNetwork(elem);
                  if (coll) {
                      var itr = coll.iterator();
                      while (itr.hasNext()) {

                          nRanges.push(itr.next());
                      }
                      continue;
                  }
              }

              if (elem.includes('-')) {
                  coll = ipRange.getIPRangeV4Instance(elem);
                  if (coll) {
                      var itr = coll.iterator();
                      while (itr.hasNext()) {

                          nRanges.push(itr.next());
                      }
                      continue;
                  }
              }

              coll = ipAddress.getIPAddressV4Instance(elem);
              if (coll) {
                  nRanges.push(coll);
                  continue;
              }

          }

      }
      return nRanges;
  },

   type: 'ScopedIPRange'
};

Sys ID

714ca1d84f652110d8de066fae72e0f0

Offical Documentation

Official Docs: