@@ -43,6 +43,7 @@ public class Rules {
}
public void reload ( ) {
LogUtils . d ( TAG , " reload() " ) ;
loadRules ( ) ;
loadDun ( ) ;
setDunResumTimer ( ) ;
@@ -59,10 +60,12 @@ public class Rules {
@Override
public void run ( ) {
if ( mSettingsModel . getDunCurrentCount ( ) ! = mSettingsModel . getDunTotalCount ( ) ) {
LogUtils . d ( TAG , String . format ( " 当前防御值为%d, 最大防御值为%d " , mSettingsModel . getDunCurrentCount ( ) , mSettingsModel . getDunTotalCount ( ) ) ) ;
int newDunCount = mSettingsModel . getDunCurrentCount ( ) + mSettingsModel . getDunResumeCount ( ) ;
// 保证 盾值在[0, DunTotalCount]之内其他值一律重置为 DunTotalCount。
// 设置 盾值在[0, DunTotalCount]之内其他值一律重置为 DunTotalCount。
newDunCount = ( newDunCount > mSettingsModel . getDunTotalCount ( ) ) ? mSettingsModel . getDunTotalCount ( ) : newDunCount ;
mSettingsModel . setDunCurrentCount ( newDunCount ) ;
LogUtils . d ( TAG , String . format ( " 设置防御值为%d " , newDunCount ) ) ;
saveDun ( ) ;
SettingsActivity . notifyDunInfoUpdate ( ) ;
}
@@ -76,6 +79,7 @@ public class Rules {
}
public void saveRules ( ) {
LogUtils . d ( TAG , String . format ( " saveRules() " ) ) ;
PhoneConnectRuleModel . saveBeanList ( mContext , _PhoneConnectRuleModelList , PhoneConnectRuleModel . class ) ;
}
@@ -88,14 +92,14 @@ public class Rules {
}
public void saveDun ( ) {
LogUtils . d ( TAG , String . format ( " saveDun() isEnableDun : %s " , mSettingsModel . isEnableDun ( ) ) ) ;
LogUtils . d ( TAG , String . format ( " saveDun()" ) ) ;
SettingsModel . saveBean ( mContext , mSettingsModel ) ;
}
public boolean isAllowed ( String phoneNumber ) {
// 没有启用云盾,默认允许接通任何电话
if ( ! mSettingsModel . isEnableDun ( ) ) {
LogUtils . d ( TAG , " 没有启用云盾,默认允许接通任何电话 " ) ;
LogUtils . d ( TAG , String . format ( " 没有启用云盾, 默认允许接通任何电话。isAllowed(...) return true " ) ) ;
return true ;
}
@@ -110,13 +114,15 @@ public class Rules {
LogUtils . d ( TAG , " 盾层为1以下, 防御解除 " ) ;
isDefend = true ;
isConnect = true ;
LogUtils . d ( TAG , String . format ( " isDefend == %s \ nisConnect == %s " , isDefend , isConnect ) ) ;
}
// 正则运算预防针
if ( ! isDefend & & ! RegexPPiUtils . isPPiOK ( phoneNumber ) ) {
LogUtils . d ( TAG , " RegexPPiUtils.isPPiOK return false. " ) ;
LogUtils . d ( TAG , " 正则运算预防针生效。 " ) ;
isDefend = true ;
isConnect = false ;
LogUtils . d ( TAG , String . format ( " isDefend == %s \ nisConnect == %s " , isDefend , isConnect ) ) ;
}
// 检验拨不通号码群
@@ -124,6 +130,7 @@ public class Rules {
LogUtils . d ( TAG , String . format ( " PhoneNumber %s \ n Is In BoBullToon " , phoneNumber ) ) ;
isDefend = true ;
isConnect = false ;
LogUtils . d ( TAG , String . format ( " isDefend == %s \ nisConnect == %s " , isDefend , isConnect ) ) ;
}
// 正则匹配规则名单校验
@@ -132,9 +139,10 @@ public class Rules {
if ( _PhoneConnectRuleModelList . get ( i ) . isEnable ( ) ) {
String regex = _PhoneConnectRuleModelList . get ( i ) . getRuleText ( ) ;
if ( Pattern . matches ( regex , phoneNumber ) ) {
LogUtils . d ( TAG , String . format ( " p honeNumber : %s \ nisAllowConnection %s B y R ule : %s" , phoneNumber , _PhoneConnectRuleModelList . get ( i ) . isAllowConnection ( ) , _PhoneConnectRuleModelList . get ( i ) ) ) ;
LogUtils . d ( TAG , String . format ( " P hone Number [ %s] is matched b y r ule : %s" , phoneNumber , _PhoneConnectRuleModelList . get ( i ) ) ) ;
isDefend = true ;
isConnect = _PhoneConnectRuleModelList . get ( i ) . isAllowConnection ( ) ;
LogUtils . d ( TAG , String . format ( " isDefend == %s \ nisConnect == %s " , isDefend , isConnect ) ) ;
break ;
}
}
@@ -144,6 +152,7 @@ public class Rules {
if ( isConnect ) {
// 如果防御结果为连接,则恢复防御盾牌最大值层数
mSettingsModel . setDunCurrentCount ( mSettingsModel . getDunTotalCount ( ) ) ;
LogUtils . d ( TAG , String . format ( " 防御结果为连接,恢复防御盾牌最大值层数 %d " , mSettingsModel . getDunTotalCount ( ) ) ) ;
saveDun ( ) ;
SettingsActivity . notifyDunInfoUpdate ( ) ;
} else if ( isDefend ) {
@@ -152,12 +161,15 @@ public class Rules {
// 每校验一次规则, 云盾防御层数减1
// 当云盾防御层数为0时, 再次进行以下程序段则恢复满值防御。
int newDunCount = mSettingsModel . getDunCurrentCount ( ) - 1 ;
LogUtils . d ( TAG , String . format ( " 新的防御层数预计为 %d " , newDunCount ) ) ;
// 保证盾值在[0, DunTotalCount]之内其他值一律重置为 DunTotalCount。
if ( newDunCount < 0 | | newDunCount > mSettingsModel . getDunTotalCount ( ) ) {
mSettingsModel . setDunCurrentCount ( mSettingsModel . getDunTotalCount ( ) ) ;
LogUtils . d ( TAG , String . format ( " 盾值不在[0, %d]区间,恢复防御最大值%d " , mSettingsModel . getDunTotalCount ( ) , mSettingsModel . getDunTotalCount ( ) ) ) ;
} else {
mSettingsModel . setDunCurrentCount ( newDunCount ) ;
LogUtils . d ( TAG , String . format ( " 设置防御层数为 %d " , newDunCount ) ) ;
}
saveDun ( ) ;
@@ -165,6 +177,7 @@ public class Rules {
}
// 返回校验结果
LogUtils . d ( TAG , String . format ( " 返回校验结果 isConnect == %s " , isConnect ) ) ;
return isConnect ;
}