如何解决无法使用 ejabber_django bridge.py 登录到 ejabberd
我正在尝试使用 django-ejabberd-bridge.py 方法针对 django 对 ejabberd 进行身份验证,但始终失败。 我正在使用 django 管理命令 这是代码..
import struct
import sys
from django.core.management.base import BaseCommand
class Command(BaseCommand):
def read(self):
(pkt_size,) = struct.unpack('>H',sys.stdin.read(2))
pkt = sys.stdin.read(pkt_size)
cmd = pkt.split(':')[0]
if cmd == 'auth':
u,s,p = pkt.split(':',3)[1:]
if u == "wrong":
self.write(False)
else:
self.write(True)
self.read()
def write(self,bool):
if bool:
sys.stdout.write('\x00\x02\x00\x01')
else:
sys.stdout.write('\x00\x02\x00\x00')
sys.stdout.flush()
def handle(self,*args,**options):
try:
while True:
self.read()
if not options.get("run_forever",True):
break
except Exception:
self.stdout.write("Uups")
它说我的身份验证失败。 但是,下面的代码有效,我可以登录到 xmpp 客户端..
import sys
import struct
def read():
(pkt_size,sys.stdin.read(2))
pkt = sys.stdin.read(pkt_size)
cmd = pkt.split(':')[0]
if cmd == 'auth':
u,3)[1:]
if u == "wrong":
write(False)
else:
write(True)
elif cmd == 'isuser':
u,s = pkt.split(':',2)[1:]
write(True)
elif cmd == 'setpass':
u,3)[1:]
write(True)
elif cmd == 'tryregister':
u,3)[1:]
write(True)
elif cmd == 'removeuser':
u,2)[1:]
write(True)
elif cmd == 'removeuser3':
u,3)[1:]
write(True)
else:
write(False)
read()
def write(result):
if result:
sys.stdout.write('\x00\x02\x00\x01')
else:
sys.stdout.write('\x00\x02\x00\x00')
sys.stdout.flush()
if __name__ == "__main__":
try:
read()
except struct.error:
pass
我不明白为什么 .谁能帮我解决这个问题!抱歉我的英语不好。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。