Welcome to BlindEyes

BlindEyes is an open-source distributed framework designed to allow the distribution and chaining together of code in many popular languages.

BlindEye is a Web Interface front-end to BlindEyes. It allows the user to submit and view jobs, view statistics on the controller and the nodes, and other administrative functions. BlindEye is a completely separate project to BlindEyes, however it is the only front-end I've written. In the future I would also like to implement a command line interface in python or ruby. Since all communication with BlindEyes occurs through the database, a front-end can be written in any language that supports an object-relational mapper. Since I make no assumption as to what database the user wishes to use, I do not want to confine the user to any predefined database.

Why was this framework created and what does it offer me? I believe that typically, the most simple and straightfoward design will satisfy the majority of what people will use an application for, and satisfy it better. I have evaluated several popular grids implemented in JAVA and all of them were either too complex to use, too bloated, or took too long to set up. None offered what I wanted, to be operational in virtually as long as it takes me to install the application. BlindEyes offers this. In a matter of minutes after installing BlindEyes and BlindEye, you can have a distributed Hello World example working and implemented in any of over 10 languages. It is not always about how many things an application can do, but how efficient it can do the few things you need it to.

Why restrict the user to Java 1.6? Some of the most crucial technology in BlindEyes was made possible because of the new scripting features of Java 1.6. Jobs and Job Triggers can be created in many of the scripting languages that currently have extensions for 1.6. The powerful concept here is that the user defines the code in the system, not me. I only created the framework that the user ultimately dictates.

Features

BlindEyes provides the following functionalities:

  • Security: All communication between the Controller and the nodes is SSL protected.
  • Lazily Intialized Controller: There is no direct communication with the controller. All jobs are submitted to a database which the Controller periodically polls.
  • Support for over 10 languages with more added in future releases:
    native: bash, perl, python, ruby
    Java interpretted (JDK 6): beanshell, groovy, jruby, jython, sleep
  • Partitioning of Nodes and Jobs by defining Execution Groups
  • Unlimited Chaining together Jobs through Job Triggers
  • Ability to write custom plugins and invoke them in Jobs or Job Triggers. See the Distributed Nmap example.

Considerations

Please make note of the following:

  • This framework is currently in BETA evaluation mode. What does that mean? It means that the code is funtional, however, it is currently in heavy flux and the future releases will likely have modified entities. Therefore, please evaluate this framework to see if it servers your purposes, and if so, stay tuned for a non BETA release.
  • The exact security model of BlindEyes has yet to be determined. That said, all communication in blindeyes is SSL protected, and the BlindEye web front end should be all SSL protected. Certain plugins such as the Nmap Scanning requires root access, so I am currently testing everything as root. In the future I will be solidifying the security model.
  • BlindEyes is designed for people who know how to script or code. This framework is very straight forward and logical, however it does require at least a basic ability to program. That is, unless you are going to be using the built in plugins or you can copy and paste from the examples.
  • To maximize the effectiveness of this framework, you should be at least an intermediate programmer in one language.

License

BlindEyes is released under the GNU Lesser General Public License (LGPL), so free for both commercial and non-commercial use.

Note:
Required JDK: Sun 1.6 or later.