Package ch.rswk.meta.engine.ws
Class EngineWebSocketController
java.lang.Object
ch.rswk.meta.engine.ws.EngineWebSocketController
EngineWebSocketController is a service facade for the WebSocket API. Enforces access control with
UserService
.-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic final record
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final ActionService
private static final Protocol.ErrorReplyFactory
private static final Protocol.ErrorReplyFactory
private final AtomicBoolean
private String
private final String
private final FileService
private String
private boolean
private final org.slf4j.Logger
private final LoggingService
private final MetaService
private static final Protocol.ErrorReplyFactory
private final EngineRuntime
private SubscriptionRequest
private final org.eclipse.jetty.util.thread.QueuedThreadPool
private String
private String
private final UserService
private String
-
Constructor Summary
ConstructorsConstructorDescriptionEngineWebSocketController
(EngineRuntime runtime, org.eclipse.jetty.util.thread.QueuedThreadPool threadPool, ActionService actionService, FileService fileService, LoggingService loggingService, MetaService metaService, UserService userService, EngineWebSocketController.EngineWebSocketControllerConfig config) -
Method Summary
Modifier and TypeMethodDescriptionprivate <T> com.google.common.util.concurrent.ListenableFuture
<T> allowIfAdmin
(Supplier<com.google.common.util.concurrent.ListenableFuture<T>> f) private <T> com.google.common.util.concurrent.ListenableFuture
<T> allowIfHasPermission
(Supplier<com.google.common.util.concurrent.ListenableFuture<T>> f, MetaGrantKeys key, int permission) private <T> com.google.common.util.concurrent.ListenableFuture
<T> allowIfIsAuth
(Supplier<com.google.common.util.concurrent.ListenableFuture<T>> f) com.google.common.util.concurrent.ListenableFuture
<AuthReply> auth
(AuthRequest request) com.google.common.util.concurrent.ListenableFuture
<AuthTokenReply> authToken
(AuthTokenRequest request) protected com.google.common.util.concurrent.ListenableFuture
<BackupReply> backup
(BackupRequest request) protected com.google.common.util.concurrent.ListenableFuture
<BackupRestoreReply> backupRestore
(BackupRestoreRequest request) clientId()
protected com.google.common.util.concurrent.ListenableFuture
<UserConfigSearchReply> configSearch
(UserConfigSearchRequest request) protected com.google.common.util.concurrent.ListenableFuture
<UserConfigWriteReply> configWrite
(UserConfigWriteRequest request) protected void
protected void
protected com.google.common.util.concurrent.ListenableFuture
<DownloadReply> download
(DownloadRequest request, Function<ByteBuffer, com.google.common.util.concurrent.ListenableFuture<Void>> sink) protected com.google.common.util.concurrent.ListenableFuture
<ExecuteReply> execute
(ExecuteRequest request) protected com.google.common.util.concurrent.ListenableFuture
<FileDeleteReply> fileDelete
(FileDeleteRequest request) protected com.google.common.util.concurrent.ListenableFuture
<FileSearchReply> fileSearch
(FileSearchRequest request) private com.google.common.util.concurrent.ListenableFuture
<FileSearchReply> private UserGroupSearchReply
private com.google.common.util.concurrent.ListenableFuture
<SearchReply> filterAuthorizedMetas
(SearchReply reply) protected com.google.common.util.concurrent.ListenableFuture
<ClientListReply> getClientList
(ClientListRequest request) com.google.common.util.concurrent.ListenableFuture
<ServiceInfoReply> protected com.google.common.util.concurrent.ListenableFuture
<UserGroupSearchReply> groupSearch
(UserGroupSearchRequest request) protected com.google.common.util.concurrent.ListenableFuture
<UserGroupWriteReply> groupWrite
(UserGroupWriteRequest request) protected com.google.common.util.concurrent.ListenableFuture
<UserGroupWriteUpdateReply> private com.google.common.util.concurrent.ListenableFuture
<Boolean> hasPermission
(int permission, String... keys) protected boolean
isAuth()
private com.google.common.util.concurrent.ListenableFuture
<Boolean> isAuthorizedForMetaLog
(MetaLog metaLog) private com.google.common.util.concurrent.ListenableFuture
<Boolean> isAuthorizedToWrite
(WriteAction action, Meta meta) private boolean
isDeniedAnyOf
(List<Boolean> permissionResult) protected void
log
(LoggingMessage message) protected com.google.common.util.concurrent.ListenableFuture
<LoggingDeleteReply> loggingDelete
(LoggingDeleteRequest request) protected com.google.common.util.concurrent.ListenableFuture
<LoggingEntrySearchReply> protected com.google.common.util.concurrent.ListenableFuture
<LoggingMetricSearchReply> protected com.google.common.util.concurrent.ListenableFuture
<LoggingMetricTimeReply> protected com.google.common.util.concurrent.ListenableFuture
<LoginReply> login
(LoginRequest request) protected com.google.common.util.concurrent.ListenableFuture
<LogoutReply> logout
(LogoutRequest request) private void
private void
void
onNotification
(Event notification) void
onUserWriteNotification
(UserService.UserWriteNotification notification) com.google.common.util.concurrent.ListenableFuture
<PingReply> ping
(PingRequest request) protected void
postClientNotification
(ClientNotification clientNotification) static boolean
receivesMetaNotification
(MetaNotification notification, SubscriptionRequest subscription) receivesNotification
(Event notification, SubscriptionRequest subscription) private Optional
<ErrorReplyException> recordAndCheckFailedAttempts
(String source) private ErrorReplyException
protected com.google.common.util.concurrent.ListenableFuture
<RecoverUserReply> recoverUser
(RecoverUserRequest request) protected com.google.common.util.concurrent.ListenableFuture
<ResetPasswordReply> resetPassword
(ResetPasswordRequest request) private UserSearchReply
sanitizeUsers
(UserSearchReply reply) protected com.google.common.util.concurrent.ListenableFuture
<SearchReply> search
(SearchRequest request) protected com.google.common.util.concurrent.ListenableFuture
<SubscriptionReply> subscribe
(SubscriptionRequest request) protected com.google.common.util.concurrent.ListenableFuture
<UploadReply> upload
(UploadRequest request) protected void
uploadFilePart
(byte[] payload) protected com.google.common.util.concurrent.ListenableFuture
<UserSearchReply> userSearch
(UserSearchRequest request) protected com.google.common.util.concurrent.ListenableFuture
<UserWriteReply> userWrite
(UserWriteRequest request) protected com.google.common.util.concurrent.ListenableFuture
<UserWriteUpdateReply> userWriteUpdate
(UserWriteUpdateRequest request) protected com.google.common.util.concurrent.ListenableFuture
<WriteReply> write
(WriteRequest request) protected com.google.common.util.concurrent.ListenableFuture
<WriteObjectUpdateReply>
-
Field Details
-
AUTH_ERROR
-
AUTH_STATE_ERROR
-
PERMISSION_ERROR
-
actionService
-
authenticated
-
clientId
-
config
-
fileService
-
log
private final org.slf4j.Logger log -
loggingService
-
metaService
-
runtime
-
threadPool
private final org.eclipse.jetty.util.thread.QueuedThreadPool threadPool -
userService
-
client
-
eventConsumer
-
ipAddress
-
isAdmin
private boolean isAdmin -
subscription
-
uploadKey
-
userName
-
version
-
-
Constructor Details
-
EngineWebSocketController
@Inject public EngineWebSocketController(EngineRuntime runtime, org.eclipse.jetty.util.thread.QueuedThreadPool threadPool, ActionService actionService, FileService fileService, LoggingService loggingService, MetaService metaService, UserService userService, EngineWebSocketController.EngineWebSocketControllerConfig config)
-
-
Method Details
-
auth
-
isAuth
protected boolean isAuth() -
onAuth
-
authToken
public com.google.common.util.concurrent.ListenableFuture<AuthTokenReply> authToken(AuthTokenRequest request) -
allowIfIsAuth
private <T> com.google.common.util.concurrent.ListenableFuture<T> allowIfIsAuth(Supplier<com.google.common.util.concurrent.ListenableFuture<T>> f) -
recordAndCheckFailedAttempts
-
backup
protected com.google.common.util.concurrent.ListenableFuture<BackupReply> backup(BackupRequest request) -
allowIfAdmin
private <T> com.google.common.util.concurrent.ListenableFuture<T> allowIfAdmin(Supplier<com.google.common.util.concurrent.ListenableFuture<T>> f) -
recordNewPermissionException
-
backupRestore
protected com.google.common.util.concurrent.ListenableFuture<BackupRestoreReply> backupRestore(BackupRestoreRequest request) -
clientId
-
configSearch
protected com.google.common.util.concurrent.ListenableFuture<UserConfigSearchReply> configSearch(UserConfigSearchRequest request) -
configWrite
protected com.google.common.util.concurrent.ListenableFuture<UserConfigWriteReply> configWrite(UserConfigWriteRequest request) -
connect
protected void connect(Consumer<Event> eventConsumer, @Nullable String ipAddress) throws ErrorReplyException - Throws:
ErrorReplyException
-
disconnect
protected void disconnect() -
download
protected com.google.common.util.concurrent.ListenableFuture<DownloadReply> download(DownloadRequest request, Function<ByteBuffer, com.google.common.util.concurrent.ListenableFuture<Void>> sink) -
execute
protected com.google.common.util.concurrent.ListenableFuture<ExecuteReply> execute(ExecuteRequest request) -
fileDelete
protected com.google.common.util.concurrent.ListenableFuture<FileDeleteReply> fileDelete(FileDeleteRequest request) -
fileSearch
protected com.google.common.util.concurrent.ListenableFuture<FileSearchReply> fileSearch(FileSearchRequest request) -
allowIfHasPermission
private <T> com.google.common.util.concurrent.ListenableFuture<T> allowIfHasPermission(Supplier<com.google.common.util.concurrent.ListenableFuture<T>> f, MetaGrantKeys key, int permission) -
hasPermission
-
filterAuthorizedFiles
private com.google.common.util.concurrent.ListenableFuture<FileSearchReply> filterAuthorizedFiles(FileSearchReply reply) -
getClientList
protected com.google.common.util.concurrent.ListenableFuture<ClientListReply> getClientList(ClientListRequest request) -
getServiceInfo
public com.google.common.util.concurrent.ListenableFuture<ServiceInfoReply> getServiceInfo(ServiceInfoRequest r) -
groupSearch
protected com.google.common.util.concurrent.ListenableFuture<UserGroupSearchReply> groupSearch(UserGroupSearchRequest request) -
filterAuthorizedGroups
-
groupWrite
protected com.google.common.util.concurrent.ListenableFuture<UserGroupWriteReply> groupWrite(UserGroupWriteRequest request) -
groupWriteUpdate
protected com.google.common.util.concurrent.ListenableFuture<UserGroupWriteUpdateReply> groupWriteUpdate(UserGroupWriteUpdateRequest request) -
ipAddress
-
isAuthorizedToWrite
private com.google.common.util.concurrent.ListenableFuture<Boolean> isAuthorizedToWrite(WriteAction action, Meta meta) -
log
-
loggingDelete
protected com.google.common.util.concurrent.ListenableFuture<LoggingDeleteReply> loggingDelete(LoggingDeleteRequest request) -
loggingEntrySearch
protected com.google.common.util.concurrent.ListenableFuture<LoggingEntrySearchReply> loggingEntrySearch(LoggingEntrySearchRequest request) -
loggingMetricSearch
protected com.google.common.util.concurrent.ListenableFuture<LoggingMetricSearchReply> loggingMetricSearch(LoggingMetricSearchRequest request) -
loggingMetricTime
protected com.google.common.util.concurrent.ListenableFuture<LoggingMetricTimeReply> loggingMetricTime(LoggingMetricTimeRequest request) -
login
protected com.google.common.util.concurrent.ListenableFuture<LoginReply> login(LoginRequest request) -
onNotification
-
receivesNotification
public static Optional<String> receivesNotification(Event notification, SubscriptionRequest subscription) -
receivesMetaNotification
public static boolean receivesMetaNotification(MetaNotification notification, SubscriptionRequest subscription) -
isAuthorizedForMetaLog
-
isDeniedAnyOf
-
onUserWriteNotification
-
logout
protected com.google.common.util.concurrent.ListenableFuture<LogoutReply> logout(LogoutRequest request) -
logoutInternal
private void logoutInternal() -
ping
-
postClientNotification
-
recoverUser
protected com.google.common.util.concurrent.ListenableFuture<RecoverUserReply> recoverUser(RecoverUserRequest request) -
resetPassword
protected com.google.common.util.concurrent.ListenableFuture<ResetPasswordReply> resetPassword(ResetPasswordRequest request) -
search
protected com.google.common.util.concurrent.ListenableFuture<SearchReply> search(SearchRequest request) -
filterAuthorizedMetas
private com.google.common.util.concurrent.ListenableFuture<SearchReply> filterAuthorizedMetas(SearchReply reply) -
subscribe
protected com.google.common.util.concurrent.ListenableFuture<SubscriptionReply> subscribe(SubscriptionRequest request) -
upload
protected com.google.common.util.concurrent.ListenableFuture<UploadReply> upload(UploadRequest request) -
uploadFilePart
protected void uploadFilePart(byte[] payload) -
userSearch
protected com.google.common.util.concurrent.ListenableFuture<UserSearchReply> userSearch(UserSearchRequest request) -
sanitizeUsers
-
userWrite
protected com.google.common.util.concurrent.ListenableFuture<UserWriteReply> userWrite(UserWriteRequest request) -
userWriteUpdate
protected com.google.common.util.concurrent.ListenableFuture<UserWriteUpdateReply> userWriteUpdate(UserWriteUpdateRequest request) -
write
protected com.google.common.util.concurrent.ListenableFuture<WriteReply> write(WriteRequest request) -
writeObjectUpdate
protected com.google.common.util.concurrent.ListenableFuture<WriteObjectUpdateReply> writeObjectUpdate(WriteObjectUpdateRequest request)
-