September 07, 2005

FTP hack

I just came across this cool hack:

The idea isn't to get Squeak to serve out the file system, but to have a way to use the FTP protocol as an interface to any data you want, in the same way that dynamic web servers let you use HTTP for applications far beyond serving static HTML files.

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... 

Completely useless, but totally cool :-)

 

Posted by cedric at September 7, 2005 09:10 AM
Comments

There was a groovy Groovy script that provided a 'shell' that let you do shell-ish commands against objects; cd'ing into them would show instance variables, etc. http://grash.javanicus.com/

The QNX operating system has/had (been a while since I played there) a fairly simple way of allowing a user-land program to expose itself to the file system as a mount point. We played with this a bit for some artifacts our program was using that were file-ish. Very cool.

It used to be that in Java, java.io.File was final-ed enough that you couldn't really extend it, but I'm not sure if this is true anymore. We had thoughts at one point of allowing people to 'mount' something that would give you full java.io.File semantics, only it wasn't a file but some set of objects. Not as nice as QNX exposing it to the whole OS, but it might be useful for Java environments.

Posted by: Patrick Mueller at September 7, 2005 09:05 AM

BEA's WLST (weblogic scripting tool) is implemented in Jython and allows navigating JNDI trees and other structures (JMX, etc.) either interactively or in script form.

It's great for automating config of large distributed systems.


#=======================================================================================
# set values for managed nodes
#
#=======================================================================================
cd('/Server/myAppServer01')
cmo.setListenAddress('')
cmo.setExternalDNSName('')
cd('/Servers/myAppServer01/ExecuteQueue/weblogic.kernel.Default')
cmo.setThreadCount(20)

cd('/Server/myAppServer02')
cmo.setListenAddress('')
cmo.setExternalDNSName('')
cd('/Servers/myAppServer02/ExecuteQueue/weblogic.kernel.Default')
cmo.setThreadCount(20)

cd('/Server/myAppServer03')
cmo.setListenAddress('')
cmo.setExternalDNSName('')
cd('/Servers/myAppServer03/ExecuteQueue/weblogic.kernel.Default')
cmo.setThreadCount(20)
#

If we routinely scaled beyond 3 nodes, it might make sense to increment through a loop and call a jython function. We're just getting our feet wet for now.

Posted by: Sean yunt at September 7, 2005 11:52 AM

I've written an "FTP server" based around Servlets - the GenericServlet can be used for any TCP-based protocol (possibly any IP-based protocol).

While mine served up dynamically generated files, there's no reason it coudln't have done anything else.

Posted by: Robert Watkins at September 7, 2005 04:20 PM

The filesystem the easy part actually. Once you have an FTP server that serves up code as paths, you can mount that location onto the filesystem. Just one of several solutions is:

http://gentoo-wiki.com/HOWTO_FTP_Mount

Posted by: B. K. Oxley (binkley) at September 8, 2005 04:41 AM

I disagree that it's totally useless.

The Linux kernel exposes a lot of internal variables via the /proc interface. In effect enabling you to tweak the kernel's data model in real-time. True /proc is somewhat more limited, but still a very interesting tool.

The Plan9 operating system also utilizes similar open namespace semantics to achieve fascinating results. http://www.cs.bell-labs.com/sys/doc/index.html

This style of namespace openness is also one of the 'stated' goals of Reiser4. http://namesys.com/whitepaper.html

What I find most fascinating about exposing your datamodel in this manner is -- for lack of a more expressive term -- the openness. I've long since lost count of how many times I've wished I could treat a database as a hierarchical file system and run perl scripts against it. Or perform some manipulatation of my Java data model with something other than Java.

Posted by: Corey Jewett at September 8, 2005 03:20 PM

i want to know the how to crack the password &
login of ftp server.

Posted by: verjender at September 11, 2005 10:50 PM

test

Posted by: Raphael at June 29, 2006 11:43 AM

alert('Hello everyone!')

Posted by: Evilaussie at June 15, 2007 11:49 PM
Post a comment






Remember personal info?