@@ -142,6 +142,83 @@ class fauxApiInterfaceAliasTools
142142 }
143143 }
144144
145+ public static function find_alias_reference ($ section , $ field , $ origname , &$ is_alias_referenced , &$ referenced_by ) {
146+ global $ config ;
147+ if (!$ origname || $ is_alias_referenced ) {
148+ return ;
149+ }
150+
151+ $ sectionref = &$ config ;
152+ foreach ($ section as $ sectionname ) {
153+ if (is_array ($ sectionref ) && isset ($ sectionref [$ sectionname ])) {
154+ $ sectionref = &$ sectionref [$ sectionname ];
155+ } else {
156+ return ;
157+ }
158+ }
159+
160+ if (is_array ($ sectionref )) {
161+ foreach ($ sectionref as $ itemkey => $ item ) {
162+ $ fieldfound = true ;
163+ $ fieldref = &$ sectionref [$ itemkey ];
164+ foreach ($ field as $ fieldname ) {
165+ if (is_array ($ fieldref ) && isset ($ fieldref [$ fieldname ])) {
166+ $ fieldref = &$ fieldref [$ fieldname ];
167+ } else {
168+ $ fieldfound = false ;
169+ break ;
170+ }
171+ }
172+ if ($ fieldfound && $ fieldref == $ origname ) {
173+ $ is_alias_referenced = true ;
174+ if (is_array ($ item )) {
175+ $ referenced_by = $ item ['descr ' ];
176+ }
177+ break ;
178+ }
179+ }
180+ }
181+ }
182+
183+ public static function is_alias_used ($ alias_name ){
184+ $ is_alias_referenced = false ;
185+ $ referenced_by = false ;
186+
187+ // Firewall rules
188+ fauxApiInterfaceAliasTools::find_alias_reference (array ('filter ' , 'rule ' ), array ('source ' , 'address ' ), $ alias_name , $ is_alias_referenced , $ referenced_by );
189+ fauxApiInterfaceAliasTools::find_alias_reference (array ('filter ' , 'rule ' ), array ('destination ' , 'address ' ), $ alias_name , $ is_alias_referenced , $ referenced_by );
190+ fauxApiInterfaceAliasTools::find_alias_reference (array ('filter ' , 'rule ' ), array ('source ' , 'port ' ), $ alias_name , $ is_alias_referenced , $ referenced_by );
191+ fauxApiInterfaceAliasTools::find_alias_reference (array ('filter ' , 'rule ' ), array ('destination ' , 'port ' ), $ alias_name , $ is_alias_referenced , $ referenced_by );
192+ // NAT Rules
193+ fauxApiInterfaceAliasTools::find_alias_reference (array ('nat ' , 'rule ' ), array ('source ' , 'address ' ), $ alias_name , $ is_alias_referenced , $ referenced_by );
194+ fauxApiInterfaceAliasTools::find_alias_reference (array ('nat ' , 'rule ' ), array ('source ' , 'port ' ), $ alias_name , $ is_alias_referenced , $ referenced_by );
195+ fauxApiInterfaceAliasTools::find_alias_reference (array ('nat ' , 'rule ' ), array ('destination ' , 'address ' ), $ alias_name , $ is_alias_referenced , $ referenced_by );
196+ fauxApiInterfaceAliasTools::find_alias_reference (array ('nat ' , 'rule ' ), array ('destination ' , 'port ' ), $ alias_name , $ is_alias_referenced , $ referenced_by );
197+ fauxApiInterfaceAliasTools::find_alias_reference (array ('nat ' , 'rule ' ), array ('target ' ), $ alias_name , $ is_alias_referenced , $ referenced_by );
198+ fauxApiInterfaceAliasTools::find_alias_reference (array ('nat ' , 'rule ' ), array ('local-port ' ), $ alias_name , $ is_alias_referenced , $ referenced_by );
199+ // NAT 1:1 Rules
200+ //fauxApiInterfaceAliasTools::find_alias_reference(array('nat', 'onetoone'), array('external'), $alias_name, $is_alias_referenced, $referenced_by);
201+ //fauxApiInterfaceAliasTools::find_alias_reference(array('nat', 'onetoone'), array('source', 'address'), $alias_name, $is_alias_referenced, $referenced_by);
202+ fauxApiInterfaceAliasTools::find_alias_reference (array ('nat ' , 'onetoone ' ), array ('destination ' , 'address ' ), $ alias_name , $ is_alias_referenced , $ referenced_by );
203+ // NAT Outbound Rules
204+ fauxApiInterfaceAliasTools::find_alias_reference (array ('nat ' , 'outbound ' , 'rule ' ), array ('source ' , 'network ' ), $ alias_name , $ is_alias_referenced , $ referenced_by );
205+ fauxApiInterfaceAliasTools::find_alias_reference (array ('nat ' , 'outbound ' , 'rule ' ), array ('sourceport ' ), $ alias_name , $ is_alias_referenced , $ referenced_by );
206+ fauxApiInterfaceAliasTools::find_alias_reference (array ('nat ' , 'outbound ' , 'rule ' ), array ('destination ' , 'address ' ), $ alias_name , $ is_alias_referenced , $ referenced_by );
207+ fauxApiInterfaceAliasTools::find_alias_reference (array ('nat ' , 'outbound ' , 'rule ' ), array ('dstport ' ), $ alias_name , $ is_alias_referenced , $ referenced_by );
208+ fauxApiInterfaceAliasTools::find_alias_reference (array ('nat ' , 'outbound ' , 'rule ' ), array ('target ' ), $ alias_name , $ is_alias_referenced , $ referenced_by );
209+ // Alias in an alias
210+ fauxApiInterfaceAliasTools::find_alias_reference (array ('aliases ' , 'alias ' ), array ('address ' ), $ alias_name , $ is_alias_referenced , $ referenced_by );
211+ // Load Balancer
212+ fauxApiInterfaceAliasTools::find_alias_reference (array ('load_balancer ' , 'lbpool ' ), array ('port ' ), $ alias_name , $ is_alias_referenced , $ referenced_by );
213+ fauxApiInterfaceAliasTools::find_alias_reference (array ('load_balancer ' , 'virtual_server ' ), array ('port ' ), $ alias_name , $ is_alias_referenced , $ referenced_by );
214+ // Static routes
215+ fauxApiInterfaceAliasTools::find_alias_reference (array ('staticroutes ' , 'route ' ), array ('network ' ), $ alias_name , $ is_alias_referenced , $ referenced_by );
216+ if ($ is_alias_referenced ) {
217+ return $ referenced_by ;
218+ }
219+ return NULL ;
220+ }
221+
145222
146223}
147224
0 commit comments