From 447b8b4fbe99d4a8eee9e007372c2b4dde8fc42f Mon Sep 17 00:00:00 2001 From: Sascha Leib Date: Sun, 26 Oct 2025 09:14:45 +0100 Subject: [PATCH] SessionId fix --- action.php | 15 +++++++++------ admin.css | 1 + config/known-ipranges.json | 2 ++ img/captcha.png | Bin 2705 -> 2740 bytes img/idtyp.png | Bin 3855 -> 4186 bytes 5 files changed, 12 insertions(+), 6 deletions(-) diff --git a/action.php b/action.php index be451e2..a14e347 100644 --- a/action.php +++ b/action.php @@ -23,9 +23,8 @@ class action_plugin_botmon extends DokuWiki_Action_Plugin { global $ACT; - // initialize the session id and type with random data: - $this->sessionId = rand(1000000, 9999999); - $this->sessionType = 'rnd'; + // populate the session id and type: + $this->setSessionInfo(); // insert header data into the page: if ($ACT == 'show' || $ACT == 'edit' || $ACT == 'media') { @@ -62,8 +61,6 @@ class action_plugin_botmon extends DokuWiki_Action_Plugin { global $INFO; - // populate the session id and type: - $this->getSessionInfo(); // build the tracker code: $code = $this->getBMHeader(); @@ -178,7 +175,7 @@ class action_plugin_botmon extends DokuWiki_Action_Plugin { return $country; } - private function getSessionInfo() { + private function setSessionInfo() { // what is the session identifier? if (isset($_SESSION)) { @@ -199,6 +196,12 @@ class action_plugin_botmon extends DokuWiki_Action_Plugin { $this->sessionId = $_SERVER['REMOTE_ADDR']; $this->sessionType = 'ip'; } + + if (!$this->sessionId) { /* if all fails, use random data */ + $this->sessionId = rand(100000000, 999999999); + $this->sessionType = 'rnd'; + } + } public function showCaptcha(Event $event) { diff --git a/admin.css b/admin.css index d8dad0e..8b15ce9 100644 --- a/admin.css +++ b/admin.css @@ -363,6 +363,7 @@ &.typ_php::before { background-position-y: -40px } &.typ_ip::before { background-position-y: -60px } &.typ_usr::before { background-position-y: -80px } + &.typ_rnd::before { background-position-y: -100px } /* External link icons */ &.extlink::before { background-image: url('img/links.png') } diff --git a/config/known-ipranges.json b/config/known-ipranges.json index 4e955cb..68dcf4f 100644 --- a/config/known-ipranges.json +++ b/config/known-ipranges.json @@ -20,6 +20,7 @@ {"id": "zenlayer", "name": "Zenlayer"} ], "ranges": [ + {"from": "1.92.0.0", "to": "1.95.255.254", "m": 14, "g": "huawei"}, {"from": "3.0.0.0", "to": "3.255.255.254", "m": 8, "g": "amazon"}, {"from": "5.161.0.0", "to": "5.161.255.255", "m": 16, "g": "hetzner"}, {"from": "8.128.0.0", "to": "8.191.255.254", "m": 10, "g": "alibaba"}, @@ -67,6 +68,7 @@ {"from": "138.121.0.0", "to": "138.121.225.254", "m": 16, "g": "misc_sa"}, {"from": "142.147.128.0", "to": "1142.147.255.254", "m": 17, "g": "w2obj"}, {"from": "146.174.128.0", "to": "146.174.191.254", "m": 18, "g": "huawei"}, + {"from": "149.232.128.0", "to": "149.232.159.254", "m": 19, "g": "huawei"}, {"from": "150.40.128.0", "to": "150.40.255.254", "m": 17, "g": "huawei"}, {"from": "159.138.0.0", "to": "159.138.225.254", "m": 16, "g": "huawei"}, {"from": "162.128.0.0", "to": "162.128.255.254", "m": 16, "g": "zenlayer"}, diff --git a/img/captcha.png b/img/captcha.png index 6e43e46b9398dcd2ce6643325e4fcffc6b4cd08f..f101af1f226a35bd40e4cd2453def0b4f18378b4 100644 GIT binary patch delta 2495 zcmV;w2|)Id6|@zQNeUtW02U$v8y13(kyBOy0+Fg83q>*l0O$h%07Wtak!Z~X z(SomAYprF*i&GtkapDa2X;F)`V70bdsM9(_4Tz4hr2^YmgyL<25kpIk|Z};4DzW<(ovuD5aofFRUQewf~%SvQECVoeJt9YOI#OkGsdt~#X zsDK=gl9?~!xSFyM-Vm3Izm(7+Qxbs@kdsSfmWoSM@surln@mRhx;U0Hp-=q1ctre) zc##O+6dx1sSNngN5(_8rgv`z2Kg79+sO%fM{<#Q_iw}zr>9_W&iOJoiQg4xQD*VH+RP5#ffadCoFoP! zvZ}wIL2H@g=PGiswdTu?3ba`}-P&^zxx(5# z{1X+}VQnA)hA8q*YZC=r531zA#UFz-BDyb=`M7`Qe^XI`|BA1Oe3eAc9HbDLD-tA6 zh-)aw5s(9B(GUGQ?+!H{Z?6Ls5qXQXt5vUyi)atP??m1Oq4@iM6hx6vMCHHL^|!=_ zM1vsMg`vuykas=32d*eW`< zf*|CYvZ6>Uz*Hp!bXsyvSy7}BIHec%Z&~&TOj$VJmKDui!vaB06oH9~!fDa ziz4t97H~O#Q5ZzetGUn<-zHXAx;0>?$lf7}1J>pUxQrr<200@nBtpNDAT;=QIS71( z1zb)PMw;oEG)#f7Vm&xlB=%st$e0fohsAggG@jiu_5NLe8P*oUG;1B|tuKRUG#w$s z{AN{h;EUbrU&e5~NCb9Z2RcOpY-w!cT$*k~y?}m&;a=y}D8-(A11Njgs%TPg^ z)&AumVgh;scJr(YCV5Q>vzFMlIY{aOBFt@e{*Rl2!l2GAwoMF)0zeH|0ts*&DVWVf z1WX2gBk<+TE)p00DD>iakWY%_LUc_*?2|#S&+~^l_;IA3k3~Bv0MP4$;Yk>Fhw0N)TacW~QD3HxC@5w(M z*d>yKKCT8qY{@}3GgAM4K_q9LN|D7{wJ|w=R#>1_|JI18|43Y~N`uR&@60^_4hBWD z8T{0VY#kQpNmUpgW)D25vKwT5P?t8ejUexb76H4)zl#$siLjhD z7DaJ^Y=-SDyGe$n-_W0)yX>$PM4BGBI)h(r{qhZBotXUcLl}y{C3@nD2#copVF8za z7mcx&;bAk^?BAI8K%Fq#RmYqyS-7?Z^P;P)1#J3Abn}6;A?i4|W1z&W!WD+kiqhvQxLnzu?(WYjzD*h$R?Wcg+b*! zxJGOj+2L1+cWU|)!wkYb07Ol48!Fy^u8L%6bHv37WOchEhwuItkO+j|Q*-6}MX$Z%)t5JJX)Zt0+egSYzCdgy%$inz-DRB*3Ds4V z*U;A921qs43SoUmyVuaM+up@7ECHNn8`pVD8lUsF9N@G$j&l}p&d&}Ec(W#4=GBbn zFgT8L5(qoLZsO(M10S5{jVKGxmqCODOkQ-lyT=5s&eJEo!`<-%twPRSTOlzoG6xt3 z4j(-a=L`S*l;I&=I~03=^4AX?ao<(`wB=aWi7`jIPkYCDy1ji}$Gk-iYm7*mVL5){ zq|5B`pBL#vshTo+T<^nmH+dJ8UtmP$uY0nnbA8plYD)|Qi9H}a;co#KzR=S4;?!{! zo)bBE>O|2O`a*LX@rOT3kXyxjpxD7lqB$>W*|qn|-rm0Mut*_)=hSW4z1Qv0>a8z> za1Q{xme<7bf8E+*LNg+(=6*J>b71QdRcY(~Cxbywa@*3lp>M{VI;PDHhmUtvUOZ}K zlh%MqV@Hhg%1WZo;$z32j;&jF>}GwS!d-g$&E^M-q*k04k!+RyWpi`w?vDL0o6-dA z`p^ERjhmY}cB5;5w27S;#nN;2;;ec>rpA~~-?RVqG2J~qn<^{DPbe)ZF=N!**Wc6l z(zZ>TT6Yq4S=m@iZr0PM&x^DG;fzd;V*}7xTYbeYE?V1Pd6&$kTnij8d`Zp|4@U9| z0Ey5;GC2O%M|i~ooFTDiULohh%ZsegJdp$pn7pWvV;`Ot_kZKslpK+13o`%!002ov JPDHLkV1jm((W3wW delta 2459 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