Saurabh Gupta
Kilo Patron
Options
- Subscribe to RSS Feed
- Mark as New
- Mark as Read
- Bookmark
- Subscribe
- Printer Friendly Page
- Report Inappropriate Content
09-16-2023
11:11 PM
We can create a client callable script include for that
var onDemandDiscoveryUtil = Class.create();
onDemandDiscoveryUtil.prototype = Object.extendsObject(AbstractAjaxProcessor, {
checkIP: function(ip) {
ip = ip ? ip : this.getParameter('sysparm_ip');
ip = String(ip);
var range_obj = {
within_range: false,
range: ''
};
rangeArray = this._myIPSubnet()
.split(',')
.filter(function(x) {
return x;
});
for (var i = 0; i < rangeArray.length; i++) {
if (this._isIp4InCidr(ip, rangeArray[i])) {
range_obj.within_range = true;
range_obj.range = rangeArray[i];
break;
}
}
return JSON.stringify(range_obj);
},
_ip4ToInt: function(ip)
{
return ip.split('.').reduce(function(integer, oct)
{
return (integer << 8 ) + parseInt(oct, 10);
}, 0) >>> 0;
},
_isIp4InCidr: function(ip, cidr) {
var split = cidr.split('/');
var range = split[0];
var bits = split[1];
var mask = -1 << (32 - bits);
// check if the masked IP is the same as the range
return (this._ip4ToInt(ip) & mask) == (this._ip4ToInt(range));
},
_myIPSubnet:function()
{
var ipsunetRet=[];
var ipsubnet=new GlideRecord('discovery_range_item');
ipsubnet.addEncodedQuery("active=true^summaryISNOTEMPTY^type=IP Network");
ipsubnet.query();
while(ipsubnet.next())
{
ipsunetRet.push(ipsubnet.getValue('summary'));
}
return ipsunetRet.join(",");
},
ifNotInRange:function(ipAddresses)
{
var app=ipAddresses.split(",");
var au=new ArrayUtil();
var ips=au.unique(app);
var retArr=[];
for(var i=0;i<ips.length;i++)
{
var retStr=this.checkIP(ips[i]);
var retObj=JSON.parse(retStr);
if(retObj.within_range==false)
retArr.push(ips[i]);
}
return JSON.stringify(retArr);
},
type: 'onDemandDiscoveryUtil'
});
//Calling fuction
var ips='10.143.98.67,10.88.132.143,10.255.133.134,10.88.131.120,10.255.133.154,10.255.133.147,172.16.2.1,10.143.139.163,10.143.120.131,10.143.180.117172.16.2.1,10.143.50.195';
var api=new onDemandDiscoveryUtil();
gs.info("IPs Not in Range: "+api.ifNotInRange(ips))
Output:
C |
If you found value in this blog/article, I'd be grateful if you could either bookmark it or mark it as helpful. |
- 1,163 Views
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.