Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Dynamic loader #10 #47

Open
wants to merge 15 commits into
base: master
Choose a base branch
from
Open

Conversation

drosenbauer
Copy link

Includes changes for #23, so all changes over in PR #45 are included. This branch also includes:

  1. A dynamic classloader IsolatingGroovyClassLoader that will pull items down from Groovy's Grape repository at runtime. This also sets things up to support Groovy payload generators in the future.
  2. A new annotation, @DynamicDependencies, which supports complex expression-based dependency resolution, rather than the DynamicDependencies interface. This allows us to skip initializing the class before loading dependencies. GroovyShell is used to resolve expressions. Command line arguments are supported with the arg binding.
  3. Tests for most payloads have been updated to use the dynamic classloader. The MyFaces tests are skipped.

Since there were lots of issues merging, if this is fine, I'll revoke PR #45. I'd rather do this all at once so I can stop working in these branches. :)

@drosenbauer
Copy link
Author

openjdk7 build is broken again, will fix it...

@drosenbauer drosenbauer reopened this May 25, 2016
@drosenbauer
Copy link
Author

I believe I've stabilized this build. I am not using the Groovy Grape.grab anymore, because it seemed to have some timeout issues via Ivy. There's an open Ivy issue to set the timeout, but it currently doesn't support it. If the JAR was partially downloaded from Maven Central when the timeout occurred, it would never run in the future. I switched to the same JBoss library used by @mbechler in the test harness, although using Aether directly is probably a better idea still. That can be a future change.

The POM now has all JARs set as "provided" apart from those needed for exploits. All payloads will dynamically load their dependencies.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

1 participant