1.1 --- a/java/HrisniciSpameri/src/java/cz/frantovo/hrisniciSpameri/DenniSouhrn.java Sat Feb 14 14:27:53 2009 +0100
1.2 +++ b/java/HrisniciSpameri/src/java/cz/frantovo/hrisniciSpameri/DenniSouhrn.java Sat Feb 14 19:31:33 2009 +0100
1.3 @@ -3,14 +3,12 @@
1.4 import cz.frantovo.hrisniciSpameri.dao.CilDAO;
1.5 import cz.frantovo.hrisniciSpameri.dao.SouhrnDAO;
1.6 import cz.frantovo.hrisniciSpameri.dto.Cil;
1.7 -import cz.frantovo.hrisniciSpameri.dto.SitovaAdresa;
1.8 import cz.frantovo.hrisniciSpameri.dto.Souhrn;
1.9 import java.io.Serializable;
1.10 import java.sql.Date;
1.11 import java.text.DateFormat;
1.12 import java.text.ParseException;
1.13 import java.text.SimpleDateFormat;
1.14 -import java.util.ArrayList;
1.15 import java.util.Collection;
1.16 import java.util.logging.Level;
1.17 import java.util.logging.Logger;
1.18 @@ -23,7 +21,6 @@
1.19
1.20 private static final long serialVersionUID = 7932392366943861342L;
1.21 private static final Logger log = Logger.getLogger(DenniSouhrn.class.getName());
1.22 - private static final long DEN = 1000 * 60 * 60 * 24;
1.23 private static String formatDataVzor = "yyyy-MM-dd";
1.24 public static DateFormat formatData = new SimpleDateFormat(formatDataVzor);
1.25 private Date den;
1.26 @@ -82,17 +79,9 @@
1.27 return cil;
1.28 }
1.29
1.30 - /**
1.31 - * Ve výchozím stavu zobrazujeme souhrn za předešlý den.
1.32 - * @return včerejšek
1.33 - */
1.34 - private static Date getVychoziDen() {
1.35 - return new Date(System.currentTimeMillis() - DEN);
1.36 - }
1.37 -
1.38 private void nastavVychoziDen() {
1.39 log.log(Level.FINE, "Nastavuji den na výchozí hodnotu.");
1.40 - setDen(getVychoziDen());
1.41 + setDen(SouhrnDAO.getVychoziDen());
1.42 }
1.43
1.44 public Collection<Souhrn> getSouhrn() {
2.1 --- a/java/HrisniciSpameri/src/java/cz/frantovo/hrisniciSpameri/GenerovaciServlet.java Sat Feb 14 14:27:53 2009 +0100
2.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
2.3 @@ -1,11 +0,0 @@
2.4 -package cz.frantovo.hrisniciSpameri;
2.5 -
2.6 -/**
2.7 - * Servlet, který vygeneruje denní souhrn.
2.8 - * Pokud pro daný den už souhr vygenerovaný byl, smaže ho.
2.9 - * Vše probíhá v jedné transakci.
2.10 - * @author fiki
2.11 - */
2.12 -public class GenerovaciServlet {
2.13 -
2.14 -}
3.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
3.2 +++ b/java/HrisniciSpameri/src/java/cz/frantovo/hrisniciSpameri/Sprava.java Sat Feb 14 19:31:33 2009 +0100
3.3 @@ -0,0 +1,33 @@
3.4 +package cz.frantovo.hrisniciSpameri;
3.5 +
3.6 +import cz.frantovo.hrisniciSpameri.dao.CilDAO;
3.7 +import cz.frantovo.hrisniciSpameri.dao.GeneratorSouhrnuDAO;
3.8 +import cz.frantovo.hrisniciSpameri.dto.Cil;
3.9 +import java.io.Serializable;
3.10 +import java.util.Collection;
3.11 +import java.sql.Date;
3.12 +
3.13 +/**
3.14 + * Beana, která vygeneruje denní souhrn.
3.15 + * Pokud pro daný den už souhr vygenerovaný byl, smaže ho.
3.16 + * Vše probíhá v jedné transakci.
3.17 + * @author fiki
3.18 + */
3.19 +public class Sprava implements Serializable {
3.20 +
3.21 + private static final long serialVersionUID = -9048188038805055786L;
3.22 +
3.23 + public boolean getGenerujSouhrn() {
3.24 + Date den = new Date(System.currentTimeMillis());
3.25 + Collection<Cil> cile = new CilDAO().getCile();
3.26 + for (Cil c : cile) {
3.27 + if (c.getId() == 1) {
3.28 + new GeneratorSouhrnuDAO().generujSouhrn(c, den);
3.29 + }
3.30 + }
3.31 +
3.32 +
3.33 +
3.34 + return true;
3.35 + }
3.36 +}
4.1 --- a/java/HrisniciSpameri/src/java/cz/frantovo/hrisniciSpameri/dao/GeneratorSouhrnuDAO.java Sat Feb 14 14:27:53 2009 +0100
4.2 +++ b/java/HrisniciSpameri/src/java/cz/frantovo/hrisniciSpameri/dao/GeneratorSouhrnuDAO.java Sat Feb 14 19:31:33 2009 +0100
4.3 @@ -1,6 +1,7 @@
4.4 package cz.frantovo.hrisniciSpameri.dao;
4.5
4.6 import cz.frantovo.hrisniciSpameri.dto.Cil;
4.7 +import java.net.InetAddress;
4.8 import java.sql.Connection;
4.9 import java.sql.Date;
4.10 import java.sql.PreparedStatement;
4.11 @@ -16,7 +17,8 @@
4.12
4.13 private enum SQL {
4.14
4.15 - VLOZ_SOUHRN
4.16 + VLOZ_SOUHRN,
4.17 + SMAZ_SOUHRNY
4.18 }
4.19
4.20 /**
4.21 @@ -24,7 +26,7 @@
4.22 * @param cil cíl, pro který generujeme souhrn
4.23 * @param den den, pro který souhrn generujeme.
4.24 */
4.25 - private void generujSouhrn(Cil cil, Date den) {
4.26 + public void generujSouhrn(Cil cil, Date den) {
4.27 Connection dbZdroj = getSpojeni(cil.getDatabaze());
4.28 Connection dbSouhrn = getSpojeni(null);
4.29
4.30 @@ -32,8 +34,18 @@
4.31 /** TODO: Chyba spojení */
4.32 } else {
4.33 PreparedStatement ps = null;
4.34 + PreparedStatement psSmazat = null;
4.35 ResultSet rs = null;
4.36 try {
4.37 + log.log(Level.SEVERE, "AUTOCOMIT: " + dbSouhrn.getAutoCommit());
4.38 + dbSouhrn.setAutoCommit(false);
4.39 +
4.40 + /** pokud už něco vygenerovaného pro daný den a cíl máme, smažeme to */
4.41 + psSmazat = dbSouhrn.prepareStatement(getSQL(SQL.SMAZ_SOUHRNY));
4.42 + psSmazat.setInt(1, cil.getId());
4.43 + psSmazat.setDate(2, den);
4.44 + psSmazat.executeUpdate();
4.45 +
4.46 ps = dbZdroj.prepareStatement(cil.getSelekt());
4.47 ps.setDate(1, den);
4.48 rs = ps.executeQuery();
4.49 @@ -46,7 +58,7 @@
4.50 */
4.51 psSouhrn.setDate(1, den);
4.52 psSouhrn.setString(2, rs.getString("ip"));
4.53 - psSouhrn.setString(3, "TODO: přeložit " + rs.getString("ip"));
4.54 + psSouhrn.setString(3, prelozIP(rs.getString("ip")));
4.55 psSouhrn.setInt(4, rs.getInt("pocet"));
4.56 psSouhrn.setInt(5, cil.getId());
4.57 psSouhrn.executeUpdate();
4.58 @@ -57,7 +69,7 @@
4.59 log.log(Level.SEVERE, "Chyba při generování souhrnu.", e);
4.60 } finally {
4.61 zavri(dbZdroj, ps, rs);
4.62 - zavri(dbSouhrn, null, null);
4.63 + zavri(dbSouhrn, psSmazat, null);
4.64 }
4.65 }
4.66 }
4.67 @@ -67,9 +79,26 @@
4.68 * @param den den, pro který souhrny generujeme.
4.69 */
4.70 public void generujSouhrny(Date den) {
4.71 + if (den == null) {
4.72 + den = SouhrnDAO.getVychoziDen();
4.73 + }
4.74 +
4.75 Collection<Cil> cile = new CilDAO().getCile();
4.76 for (Cil c : cile) {
4.77 generujSouhrn(c, den);
4.78 }
4.79 }
4.80 +
4.81 + /**
4.82 + * Přeloží IP adresu na doménu
4.83 + * @param ip IP adresa
4.84 + * @return doména
4.85 + */
4.86 + private static String prelozIP(String ip) {
4.87 + try {
4.88 + return InetAddress.getByName(ip).getHostName();
4.89 + } catch (Exception e) {
4.90 + return "Chyba: nepodařilo se přeložit.";
4.91 + }
4.92 + }
4.93 }
5.1 --- a/java/HrisniciSpameri/src/java/cz/frantovo/hrisniciSpameri/dao/GeneratorSouhrnuDAO.sql.xml Sat Feb 14 14:27:53 2009 +0100
5.2 +++ b/java/HrisniciSpameri/src/java/cz/frantovo/hrisniciSpameri/dao/GeneratorSouhrnuDAO.sql.xml Sat Feb 14 19:31:33 2009 +0100
5.3 @@ -8,4 +8,25 @@
5.4 VALUES (?,?,?,?,?)
5.5 ]]>
5.6 </entry>
5.7 + <entry key="SMAZ_SOUHRNY">
5.8 + <![CDATA[
5.9 + DELETE FROM souhrn
5.10 + WHERE cil = ?
5.11 + AND den = ?
5.12 + ]]>
5.13 + </entry>
5.14 + <entry key="UKAZKA_SELEKTU">
5.15 + <!--
5.16 + Takhle může vypadat selekt pro získání údajů z Drupalu (MySQL).
5.17 + Selekt nepíšeme sem, ale do databáze do definici cíle.
5.18 + -->
5.19 + <![CDATA[
5.20 + SELECT hostname AS ip,
5.21 + count(*) AS pocet
5.22 + FROM drupal5_watchdog
5.23 + WHERE type = 'captcha'
5.24 + AND date(from_unixtime(timestamp)) = date(?)
5.25 + GROUP BY hostname
5.26 + ]]>
5.27 + </entry>
5.28 </properties>
5.29 \ No newline at end of file
6.1 --- a/java/HrisniciSpameri/src/java/cz/frantovo/hrisniciSpameri/dao/SouhrnDAO.java Sat Feb 14 14:27:53 2009 +0100
6.2 +++ b/java/HrisniciSpameri/src/java/cz/frantovo/hrisniciSpameri/dao/SouhrnDAO.java Sat Feb 14 19:31:33 2009 +0100
6.3 @@ -25,6 +25,8 @@
6.4 SOUHRN_ZA_OBDOBI_CIL
6.5 }
6.6
6.7 + private static final long DEN = 1000 * 60 * 60 * 24;
6.8 +
6.9 /**
6.10 * Získá z databáze souhrn útoků. Buď pro konkrétní den nebo pro dané období.
6.11 * @param zacatek začátek období nebo konkrétní den
6.12 @@ -91,4 +93,12 @@
6.13
6.14 return souhrn;
6.15 }
6.16 +
6.17 + /**
6.18 + * Ve výchozím stavu zobrazujeme souhrn za předešlý den.
6.19 + * @return včerejšek
6.20 + */
6.21 + public static Date getVychoziDen() {
6.22 + return new Date(System.currentTimeMillis() - DEN);
6.23 + }
6.24 }
7.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
7.2 +++ b/java/HrisniciSpameri/web/sprava/index.jspx Sat Feb 14 19:31:33 2009 +0100
7.3 @@ -0,0 +1,14 @@
7.4 +<?xml version="1.0" encoding="UTF-8"?>
7.5 +<!--
7.6 + Document : index
7.7 + Created on : 14.2.2009, 18:46:37
7.8 + Author : fiki
7.9 +-->
7.10 +<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page" version="2.0"
7.11 + xmlns:c="http://java.sun.com/jsp/jstl/core">
7.12 +
7.13 + <jsp:useBean id="sprava" class="cz.frantovo.hrisniciSpameri.Sprava" scope="page"/>
7.14 + <c:out value="${sprava.generujSouhrn}"/>
7.15 +
7.16 +
7.17 +</jsp:root>