1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 package fr.paris.lutece.plugins.mylutece.authentication.logs;
35
36 import fr.paris.lutece.portal.service.plugin.Plugin;
37 import fr.paris.lutece.util.sql.DAOUtil;
38
39 import java.sql.Timestamp;
40
41
42
43
44 public final class ConnectionLogDAO implements IConnectionLogDAO
45 {
46
47 private static final String SQL_QUERY_SELECT_LOGIN_ERRORS = " SELECT COUNT(*) FROM mylutece_connections_log WHERE ip_address = ? AND login_status = ? "
48 + " AND date_login > ? AND date_login < ? ";
49 private static final String SQL_QUERY_INSERT_LOGS = " INSERT INTO mylutece_connections_log ( ip_address, date_login, login_status ) "
50 + " VALUES ( ?, ?, ? )";
51 private static final String SQL_UPDATE_CLEAR_LOGS = " UPDATE mylutece_connections_log SET login_status = ? WHERE ip_address = ? AND date_login > ? AND date_login < ? ";
52
53
54
55
56 @Override
57 public int selectLoginErrors( ConnectionLog connectionLog, int nIntervalMinutes, Plugin plugin )
58 {
59 int nCount = 0;
60 java.sql.Timestamp dateEnd = new java.sql.Timestamp( new java.util.Date( ).getTime( ) );
61 java.sql.Timestamp dateBegin = new java.sql.Timestamp( dateEnd.getTime( ) - ( nIntervalMinutes * 1000 * 60 ) );
62
63 try( DAOUtil daoUtil = new DAOUtil( SQL_QUERY_SELECT_LOGIN_ERRORS, plugin ) )
64 {
65 daoUtil.setString( 1, connectionLog.getIpAddress( ) );
66 daoUtil.setInt( 2, ConnectionLog.LOGIN_DENIED );
67 daoUtil.setTimestamp( 3, dateBegin );
68 daoUtil.setTimestamp( 4, dateEnd );
69
70 daoUtil.executeQuery( );
71
72 if ( daoUtil.next( ) )
73 {
74 nCount = daoUtil.getInt( 1 );
75 }
76 }
77
78 return nCount;
79 }
80
81
82
83
84 @Override
85 public void insertLog( ConnectionLog connectionLog, Plugin plugin )
86 {
87 try( DAOUtil daoUtil = new DAOUtil( SQL_QUERY_INSERT_LOGS, plugin ) )
88 {
89 daoUtil.setString( 1, connectionLog.getIpAddress( ) );
90 daoUtil.setTimestamp( 2, connectionLog.getDateLogin( ) );
91 daoUtil.setInt( 3, connectionLog.getLoginStatus( ) );
92
93 daoUtil.executeUpdate( );
94 }
95 }
96
97
98
99
100 @Override
101 public void resetConnectionLogs( String strIp, Timestamp dateLogin, int nIntervalMinutes, Plugin plugin )
102 {
103 try( DAOUtil daoUtil = new DAOUtil( SQL_UPDATE_CLEAR_LOGS, plugin ) )
104 {
105 Timestamp dateMin = new Timestamp( dateLogin.getTime( ) - ( nIntervalMinutes * 1000 * 60 ) );
106 Timestamp dateMax = new Timestamp( dateLogin.getTime( ) + ( nIntervalMinutes * 1000 * 60 ) );
107
108 daoUtil.setInt( 1, ConnectionLog.LOGIN_DENIED_CANCELED );
109 daoUtil.setString( 2, strIp );
110 daoUtil.setTimestamp( 3, dateMin );
111 daoUtil.setTimestamp( 4, dateMax );
112
113 daoUtil.executeUpdate( );
114 }
115 }
116 }