From 0eec7dcb4a7d28d2beb8c3c913cc48a27a42e687 Mon Sep 17 00:00:00 2001 From: sushen339 Date: Tue, 18 Nov 2025 18:15:06 +0800 Subject: [PATCH] --- blockip/Makefile | 1 + blockip/bip | Bin 58392 -> 51832 bytes blockip/src/stats.c | 18 +++++++++++++++--- 3 files changed, 16 insertions(+), 3 deletions(-) diff --git a/blockip/Makefile b/blockip/Makefile index d79fa3e..15ae467 100644 --- a/blockip/Makefile +++ b/blockip/Makefile @@ -45,6 +45,7 @@ $(OBJ_DIR)/%.o: $(SRC_DIR)/%.c $(DEPS) | $(OBJ_DIR) # 链接生成可执行文件 $(TARGET): $(OBJS) $(CC) $(OBJS) $(LDFLAGS) -o $(TARGET) + @strip $(TARGET) @echo "编译完成: $(TARGET)" # 安装 diff --git a/blockip/bip b/blockip/bip index 26a3e31f2010834a5a5d6eb90b20b4f44786bf26..c08e051803c2af6744c586bf8dde1f1158af37e7 100644 GIT binary patch delta 5172 zcmZu!4OmoF8on2h(9k<3C@6@=MX~&wigHw9CWpM#kh!KsrD@o-tt6FTxf&zS3~jgZ zntJR9x7zmEwzcx74bwzJP{7puTYFT>94(bIAz^=tn%;fCa|hOPeIC!9^L_96{=e@W zUjHn*eR=ef%s%Z~rOtm&X_VAMa!UQB)TKE)y0#WroYtzIa&c6`r^PGgnMZ%F@eZ1| z{G~kY3G>XGQ>&IokGNjmQB|L@C`vA>nwU9Jmfx@X#}NHi`9jsO=@aFs9^Kf&8N=lL zY|V^m@*dXx(dqIgHv7@>zE`f1B+Uq@`(h-?zQdSr=Gsqax?7FQ)3@j9r!;*hai@2Y zB>iDEQ!`en`=W3Hh>m{nqJ>-n0-=`*N z`cHZKIZfWDFHi?)Mog{8Q0rQHD`^XTAsRCM+cb~k+mZ)d!Ca?foU@F3UCQiy zw^x~6>(Rg0^fs^ZXq{I%7^Cu=J~d4(IL@i*M?HF5o}TOEX(0Wil*Oo;9?}4ZG+@WI z^H?w-w{)dD2$QrR?D6QAgJg++t51euF2`l1Vx(!BLE$2T0T=ZY)xN`nBXQ(xroK~2 zll)ude8a0b5>#bzI}E1{{Ilf-%iQ__cW|ic(NDJA>{ZeNDdOE<{ot!%nCDbIekns(&a4#Erj<_^ZFj&0B15ez6FC zGjH2S!9V5EO$xpXI|{xxl3dYC5Ks>RCre+WMs#CI%GZB(Q@ICIRN14B^rb}5LxJCkX z?C_E})OSS&^=Aqqc7;d6mHSbp!WG|P{Q8|QOZ#{D(heK1@TJdHzPwKWBk^<}@&&G> zj*Pgn8CHyzL%}}qt@$%4ak(^Qt5H6 z&`m?fgC>r9BHec{=u{@Q@N*YU)9N?sc$7-G6GjhLgv9E`&$= zBrwV1j{?`UxDS9E9(%RQZY26?i2j|*A2A2Q=`@Lq>|OZH|FRwe3fthd5*Um`X+~DO zhU!8U)iuraNLXKInwtE3=Ly3dHi>AU(lKiZX8;Kqk;Ae+_bgc)lM#n4ayB z9jV>6Mt6);;$F7BXrjE1B|mwiyprWUx!FGdBh$>)i+`oAiNj4+4NVfy0M(^Wi=&Iq zhHFJoaRtTmYuQb+N8j^(Pf|3j4n@*=ueyVCa4Uystl*xH=Zp5B+l(%MzK)vxJ8{)E zy7eDW)XPYxqj|w@Yw8!W>e;z+_Ojyip%>BTJn(PRY-)VBCo4vA7@GXHLlmRz6^M~bZ{V3?oAn870QD&X%MJVv_SfQpJ}14# z1jD<;89=9gfE2l=z@c5J0XyDpSv&B9ip67O_@H_+Y?ffmB+W>@o{aXNw(+GOQa*~* zIO}F&)lbDI&IQeGavw|-PZ&Hg`5)L2&MgV5L9_9EMu!(tC{psyAa8)zGl9*XHS`_%iF5w};^IpUC7Cy+O3Xt2nCZ z+dcXP2=1FnNB9BO?U_{HWSsh6!b7}*q#)tPENm>W)I5s?teL;MhWx=EU+ay<{S>uY z#QzqQ89!MkcIEYP*Irqm+o*mDaOe{R&}<2LmrO#5tV?ioh7X0a2W^gsd`X}3(-c)W z$=?wwo4E&Hp(hMJFJqx+61z|8PA9U<2ZM5i$#c>s))4a?IiWXIr^D?U8YjRM66R=x zf#02sXNb`dVbD{nyRl~g+w1C3~Z`~`<-W}6XVhU zBXlY;@*)gOrp^-+h%wSq!P{5C0VDf)=z$>hiJPJ|?XJmMw&PTOyOt3oe z%@%%E1b+ZZ=nbBoA5X3gTZvlYi@~J#S8tMRufg!xyfe~FqJL0Ne^Usa_-h6=N*#|E z&V=|nh~qDRj%9QROW!Vsv3`gvo6o|l0IngEJt>}Vu%)Ga2er_A)SD5KU2wlKCPw1@ z$uJ}93o*U%AZ+0AY=7y^z9i7Ar2&KwTV;cHQPuk-bSrhy0qT`)*pthf@U3Zu_0-k3 z!?y4UG(+c&0e4T6pY_NabnRA2Y8!9Bbr#+UV1C63CGZOjCRxRh73R!8H^DcVejWtf zg+Z4!0=`4i_b6mB08{V-o_q%PXbuiVlIaRf>IzK{(M@S&tK!HTs*M7B8>E3Y3N(JB z^*ewz;uGEz^n0ivdVwxF@eZJTJoi&!@Dyywv{;gga9I5tLRt>NEu>{K0GK<2NGig# zha~<6w_bE};$s%>vfzjKyI0{FEL^F;`S`&Iu}Md2a^T@c<4 zbi~MV!fJ}=Csn_R69U;CXjr`qxwO~b%?}F|A-)h_k(N~O`A4`(A*F?|kTQp)7}@bw zC`yHj1!`;!4LmKFSg+woh#h^dpKl6E14=fKNn~auNW)&Gl9^)Z(u{{y8$bUqD#kWG z5MOZ-(d|T+UE+LTk?PEdWfB0eWp>1t{dn_OH?Y1A^fN zAY@tB|2FzF+~_j*8Zxna7r}wLcf^}0Yo;J)t8}=mYRkNVu^%lwo#x2gW15RV)ApO@ z8GIl3k7;wJ z$Fema^ofez!B(vvATMXTR~O3nGW(kGQAu0bpV!+OW6ZubUH+9# zUYjEit$Jl`VGsF4)%j0PMOR(^vOt!vWd%oaJ@tDQArb+F{GbL4TX0PEeX66++^ zgmpSgKAIyJvjVL1SS40JYr!77jEMExMKFOT0Y8!Y*ooTv*D od+?jvug#uP81TEuXJFF6<(m)C+rU(KuMYyEN4Mg%Xk3uJs@^A68 zyDrLh(fyrM*!1t_gNJrQK`8}Fd2G6Fz5tmpr*b1g;lJ@3V)p%=dyrDgT^t!=D~F z_e#^SZSjiYALYFKVbi*9w+%PE+|)YqXITb&)9j+z2E$LAUKpj^VK~w>cJXXO*6AK< zonx%wkLo7JBEuVM@9M>d^{T&mdaU+(#%%EhQ+s#Dl!r`3w)i^J;%vrB4%n3Lrb?x) zq$M6s+LXDbVtf2WQ+pO;7G;kJz`P8O#5Y1j- z_qdH8Rg`PFz}l5?xlK7{SH2|K+LdFY_jWDb+Mm9CV9$WoxL#6Vq#eB}V zW@Iv%Y~-;(T;MR`l2dZP-gvvordUly%0c6>2A&h}RK?vk^ITJo@rern(HA*f(YVU0 zywCO6l`l?~7>CsngI&3xT_h`%^RU>a?AA(W;B!q&bYT4+gROqA&0_w$vEe*&VKqNy zjkP0~Ib^5#u1r_K=RFttgB90?(&yMPe8S{{%vvxnYlpjoZZg7dDlvYt3QzoW3S#w^;PC9 zK$^FDP5Ih*B&JenwXK1TAHdd%lJmCsuX&v9@v+sz89Qk*4nwF;BX!z`5Z~6&owC5{ z-r-ctxaKbK*_F?l8Nfuf6I2iwJ%|F)K7$R7R?{S_a(-0Xs5R$}PsTuA-f$|~qXJ)R zNGb3WV89x}?7RW8wZE&g-1(zWVo-z1ZXR=l`B6dEN_vF3oW;T83D_s|&C z1+NGzRdkio0lO`Y{_^@OJeZ5DP?KZc^VmK1#xbUo{X{VLBA8zo8$N+n%Uuhtk0F>o z9?T1x5vHRy^pt9jZF(@>Yp+U{o{Vp!zpPSXS9q`Cm5*x8u~Hcu?50Wemvf8_W`w5x za;~wV5gVRRTl_T<gPxP1irx!Z~H&`y&?F2`s&MU$Zjm58zO1;&cYRIGKp2~xAm zl>69p_0ZD0`@Mv3yZK7=AJkyEw#Hs2b(CjB>=7bERpcgKzMPH-b#j&RW#YyEB$Lf6 z5pSxs3!p^pM!K~z);v)FKOW5)8xO@LEtR{Dce^LPG8;9GiqcMOO^!x!We3Nj zBB;h@C=K0nai%41rQ(o-lB%eyq|#nvgDbaRR(k)!!_;F{k5? zT;U3J@3P4=ey@L+A*lYcfuB*Z{&uonKbI1BoCo>p)cVyiH+(^@1Wa`jp0;Z4Zy6q-!jiKcitS^>aT4%$ide;$^O!B@;JpG1_Gq0 z>%2vy%gF?q&cCE$jF&z)6bmMOKH#EiJKC(>%bE7Ldcr%~@PTUfjW+C8W#2m`&%TjN zRw#jQsBv=8_}ih0X%&E4ltnmlBXk$Iz@Zpqy|mHleg26v`}8A4WB-BDz=@+Dt=7gc zX6rE;Dmc7*X|KJ9K8t7n3Z!=BD}H*mS(URW<~K;E`NYb1^+8^*9`RQg7OI7T5o3l@ zvAy_uGI{dJXnkT7&79S(pa%8z5Zk|LD(1x! z77v&WjIF-4P_to5?1V{78>dcwWZ=-LP}R(EwJB+_+;3NQp)JY*vd7D2tHDQx#R`Z~ zIYw6mhO4T!1Lkx3Dn+v^mq0!oNB*)OSi#vx}waWs8c~7f?EC9dy@jH zoWKlfrWu0~qI{{np|d^ShvT&V#C9X@y2Sc4SZ&HayYe3ho>)XI+P~BvgbHF&aCIj9 znD&1p1qnZ{)7}DF>Yh!U?1Z*;6VUXHRlhfBFHqE45dXO-Gc9{J|61Le)AQ;A-9zaQuPa8hgKDo z_a=_A-`onwH|ovdVY5F4vo?rF{qXh?aJ!l2325qx=3DYkIlLYFG~yS8_(CA)GL_+L^~NWeQd&>&1>C^H)MaVjIzs%?G^g>gq^->^vx&TM!pC$RoUzI&gPYQ8-%BYdpUki?*pp+i3qLW0a2Oi{Q|%7Xf=hTLSiRj`Zy-*jUT3{LUCv^HoLI1B;;U(_XWxihI z+SvW5C2bRssO2>SN%HJw43DD+MKkgKK|Sp>5_#T@2nc#n8^diqrhNc$+U7sw_24nQ zhKxLf_ZFPg+A`b*X#B)WODLZ2sINzd+|m<+5rv14oP_&r-McgGZZa%h`fonI@ylng zHby-g9Uq$j_;yxE^a;Ie(7*4$LPB>_7rjrt@=tt|%b#FvJ_YM3UW;H`;x;rx`pAI0 zz2L6)`I}tVDHBQU(7wRAl{g5(sx_Y*8_vOClJz8HB{cPgngOvWZ9f9sf|8{2tKsC>@pYGAn2KwJDbZJ0H>j`w?K;J^KDdw2>Bg znZx~55aR*oMOY20m?rPw2G`(&OuL1oA{=`E9z$9#z!;<@3IfcXX(Sb4I!zKY=sx1z zoVP}&yGhWseTVJ~o$e`47t_vjf@9kA-yu|W!i~DX_XJ&yPKR@t+Xw^alYx8&zanVv z`wq=SlErBr7c}Ge8cSRys47iVEr@RTj-VvfG#7NYPJ^`Ac;O-i*$D5)zvuB>467-g zhnh0tgg}l3HLN~~T$Z%lqg^C=1at#do|ZD;wZFa1rS#;d$O%m)Deu`Ys~xH29~7y?TVqX8k7chnIcGIw^GT}=(=q2hfKNJV0=(5TYg7<$O}6G z7BD{xTBO>hQ)`7FKy5xjcEh8ybg2Me4}kFv%qwK^5rFN=bozdizW+pIxB+lk`tiSq zep<(~pT3?<>^+iWpstnQiAozdxXen-&o>>bz4(URB$#$%7VLe0e50l9OsP&~yBR5R#on`5z_IY{4b!&fR=(gZG zbA zs>hDx%<3ZNNlrh2wR8Gdnx1XK_F9p6lQRru$A#iT!Ls{%==XmQ{C&X50Y;2?>gYxK z=}vVm#h(IhU<284;n^AC@>kzOf9`wW2Jl@={`G*zu7&6g1X)@qEX5^=KSRGq5dBf> zT5`UxCdP94{n(#3Grthsxm-)oU7TSMYv0jHM>{LvjP+#`o~O0*na}A5Gi_%ljCMZt zY_~zNI$--zWl*W%d5%kA>{$U{J6?xZ>I-{O!0|U_{`3^|Zwhz|<`z9K>I>T^;AcWQ zz%1xL)#0dj{!5*)GJ!ZN7>e)E8Suv!{#;W3nlp4TnY#E#I%Jx_49E4qpL#Z{fA)m* zZeD6v;GrG3S{CT!BSZp!oTA8%r+2@>u8<^^uE5+cWJB1NT|$Xib_i+5MOZcn`2Mtv zBkA3#^zM56Sx~p|DQM@rg24oXU4_)kcoqo%N2h5msa@$D?E0bxTZA>3uKbaOj9^gz z-X`FWrZ}tCVwVd)Qk;T-{ZeplDbpb?*hIq4`2r5&UNMSYzRTqP-r?1xAn&#pBMo1fl2oZ1zjdAX#; z6}pHHA!%KTLVih56hES){37C81$>sMxGDi}O~I$@^veYNh=3PP(cwD<{9wwzg42Sc zU6kmf!WM?A(tYWd+7;YFJ4B%U0i9^Qpe;>N$kPQy-E19IA}D4F_~IElV6?DfnSclJ z#~OO>))!U-IMqVenyx2$ig3Zxf^(LzJC*$f=^SiH(Pr;Y?~Y){yCyr4hFwbSs(M|A z+RYlm-r6P15X)e|$!~VQ4!BR$(P*NFovcoWBb5A^Nc6l8=B9R~4+|OPqKZ9&_E7;} zdyfvt60%>xeT2)9e<~=>h!|Cf*j19<6FW_rSbxtu)Sr*v{3v$gmoW?ypd4T6)2K;2V{+)W`&y<`#D6S5} z1!4%7!*H+Z8yh2J9-pcs>7SP9u?YBvV*PuUzOaQtSJ$cG5%gyyozQ}tGd-&Xyk&&` zP0^y~aUDL8ZRt{q>j=S<`BHlKc4}Af7oCk2mUAhLe%jKLn=ZqzQncAu(mP`cTY59? z5W@0tI^TQ|aKDmk9Uc^RY=+>;K2uVz%*fBYl<^=R8Y(k6@)7ze~zc%Vr)hQoXv5DA|>MjOp+Yc z9x38j!h8;of1Hy69*#uuPhU>vl0)(mPdFlnq=-*)dINqr3Jc%iFw0(5AYH>fUPqSB^{E_5oCUM#8K^)iDLOuPek^@ zCF~&z@1VnnH!1Wuyq+I(`@<1Ogv;||=k)?FNz?ALR8>e7Gp&-uBXCzVmjJpy^l%L?e|Wx*rj`?O`B6OSDI^?Vy}>3RYdmJlux%;PMIqGaNG~am6GK? zN5r{Q4ohjXL}cI^j{&QJO)f`7mO$(dgh0fW|F+Z6Umeo33XK%`{IN~C2uSz2KjOqmvJx*kjG79$`F0aSGEQ3^%kx2&& zM}ue-A6g)t9FN}}pejw7+#f1x_9b@o9a`jp7Su z*b;`tK?!{*Ee!;gh0&3rSeRFQIxZ9i6m~?C^~i;J!%C^fmO@dqH`fREIU%omuFRRK z3@(O)nIY4QJyrY6y+n?6F)`|=xr0hc`;kr+Wr_z6jqF^8q76i7{vp$PgYclDtgkMb zt5Z$FgKY92EN0xbb7MUllA;MkA1# zpO0@$d-&}P_}!i*x+zO#FB*}If+sQ2POw4rb+~I^haKo$pJN3Q5ea!PLs7&+9t{sJ z35i9UF@11SwWR6?L&fi6?yxLpwrHwiV-VKaeq{L7ny$88lB&buRHnK0(Q1m0W62Vn zofr!NKR;Nx_cTf2oiE6oOMQXNrb52l=}8+)oe@46=U$gVsTUfuh;snayxw#lFo)AA zhcmk?7zlQm5bp0lcr4SYf$uR9N%EY=BtL*K)hMkQMOfp$M&G+}Y-GkYUEq)w#+^Zw zU#eQDcEfa@OUpwzpILNlFm>n&66WTZ4Be76w`wY#$m*|p;@<=Psc57QK%q)6HBsp- zRq-^J(9hxw=o~&_uPkRat0XyBIB4AR>p_MEbQA|`?w|sTWjc&(;=c@Hie>6})u$6_ z)ssnZ*(D(Y9zSZ{8L188pu~6Q@EXs2;U#oi!97ey7g6g+dAb=J7q0E)!yN}3biJdx z>C;^g8nW0>)x2l2VVqivw?*BCccpp>?>VZub+TcBT8p<+-G+Biy@Yp6HSe8lP}Ewy zRdpNQPpFshenvI7O*Z^it!*1-=&nA~Hf-?kaf_rYsQCSo{$oa~`q#Ew4V%N z=&#lum~0rVZo~T~_0oZ$reg5Q&6<1!?jW}+&*sg=l W^-z!OxhcDE8gc4~j=0r8i2nlp>~nem diff --git a/blockip/src/stats.c b/blockip/src/stats.c index 06c2d8a..b41f6a5 100644 --- a/blockip/src/stats.c +++ b/blockip/src/stats.c @@ -182,11 +182,23 @@ void show_subnet_aggregation(void) { } fclose(fp); - /* 第一步:按count降序排序 */ + /* 第一步:按count降序排序,同count时按IP第一段数字排序 */ for (int i = 0; i < agg_count - 1; ++i) { for (int j = i + 1; j < agg_count; ++j) { - if (agg[j].count > agg[i].count || - (agg[j].count == agg[i].count && strcmp(agg[j].subnet, agg[i].subnet) < 0)) { + bool should_swap = false; + + if (agg[j].count > agg[i].count) { + should_swap = true; + } else if (agg[j].count == agg[i].count) { + /* 同count时,按IP第一段数字排序 */ + int ip_i = atoi(agg[i].subnet); + int ip_j = atoi(agg[j].subnet); + if (ip_j < ip_i) { + should_swap = true; + } + } + + if (should_swap) { char tmp_subnet[64]; int tmp_count = agg[i].count, tmp_mask = agg[i].mask; strcpy(tmp_subnet, agg[i].subnet);