From c862943329d8e99ca811bab751398aba010f326a Mon Sep 17 00:00:00 2001 From: yali Date: Mon, 1 Aug 2022 13:57:11 +0800 Subject: [PATCH] Fix the problem that the higher version is smaller than the lower version when comparing versions, e.g. 3.10.5 < 3.6 --- Finger.py | 0 api/__pycache__/__init__.cpython-310.pyc | Bin 0 -> 139 bytes api/__pycache__/fofa.cpython-310.pyc | Bin 0 -> 2903 bytes api/__pycache__/quake.cpython-310.pyc | Bin 0 -> 2273 bytes config/__pycache__/__init__.cpython-310.pyc | Bin 0 -> 142 bytes config/__pycache__/color.cpython-310.pyc | Bin 0 -> 1466 bytes config/__pycache__/config.cpython-310.pyc | Bin 0 -> 1362 bytes config/__pycache__/data.cpython-310.pyc | Bin 0 -> 337 bytes config/__pycache__/datatype.cpython-310.pyc | Bin 0 -> 2090 bytes config/__pycache__/log.cpython-310.pyc | Bin 0 -> 1647 bytes lib/__pycache__/IpFactory.cpython-310.pyc | Bin 0 -> 1572 bytes lib/__pycache__/__init__.cpython-310.pyc | Bin 0 -> 139 bytes lib/__pycache__/checkenv.cpython-310.pyc | Bin 0 -> 3434 bytes lib/__pycache__/cmdline.cpython-310.pyc | Bin 0 -> 1131 bytes lib/__pycache__/identify.cpython-310.pyc | Bin 0 -> 2619 bytes lib/__pycache__/ip2Region.cpython-310.pyc | Bin 0 -> 5146 bytes .../ipAttributable.cpython-310.pyc | Bin 0 -> 1550 bytes lib/__pycache__/options.cpython-310.pyc | Bin 0 -> 3893 bytes lib/__pycache__/output.cpython-310.pyc | Bin 0 -> 2533 bytes lib/__pycache__/req.cpython-310.pyc | Bin 0 -> 4096 bytes lib/checkenv.py | 64 ++++++++++++------ 21 files changed, 42 insertions(+), 22 deletions(-) mode change 100644 => 100755 Finger.py create mode 100644 api/__pycache__/__init__.cpython-310.pyc create mode 100644 api/__pycache__/fofa.cpython-310.pyc create mode 100644 api/__pycache__/quake.cpython-310.pyc create mode 100644 config/__pycache__/__init__.cpython-310.pyc create mode 100644 config/__pycache__/color.cpython-310.pyc create mode 100644 config/__pycache__/config.cpython-310.pyc create mode 100644 config/__pycache__/data.cpython-310.pyc create mode 100644 config/__pycache__/datatype.cpython-310.pyc create mode 100644 config/__pycache__/log.cpython-310.pyc create mode 100644 lib/__pycache__/IpFactory.cpython-310.pyc create mode 100644 lib/__pycache__/__init__.cpython-310.pyc create mode 100644 lib/__pycache__/checkenv.cpython-310.pyc create mode 100644 lib/__pycache__/cmdline.cpython-310.pyc create mode 100644 lib/__pycache__/identify.cpython-310.pyc create mode 100644 lib/__pycache__/ip2Region.cpython-310.pyc create mode 100644 lib/__pycache__/ipAttributable.cpython-310.pyc create mode 100644 lib/__pycache__/options.cpython-310.pyc create mode 100644 lib/__pycache__/output.cpython-310.pyc create mode 100644 lib/__pycache__/req.cpython-310.pyc diff --git a/Finger.py b/Finger.py old mode 100644 new mode 100755 diff --git a/api/__pycache__/__init__.cpython-310.pyc b/api/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..5a9a0ae6a6d8b48de7a20c5f2380c5d83f055b0f GIT binary patch literal 139 zcmd1j<>g`k0<*PGl0fuh5P=LBfgA@QE@lA|DGb33nv8xc8Hzx{2;!HXerR!OQL%nb zW=^JlP<~=cZeoFcaB8x?TV`H*YLR|oL8g9ud}dx|NqoFsLFFwDo80`A(wtN~kU7On IK!Sw<0HaqO%>V!Z literal 0 HcmV?d00001 diff --git a/api/__pycache__/fofa.cpython-310.pyc b/api/__pycache__/fofa.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..5c00a514f71f6860551b1ad5ba7ab2f0c0b5d254 GIT binary patch literal 2903 zcmZ`*>u(&@6`wn=oqgFG#|bf!z^Q`OO^G*7qo_*jmNejshfIrks9T}cc<)_%HnTJ9 zJ9i*n?@BICnpDDss!2f&61#=8t8rNDFY=Dqo=Sw;C0h24(^!Xxkn9uTTf;wr_sB}F1-wW!KgD{9cHu3j^W z2Ejg>Yt|CQM9nH%wPZ0Vb-J6XrHkoWrkJT^i&?27?oe^)7Ya3~d0wIBnpzyDWKPK^ z2C$|wnj7x38NXte&a&kwB{^2J9XCpc0plfm zfq5b*<4n6B6@*9N3l0Ne3Z4bdL8y9Ofpch7hgOewR5WM;c4I|4PF^N3VEfU5vEVxc zU(g34l%`T5LItW(0#v7}FxsX_bclnp)l}Naj>2mqRZa6FNFP;R%(MvA+LN#-o(bMSUhT+twS6YojznOV@=Jfbu=j>YDWiL`6Zo`{qu{c@wYpDVHFdPHY-}t2e z_dj+oT<^Voy}$97?u8ErS8nw;)=!0aFaKfP{PX$V)%OP%FMogV*_-`a?@k>%mOmB6 z6Q$yz-J5UR`*gj(cK6<=cQ$X_`ReoEh7Z9+sm&|z^)7wVz5J)%?Mv~3VA{O)QSY_u zgVojU#XDcFzQX0Mjzjkf-1E3ycVMdSb<$qef_V! zo9}FPZoyRf{X78!BSVHBH<8ycAoaj$u*l@L2Y!gm@}lpQ8ONB35{t~Hj0cfXUS#F7 z+(4!3)FZRv^O`LpjfWmb07kmwRs6_sym}}iBM=;VX^sax*xF)_^4bEHuSR3DIW&uhQi08`PY#G-e6F09oH#5ctKPr-#V-4vZ|%FZBj0NCduPK*xG0GK?pyEm-(Lfa zV372`xYqBy+PiXlaP4>fkI&z`^EbfN&M!QIL%s`i!0D-#W37i{bqsH*n`$+TP*jfo z2-3gBys}Rr9vjs~A?m@YLL8Ea3K^g;O%(!W^YUWBcHN&z3{JzW6A;+8{sSNIV2v^ZM|SsD9pZBEy9Y5Jb9Q=OBfE`vR`ZxkK(ord_Wy zk47nWuFUGf@x35QKLbhZ*)0zp#ID0eN+n4l27ml za8C~+Ie}wgV?iCJWsyN`VZ%nSiS!aIFVj^_4&i|PK#sx}{2WM%jFS6_4*5m@MpZ{- z?tx514nWR1K=y;20|~Q}x@!KzB)N1BH1Ugh%Onl?Ct?y(?sqCYreDnFvceaEX-q)k zQ21e>gde6vCK;&uRRXXjLaXXcNKzmhRD7{{$_q#^d^uLPye8dVwCqqUO3(fnP2)R6 zx_2*#Pr(;p>A+;3gJhn;bg#mT4wL`2CS~oK&6`*pJiEq9r6^S@)qEPd$Y)BWrO48(@(%um*B z4uwo2Azk*pinB0@!4u;JgIE^WVs^_GH?mU8(jC`i2tb>qJR|7(Mh^^^E;KZV+) T1n5;ugI&r(Hws~BkrD0R{0ltU literal 0 HcmV?d00001 diff --git a/api/__pycache__/quake.cpython-310.pyc b/api/__pycache__/quake.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..3d00b1b941e675a369f93dc128be43f785b721e5 GIT binary patch literal 2273 zcmb7G+iw(A7(ZujJ3D)!EznYeiW(DFp^G8%P|-jXFCh}S1zCfeVb8Rkc6MfaW`?%Q zuBo<_K3I4VY82G1+6WH?jaWz#dG&8NZ-(x6_sKV7OhmtPrjQbSac0kVzT5fE?fZSR zUMgiEcy=u;pZqnB&|NO9ePj^!K=Tg)A&6iH<)R+vu#lyk1ij?QMJ1;c)trjCU3Ro$ zEEg;4IbF!uiRa?4A)*j<5)pMm${7S7Mj5RIanXT{#FV4d@mb9A`ulCS9~An*&>XV% zTVpH{`WDTb{gxZ}1@6E0kwDl3&EEpVLVQ)QB21)7l#_`}6zE}AJ{MC($N~n>`w!=J zXfH$ae*qGp8V;m69LNM;k}4>#04EJev@=j^8j*6Sglh_2V z8FL6mB|y?2NXZHsOzip2R?H_f%R^c*6_kW60}mV~fi7Y{#DLA7;r z2%}?gw1<&`g0?Z(1b>BRa_yRq3!f2`Nx`X>jiYdM+xPOLD<|LHF7|)K8?s!6!kw_& z=CvF3sphuYFaY`k{6HYV+Dm zZ`k>7YvaOqtuyC(!>7SyM6UIPPa4y+(cs9ud~>EbaeMjZ(#n;k-+p@kh?vG$>(ToB zi^hfP;0@;RDIRO({N={YRi;>@cEA+d?emywyQMH-svl6h#PlI+Y{a9) zXNqr^Ev8zOdX&X%pV<8{My8?5+9AbHdL|`rxB=M1Qjo#mZ#jKe5Zweb{rPN`-=d#& zY{$+X@=Q`ROWDI#A^R#!Z_zAVN>*GD+#A#LdE2#vd_E0B{cS*WNy7R)T`{nZCCR`N zPQ$waCxIqGBmI$%C$RyNbg!HiDbjO4$U|6(K`>q}1Xf(QU5*ukMfPz{ssUaGWoXJA zAP55v1_6RxCdwt~^J;l2&<0~f1)UB}B^rs%C{-N9YeoeRLe5vEAX$-!-i;{U1gx;CkT#Io!M~#$ zf!8UrepTK8x{cka3ssaZR8{$&Dgx0#dT?E>E#ik?BpV(Ye}Q!Vzwr@v*HXZ7``98z zRShah66Wn7UHsIJq2qwzs`j47(H?Ol7!bYbK)4Hzzp?N&0CxHI9Z2Yi?%cIwtGKu3 zor}%6kD5PDE-!uCIKSAs_#xzU^b4QiLm$Q;;HUTWj_S6xxDmSNssiO1nW@8}MaOtT zn>3&u5Tm?fAP7o+Z+123VDg@VE0XZk&a7{lv@j5v@{qNs075OEG#Q1-A$4d1c%}^c zp37o^U9>!ai$Y8Y&&x1V3LdeTQu1ifdJ7cxEyy#> z1-thHfNu$ciKWxWxJ7jUg`f_sQ9!W+(v3iPMf7(AF>ohV0M!cC|B_S#Ygqd` zDQy8X_uw|XNnknZ0pH`v-!+^zIKK69KzKYtIFz0P8I_j{eth{nGxGVOM?#15$$TCP ziW6Dr=KBj+vnXDes92c>Tnd`c86D|3xtVe{lMrV`;co?^86YgN`gIYvEzXJ;(p+j) r9d)AAilWO;$s~^LS|Z+mP0sY)(VAc4-x{A^rY`GH=i1=aafk8`PSBmn literal 0 HcmV?d00001 diff --git a/config/__pycache__/__init__.cpython-310.pyc b/config/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a3381003b1daaea69e95d022f9708de8252cac52 GIT binary patch literal 142 zcmd1j<>g`k0<*PGk{p5bV-N=!FakLaKwQiMBvKfH88jLFRx%WUgb~CqL;cX=)S_bj zoXng|{h<8Bl-$Gu{ovGOeYecK^wc8#CI3Hlp%s3 zv@TSkhSq~RG|*OH4(8GNuz*^N%H7V>TndN{+*=poB)W~Y*gybd#6kupq5&My1PhUa zjc9>`h{A{tc!(}A+`Q5nx=RPEZ`W6|Te7Cfx+WW%yw+q>lQ-GWS~^(C0#ETh0m|N$ zLUfh$MWktdrmPQXUnqB{A0HP9G zLKe+5Nt5PY9zhnJHupu`+)27eLN?>P+ewblU_h2n2g(b>q?`1@(55iVBRIz0&o_qi zx6xbHQ)3F7F2rdqh4E$)0gP{K#7>M6hV#Vy&iC21*&0^PS1!(1FV5F40Wo4-(7l=`) z?ugh&6m>ehe26ftYmu^l1{r)1Q)HY$d8>~mIt{He9+*LhB7VO=)*+@1y}z+LH7!Hk zGl)1-McmFfE0-oZb6V$iWCkgBs+1LD-oKdWO#Gql8AQCPBK8?Qt5*}1NfMO(t)NP8 zr5j};43!^-Sq}Y_cr6US_M>z>BI~sN0YQ1qkBL1YD6iugvF8MTGq7Zo>yrLRltBe$ oqQ^YL^F6M=8ZXCNfmvE*$Ml5%w~zAPjSu&pHY{kz2KQh70f=S^#sB~S literal 0 HcmV?d00001 diff --git a/config/__pycache__/config.cpython-310.pyc b/config/__pycache__/config.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e9e93d7478959d8846e8baa8d4899d2ff6f229e1 GIT binary patch literal 1362 zcmb_cOHbQC5VjMO1Ou(ar3a*HZxD%kZA=U$RaK};sd$z^Ll>m&lHHIMenhrYAPxTo zdh4NoDA)GFy{BHk>u4JIaZ1<3jO{dh93DBluekVe3G0UYgs z;0jk=g(y5jRGuXnu8}MsxzdCxG9r7OB_ljXay(D+zy;t@ULg93!bd-=WQ^-Vxf&N^ z*Q!*>1Xn9caqI?Am94h+u4Gt5d$nA7-+t7H<7Tvk@!8p#Ay{-VXWK>`G}*qYC{u@4 z*|t2Lri3W^JLw&SV8;wC{xjZ5a%r+sCDD?Uo+Higpkz%`bc8UXA5aG*=+l&TAPyDM zcyHGXO+A$2G@u`W4RH!9kw=uyqC}<+i0HsWbeq|C{u%E;DjrBk`!Mgl6JaC+e+hju zFZDEMxfM5p5FFNJYFEW^Bx3=Nxyz|T(;L9JRrQ<4@DaMoUNP5>HiNcwU4~1BiDs(O z=fPQow)T)^8fF=R!DpEHR;De)F`7jek@!B4zyiC2XF>z+0?nu z(sHQufn}A^hV)zK=zP(k_xqM>L!|~<>ljeAx?N2=8-83W%^PO1*F8LELboi_LaQ&+&~_h+)3s|TUS;%;t*`MwBAK5m49@rdZFL7h?IG3k;*s-KDrQh3{9r(zwn z$yMo}h;S!_L81Fi&SF8vT2P#_q7Wj2}(tjAui*DhW7x0!Vp2O{5FD*nEvL^Whsa=}ZAEax)=8HNjv{kYz>d>mvvF@<<-Nzce5Onb&TXMtqCmt$-VED3 z=Cj?k{kzLob)xq}e*pB~&vvT}W99#==SpB^gjAE-q-dQZY?Dtq<~o ztHi%FHIxDbfnEBwn9L#V3J;tilGP1w@Ctlp2V1w$JZy2R!((xs?}#g~t**~GbeA8E zsd?DwZ3NCfd&B#0xY@?M%jfoqs~1An_EEQpgi6zU*t10FCZD~3HC79qx5!WW-YR7d z1tmpI+-GJNQ*#4iK^c$F6_;z6hd+y}zksqgkG#8VeywxKJo&lGy+1Ia%sXc%0g4WH zc*-fikF2Bq5&Pw%6H$pX6y|eodoDyd5~smQ=o(e%n$KHk5!%KPR+Eqwp z>r`;|qJ#Ul&Kd6N{2ZJ#PQofU>r{=k7V+)H=M^z7=+`{$Zr2-W>WeUvD$uePQky!4 z!^T;vzjbSo26e2hF0oPOs%}tOvi0u6i7uQjA5ThOv=6Xaw=d1&C(0dRs8NUc zXgsYWsnpny8bm>Bu2C?Wi~L1#9}SvDxgWEl4k;bXb?n#TS2cY{l$Lj;>3wL~J&1_X zI*3sv_xKGS{I(P9@i4d&x%D|9((lHUFI1HPN1Ud^k(?AX1`l3LvSP8*LQaixq!bkb z(;-2*VcsJ_rcIZ`n#z7eCCDtxv84kM3wazyThV58EfQ_vce|nam^42mK{@MJ-*s6X S-Jd`3OUf+k*(M@>L;MflOZj;K literal 0 HcmV?d00001 diff --git a/config/__pycache__/log.cpython-310.pyc b/config/__pycache__/log.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..bcceb960bc3f437240aeeafc4b560d1feb41cc78 GIT binary patch literal 1647 zcmbVM&2QT_6esm9MYdxvY16gch7BHKtcY(r6vL1r%SVCK0jw26X&8bg(w+m!>L__Z zjNR62{|Eb+!~P*&w@ZMXw%ZQF-jf|W#gOW$<&8*TK&^`1y#_fV3LdaAMMF zQDw$il1UJZ(RfsR3xXR>icE@J6fsV^{ZSa~L(3ll2!cUk8mCO>8Z)@gOl~lXn?PVG z|1=v8N8{nC_(>$!E-biq5NrgDe5YkACk)3?D#B2CVVGuolA!E|;g6FjSz7Gi<-x&W z5GXr%6+G`8ohkFM+dbXe?AqK_Yp{0JR_rB;)tsYYLr*^L-?N8m_lD5yR z#h%kn(&7coqws};DLHgeyYv9U0 z`t$@~9b~S(ArNSt8_+`qatnHs+uVWP;w}W;Q|^mb;py4&@nJW{T-|&q!v!D*(Eh3d z6l6vV?Ogwv%(Z}A(N4=y)?%U3AvR?IB+k5|N>B6QI>NF6TCA2q_8D%6?pEovx?DJb_SlW9~G zLNa?WiGRpPk#Yw&I#me@DWdcw8uLU*W#t9WCIzc53O77?*7@f2u&aD{x>g%05B$4X z;ee&|wLJR&#Y#C}EuNvT@y_JC01zzd!|&0mzGZDu{5{>!G@_?p90@*s5H}^xonTxDD55fT0 z6DB*-eZ{1E&ch7}2W;S7;vH;%0M;x%*5_(;`PjlyP;KklA|Us657Q z9-vT+0>hv{@>dLla-_gfwAY0l>ETsAy8U)9PO3tmC4i@{o4|>W{Y&g7Ls79AT<{8J zj)WCo!kW&dvvQWa5;Z@Ennj(;twA;y{p$R7Yw1+pg+Uq{YObGnW9m>N2`-GX% zDFCDId+f9}@b(w|MCMUiMoB95aAu0!3K>`NqL-Gtx=F)OjxFd#=cJlE{EU*N@}!Vy zJ{<&>7e><)te6#PZoMoW>sX&@f-&@sigj|Rv=v3E&~fWND`IH{UTX%z3Zt?~=%Kck zW-4^$m_{omD1T>q8~wZF61rp2y|rKqaF+3_@vKACI1vZ?Zcq&#WIs zX`WV5bPJE09*RC}LjZl)f)B11+y6o_yf#b-((6XSBR5-22;z#>a1JwABFHuWiRpgD zFC2+@)SM8hIp$LAzlKK(@#qKnu|-XjN9*RQ%8JBtt*m2C#sf$9Y287>S#emHs(E57 z?$Az9#@eWew%$hF5IF+yF>(QmotwyS%>EO5V~$4}KK+T4#Wz!i5wZ(>!wQfi$gUbI z2e~C`@fCYnWoygBryo|dpKCv6v>gQ?8a18v6MQ^Cxvz65(y`*lc`)232ZklX;&Fz17!R9 z93eU_^pWj;{d1zqiVELvP}1+<$0rU_@GaN@|0Ta#+`hr~jfee#OH|I|xr!niMA5vECmGFq zQFMF~XYG#O!AqKC=#OYdHM1s&RhsC$g}tGZ&wTK`p4+Srdb&#%cS&rLc%Q_56t;&f z#o`(^Tx$p&Zjz3_hV~EH)VbYAihPnzhxFfQ{sxWXwGf(!8g~1iw{Q4@AT+e@I~Yv! L^)N?0*mnK_3Z88U literal 0 HcmV?d00001 diff --git a/lib/__pycache__/__init__.cpython-310.pyc b/lib/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0579c4c5d9b81f5fcb4d4f99a2a8092b190b2f9a GIT binary patch literal 139 zcmd1j<>g`k0<*PGk{p5bV-N=!FakLaKwQiMBvKfH88jLFRx%WUgb~CqJ^j$))S_bj zoXng|{h<8Bl-$Gu{ovGOeYecK^wc7tc#?j6d}dx|NqoFsLFFwDo80`A(wtN~kU7On IK!Sw<0K-2X3jhEB literal 0 HcmV?d00001 diff --git a/lib/__pycache__/checkenv.cpython-310.pyc b/lib/__pycache__/checkenv.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..5df2c79d55d1075c5a83723e408da5c690dd737f GIT binary patch literal 3434 zcma(U?~fZtb!PUbeZHSb+ABn5TlGjSg54xgqzIyvkU|AHMO;G2B4q7(_Ri~D?>e*N zbL`sa=(Qq+REbmsl^UrwZKPBp0jdhxv{n8EKJQ1G^W{GA9YT-ycJD6Ekq@kIX5PG+ zdGqG|zHoFjOW^xib$$MoF+x7a$?&JZ_XePX90wP`YEHcLjuR+3S*RT!DC z)pT308MZ-jzv7#F2HM^<9P4;L3UR?Jbxe$t)JyvhYN*I)uT@iU<5NGPG zpKO6FjD!l;#|HOA;MCmM6t3eZVlhjl1Tv2Nv8)#L^X`gYnM8vdYJgt&_*TV*zFB*?YI{ zZ2bO~^^cXeDpJ;?qs3yg*#s$|q6(o{Eb_1!_#m{XD3Fc39*>v9THO)uwjPBEc!95t zHCKpG#5$_mk+JGt^rV=;WfWuD?LlZ1x@l+;_$HYGp)v}h{UWER_uKn+L_4hRhs2BO z##uuAs#}(p2;n?<5Wt~mSu(U7pjdH*<%eZQg3~2RjPkS#}0m~YjAEnd zhydbatksr)YF-hOux#sKbf=<4J6Q%`x2>UxeFa+dG<1wkp#y`pp;NQ_rZxqbDLMwY zES;e0f7*K<*xycodC2-OvtUcC?+@S=?T^sDFm!STJ?oP`1O0<@a|QL!)vhA7s@_q! zCJnB?p>$PgRx`b<%v49X0lT%Kx!KF1-2hgXqaBTBR@oJ+Ysj(Qc*p2X0Cn1%?2}}! zR;SY05)(g6Zp3Oda7l0vz8Oz9Ge? zJ^1#%*54`VW+-XrfXZWhBBgR3&UQ1u$fQXKp(gltescCqJ2!KFrZ&T8elT-tX0GuR zXmD`z-L-2s;BWo*ox$554u1FN!R24A-~M>*_M4xtyaIpiW7}b|%!5KT;;!#4i$dVa z;$o$E@`btchmRZ?N+jq+#f2or!|pKHKs(7Z+mK$(1;4TltO6h#wMT|_wWrca>E&*6 zsxa>?#Z1gMFhuTfwDz|T)<3y2cH1?ADWzhkl>WrokfPMWwV% zu#F&Wo&o;siL?-?CpFn=XVJBR&8Qv*5j+S>4~)C^2q#vnO< z^}hb^vFtQ8SJ-BId?!q$?Jm8=745PGOS zpfcGnl@zl|1E~K}{3`t(`MCvQO6@2e?Fj<=)sC7%5PA+>c>0kmL>!0k$L1j5aAl4> zbQ2S&xVj5R#5vrJd-K|CObZ*E@QHo!g0%e5Vg*br)}p%a$yo8hKs4b%NgXRtQRnqk z%PN$ZhivQ*+nNu_<4`&rj;Xg>TaN*4tb8Lh^D&VBlOTI@bDA+a4Uoi(QQVF4= z9-!sIp+ZQ7idCW~sAwAr@jHAa3;7G2c;lpyjy2Ekec$)q^UQdh-rfX)aekvZ`$0wM zmk2tC48awcUJ?vJM6!{Ah)k44WJpBHAYE+&gKlPp-5nY@T`;f0^nQZjXb#jwUX~V6 z8NGr0x6*=CmgW?qk{DNsM!J?&2}MYp>;ojxMufT>)N)w{br0zUZhxB-NFV73WS~Pm z2x_IQ0C#{S$w6|69FA%WS&v2qMn ziEsK8)-h!j^OWK0*5mq@AB~;$=IUDQ^{3jqkIkhQjaQ4mHy5irAFEp%wT;#Kw@Q6w zy}tRZy0y|=T5dequD`6*mMV>}l}2T){(Pyiv)vNZzQ3g8~76n>r-Zvl8V7Q%n=KMImEs(wWp?1sXuy?RtC)AwCH`GVA z_b52i&g2g$ZV}L*6-+)x^CNSfQydkt(RSC1BG7e}i3`FMVdBDwkI}U-4kzN8%%jHs zNtX8uw8*DL$c#agkQrbjY$nef-!*zVu~6|iGZIm@5PG_1Xi>yMt#xor+%H2hU5km^ z8>&L~8L>VH{-o0PppTcfE!#@paZFM$-E@X#)2)9O@Y!^>Ky0f>$J|ob)%Hb6?>Lwq vDIpEQv)3l2xTH#K00g?sy5SZ1QOgd~4@4NhRB(uI)5{V>p4gGN(j)%`Fq>Ee literal 0 HcmV?d00001 diff --git a/lib/__pycache__/identify.cpython-310.pyc b/lib/__pycache__/identify.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..2536bc7003bc2838882790fa4efd1d4de72661c3 GIT binary patch literal 2619 zcmZ`*TaOe)6t3#7zRYEpVNqm>ARrV3Cv3IIxwwIpn+3KFX z4AX{Wc{Tn4A7&nn@xS<7ulmAYz=(dQr+2fU_N30Ks#BM9{c4iAxhlhV{ntO%eyK6` zI}HwhCI)xV(r-Z|lRRRr8RsotjE$B7ZbW8Zv;-%a8CiY1Wfy%BIeoX~7JUnADy>St z+NyH)1(UXPo-pa`8LgV+E6j7B;tsa#aV-XZwhnG}k|xFSo zJFCH37c8e3!5b~hKtY*Lvr&Q{?%f#04<&RSttSbBMzb4WP5k4AHzwLGeI zVSAvO8)*`2u13}{>t4D+J__PaA|dpu+DKAGUeIDA31he{TvNW<)gl=LF(zrRh!S6F zE6jp^s?B6=L)Y5_6%2e8wEe-rv$aTrsH@#>7-2SB*MfR2d!~REvEL80wdF^{;Af^z z;JRncrLWUKrAtv5g-iEve%~J~tpuH=&kLn7zqS;Xj%^NhwcBooahSE+^W;z>4c_2Y zG?!P6bAOJG?uVhdzp_Ji?SBqBNZVOF&LL7`4zDu!luucXm?Jjk*x2J!%x@q~Zy`M= zB7^TS5{qn)Z`c%_%*ou1${x?f*c^*3rkceHYmv=H;Pv-V-opOxkixKWB?SdAV zJ+iM!ISc!yR&HmF$RbJ=kx$#&$AH8~D;K8W~%L_G3R?@D*(tGHP`2-Km zls_KNxIo#dv5HC*42UasFLIV!oQ-NEmq6K7xa>ZVGPl0BR!Y9jx0z=y zkBkR5NA|@}&hB_So~0{*Ipli?95hs*olepp0NgactF1sOJUaHwTBmeE%YyHM9nITX zAP+Ll|K)=Zq5D;|62}aLyn#TwkBz@ai~sgRdGHHSr;H>_D}3=AIz5&bF-7FRBRs=9 z0!t~bi2nJEWO!`|$1sl!AUq-od`K&SN>uloK$&8ffb7fJN}PBEXeVZ8U=Cu-gfBu1^T zs~a?3$f)|Xi|Y0%Ke5LdWRMjCEBD#b{hDqvkqxdy9El}B!TEgeovdo@0T<6 zZHOsSDV-uvqJm#Qoa*>du^NwEJ`Y+)$r2Za;D=wK5|)-dmmV*A0^4m}ZMXZ097fcy zx7(XTKblF@NnE1dCqfmX=wd}09MXy&PDL1^DDrb?X&uC6E_W;Lao4Ilg~Y2XDid{^ z2tAd$2G@1NUXvhm_T1OYnc{!b4EgE+F+96XBs^e|u(QCu0yB$q|4S9^-kKToF$E-T QfVd{~Dcn?tyB5rU0PhlBTL1t6 literal 0 HcmV?d00001 diff --git a/lib/__pycache__/ip2Region.cpython-310.pyc b/lib/__pycache__/ip2Region.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d977ef0c86d7756e42ae046e5b0dbdd26ea69cb0 GIT binary patch literal 5146 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 literal 0 HcmV?d00001 diff --git a/lib/__pycache__/ipAttributable.cpython-310.pyc b/lib/__pycache__/ipAttributable.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f4b2027a3faf61c89f9f527a59c19c3974586291 GIT binary patch literal 1550 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 V{52jEJ_^FtU~}2_L)^yHe*u!fRTTgL literal 0 HcmV?d00001 diff --git a/lib/__pycache__/req.cpython-310.pyc b/lib/__pycache__/req.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..466817714f1cb7b360082d57fbe16e9e90dc354b GIT binary patch literal 4096 zcmZ`+TaO&Y74GW$^vvwd_!cD=0pc*=*~Q=xlLUz4V6p;l2y4rtL7DVU)$aDXr+Zx8 zWA9FSB9yfvqy&)%9+8+ud4NbLiV}qg_yPG1^%`umPkBuo5%QhtU9;OyXm=o2AR~3M7A?i?oQBHy}5EAff@} zL9&<)`e>NBuqs8wU&ylLnRU?}V74yJzxTPL!Exo9dM=`2$IGh{19VRRUB zv%?B&(i3fkW#yuf4s}~F78xoR$+EKhP_we+Abrn}N6>w{HFq%=GM`K0B%XUQ zi#UEVwaI_^9f`wbD58~!49$eJ|9l)D0Fsr zV3$_C`_O9WBdys0Iv@V1FxH?q&Pro!Zb7qSYYXlVgTkb*dvCNyW?`4+nzP2ZL&kmG z++^IpY|G;q>z1s<*e&Qbo!qT&natR$b&?mqqy?5Zv)2;UINK<^jh8F?6#lrzYg@2Z z5da)0U()}=nEJ+bW{fcJ@L16(8P)`=mll=#-o{(O$R=+XPnI_Q>5~4($od6fzKFk( zbd6mzTFr%R;*fI}S}yDv_e3@T%vOO5*hYEXEV~?wT)9_;1dP;VlqA`;jubqWqFbON zF94$6?FnG60M^=xNLPy0?N8y(?=j_Zu^hp(;_Hdi#^VzJK%mcfKwO6}MTt707!ag%-R}IYnF~f~Jd#0j6CP z5=(+}#Y3T-IPdaQnQ>ov5$AAb_+*^-TT{x13lY@Nup$aoN7mWhov!Te(2CPSehu@{ zCwV_hbD^f66B|oeB>6n{Cgq@CC^yMg;GN3RWTR}c4qB=`v)&c`BF<8{e<3RvHR)e2 zKp|4zawNH~-j6&*9ZV>%0$r}*P-RDH5SZMch2)PQGua{2X71-EJHn>eggNzZ(>nfH z!wuMke$mH}K5IA=%zxGV*RZ(@1r5h@T^m2yeP~IP?f{{*WRtTIxjF!$0bsvwj-2!X zw3ytvY|4X>tkk4>X?AqUje#NWB)?*g zf>E6}#*@WVSqA~KQ5_IPbV2e!s-ys_HygS!VtHO5 zT1G|mKi*I1AdTk7k=gL=8Fs`x1m6$XG5Gosb`K;V0n{Im=l^HQ`hxyeI^au(R5Ui0^c<^Iut;QYg-@&*} zUJd_tF2Q?t11opoN#4TH`p(?kaM#SUu=O^|-Lb9)hALpkj)&E*l=+rIow9WuK<$_&|HmnjS+SJ#z+~ z5^u1P1-_Yr7R@SO)LNH^N%w1}uG#V!YW7aek>5bg*{Qh|Kg9^i;3&Ja<*Cx4AOC+ocg8WcsO>@s;hr0EP%1 z=R_we3Yk}m_AiT#YnkNv_TR8Q`4qC2FDZgnF8@5F&|E!<^e7T+vK*&eK1buc$}ksb zh@ImMsy|US&8BSntEA8Gw#<37y@-?(n~*&!oA{8bGy@p;YzAQhb+dt*&4$x^?WI|u z`+pCc#C3%+W(Dj3pC*o^qmYfG4{*TUw>+{RdG>&C9o)O~+(ufvbiTi}mwflilaI_kapIx5hqQEh zc)v*77Z*>6bf;&y+CIBb^_>{5YT?_%S}$5}M=RpVM~1;=A^PnoiLVO9PPRPdp6OCt z9!^$e`}rtc8DQ+Nc{T#b+GoL@635a2LW<)ImKRz-T(~eida=JEaRh45;~3B#NYUO= zXFd$*)Y?9?0v>MJI5YXx*VC)jj4D(G~286PAhH#(gwgD9zb zlGsL)V{1;6G~J#hXcg(B5bcH(lTRV@u@c`84*CcEx__iGEvdJ4xFSf> zp?rz5myv}{+#Y7<@7!5PJ*t8G2sLX?+(Wo^1W{ZUXDJ-%n~S~^Rfjmb=Y$RVD&DzC z>g!QxE#;>)?Ddrt{g0_B9_P^#_I@prDdKe=&fv#z9tzpB%Yy=LlvlSWTKJdkSNY$o c^!F5DHK#b?TXfB#i_R1XxuIXw0rMH_zr|qmssI20 literal 0 HcmV?d00001 diff --git a/lib/checkenv.py b/lib/checkenv.py index e2ff0d4..802f329 100644 --- a/lib/checkenv.py +++ b/lib/checkenv.py @@ -6,21 +6,26 @@ import time import requests import hashlib -from config.config import head,FingerPrint_Update -from config.data import path,logging +from config.config import head, FingerPrint_Update +from config.data import path, logging + class CheckEnv: + def __init__(self): self.pyVersion = platform.python_version() - self.path = os.path.dirname(os.path.dirname(os.path.realpath(__file__))) + self.path = os.path.dirname(os.path.dirname( + os.path.realpath(__file__))) self.python_check() self.path_check() if FingerPrint_Update: self.update() def python_check(self): - if self.pyVersion < "3.6": - logging.error("此Python版本 ('{0}') 不兼容,成功运行程序你必须使用版本 >= 3.6 (访问 ‘https://www.python.org/downloads/".format(self.pyVersion)) + if self.compare_version(self.pyVersion, "3.6") < 1: + logging.error( + "此Python版本 ('{0}') 不兼容,成功运行程序你必须使用版本 >= 3.6 (访问 ‘https://www.python.org/downloads/" + .format(self.pyVersion)) exit(0) def path_check(self): @@ -32,8 +37,8 @@ def path_check(self): logging.error(errMsg) exit(0) path.home = self.path - path.output = os.path.join(self.path,'output') - path.config = os.path.join(self.path,'config') + path.output = os.path.join(self.path, 'output') + path.config = os.path.join(self.path, 'config') path.library = os.path.join(self.path, 'library') if not os.path.exists(path.output): warnMsg = "The output folder is not created, it will be created automatically" @@ -46,27 +51,42 @@ def update(self): nowTime = time.strftime("%Y%m%d%H%M%S", time.localtime()) logging.info("正在在线更新指纹库。。") Fingerprint_Page = "https://cdn.jsdelivr.net/gh/EASY233/Finger/library/finger.json" - response = requests.get(Fingerprint_Page,timeout = 10,headers = head) - filepath = os.path.join(path.library,"finger.json") - bakfilepath = os.path.join(path.library,"finger_{}.json.bak".format(nowTime)) - with open(filepath,"rb") as file: - if hashlib.md5(file.read()).hexdigest() == hashlib.md5(response.content).hexdigest(): + response = requests.get(Fingerprint_Page, timeout=10, headers=head) + filepath = os.path.join(path.library, "finger.json") + bakfilepath = os.path.join(path.library, + "finger_{}.json.bak".format(nowTime)) + with open(filepath, "rb") as file: + if hashlib.md5(file.read()).hexdigest() == hashlib.md5( + response.content).hexdigest(): logging.info("指纹库已经是最新") is_update = False if is_update: logging.info("检查到指纹库有更新,正在同步指纹库。。。") - os.rename(filepath,bakfilepath) - with open(filepath,"wb") as file: + os.rename(filepath, bakfilepath) + with open(filepath, "wb") as file: file.write(response.content) - with open(filepath,'rb') as file: - Msg = "更新成功!" if hashlib.md5(file.read()).hexdigest() == hashlib.md5(response.content).hexdigest() else "更新失败" + with open(filepath, 'rb') as file: + Msg = "更新成功!" if hashlib.md5( + file.read()).hexdigest() == hashlib.md5( + response.content).hexdigest() else "更新失败" logging.info(Msg) except Exception as e: logging.warning("在线更新指纹库失败!") - - - - - - + def compare_version(self, ver1, ver2): + list1 = str(ver1).split(".") + list2 = str(ver2).split(".") + for i in range(len(list1)) if len(list1) < len(list2) else range( + len(list2)): + if int(list1[i]) == int(list2[i]): + pass + elif int(list1[i]) < int(list2[i]): + return -1 + else: + return 1 + if len(list1) == len(list2): + return 0 + elif len(list1) < len(list2): + return -1 + else: + return 1 \ No newline at end of file