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 io.reactivex.rxjava3.disposables.Disposable
private final FileService
private String
private boolean
private final org.slf4j.Logger
private final LoggingService
private io.reactivex.rxjava3.disposables.Disposable
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 io.reactivex.rxjava3.disposables.Disposable
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
private void
onNotification
(Event notification) private 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
-
clientNotificationSub
private io.reactivex.rxjava3.disposables.Disposable clientNotificationSub -
eventConsumer
-
ipAddress
-
isAdmin
private boolean isAdmin -
metaNotificationSub
private io.reactivex.rxjava3.disposables.Disposable metaNotificationSub -
subscription
-
uploadKey
-
userName
-
userWriteNotificationSub
private io.reactivex.rxjava3.disposables.Disposable userWriteNotificationSub -
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
-
authToken
public com.google.common.util.concurrent.ListenableFuture<AuthTokenReply> authToken(AuthTokenRequest request) -
backup
protected com.google.common.util.concurrent.ListenableFuture<BackupReply> backup(BackupRequest request) -
backupRestore
protected com.google.common.util.concurrent.ListenableFuture<BackupRestoreReply> backupRestore(BackupRestoreRequest request) -
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) -
filterAuthorizedFiles
private com.google.common.util.concurrent.ListenableFuture<FileSearchReply> filterAuthorizedFiles(FileSearchReply reply) -
getClientList
protected com.google.common.util.concurrent.ListenableFuture<ClientListReply> getClientList(ClientListRequest request) -
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) -
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) -
logout
protected com.google.common.util.concurrent.ListenableFuture<LogoutReply> logout(LogoutRequest request) -
postClientNotification
-
ping
-
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) -
isAuthorizedForMetaLog
-
getServiceInfo
public com.google.common.util.concurrent.ListenableFuture<ServiceInfoReply> getServiceInfo(ServiceInfoRequest r) -
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) -
isAuthorizedToWrite
private com.google.common.util.concurrent.ListenableFuture<Boolean> isAuthorizedToWrite(WriteAction action, Meta meta) -
onAuth
-
isAuth
protected boolean isAuth() -
logoutInternal
private void logoutInternal() -
onNotification
-
receivesNotification
public static Optional<String> receivesNotification(Event notification, SubscriptionRequest subscription) -
receivesMetaNotification
public static boolean receivesMetaNotification(MetaNotification notification, SubscriptionRequest subscription) -
onUserWriteNotification
-
allowIfAdmin
private <T> com.google.common.util.concurrent.ListenableFuture<T> allowIfAdmin(Supplier<com.google.common.util.concurrent.ListenableFuture<T>> f) -
allowIfHasPermission
private <T> com.google.common.util.concurrent.ListenableFuture<T> allowIfHasPermission(Supplier<com.google.common.util.concurrent.ListenableFuture<T>> f, MetaGrantKeys key, int permission) -
allowIfIsAuth
private <T> com.google.common.util.concurrent.ListenableFuture<T> allowIfIsAuth(Supplier<com.google.common.util.concurrent.ListenableFuture<T>> f) -
hasPermission
-
isDeniedAnyOf
-
recordNewPermissionException
-
recordAndCheckFailedAttempts
-
clientId
-
ipAddress
-