moloch-- / RootTheBox

A Game of Hackers (CTF Scoreboard & Game Manager)
http://root-the-box.com/
Apache License 2.0
928 stars 292 forks source link

Start Issue - unexpected keyword argument 'io_loop' #153

Closed eljeffeg closed 6 years ago

eljeffeg commented 6 years ago

I've gotten everything to work up until the --start. I get this error.

jeff@ubuntu:/usr/local/RootTheBox$ sudo ./rootthebox.py --start
[I 180528 09:37:21 GameHistory:53] Loading game history from database ...
[I 180528 09:37:21 GameHistory:67] History load complete.
Traceback (most recent call last):
  File "./rootthebox.py", line 467, in <module>
    start()
  File "./rootthebox.py", line 43, in start
    from handlers import start_server
  File "/usr/local/RootTheBox/handlers/__init__.py", line 231, in <module>
    io_loop=io_loop
TypeError: __init__() got an unexpected keyword argument 'io_loop'
eljeffeg commented 6 years ago

Looks like the issue is Tornado. I downgraded the version to tornado==4.4.3 and it's now running fine. I found some threads where versions >= 4.5 may have this issue.

moloch-- commented 6 years ago

This is generally from breaking changes in Tornado v5, so anything prior to that should work.

eljeffeg commented 6 years ago

Cool - I tried Tornado 4.5.3 and it does appear to work fine. I've specified it in the requirements of my fork if you want me to issue a pull request until you get around to looking at the changes in v5. Also added a check for Python2 or Python3 so the correct depends script runs. https://github.com/jeffg2k/RootTheBox

I'm still comparing RootTheBox to other CTF software, but I really like it. So far, I think I like RTB and CTFd the most. On RTB, there are a few things I'd like to work on if I do use it. Right now it is very Offensive focused, where my use is Defensive (Digital Forensics / Incident Response / Malware Analysis). Not sure if I care for the whole $ / bank setup, though I understand storyline aspect. I think I rather have an option to just reflect points / score. I'd also like an option that doesn't focus on teams, just individual players. I wish the hints were tied to the flags and not the Box. Would also like to see penalties for missed questions after the first attempt to prevent brute forcing answers.

moloch-- commented 6 years ago

Yea, RtB is less maintained than it used to be just because my day job consumes all my time these days :) --I used to work with ColdHeat (developer of CTFd) and that's a great piece of software too and from your description I think it fits your use case a bit better. I'd love to keep adding features and configuration options to RtB but I simply don't have the time these days :(

eljeffeg commented 6 years ago

After looking at the organization and code structure, I think I like RtB better. I thought the plugin structure of CTFd looked cool, but RtB is easy to understand and modify. And I don't like how CTFd holds back themes and features for the hosted services and purchase. So I've started working on the features I described above. One thing I'm not sure how best to integrate if you decide to pull the changes is updates to the db. If I add in new columns or tables, how to best provide the ability for users to upgrade those.

moloch-- commented 6 years ago

@jeffg2k Happy to take a look at any pull requests, the best way would be to integrate or write a few wrapper scripts around Alembic, which is designed for migrating SQL Alchemy schemas

eljeffeg commented 6 years ago

@moloch-- If you have time, might you be able to go through your issues and close those that have been addressed. Several appear to be old issues that have been resolved, such as 124, 133, 136. As I'm working on the code, I hope to review the issues and enhancement requests, some I'm already working on.

Also, would you prefer I do my pull requests in small parts or wait until I get more completed with my changes? Is this the best way to converse or do you have another method if I have questions?

eljeffeg commented 6 years ago

Might make sense for me to create a new branch since I'm making a lot of additions - 0.7.0 beta or something. Just not sure how a pull request works on a branch - haven't done that before.