Skip to the content of the web site.

Linux | KioskSetup

Currently the booth scripts have been incorporated into a Knoppix based livecd. This allows users to run straight from the cd or install to the hard drive by booting into single user mode. The default livecd has a default root password set, boothbox, ssh is disabled, and the default homepage is about:blank. I would recommend that the livecd be remastered to at the very least set a root passwd. Without a root passwd it would be trivial for someone to boot into single user mode. There are excellent remasterting documents at knoppix.net and it would be trivial to make these changes. The iso image can be downloaded from boothbox.sourceforge.net.

Firefox Customization

Most of the firefox settings are incorporated into the booth extension located on the root of the livecd. Although it ends in a .dsl extension it is actually just a gzip compressed tarball. It can safely be unpacked to a separate directory and the files edited. Within the extension is a file called guest.tar.gz (usr/share/booth/guest.tar.gz) it contains the contents of the guest user's home directory which is regenerated from the archvie each time Firefox is started. If the default homepage needed to be changed the user.js configuration file in the Firefox profile directory located in guest.tar.gz would need to be edited.

Example:

tar -xzf guest.tar.gz
cd guest/.mozilla/firefox/c2d9ocbh.default/
vi user.js

The following lines could be changed to whatever URL you wish:

user_pref("browser.startup.homepage", "about:blank");
user_pref("browser.throbber.url", "about:blank");

There are other configuration settings in the file that may be of interest such as proxy settings. After the changes have been made the archive needs to be repacked.

tar -cf - guest | gzip - > guest.tar.gz
rm -rf guest

In the Firefox profile directory there is a sub-directory called chrome which contains the userChrome.css file which can be edited to manipulate many of the UI elements. See FirefoxLockdown for more details and the example userChrome.css file.

Statistics

The latest version of booth has tinyproxy running locally on the machine and all web traffic is routed through it by default. This generates a log in /var/log/tinyproxy.log that can be parsed and emailed to an address at the end of the day. The time the email is sent can be controlled through cron in /etc/crontab. The program is only run if the file .boothstats exists in the guest home directory. The contents should be as follows:

To=foo@bar.org
From=kiosk@bar.org
SMTPServer=mail.bar.org

At 18:25 every day a list of all websites visited and the times they were visited will be mailed out. I've created an example script, boothstats.py? , that can be used to summarize some of the data.

Whitelist

Note that any version after 0.3.2 of the livecd based on DSL no longer uses the 'whitelist' program. Instead, all changes should be made through tinyproxy. In the tinyproxy.conf configuration file there is a line

FilterDefaultDeny
that permits the creation of either a whitelist or a blacklist in conjunction with the
/etc/tinyproxy/filter
file. For example to only allow users to access websites from within your domain you could use the following settings.

/etc/tinyproxy/tinyproxy.conf:
FilterDefaultDeny Yes

/etc/tinyproxy/filter:
mydomain.com

With these settings only traffic going to sites in mydomain.com will be allowed through. Note that all traffic is configured to go through tinyproxy in order to generate usage statistics for the kiosk.

To activate proxy in firefox browser you need to change guest/.mozilla/firefox/c2d9ocbh.default/user.js user_pref("network.proxy.type", 1); Tinyconf must run as user "guest" or as group "guest"

X Configuration

When using the Xvesa xserver in damn small linux you can specify the resolution and other settings by editing the file .xserverrc. This file is usually automatically generated on boot-up but you can specify your own if you wish to run at a lower resolution. Unpack the booth-0.x.x.dsl extension and extract the guest.tar.gz archive in usr/share/booth. After you've done this place a file called .xserverrc in the guest directory and repack the archives. Once the CD has been remastered with the changes you've made it will boot to the specified resolution. Here is an example .xserverrc:

exec /usr/bin/X11/Xvesa -mouse "/dev/psaux",5 -screen 800x600x32 -shadow -nolisten tcp -I &>/dev/null 

Printing

There is currently printing support in the form of cupsys-client. Printing can be configured by setting the

ServerName
configuration variable in /etc/cups/client.conf to the CUPS server you've setup. All print jobs will be directed to the CUPS server specified. This file can be found in the booth-0.x.x.dsl extension in the root of the livecd image.

Currently using printer hooked up directly to the kiosk will not work. I do not plan on supporting this since I feel it is better to setup a seperate print server especially if there are more then one kiosk.

Terminal Access

By default the livecd will boot straight into X and start firefox along with some helper scripts running in the background. However, it is useful to be able to have terminal access for debugging and remastering purposes. Terminal access is available via single user mode. At the boot prompt type 'dsl single', after the hardware auto-detection is completed you will be prompted for a root password. The default root password for the livecd is 'boothbox'.

Slideshow Mode

Firefox can be configured to act as a static or dynamic display. When combined with a bit of javascript a slideshow can be created, eg enginfo. A few things need to be changed from the standard booth setup. First of all popups will likely need to be allowed. As per the previous section on Firefox customization add the setting

user_pref("dom.disable_open_during_load", false)
to allow popups. The .xinitrc file in guest.tar.gz should be modified and the inactivity, xscreensaver, and icewm lines should be commented out. Much thanks to Koji Fujita for putting together a transparent x cursor so that the pointer is not displayed. His steps were as follows:
Create a directory called /home/guest/.icons/default/cursors/

Copy a completely transparent PNG file to the directory.

Create a file: 'left_ptr.conf' containing the following line:

<verbatim>32 0 0 blankCursor.png</verbatim>

(where blankCursor.png is the name of the transparent PNG file)

- Run: 'xcursorgen left_ptr.conf left_ptr' and it should create a cursor
file from the PNG file.  (http://www.xfree86.org/4.4.0/xcursorgen.1.html)

Only the pointer cursor will be invisible.  All of the other cursors will
still appear (for example, when pages are loading the watch cursor will
appear).

To remove the cursor, simply delete the file.

Koji also figured out how to disable screen blanking by adding the following lines to the .xinitrc file in guest.tar.gz:

setterm -blank 0 -powersave off -powerdown 0
xset s off

To disable the status bar the userChrome.css file needs to be edited, see FirefoxLockdown for details. The only line that needs to be added is:

#status-bar { display:none !important; }
.

Now popups are enabled, the default cursor is transparent, the screensaver is disabled, and the window decoration are no longer present. All that needs to be done is to set the homepage to the site configured to display the slideshow.

User Agent Masquerading

The firefox user agent string can be changed by modifying the 'general.useragent.override' key exposed via about:config. A line can also be manually added to user.js or prefs.js to make the same change. This can be quite useful for sites that only permit certin version of Internet Explorer. The following example will change the user agent to IE6 on Windows XP if placed in user.js.

user_pref("general.useragent.override", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)");

-- DavidCollie - 10 Sep 2005