Проблема вот в этом коде
Код:
ib=rule.indexOf("[CLOSE]")+8;
ie=rule.indexOf("[/CLOSE]")-1;
Тут нужно, не 8, а 7 прибавлять. в общем случае между [CLOSE] и [/CLOSE] может ничего не быть например
Код:
[CLOSE]
<LOOP>
table 23 delete {A}
table 24 delete {A}
table 51 add {A}
</LOOP>
<LOOP_NET>
table 23 delete {IP}/{MASK_BIT}
table 24 delete {IP}/{MASK_BIT}
table 51 add {IP}/{MASK_BIT}
</LOOP_NET>
[/CLOSE]
если не добавлено ни одного ip или сети на договор, то это команды схлопнутся. А аналогично и для [OPEN].
Тут бы лучше взяли код
как тут.
Что-то вроде этого
Код:
import java.util.Pattern;
import java.util.Matcher;
....
Pattern pattern = Pattern.compile( "\\[CLOSE\\](.*)\\[/CLOSE\\]", Pattern.DOTALL );
Matcher m = pattern.matcher( rule );
if (m.find())
{
rule = m.group( 1 );
}