Ensure metasploit rpc service is warmed and healthy up before accepting requests #15022
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Before
The metasploit service boots up, and defers creating a framework object until the first request to the running RPC service is received. This then triggers database connections, migrations, etc, which can raise errors:
After
The sinatra application is first warmed up, and verified that it has successfully booted up before attempting to bind the rpc service on the host and allow connections.
Verification
Run the application and ensure it works:
With Puma:
Now break something within the rpc service, easiest solution is modifying anywhere in framework to raise an unexpected exception. I divided by zero in the core/framework.rb initialize method for instance:
Ensure that curl requests still work:
Curling the health check:
Verifying RPC client
Run the the server:
Connect with the client and confirm that the new method works as expected: