|
From: <jem...@fr...> - 2018-12-13 21:41:05
|
PythonInterpreter interp = new PythonInterpreter(....);
interp.getSystemState().path_hooks.insert(0, yourPathHookObject);
On Thu, 13 Dec 2018 22:10:55 +0100, Liam Coughlin <lsc...@gm...>
wrote:
> Thanks for the pointers, it gives me direction.
> Second question though -- how do I register it with the system, uh...
> outside the system. The documentation seems to indicate that you
> register the hook in the script that then imports things, where in, i
> want to setup how imports are down external to the scripting context and
> lock it down.
> Any suggestions?
> Thanks-L
> On Thu, Dec 13, 2018 at 7:10 PM wrote:
> I havent done this, but heres how Id go about it. Use JavaImporter or
> zipimporter as models to implement your own path_hook that you would
add
> to
> sys.path_hooks. Implement find_module and load_module, and most
> importantly get_data. The import mechanism prefers loading byte code
> to
> source code, so you should be able to store your compiled code instead
> of
> your source. I dont think the details you need to do this are
> documented
> anywhere, so youll need to read some of the Jython source.
> org.python.core.imp, org.python.core.util.importer,
> org..python.core.JavaImporter, org.python.modules.zipimport.*. Turn on
> verbose import printout.
>
> On Thu, 13 Dec 2018 13:26:54 +0100, Liam Coughlin
> wrote:
> > ---------- Forwarded message ---------
> > From: LIAM COUGHLIN
> > Date: Wed, Dec 12, 2018 at 11:57 PM
> > Subject: Re: [Jython-users] embedding jython
> > To:
> >
> > It got me a good chunk of where I needed to go. I can effectively
> > manage access to java Classes, and return bytecodefiddled classes
that
> > deny access to certain methods etc. so this got me 90% of the way
> there.
> >
> > Now Im left with 2 issues relating to the fact that my scripts are
> stored
> > in a persistence tier and I would much rather _not_ jump through
hoops
> > echoing things to the local filesystem. The first issue is that I
> would
> > like to not be constantly recompiling my scripts when a JVM starts
> up.
> > There seems to be a way for me to hook into the compilation chain
> capture
> > the bytecode and restart the compilation chain from Py.makeClass()
> > somewhere. It will be hacky, but it will be doable.
> > The second issue is a little more head scratchy. I read through the
> > jython book, cp. 8, Advanced Import Manipulation / Import Hooks. It
> > seems you can manipulate the import system quite a bit, but there
> doesnt
> > seem to be a default way add a custom resource resolver or whatever
so
> > that I can pull my scripts from memory to be imported rather then off
> the
> > filesystem somewhere.
> > I feel like I can probably attach this functionality into my custom
> class
> > loader, but I also feel like I might be missing something here, so I
> > thought I would ask.
> > Cheers-L
> >
> > On Tue, Dec 11, 2018 at 5:50 PM wrote:
> > What I have done to limit which Java classes Jython code can access
is
> to
> > set the classloader that jython uses:
> >
> > PySystemState.initialize(properties,postProps,
> > new String[]{""},
> > getClassLoaderForJython());
> >
> > Maybe this can help you, but its probably not as secure as you need.
> It
> > isnt as fine grained as a running with a custom SecurityManager. I
> > dont
> > see in the Jython source any opportunity to run with a
> SecurityManager
> > other than the system-wide one.
> >
> > On Tue, 11 Dec 2018 13:28:57 +0100, Liam Coughlin
> > wrote:
> > > Hello folks,
> > > Maybe its just that my google skills are failing me, but Im having
> > > trouble finding guidance for my use case embedding jython.
> > > Essentially, I would like to use jython as an embedded scripting
> > language
> > > within my application. That said, my application has fairly
> strict
> > > security and privacy constraints ( think HIPAA and PCI ) and the
> > scripts
> > > will be provided by end-users of a multi-tenant application. To
> that
> > > end I would like to be able to impose security constraints on what
> > java
> > > classes jython scripts can import, and what methods of java
> classes
> > > jython scripts can call ( depending on caller context, or user
> idenity
> > > etc. )
> > > In another world, I modified groovys runtime MetaClassHandle to
> inject
> > > security checks into every pass through the MOP. This allowed me
> to
> > > save compiled groovy code, and then just instantiate the compiled
> > groovy
> > > code and execute it.
> > > It seems like I could do this with jythons PyAdapter class or
> > something
> > > like that, or perhaps by overriding the classloader that is passed
> in
> > to
> > > the systemstate when you instantiate an interpreter. Does this
> sound
> > > like im on the right course?
> > >
> > > Ideally, I would like to compile my python scripts load them as
> > classes
> > > and have my security checks inserted/executed at runtime. I
> would
> > like
> > > to be able pre-compile things, and save the bytecode rather then
> > having
> > > to compile at system start time, or compile on demand, but beggars
> > cant
> > > really be choosers here -- Im more interested in whats possible
> then
> > > whats ideal at this point.
> > >
> > > In any case I cant seem to find a definitive guide on how to
> control
> > > exposure of java elements to jython - everything seems to be
> geared
> > > towards exposing jython objects to java which is the reverse of my
> use
> > > case.
> > > Any advice, links or any help at all really would be greatly
> > appreciated.
> > > Thanks-L
> >
> >
> >
> > Links:
> > ------
> > [1] mailto:lsc...@gm... [3]
> > [2] mailto:jem...@fr... [4]
> > [3] mailto:jem...@fr... [5]
> > [4] mailto:lsc...@gm... [6]
>
>
> Links:
> ------
> [1] mailto:jem...@fr...
> [2] mailto:lsc...@gm...
> [3] mailto:lsc...@gm...
> [4] mailto:jem...@fr...
> [5] mailto:jem...@fr...
> [6] mailto:lsc...@gm...
|