As noted in several places, Avi Bryant thought up a very clever hack: having paths in an FTP server actually browse his Smalltalk image.
Cedric make the observation:
The article illustrates the challenge by creating a dynamic FTP server that exposes the internals of a Smalltalk application. Of course, it would be equally interesting to expose a Java application this way and browse the packages, classes and methods. You could also imagine creating a file system (/dev/java ?) that would let you create an object with touch and remove it with rm...
The next step is pretty clear. The FTP server should not just browse Java source, but should compile on upload with the upload failing if the compilation fails. Alternatively, the server would keep track of compiling and non-compiling code so that one could create and edit Java source files, but the system would distinguish between compiling and non-compiling sources. In either case downloads retrieve the original Java source (or are based on file extension).
Lastly, successful compilation of uploads would use class loader magic to affect the running system. One could then work on the live, running FTP server itself with GET
, PUT
and DELETE
. Or, using any of the various FTP mount solutions, do the same work with cp
, mv
and rm
as suggested by Cedric. Now that's a cool hack.
2 comments:
I think you probably realize this, but just to make sure: what you're describing - being able to use the FTP interface to update the code of the running FTP server - is precisely what the Smalltalk hack lets you do....
But of course! I want to do the same thing with Java classes and class loaders to modify the running JVM. :)
Post a Comment