Thanks to visit codestin.com
Credit goes to github.com

Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 7 additions & 2 deletions monkey/monkey_island.py
Original file line number Diff line number Diff line change
@@ -1,12 +1,17 @@
from gevent import monkey as gevent_monkey

gevent_monkey.patch_all()

from monkey_island.cc.main import main


def parse_cli_args():
import argparse
parser = argparse.ArgumentParser(description="Infection Monkey Island CnC Server. See https://infectionmonkey.com")
parser.add_argument("-s", "--setup-only", action="store_true",
help="Pass this flag to cause the Island to setup and exit without actually starting. This is useful "
"for preparing Island to boot faster later-on, so for compiling/packaging Islands.")
help="Pass this flag to cause the Island to setup and exit without actually starting. "
"This is useful for preparing Island to boot faster later-on, so for "
"compiling/packaging Islands.")
args = parser.parse_args()
return args.setup_only

Expand Down
14 changes: 6 additions & 8 deletions monkey/monkey_island/cc/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@
from threading import Thread

# Add the monkey_island directory to the path, to make sure imports that don't start with "monkey_island." work.
from gevent.pywsgi import WSGIServer

MONKEY_ISLAND_DIR_BASE_PATH = str(Path(__file__).parent.parent)
if str(MONKEY_ISLAND_DIR_BASE_PATH) not in sys.path:
sys.path.insert(0, MONKEY_ISLAND_DIR_BASE_PATH)
Expand Down Expand Up @@ -46,9 +48,6 @@ def main(should_setup_only=False):


def start_island_server(should_setup_only):
from tornado.httpserver import HTTPServer
from tornado.ioloop import IOLoop
from tornado.wsgi import WSGIContainer

mongo_url = os.environ.get('MONGO_URL', env_singleton.env.get_mongo_url())
wait_for_mongo_db_server(mongo_url)
Expand All @@ -69,12 +68,11 @@ def start_island_server(should_setup_only):
if env_singleton.env.is_debug():
app.run(host='0.0.0.0', debug=True, ssl_context=(crt_path, key_path))
else:
http_server = HTTPServer(WSGIContainer(app),
ssl_options={'certfile': os.environ.get('SERVER_CRT', crt_path),
'keyfile': os.environ.get('SERVER_KEY', key_path)})
http_server.listen(env_singleton.env.get_island_port())
http_server = WSGIServer(('0.0.0.0', env_singleton.env.get_island_port()), app,
certfile=os.environ.get('SERVER_CRT', crt_path),
keyfile=os.environ.get('SERVER_KEY', key_path))
log_init_info()
IOLoop.instance().start()
http_server.serve_forever()


def log_init_info():
Expand Down
Original file line number Diff line number Diff line change
@@ -1,15 +1,16 @@
import logging
import threading

from gevent.lock import BoundedSemaphore

logger = logging.getLogger(__name__)

# These are pseudo-singletons - global Locks. These locks will allow only one thread to generate a report at a time.
# Report generation can be quite slow if there is a lot of data, and the UI queries the Root service often; without
# the locks, these requests would accumulate, overload the server, eventually causing it to crash.
logger.debug("Initializing report generation locks.")
__report_generating_lock = threading.Semaphore()
__attack_report_generating_lock = threading.Semaphore()
__regular_report_generating_lock = threading.Semaphore()
__report_generating_lock = BoundedSemaphore()
__attack_report_generating_lock = BoundedSemaphore()
__regular_report_generating_lock = BoundedSemaphore()


def safe_generate_reports():
Expand Down
3 changes: 2 additions & 1 deletion monkey/monkey_island/cc/ui/webpack.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,8 @@ module.exports = {
proxy: {
'/api': {
target: 'https://localhost:5000',
secure: false
secure: false,
changeOrigin: true
}
}
}
Expand Down
2 changes: 1 addition & 1 deletion monkey/monkey_island/requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ botocore==1.17.54
cffi>=1.8,!=1.11.3
dpath>=2.0
flask>=1.1
gevent>=20.9.0
ipaddress>=1.0.23
jsonschema==3.2.0
mongoengine==0.20
Expand All @@ -20,7 +21,6 @@ requests>=2.24
ring>=0.7.3
stix2>=2.0.2
six>=1.13.0
tornado>=6.0.4
tqdm>=4.47
virtualenv>=20.0.26
werkzeug>=1.0.1
Expand Down