From 13505318b1d71de2fa599e53d8d113144f4a0dfd Mon Sep 17 00:00:00 2001 From: Björn Hagemeister Date: Wed, 8 Oct 2014 14:54:52 +0200 Subject: Implemented publishUser(sessionId, UserInfo) in ApiServer. Plus added method for inserting user into user database with given UserInfo. --- config/global.properties.example | 76 ---------------------- .../java/org/openslx/imagemaster/db/DbUser.java | 8 +++ .../org/openslx/imagemaster/server/ApiServer.java | 14 +++- .../thrift/server/ImageServerHandler.java | 1 + 4 files changed, 20 insertions(+), 79 deletions(-) delete mode 100644 config/global.properties.example diff --git a/config/global.properties.example b/config/global.properties.example deleted file mode 100644 index 238db02..0000000 --- a/config/global.properties.example +++ /dev/null @@ -1,76 +0,0 @@ -# fill in properties and rename to global.properties - -##################### -# Main # -##################### - -# the dir where the images are stored -image_dir=/tmp - -##################### -# LDAP # -##################### - -# the port of the LDAP server -ldap_port=636 - -# the host address of the LDAP server -ldap_host=bwservices-test.vm.uni-freiburg.de - -# SSL usage -ldap_ssl=true - -# bind query (don't forget to escape \= and use a % for the username replacement -ldap_bind_query=uid\=%,ou\=users,dc\=bwlehrpool,dc\=uni-freiburg,dc\=de - -# search baseDn -ldap_search_base_dn=ou\=users,dc\=bwlehrpool,dc\=uni-freiburg,dc\=de - -# search filter (use a % for the username replacement -ldap_search_filter=(&(objectclass\=person)(|(uid=%)(cn=%))) - -# ldap keystore with public key -ldap_keystore_path=./config/ldap.jks -ldap_keystore_password=changeit - -##################### -# Session # -##################### - -# session timeout for users (in seconds) -session_timeout_user=600 - -# session timeout for servers (in seconds) -session_timeout_server=600 - -##################### -# Ssl Socket # -##################### - -# port that is used for data connection between satellite and master -ssl_socket_port=56456 - -# timeout for kicking idling clients (in minutes) -ssl_socket_timeout=1 - -# keystore (.jks format) -ssl_keystore_file=./config/sslsocket.jks - -# keystore alias -ssl_keystore_alias=alias - -# keystore password -ssl_keystore_password=password - -# how often should the masterserver request a block -# from the satellite if the check sum fails -# until an error is sent -ssl_socket_transmit_times=20 - -##################### -# CRC Scheduling # -##################### - -# how often will the crc scheduler check the crc sums of uploading images in seconds -# minimum of 60 s recommended -crc_scheduling_interval=60 \ No newline at end of file diff --git a/src/main/java/org/openslx/imagemaster/db/DbUser.java b/src/main/java/org/openslx/imagemaster/db/DbUser.java index 46c5130..1806f1d 100644 --- a/src/main/java/org/openslx/imagemaster/db/DbUser.java +++ b/src/main/java/org/openslx/imagemaster/db/DbUser.java @@ -81,6 +81,14 @@ public class DbUser extends User user.login, user.password, user.organizationId, user.firstName, user.lastName, user.eMail ); return false; } + + public static boolean insertOrUpdate(UserInfo userInfo) { + log.debug( "Inserted user '" + userInfo.userId + "' into db." ); + int ret = MySQL.update( + "INSERT INTO user (organizationid, firstname, lastname, email) VALUES (?, ?, ?, ?)", + userInfo.organizationId, userInfo.firstName, userInfo.lastName, userInfo.eMail ); + return (ret != 0); + } public static List findUser( String organizationId, String searchTerm ) { diff --git a/src/main/java/org/openslx/imagemaster/server/ApiServer.java b/src/main/java/org/openslx/imagemaster/server/ApiServer.java index 1323ec6..ada6a21 100644 --- a/src/main/java/org/openslx/imagemaster/server/ApiServer.java +++ b/src/main/java/org/openslx/imagemaster/server/ApiServer.java @@ -164,10 +164,18 @@ public class ApiServer return ( ServerSessionManager.getSession( serverSessionId ) != null ); } - public static boolean publishUser( String serverSessionId, UserInfo user ) + public static boolean publishUser( String serverSessionId, UserInfo user ) throws AuthorizationException { - // TODO - return false; + // Check session. + if (SessionManager.getSessionFromSessionId( serverSessionId ) == null) { + throw new AuthorizationException( AuthorizationError.NOT_AUTHENTICATED, "Session ID not valid" ); + } + if (DbUser.forLogin( user.userId ) == null) { + // User not known by server. Insert into server database. + return DbUser.insertOrUpdate( user ); + } + // Else user is already known by server. Do nothing. + return true; } public static List findUser( String sessionId, String organizationId, String searchTerm ) throws AuthorizationException diff --git a/src/main/java/org/openslx/imagemaster/thrift/server/ImageServerHandler.java b/src/main/java/org/openslx/imagemaster/thrift/server/ImageServerHandler.java index 3b8ebec..d28c736 100644 --- a/src/main/java/org/openslx/imagemaster/thrift/server/ImageServerHandler.java +++ b/src/main/java/org/openslx/imagemaster/thrift/server/ImageServerHandler.java @@ -88,6 +88,7 @@ public class ImageServerHandler implements ImageServer.Iface @Override public boolean publishUser( String serverSessionId, UserInfo user ) + throws AuthorizationException { return ApiServer.publishUser( serverSessionId, user ); } -- cgit v1.2.3-55-g7522