#!/usr/bin/perl # Edit the above line if you must to locate the perl interpreter on your server # this file should have suitable permissions so it can be invoked by the web server # (compare with other scripts in your cgi-bin directory) # join0.rwc -- a Perl script for tuning Roger Wilco (RW Mark I or later, rwbs version 0.26 or later) # This script should reside in the cgi-bin directory for your web server # it is accessed via a web link and dynamically creates output to simulate a # .RWC file with contents to suit the specified parameters (RWBS address and optional # channel name and password) # File version: 1 Aug 26 1999 # usage: link to it from HTML, and supply the following parameters: # rwbs the IP address or hostname of the RWBS you wish to connect to (required) # channel the name of the channel you wish to connect to (optional -- default channel assumed) # passwd the password to be used (optional) # e.g.: click he re # This script is provided on an as-is basis by Resounding Technology # Copyright 1999, Resounding Technology, Inc. use POSIX; sub CGIReadParse { local (*in) = @_ if @_; local ($i, $loc, $key, $val, $ispath); $ispath = 0; # Read in text if ($ENV{'REQUEST_METHOD'} eq "GET") { $in = $ENV{'QUERY_STRING'}; if (!$in) { $in = $ENV{'PATH_INFO'}; $in =~ s/^.(.*)$/$1/; $ispath = 1; } } elsif ($ENV{'REQUEST_METHOD'} eq "POST") { read(STDIN,$in,$ENV{'CONTENT_LENGTH'}); } if ($ispath) { @in = split(/\//,$in); } else { @in = split(/&/,$in); } foreach $i (0 .. $#in) { # Convert plus's to spaces $in[$i] =~ s/\+/ /g; # Split into key and value. ($key, $val) = split(/=/,$in[$i],2); # splits on the first =. # Convert %XX from hex numbers to alphanumeric $key =~ s/%(..)/pack("c",hex($1))/ge; $val =~ s/%(..)/pack("c",hex($1))/ge; # Associate key and value $in{$key} .= "\0" if (defined($in{$key})); # \0 is the multiple separator $in{$key} .= $val; } $cookie_line = $ENV{'HTTP_COOKIE'}; $cookie_line =~ tr/ //d; @cookie_lines = split(/;/,$cookie_line); foreach $i (0 .. $#cookie_lines) { # Convert plus's to spaces $cookie_lines[$i] =~ s/\+/ /g; # Split cookieto key and value. ($key, $val) = split(/=/,$cookie_lines[$i],2); # splits on the first =. # Convert %XX from hex numbers to alphanumeric $key =~ s/%(..)/pack("c",hex($1))/ge; $val =~ s/%(..)/pack("c",hex($1))/ge; # Associate key and value $cookie{$key} .= "\0" if (defined($cookie{$key})); # \0 is the multiple separator $cookie{$key} .= $val; } return 1; } &CGIReadParse; $rwbs=$in{'rwbs'}; $channel=$in{'channel'}; $passwd=$in{'passwd'}; $leavechannel=$in{'leavechannel'}; if (length($rwbs) == 0) { print "Content-type: text/html You did not specify a Roger Wilco Base Station (rwbs). "; exit 1; } if (length($channel) == 0 && length($passwd) > 0) { $channel = "DEFAULT"; } # converting / chars to _ to avoid confusing RW (/ is switch char) $channel =~ tr/\//_/; $leavechannel =~ tr/\//_/; # if there is a :__, remove it and any preface $channel =~ s/.*\:__//; $leavechannel =~ s/.*\:__//; # replace any remaining :'s with _ $channel =~ s/\:/_/g; $leavechannel =~ s/\:/_/g; # if there is a colon, remove it and any preface $channel =~ tr/[A-Z]/[a-z]/; $leavechannel =~ tr/[A-Z]/[a-z]/; print "Content-type: application/x-rogerwilco /leave $leavechannel /join $rwbs $channel $passwd "; exit 0;