-----Original Message----- From: lms-bounces@lists.lms.org.pl [mailto:lms-bounces@lists.lms.org.pl] On Behalf Of maccolo Sent: Thursday, May 08, 2008 9:47 AM To: lista użytkowników LMS Subject: [lms] skrypt do powiadomien
porusze jeszcze temat powiadomien, moglbym wykonac skrypt ktory to robi bez squida i crona, potrzebowalbym do tego skrypt ktory wyciaga z bazy danych tresc wiadomosc wpisanej do lms`a
Wrzucalem to to kiedys na grupe. Ostrzezenia generujesz np.. Modulem cutoff z lmsd. Potem tworzysz skrypcik o tej tresci: #!/bin/bash /usr/local/sbin/iptables -t nat -D WARNING -p tcp -s $1 -j REDIRECT --to-port 80 Nadajesz mu praw 700 i userowi, na którym chodzi apache pozwalasz przez sudo na odpalanie go. W daemonie tworzysz sobie instancje warn (korzystasz z modulu parser): {if (fileexists("/etc/lms/scripts/warn.daemon")) deletefile("/etc/lms/scripts/warn.daemon"); /if;} {result = SELECT inet_ntoa( nodes.ipaddr ) as ip, nodes.name, nodes.warning FROM nodes, networks WHERE networks.address = ( nodes.ipaddr & inet_aton( networks.mask ) ) AND (networks.name = "<<NAZWA SIECI>>")} {if (number(result)) for (i=0; i<number(result); i++) if (number(result[i].warning)) }/usr/local/sbin/iptables -t nat -A WARNING -s {result[i].ip} -p tcp -j REDIRECT --to-port 80\n{ /if; /for; /if}\\n /usr/local/sbin/iptables -t nat -A WARNING -j RETURN\n Na koniec modyfikujesz winietke ta z lms-squid (dokladniej message.html podmieniasz linijke do klikania oznaczajacego przeczytanie): <a href="http://<url>/index.php?readed=1&oldurl={$layout.moveurl}">{t}Click here to mark this message as readed.{/t}</a> A index.php od linijki z SMARTY ma wygladac tak: $SMARTY->assign_by_ref('layout', $layout); if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) { $forwarded_ip = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']); $nodeip = $forwarded_ip['0']; $nodeid = $LMS->GetNodeIDByIP($forwarded_ip['0']); } else { $nodeip = str_replace('::ffff:', '', $_SERVER['REMOTE_ADDR']); $nodeid = $LMS->GetNodeIDByIP($nodeip); } $customerid = $LMS->GetNodeOwner($nodeid); $nodeinfo = $LMS->GetNode($nodeid); $layout['ip'] = "sudo /etc/lms/warn $nodeip"; if (isset($_GET['readed'])) { $DB->Execute('UPDATE nodes SET warning = 0 WHERE id = ?', array($nodeid)); shell_exec("sudo /etc/lms/warn $nodeip"); header('Location: http://'.$_GET['oldurl']); } else { $customerinfo = $LMS->GetCustomer($customerid); //$layout['oldurl'] = $_GET['oldurl']; $layout['moveurl'] = $_SERVER["HTTP_HOST"].$_SERVER["REQUEST_URI"]; $SMARTY->assign('customerinfo', $customerinfo); $SMARTY->assign('nodeinfo', $nodeinfo); $SMARTY->assign('layout', $layout); $SMARTY->display('message.html'); } Oczywiście sprawdz, czy Tobie będą się zgadzac porty (u mnie router osiedlowy nie robi w zasadzie nic poza shapingiem, routowaniem wyjscia i pory pocztowym, wiec moglem sobie to na porcie 80 to postawic) -- Pozdrawiam Sarenka !DSPAM:482338ae245781886019037!