Introduction
WIENER is the Wireless IntErnet NEws Reader. Installed as a CGI on any webserver it allows online WML access to newsgroups. Being a pure WAP service, the user requires no additional software on the end device (except a WML cap able browser).
WIENER lets you read, post and reply newspostings with a mobile phone or PDA. And if the end device supports it, you can even download attachments. For better usability, predefined texts can be entered by the user easily. WIENER is not an offline newsreader; a (wireless) network connection must be established.
System Requirements
- CGI-enabled Webserver
- NNT P Newsserver
- Perl 5
- DBI (optional)
Download
You can download the package here. All files are distributed under the Perl Artistic License. By downloading and using the files, you agree to the terms set in the license agreement.
Installation
First, download and unpack the script and copy it to your CGI directory. The disk.wbmp file can go anywhere (accessible) on the server. Make wiener.pl executable by typing
chmod 755 wiener.pl
and, if necessary, adjust the user and group ownership. Make sure that the webserver can execute CGIs and delivers WML pages with the correct content header. Then, adjust the global variables at the beginning of the script:
$nntp_host
$discicon
@hide_group
Enter the adress of your NNTP host and the URL where the icon from the package can be found. Groups that should be invisible to the user (e.g. control or binary groups) can be placed in the array. WIENER is now basically ready to use now. The script itself can be called with a simple link in the WML page, passing the de sired newgroup as a parameter:
<a href="wiener.pl?grp=start.group">News</a>
Or to show subscriptions:
<a href="wiener.pl?act=sub&usr=username">Subscr.</a>
Wildcards are allowed:
<a href="wiener.pl?grp=start.*">News</a>
The configuration section below explains the various variables and their settings. In addition to this, the documentation can be read with
perldoc wiener.pl
Screenshots
Configuration
An extensive documentation is available via perldoc. The following sections explains the variables and other options. For basic operation, the default values should be ok. If you want to use additional features, tweaking some of the variables is necessary. Note that the device dependent setting override the global settings.
$use_db | Set to 1 if you have a user database |
$allow_post | Set to 1 if you want to allow new postings |
$show_attach | Set to 1 if attachment should be shown |
@hide_group | Invisible Newsgroups |
$nntp_host | Adress of the NNTP Newsserver |
$discicon | Location (URL) of disk.wbmp |
$db_srv | Adress of the database server (or socket file) |
$db_dba | Name of the user database |
$db_tab | Name of the user table |
$db_usr | Login name for database |
$db_pwd | Password for database (not required for socket) |
$prefix | Prefix for all groupnames in database |
$db_get_abo | SQL statement to retreive user subscriptions |
$screenwidth | Characters per line on device display |
$maxchars | Maximum number of characters (size of page) |
$limitlines | Number of lines in menu (-1 means no limit) |
$allow_dl | Allow download of attachments |
So in order to prevent attachment downloads, set the global $allow_dl to 0 and do not change it in the device section. Devices are recognized by interpreting the HTTP agent string. This method is not perfect, but currently the only way. For the subscription service, you need to gather a user ID. How you do this is up to you. A login screen is one way, using the mobile phone number is another (if you want to do it the fancy way).
Bugs & Shortcomings
No threading of articles. This was left out due to the limited screen size of current mobile phones. Many other cool features found in desktop newsreaders are missing: no killfile, no ROT13, no PGP signatures, no signatures.
There was not really extensive testing with mobile devices, although WIENER works with the Deck-It WAP emulator, PocketInternetExplorer (on a PocketPC 2002 device) and WAP Universe on PalmOS. Attachments might not always work correctly, I guess the decoding and splitting algorithm is a evil hack. There are probably other bugs, too – notify me if you find one. Also, the code could be much more elegant.