Version 25 (modified by Shawn A. Wilson, 6 years ago) (diff)

--

IOVAR Web - Welcome to Lannocc Technologies Open Wiki

More information will be added here soon. Want to help? Contact open@… to comment, ask a question or request an account.

Source Documents:

The source code is tracked in Mercurial and accessible at http://lannocc.org/iovar/hg.

About the Project

A shell for the web. IOVAR is a general-purpose collection of Java-based utilities.

As a web shell, a distinguishing characteristic is the addition of the $PWU environment variable as a superset to the standard $PWD (working directory). $PWU (parent working universe) represents the working uri space at which to root the relative working directories. XML is the preferred description language for structured data.

SECURITY WARNING: The IOVAR Web Shell is currently in alpha single-user status and runs with the privileges of the Tomcat user. It may not be safe to use.

More information might be found in the README file.

Project Status (com.iovar.web)

The shell is currently in alpha status and tested on Linux. It may not work on other platforms.

To reach beta status, the shell will:

  • use an open source license
  • have an improved visual interface for shell Interactive mode (/$)
  • parse and substitute environment variables (done)
  • automatically search $PATH when looking for an executable (done)
  • support hash-bang (#!) script execution (done)
  • offer conditional command execution with '&&' and '||'
  • chain I/O between commands with '|' (done), and redirect I/O with '<' and '>'
  • make last command exit code (HTTP status) available in '$?'
  • make command arguments available in '$1', '$2', etc. (done)
  • provide /usr/bin/xslt for processing XML data with stylesheets (done)
  • be released as a single downloadable archive

Wiki TODO

Shell Parsing / Processing

The shell is (currently) trying to follow a Bash-like syntax and behavior, but this may change. It currently supports the basics, like:

  • command call vs. argument processing w/ white-space removal
  • quoted text, hard (') vs soft (") quotes
  • variables and substitution (${...})
  • statement separator (semicolon or eol)
  • i/o pipe (vertical bar)

Executables

Executables currently supported are Java servlets and web shell scripts. They generally live in /bin (standard utilities), /sbin (system administration), /usr/bin, /usr/local/bin, /opt/bin, etc.

  • === Working ===
    • /bin/cat (Java) - output the input; fetch resources and output together, in order
    • /bin/delete (Java) - remove resource (HTTP DELETE)
    • /bin/echo (Java) - output its arguments
    • /bin/export (Java) - export variable to parent environment
    • /bin/get (Java) - fetch resource contents (HTTP GET)
    • /bin/post (Java) - initiate (execute) resource, with optional payload (HTTP POST)
    • /bin/put (Java) - place resource contents (HTTP PUT)
    • /bin/pwd (shell) - print working directory
    • /bin/pwu (shell) - print working universe
    • /bin/set (Java) - print environment variables
    • /bin/sh (Java) - shell
    • /usr/bin/basename (Java) - strip all but final path segment
    • /usr/bin/head (Java) - output beginning of content
    • /usr/bin/tail (Java) - output end of content
    • /usr/bin/xslt - xml transform with stylesheet
  • === Planned ===
    • /bin/grep - filter for pattern
    • /bin/ls - list resources - will utilize /proc/cache
    • /bin/mkdir (shell) - create directory resource
    • /bin/rm (shell) - remove resource
    • /bin/rmdir (shell) - remove directory resource
    • /bin/touch (shell) - create resource
    • /sbin/modprobe - load system handler (from /lib)

Devices

Devices provide access to resources on the local machine and around the web. They live in /dev and may be accessed as URI prefixes (file:, http:, etc.) representing a transport mechanism.

  • === Working ===
    • /dev/log - system logging
    • local: - (to be renamed /dev/war)
    • http: - http access
    • iojava: - (to be renamed /dev/local)
  • === Planned ===
    • /dev/dns - dns protocol
    • /dev/jdbc - (or call it /dev/sql ?)
    • /dev/ldap
    • /dev/local - loopback to exposed webapp http interface (files and servlets), rooted at webapp root (currently implemented as iojava:)
    • /dev/file - access to local filesystem, rooted at filesystem root
    • /dev/ftp
    • /dev/http
    • /dev/https
    • /dev/ssh
    • /dev/war - access to web application resource (files and streams) via servlet context.getResourceAsStream(), rooted at webapp root (currently implemented as local:)

Processes

Processes generally hold instance configuration/data and live at /proc.

  • === Working ===
    • /proc/shell - tracks ShellSession? instances (environment variables, etc.)
  • === Planned ===
    • /proc/cache - cache device access data
    • /proc/class - running java object instances

System Handlers

Loadable modules for representing an object (resource uri) in the standardized dir/file object system. They will live at /lib.

  • === Working ===
    • (just the implied file/url Java default handlers)

  • === Planned ===
    • /lib/dns - dns location/entry
    • /lib/ldap - ldap dn entry
    • /lib/java - java source file
    • /lib/sql - sql file / connection

Trac

For a complete list of local wiki pages, see TitleIndex.