Skip to content

Commit

Permalink
Make apps-engine's orchestrator work as a service
Browse files Browse the repository at this point in the history
  • Loading branch information
thassiov committed Oct 10, 2022
1 parent 64e0dbc commit d63f8ab
Show file tree
Hide file tree
Showing 64 changed files with 299 additions and 224 deletions.
3 changes: 2 additions & 1 deletion apps/meteor/app/authentication/server/startup/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import { TAPi18n } from 'meteor/rocketchat:tap-i18n';
import _ from 'underscore';
import { escapeRegExp, escapeHTML } from '@rocket.chat/string-helpers';
import { Roles, Settings, Users as UsersRaw } from '@rocket.chat/models';
import { AppInterface as AppEvents } from '@rocket.chat/apps-engine/definition/metadata';

import * as Mailer from '../../../mailer/server/api';
import { settings } from '../../../settings/server';
Expand All @@ -17,7 +18,7 @@ import { isValidAttemptByUser, isValidLoginAttemptByIp } from '../lib/restrictLo
import './settings';
import { getClientAddress } from '../../../../server/lib/getClientAddress';
import { getNewUserRoles } from '../../../../server/services/user/lib/getNewUserRoles';
import { AppEvents, Apps } from '../../../apps/server/orchestrator';
import { Apps } from '../../../../server/sdk';
import { safeGetMeteorUser } from '../../../utils/server/functions/safeGetMeteorUser';

Accounts.config({
Expand Down
3 changes: 2 additions & 1 deletion apps/meteor/app/file-upload/server/lib/FileUpload.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import { TAPi18n } from 'meteor/rocketchat:tap-i18n';
import filesize from 'filesize';
import { AppsEngineException } from '@rocket.chat/apps-engine/definition/exceptions';
import { Avatars, UserDataFiles, Uploads, Settings } from '@rocket.chat/models';
import { AppInterface as AppEvents } from '@rocket.chat/apps-engine/definition/metadata';

import { settings } from '../../../settings/server';
import Users from '../../../models/server/models/Users';
Expand All @@ -23,7 +24,7 @@ import { canAccessRoom } from '../../../authorization/server/functions/canAccess
import { fileUploadIsValidContentType } from '../../../utils/lib/fileUploadRestrictions';
import { isValidJWT, generateJWT } from '../../../utils/server/lib/JWTHelper';
import { Messages } from '../../../models/server';
import { AppEvents, Apps } from '../../../apps/server';
import { Apps } from '../../../../server/sdk';
import { streamToBuffer } from './streamToBuffer';
import { SystemLogger } from '../../../../server/lib/logger/system';
import { roomCoordinator } from '../../../../server/lib/rooms/roomCoordinator';
Expand Down
4 changes: 2 additions & 2 deletions apps/meteor/app/lib/server/functions/addUserToRoom.ts
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
import { AppsEngineException } from '@rocket.chat/apps-engine/definition/exceptions';
import { Meteor } from 'meteor/meteor';
import type { IUser, IRoom } from '@rocket.chat/core-typings';
import { AppInterface as AppEvents } from '@rocket.chat/apps-engine/definition/metadata';

import { AppEvents, Apps } from '../../../apps/server';
import { callbacks } from '../../../../lib/callbacks';
import { Messages, Rooms, Subscriptions, Users } from '../../../models/server';
import { Team } from '../../../../server/sdk';
import { Apps, Team } from '../../../../server/sdk';
import { roomCoordinator } from '../../../../server/lib/rooms/roomCoordinator';
import { RoomMemberActions } from '../../../../definition/IRoomTypeConfig';

Expand Down
2 changes: 1 addition & 1 deletion apps/meteor/app/lib/server/functions/createDirectRoom.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import { Subscriptions } from '@rocket.chat/models';
import type { MatchKeysAndValues } from 'mongodb';

import { Users, Rooms } from '../../../models/server';
import { Apps } from '../../../apps/server';
import { Apps } from '../../../../server/sdk';
import { callbacks } from '../../../../lib/callbacks';
import { settings } from '../../../settings/server';
import { getDefaultSubscriptionPref } from '../../../utils/server';
Expand Down
3 changes: 1 addition & 2 deletions apps/meteor/app/lib/server/functions/createRoom.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,12 @@ import _ from 'underscore';
import s from 'underscore.string';
import type { ICreatedRoom, IUser, IRoom, RoomType } from '@rocket.chat/core-typings';

import { Apps } from '../../../apps/server';
import { addUserRoles } from '../../../../server/lib/roles/addUserRoles';
import { callbacks } from '../../../../lib/callbacks';
import { Messages, Rooms, Subscriptions, Users } from '../../../models/server';
import { getValidRoomName } from '../../../utils/server';
import { createDirectRoom } from './createDirectRoom';
import { Team } from '../../../../server/sdk';
import { Apps, Team } from '../../../../server/sdk';
import type { ICreateRoomParams, ISubscriptionExtraData } from '../../../../server/sdk/types/IRoomService';

const isValidName = (name: unknown): name is string => {
Expand Down
5 changes: 3 additions & 2 deletions apps/meteor/app/lib/server/functions/deleteMessage.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,15 @@ import { settings } from '../../../settings/server';
import { Messages, Rooms } from '../../../models/server';
import { api } from '../../../../server/sdk/api';
import { callbacks } from '../../../../lib/callbacks';
import { Apps } from '../../../apps/server';
import { Apps } from '../../../../server/sdk';

export const deleteMessage = async function (message: IMessage, user: IUser): Promise<void> {
const deletedMsg = Messages.findOneById(message._id);
const isThread = deletedMsg.tcount > 0;
const keepHistory = settings.get('Message_KeepHistory') || isThread;
const showDeletedStatus = settings.get('Message_ShowDeletedStatus') || isThread;
const bridges = Apps?.isLoaded() && Apps.getBridges();
// const bridges = Apps.isLoaded() && Apps.getBridges();
const bridges = Apps.getBridges();

if (deletedMsg && bridges) {
const prevent = Promise.await(bridges.getListenerBridge().messageEvent('IPreMessageDeletePrevent', deletedMsg));
Expand Down
4 changes: 2 additions & 2 deletions apps/meteor/app/lib/server/functions/removeUserFromRoom.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,11 @@
import { AppsEngineException } from '@rocket.chat/apps-engine/definition/exceptions';
import { Meteor } from 'meteor/meteor';
import type { IUser } from '@rocket.chat/core-typings';
import { AppInterface as AppEvents } from '@rocket.chat/apps-engine/definition/metadata';

import { Rooms, Messages, Subscriptions } from '../../../models/server';
import { AppEvents, Apps } from '../../../apps/server';
import { callbacks } from '../../../../lib/callbacks';
import { Team } from '../../../../server/sdk';
import { Apps, Team } from '../../../../server/sdk';

export const removeUserFromRoom = async function (
rid: string,
Expand Down
3 changes: 2 additions & 1 deletion apps/meteor/app/lib/server/functions/saveUser.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import _ from 'underscore';
import s from 'underscore.string';
import { Gravatar } from 'meteor/jparker:gravatar';
import { isUserFederated } from '@rocket.chat/core-typings';
import { AppInterface as AppEvents } from '@rocket.chat/apps-engine/definition/metadata';

import * as Mailer from '../../../mailer';
import { getRoles, hasPermission } from '../../../authorization';
Expand All @@ -15,7 +16,7 @@ import { saveUserIdentity } from './saveUserIdentity';
import { checkEmailAvailability, checkUsernameAvailability, setUserAvatar, setEmail, setStatusText } from '.';
import { Users } from '../../../models/server';
import { callbacks } from '../../../../lib/callbacks';
import { AppEvents, Apps } from '../../../apps/server/orchestrator';
import { Apps } from '../../../../server/sdk';
import { safeGetMeteorUser } from '../../../utils/server/functions/safeGetMeteorUser';

const MAX_BIO_LENGTH = 260;
Expand Down
2 changes: 1 addition & 1 deletion apps/meteor/app/lib/server/functions/sendMessage.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import { Match, check } from 'meteor/check';
import { settings } from '../../../settings/server';
import { callbacks } from '../../../../lib/callbacks';
import { Messages } from '../../../models/server';
import { Apps } from '../../../apps/server';
import { Apps } from '../../../../server/sdk';
import { isURL } from '../../../../lib/utils/isURL';
import { FileUpload } from '../../../file-upload/server';
import { hasPermission } from '../../../authorization/server';
Expand Down
2 changes: 1 addition & 1 deletion apps/meteor/app/lib/server/functions/updateMessage.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import { Meteor } from 'meteor/meteor';
import { Messages, Rooms } from '../../../models/server';
import { settings } from '../../../settings/server';
import { callbacks } from '../../../../lib/callbacks';
import { Apps } from '../../../apps/server';
import { Apps } from '../../../../server/sdk';
import { parseUrlsInMessage } from './parseUrlsInMessage';

export const updateMessage = function (message: IMessage, user: IUser, originalMessage?: IMessage): void {
Expand Down
3 changes: 2 additions & 1 deletion apps/meteor/app/lib/server/methods/deleteUserOwnAccount.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,12 @@ import { check } from 'meteor/check';
import { Accounts } from 'meteor/accounts-base';
import { SHA256 } from 'meteor/sha';
import s from 'underscore.string';
import { AppInterface as AppEvents } from '@rocket.chat/apps-engine/definition/metadata';

import { settings } from '../../../settings/server';
import { Users } from '../../../models/server';
import { deleteUser } from '../functions';
import { AppEvents, Apps } from '../../../apps/server/orchestrator';
import { Apps } from '../../../../server/sdk';

Meteor.methods({
async deleteUserOwnAccount(password, confirmRelinquish) {
Expand Down
3 changes: 2 additions & 1 deletion apps/meteor/app/livechat/server/lib/Helper.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import { TAPi18n } from 'meteor/rocketchat:tap-i18n';
import { Match, check } from 'meteor/check';
import { LivechatTransferEventType } from '@rocket.chat/apps-engine/definition/livechat';
import { OmnichannelSourceType } from '@rocket.chat/core-typings';
import { AppInterface as AppEvents } from '@rocket.chat/apps-engine/definition/metadata';

import { hasRole } from '../../../authorization';
import {
Expand All @@ -20,7 +21,7 @@ import { RoutingManager } from './RoutingManager';
import { callbacks } from '../../../../lib/callbacks';
import { Logger } from '../../../logger';
import { settings } from '../../../settings/server';
import { Apps, AppEvents } from '../../../apps/server';
import { Apps } from '../../../../server/sdk';
import { sendNotification } from '../../../lib/server';
import { sendMessage } from '../../../lib/server/functions/sendMessage';
import { queueInquiry, saveQueueInquiry } from './QueueManager';
Expand Down
4 changes: 2 additions & 2 deletions apps/meteor/app/livechat/server/lib/Livechat.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import s from 'underscore.string';
import moment from 'moment-timezone';
import UAParser from 'ua-parser-js';
import { Users as UsersRaw, LivechatVisitors, LivechatCustomField, Settings } from '@rocket.chat/models';
import { AppInterface as AppEvents } from '@rocket.chat/apps-engine/definition/metadata';

import { QueueManager } from './QueueManager';
import { RoutingManager } from './RoutingManager';
Expand All @@ -35,12 +36,11 @@ import { updateMessage } from '../../../lib/server/functions/updateMessage';
import { deleteMessage } from '../../../lib/server/functions/deleteMessage';
import { FileUpload } from '../../../file-upload/server';
import { normalizeTransferredByData, parseAgentCustomFields, updateDepartmentAgents, validateEmail } from './Helper';
import { Apps, AppEvents } from '../../../apps/server';
import { businessHourManager } from '../business-hour';
import { addUserRoles } from '../../../../server/lib/roles/addUserRoles';
import { removeUserFromRoles } from '../../../../server/lib/roles/removeUserFromRoles';
import { VideoConf } from '../../../../server/sdk';
import { api } from '../../../../server/sdk/api';
import { Apps, VideoConf } from '../../../../server/sdk';

const logger = new Logger('Livechat');

Expand Down
3 changes: 2 additions & 1 deletion apps/meteor/app/livechat/server/lib/RoutingManager.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import { Meteor } from 'meteor/meteor';
import { Match, check } from 'meteor/check';
import { AppInterface as AppEvents } from '@rocket.chat/apps-engine/definition/metadata';

import {
createLivechatSubscription,
Expand All @@ -14,7 +15,7 @@ import {
import { callbacks } from '../../../../lib/callbacks';
import { Logger } from '../../../../server/lib/logger/Logger';
import { LivechatRooms, Rooms, Messages, Users, LivechatInquiry, Subscriptions } from '../../../models/server';
import { Apps, AppEvents } from '../../../apps/server';
import { Apps } from '../../../../server/sdk';

const logger = new Logger('RoutingManager');

Expand Down
2 changes: 1 addition & 1 deletion apps/meteor/app/mailer/server/api.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import { Settings } from '@rocket.chat/models';

import { settings } from '../../settings/server';
import { replaceVariables } from './replaceVariables';
import { Apps } from '../../apps/server';
import { Apps } from '../../../server/sdk';
import { validateEmail } from '../../../lib/emailValidator';

let contentHeader: string | undefined;
Expand Down
3 changes: 2 additions & 1 deletion apps/meteor/app/message-pin/server/pinMessage.js
Original file line number Diff line number Diff line change
@@ -1,13 +1,14 @@
import { Meteor } from 'meteor/meteor';
import { check } from 'meteor/check';
import { AppInterface as AppEvents } from '@rocket.chat/apps-engine/definition/metadata';

import { settings } from '../../settings/server';
import { callbacks } from '../../../lib/callbacks';
import { isTheLastMessage } from '../../lib/server';
import { getUserAvatarURL } from '../../utils/lib/getUserAvatarURL';
import { canAccessRoom, hasPermission, roomAccessAttributes } from '../../authorization/server';
import { Subscriptions, Messages, Users, Rooms } from '../../models/server';
import { Apps, AppEvents } from '../../apps/server/orchestrator';
import { Apps } from '../../../server/sdk';

const recursiveRemove = (msg, deep = 1) => {
if (!msg) {
Expand Down
3 changes: 2 additions & 1 deletion apps/meteor/app/message-star/server/starMessage.js
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
import { Meteor } from 'meteor/meteor';
import { AppInterface as AppEvents } from '@rocket.chat/apps-engine/definition/metadata';

import { settings } from '../../settings/server';
import { isTheLastMessage } from '../../lib/server';
import { canAccessRoom, roomAccessAttributes } from '../../authorization/server';
import { Subscriptions, Rooms, Messages } from '../../models/server';
import { Apps, AppEvents } from '../../apps/server/orchestrator';
import { Apps } from '../../../server/sdk';

Meteor.methods({
starMessage(message) {
Expand Down
3 changes: 2 additions & 1 deletion apps/meteor/app/reactions/server/setReaction.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,15 @@ import { Meteor } from 'meteor/meteor';
import { TAPi18n } from 'meteor/rocketchat:tap-i18n';
import _ from 'underscore';
import { EmojiCustom } from '@rocket.chat/models';
import { AppInterface as AppEvents } from '@rocket.chat/apps-engine/definition/metadata';

import { Messages, Rooms } from '../../models/server';
import { callbacks } from '../../../lib/callbacks';
import { emoji } from '../../emoji/server';
import { isTheLastMessage, msgStream } from '../../lib/server';
import { canAccessRoom, hasPermission } from '../../authorization/server';
import { api } from '../../../server/sdk/api';
import { AppEvents, Apps } from '../../apps/server/orchestrator';
import { Apps } from '../../../server/sdk';

const removeUserReaction = (message, reaction, username) => {
message.reactions[reaction].usernames.splice(message.reactions[reaction].usernames.indexOf(username), 1);
Expand Down
2 changes: 1 addition & 1 deletion apps/meteor/app/statistics/server/lib/getAppsStatistics.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { AppStatus } from '@rocket.chat/apps-engine/definition/AppStatus';

import { Apps } from '../../../apps/server';
import { Apps } from '../../../../server/sdk';
import { Info } from '../../../utils/server';

export function getAppsStatistics() {
Expand Down
3 changes: 2 additions & 1 deletion apps/meteor/app/threads/server/methods/followMessage.js
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
import { Meteor } from 'meteor/meteor';
import { check } from 'meteor/check';
import { AppInterface as AppEvents } from '@rocket.chat/apps-engine/definition/metadata';

import { Messages } from '../../../models/server';
import { RateLimiter } from '../../../lib/server';
import { settings } from '../../../settings/server';
import { canAccessRoomId } from '../../../authorization/server';
import { follow } from '../functions';
import { Apps, AppEvents } from '../../../apps/server/orchestrator';
import { Apps } from '../../../../server/sdk';

Meteor.methods({
followMessage({ mid }) {
Expand Down
3 changes: 2 additions & 1 deletion apps/meteor/app/threads/server/methods/unfollowMessage.js
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
import { Meteor } from 'meteor/meteor';
import { check } from 'meteor/check';
import { AppInterface as AppEvents } from '@rocket.chat/apps-engine/definition/metadata';

import { Messages } from '../../../models/server';
import { RateLimiter } from '../../../lib/server';
import { settings } from '../../../settings/server';
import { canAccessRoomId } from '../../../authorization/server';
import { unfollow } from '../functions';
import { Apps, AppEvents } from '../../../apps/server/orchestrator';
import { Apps } from '../../../../server/sdk';

Meteor.methods({
unfollowMessage({ mid }) {
Expand Down
1 change: 0 additions & 1 deletion apps/meteor/server/importPackages.ts
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,6 @@ import '../app/oembed/server';
import '../app/otr/server';
import '../app/push-notifications/server';
import '../app/retention-policy';
import '../app/apps/server';
import '../app/slackbridge/server';
import '../app/slashcommands-archiveroom/server';
import '../app/slashcommand-asciiarts/server';
Expand Down
3 changes: 2 additions & 1 deletion apps/meteor/server/methods/deleteUser.js
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
import { Meteor } from 'meteor/meteor';
import { check } from 'meteor/check';
import { AppInterface as AppEvents } from '@rocket.chat/apps-engine/definition/metadata';

import { Users } from '../../app/models/server';
import { hasPermission } from '../../app/authorization';
import { callbacks } from '../../lib/callbacks';
import { deleteUser } from '../../app/lib/server';
import { AppEvents, Apps } from '../../app/apps/server/orchestrator';
import { Apps } from '../sdk';

Meteor.methods({
async deleteUser(userId, confirmRelinquish = false) {
Expand Down
3 changes: 1 addition & 2 deletions apps/meteor/server/methods/eraseRoom.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,8 @@ import { check } from 'meteor/check';
import { deleteRoom } from '../../app/lib';
import { hasPermission } from '../../app/authorization/server';
import { Rooms, Messages } from '../../app/models/server';
import { Apps } from '../../app/apps/server';
import { roomCoordinator } from '../lib/rooms/roomCoordinator';
import { Team } from '../sdk';
import { Apps, Team } from '../sdk';

Meteor.methods({
eraseRoom(rid) {
Expand Down
3 changes: 2 additions & 1 deletion apps/meteor/server/methods/logoutCleanUp.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
import { Meteor } from 'meteor/meteor';
import { check } from 'meteor/check';
import { AppInterface as AppEvents } from '@rocket.chat/apps-engine/definition/metadata';

import { callbacks } from '../../lib/callbacks';
import { AppEvents, Apps } from '../../app/apps/server/orchestrator';
import { Apps } from '../sdk';

Meteor.methods({
logoutCleanUp(user) {
Expand Down
3 changes: 2 additions & 1 deletion apps/meteor/server/methods/reportMessage.js
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
import { Meteor } from 'meteor/meteor';
import { check } from 'meteor/check';
import { Reports, Rooms } from '@rocket.chat/models';
import { AppInterface as AppEvents } from '@rocket.chat/apps-engine/definition/metadata';

import { Messages } from '../../app/models/server';
import { canAccessRoomAsync } from '../../app/authorization/server/functions/canAccessRoom';
import { AppEvents, Apps } from '../../app/apps/server';
import { Apps } from '../sdk';

Meteor.methods({
async reportMessage(messageId, description) {
Expand Down
3 changes: 2 additions & 1 deletion apps/meteor/server/methods/saveUserProfile.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import { Meteor } from 'meteor/meteor';
import { Match, check } from 'meteor/check';
import { Accounts } from 'meteor/accounts-base';
import { AppInterface as AppEvents } from '@rocket.chat/apps-engine/definition/metadata';

import { saveCustomFields, passwordPolicy } from '../../app/lib/server';
import { validateUserEditing } from '../../app/lib/server/functions/saveUser';
Expand All @@ -10,7 +11,7 @@ import { twoFactorRequired } from '../../app/2fa/server/twoFactorRequired';
import { saveUserIdentity } from '../../app/lib/server/functions/saveUserIdentity';
import { compareUserPassword } from '../lib/compareUserPassword';
import { compareUserPasswordHistory } from '../lib/compareUserPasswordHistory';
import { AppEvents, Apps } from '../../app/apps/server/orchestrator';
import { Apps } from '../sdk';

function saveUserProfile(settings, customFields) {
if (!rcSettings.get('Accounts_AllowUserProfileChange')) {
Expand Down
2 changes: 1 addition & 1 deletion apps/meteor/server/sdk/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,8 @@ import type { ILDAPService } from './types/ILDAPService';
import type { IVideoConfService } from './types/IVideoConfService';
import type { ISAUMonitorService } from './types/ISAUMonitorService';
import type { IDeviceManagementService } from './types/IDeviceManagementService';
import type { IAppsService } from './types/IAppsService';
import { FibersContextStore } from './lib/ContextStore';
import { IAppsService } from './types/IAppsService';

// TODO think in a way to not have to pass the service name to proxify here as well
export const Authorization = proxifyWithWait<IAuthorization>('authorization');
Expand Down
Loading

0 comments on commit d63f8ab

Please sign in to comment.