jquast / x84

A python telnet/ssh server for modern terminals. In spirit of classic software such as ami/x, teleguard, renegade, iniquity.
http://x84.readthedocs.org/
Other
373 stars 56 forks source link

x84 2.0.15 enabling nodechat extra triggers AttributeError: 'int' object has no attribute 'code' #299

Closed ExileInParadise closed 6 years ago

ExileInParadise commented 6 years ago

I could really use an experienced Python guru's advice on how to modify nodechat.py to work with x/84 2.0.15 - currently it tries to work then runs into an exception I can't interpret.

BEHAVIOR Entering the 'nodechat' module from the main menu, the node chat displays. Entering regular text works. Hitting ENTER, or hitting special keys, or entering / commands generates the following exception:

ERROR MESSAGE Sun-05-13 10:25AM INFO session.py:674 sysop[ssh] runscript 'nodechat' Sun-05-13 10:25AM ERROR session.py:389 sysop[ssh] File "/home/bbs/lib/python2.7/site-packages/x84/bbs/session.py", line 363, in run Sun-05-13 10:25AM ERROR session.py:389 sysop[ssh] self.runscript(self._script_stack.pop()) Sun-05-13 10:25AM ERROR session.py:389 sysop[ssh] Sun-05-13 10:25AM ERROR session.py:389 sysop[ssh] File "/home/bbs/lib/python2.7/site-packages/x84/bbs/session.py", line 705, in runscript Sun-05-13 10:25AM ERROR session.py:389 sysop[ssh] value = module.main(*script.args, script.kwargs) Sun-05-13 10:25AM ERROR session.py:389 sysop[ssh] Sun-05-13 10:25AM ERROR session.py:389 sysop[ssh] File "/home/bbs/default/main.py", line 224, in main Sun-05-13 10:25AM ERROR session.py:389 sysop[ssh] gosub(item.script, *item.args, *item.kwargs) Sun-05-13 10:25AM ERROR session.py:389 sysop[ssh] Sun-05-13 10:25AM ERROR session.py:389 sysop[ssh] File "/home/bbs/lib/python2.7/site-packages/x84/bbs/session.py", line 70, in gosub Sun-05-13 10:25AM ERROR session.py:389 sysop[ssh] return getsession().runscript(script) Sun-05-13 10:25AM ERROR session.py:389 sysop[ssh] Sun-05-13 10:25AM ERROR session.py:389 sysop[ssh] File "/home/bbs/lib/python2.7/site-packages/x84/bbs/session.py", line 705, in runscript Sun-05-13 10:25AM ERROR session.py:389 sysop[ssh] value = module.main(script.args, script.kwargs) Sun-05-13 10:25AM ERROR session.py:389 sysop[ssh] Sun-05-13 10:25AM ERROR session.py:389 sysop[ssh] File "/home/bbs/default/nodechat.py", line 369, in main Sun-05-13 10:25AM ERROR session.py:389 sysop[ssh] otxt = readline.process_keystroke(inp) Sun-05-13 10:25AM ERROR session.py:389 sysop[ssh] Sun-05-13 10:25AM ERROR session.py:389 sysop[ssh] File "/home/bbs/lib/python2.7/site-packages/x84/bbs/editor.py", line 399, in process_keystroke Sun-05-13 10:25AM ERROR session.py:389 sysop[ssh] keystroke.code in self.keyset['refresh']): Sun-05-13 10:25AM ERROR session.py:389 sysop[ssh] Sun-05-13 10:25AM ERROR session.py:389 sysop[ssh] AttributeError: 'int' object has no attribute 'code' Sun-05-13 10:25AM ERROR session.py:342 sysop[ssh] resume main after general exception in nodechat

NOTES It appears blessed (and terminal which wrap it) have a code object, so it seems that the keystroke.code is referring to an underlying int, rather than the keystroke itself? Python noob so I am not sure I am interpreting this stack dump correctly.

ENVIRONMENT: x/84 2.0.15 on Python 2.7 from pip install in a virtualenv $ python --version Python 2.7.14 $ pip list Package Version asn1crypto 0.24.0 bcrypt 1.1.0 blessed 1.9.5 cffi 1.7.0 CherryPy 3.6.0 cryptography 2.2.2 ecdsa 0.11 enum34 1.0.4 feedparser 5.1.3 html2text 2014.12.29 idna 2.6 ipaddress 1.0.22 irc 11.0.1 jaraco.timing 1.1 jaraco.util 10.6 more-itertools 2.2 paramiko 1.18.3 pip 10.0.1 pyasn1 0.1.7 pycparser 2.10 pycrypto 2.6.1 pyOpenSSL 17.5.0 python-dateutil 2.3 requests 2.5.1 sauce 1.1 setuptools 39.1.0 six 1.9.0 sqlitedict 1.1.0 wcwidth 0.1.7 web.py 0.37 wheel 0.31.0 x84 2.0.15 xmodem 0.3.2

haliphax commented 6 years ago

That is not core x84, and so it will be handled in the x84-extras repository's issues.

https://github.com/x84-extras/nodechat/issues/1