问题描述
我正在尝试使用 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 (将#修改为@)