Skip to content

Commit 71d8155

Browse files
authored
Merge pull request #7 from jfut/fix-optimized
fix: use an optimized list for calculating the diff_ratio
2 parents 9cf5a1d + fe09132 commit 71d8155

1 file changed

Lines changed: 11 additions & 13 deletions

File tree

ipset-fast-update

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,6 @@ exclude_ipset() {
141141
cat "${TMP_LIST_FILE}" > "${LIST_FILE}"
142142
done
143143
done
144-
rm -f "${TMP_LIST_FILE}"
145144
}
146145

147146
diff_ratio() {
@@ -173,15 +172,17 @@ diff_ratio() {
173172

174173
optimize_ipset() {
175174
local LIST_FILE="${1}"
176-
local LIST_FILE_OPTIMIZED="${2}"
177175

178-
if which iprange >/dev/null 2>&1; then
176+
TMP_LIST_FILE="${LIST_FILE}.tmp"
177+
if type iprange > /dev/null 2>&1; then
179178
[[ "${IS_VERBOSE}" -eq 1 ]] && echo "- optimize: iprange"
180-
iprange --optimize "${LIST_FILE}" > "${LIST_FILE_OPTIMIZED}"
179+
iprange --optimize "${LIST_FILE}" > "${TMP_LIST_FILE}"
181180
else
182181
[[ "${IS_VERBOSE}" -eq 1 ]] && echo "- optimize: sort, uniq (NOTICE: iprange is better. https://github.com/firehol/iprange)"
183-
cat "${LIST_FILE}" | sort | uniq > "${LIST_FILE_OPTIMIZED}"
182+
cat "${LIST_FILE}" | sort | uniq > "${TMP_LIST_FILE}"
184183
fi
184+
185+
cat "${TMP_LIST_FILE}" > "${LIST_FILE}"
185186
}
186187

187188
update_ipset() {
@@ -296,6 +297,10 @@ main() {
296297
exclude_ipset "${LIST_FILE}" "${EXCLIDE_FILE_LIST[@]}"
297298
fi
298299

300+
# Optimize IP set
301+
[[ "${IS_VERBOSE}" -eq 1 ]] && echo "# optimize_ipset ${LIST_FILE}"
302+
optimize_ipset "${LIST_FILE}"
303+
299304
# Calculate diff ratio
300305
local LIST_CURRENT_FILE="${STATE_DIR}/${SET_NAME}.current"
301306
if [[ ! -f "${LIST_CURRENT_FILE}" ]]; then
@@ -316,17 +321,10 @@ main() {
316321

317322
# Update IP set
318323
if [[ "${IS_FORCE}" -eq 1 || "${DIFF_RATIO}" != "0" ]]; then
319-
# Optimize IP set
320-
local LIST_FILE_OPTIMIZED="${LIST_FILE}.optimized"
321-
[[ "${IS_VERBOSE}" -eq 1 ]] && echo "# optimize_ipset ${LIST_FILE}"
322-
optimize_ipset "${LIST_FILE}" "${LIST_FILE_OPTIMIZED}"
323-
324324
[[ "${IS_VERBOSE}" -eq 1 ]] && echo "# update_ipset ${SET_NAME} ${LIST_FILE}"
325-
update_ipset "${SET_NAME}" "${LIST_FILE_OPTIMIZED}"
325+
update_ipset "${SET_NAME}" "${LIST_FILE}"
326326
[[ "${IS_VERBOSE}" -eq 1 ]] && echo "# Updated: ${SET_NAME}"
327327

328-
rm -f "${LIST_FILE_OPTIMIZED}"
329-
330328
# Save ipset configuration
331329
if [[ "${IS_TEMPORARY}" -eq 0 ]]; then
332330
echo "# Save ipset configuration by using /usr/libexec/ipset/ipset.start-stop save"

0 commit comments

Comments
 (0)