PyCI (screenshots) and l2sh are now generally available for use with OpenWRT...
Download
=======
Here's how to get PyCI/l2sh into your OpenWRT build dir:
echo "src-svn pyci https://pyci.svn.sourceforge.net/svnroot/pyci/package" >> trunk/feeds.conf.default
cd trunk; ./scripts/feeds update ; ./scripts/feeds install -a
(Note: Not sure if you're supposed to just add it to "feeds.conf")
Alternatively, you can download/install the ipks from the Sourceforge site.
Important Note: PyCI requires that Python be patched before you can use it. See #6192 (you can fix an existing Python install by deleting one line in a file--see the patch). These patches--along with an updated version of Python--were submitted for inclusion into OpenWRT (see #6407. They just haven't made it into trunk yet.
PyCI
====
About
-------
PyCI (Python Configuration Interface) is a web-based configuration GUI written for OpenWRT. It is built with Python on top of the Tornado framework (Note: Original version was built on CherryPy) and features the Escape From The Web shell (a web-based terminal emulator that drops down, Quake-style when you hit the ESC key).
The primary philosophy of PyCI is this: If a config file lets you have as many entries as you want so should the GUI. For example, most web-based configuration interfaces will list two fields for entering DNS servers (primary and secondary). With PyCI's style of configuration you can enter as many DNS servers as you want!
Another key element to PyCI is the ability for users to edit configuration files directly. All configuration pages of PyCI include the ability to edit the config file directly. For example, the user administration page lets you edit /etc/passwd (and /etc/shadow) directly and the network interface configuration page lets you edit /etc/config/network directly.
PyCI has configuration elements for the following:
* dnsmasq (/etc/config/dhcp)
* ddns-scripts (/etc/config/ddns)
* OpenWRT's firewall (/etc/config/firewall)
* Network interfaces (/etc/config/network)
* QOS/Traffic shaping (/etc/config/qos)
* Static routes (/etc/config/network)
* Switch configuration (/etc/config/network)
* Wireless radios (/etc/config/wireless)
* Quagga (aka "Advanced Routing")
* Coova Chilli
* Cron
* Dropbear SSH (/etc/config/dropbear)
* NTP client (/etc/config/ntpclient)
* Backup & Restore (saves contents of /etc as a tarball)
* Hostname (/etc/config/system)
* Hosts (/etc/hosts)
* Init scripts (/etc/init.d and /etc/rc.d)
* System logs (dmesg and logread and elements of /etc/config/system)
* Timezone (/etc/config/system)
* Users and Groups (/etc/passwd, /etc/shadow, and /etc/group)
PyCI also provides some utility functions:
* Network speed test (command line and/or GUI fat client can be used)
* Common network utilities (ping, traceroute, tcpdump)
* Listening services (taken from netstat)
* System monitors with real-time graphs (CPU, load, network, and memory utilization)
* Firewall status (grid view of all your iptables rules).
Requirements
----------------
PyCI requires Python (full version--not just python-mini), python-sqlite3, python-openssl (which requires libopenssl), Tornado (which requires pycurl which requires libcurl) and about a megabyte of free space. You should be able to squeeze all of that (and a bit more) into an 8MB firmware but I haven't tried it. All dependencies should be selected automatically when PyCI is installed or enabled in 'make menuconfig'.
Notes
-------
PyCI is currently under heavy development so there are a few rough edges. If you encounter bugs please submit them on our Trac site.
FYI: PyCI was developed as an entry into the $200,000 RouterStation UI/Firmware Challenge. It was declared one of the grand prize winners (first place was a tie between PyCI and NETSHe). The current theme for PyCI includes the RouterStation logo (was a design requirement of the contest) but a more generic theme will be released soon (there really isn't anything else in PyCI specific to that platform).
l2sh
====
l2sh stands for "Layer 2 Shell". It is similar to the emergency access daemon (ead--which no one knows how to use ) in that it lets you log into your router remotely even if your IP configuration is hosed. It is a very simple python script that can act as both a server and a client. It is currently considered alpha quality (at best, hah!) but it really does work for its intended purpose. If anyone wants to help out I'd really appreciate it (my knowledge of layer-2 network programming in Python is severley limited).
l2sh doesn't have it's own project site yet but it will eventually. Right now I'm focused on improving PyCI.
Lastly...
======
All feedback is welcome! Also, I would love to hear about people running PyCI on platforms other than the RouterStation. I don't have any other hardware to test it with! I want to see if someone can get it running on a system with only 8MB of flash.