OpenWrt Forum Archive

Topic: Gargoyle -- (another) new Web Interface for OpenWrt Kamikaze

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.

For the past several months I've been working on a new web interface for OpenWrt, which I'm calling Gargoyle, and today I'm releasing the first beta version.  You can download packages and/or firmware as well as learn more by going to the project homepage located at http://www.gargoyle-router.com

Gargoyle takes a very different philosophical approach to interface design than X-Wrt or what I've seen of the new LuCI. Both X-Wrt and LuCI seem to be designed with the goal of providing the absolute maximum functionality possible.  However, this often comes at the expense of making the interface more difficult to use, and can turn off novice users.  There seems to be a belief that open-source software should be designed for power-users, without much thought to those with  less expertise.  Currently all router web interfaces that place a strong emphasis on ease-of-use are proprietary (their licenses do not permit redistribution of modified versions of their code without the author's permission). 

Gargoyle aims to be the first open-source web interface that places a strong emphasis on usability, and aimed at less experienced users.  Because Gargoyle runs on top of OpenWrt, a more experienced user can also configure extra functionality relatively easily.

Gargoyle includes a custom bandwidth monitoring package, a customized version of minihttpd (though the customization allows better password protection, not any part of the  interface itself), a new package for performing dynamic dns updates (similar to the ddns-scripts package which I submitted a few months ago, but written in C to be faster and linked to MatrixSSL to allow updates via https) and a custom set of QoS scripts (I found the current default OpenWrt implementation a bit convoluted).

Gargoyle is an open-source project and contributions are very, very welcome.  I am releasing it under the terms of the GPL v2.0, with an exception/clarification that states that it may be modified to configure proprietary back-end software so long as all portions of the web interface are released under the terms of the GPL.  See the FAQ (gargoyle-router.com/faq.html#qfoss) for more details.

Hi,

My comment for your explanation texts, e.g. in http://www.gargoyle-router.com/screensh … n_ddns.jpg

For me, it would be nice to be able to hide the explanation text and show some button instead. A gui with explanation texts tends to create too long configuration pages, and causes it harder to read. Normally, you just want to read those texts only once.

As I wrote, this is my personal thought, but I also want to use a Gui like x-wrt or config files directly...

Otherwise, a clean design!

(Last edited by Qwerto on 15 Jul 2008, 05:05)

You certainly raise a valid point.  However, I think it is important that there be some explanation available for some configuration options that are not necessarily self-explanatory.  I want the interface to be usable by the widest possible audience, and that means explaning some of the more esoteric options.  On the other hand, as you say, the text certainly makes the interface more awkward to navigate, particularly the QoS sections.   The best solution may be either allowing users to collapse/expand these text boxes and/or a global configuration variable that enables/disables them.  I will certainly keep this in mind for the next release.

I would go for the collapse/expand method.

Since you aims towards the "widest possible audience", it might be good to have the textboxes expanded as default and then save the states in some file so you don't have to collapse them again the next login.

This feature is now implemented in the svn and will be present in Beta2 which I'll release within a month or so. 

Thanks for your suggestion!

Is it possible to build Gargoyle for the current SVN head of kamikaze? I glanced at the gargoyle stuff and tried starting a build, but then I saw it fetched the last stable version, which is not really interesting for me.
Is there a semi-simple way to get gargoyle built against head?

Actually I'm working on this right now.  I've been in touch with a guy who's really interested in getting Gargoyle working with his fonera+, which requires an update in the trunk.  Also, I want to be ready to release Gargoyle for Kamikaze 8.08 soon after it comes out next month.

I'm creating an alternate build script and patch-set for the trunk right now.  There are likely to be a few quirks at first since a lot has changed, but I'll post here as soon as I have a build script working that can produce usable images/packages, even if there are some quirks.

ebishop wrote:

Actually I'm working on this right now.  I've been in touch with a guy who's really interested in getting Gargoyle working with his fonera+, which requires an update in the trunk.  Also, I want to be ready to release Gargoyle for Kamikaze 8.08 soon after it comes out next month.

I'm creating an alternate build script and patch-set for the trunk right now.  There are likely to be a few quirks at first since a lot has changed, but I'll post here as soon as I have a build script working that can produce usable images/packages, even if there are some quirks.

Cool. I've got two routers that both require rather recent revisions, and I'd love to test Gargoyle. Will I have to do a complete build including toolchain+image, or will it be possible to re-use an existing build dir?

Interesting. Let's know once it is integrated into the OpenWRT SVN trunk. This way, I can build the firmware with Gargoyle for my LaFonera.

I have Fonera ap, with kamikaze installed (from trunk svn 11879). I installed your webif on my device, and I'am impressed smile it works nice, but STATUS info doesn't show any configuration (IP, mask, etc.) Also, when I switch encryption to wpa2/wpa etc. the wifi is switching to disabled, so it's not functional. However nice job, I'm sure you are working on all problems smile.

(Last edited by lgolebio on 20 Jul 2008, 14:58)

I've added a script to the Gargoyle svn (full-build-trunk.sh) which should allow you to build from trunk vs. kamikaze 7.09 source.  I've also added a description of the build process which can be found here: http://gargoyle-router.com/developer.html (scroll down to see the build section of the document) 

The script seems to work fairly well, except that there seems to be quite a few issues when building recent revisions of the trunk for atheros (e.g. la fonera).  In particular, wireless doesn't seem to work properly, as noted by Igolebio above.  I am fairly certain this is an issue with the trunk itself, not my code.  My trunk build script includes a variable you can easily set to checkout any revision you want, so you may be able to play with that and find a revision that works.  If you can find a UCI configuration that works on a recent build, even if Gargoyle isn't working properly please let me know -- if the problem has to do with my configuration utility I want to fix it as soon as possible. 

See the url above for lots more details on the trunk build script.

The other issue noted by Igolebio above, the non-functional status/overview section on la fonera on the trunk has been fixed in the Gargoyle svn.

Repvik: The Gargoyle build script uses a completely fresh build directory for each build, you can't re-use a build directory.

Yoonix: In response to your concern about disk usage on la fonera, I should point out that the bulk of the extra space used on the la fonera (and the build for atheros in general) is needed because hostapd and wpa-supplicant are needed for wireless encryption with atheros, and these depend on libopenssl.  libopenssl takes up more space, by itself, then the other Gargoyle packages COMBINED.  It's HUGE -- over a megabyte installed.  I'm not aware of any good work-arounds for this, other than disabling WPA encryption for wireless, which is a very bad idea, given how easily WEP/mac filtering is cracked.

That's very pretty.
In what language was it written? With which web server does it run?

The back-end scripts are in haserl, like X-wrt, but unlike X-wrt most of the interface is written in javascript, which computes the commands for the back-end to run.  This strategy makes it much faster.  Some specialized back-end programs were also written in C (e.g. the bandwidth monitor & the dynamic dns updater).

The web server is a modified version of minihttpd, adapted to allow password protecting everything with the router's root password.  Also, https is enabled via linkage to matrixssl.  A bunch of bugs in the matrixssl linkage in the openwrt package were corrected to make it work properly (including one bug which prevented the serving of any page greater than 16K!).

More information about the implementation can be found at http://gargoyle-router.com/developer.html

ebishop wrote:

I've added a script to the Gargoyle svn (full-build-trunk.sh) which should allow you to build from trunk vs. kamikaze 7.09 source.  I've also added a description of the build process which can be found here: http://gargoyle-router.com/developer.html (scroll down to see the build section of the document) 

The script seems to work fairly well, except that there seems to be quite a few issues when building recent revisions of the trunk for atheros (e.g. la fonera).  In particular, wireless doesn't seem to work properly, as noted by Igolebio above.  I am fairly certain this is an issue with the trunk itself, not my code.  My trunk build script includes a variable you can easily set to checkout any revision you want, so you may be able to play with that and find a revision that works.  If you can find a UCI configuration that works on a recent build, even if Gargoyle isn't working properly please let me know -- if the problem has to do with my configuration utility I want to fix it as soon as possible. 

See the url above for lots more details on the trunk build script.

The other issue noted by Igolebio above, the non-functional status/overview section on la fonera on the trunk has been fixed in the Gargoyle svn.

Repvik: The Gargoyle build script uses a completely fresh build directory for each build, you can't re-use a build directory.

Yoonix: In response to your concern about disk usage on la fonera, I should point out that the bulk of the extra space used on the la fonera (and the build for atheros in general) is needed because hostapd and wpa-supplicant are needed for wireless encryption with atheros, and these depend on libopenssl.  libopenssl takes up more space, by itself, then the other Gargoyle packages COMBINED.  It's HUGE -- over a megabyte installed.  I'm not aware of any good work-arounds for this, other than disabling WPA encryption for wireless, which is a very bad idea, given how easily WEP/mac filtering is cracked.

Brilliant. I'll kick off a build now and test it on my wl500gp

ebishop wrote:

The web server is a modified version of minihttpd, adapted to allow password protecting everything with the router's root password.  Also, https is enabled via linkage to matrixssl.

Have you tried to see if Gargoyle will work without a password? Some of my friends who have their LaFonera device connected behind their main NAT/Firewall router prefer their LaFonera to have no root password for an easy access. As such, the X-wrt gives them a Permission denied message when they try to access the webGUI on their LaFonera device.

(Last edited by mazilo on 22 Jul 2008, 03:59)

Thanks to a user named phobos, I now have Gargoyle working with the La Fonera+   I'm still having problems building from trunk for Atheros, but phobos has provided a patched version of the ar2313 driver that will work with Kamikaze 7.09.  The new firmware images I've uploaded do not work with the older, standard versions of the La Fonera, but the regular Atheros firmware is still available and should work fine on these models.

mazilo: I've implemented a new feature that allows you to turn off password protection of the web interface if you want.  Due to security concerns, this feature is obviously not enabled by default (i.e. there IS, by default, a password).  This feature is available in the SVN, and will be released with Beta 2.

Also, I'm officially announcing that Gargoyle Beta 2 will be released on Monday August 25th.

I have just released Beta 3 of Gargoyle.  This new version includes an access restriction section, as well as a bandwidth quotas section, so that you can allocate/limit bandwidth appropriately to connected hosts.  The QoS implementation has also been improved dramatically to better handle layer 7 matching.  (Gargoyle doesn't use the default QoS scripts, since the default QoS doesn't include independent traffic classes for inbound and outbound traffic)

Beta 4 of Gargoyle has now been released.  Gargoyle is now based entirely on the Kamikaze 8.09 branch.

ebishop wrote:

Beta 4 of Gargoyle has now been released.  Gargoyle is now based entirely on the Kamikaze 8.09 branch.

Keep up the great work, thank you.

Beta 5 of Gargoyle has now been released.  This release includes the ability to easily configure a wireless bridge via WDS or client bridge.  Both modes are supported on both broadcom and atheros wireless hardware.  Other enhancements include the ability to scan for wireless networks, access restriction white-listing and the ability to easily restore default configuration settings.

Is the atheros build patched to fix the switch configuration issue?  .e.g. dev.luci.frefunk-halle.net/freifunk-snapshots/_patches/atheros-buildroot.patch

Testing gargoyle beta 5 on DIR-300 atheros it seems that the only mode of operation supported is for the Internet to be connected via wireless and the LAN on the ethernet ports.  In other words, it seems that the switch configuration patch is not supported, or if it is then the configuration of the switch is not set up.

Is there a way to get this software to work properly on DIR-300 atheros?

Gargoyle is now out of beta, version 1.0.0 (Final) of Gargoyle is now out.  This release includes significantly improved bandwidth quota management, a new implementation of the access restrictions section and lots of minor bugfixes and improvements.

reddust: sorry, I didn't see your comment before, since after previous releases this thread has gotten very few comments.  I'll look into this immediately.

Hi ebishop,
          Great work!

          I want to port the gargoyle gui onto my openwrt firmware build image. I want to use your packages source and build the gui packages locally and want to l install on my firmware image (I don't want to go with the prebuild packages).  Is there any way to do this?
         I want this for dir-300.

Thanks!

Yes.  Checkout the Gargoyle SVN (see download page for instructions on doing this), then run "make custom."  This will automatically download openwrt source and packages, and then run "make menuconfig" for you to configure the firmware.  Configure the packages you want, hit ok, and it will build your custom image/packages for you.  The package files will be in built/custom and the firmware images will be in images/custom.

The discussion might have continued from here.