16
16
17
17
package com .example .managedvms .cloudsql ;
18
18
19
+ import org .jasypt .util .text .BasicTextEncryptor ;
20
+
19
21
import java .io .IOException ;
20
22
import java .io .PrintWriter ;
21
23
import java .sql .Connection ;
@@ -40,27 +42,33 @@ public class CloudSqlServlet extends HttpServlet {
40
42
@ Override
41
43
public void doGet (HttpServletRequest req , HttpServletResponse resp ) throws IOException ,
42
44
ServletException {
45
+ // encrypt user ip using PBEWithMD5AndDES
46
+ BasicTextEncryptor encryptor = new BasicTextEncryptor ();
47
+ encryptor .setPassword (Double .toString (10000 * Math .random ()));
48
+ String userIp = encryptor .encrypt (req .getRemoteAddr ());
49
+
43
50
final String createTableSql = "CREATE TABLE IF NOT EXISTS visits ( visit_id INT NOT NULL "
44
51
+ "AUTO_INCREMENT, user_ip VARCHAR(46) NOT NULL, timestamp DATETIME NOT NULL, "
45
52
+ "PRIMARY KEY (visit_id) )" ;
46
53
final String createVisitSql = "INSERT INTO visits (user_ip, timestamp) VALUES (?, ?)" ;
47
54
final String selectSql = "SELECT user_ip, timestamp FROM visits ORDER BY timestamp DESC "
48
55
+ "LIMIT 10" ;
56
+
49
57
PrintWriter out = resp .getWriter ();
50
58
resp .setContentType ("text/plain" );
51
59
String url = System .getenv ("SQL_DATABASE_URL" );
52
60
try (Connection conn = DriverManager .getConnection (url );
53
61
PreparedStatement statementCreateVisit = conn .prepareStatement (createVisitSql )) {
54
62
conn .createStatement ().executeUpdate (createTableSql );
55
- statementCreateVisit .setString (1 , req . getRemoteAddr () );
63
+ statementCreateVisit .setString (1 , userIp );
56
64
statementCreateVisit .setTimestamp (2 , new Timestamp (new Date ().getTime ()));
57
65
statementCreateVisit .executeUpdate ();
58
66
try (ResultSet rs = conn .prepareStatement (selectSql ).executeQuery ()) {
59
67
out .print ("Last 10 visits:\n " );
60
68
while (rs .next ()) {
61
- String userIp = rs .getString ("user_ip" );
69
+ String savedIp = rs .getString ("user_ip" );
62
70
String timeStamp = rs .getString ("timestamp" );
63
- out .print ("Time: " + timeStamp + " Addr: " + userIp + "\n " );
71
+ out .print ("Time: " + timeStamp + " Addr: " + savedIp + "\n " );
64
72
}
65
73
}
66
74
} catch (SQLException e ) {
0 commit comments