Treceți la conținutul principal

Restricționarea unei instalări On-Premise după IP

Această pagină se adresează operatorilor unei instalări MonoChat on-premise. Explică cum limitați aplicația web la propriile rețele, la nivel de rețea (nginx sau firewall), fără a bloca serviciile care trebuie să apeleze MonoChat din internet.

MonoChat nu are o listă proprie de IP-uri permise. Restricția se află în nginx, în load balancer sau în firewall și se aplică întregii instalări, nu unui singur tenant.

Ce se restricționează și ce rămâne deschis​

Rămâne restricționat la rețelele dvs.Rămâne accesibil din internet
Aplicația web și tot ce nu este listat în dreaptaCăile de webhook și de callback din tabelele de mai jos
Endpoint-ul DDP/WebSocket la care se conectează aplicația web (/websocket)

Restricționați împreună interfața web și endpoint-ul WebSocket: aplicația le folosește pe ambele. Pentru toți ceilalți permiteți doar căile de mai jos și blocați restul.

Căile apelate de serviciile externe​

Fiecare cale de mai jos este înregistrată de serverul MonoChat. O cale construită dintr-o setare este hookPath configurat de dvs. pe server (în channelConnectors.<name> sau paymentSystemConnectors.<name> din setările serverului); sufixul este adăugat de cod. Deschideți doar conectorii pe care îi folosiți.

Canale​

CaleApelată deDefinită în
<hookPath>/webhooks (POST)omni-message, pentru WhatsApp Cloud, WhatsApp Gupshup, Instagram, Messenger, Telegram, TikTok, Twilio SMS și Varan OTPpackages/app-connectors-om2-*/src/webhooks/webhook.ts; hookPath from channelConnectors.whatsappBusinessVegaCloud, whatsappBusinessVegaGupshup, instagramCastor, messengerRigel, telegramBotRegulus, tikTokTimir, twilioSms, varanOtp
<hookPath>/webhooks, <hookPath>/sessions, <hookPath>/messages (POST)Propriile dvs. sisteme, prin canalul Messages APIchannelConnectors.messagesApi.hookPath, packages/app-connectors-messages-api/src/webhooks/webhook.ts
<hookPath>/message, <hookPath>/info (POST)ChatwootchannelConnectors.chatwoot.hookPath, packages/app-connectors-chatwoot/src/webhook.ts
<hookPath>/inbound (POST)Furnizorul SIP (canalele generic SIP și Sonitel SIP)channelConnectors.genericSip.hookPath, channelConnectors.sonitelSip.hookPath
/api/facebook/channels/:channelId/flows/:flowId (POST)WhatsApp, pentru WhatsApp Flowsserver/api/whatsapp-flow.js

Furnizorii de canale (Meta, Telegram, TikTok, Twilio) nu apelează direct MonoChat. Ei apelează webhook listener-ul omni-message, care transmite mai departe către calea /webhooks de mai sus. Dacă rulați singuri omni-message, webhook listener-ul său trebuie să fie accesibil din internet pe aceste căi: /webhooks/meta-messenger, /webhooks/instagram-business, /webhooks/wab-cloud, /webhooks/wab-gupshup/:channelId, /webhooks/wab-360-dialog/:channelId, /webhooks/telegram-bot/:channelId, /webhooks/tiktok și /webhooks/twilio-sms/:channelId (apps/webhook-listener/src/modules/webhook-listeners/webhook-listeners.controller.ts în omni-message). MonoChat însuși trebuie să fie accesibil din omni-message pe căile /webhooks de mai sus.

Sisteme de plată​

Furnizorii de plăți fac un apel de confirmare când un client plătește și îl redirecționează apoi pe client înapoi la MonoChat. Ambele trebuie să funcționeze din afara rețelei dvs.

ConectorCăi sub hookPath (paymentSystemConnectors.<name>.hookPath)
Stripe/webhook/:clientId (POST), /return/success/:paymentSystemId, /return/cancel/:paymentSystemId
HyperPay/pay/:clientId/:paymentSystemOrderId, /result/:clientId/:paymentSystemOrderId
Mamo/webhook/:clientId (POST), /return/:clientId/:paymentSystemOrderId
Midtrans/webhook/:clientId (POST), /return/:paymentSystemOrderId
Paymob/webhook/:clientId (POST), /return/:paymentSystemOrderId
PayTabs/callback/:clientId/:paymentSystemOrderId (POST), /return/:paymentSystemOrderId
Tabby/webhook/:clientId (POST), /return/:paymentSystemOrderId/:status
Tamara/webhook/:clientId (POST), /return/:paymentSystemOrderId/:status
Tap/webhook/:clientId (POST), /return/:clientId/:paymentSystemOrderId
Telr/webhook/:clientId/:paymentSystemOrderId (POST), /return/:paymentSystemOrderId/:status
Ziina/return/:clientId/:paymentSystemOrderId/:status
iyzico/:transactionId (POST)
JCC/:status
MyFatoorahchiar hookPath (POST), /:paymentSystemOrderId/:status (POST)
N-Geniuschiar hookPath (POST), /:paymentSystemOrderId/:status
Paywall/:paymentSystemOrderId/:status
UniqoPaychiar hookPath (POST), /:paymentSystemOrderId/:status (POST)
VakıfBank Sanal POS/:status (GET și POST)
İş Yerim POSchiar hookPath (GET și POST)

Cea mai simplă regulă este să deschideți <hookPath> și tot ce se află sub el pentru fiecare conector de plată pe care îl folosiți. Fiecare sursă este packages/app-connectors-<name>/src/webhook.ts.

Alte endpoint-uri ale serverului​

CaleUtilizareDefinită în
/api/:slug/custom-functions/… (POST)Apelarea unei funcții personalizate prin HTTP cu un token de acceslib/managers/custom-function-sdk/_/server/endpoint.js
/api/ai-agent/mcp, /api/ai-agent/events (POST)Rulările agentului AI raportează înapoi către MonoChatserver/api/ai-agent.ts
/api/channels-manager/facebook/auth, /api/channels-manager/tiktok/auth (GET)Fereastra pop-up care se întoarce după conectarea unui cont Facebook sau TikTokpackages/app-managers-channel/src/webhook.ts
/l/:_id (GET)Linkuri scurte pe care le trimiteți cliențilorserver/api/short-link.js
/api/status (GET)Aplicația mobilă verifică serverul și opțiunile sale de autentificareserver/api/status.js
/.well-known/assetlinks.json, /.well-known/apple-app-site-association (GET)Linkuri de aplicație Android și iOSserver/api/assetlinks.js, server/api/apple-app-site-association.js

Deschideți /api/:slug/custom-functions, /api/ai-agent, /l/ și cele două căi pop-up ale canalelor dacă folosiți aceste funcții din afara rețelei dvs. Căile pop-up ale canalelor se deschid în browserul persoanei care conectează contul, deci pot rămâne restricționate dacă doar persoanele din rețeaua dvs. conectează canale. Deschideți /api/status și cele două fișiere /.well-known doar dacă agenții dvs. folosesc aplicația mobilă MonoChat din afara rețelei dvs.

Autentificarea cu un furnizor (OAuth)​

Când un furnizor de autentificare redirecționează browserul înapoi la MonoChat, redirecționarea este o cerere obișnuită de browser din partea persoanei care se autentifică, deci urmează aceeași restricție ca aplicația web. Păstrați căile de redirecționare accesibile pentru persoanele care se autentifică astfel. Căile sunt valorile redirectPath din public.oauth.<provider> în setările serverului (exemplele implicite sunt /api/oauth/google/redirect, /api/oauth/microsoft/redirect, /api/oauth/facebook/redirect și /api/oauth/apple/redirect). Autentificarea cu Apple trimite browserul înapoi cu un POST (responseMode: form_post), pe care aceeași cale îl acceptă. Pentru aplicația mobilă, serverul răspunde și la /api/oauth/facebook/mobile, /api/oauth/microsoft/mobile și /auth/oauth-callback/<provider> (server/configs/oauth/mobile.ts).

Dacă folosiți integrarea Microsoft Marketplace, calea din microsoftMarketplace.redirectWebhookPath primește cererea Microsoft Marketplace și trebuie să fie accesibilă din internet (server/configs/microsoft-marketplace/webook.ts).

Transmiteți IP-ul real al clientului prin proxy​

MonoChat înregistrează IP-ul clientului pentru sesiuni și pentru jurnalele de stare. În spatele unui reverse proxy sau al unui load balancer vede adresa proxy-ului, dacă nu o transmiteți pe cea reală.

  1. Configurați nginx (sau load balancer-ul) să trimită adresa originală în antetul X-Forwarded-For, de exemplu proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;.
  2. Setați variabila de mediu HTTP_FORWARDED_COUNT pe serverul MonoChat la numărul de proxy-uri din fața aplicației. Ea este citită de framework-ul Meteor, nu de codul MonoChat, deci își are locul în setările de deployment și nu în JSON-ul de setări.

Verificați configurația​

  1. Dintr-o rețea care nu este permisă, deschideți aplicația web. Accesul trebuie refuzat.
  2. Dintr-o rețea permisă, autentificați-vă și deschideți inbox-ul. Mesajele trebuie să se încarce, ceea ce dovedește că endpoint-ul WebSocket este deschis pentru dvs.
  3. Trimiteți un mesaj de test către un canal conectat din afara rețelei dvs. și confirmați că ajunge în inbox.
  4. Creați un link de plată pentru o comandă de test de mică valoare, plătiți-o și confirmați că comanda apare ca plătită.
avertisment

Testați căile după fiecare modificare a regulilor proxy-ului. O cale de webhook blocată nu afișează nicio eroare în MonoChat: mesajele și confirmările de plată pur și simplu nu mai ajung.