parent
d2ee52ce43
commit
8c9e9522db
10 changed files with 26 additions and 68 deletions
|
@ -148,7 +148,6 @@ export class IoSocketController {
|
|||
const websocketKey = req.getHeader('sec-websocket-key');
|
||||
const websocketProtocol = req.getHeader('sec-websocket-protocol');
|
||||
const websocketExtensions = req.getHeader('sec-websocket-extensions');
|
||||
const IPAddress = req.getHeader('x-forwarded-for');
|
||||
|
||||
const roomId = query.roomId;
|
||||
if (typeof roomId !== 'string') {
|
||||
|
@ -178,8 +177,7 @@ export class IoSocketController {
|
|||
}
|
||||
|
||||
const userUuid = await jwtTokenManager.getUserUuidFromToken(token);
|
||||
//TODO send ban message
|
||||
await jwtTokenManager.verifyBanUser(userUuid, IPAddress, roomId);
|
||||
|
||||
let memberTags: string[] = [];
|
||||
let memberTextures: CharacterTexture[] = [];
|
||||
const room = await socketManager.getOrCreateRoom(roomId);
|
||||
|
@ -219,7 +217,6 @@ export class IoSocketController {
|
|||
url,
|
||||
token,
|
||||
userUuid,
|
||||
IPAddress,
|
||||
roomId,
|
||||
name,
|
||||
characterLayers: characterLayerObjs,
|
||||
|
@ -339,7 +336,6 @@ export class IoSocketController {
|
|||
client.userId = this.nextUserId;
|
||||
this.nextUserId++;
|
||||
client.userUuid = ws.userUuid;
|
||||
client.IPAddress = ws.IPAddress;
|
||||
client.token = ws.token;
|
||||
client.batchedMessages = new BatchMessage();
|
||||
client.batchTimeout = null;
|
||||
|
|
|
@ -24,7 +24,6 @@ export interface ExSocketInterface extends WebSocket, Identificable {
|
|||
roomId: string;
|
||||
//userId: number; // A temporary (autoincremented) identifier for this user
|
||||
userUuid: string; // A unique identifier for this user
|
||||
IPAddress: string; // IP address
|
||||
name: string;
|
||||
characterLayers: CharacterLayer[];
|
||||
position: PointInterface;
|
||||
|
|
|
@ -14,11 +14,6 @@ export interface AdminApiData {
|
|||
textures: CharacterTexture[]
|
||||
}
|
||||
|
||||
export interface AdminBannedData {
|
||||
is_banned: boolean,
|
||||
message: string
|
||||
}
|
||||
|
||||
export interface CharacterTexture {
|
||||
id: number,
|
||||
level: number,
|
||||
|
@ -115,18 +110,6 @@ class AdminApi {
|
|||
headers: {"Authorization": `${ADMIN_API_TOKEN}`}
|
||||
});
|
||||
}
|
||||
|
||||
async verifyBanUser(organizationMemberToken: string, ipAddress: string, room: string): Promise<AdminBannedData> {
|
||||
if (!ADMIN_API_URL) {
|
||||
return Promise.reject('No admin backoffice set!');
|
||||
}
|
||||
//todo: this call can fail if the corresponding world is not activated or if the token is invalid. Handle that case.
|
||||
return Axios.get(ADMIN_API_URL + '/api/check-moderate-user/' + ipAddress + '/' + organizationMemberToken + '/room/' + room,
|
||||
{headers: {"Authorization": `${ADMIN_API_TOKEN}`}}
|
||||
).then((data) => {
|
||||
return data.data;
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
export const adminApi = new AdminApi();
|
||||
|
|
|
@ -2,7 +2,7 @@ import {ADMIN_API_URL, ALLOW_ARTILLERY, SECRET_KEY} from "../Enum/EnvironmentVar
|
|||
import {uuid} from "uuidv4";
|
||||
import Jwt from "jsonwebtoken";
|
||||
import {TokenInterface} from "../Controller/AuthenticateController";
|
||||
import {adminApi, AdminBannedData} from "../Services/AdminApi";
|
||||
import {adminApi, AdminApiData} from "../Services/AdminApi";
|
||||
|
||||
class JWTTokenManager {
|
||||
|
||||
|
@ -54,7 +54,7 @@ class JWTTokenManager {
|
|||
resolve(tokenInterface.userUuid);
|
||||
}).catch((err) => {
|
||||
//anonymous user
|
||||
if (err.response && err.response.status && err.response.status === 404) {
|
||||
if(err.response && err.response.status && err.response.status === 404){
|
||||
resolve(tokenInterface.userUuid);
|
||||
return;
|
||||
}
|
||||
|
@ -67,17 +67,6 @@ class JWTTokenManager {
|
|||
});
|
||||
}
|
||||
|
||||
public async verifyBanUser(userUuid: string, ipAddress: string, room: string): Promise<unknown> {
|
||||
room = room.split('/').join('_');
|
||||
return adminApi.verifyBanUser(userUuid, ipAddress, room).then((data: AdminBannedData) => {
|
||||
if (data && data.is_banned) {
|
||||
throw new Error('User was banned');
|
||||
}
|
||||
}).catch((err) => {
|
||||
throw err;
|
||||
});
|
||||
}
|
||||
|
||||
private isValidToken(token: object): token is TokenInterface {
|
||||
return !(typeof((token as TokenInterface).userUuid) !== 'string');
|
||||
}
|
||||
|
|
|
@ -79,20 +79,23 @@ export class SocketManager implements ZoneEventListener {
|
|||
}
|
||||
|
||||
async handleAdminRoom(client: ExAdminSocketInterface, roomId: string): Promise<void> {
|
||||
console.log('Calling adminRoom')
|
||||
const apiClient = await apiClientRepository.getClient(roomId);
|
||||
const adminRoomStream = apiClient.adminRoom();
|
||||
client.adminConnection = adminRoomStream;
|
||||
|
||||
adminRoomStream.on('data', (message: ServerToAdminClientMessage) => {
|
||||
if (message.hasUseruuidnamejoinedroom()) {
|
||||
const userUuidName = message.getUseruuidnamejoinedroom();
|
||||
if (message.hasUseruuidjoinedroom()) {
|
||||
const userUuid = message.getUseruuidjoinedroom();
|
||||
|
||||
if (!client.disconnecting) {
|
||||
client.send('MemberJoin:'+userUuidName+';'+roomId);
|
||||
client.send('MemberJoin:'+userUuid+';'+roomId);
|
||||
}
|
||||
} else if (message.hasUseruuidnameleftroom()) {
|
||||
const userUuidName = message.getUseruuidnameleftroom();
|
||||
} else if (message.hasUseruuidleftroom()) {
|
||||
const userUuid = message.getUseruuidleftroom();
|
||||
|
||||
if (!client.disconnecting) {
|
||||
client.send('MemberLeave:'+userUuidName+';'+roomId);
|
||||
client.send('MemberLeave:'+userUuid+';'+roomId);
|
||||
}
|
||||
} else {
|
||||
throw new Error('Unexpected admin message');
|
||||
|
@ -148,7 +151,6 @@ export class SocketManager implements ZoneEventListener {
|
|||
|
||||
const joinRoomMessage = new JoinRoomMessage();
|
||||
joinRoomMessage.setUseruuid(client.userUuid);
|
||||
joinRoomMessage.setIpaddress(client.IPAddress);
|
||||
joinRoomMessage.setRoomid(client.roomId);
|
||||
joinRoomMessage.setName(client.name);
|
||||
joinRoomMessage.setPositionmessage(ProtobufUtils.toPositionMessage(client.position));
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue