The Bunny System is a framework that demonstrates a different way to provide services on the internet. We use our own web server, Bunny, that communicates to a collection of C++ programs and a modified Drupal CMS. Drupal provides user management and form processing, as well as access control, which works seemlessly whether a remote C++ or Java client, or a web browser. We use the bunny web server.

Realtime Notifications and Streaming

Provides realtime notifications without using a client library or React.js, which didn't exist when this project started.

Uses standard javascript for communications to keep the system simple and efficient. Keepalive is used on the socket in streaming mode and the same connection is used for each request. There's no need for anything special and complicated to get realtime processing using HTTP.

Dynamic Pages

One of the main performance issues with normal web services is how to handle anonymous versus authenticated users on the system. Each of the pages on this system, including this one, are dynamic and provide slightly different pages for each user, for instance by placing the name and adding the "downloads" link for authenticated users. We use an HTML template that is precompiled with the complete css and js includes. To display the page the Bunny server makes remote calls to get the dynamic data and inserts that into the page template for each user. This keeps the page display time to about 50ms, with the remote calls taking about 5 ms, for both anonymous and authenticated users.

Remote Data

We can request a user's info with "get_user_info" or check whether a user has permissions to a specific URL with "check_permissions", and the results all come back to Bunny in JSON format, which makes it flexible. We can also request completely formatted HTML pages from the Drupal CMS or access the log files on our file server, or run an application.

A page request from the browser starts with the Bunny web server, which sends a message to BunnyMan that then formats the data and forwards a message to the BunnyFarm running in PHP. That PHP code then calls Drupal functions that call hooks in the Bunny Module to do the actual processing.

Flexible Communications

The Bunny System uses three different data serialization methods: JSON, XML and PHP serialize. Externally, the remote clients use ISO8583 that we've modified so it supports streaming of binary data. Basically we've added a new field type and use the ISO8583 message as a header to the actual payload, which can be any data type and any length.


Using the Bunny System we've created several applications: commerical card processing, internet IO, and system audit monitoring. They are all free to use right now on a limited basis, listed in their individual terms of service, but the basic limitation is 100MB of storage.

We also create custom applications, contact us if interested.

To access the system and the client source code, go to the "downloads" section after creating an account and signing on.