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 ActionServiceprivate static final Protocol.ErrorReplyFactoryprivate static final Protocol.ErrorReplyFactoryprivate final AtomicBooleanprivate Stringprivate final Stringprivate io.reactivex.rxjava3.disposables.Disposableprivate final FileServiceprivate Stringprivate booleanprivate final org.slf4j.Loggerprivate final LoggingServiceprivate io.reactivex.rxjava3.disposables.Disposableprivate final MetaServiceprivate static final Protocol.ErrorReplyFactoryprivate final EngineRuntimeprivate SubscriptionRequestprivate final org.eclipse.jetty.util.thread.QueuedThreadPoolprivate Stringprivate Stringprivate final UserServiceprivate io.reactivex.rxjava3.disposables.Disposableprivate 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 voidprotected voidprotected 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 UserGroupSearchReplyprivate 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 booleanisAuth()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 booleanisDeniedAnyOf(List<Boolean> permissionResult) protected voidlog(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 voidprivate voidprivate voidonNotification(Event notification) private voidonUserWriteNotification(UserService.UserWriteNotification notification) com.google.common.util.concurrent.ListenableFuture<PingReply> ping(PingRequest request) protected voidpostClientNotification(ClientNotification clientNotification) static booleanreceivesMetaNotification(MetaNotification notification, SubscriptionRequest subscription) receivesNotification(Event notification, SubscriptionRequest subscription) private Optional<ErrorReplyException> recordAndCheckFailedAttempts(String source) private ErrorReplyExceptionprotected com.google.common.util.concurrent.ListenableFuture<RecoverUserReply> recoverUser(RecoverUserRequest request) protected com.google.common.util.concurrent.ListenableFuture<ResetPasswordReply> resetPassword(ResetPasswordRequest request) private UserSearchReplysanitizeUsers(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 voiduploadFilePart(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
-