From 7b7ba10b5d9940b26d998affb94c7a52834fae06 Mon Sep 17 00:00:00 2001 From: Ziver Koc Date: Wed, 23 Nov 2016 00:50:01 +0100 Subject: [PATCH] Removed facebook support because of old api --- WebContent/WEB-INF/web_sample.xml | 8 - src/zall/Zallery.java | 66 +------ src/zall/util/facebook/FBUser.java | 120 ------------ src/zall/util/facebook/FacebookConnect.java | 204 -------------------- src/zall/util/test/FacebookTester.java | 10 - 5 files changed, 1 insertion(+), 407 deletions(-) delete mode 100644 src/zall/util/facebook/FBUser.java delete mode 100644 src/zall/util/facebook/FacebookConnect.java delete mode 100644 src/zall/util/test/FacebookTester.java diff --git a/WebContent/WEB-INF/web_sample.xml b/WebContent/WEB-INF/web_sample.xml index d8b2365..277e27c 100644 --- a/WebContent/WEB-INF/web_sample.xml +++ b/WebContent/WEB-INF/web_sample.xml @@ -29,14 +29,6 @@ DATA_PATH C:\\data - - FB_APPID - 123456789 - - - FB_APPSEC - 123456789abcdefklmnopqrst - 1 diff --git a/src/zall/Zallery.java b/src/zall/Zallery.java index 56fd512..65ad6f2 100644 --- a/src/zall/Zallery.java +++ b/src/zall/Zallery.java @@ -2,7 +2,6 @@ package zall; import java.io.File; import java.io.IOException; -import java.io.PrintWriter; import java.util.List; import java.util.logging.Level; import java.util.logging.Logger; @@ -21,13 +20,9 @@ import zall.bean.Image; import zall.bean.Media; import zall.bean.User; import zall.util.Email; -import zall.util.facebook.FBUser; -import zall.util.facebook.FacebookConnect; import zall.util.msg.UserMessage; import zall.util.msg.UserMessage.MessageType; import zutil.db.DBConnection; -import zutil.db.bean.DBBean; -import zutil.db.bean.DBBeanSQLResultHandler; import zutil.log.LogUtil; public class Zallery extends HttpServlet{ @@ -68,12 +63,6 @@ public class Zallery extends HttpServlet{ throw new ServletException("Missing DATA_PATH parameter!"); if( config.getInitParameter("THEME") != null ) THEME = config.getInitParameter("THEME"); - if( config.getInitParameter("FB_APPID") != null && - config.getInitParameter("FB_APPID") != null) - FacebookConnect.setApplicationID( - config.getInitParameter("FB_APPID"), - config.getInitParameter("FB_APPSEC")); - LogUtil.setLevel("zall", Level.FINEST); //LogUtil.setLevel("zutil", Level.FINEST); } @@ -98,27 +87,10 @@ public class Zallery extends HttpServlet{ String page = new File(request.getRequestURI()).getName(); request.setAttribute("page", page); User user = (User) session.getAttribute("user"); - FacebookConnect fbc = (FacebookConnect) session.getAttribute("facebook"); - if( fbc == null ) - fbc = FacebookConnect.getConnection( request.getCookies() ); String action = request.getParameter("action"); if( action == null ) action = ""; UserMessage msgs = UserMessage.getUserMessage(session); - - // Take care of facebook open graph - if( request.getHeader("User-Agent").startsWith("facebookexternalhit/1.1") && page.startsWith("media") ){ - PrintWriter out = response.getWriter(); - out.print(""+ - ""+ - ""+ - ""+ - ""+ - ""+ - ""+ - ""+ - ""); - return; - } + // Verify email address if( action.equalsIgnoreCase("verfemail") ){ @@ -132,35 +104,6 @@ public class Zallery extends HttpServlet{ else msgs.add(MessageType.ERROR, "Email verification failed!"); } - - // auth with facebook - if( user == null ){ - if( fbc != null ){ - FBUser fb_user = fbc.getUser(); - user = User.loadByFacebook(request, response, db, fb_user.getUID() ); - // New user? - if( user == null ){ - logger.info("Creating new user from Facebook login."); - user = new User(); - user.setFacebookUid( fb_user.getUID() ); - user.setName( fb_user.getName() ); - user.setEmail( "" ); - user.registerOnHost(request, response, db, false ); - ZalleryAjax.sendEmailNewUserToAdmin(user, db); - msgs.add(MessageType.INFO, "Your account has successfully been created. The account is waiting account activation by an admin."); - } - logger.info("Used Facebook to auth User: \""+user.getName()+"\"."); - user.registerOnHost(request, response, db, false ); - session.setAttribute("user", user); - session.setAttribute("facebook", fbc); - user.save(db); - //if( page.startsWith("login") ) - response.sendRedirect( "gallery" ); - //else - // response.sendRedirect( page ); - return; - } - } // auth with cookie if( user == null ){ user = User.loadByCookie(request, db, getCookieValue(request.getCookies(), "sessionHash") ); @@ -181,7 +124,6 @@ public class Zallery extends HttpServlet{ session.invalidate(); session = request.getSession( true ); msgs.setSession( session ); - if( fbc != null ) fbc.logout( response ); user.logout( response ); if( !user.isEmailVerified() ) @@ -199,12 +141,6 @@ public class Zallery extends HttpServlet{ String include_jsp = null; if( user != null ){ logger.finest("Valid user: \""+user.getName()+"\""); - // Register facebook on user - if( user.getFacebookUid() == null && fbc != null){ - FBUser fb_user = fbc.getUser(); - user.setFacebookUid( fb_user.getUID() ); - msgs.add(MessageType.INFO, "Facebook connected to your account."); - } // Import JSP pages if(page.startsWith("media")){ try{ diff --git a/src/zall/util/facebook/FBUser.java b/src/zall/util/facebook/FBUser.java deleted file mode 100644 index 9954aff..0000000 --- a/src/zall/util/facebook/FBUser.java +++ /dev/null @@ -1,120 +0,0 @@ -package zall.util.facebook; - -import java.io.IOException; -import java.io.InputStream; -import java.util.logging.Logger; - -import zutil.io.IOUtil; -import zutil.log.LogUtil; -import zutil.parser.DataNode; -import zutil.parser.json.JSONParser; - -/** - * This class represent a Facebook user - * - * @author Ziver - */ -public class FBUser { - private static Logger logger = LogUtil.getLogger(); - - /** This is the connection to Facebook **/ - private FacebookConnect fbc; - /** the user id of this user */ - private String uid; - - /* User data */ - private String name; - private String email; - private String birthday; - private String gender; - private String relationship_status; - private String website; - private int timezone; - private String locale; - - - public FBUser( FacebookConnect fbc, String uid ){ - this.fbc = fbc; - this.uid = uid; - - load(); - } - - /** - * Updates the data of the user in this object - */ - public void load(){ - try { - InputStream stream = fbc.getServiceURL( uid ).openStream(); - String data = IOUtil.readContentAsString( stream ); - DataNode node = JSONParser.read( data ); - - logger.finer("User("+uid+") data from Facebook: "+data); - - if( node.get("name") != null ) - name = node.get("name").getString(); - if( node.get("email") != null ) - email = node.get("email").getString(); - if( node.get("birthday") != null ) - birthday = node.get("birthday").getString(); - if( node.get("gender") != null ) - gender = node.get("gender").getString(); - if( node.get("relationship_status") != null ) - relationship_status = node.get("relationship_status").getString(); - if( node.get("website") != null ) - website = node.get("website").getString(); - if( node.get("timezone") != null ) - timezone = node.get("timezone").getInt(); - if( node.get("locale") != null ) - locale = node.get("locale").getString(); - - } catch (IOException e) { - e.printStackTrace(); - } - } - - /** - * @return The unique user id on Facebook - */ - public String getUID(){ - return uid; - } - - - public String getName(){ - return name; - } - public String getEmail(){ - return email; - } - public String getBirthday(){ - return birthday; - } - public String getGender(){ - return gender; - } - public String getRelationshipStatus(){ - return relationship_status; - } - public String getWebsite(){ - return website; - } - public int getTimezone(){ - return timezone; - } - public String getLocale(){ - return locale; - } - - /** - * Returns an instance of the given UID user class - * - * @param uid is the id of the user - * @return a cached FBUser object or a new one if its not cached - */ - public static FBUser get( FacebookConnect fbc, String uid ){ - if( uid == null ) - return null; - return new FBUser( fbc, uid ); - } -} diff --git a/src/zall/util/facebook/FacebookConnect.java b/src/zall/util/facebook/FacebookConnect.java deleted file mode 100644 index 34d045d..0000000 --- a/src/zall/util/facebook/FacebookConnect.java +++ /dev/null @@ -1,204 +0,0 @@ -package zall.util.facebook; - -import java.net.MalformedURLException; -import java.net.URL; -import java.util.logging.Logger; - -import javax.servlet.http.Cookie; -import javax.servlet.http.HttpServletResponse; - -import zutil.Hasher; -import zutil.log.LogUtil; -import zutil.parser.Base64Decoder; -import zutil.parser.DataNode; -import zutil.parser.json.JSONParser; - -/** - * This class connects to Facebook and - * retrieves information about the user - * - * @author Ziver - */ -public class FacebookConnect { - private static Logger logger = LogUtil.getLogger(); - - /** The URL to the Facebook OpenGraph service. (must end with a '/') **/ - public static final String SERVICE_URL = "https://graph.facebook.com/"; - - /** The application id for this application generated by Facebook **/ - protected static String application_id = null; - /** The application secret for this application generated by Facebook **/ - protected static String application_secret = null; - - - protected String access_token; - protected FBUser user; - - private FacebookConnect( String access_token, String uid ){ - this.access_token = access_token; - user = FBUser.get( this, uid ); - } - - /** - * @return the main user - */ - public FBUser getUser(){ - return user; - } - - /** - * Returns the given user by UID - * - * @param uid is the user id of the user - * @return a FBUser object or null if there is no such user - */ - public FBUser getUser(String uid){ - return FBUser.get( this, uid ); - } - - /** - * @return The access token for this session - */ - protected String getAccessToken(){ - return access_token; - } - - /** - * Generates a url for calling the Facebook OpenGraph API - * - * @param page is the page ex. a UID - * @return A URL to the service - * @throws MalformedURLException - */ - protected URL getServiceURL(String page) throws MalformedURLException{ - return getServiceURL(page, null); - } - - /** - * Generates a url for calling the Facebook OpenGraph API - * - * @param page is the page ex. a UID - * @param params is URL parameters ex. "?name=lol" or "&name=lol&lol=name" or "name=lol" etc... - * @return A URL to the service - * @throws MalformedURLException - */ - protected URL getServiceURL(String page, String params) throws MalformedURLException{ - StringBuilder url = new StringBuilder( SERVICE_URL ); - url.append( page ); - url.append( '?' ); - url.append( "access_token=" ); - url.append( access_token ); - - if( params != null && !params.isEmpty() ){ - if( params.charAt(0) == '?' ) - params = params.substring( 1 ); - if( params.charAt(0) != '&' ) - url.append( '&' ); - - url.append( params ); - } - return new URL( url.toString() ); - } - - /** - * Sets the static values for this application - * @param id is the application id for this application generated by Facebook - * @param secret is the application secret for this application generated by Facebook - */ - public static void setApplicationID(String id, String secret){ - application_id = id; - application_secret = secret; - } - - public static String getAplicationId() { - return application_id; - } - - /** - * Creates a new instance of the FacebookConnect for the logged in user - * or null if the creation was unsuccessful. - * - * @param cookies is the cookies from the client - * @return A new FacebookConnect object or null if the creation was unsuccessful - */ - public static FacebookConnect getConnection( Cookie[] cookies ){ - if( cookies == null ){ - logger.severe("Cookie is not set!"); - return null; - } - - String cookie_name = "fbsr_" + application_id; - // Find the cookie - for(Cookie cookie : cookies) { - if ( cookie_name.equals(cookie.getName()) ){ - // remove the trailing " - String value = cookie.getValue(); - return getConnection( value ); - } - } - return null; - } - - /** - * Creates a new instance of the FacebookConnect for the logged in user - * or null if the creation was unsuccessful. - * - * @param value is the string value from facebook - * @return A new FacebookConnect object or null if the creation was unsuccessful - */ - public static FacebookConnect getConnection( String value ){ - if( application_id == null ){ - logger.severe("Application_id is not set!"); - return null; - } - if( application_secret == null ){ - logger.severe("Application_secret is not set!"); - return null; - } - - value = value.trim(); - if( value.isEmpty() ) - return null; - value = value.replaceAll("-", "+"); - value = value.replaceAll("_", "/"); - - // Parse the attributes - String[] attrib = value.split("\\.", 2); - String signature = Base64Decoder.decodeToHex( attrib[0] ); - System.out.println( signature ); - //attrib[1] = Base64Decoder.addPadding( attrib[1] ); - String data = Base64Decoder.decode( attrib[1] ); - DataNode map = JSONParser.read( data ); - System.out.println(map); - - if ( !map.getString("algorithm").equalsIgnoreCase("HMAC-SHA256") ) { - logger.severe("Unknown algorithm: '"+map.getString("algorithm")+"' Expected 'HMAC-SHA256'"); - return null; - } - // Check hash signature - String local_sig = Hasher.HMAC_SHA256( attrib[1], application_secret ); - System.out.println(local_sig); - if ( !signature.equals( local_sig )) { - logger.severe("Bad Signed JSON signature: '"+signature+"' Expected '"+local_sig+"'"); - return null; - } - - //if( map.containsKey( "access_token" ) ) - // return new FacebookConnect( map.get( "access_token" ), map.get( "uid" ) ); - //return null; - return null; - } - - /** - * This method remove the cookie from the user by setting the MaxAge to -1 - * - * @param response is the response that the cookie will be added to - */ - public void logout(HttpServletResponse response) { - Cookie cookie = new Cookie( "fbsr_" + application_id, null); - cookie.setMaxAge( 0 ); - cookie.setPath("/"); - response.addCookie( cookie ); - } - -} diff --git a/src/zall/util/test/FacebookTester.java b/src/zall/util/test/FacebookTester.java deleted file mode 100644 index 549f9f5..0000000 --- a/src/zall/util/test/FacebookTester.java +++ /dev/null @@ -1,10 +0,0 @@ -package zall.util.test; - -import zall.util.facebook.FacebookConnect; - -public class FacebookTester { - public static void main(String[] args){ - FacebookConnect.setApplicationID("110543555676926", "5b2dd75314a2fd58b080b06a19b55713"); - FacebookConnect.getConnection("rZtSPvnBVqNi8hnjJuIffghIvQdq56yaLh1FiP-KybQ.eyJhbGdvcml0aG0iOiJITUFDLVNIQTI1NiIsImNvZGUiOiJBUUJnR3ZtNzVfLXIyVU9iSU4wdnJ4N2pMYVRicVpLdVprdE1xQXVWMHBxUjZMcGkzTDJXVEtYV3BxQmJ5MjByX1pnSFo1dDJLX3lGTENFRTJ3Sko1ek8tbHU2Z3Eyb2xfaDB4WGNneW9OTHNRODBsR2tpMG1hVFdSV083a2VfOUlPb0puYkVqajVSdnhyYW03UW9DOHRkRUEtS2NRZE1DUmptd1kzeHNSNFVsUDBuOE9fblFLa1RUbldYNjY0XzR5UEUiLCJpc3N1ZWRfYXQiOjEzMzU3OTQ4MDcsInVzZXJfaWQiOiIxMTg3MDk1NTIyIn0"); - } -}