LINUX.ORG.RU

Доступ к XMPP-транспорту

 , ,


0

2

Доброго времени суток.

Есть подконтрольный мне jabber-сервер xxx.org (1). На сервере используется prosody 0.8 и запущен MRIM-транспорт. Prosody тут только для того чтобы держать транспорт.

Также есть JID на другом сервере yyy.com (2). Транспорт используется только с этого JID. Как на сервере 1 запретить доступ к транспорту всем, кроме определенного JID на сервере 2?

Сейчас просто отключен Service discovery (модуль disco).

Если есть легковесные (не на Java) альтернативы prosody, то тоже вариант.

★★★★

Последнее исправление: Black_Roland (всего исправлений: 1)

Я так понял это не задача xmpp-сервера — это задача транспорта (поправьте есть не так). В README и конфиге транспорта ничего подходящего не нашел, поэтому полез в код. Вот небольшой патч, который запрещает доступ к mrim-транспорту всем кроме определенного JID:

diff -uNrp mrim.orig/src/transport.py mrim/src/transport.py
--- mrim.orig/src/transport.py	2013-09-14 20:10:01.159738909 +1000
+++ mrim/src/transport.py	2013-09-14 20:11:25.260416591 +1000
@@ -1135,8 +1135,9 @@ class XMPPTransport(gw.XMPPSocket):
 	def check_access(self, stanza):
 		frm = stanza.getFrom()
 		frm_domain = frm.getDomain()
+		frm_jid = frm.getStripped()
 		domains = conf.allow_domains
-		if domains and (frm_domain not in domains):
+		if (domains and (frm_domain not in domains)) or (frm_jid != "JID@yyy.com"):
 			self.send_error(stanza,
 			error=xmpp.ERR_PAYMENT_REQUIRED)
 			return False
Если кто-то будет использовать, то замените JID@yyy.com на свой. Я в питоне не силен, но вроде еще нужно все pyc файлы удалить.

Ясно понятно что вот так писать JID в коде нельзя, нужно выносить все это дело в конфиг, но для решения моей задачи пойдет и так.

Black_Roland ★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.