diff --git a/src/main/java/org/nutricraft/Model/LogModel.java b/src/main/java/org/nutricraft/Model/LogModel.java index 2e21036518e90c6841569939f7ec7c62be0ad2aa..cc527bc63d442e9c4ce65e644adb895b0b330fc9 100644 --- a/src/main/java/org/nutricraft/Model/LogModel.java +++ b/src/main/java/org/nutricraft/Model/LogModel.java @@ -10,10 +10,10 @@ public class LogModel extends Database { super(); } - public String InsertLog(String desc, String endpoint, String ip) { + public String InsertLog(String desc, String endpoint, String ip, String requested_at) { try { Statement statement = this.connection.createStatement(); - String query = "INSERT INTO logging (description, endpoint, ip) VALUES ('" + desc + "', '" + endpoint + "', '" + ip + "')"; + String query = "INSERT INTO logging (description, endpoint, IP, requested_at) VALUES ('" + desc + "', '" + endpoint + "', '" + ip + "','" + requested_at +"')"; statement.executeUpdate(query); } catch (Exception e) { e.printStackTrace(); diff --git a/src/main/java/org/nutricraft/Services/CoinServicesImpl.java b/src/main/java/org/nutricraft/Services/CoinServicesImpl.java index 335a8dbfbebec168efb53982c19ebb0972827d95..d433dca3a86c4258be35663ab656ae044259576b 100644 --- a/src/main/java/org/nutricraft/Services/CoinServicesImpl.java +++ b/src/main/java/org/nutricraft/Services/CoinServicesImpl.java @@ -2,20 +2,32 @@ package org.nutricraft.Services; import org.nutricraft.Database.Database; import org.nutricraft.Model.Coins; +import org.nutricraft.Model.LogModel; +import javax.annotation.Resource; import javax.jws.WebMethod; import javax.jws.WebService; +import javax.xml.ws.WebServiceContext; +import javax.xml.ws.handler.MessageContext; import java.sql.Connection; import java.sql.ResultSet; import java.sql.Statement; +import java.sql.Timestamp; import java.util.ArrayList; +import java.util.Date; import java.util.List; @WebService(endpointInterface = "org.nutricraft.Services.CoinServices") public class CoinServicesImpl implements CoinServices{ + @Resource + private WebServiceContext wsContext; @WebMethod public List<Coins> getAllCoins() { + if(!validateApiKey()){ + System.out.println("API KEY INVALID"); + return null; + } List<Coins> coins = new ArrayList<Coins>(); try{ Database db = new Database(); @@ -26,6 +38,7 @@ public class CoinServicesImpl implements CoinServices{ while (result.next()) { coins.add(new Coins(result.getString("id"), result.getInt("coin"))); } + log("Get All Coins"); }catch (Exception e){ e.printStackTrace(); } @@ -39,6 +52,10 @@ public class CoinServicesImpl implements CoinServices{ @WebMethod public Integer getCoins(String id) { + if(!validateApiKey()){ + System.out.println("API KEY INVALID"); + return null; + } int coin=0; try { Database db = new Database(); @@ -49,6 +66,7 @@ public class CoinServicesImpl implements CoinServices{ if(result.next()){ coin = result.getInt("coin"); } + log("Get Coins"); }catch (Exception e){ e.printStackTrace(); } @@ -57,12 +75,17 @@ public class CoinServicesImpl implements CoinServices{ @WebMethod public String addCoins(String id, int coins) { + if(!validateApiKey()){ + System.out.println("API KEY INVALID"); + return null; + } try{ Database db = new Database(); Connection connection = db.getConn(); Statement statement = connection.createStatement(); String query = "UPDATE coins SET coin = coin + " + coins + " WHERE id = '" + id + "'"; statement.executeUpdate(query); + log("Add Coins"); return "Successfully added coins"; }catch (Exception e){ e.printStackTrace(); @@ -72,12 +95,17 @@ public class CoinServicesImpl implements CoinServices{ @WebMethod public String substractCoins(String id, int coins) { + if(!validateApiKey()){ + System.out.println("API KEY INVALID"); + return null; + } try{ Database db = new Database(); Connection connection = db.getConn(); Statement statement = connection.createStatement(); String query = "UPDATE coins SET coin = coin - " + coins + " WHERE id = '" + id + "'"; statement.executeUpdate(query); + log("Substract Coins"); return "Successfully removed coins"; }catch (Exception e){ e.printStackTrace(); @@ -87,18 +115,51 @@ public class CoinServicesImpl implements CoinServices{ @WebMethod public String deleteCoins(String id) { + if(!validateApiKey()){ + System.out.println("API KEY INVALID"); + return null; + } try{ Database db = new Database(); Connection connection = db.getConn(); Statement statement = connection.createStatement(); String query = "DELETE FROM coins WHERE id = '" + id + "'"; statement.executeUpdate(query); + log("Delete Coins"); return "Successfully deleted coins"; }catch (Exception e){ e.printStackTrace(); } return "Failed to delete coins"; } - + public Boolean validateApiKey() { + MessageContext messageContext = wsContext.getMessageContext(); + String queryString = (String) messageContext.get("javax.xml.ws.http.request.querystring"); + System.out.println("messageContext: " + queryString); + String[] keyValue = queryString.split("="); + if(keyValue.length==0 || !keyValue[0].equals("APIkey")){ + return false; + } + String apiKey = keyValue[1]; + System.out.println("API KEY: " + apiKey); + if(apiKey.equals("lalala")||apiKey.equals("hahaha")){ + return true; + }else{ + return false; + } + } + public void log(String description) { + MessageContext messageContext = wsContext.getMessageContext(); + String queryString = (String) messageContext.get("javax.xml.ws.http.request.querystring"); + System.out.println("messageContext: " + queryString); + String[] keyValue = queryString.split("="); + String apiKey = keyValue[1]; + System.out.println("API KEY: " + apiKey); + String ip = "123"; + String endpoint = (String) messageContext.get("javax.xml.ws.service.endpoint.address"); + Timestamp timestamp = new Timestamp(new Date().getTime()); + LogModel logModel = new LogModel(); + logModel.InsertLog(description, endpoint, ip, timestamp.toString()); + } } diff --git a/src/main/java/org/nutricraft/Services/LevelCreatorServices.java b/src/main/java/org/nutricraft/Services/LevelCreatorServices.java index 45ca463a71bc9589f4e1824940b6ac30d7221f39..fb53c40a07db4ad49d662d25cf14dcb53bbece96 100644 --- a/src/main/java/org/nutricraft/Services/LevelCreatorServices.java +++ b/src/main/java/org/nutricraft/Services/LevelCreatorServices.java @@ -12,7 +12,7 @@ public interface LevelCreatorServices { public List<CreatorLevels> getAllLevels(); @WebMethod - public int getExp(String id); + public Integer getExp(String id); @WebMethod public String addExp(String id, int exp); diff --git a/src/main/java/org/nutricraft/Services/LevelCreatorServicesImpl.java b/src/main/java/org/nutricraft/Services/LevelCreatorServicesImpl.java index 77ecd50a77ae13741ea97c5b3f41d8887e56a1e8..005eb5eb1859558ba9b9f5e28bcbca3fd67bc6ce 100644 --- a/src/main/java/org/nutricraft/Services/LevelCreatorServicesImpl.java +++ b/src/main/java/org/nutricraft/Services/LevelCreatorServicesImpl.java @@ -3,19 +3,32 @@ package org.nutricraft.Services; import org.nutricraft.Database.Database; import org.nutricraft.Model.CreatorLevels; +import org.nutricraft.Model.LogModel; +import javax.annotation.Resource; import javax.jws.WebMethod; import javax.jws.WebService; +import javax.xml.ws.WebServiceContext; +import javax.xml.ws.handler.MessageContext; import java.sql.Connection; import java.sql.ResultSet; import java.sql.Statement; +import java.sql.Timestamp; import java.util.ArrayList; +import java.util.Date; import java.util.List; @WebService(endpointInterface = "org.nutricraft.Services.LevelCreatorServices") public class LevelCreatorServicesImpl implements LevelCreatorServices{ + + @Resource + private WebServiceContext wsContext; @WebMethod public List<CreatorLevels> getAllLevels(){ + if(!validateApiKey()){ + System.out.println("API KEY INVALID"); + return null; + } List<CreatorLevels> creator = new ArrayList<CreatorLevels>(); try{ Database db = new Database(); @@ -26,6 +39,7 @@ public class LevelCreatorServicesImpl implements LevelCreatorServices{ while (result.next()){ creator.add(new CreatorLevels(result.getString("id"),result.getInt("exp"))); } + log("Get All Levels"); }catch (Exception e){ e.printStackTrace(); } @@ -33,7 +47,11 @@ public class LevelCreatorServicesImpl implements LevelCreatorServices{ } @WebMethod - public int getExp(String id){ + public Integer getExp(String id){ + if(!validateApiKey()){ + System.out.println("API KEY INVALID"); + return null; + } int exp=0; try { Database db = new Database(); @@ -44,6 +62,7 @@ public class LevelCreatorServicesImpl implements LevelCreatorServices{ if(result.next()){ exp = result.getInt("exp"); } + log("Get Exp"); }catch (Exception e){ e.printStackTrace(); } @@ -52,12 +71,17 @@ public class LevelCreatorServicesImpl implements LevelCreatorServices{ @WebMethod public String addExp(String id, int exp){ + if(!validateApiKey()){ + System.out.println("API KEY INVALID"); + return null; + } try{ Database db = new Database(); Connection connection = db.getConn(); Statement statement = connection.createStatement(); String query = "UPDATE creatorlevels SET exp = exp + " + exp + " WHERE id = '" + id + "'"; statement.executeUpdate(query); + log("Add Exp"); return "Successfully added exp"; }catch (Exception e){ e.printStackTrace(); @@ -67,12 +91,17 @@ public class LevelCreatorServicesImpl implements LevelCreatorServices{ @WebMethod public String substractExp(String id, int exp){ + if(!validateApiKey()){ + System.out.println("API KEY INVALID"); + return null; + } try{ Database db = new Database(); Connection connection = db.getConn(); Statement statement = connection.createStatement(); String query = "UPDATE creatorlevels SET exp = exp - " + exp + " WHERE id = '" + id + "'"; statement.executeUpdate(query); + log("Substract Exp"); return "Successfully substract exo"; }catch (Exception e){ e.printStackTrace(); @@ -82,16 +111,51 @@ public class LevelCreatorServicesImpl implements LevelCreatorServices{ @WebMethod public String deleteExp(String id){ + if(!validateApiKey()){ + System.out.println("API KEY INVALID"); + return null; + } try{ Database db = new Database(); Connection connection = db.getConn(); Statement statement = connection.createStatement(); String query = "DELETE FROM creatorlevels WHERE id = '" + id + "'"; statement.executeUpdate(query); + log("Delete Exp"); return "Successfully deleted creatorlevels"; }catch (Exception e){ e.printStackTrace(); } return "Failed to delete creatorlevels"; } + + public Boolean validateApiKey() { + MessageContext messageContext = wsContext.getMessageContext(); + String queryString = (String) messageContext.get("javax.xml.ws.http.request.querystring"); + System.out.println("messageContext: " + queryString); + String[] keyValue = queryString.split("="); + if(keyValue.length==0 || !keyValue[0].equals("APIkey")){ + return false; + } + String apiKey = keyValue[1]; + System.out.println("API KEY: " + apiKey); + if(apiKey.equals("lalala")||apiKey.equals("hahaha")){ + return true; + }else{ + return false; + } + } + public void log(String description) { + MessageContext messageContext = wsContext.getMessageContext(); + String queryString = (String) messageContext.get("javax.xml.ws.http.request.querystring"); + System.out.println("messageContext: " + queryString); + String[] keyValue = queryString.split("="); + String apiKey = keyValue[1]; + System.out.println("API KEY: " + apiKey); + String ip = "123"; + String endpoint = (String) messageContext.get("javax.xml.ws.service.endpoint.address"); + Timestamp timestamp = new Timestamp(new Date().getTime()); + LogModel logModel = new LogModel(); + logModel.InsertLog(description, endpoint, ip, timestamp.toString()); + } } diff --git a/src/main/java/org/nutricraft/Services/LevelUserServices.java b/src/main/java/org/nutricraft/Services/LevelUserServices.java index 116e3955104bea123dad6b7bbc5cdab9b5e319f8..4f8cc2844eb2662257bc00a026292451aec4f01d 100644 --- a/src/main/java/org/nutricraft/Services/LevelUserServices.java +++ b/src/main/java/org/nutricraft/Services/LevelUserServices.java @@ -14,7 +14,7 @@ public interface LevelUserServices { public List<UserLevels> getAllLevel(); @WebMethod - public int getExp(int id); + public Integer getExp(int id); @WebMethod public String addExp(int id, int exp); diff --git a/src/main/java/org/nutricraft/Services/LevelUserServicesImpl.java b/src/main/java/org/nutricraft/Services/LevelUserServicesImpl.java index 22d0af29243cd294ab1c2172fded9c135a77fdac..f01711e49c836117a11b6ff7a842d08d6485606b 100644 --- a/src/main/java/org/nutricraft/Services/LevelUserServicesImpl.java +++ b/src/main/java/org/nutricraft/Services/LevelUserServicesImpl.java @@ -1,21 +1,33 @@ package org.nutricraft.Services; import org.nutricraft.Database.Database; +import org.nutricraft.Model.LogModel; import org.nutricraft.Model.UserLevels; +import javax.annotation.Resource; import javax.jws.WebService; +import javax.xml.ws.WebServiceContext; +import javax.xml.ws.handler.MessageContext; import java.sql.Connection; import java.sql.ResultSet; import java.sql.Statement; +import java.sql.Timestamp; import java.util.ArrayList; +import java.util.Date; import java.util.List; @WebService(endpointInterface = "org.nutricraft.Services.LevelUserServices") public class LevelUserServicesImpl implements LevelUserServices { + @Resource + private WebServiceContext wsContext; @Override public List<UserLevels> getAllLevel() { + if(!validateApiKey()){ + System.out.println("API KEY INVALID"); + return null; + } List<UserLevels> user = new ArrayList<UserLevels>(); try{ Database db = new Database(); @@ -26,6 +38,7 @@ public class LevelUserServicesImpl implements LevelUserServices { while (result.next()){ user.add(new UserLevels(result.getInt("id"),result.getInt("exp"))); } + log("Get All Levels User"); }catch (Exception e){ e.printStackTrace(); } @@ -33,7 +46,11 @@ public class LevelUserServicesImpl implements LevelUserServices { } @Override - public int getExp(int id) { + public Integer getExp(int id) { + if(!validateApiKey()){ + System.out.println("API KEY INVALID"); + return null; + } int exp=0; try { Database db = new Database(); @@ -44,6 +61,7 @@ public class LevelUserServicesImpl implements LevelUserServices { if(result.next()){ exp = result.getInt("exp"); } + log("Get Exp User"); }catch (Exception e){ e.printStackTrace(); } @@ -52,12 +70,17 @@ public class LevelUserServicesImpl implements LevelUserServices { @Override public String addExp(int id, int exp) { + if(!validateApiKey()){ + System.out.println("API KEY INVALID"); + return null; + } try{ Database db = new Database(); Connection connection = db.getConn(); Statement statement = connection.createStatement(); String query = "UPDATE userlevels SET exp = exp + " + exp + " WHERE id = '" + id + "'"; statement.executeUpdate(query); + log("Add Exp User"); return "Successfully added exp"; }catch (Exception e){ e.printStackTrace(); @@ -67,12 +90,17 @@ public class LevelUserServicesImpl implements LevelUserServices { @Override public String substractExp(int id, int exp) { + if(!validateApiKey()){ + System.out.println("API KEY INVALID"); + return null; + } try{ Database db = new Database(); Connection connection = db.getConn(); Statement statement = connection.createStatement(); String query = "UPDATE userlevels SET exp = exp - " + exp + " WHERE id = '" + id + "'"; statement.executeUpdate(query); + log("Substract Exp User"); return "Successfully substract exo"; }catch (Exception e){ e.printStackTrace(); @@ -82,16 +110,51 @@ public class LevelUserServicesImpl implements LevelUserServices { @Override public String deleteExp(int id) { + if(!validateApiKey()){ + System.out.println("API KEY INVALID"); + return null; + } try{ Database db = new Database(); Connection connection = db.getConn(); Statement statement = connection.createStatement(); String query = "DELETE FROM userlevels WHERE id = '" + id + "'"; statement.executeUpdate(query); + log("Delete Exp User"); return "Successfully deleted userlevels"; }catch (Exception e){ e.printStackTrace(); } return "Failed to delete userlevels"; } + + public Boolean validateApiKey() { + MessageContext messageContext = wsContext.getMessageContext(); + String queryString = (String) messageContext.get("javax.xml.ws.http.request.querystring"); + System.out.println("messageContext: " + queryString); + String[] keyValue = queryString.split("="); + if(keyValue.length==0 || !keyValue[0].equals("APIkey")){ + return false; + } + String apiKey = keyValue[1]; + System.out.println("API KEY: " + apiKey); + if(apiKey.equals("lalala")||apiKey.equals("hahaha")){ + return true; + }else{ + return false; + } + } + public void log(String description) { + MessageContext messageContext = wsContext.getMessageContext(); + String queryString = (String) messageContext.get("javax.xml.ws.http.request.querystring"); + System.out.println("messageContext: " + queryString); + String[] keyValue = queryString.split("="); + String apiKey = keyValue[1]; + System.out.println("API KEY: " + apiKey); + String ip = "123"; + String endpoint = (String) messageContext.get("javax.xml.ws.service.endpoint.address"); + Timestamp timestamp = new Timestamp(new Date().getTime()); + LogModel logModel = new LogModel(); + logModel.InsertLog(description, endpoint, ip, timestamp.toString()); + } } diff --git a/src/main/java/org/nutricraft/Services/SubscriptionServicesImpl.java b/src/main/java/org/nutricraft/Services/SubscriptionServicesImpl.java index 946e267279a0af011b93555f31227370a051a76e..257d6a42fe92de62285c8588d6449d6873e6ca9d 100644 --- a/src/main/java/org/nutricraft/Services/SubscriptionServicesImpl.java +++ b/src/main/java/org/nutricraft/Services/SubscriptionServicesImpl.java @@ -8,23 +8,32 @@ import javax.annotation.Resource; import javax.jws.WebMethod; import javax.jws.WebService; import javax.xml.ws.WebServiceContext; +import javax.xml.ws.handler.MessageContext; +import javax.xml.ws.spi.http.HttpExchange; import java.sql.*; import java.util.ArrayList; import java.util.List; +import java.util.Date; +import java.util.Map; @WebService (endpointInterface = "org.nutricraft.Services.SubscriptionServices") public class SubscriptionServicesImpl implements SubscriptionServices{ @Resource - public WebServiceContext wsContext; + private WebServiceContext wsContext; @WebMethod public String newSubscription(String idCreator, int idSubscriber){ + if(!validateApiKey()){ + System.out.println("API KEY INVALID"); + return null; + } try { Database db = new Database(); Connection connection = db.getConn(); Statement statement = connection.createStatement(); String query = "INSERT INTO subscribers (id_creator, id_user) VALUES ('" + idCreator + "', '" + idSubscriber + "')"; statement.executeUpdate(query); + log("New Subscription"); return "Successfully inserted new subscription"; } catch (Exception e) { e.printStackTrace(); @@ -33,6 +42,10 @@ public class SubscriptionServicesImpl implements SubscriptionServices{ } @WebMethod public Boolean checkSubscription(String idCreator, int idSubscriber){ + if(!validateApiKey()){ + System.out.println("API KEY INVALID"); + return null; + } try { Database db = new Database(); Connection connection = db.getConn(); @@ -40,6 +53,7 @@ public class SubscriptionServicesImpl implements SubscriptionServices{ String query = "SELECT * FROM subscribers WHERE id_creator = '" + idCreator + "' AND id_user = '" + idSubscriber + "'"; ResultSet result = statement.executeQuery(query); if (result.next()) { + log("Check Subscription"); return true; } }catch (Exception e){ @@ -50,6 +64,10 @@ public class SubscriptionServicesImpl implements SubscriptionServices{ @WebMethod public List<Integer> getSubscribers(String idCreator){ + if(!validateApiKey()){ + System.out.println("API KEY INVALID"); + return null; + } List<Integer> listSubscribers = new ArrayList<Integer>(); try { Database db = new Database(); @@ -62,6 +80,7 @@ public class SubscriptionServicesImpl implements SubscriptionServices{ System.out.println("id: " + id); listSubscribers.add(id); } + log("Get Subscribers"); }catch (Exception e){ e.printStackTrace(); } @@ -70,6 +89,10 @@ public class SubscriptionServicesImpl implements SubscriptionServices{ @WebMethod public List<String> getCreators(int idSubscriber){ + if(!validateApiKey()){ + System.out.println("API KEY INVALID"); + return null; + } List<String> listCreators = new ArrayList<String>(); try { Database db = new Database(); @@ -82,6 +105,7 @@ public class SubscriptionServicesImpl implements SubscriptionServices{ System.out.println("id: " + id); listCreators.add(id); } + log("Get Creators"); }catch (Exception e){ e.printStackTrace(); } @@ -90,7 +114,12 @@ public class SubscriptionServicesImpl implements SubscriptionServices{ @WebMethod public List<Subscibers> getAllSubscription() { + if(!validateApiKey()){ + System.out.println("API KEY INVALID"); + return null; + } List<Subscibers> listSubscribers = new ArrayList<Subscibers>(); + try { Database db = new Database(); Connection connection = db.getConn(); @@ -104,6 +133,7 @@ public class SubscriptionServicesImpl implements SubscriptionServices{ int idSubscriber = result.getInt("id_user"); listSubscribers.add(new Subscibers(id,idCreator,idSubscriber)); } + log("Get All Subscription"); } catch (Exception e) { e.printStackTrace(); @@ -114,32 +144,36 @@ public class SubscriptionServicesImpl implements SubscriptionServices{ } return listSubscribers; } - -// public Boolean validateApiKey() { -// String[] API_KEYS = { "PremiumApp", "Postman", "RestClient", "RegularApp" }; -// MessageContext mc = wsContext.getMessageContext(); -// HttpExchange exchange = (HttpExchange) mc.get("com.sun.xml.ws.http.exchange"); -// String apiKey = exchange.getRequestHeaders().getFirst("X-API-KEY"); -// if (apiKey == null) { -// return false; -// } else if (apiKey.equals(API_KEYS[0]) || apiKey.equals(API_KEYS[1]) || apiKey.equals(API_KEYS[2]) -// || apiKey.equals(API_KEYS[3])) { -// return true; -// } else { -// return false; -// } -// } + public Boolean validateApiKey() { + MessageContext messageContext = wsContext.getMessageContext(); + String queryString = (String) messageContext.get("javax.xml.ws.http.request.querystring"); + System.out.println("messageContext: " + queryString); + String[] keyValue = queryString.split("="); + if(keyValue.length==0 || !keyValue[0].equals("APIkey")){ + return false; + } + String apiKey = keyValue[1]; + System.out.println("API KEY: " + apiKey); + if(apiKey.equals("lalala")||apiKey.equals("hahaha")){ + return true; + }else{ + return false; + } + } // -// public void log(String description) { -// MessageContext msgContext = wsContext.getMessageContext(); -// HttpExchange httpExchange = (HttpExchange) msgContext.get("com.sun.xml.ws.http.exchange"); -// String ip = httpExchange.getRemoteAddress().getAddress().getHostAddress(); -// String endpoint = httpExchange.getRequestURI().toString(); -// LogModel logModel = new LogModel(); -// String apiKey = httpExchange.getRequestHeaders().getFirst("X-API-KEY"); -// String desc = apiKey + ": " + description; -// logModel.InsertLog(desc, endpoint, ip); -// } + public void log(String description) { + MessageContext messageContext = wsContext.getMessageContext(); + String queryString = (String) messageContext.get("javax.xml.ws.http.request.querystring"); + System.out.println("messageContext: " + queryString); + String[] keyValue = queryString.split("="); + String apiKey = keyValue[1]; + System.out.println("API KEY: " + apiKey); + String ip = "123"; + String endpoint = (String) messageContext.get("javax.xml.ws.service.endpoint.address"); + Timestamp timestamp = new Timestamp(new Date().getTime()); + LogModel logModel = new LogModel(); + logModel.InsertLog(description, endpoint, ip, timestamp.toString()); + } } // Database db = new Database();