implement system init.
This commit is contained in:
parent
8217321ecb
commit
8db06a7625
@ -10,6 +10,7 @@ export const EVENT = {
|
|||||||
|
|
||||||
// Websocket Events
|
// Websocket Events
|
||||||
SYSTEM: {
|
SYSTEM: {
|
||||||
|
INIT: 'system/init',
|
||||||
DISCONNECT: 'system/disconnect',
|
DISCONNECT: 'system/disconnect',
|
||||||
ERROR: 'system/error',
|
ERROR: 'system/error',
|
||||||
},
|
},
|
||||||
|
@ -22,6 +22,8 @@ import {
|
|||||||
AdminPayload,
|
AdminPayload,
|
||||||
AdminTargetPayload,
|
AdminTargetPayload,
|
||||||
AdminLockMessage,
|
AdminLockMessage,
|
||||||
|
SystemInitPayload,
|
||||||
|
AdminLockResource,
|
||||||
} from './messages'
|
} from './messages'
|
||||||
|
|
||||||
interface NekoEvents extends BaseEvents {}
|
interface NekoEvents extends BaseEvents {}
|
||||||
@ -131,6 +133,18 @@ export class NekoClient extends BaseClient implements EventEmitter<NekoEvents> {
|
|||||||
/////////////////////////////
|
/////////////////////////////
|
||||||
// System Events
|
// System Events
|
||||||
/////////////////////////////
|
/////////////////////////////
|
||||||
|
protected [EVENT.SYSTEM.INIT]({ implicit_hosting, locks }: SystemInitPayload) {
|
||||||
|
this.$accessor.remote.setImplicitHosting(implicit_hosting)
|
||||||
|
|
||||||
|
for (const resource in locks) {
|
||||||
|
this[EVENT.ADMIN.LOCK]({
|
||||||
|
event: EVENT.ADMIN.LOCK,
|
||||||
|
resource: resource as AdminLockResource,
|
||||||
|
id: locks[resource],
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
protected [EVENT.SYSTEM.DISCONNECT]({ message }: SystemMessagePayload) {
|
protected [EVENT.SYSTEM.DISCONNECT]({ message }: SystemMessagePayload) {
|
||||||
if (message == 'kicked') {
|
if (message == 'kicked') {
|
||||||
this.$accessor.logout()
|
this.$accessor.logout()
|
||||||
|
@ -52,6 +52,15 @@ export interface WebSocketMessage {
|
|||||||
/*
|
/*
|
||||||
SYSTEM MESSAGES/PAYLOADS
|
SYSTEM MESSAGES/PAYLOADS
|
||||||
*/
|
*/
|
||||||
|
// system/init
|
||||||
|
export interface SystemInit extends WebSocketMessage, SystemInitPayload {
|
||||||
|
event: typeof EVENT.SYSTEM.INIT
|
||||||
|
}
|
||||||
|
export interface SystemInitPayload {
|
||||||
|
implicit_hosting: boolean
|
||||||
|
locks: Record<string, string>
|
||||||
|
}
|
||||||
|
|
||||||
// system/disconnect
|
// system/disconnect
|
||||||
// system/error
|
// system/error
|
||||||
export interface SystemMessage extends WebSocketMessage, SystemMessagePayload {
|
export interface SystemMessage extends WebSocketMessage, SystemMessagePayload {
|
||||||
|
@ -12,7 +12,7 @@ export const state = () => ({
|
|||||||
id: '',
|
id: '',
|
||||||
clipboard: '',
|
clipboard: '',
|
||||||
locked: false,
|
locked: false,
|
||||||
|
implicitHosting: true,
|
||||||
keyboardModifierState: -1,
|
keyboardModifierState: -1,
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -49,10 +49,15 @@ export const mutations = mutationTree(state, {
|
|||||||
state.locked = locked
|
state.locked = locked
|
||||||
},
|
},
|
||||||
|
|
||||||
|
setImplicitHosting(state, val: boolean) {
|
||||||
|
state.implicitHosting = val
|
||||||
|
},
|
||||||
|
|
||||||
reset(state) {
|
reset(state) {
|
||||||
state.id = ''
|
state.id = ''
|
||||||
state.clipboard = ''
|
state.clipboard = ''
|
||||||
state.locked = false
|
state.locked = false
|
||||||
|
state.implicitHosting = false
|
||||||
state.keyboardModifierState = -1
|
state.keyboardModifierState = -1
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
package event
|
package event
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
SYSTEM_INIT = "system/init"
|
||||||
SYSTEM_DISCONNECT = "system/disconnect"
|
SYSTEM_DISCONNECT = "system/disconnect"
|
||||||
SYSTEM_ERROR = "system/error"
|
SYSTEM_ERROR = "system/error"
|
||||||
)
|
)
|
||||||
|
@ -10,6 +10,12 @@ type Message struct {
|
|||||||
Event string `json:"event"`
|
Event string `json:"event"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type SystemInit struct {
|
||||||
|
Event string `json:"event"`
|
||||||
|
ImplicitHosting bool `json:"implicit_hosting"`
|
||||||
|
Locks map[string]string `json:"locks"`
|
||||||
|
}
|
||||||
|
|
||||||
type SystemMessage struct {
|
type SystemMessage struct {
|
||||||
Event string `json:"event"`
|
Event string `json:"event"`
|
||||||
Title string `json:"title"`
|
Title string `json:"title"`
|
||||||
|
@ -12,16 +12,14 @@ func (h *MessageHandler) SessionCreated(id string, session types.Session) error
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
// notify all about what is locked
|
// send initialization information
|
||||||
for resource, id := range h.locked {
|
if err := session.Send(message.SystemInit{
|
||||||
if err := session.Send(message.AdminLock{
|
Event: event.SYSTEM_INIT,
|
||||||
Event: event.ADMIN_LOCK,
|
ImplicitHosting: true,
|
||||||
ID: id,
|
Locks: h.locked,
|
||||||
Resource: resource,
|
}); err != nil {
|
||||||
}); err != nil {
|
h.logger.Warn().Str("id", id).Err(err).Msgf("sending event %s has failed", event.SYSTEM_INIT)
|
||||||
h.logger.Warn().Str("id", id).Err(err).Msgf("sending event %s has failed", event.ADMIN_LOCK)
|
return err
|
||||||
return err
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if session.Admin() {
|
if session.Admin() {
|
||||||
|
Reference in New Issue
Block a user