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 final FileServiceprivate Stringprivate booleanprivate final org.slf4j.Loggerprivate final LoggingServiceprivate final MetaServiceprivate static final Protocol.ErrorReplyFactoryprivate final EngineRuntimeprivate SubscriptionRequestprivate final org.eclipse.jetty.util.thread.QueuedThreadPoolprivate Stringprivate Stringprivate final UserServiceprivate 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 voidvoidonNotification(Event notification) 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
-
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)
-