OpenWrt Forum Archive

Topic: Annoucing availability of PyCI (Web UI) and l2sh (layer-2 shell)

The content of this topic has been archived on 6 May 2018. There are no obvious gaps in this topic, but there may still be some posts missing at the end.

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

Congrats on your official release.  My RS Pro and Netgate enclosure are at home waiting to be assembled when I get back from my holiday.

I also have a WRT54GL but with only 4MB flash, I don't think I'll be able to get it going with PyCI.

Will let you know how I go with my first RS Pro firmware build early in January.

Sir, will your routines work on OPENWRT CHAOS ?

Congratulations!

Miguel Wisintainer

(Last edited by basic4ever on 21 May 2016, 00:59)

The discussion might have continued from here.