Guest User

functions.div.patch

a guest
Sep 1st, 2018
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 8.59 KB | None | 0 0
  1. --- functions.div
  2. +++ functions.div.new
  3. @@ -10,6 +10,7 @@
  4.  # https://diversion.ch
  5.  
  6.  # Script Version 4.0
  7. +# Custom modifications by bengalih  - version 1.0.2 9/1/18
  8.  
  9.  write_bf(){
  10.  
  11. @@ -2126,9 +2127,12 @@
  12.                                             printf " no need to add it to the whitelist\\n\\n"
  13.                                             if grep -q $listadd "${DIVERSION_DIR}/list/blockinglist"; then
  14.                                                 printf " found near match(es) in blocking file:\\n\\n"
  15. -                                               grep $listadd "${DIVERSION_DIR}/list/blockinglist" | sed -e "s/^$blockingIP//"
  16. +                                               matchlist=`grep $listadd "${DIVERSION_DIR}/list/blockinglist" | sed -e "s/^$blockingIP//"`
  17. +                                               printf "${GREEN}$matchlist${NC}\\n"
  18. +                                               nearmatches=1
  19.                                             else
  20.                                                 echo " no near matches found either"
  21. +                                               nearmatches=0
  22.                                             fi
  23.                                             forceadd=1
  24.                                         fi
  25. @@ -2146,13 +2150,34 @@
  26.                                                 grep " $listadd$" "${DIVERSION_DIR}/list/blockinglist" | sed -e "s/^$blockingIP//"
  27.                                                 echo "${NC}"
  28.                                                 printf " Add it to whitelist? [1=Yes 2=No] ";read -r continue
  29. -                                           else
  30. +                                           elif [ "$forceadd" = "1" ]; then
  31. +                                               continue=2
  32. +                                               if [ "$nearmatches" = "1" ]; then
  33. +                                                   print_red_line
  34. +                                                   printf "\\n Add near match(es) to whitelist? [1=Yes 2=No] ";read -r continueN
  35. +                                          
  36. +                                                   case "$continueN" in
  37. +                                                           [1]) process_near=1 && continue=1;;
  38. +                                                           [2]) ;;
  39. +                                                             *) forceadd=0 && continue=3;;
  40. +                                                   esac
  41. +                                               fi
  42. +                                           fi
  43. +
  44. +                                           if [ "$forceadd" = "1" ]; then
  45.                                                 print_red_line
  46.                                                 printf "${GREEN} $listadd${NC}\\n was not found in the blocking file or blacklist\\n"
  47.                                                 printf " If you add it anyway, it may have no effect unless\\n you select a larger blocking file.\\n"
  48.                                                 printf "\\n The domain will be marked #(forced-entry) and is\\n not re-added to the blocking file if you remove it.\\n"
  49. -                                               printf "\\n Add it to whitelist anyway? [1=Yes 2=No] ";read -r continue
  50. +                                               printf "\\n Add it to whitelist anyway? [1=Yes 2=No] ";read -r continueF
  51. +                                              
  52. +                                               case "$continueF" in
  53. +                                                   [1]) process_force=1 && continue=1;;
  54. +                                                   [2]) ;;
  55. +                                                     *) continue=3;;
  56. +                                               esac
  57.                                             fi
  58. +                                          
  59.                                             case "$continue" in
  60.                                                 1)  printf "\\n Do you want to add a comment? [1=Yes 2=No] ";read -r continueC
  61.                                                     case "$continueC" in
  62. @@ -2163,19 +2188,29 @@
  63.                                                             printf "\\n${RED_BG} Enter comment ${NC} [e=Exit] ";read -r listcomment
  64.                                                             case "$listcomment" in
  65.                                                                 e)  edit_list edit $2;break;;
  66. -                                                               *)  printf "\\n${GREEN} $listadd${NC} #$listcomment \\n added to $2\\n\\n"
  67. -                                                                   comment=#$listcomment
  68. -                                                                   [ "$forceadd" = "1" ] && echo $listadd $comment $forced >>"${DIVERSION_DIR}/list/$2"
  69. -                                                                   [ "$forceadd" = "0" ] && echo $listadd $comment >>"${DIVERSION_DIR}/list/$2"
  70. -                                                                   ;;
  71. +                                                               *)  comment=" #$listcomment";;
  72.                                                             esac
  73.                                                             ;;
  74. -
  75. -                                                       2)  printf "\\n${GREEN} $listadd${NC}\\n added to $2\\n\\n"
  76. -                                                           [ "$forceadd" = "1" ] && echo $listadd $forced >>"${DIVERSION_DIR}/list/$2"
  77. -                                                           [ "$forceadd" = "0" ] && echo $listadd >>"${DIVERSION_DIR}/list/$2"
  78. -                                                           ;;
  79. +                                                       2)  comment="";;
  80.                                                     esac
  81. +                                              
  82. +                                                   if [ "$forceadd" = "0" ]; then
  83. +                                                       printf "\\n${GREEN} $listadd${NC} #$comment \\n added to $2\\n\\n"
  84. +                                                       echo $listadd $comment >>"${DIVERSION_DIR}/list/$2"
  85. +                                                   fi
  86. +
  87. +                                                   if [ "$forceadd" = "1" ] && [ "$process_force" = "1" ]; then
  88. +                                                       printf "\\n${GREEN} $listadd${NC} #$comment \\n added to $2\\n\\n"
  89. +                                                       echo $listadd $comment $forced >>"${DIVERSION_DIR}/list/$2"
  90. +                                                   fi
  91. +                                                  
  92. +                                                   if [ "$forceadd" = "1" ] && [ "$process_near" = "1" ]; then
  93. +                                                       grep $listadd "${DIVERSION_DIR}/list/blockinglist" | sed -e "s/^$blockingIP //" -e "s/$/&${comment}/" >>"${DIVERSION_DIR}/list/$2"
  94. +                                                       printf "\\n"
  95. +                                                       grep $listadd "${DIVERSION_DIR}/list/blockinglist" | awk -v comment="$comment" '{printf "\e[92m "$2"\e[0m"'comment'"\n"}'
  96. +                                                       printf " added to $2\\n\\n"
  97. +                                                   fi                                                                 
  98. +                  
  99.                                                     if [ "$removeadd" = "1" ]; then
  100.                                                         sed -i "/ $listadd\b/d" "${DIVERSION_DIR}/list/blacklist"
  101.                                                         sed -i "/^$listadd\b/d" "${DIVERSION_DIR}/list/wc_blacklist"
  102. @@ -2197,37 +2232,62 @@
  103.                     print_red_line
  104.                     [ "$2" = "whitelist" ] && printf "\\n deleted domains are re-added to blocking file\\n unless marked as inactive or #(forced-entry).\\n"
  105.                     while true;do
  106. -                       printf "\\n${RED_BG} Line number to delete ${NC} [e=Exit] ";read -r deleteline
  107. +                       printf "\\n${RED_BG} Line number(s) to delete (#, #-#)${NC} [e=Exit] ";read -r deleteline
  108.                         case "$deleteline" in
  109. -                               [Ee])   edit_list edit $2;break;;
  110. -                        ''|*[!0-9]*)   printf "\\n input is not a number.\\n";;
  111. -                   [1-9]|[1-9][0-9]*)  # add entry back to blocking file, 1 - 999
  112. -                                       if [ "$deleteline" -gt "$lineNumbers" ]; then
  113. -                                           printf "\\n input is outside number range.\\n"
  114. -                                       else
  115. -                                           readd=$(sed -n "${deleteline}p" ${DIVERSION_DIR}/list/$2)
  116. -                                           readd=$(echo $readd | sed "s/#!//g; s/$blockingIP//g" | awk '{print $1}')
  117. -                                           loggerAdd=
  118. -                                           if [ "$2" = "whitelist" ]; then
  119. -                                               if echo "$(sed -n "${deleteline}p" ${DIVERSION_DIR}/list/$2)" | grep -q '#!\|(forced-entry)'; then
  120. -                                                   loggerAdd=", inactive or (forced-entry) found, not re-added to blocking file"
  121. -                                               else
  122. -                                                   echo $blockingIP $readd >>"${DIVERSION_DIR}/list/blockinglist"
  123. -                                                   if [ "$(nvram get ipv6_service)" != "disabled" ]; then
  124. -                                                       echo :: $readd >>"${DIVERSION_DIR}/list/blockinglist"
  125. -                                                   fi
  126. -                                                   loggerAdd=" and appended it to blocking file"
  127. -                                               fi
  128. -                                           fi
  129. -                                           sed -i "${deleteline}d" "${DIVERSION_DIR}/list/$2"
  130. -                                           export edited_${2}=1
  131. -                                           logger -t Diversion "deleted '$readd' from $2$loggerAdd (user action), from $0"
  132. -                                           edit_list edit $2
  133. -                                           break
  134. -                                       fi;;
  135. -                                   *)  printf "\\n line number is a comment line.\\n";;
  136. +                           [Ee])   edit_list edit $2;break;;
  137. +                           *)
  138. +                           echo "$deleteline" | egrep -q '^[[:digit:]-]*$'
  139. +
  140. +                           if [ $? -ne 0 ]; then
  141. +                              printf "\\n input is not a number.\\n"
  142. +                           else
  143. +                               delete_range_start=`echo $deleteline|awk -F "-" '{print $1}'`
  144. +                               delete_range_end=`echo $deleteline|awk -F "-" '{print $2}'`
  145. +                               [ "$delete_range_end" = "" ] && delete_range_end=$delete_range_start
  146. +
  147. +                               if [ $delete_range_end -lt $delete_range_start ]; then
  148. +                                   printf "\\n upper range must be higher than lower range.\\n"
  149. +                               else
  150. +                                   if [ "$delete_range_end" = "" ]; then
  151. +                                       delete_range_end=$delete_range_start
  152. +                                   elif [ $delete_range_end -gt $lineNumbers ]; then
  153. +                                       printf "\\n${RED_BG} Setting range to last entry${NC} (line: $lineNumbers)\\n"
  154. +                                   fi
  155. +                                   break
  156. +                               fi 
  157. +                           fi
  158. +                           ;;
  159.                         esac
  160. -                   done;break;;
  161. +                      
  162. +                   done
  163. +                  
  164. +                   deleteline=$delete_range_start
  165. +                   deleteloop=`expr $delete_range_end - $delete_range_start + 1`
  166. +                  
  167. +                   # add entry back to blocking file, 1 - 999
  168. +                   i=1
  169. +                   while [ $i -le $deleteloop ]; do
  170. +                           readd=$(sed -n "${deleteline}p" ${DIVERSION_DIR}/list/$2)
  171. +                           readd=$(echo $readd | sed "s/#!//g; s/$blockingIP//g" | awk '{print $1}')
  172. +                           loggerAdd=
  173. +                           if [ "$2" = "whitelist" ]; then
  174. +                                   if echo "$(sed -n "${deleteline}p" ${DIVERSION_DIR}/list/$2)" | grep -q '#!\|(forced-entry)'; then
  175. +                                       loggerAdd=", inactive or (forced-entry) found, not re-added to blocking file"
  176. +                                   else
  177. +                                       echo $blockingIP $readd >>"${DIVERSION_DIR}/list/blockinglist"
  178. +                                       if [ "$(nvram get ipv6_service)" != "disabled" ]; then
  179. +                                           echo :: $readd >>"${DIVERSION_DIR}/list/blockinglist"
  180. +                                       fi
  181. +                                       loggerAdd=" and appended it to blocking file"
  182. +                                   fi
  183. +                           fi
  184. +                           sed -i "${deleteline}d" "${DIVERSION_DIR}/list/$2"
  185. +                           export edited_${2}=1
  186. +                           logger -t Diversion "deleted '$readd' from $2$loggerAdd (user action), from $0"
  187. +                           i=`expr $i + 1`
  188. +                   done   
  189. +                   edit_list edit $2
  190. +                   break;;
  191.                 3)  export edited_${2}=
  192.                     elsum=
  193.                     [ "$2" = "whitelist" ] && elsum=$((elsum+1))
Add Comment
Please, Sign In to add comment