Name

sn_itom_pde.ParsePatternsToGetCommands

Description

This script populates the Allow-List for all infrastructure and application patterns

Script


var ParsePatternsToGetCommands = Class.create();
ParsePatternsToGetCommands.prototype = {
  initialize: function() {
  },
  
  fetchAll: function() {
      var ga = new GlideRecord('sa_pattern');
      var cmds = [];
      ga.addQuery('cpattern_type', 1).addOrCondition('cpattern_type', 3);
      ga.query();
      while (ga.next()) {
          this.getCommandsFromSharedLibrariesInsidePattern(ga.sys_id+'');
          this.getCommandsFromExtensions(ga.sys_id+'');
      }
  },
  
  getCommandsFromSharedLibrariesInsidePattern: function(sys_id){
  	var ga = new GlideRecord('pd_pattern_to_shared_library_mapping');
  	var parse = new PANParsePatternForCommands();
  	var lib = [];
  	var parentOS = '';
  	lib.push(sys_id);
  	while(lib.length > 0){
  		var parentId = lib.pop();
  		if(parentOS == '')
  			parentOS = parse.getOSClass(parentId);
  		else
  			parse.setOSClass(parentOS);
  		parse.parsePattern(parentId);
  		ga.addQuery('parent',parentId);
  		ga.query();
  		while(ga.next()){
  			lib.push(ga.pattern+'');
  		}
  	}
  },
  
  getCommandsFromExtensions: function(sys_id){
  	var gx = new GlideRecord('pd_pattern_to_shared_library_mapping');
  	var gy = new GlideRecord('sa_pattern_extension');
  	var parse = new PANParsePatternForCommands();
  	var ext = [];
  	var parentOS = '';
  	gy.addQuery('pattern', sys_id);
  	gy.query();
  	while(gy.next()){
  		ext.push(gy.extension+'');
  		while(ext.length>0){
  			var library = ext.pop();
  			if(parentOS == '')
  				parentOS = parse.getOSClass(sys_id);
  			else
  				parse.setOSClass(parentOS);
  			parse.parsePattern(library);
  			gx.addQuery('parent',library);
  			gx.query();
  			while(gx.next()){
  				ext.push(gx.pattern+'');
  			}	
  		}
  	}
  },

  type: 'ParsePatternsToGetCommands'
};

Sys ID

9df93634479691507cb2e977746d43f6

Offical Documentation

Official Docs: