From 8c9988f47d38783ce6d5c9fbe7d056eedc99d88b Mon Sep 17 00:00:00 2001
From: Ali Akbar <aliraal12@gmail.com>
Date: Wed, 30 Nov 2016 15:01:51 +0700
Subject: [PATCH] Handler user-agent dan IP di catalog

---
 .../classes/org/IdentService/login.class      | Bin 6716 -> 5940 bytes
 .../src/java/org/IdentService/login.java      |  25 +----------
 .../org/saleproject/KAA/tokenParser.class     | Bin 1172 -> 1194 bytes
 KAA-JSP/build/web/catalog.jsp                 |  26 +++++++++++-
 KAA-JSP/build/web/login.jsp                   |   4 +-
 .../src/java/org/saleproject/KAA/GetIP.java   |  39 ++++++++++++++++++
 .../java/org/saleproject/KAA/tokenParser.java |  18 ++++----
 KAA-JSP/web/catalog.jsp                       |  26 +++++++++++-
 KAA-JSP/web/login.jsp                         |   4 +-
 9 files changed, 106 insertions(+), 36 deletions(-)
 create mode 100644 KAA-JSP/src/java/org/saleproject/KAA/GetIP.java

diff --git a/IdentService/build/web/WEB-INF/classes/org/IdentService/login.class b/IdentService/build/web/WEB-INF/classes/org/IdentService/login.class
index 277a3c5f67972f286188ac1932a28efae5576215..4bff7d5e3e6e7aa58fa413b5f7b8e0205739e2db 100644
GIT binary patch
delta 1889
zcmZWp2Xs_L6uocTO#TjRb{9xM1509q1QsL_&Ph>2^Bj)gF_c6E-4snAB)Gd^(8yvz
z1q9TO6bXn8utg-GQpAQ0dqGhI8;Tl4MNt%Cee+Y?;GX?&-u!v*zWd7j?b)09$9A3E
zx&uHq4K`4O27y%uY*?Lyk+@G{jT`sl0WBVsc*wxRSSztkV!gy85|2teCh)ic4;mz%
z&}*X`Phx|_Q+l&eqDf+tcH1oQw1Mt;M&enCEgEsFz&0a>o@g+z9nZP31J6suG{6fI
zb0l7rcuC@AiJfk|f>+&m4X;bo>h%pRb{PobO@X)c`nDGDXz{MVdj{Ue2L=Y=LxU6f
zNMg6<^RdJydfg-OsfPSaqGYec=LVD5C$Y@Hete-f8#U!GCBBmQTHqUj0|vgucLomP
z`y~8;AGOx3p$|#?B(Yp#g)ZA+iJx_VUj%+NS5QvVQJO@70|G|`eiQhei$E}j*OgUF
zk5<*zL<Eis{LvJ)my&;*z@Gxg1pX5Eo0H<W=0V3Ev)S3hH69ZPX=Wp(jZzqo;|gOj
zj*t?qsEY<GqtmK$%PK?RNJTV%+}IKQhHx;2e{e$KB;o{5UhiRJhK?<{WOzW^7BCS-
zzzH+rs>>#_F+D|gEFn1af|Uac6gl)p<ONG>%V!l>n&qg-sfqYaukt$;xk#9UMVehQ
z)CAGXpQOkjH>aUUQ71*6$z#qFmloofqGa-NT8ez+SJZ{ND(XfaMJbd@@J$KL3<YOI
ztEz)TL)8^E<)N^m?$krkX>_`xH0o)l$&}<?S`Bdi)LY>mEH#J8z!0Kzf;~MeT@g_R
z!Is`f(HYd0;EF^;(HRkbHD;8eGwCcrXDd2~_`EL@ZjdE~nToQoL{L9P{V6DDfTDqP
zuA)Jdtx$u>1aDDgZ8#bzuZWa|tE`?W%F)H4dL8gQ^8(|L8A|duWx2OFdZIT^L=oR6
zuCDG7OBd_hJ(k60C^<c|gx~2&0Z*9&0bItKvh2N>h|78Bz$8p&i(<1e`7o83tGq*F
z+Nv*~cz7(Yz?HD`esin6)<P(?FgBwM<?LI*=S7flMBo&-O5kdNN`WeYDIgZ^5iBm^
zCk`*fsTS>4_BdnN1$wn2FzQr(T>Q2g)0hv}h`AIu&GyyXnCkH^do8N_(G82R8?~6u
z$*#aIT!S#&Sj~4Xf+#1vj&J-7KJCPpeG_J~)*1V7E3QQyC)vz$7Oq1wj<DzT?CYgL
z7+|IDqZ;@u%|IrNLp^SQ6E)<+Y_@a7kVB&oV^!dMx)5_%lbFRx--w%#L<^XXuAmcX
zJoh)_7C3BuxCnDOxC5}|wpEq2)~d4BQq@#j25!UcoUyL&K6v8T2~R@x<_W~+3oH=0
zqwT+tBlBhv@kn^%SPY}1{i)_aoWGKZO=HmcOf1gC5<8_|Cw6pXOGl@2Oa18bzaUoY
znRVN*y~hsSV@IMrP$;n2*P+#SvY#I1yLffr?v}QjJ5o|({|)p~wpeBjbif)=(N;=s
zMcaUi)>0;pQ6e_M#1bY{%yIg0JbjVuzKb{TVuKE)NdRlw?@b<`x5nv+!ygDX)i^8J
z)yZpqrf>8XWY{n|(>KOa%!R1~Cu&rm?mgeFB&_A?twS!>TM@Eb9NQDgZ%rhZA(!!F
Z+1Mi+%UQFtUtgZBFe4G}Wi%UB{tLG6UpW8(

delta 2718
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

diff --git a/IdentService/src/java/org/IdentService/login.java b/IdentService/src/java/org/IdentService/login.java
index bbe0bf9..c5c2b25 100644
--- a/IdentService/src/java/org/IdentService/login.java
+++ b/IdentService/src/java/org/IdentService/login.java
@@ -160,34 +160,11 @@ public class login extends HttpServlet {
         return "Short description";
     }// </editor-fold>
     
-    private static final String[] HEADERS_TO_TRY = { 
-    "X-Forwarded-For",
-    "Proxy-Client-IP",
-    "WL-Proxy-Client-IP",
-    "HTTP_X_FORWARDED_FOR",
-    "HTTP_X_FORWARDED",
-    "HTTP_X_CLUSTER_CLIENT_IP",
-    "HTTP_CLIENT_IP",
-    "HTTP_FORWARDED_FOR",
-    "HTTP_FORWARDED",
-    "HTTP_VIA",
-    "REMOTE_ADDR" };
-    
     public String generateToken(HttpServletRequest request){
         String token;
         String user_agent = request.getParameter("user_agent");
-        String ip = getClientIpAddress(request);
+        String ip = request.getParameter("ip");
         token = tokenGenerator.nextString() + "|" + user_agent + '|' + ip;
         return token;
     }
-
-    public static String getClientIpAddress(HttpServletRequest request) {
-        for (String header : HEADERS_TO_TRY) {
-            String ip = request.getHeader(header);
-            if (ip != null && ip.length() != 0 && !"unknown".equalsIgnoreCase(ip)) {
-                return ip;
-            }
-        }
-        return request.getRemoteAddr();
-    }
 }
diff --git a/KAA-JSP/build/web/WEB-INF/classes/org/saleproject/KAA/tokenParser.class b/KAA-JSP/build/web/WEB-INF/classes/org/saleproject/KAA/tokenParser.class
index 6e50e3a5a8bca4fa92971654320dcc93e699139e..a0130494cc1ec901acfdcb72b58e81e9d8519dbc 100644
GIT binary patch
literal 1194
zcmcIiTTc@~7(K)8c4=7zD>o?!<+`nfdO?gSL4kN77A3)u_&AhJSy*?Q?N)v8ksm^Q
z@l{_+qKR+5_%Hk$#-L{w3~C>|ByO_b%zSgcIp=&cACKO?2QY{0DRf}09pfoXU{ZxC
z6VoXe7*oMkA*Vv##6=SYfy9FAyV0V6X6H5q^p#-S5$GzrzVo2*WXlO3$t{nWbUCO<
zZ&QY@TAw8KXveJ!WXnNVE!L&y)WTrbsYJ#5OH0Kl*mL}K8P=V!Bw*FlY&i^`aV;=q
zmv`k;S@fh|Ep9}i>sL#;)|7yF&VNO~h>ue`TIvXJ`LEJU=+qltB+yX_8h&(7)+1RJ
z=-h~8Wp7Q^V%a8U1k6~@>bgK`BWQ#b=Z>pfcK;xHRuNgS&?x{GS(ru9!X;c5=>Jv3
za>MnuozTJ+TvcJt!ZpkbjQplEq&z+9;g)LNPpRY9(3$7>)o3TaCS|m;Bf}*^b$d0(
z?j&Tb=J?wJGk?_A6ScgSA$z5@?Wf!AQSe<skKGC^Aq(~5)Te=$j84WgTopO8Z7}kO
z5N|kXLl<KrPFm>Z+&Tu}EYe&haSlDqsNzpN%;0!eTS&L9X^WYB6WUAM$Y+|+=k;E_
z`^5p0`<mDnVpu=G;5!(P50NM|VaAvy+M7tOar@QR4~5q}N{i{|sSl)3VhoBfN!~^J
zK9UcUeiXeJM?Y)~;3fvKj0|pLD3&|Niar#G=!34r5jViGjfnHa@`=Xy0cK3xV$~p7
zhlxl-KY}StTo7N75t+|KCNc7Fc8$NbJ4!)WQjSs9IPFf*z$ArD(e5-eIoi$BZh`V=
PXlC|5*cIebt;&7_)xqbz

literal 1172
zcmcIjZBNrs7(I9GS~kjy$eg?h<Fy-u3L-HXV#X39aVQCf#E)e(qfpzW>(n2>4<UZ>
zt9}`YCVn>l1OJLK=(!bxx(|{Vm-Kn=Jw4BT&UtS4>FnJH04uniMjE*^CNU+$w2qlH
zREemVm0?Z>Q%7D$K|ot`eK%ScP|W<UfLaOm9f7{8>pPEH&-R?~iM{6$8K?#|+uOB6
zSMJY2H9Byc0=a4s)~%-PIgKzlbZU|Huw1sH;K=c}?Xc;DB>|%$R~upQf_s5kvwCPh
zw=K{1>()*bx_-Ts?}P-zOFk8WWPF^|(NRZ&%V(2jLZ{jCB7yE&(DI`Pb~Cc;0zEsC
zT|3&c8?kI1^8$J-XLDO1y%V&;nseWkF8hBGy(k+Q=!U@x14S$tScD~z{Zqk4%k}o1
z(7;VB$*^qT7FGnt|1uW#yEy9co}Aoo(2u#$mgo5O=peo$>9TfUhh<V#b2HD;Xm+FF
z`1=A2mm2E1THeX1S?Qel#p|vp_^Dvf>?D?uLyF&;{3+nfVKDY^XE6)rWZ@LzEf)#&
zGHNksppR=wB?0}o!koeYt`d>OpLtl4xuUFzEoFVA&_?1FRtqC-D68t2dV=BiP@kS6
zS!_d#;WqR(y0$WE|I`VzV?`Vb@%r1x;u{{L#I2Xv5L_kLTxC;@ZF|`?!?wd1#1gLI
z4zeg=2<t@37>Q-BP)Y`QGBT{ADDtw*2{Nve%R9h5^0P!V+-21eJC2eu0QC%-&@m>y
z@_&~4!jn?Caao(mf3P`DF%uM)qohgNoTB(?ikzX%IodR7vp}2kG*SEyHu>SlBbxXQ
DVLjw!

diff --git a/KAA-JSP/build/web/catalog.jsp b/KAA-JSP/build/web/catalog.jsp
index 4fb9129..f6fe673 100644
--- a/KAA-JSP/build/web/catalog.jsp
+++ b/KAA-JSP/build/web/catalog.jsp
@@ -4,6 +4,8 @@
     Author     : khrs
 --%>
 
+<%@page import="org.saleproject.KAA.GetIP"%>
+<%@page import="org.saleproject.KAA.tokenParser"%>
 <%@page import="java.io.FileInputStream"%>
 <%@page import="org.kaa.marketplaceservice.service.ProcedureStatus"%>
 <%@page import="org.saleproject.KAA.RestAPI_consumer"%>
@@ -51,6 +53,29 @@
             <div class="information">
                 <span>
                     <%
+                        /* handler */
+                        String user_token = request.getParameter("token");
+                        String tokenBrowser =  tokenParser.parseBrowser(user_token);
+                        String tokenIP = tokenParser.parseIP(user_token);
+                        System.out.println(tokenBrowser+" "+tokenIP);
+                        String useragent = request.getHeader("user-agent");
+                        String userIP = GetIP.getClientIpAddress(request);
+                        System.out.println(useragent+" "+ userIP);
+                        if (!tokenBrowser.equals(useragent) || !tokenIP.equals(userIP)){
+                            String ParameterURL1 = "token=" + user_token;
+                            String APIURL1 = "http://localhost:8080/IdentService/logout?";
+                            RestAPI_consumer consumer1 = new RestAPI_consumer(APIURL1, ParameterURL1);
+                            consumer1.execute();
+                            JSONObject responseJSON1 = consumer1.getOutput();
+                            String status1 = (String) responseJSON1.get("status");
+                            if (status1.equals("OK")) {
+                                response.sendRedirect("http://localhost:8080/KAA-JSP/login.jsp?"
+                                        + "message=tokeninvalid");
+                            } else {
+                                response.sendRedirect("http://localhost:8080/KAA-JSP/catalog."
+                                        + "jsp?token=" + user_token);
+                            }
+                        }
                         JSONObject responseJSON = new JSONObject();
                         JSONObject responseJSON1 = new JSONObject();
                         org.kaa.marketplaceservice.service.MarketPlaceService_Service service = new org.kaa.marketplaceservice.service.MarketPlaceService_Service();
@@ -63,7 +88,6 @@
                         String urlRequest2 = "http://localhost:8080/ChatService/RetrieveStatus?";
 
                         /* Showing username of user */
-                        String user_token = request.getParameter("token");
                         if (request.getParameter("like") != null) {
                             String productId = request.getParameter("product_id");
                             boolean like;
diff --git a/KAA-JSP/build/web/login.jsp b/KAA-JSP/build/web/login.jsp
index 90300e5..6e5775b 100644
--- a/KAA-JSP/build/web/login.jsp
+++ b/KAA-JSP/build/web/login.jsp
@@ -1,3 +1,4 @@
+<%@page import="org.saleproject.KAA.GetIP"%>
 <%@page import="org.saleproject.KAA.RestAPI_consumer"%>
 <%@page import="org.json.simple.parser.JSONParser"%>
 <%@page import="java.net.HttpURLConnection"%>
@@ -18,8 +19,9 @@
                 String user = request.getParameter("username");
                 String pass = request.getParameter("password");
                 String userAgent = request.getHeader("user-agent");
+                String userIP = GetIP.getClientIpAddress(request);
                 String urlParameter = "username=" + user + "&password=" + pass +
-                        "&user_agent=" + userAgent;
+                        "&user_agent=" + userAgent + "&ip=" + userIP;
                 String urlRequest = "http://localhost:8080/IdentService/login?";
                 RestAPI_consumer consumer = new RestAPI_consumer(urlRequest, urlParameter);
                 consumer.executePost();
diff --git a/KAA-JSP/src/java/org/saleproject/KAA/GetIP.java b/KAA-JSP/src/java/org/saleproject/KAA/GetIP.java
new file mode 100644
index 0000000..43e5315
--- /dev/null
+++ b/KAA-JSP/src/java/org/saleproject/KAA/GetIP.java
@@ -0,0 +1,39 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package org.saleproject.KAA;
+
+import javax.servlet.http.HttpServletRequest;
+
+/**
+ *
+ * @author Ali-pc
+ */
+
+
+public class GetIP {
+    private static final String[] HEADERS_TO_TRY = { 
+    "X-Forwarded-For",
+    "Proxy-Client-IP",
+    "WL-Proxy-Client-IP",
+    "HTTP_X_FORWARDED_FOR",
+    "HTTP_X_FORWARDED",
+    "HTTP_X_CLUSTER_CLIENT_IP",
+    "HTTP_CLIENT_IP",
+    "HTTP_FORWARDED_FOR",
+    "HTTP_FORWARDED",
+    "HTTP_VIA",
+    "REMOTE_ADDR" };
+    
+    public static String getClientIpAddress(HttpServletRequest request) {
+        for (String header : HEADERS_TO_TRY) {
+            String ip = request.getHeader(header);
+            if (ip != null && ip.length() != 0 && !"unknown".equalsIgnoreCase(ip)) {
+                return ip;
+            }
+        }
+        return request.getRemoteAddr();
+    }
+}
diff --git a/KAA-JSP/src/java/org/saleproject/KAA/tokenParser.java b/KAA-JSP/src/java/org/saleproject/KAA/tokenParser.java
index 7e0880e..e289e6c 100644
--- a/KAA-JSP/src/java/org/saleproject/KAA/tokenParser.java
+++ b/KAA-JSP/src/java/org/saleproject/KAA/tokenParser.java
@@ -12,16 +12,17 @@ package org.saleproject.KAA;
 public class tokenParser {
     public static String parseBrowser(String token){
         int i = 0;
-        String result = null;
+        String result = "";
         int countHastag = 0;
         while (i < token.length()){
             char x = token.charAt(i);
+            if (x == '|'){
+                countHastag++;
+                i++;
+            }
             if (countHastag == 1){
                 result += token.charAt(i);
             }
-            if (x == '#'){
-                countHastag++;
-            }
             i++;
         }
         return result;
@@ -29,16 +30,17 @@ public class tokenParser {
     
     public static String parseIP(String token){
         int i = 0;
-        String result = null;
+        String result = "";
         int countHastag = 0;
         while (i < token.length()){
             char x = token.charAt(i);
+            if (x == '|'){
+                countHastag++;
+                i++;
+            }
             if (countHastag == 2){
                 result += token.charAt(i);
             }
-            if (x == '#'){
-                countHastag++;
-            }
             i++;
         }
         return result;
diff --git a/KAA-JSP/web/catalog.jsp b/KAA-JSP/web/catalog.jsp
index 4fb9129..f6fe673 100644
--- a/KAA-JSP/web/catalog.jsp
+++ b/KAA-JSP/web/catalog.jsp
@@ -4,6 +4,8 @@
     Author     : khrs
 --%>
 
+<%@page import="org.saleproject.KAA.GetIP"%>
+<%@page import="org.saleproject.KAA.tokenParser"%>
 <%@page import="java.io.FileInputStream"%>
 <%@page import="org.kaa.marketplaceservice.service.ProcedureStatus"%>
 <%@page import="org.saleproject.KAA.RestAPI_consumer"%>
@@ -51,6 +53,29 @@
             <div class="information">
                 <span>
                     <%
+                        /* handler */
+                        String user_token = request.getParameter("token");
+                        String tokenBrowser =  tokenParser.parseBrowser(user_token);
+                        String tokenIP = tokenParser.parseIP(user_token);
+                        System.out.println(tokenBrowser+" "+tokenIP);
+                        String useragent = request.getHeader("user-agent");
+                        String userIP = GetIP.getClientIpAddress(request);
+                        System.out.println(useragent+" "+ userIP);
+                        if (!tokenBrowser.equals(useragent) || !tokenIP.equals(userIP)){
+                            String ParameterURL1 = "token=" + user_token;
+                            String APIURL1 = "http://localhost:8080/IdentService/logout?";
+                            RestAPI_consumer consumer1 = new RestAPI_consumer(APIURL1, ParameterURL1);
+                            consumer1.execute();
+                            JSONObject responseJSON1 = consumer1.getOutput();
+                            String status1 = (String) responseJSON1.get("status");
+                            if (status1.equals("OK")) {
+                                response.sendRedirect("http://localhost:8080/KAA-JSP/login.jsp?"
+                                        + "message=tokeninvalid");
+                            } else {
+                                response.sendRedirect("http://localhost:8080/KAA-JSP/catalog."
+                                        + "jsp?token=" + user_token);
+                            }
+                        }
                         JSONObject responseJSON = new JSONObject();
                         JSONObject responseJSON1 = new JSONObject();
                         org.kaa.marketplaceservice.service.MarketPlaceService_Service service = new org.kaa.marketplaceservice.service.MarketPlaceService_Service();
@@ -63,7 +88,6 @@
                         String urlRequest2 = "http://localhost:8080/ChatService/RetrieveStatus?";
 
                         /* Showing username of user */
-                        String user_token = request.getParameter("token");
                         if (request.getParameter("like") != null) {
                             String productId = request.getParameter("product_id");
                             boolean like;
diff --git a/KAA-JSP/web/login.jsp b/KAA-JSP/web/login.jsp
index 90300e5..6e5775b 100644
--- a/KAA-JSP/web/login.jsp
+++ b/KAA-JSP/web/login.jsp
@@ -1,3 +1,4 @@
+<%@page import="org.saleproject.KAA.GetIP"%>
 <%@page import="org.saleproject.KAA.RestAPI_consumer"%>
 <%@page import="org.json.simple.parser.JSONParser"%>
 <%@page import="java.net.HttpURLConnection"%>
@@ -18,8 +19,9 @@
                 String user = request.getParameter("username");
                 String pass = request.getParameter("password");
                 String userAgent = request.getHeader("user-agent");
+                String userIP = GetIP.getClientIpAddress(request);
                 String urlParameter = "username=" + user + "&password=" + pass +
-                        "&user_agent=" + userAgent;
+                        "&user_agent=" + userAgent + "&ip=" + userIP;
                 String urlRequest = "http://localhost:8080/IdentService/login?";
                 RestAPI_consumer consumer = new RestAPI_consumer(urlRequest, urlParameter);
                 consumer.executePost();
-- 
GitLab