smb2www-980804/ 40775 1750 1750 0 6561651057 12211 5ustar csmallcsmallsmb2www-980804/etc/ 40775 1750 1750 0 6533634051 12756 5ustar csmallcsmallsmb2www-980804/etc/english.lang100664 1750 1750 2141 6535641542 15352 0ustar csmallcsmall# (C) Remco van Mook 1998 lang_author = Remco van Mook <remco@samba.anu.edu.au> welcome = Welcome to the SMB to WWW gateway ! workgroup = Workgroup othernet = Other Networks submit = Submit help = Help help2 = HELP network = Network ent_net = The Entire Network ent_net2 = THE ENTIRE NETWORK shares = Shares share = Share printer = Printer no_group = Group Not Found no_group2 = The group you requested could not be found. in_group = Computers in group shares_on = Shares on computer no_host = Host Not Found no_host2 = The host you requested could not be found. req_pass = Password required for on_computer = on Computer or_acc_den = or access denied name_pass = Please enter name and/or password name = name upass = password content = Contents of top_share = Top of Share down_dir = Download this Directory dir = DIR file = FILE goback = Go back to the SMB to WWW gateway sendmsg = Send a Message sendmsg2 = Enter message to send to message_ok = The message has been sent successfully. smb2www-980804/etc/english_help.lang100664 1750 1750 2427 6535641554 16374 0ustar csmallcsmallheader = Help for the SMB to WWW gateway info = This is a brief explanation of the icons used in SMB2WWW, the SMB to WWW gateway. Most are pretty much self-explanatory. Also, I'll discuss a few of the other things you can encounter. info2 = SMB2WWW is organized in the same way SMB, or Windows Network, is organized. Every computer has shares, those shares have directories, every computer is part of a workgroup. Within a site, there can be several workgroups. othernet = Behind this icon is a page that refers to other SMB2WWW sites. network = This brings you back to an overview of the entire SMB2WWW site. workgroup = Goes to the Workgroup mentioned. shares = Goes to the Computer mentioned. There is one special case: on the overview page, there is a Form Field next to this icon. You can type in the computer you wish to go to. share = Opens the share mentioned. dir = Opens the directory mentioned. file = Opens the file mentioned. What occurs depends on your browser and the kind of file you're opening. The gateway will try to provide the correct MIME-type, based on the extension of the filename. tar = This Icon will show up on directory overviews. With this icon, you can download an entire directory tree at once, as a TAR file. Please use sparingly. help = Brings you to this page. smb2www-980804/etc/finnish.lang100664 1750 1750 2016 6533636634 15364 0ustar csmallcsmall# (C) Mika T. Lindqvist 1998 lang_author = Mika T. Lindqvist <mika@field.ttaol.fi> welcome = Tervetuloa SMB:n WWW-liittymään ! workgroup = Työryhmä othernet = Muut verkot submit = Lähetä help = Ohje help2 = OHJE network = Verkko ent_net = Koko Verkko ent_net2 = KOKO VERKKO shares = Jakonimet share = Jakonimi no_group = Ryhmää Ei Löydy no_group2 = Pyytämäsi ryhmää ei löydy. in_group = Tietokoneet ryhmässä shares_on = Jakonimet tietokoneella no_host = Ei konetta no_host2 = Konetta, jota pyysit, ei löydetä. req_pass = Tarvitaan salasana jakonimelle on_computer = tietokoneella or_acc_den = tai pääsy estetty name_pass = Anna tunnus ja/tai salasana name = tunnus upass = salasana content = Sisältö kohteesta top_share = Jakonimen alku down_dir = Imuroi tämä hakemisto dir = HAKEMISTO file = TIEDOSTO smb2www-980804/etc/finnish_help.lang100664 1750 1750 3321 6533635026 16366 0ustar csmallcsmallhelp_author = Mika T. Lindqvist header = Ohje SMB:n WWW-liittymään info = Tämä on lyhyt selitys kuvakkeista, joita on käytetty SMB2WWW:ssä, SMB:n WWW-liittymä. Useimmat ovat suurelta osin itseselkoisia. Kerron myös muutamasta muusta asiasta, jotka voit kohdata. info2 = SMB2WWW on järjestelty samalla tavalla kuin SMB, tai Windows-verkko, on järjestelty. Jokaisessa tietokoneessa on jakonimiä, nuo jakonimet sisältävät hakemistoja, jokainen tietokone on osa työryhmää. Yksikön sisällä voi olla useita työryhmiä. othernet = Tämän kuvakkeen takana on sivu, joka viittaa muihin SMB2WWW-yksikköihin. network = Tämä vie sinut takaisin koko SMB2WWW-yksikön yleiskatsaukseen. workgroup = Menee mainittuun Työryhmään. shares = Menee mainittuun Tietokoneeseen. On myös erikoistapaus: yleiskatsaus-sivulla, siell on Kaavake-kenttä tämän kuvakkeen vieressä. Voit kirjoittaa tietokoneen, johon haluat mennä, nimen siihen. share = Avaa mainitun jakonimen. dir = Avaa mainitun hakemiston. file = Avaa mainitun tiedoston. Se mitä tapahtuu, riippuu selaimestasi ja siitä, minkä tyyppistä tiedostoa olet avaamassa. Liittymä yrittää välittää oikean MIME-tyypin, tiedoston päätteen perusteella. tar = Tämä kuvake ilmestyy hakemistojen yleiskatsauksessa. Sillä voit imuroida kokonaisen hakemistopuun kerralla, TAR-tiedostona. Muista käyttää säästäen. help = Tuo sinut tälle sivulle. goback = Mene takaisin SMB:n WWW-liittymään. smb2www-980804/etc/dutch.lang100664 1750 1750 1711 6557101751 15027 0ustar csmallcsmall# (C) Remco van Mook 1998 lang_author = Remco van Mook <remco@samba.anu.edu.a> welcome = Welkom bij de SMB naar WWW gateway ! workgroup = Werkgroep othernet = Overige Netwerken submit = Verzenden help = Help help2 = HELP network = Netwerk ent_net = Het gehele Netwerk ent_net2 = HET GEHELE NETWERK shares = Mappen share = Map no_group = Groep niet gevonden no_group2 = De door u gevraagde groep werd niet gevonden. in_group = Computers in groep shares_on = Mappen op computer no_host = Computer niet gevonden no_host2 = De door u gevraagde computer werd niet gevonden. req_pass = Wachtwoord benodigd voor on_computer = op Computer or_acc_den = of geen toegang name_pass = Geef uw naam en/of wachtwoord op: name = naam upass = wachtwoord content = Inhoud van top_share = Bovenkant van Map down_dir = Haal deze gehele folder op dir = MAP file = BESTAND smb2www-980804/etc/dutch_help.lang100664 1750 1750 2624 6533636117 16046 0ustar csmallcsmallheader = Help voor de SMB naar WWW gateway info = Dit is een korte uitleg van de gebruikte ikonen in SMB2WWW, de SMB naar WWW gateway. De meesten spreken voor zich. info2 = SMB2WWW is op dezelfde manier opgezet als SMB, of Windows Network. Elke computer heeft mappen, die mappen hebben folders, elke computer is onderdeel van een werkgroep. Op een lokatie kunnen meerdere werkgroepen bestaan. othernet = Achter dit ikoon is een pagina die verwijst naar andere SMB2WWW lokaties. network = Dit ikoon brengt je terug naar een overzicht van alle werkgroepen. workgroup = Dit ikoon brengt je naar naastvermelde werkgroep. shares = Gaat naar de vermelde computer. er is een speciaal geval: op de overzichtspagina van alle werkgroepen is er een formulierveld naast het ikoon. Hier kan je de naam intikken van de computer waar je naartoe wilt. share = Opent de map. dir = Opent de folder. file = Opent het bestand. Wat er gebeurt hangt af van je browser en het type van het bestand. De gateway zal proberen het juiste MIME-type te vinden, op basis van de extensie van het bestand. tar = Dit ikoon is te zien op overzichten van folders. Met dit ikoon kan je een hele boom van folders en bestanden in een keer downloaden, als TAR bestand. Dit is meestal VEEL informatie, ga er zuinig mee om. help = Dit ikoon brengt je naar deze pagina. goback = Ga terug naar de SMB naar WWW gateway smb2www-980804/cgi-bin/ 46775 1750 1750 0 6557100352 13517 5ustar csmallcsmallsmb2www-980804/cgi-bin/smbmsg.pl100775 1750 1750 3407 6542234167 15450 0ustar csmallcsmall#! /usr/bin/perl # This file smbmsg.pl Copyright 1998 Edward Rudd # Modifications by Remco van Mook, 1998. use strict; use smb2www; my %all=decode_query; sub Message_OK { header ("$text{message_ok}"); print "
\n"; print image($cfg{icon_message},"$text{sendmsg}"); print "

\n"; print href("$all{back}","$text{goback}")."\n"; trailer; } my $key = ""; my $back = ""; foreach $key (keys %all) { $all{$key} = urlDecode $all{$key}; } if ($all{'mesg'} eq '') { header ("$text{sendmsg}"); print "

$text{sendmsg2} "; if ( $all{'host'} eq '' ) { print "$text{workgroup} $all{group}"; } else { print "$all{host}"; } print ":

\n"; if ($all{'back'} eq '') { $back = "$ENV{'HTTP_REFERER'}"; } else { $back = "$all{'back'}"; } print << "EOF" ;

EOF trailer; } else { if ( $all{host} eq '' ) { my @smbout = GetSMBHosts ("$all{master}","$all{group}"); if ( $#smbout < 0 ) { header ("$text{no_group}"); print "

$text{no_group2}


\n"; table ( href (shref("all"),image ($cfg{icon_all},"$text{network}")), "

$text{ent_net}

", "" ); trailer; exit; } my $line = ""; foreach $line ( @smbout ) { SendHostMessage ($line->{name},$all{'mesg'}); } Message_OK; } else { SendHostMessage ($all{'host'},$all{'mesg'}); Message_OK; } } smb2www-980804/cgi-bin/smb2www.pl100775 1750 1750 3346 6542206404 15563 0ustar csmallcsmall#! /usr/bin/perl # SMB2WWW - a smb to WWW gateway; access windows computers through a browser # Copyright (C) 1997 Remco van Mook # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. # The author can be contacted by e-mail: remco@samba.anu.edu.au use strict; use smb2www; my @smbout = GetSMBGroups; header ("$text{welcome}"); table ( href ($cfg{linkto_other}, image ($cfg{icon_other},"$text{othernet}")), "", href ($cfg{linkto_other}, "

$text{othernet}

") ); table ( "
". "", "", "
". "". "". "
\n" ); my $line = ""; foreach $line ( @smbout ) { my $url = shref ("group","$line->{name}","$line->{master}"); table ( "", href ($url,image ($cfg{icon_group},"$text{workgroup}")), "
".href($url,"$line->{name}")."
" ); } trailer; smb2www-980804/cgi-bin/smb2www.pm100664 1750 1750 31601 6561650721 15602 0ustar csmallcsmall### Copyright notice # SMB2WWW - a smb to WWW gateway; access windows computers through a browser # Copyright (C) 1997,1998 Remco van Mook # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. # The author can be contacted by e-mail: remco@samba.anu.edu.au ### Configuration and common procedures for smb2www ## This is a perl module. Some headers package smb2www; use Exporter (); use MIME::Base64; use Time::Local; # for lmtime use strict; use vars qw( %cfg %text @ISA @EXPORT ); @ISA = qw(Exporter); @EXPORT = qw( %cfg $cfg %text $text urlDecode urlEncode image table href shref header trailer decode_query mimetype lmtime GetSMBTar GetSMBFile GetSMBDir GetSMBShr GetSMBHosts GetSMBGroups httptime MakeAuth GetAuth SendHostMessage ); ## Configuration %cfg = (); open (CONFIG,"/usr/local/smb2www/etc/smb2www.conf") or die "SMB2WWW: No config file found."; while () { if ( $_ =~ /([\w\_]+)\s*=\s*(.+)/ ) { $cfg{$1} = $2; } } close CONFIG; ## Multi-language support %text = (); open (LANGUAGE,"$cfg{cfgdir}/$cfg{language}.lang") or die "SMB2WWW: No language support found for $cfg{language}."; while () { if ( $_ =~/([\w\_]+)\s*=\s*(.+)/ ) { $text{$1} = $2; } } close LANGUAGE; ## Common procedures # Nasty URL encoding/decoding stuff sub urlDecode{ my $value= $_[0]; $value =~ tr/+/ /; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; return $value; }; sub urlEncode { my $value=$_[0]; $value =~ s/([^a-zA-Z0-9\.\_\'\-\$\~\\\/])/'%'.unpack("H*",$1)/eg; $value =~ tr/ /+/; return $value; }; # Getting info from the webserver # Some security might be nice.. let's kill it at the first ; for now # Only brave souls hack smb2www without going insane at all the refs.. sub decode_query { my %query = (); my $input; if ($ENV{'REQUEST_METHOD'} eq "POST") { chomp ($input = urlDecode ); } else { $input = $ENV{'QUERY_STRING'}; } my @security = split ( ';',$input); my @qs = split ( '&', $security[0]); my $entry; foreach $entry (@qs) { if ($entry =~ /([\w]+)=([^\&\?]+)/) { my $key = $1; my $value = $2; $query{$key}=$value; } } return %query; }; # Return a HTML href tag sub href { return "$_[1]"; }; # Return a HTML image tag sub image { return "\"$_[1]\""; }; # Return a HTML table entry sub table { my @table = @_; print "\n"; foreach ( @table ) { print "$_\n"; } print "\n"; } # Return a SMB2WWW url tag sub shref { my ($type, $group, $master, $host, $share, $dir, $user, $pass, $size, $date, $auth) = @_; my @urlencoded = ($group,$master, $host,$share,$dir,$user,$pass); for (@urlencoded) { $_ = urlEncode $_ } ($group,$master, $host,$share,$dir,$user,$pass) = @urlencoded; my $url; my $pwa; if ( $auth eq "" ) { $pwa = "user=$user&pass=$pass" } else { $pwa = "auth=$auth"; } if ( (lc $type) eq "file" ) { $url = "$cfg{cgiroot}/smbfile.pl/$host/$share/$size/$dir?$pwa&lm=".lmtime($date); } elsif ( (lc $type) eq "tar" ) { $url = "$cfg{cgiroot}/smbtar.pl/$host/$share$dir?$pwa"; } elsif ( (lc $type) eq "dir" ) { $url = "$cfg{cgiroot}/smbdir.pl?group=$group&master=$master&host=$host&share=$share&dir=$dir&$pwa"; } elsif ( (lc $type) eq "share" ) { $url = "$cfg{cgiroot}/smbshr.pl?group=$group&master=$master&host=$host"; } elsif ( (lc $type) eq "group" ) { $url = "$cfg{cgiroot}/smbgrp.pl?group=$group&master=$master"; } elsif ( (lc $type) eq "all" ) { $url = "$cfg{cgiroot}/smb2www.pl"; } elsif ( (lc $type) eq "msg" ) { $url = "$cfg{cgiroot}/smbmsg.pl?group=$group&master=$master&host=$host"; } else { $url = $_[0]; # Act stupid when acted stupid upon } return $url; } # Determine mimetype, given a file extension sub mimetype { my $test = lc $_[0]; my $type; open MIME, $cfg{mimetype}; RULE: while ( ) { my $line = $_; if ( not ($line =~ /^$/) and not ($line =~ /^#/) ) { if ( $line =~ /^([^\s]+)\s+([\w\ ]+)/ ) { $type = $1; if ( $2 =~ /$test/ ) { last RULE; } else { $type = ""; } } } } close MIME; $type = "application/octet-stream" if ($type eq ""); return $type; } # Calculate expiretime for header() sub expiretime { return httptime(time+$cfg{refresh}); } # Calculate Last-Modified: timestamp out of a SMB timestamp sub lmtime { my $timestring = $_[0]; my %month = ( Jan => 0, Feb => 1, Mar => 2, Apr => 3, May => 4, Jun => 5, Jul => 6, Aug => 7, Sep => 8, Oct => 9, Nov =>10, Dec =>11 ); my $time; if ( $timestring =~ /^\w+ (\w+)[ ]+(\w+) (\w+):(\w+):(\w+) (\w+)/ ){ $time = timelocal ($5,$4,$3,$2,$month{$1},$6); } return $time; # Now put this into httptime } # Make a HTTP/1.1 certified timestamp out of a UNIX timestamp. sub httptime { my $time = $_[0]; my @days = qw (Sun Mon Tue Wed Thu Fri Sat); my @months = qw (Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec); my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$istdst) = gmtime($time); my $realyear; if ($year < 70) { $realyear = "20$year"; } else { $realyear = "19$year"; } return sprintf ("%s, %02d %s %s %02d:%02d:%02d GMT", $days[$wday],$mday,$months[$mon],$realyear,$hour,$min,$sec); } # Starting a page sub header { my $exp = expiretime; print << "EOF"; Cache-Control: $cfg{cache} Expires: $exp Content-type: text/html $_[0] EOF if (not $_[1] =~ /norefresh/ ) { print "\n"; } print << "EOF";

$_[0]


EOF }; # Finishing the page sub trailer { my $help = href("$cfg{cgiroot}/smbhelp.pl", image ($cfg{icon_help},"Help")."

HELP

"); print << "EOF";

$help Comments/remarks/kudos to:remco\@samba.anu.edu.au
EOF }; ## Interfacing perl with smbclient #sort an array of hashes by $_->{name} (for GetSMBDir et al) sub byname { (lc $a->{name}) cmp (lc $b->{name}) } # Gets the file //$host/$share/$file, using $user and $pass, to $target. # And return the error code. If $target is unspecified, # STDOUT is used (-). # Syntax: $error = GetSMBFile ($host,$share,$file,$user,$pass,$target) sub GetSMBFile { my ($host, $share, $file, $user, $pass, $target) = @_; if ( $target eq "") { $target = "-" }; $file =~ s/^(.*)\/([^\/]*)$/$1$2/ ; if ( $user ne "" ) { $user="-U$user"; } if ( $pass ne "") { if ( $user eq "" ) { $user = "-Uguest"; } } else { $pass = "-N"; } my @args = ("$cfg{bindir}/smbclient", "//$host/$share", "$pass", "$user", "-d 0", "-c", "get \"$file\" $target"); return system (@args); } # Makes a TAR of //$host/$share/$dir, using $user and $pass, to $target. # And return the error code. If $target is unspecified, # STDOUT is used (-). # Syntax: $error = GetSMBTar ($host,$share,$dir,$user,$pass,$target) sub GetSMBTar { my ($host, $share, $dir, $user, $pass, $target) = @_; if ( $target eq "") { $target = "-" }; if ( $user ne "" ) { $user="-U$user"; } if ( $pass ne "") { if ( $user eq "" ) { $user = "-Uguest"; } } else { $pass = "-N"; } my @args = ("$cfg{bindir}/smbclient", "//$host/$share", "$pass", "$user", "-d0 ", "-D", "$dir", "-Tc", "$target"); return system (@args); } # Return an array with sorted dir and filelisting # Syntax: @output = GetSMBDir (host,share,dir,user,pass) # array contains hashes; keys: name, attr, size, date sub GetSMBDir { my ($host, $share, $dir, $user, $pass ) = @_; my @dir = (); my @files = (); if (! $user eq "") { $user = "-U".$user } if ( $pass eq "") { $pass = "-N" } my $lookup = "$cfg{bindir}/smbclient \"//$_[0]/$_[1]\" \"$pass\" $user -d0 -c ls -D \"$_[2]\""; my @out = `$lookup`; my $line; foreach $line ( @out ) { if ($line =~ /^ ([\S ]*\S|[\.]+) {5,}([HDRSA]+) +([0-9]+) (\S[\S ]+\S)$/g) { my $rec = {}; $rec->{name} = $1; $rec->{attr} = $2; $rec->{size} = $3; $rec->{date} = $4; if ($rec->{attr} =~ /D/) { push @dir, $rec; } else { push @files, $rec; } } elsif ($line =~ /^ ([\S ]*\S|[\.]+) {6,}([0-9]+) (\S[\S ]+\S)$/) { my $rec = {}; $rec->{name} = $1; $rec->{attr} = ""; $rec->{size} = $2; $rec->{date} = $3; push @files, $rec; # No attributes at all, so it must be a file } } my @ret = sort byname @dir; @files = sort byname @files; foreach $line ( @files ) { push @ret, $line; } return @ret; } # Return an array with sorted share listing # Syntax: @output = GetSMBShr (host) # array contains hashes; keys: name, type, comment sub GetSMBShr { my $share = $_[0]; my @ret = (); my $lookup = "$cfg{bindir}/smbclient -L \"$share\" -d0"; my @out = `$lookup`; my $line = shift @out; while ( (not $line =~ /^\s+Sharename/) and ($#out >= -1) ) { $line = shift @out; } if ($#out >= 0) { $line = shift @out; $line = shift @out; while ( (not $line =~ /^$/) and ($#out >= -1) ) { if ( $line =~ /^\s+(\S[\S ]{0,14})\s+(Disk|Printer|IPC)\s+([\S ]*)/ ) { my $rec = {}; my $nearname = $1; $rec->{type} = $2; $rec->{comment} = $3; if ( $nearname =~ /^([\S ]*\S)\s*$/ ) { $rec->{name} = $1; } else { $rec->{name} = $nearname; } push @ret, $rec; } $line = shift @out; } } return sort byname @ret; } # Return an array with sorted host listing # Syntax: @output = GetSMBHosts (host,group) # array contains hashes; keys: name, comment sub GetSMBHosts { my ($workgroup,$host) = @_; my @ret = (); my $lookup = "$cfg{bindir}/smbclient -L \"$host\" -W \"$workgroup\" -d0"; my @out = `$lookup`; my $line = shift @out; while ((not $line =~ /^This machine has a browse list/) and ($#out >= -1) ) { $line = shift @out; } if ($#out >= -1) { $line = shift @out; $line = shift @out; $line = shift @out; $line = shift @out; while ((not $line =~ /^$/) and ($#out >= -1)) { if ( $line =~ /^\t([\S ]*\S) {5,}(\S[\S ]*|\S|)$/ ) { my $rec = {}; $rec->{name} = $1; $rec->{comment} = $2; push @ret, $rec; } $line = shift @out; } } return sort byname @ret; } # Return an array with sorted groups listing # Syntax: @output = GetSMBGroups () # array contains hashes; keys: name, master sub GetSMBGroups { my @ret = (); my $lookup = "$cfg{bindir}/smbclient -L \"$cfg{masterbrowser}\" -d0"; my @out = `$lookup`; my $line = shift @out; while ((not $line =~ /^This machine has a workgroup list/) and ($#out >= 0) ) { $line = shift @out; } if ($#out >= -1) { $line = shift @out; $line = shift @out; $line = shift @out; $line = shift @out; while ((not $line =~ /^$/) and ($#out >= -1) ) { if ( $line =~ /^\t([\S ]*\S) {2,}(\S[\S ]*)$/ ) { my $rec = {}; $rec->{name} = $1; $rec->{master} = $2; push @ret, $rec; } $line = shift @out; } } return sort byname @ret; } sub SendHostMessage { my ($host,$msg) = @_; open ( MSGOUT, "| $cfg{bindir}/smbclient -M \"$host\" -d0 -U \"smb2www\" > /dev/null" ); print MSGOUT $msg; close MSGOUT; return "OK"; } ## User/Pass encryption stuff sub MakeAuth { my $unenc = "$_[0]:$_[1]"; my $length = length $unenc; my $key = $cfg{key} ; while ( (length $key) < $length ) { $key = $key . $cfg{key}; } my $crypt = substr ($key,0,$length); my $b64enc = encode_base64($unenc ^ $crypt); $b64enc =~ tr#+#,#; $b64enc =~ tr#/#.#; return $b64enc; } sub GetAuth { my $auth = $_[0]; $auth =~ tr#,#+#; $auth =~ tr#.#/#; my $uudec = decode_base64($auth); my $length = length $uudec; my $key = $cfg{key} ; while ( (length $key) < $length ) { $key = $key . $cfg{key}; } my $crypt = substr ($key,0,$length); return split (":",($uudec ^ $crypt)) } smb2www-980804/cgi-bin/smbdir.pl100775 1750 1750 12456 6532514377 15467 0ustar csmallcsmall#! /usr/bin/perl # SMB2WWW - a smb to WWW gateway; access windows computers through a browser # Copyright (C) 1997 Remco van Mook # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. # The author can be contacted by e-mail: remco@samba.anu.edu.au use strict; use smb2www; select STDOUT; $| = 1; $ENV{'USER'}=$cfg{username}; my %all=decode_query; my $key = ""; foreach $key (keys %all) { $all{$key} = urlDecode $all{$key}; } if (($all{auth} eq "") and ($all{user}.$all{pass} ne "")) { my $auth = MakeAuth ($all{user},$all{pass}); $all{auth} = $auth; my $url = shref("dir","$all{group}","$all{master}","$all{host}","$all{share}", "$all{dir}","","","","","$auth"); print << "EOF"; Content-type: text/html Reloading for secure URL EOF exit; } elsif ($all{auth} ne "") { ($all{user},$all{pass}) = GetAuth ("$all{auth}"); } my @smbout = GetSMBDir ("$all{host}","$all{share}","$all{dir}","$all{user}","$all{pass}"); if ($smbout[0]->{name} eq "") { header ("$text{req_pass} $all{share}$all{dir} $text{on_computer} $all{host} $text{or_acc_den}."); my $group = urlEncode ($all{group}); my $master = urlEncode ($all{master}); my $host = urlEncode ($all{host}); my $share = urlEncode ($all{share}); my $dir = urlEncode ($all{dir}); print << "EOF";

$text{name_pass}

$text{name}: $text{upass}:
EOF } else { my @tar = split(/\\/,$all{dir}); my $tarfile = $tar[$#tar].".tar"; my $tardir = $all{dir}; if ($tarfile eq ".tar") { $tarfile="$all{share}.tar"; } header ("$text{content} $all{share}$all{dir} $text{on_computer} $all{host}","norefresh"); table (href (shref("all"), image ($cfg{icon_all},"$text{network}")), "", "", "

$text{ent_net2}

", "" ); if (!($all{group} eq "") or !($all{master} eq "")) { table (href (shref("group","$all{group}","$all{master}"), image ($cfg{icon_group},"$text{workgroup}")), "", "", "

$all{group}

", "" ); } table ( href (shref("share","$all{group}","$all{master}","$all{host}"), image ($cfg{icon_computer},"$text{shares}")), "", "", "

$all{host}

", "" ); table ("", href (shref("dir","$all{group}","$all{master}", "$all{host}","$all{share}","","","","","","$all{auth}"), image ($cfg{icon_share},"$text{top_share}")), "", "

$all{share}

", "$all{dir}" ); table ("", href( shref("tar","","","$all{host}","$all{share}", "/$tardir/$tarfile","","","","","$all{auth}"), image ($cfg{icon_archive}, "TAR")), "", "

".href( shref("tar","","","$all{host}","$all{share}", "/$tardir/$tarfile","","","","","$all{auth}"), "$text{down_dir}")."

", "" ); my $line = ""; foreach $line ( @smbout ) { my $url = ""; my $desc = ""; my $image = ""; if ( $line->{attr} =~ /D/ ) { # Check if it's a directory my $dir =""; if ( $line->{name} eq "." ) { $dir = $all{dir}; } elsif ( $line->{name} eq ".." ) { if ( $all{dir} =~ /(.+)\\.+$/ ) { $dir = $1; } } else { $dir = "$all{dir}\\$line->{name}"; } $url = shref("dir","$all{group}","$all{master}","$all{host}", "$all{share}","$dir", "$all{user}","$all{pass}","","$line->{date}","$all{auth}"); $image = image ($cfg{icon_dir}, "$text{dir}"); } else { # Nope, so it must be a file $url = shref("file","$all{group}","$all{master}","$all{host}", "$all{share}","$all{dir}\\/$line->{name}","$all{user}", "$all{pass}","$line->{size}","$line->{date}","$all{auth}"); $image = image ($cfg{icon_file},"$text{file}"); $desc = "$line->{size} $line->{date}"; } table ("", "", href ($url,$image), href ($url,"$line->{name}"), $desc); } trailer; } smb2www-980804/cgi-bin/smbfile.pl100775 1750 1750 5117 6551701367 15602 0ustar csmallcsmall#! /usr/bin/perl # SMB2WWW - a smb to WWW gateway; access windows computers through a browser # Copyright (C) 1997 Remco van Mook # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. # The author can be contacted by e-mail: remco@samba.anu.edu.au use strict; use smb2www; sub URLParse { my ($host, $share, $file, $user, $pass) = @_; $file =~ s/^(.*)\/([^\/]*)$/$1$2/ ; if ( $user ne "" ) { $user="-U$user"; } if ( $pass ne "") { if ( $user eq "" ) { $user = "-Uguest" } } else { $pass = "-N" } my @input = `$cfg{bindir}/smbclient //$host/$share $pass $user -d2 -c "get \"$file\" -"`; my $url = $input[1]; chop $url; if ( $url =~ /URL\=(.*)/ ) { print "Location: $1\n\n"; } else { # Something odd in a .url file, so just throw it at the client, YMMV print "Content-type: application/octet-stream\n\n"; foreach (@input) { print $_} } } select STDOUT; $| = 1; $ENV{'USER'}=$cfg{username}; my $info = $ENV{'PATH_INFO'}; my @muddy=""; my $filesize=""; my $filename = ""; my %all=decode_query; my $key = ""; foreach $key (keys %all) { $all{$key} = urlDecode $all{$key}; } if ($all{auth} ne "") { ($all{user},$all{pass}) = GetAuth ("$all{auth}"); } if ($info =~ /\/([\w\s\$\#\!\-\_\%\'\.\+]+)\/([\w\s\$\#\!\-\_\%\'\.\+]+)\/([\d]+)\/(.*)/) { $all{host} = $1; $all{share} = $2; $filesize= $3; $filename = $4; } my $ext=""; if ($filename =~ /([^\/]+)\/(.*)/ ) { $ext = (split (/\./ , $2))[-1]; } # If the file extension is something special, like .url or .lnk, do something # intelligent with it. At the moment, only .url is supported. if ($ext eq "url") { URLParse ("$all{host}","$all{share}","$filename","$all{user}","$all{pass}"); } else { if ($all{lm} ne "") { print "Last-Modified: ".httptime("$all{lm}")."\n" } print "Pragma: no-cache\n"; if ( $filesize ne "") { print "Content-Length: $filesize\n" } print "Content-type: ".mimetype ($ext)."\n\n"; GetSMBFile ("$all{host}","$all{share}","$filename","$all{user}","$all{pass}"); } smb2www-980804/cgi-bin/smbgrp.pl100775 1750 1750 3721 6535074532 15451 0ustar csmallcsmall#! /usr/bin/perl # SMB2WWW - a smb to WWW gateway; access windows computers through a browser # Copyright (C) 1997 Remco van Mook # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. # The author can be contacted by e-mail: remco@samba.anu.edu.au use strict; use smb2www; my %all=decode_query; my $key = ""; foreach $key (keys %all) { $all{$key} = urlDecode $all{$key}; } my @smbout = GetSMBHosts ("$all{group}","$all{master}"); if ( $#smbout < 0 ) { header ("$text{no_group}"); print "

$text{no_group2}


\n"; table ( href (shref("all"),image ($cfg{icon_all},"$text{network}")), "

$text{ent_net}

", "" ); trailer; exit; } header ( "$text{in_group} $all{'group'}" ); table ( href (shref("all"), image ($cfg{icon_all},"$text{network}")), "", "", "

$text{ent_net}

", "" ); table ( "", image ($cfg{icon_group},"$text{workgroup}"), "", "

".uc ($all{'group'})."

", "" ); my $line = ""; foreach $line ( @smbout ) { my $url = shref("share","$all{'group'}","$all{'master'}","$line->{name}"); table ( "", "", href ($url,image ($cfg{icon_computer},"$text{shares}")), href ($url,"$line->{name}"), "$line->{comment}" ); } trailer; smb2www-980804/cgi-bin/smbhelp.pl100775 1750 1750 3326 6535640161 15607 0ustar csmallcsmall#! /usr/bin/perl use smb2www; %helptext = (); open (HELPTEXT,"$cfg{cfgdir}/$cfg{language}_help.lang") or die "SMB2WWW: No language support found for $cfg{language} help"; while () { if ( $_ =~/([\w\_]+)\s*=\s*(.+)/ ) { $helptext{$1} = $2; } } close HELPTEXT; header ($helptext{header},"norefresh"); print "\n"; print "

$helptext{header}

\n"; print "
\n"; print $helptext{info}."\n"; print "
\n"; print $helptext{info2}."\n"; print "
\n"; print "\n"; table ( image ($cfg{icon_other}, "$text{othernet}"), "$helptext{othernet}", "" ); table ( image ($cfg{icon_all},"$text{network}"), "$helptext{network}", "" ); table ( image ($cfg{icon_group},"$text{workgroup}"), "$helptext{workgroup}", "" ); table ( image ($cfg{icon_computer},"$text{shares}"), "$helptext{shares}", "" ); table ( image ($cfg{icon_share},"$text{share}"), "$helptext{share}", "" ); table ( image ($cfg{icon_dir},"$text{dir}"), "$helptext{dir}", "" ); table ( image ($cfg{icon_file},"$text{file}"), "$helptext{file}", "" ); table ( image ($cfg{icon_archive}, "TAR"), "$helptext{tar}", "" ); table ( image ($cfg{icon_help}, "$text{help}"), "$helptext{help}", "" ); my $referer=$ENV{'HTTP_REFERER'} || "$cfg{cgiroot}/smb2www.pl"; print "
\n"; print "
".href("$referer", image($cfg{icon_all}, "$text{ent_net}"))."

$text{goback}

"; print "
\n"; print "
Comments/remarks/kudos to:remco\@samba.anu.edu.au
\n"; print "
Language support for $cfg{language} created by $text{lang_author}
\n"; print "\n"; smb2www-980804/cgi-bin/smbshr.pl100775 1750 1750 7525 6561653152 15463 0ustar csmallcsmall#! /usr/bin/perl # SMB2WWW - a smb to WWW gateway; access windows computers through a browser # Copyright (C) 1997 Remco van Mook # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. # The author can be contacted by e-mail: remco@samba.anu.edu.au use strict; use smb2www; my %all=decode_query; my $key = ""; foreach $key (keys %all) { $all{$key} = urlDecode $all{$key}; } $ENV{'USER'}=$cfg{username}; my @smbout = GetSMBShr("$all{'host'}"); if ($#smbout < 0 ) { header ("$text{no_host}"); print "

$text{no_host2}


\n"; if (($all{'group'} ne "") or ($all{'master'} ne "")) { table ( href ("$cfg{cgiroot}/smb2www.pl", image ($cfg{icon_all},"$text{network}")), "", "

".href ("$cfg{cgiroot}/smb2www.pl",'$text{ent_net}')."

", "", "" ); table ( "", href ( shref("group","$all{'group'}","$all{'master'}"), image ($cfg{icon_group},"$text{workgroup}")), "

".href ( shref("group","$all{'group'}","$all{'master'}"),$all{'group'})."

", "", "" ); } else { table ( href (shref("all"), image ($cfg{icon_all},"$text{network}")), "", "

$text{ent_net}

" ); } trailer; } else { header ("$text{shares_on} $all{'host'}"); table ( href ( shref("all"), image ($cfg{icon_all},"$text{network}")), "", "", "

$text{ent_net}

", "" ); if ($all{'group'}) { table ( href ( shref ("group","$all{'group'}","$all{'master'}"), image ($cfg{icon_group},"$text{workgroup}")), "", "", "

$all{'group'}

", "" ); } table ( "", image ($cfg{icon_computer},"$text{shares}"), "", "

$all{'host'}

", "" ); table ( "", "", href (shref("msg","$all{'group'}","$all{'master'}","$all{'host'}"), image ($cfg{icon_message},"$text{sendmsg}")), "", "$text{sendmsg}" ); table ( "
", "". "". "", "", "", "
\n" ); my $line = ""; foreach $line ( @smbout ) { if ( $line->{type} eq "Disk" ) { my $url = shref("dir","$all{'group'}","$all{'master'}","$all{'host'}", "$line->{name}",""); table ( "", "", href ($url,image ($cfg{icon_share},"$text{share}")), href ($url,"$line->{name}"), "$line->{comment}" ); } elsif ( $line->{type} eq "Printer") { table ( "", "", image ($cfg{icon_printer},"$text{printer}"), "$line->{name}", "$line->{comment}" ); } } trailer; } smb2www-980804/cgi-bin/smbtar.pl100775 1750 1750 3031 6521607105 15432 0ustar csmallcsmall#! /usr/bin/perl # SMB2WWW - a smb to WWW gateway; access windows computers through a browser # Copyright (C) 1997 Remco van Mook # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. # The author can be contacted by e-mail: remco@samba.anu.edu.au use smb2www; use strict; select STDOUT; $| = 1; $ENV{'USER'}=$cfg{username}; my %all=decode_query; my $info = $ENV{'PATH_INFO'}; if ($info =~ /\/([\w\s\$\#\!\-\_\%\'\.]+)\/([\w\s\$\#\!\-\_\%\'\.]+)\/(.*)/) { $all{host} = $1; $all{share} = $2; $all{dir} = $3; } my $key = ""; foreach $key (keys %all) { $all{$key} = urlDecode $all{$key}; } if ($all{auth} ne "") { ($all{user},$all{pass}) = GetAuth ("$all{auth}"); } my @dirt = split (/\//, $all{dir}); my $file = pop @dirt; my $dir = "\\".join ('\\',@dirt); print "Cache-Control: no-cache\n"; print "Content-type: application/x-tar\n\n"; GetSMBTar ("$all{host}","$all{share}","$dir","$all{user}","$all{pass}"); smb2www-980804/images/ 40775 1750 1750 0 6557103627 13456 5ustar csmallcsmallsmb2www-980804/images/archive.gif100664 1750 1750 1573 6503342700 15655 0ustar csmallcsmallGIF89a00y0olJ@((\\\Rx!,00I8ͻ`x4ҜJ"p r,dzFJaZER,Wq Q d5pG- 8LP)Q- 8,ڥ8N|z$\2%' Z5p( 0D 6<z Ax qfFyhM׽~5[YC %Й,[Y Wq-!E)jHW]8{`q1[`pd&L@ںI0b= &LuMbGYGE0u8, j2ԙgxQgFYvUTET7n M1U0qX:vmg#9p/^PCj! AuAN CAY%Q >҆ SD0 EmQІQ'" Z} ȵD5멻n@=.ho@ly UBcY:YTB 0ZD`#x92wBQN0E($ B 3At%iyʓ 5)~ E -"Q}3qEOZ / {/~DC_wio.XکR]dt @ .%ud&yRb; JSAx  f Y`*} V&A;A &aAXKʀ+("X9? 5pD"U׹4jQ@o0p,j^j2 7Qī3tg>I-~aL!a6!Ӊ:-l`; 8+C2_V.\r6af)K&DeӞvOkXgVȋ _V'Ta"^v2}*@*|U_= :>qc(e'B [s`*ך3-35Jgh:!7PVr LV t(A BkX$\ 3!aSV:'8D35@"W=V騬 p+V ]Uq V^`Hѹ](龓Ew߅E(xNB4l~-X2v<3HF`4aBu 1ȠJ8%A)KejTl^DQ97>wrSaug\Q\bUjkBs.~ȿf,`J&DJe=SBcx@zDP(HыNxA]e+T+Re>~ǵV \^V׻檮 P0 `*⦞eӞ? !M԰0'F"'XuSLvbҼ-V՘oۻɩr+dS='oշW3ooy|p'ZVύD s1϶; Kat9(@8ks2qKSېOZd'?永ɬf"R{v]|P"# _R(|!BABA1D7A]S7^2AzUr{Tx!?3gAAB!PJE0WGI$ROLLq $Y40.Cmt(1!*jcmc[d5$ -A\@!h6=b##3#UdR&Vq2wOkjd,WR7%.hHp>%CP%;COa7pg YbAQ'r%o2dYt* &ad2Xy'j'?6otOl%*SApx   1ǁQ3HC7H&k-s6a'0/1jWd>Ax Ss?ArAA.Tѱ80=32pI0*nyb!=Mo5Fc޴@4rv|(frAbʱ3}d3RF Qmp@5uy~z{8"\4^hxxAFWyzc(re*z/|xqyC J_r"@E!w8('~Q &z11Awawȵ )*a.!1*Xh"]{W^_¦=q/d/"o1(N_uX#b}(ah#'=›ň+~U2xv)N)=>Q+ŀYz!ǖSq]X" f^ co%^]O֥"!a>w/g"u#|Y }` P'#d"5">JSŀGNpĐ0"MsyE,L l'paMy=[Z ^ ئ^/С 9jV,,e& zGvEY=aڔm"p AF13ND_!zqJq'= p0 cXgj5W^=wF;,@{Yr$"3p!幅 :o Jɧ:@rڮvC郮qqڤeP]"a'W wx~ ҉( SPEfnBQ3QڪjugʳЪꣽ 8oJEZXEf"AZZpq+U7^˫L>I X$/xHLTDyKb,w{\a_Q404(u)SꓟPZ!8*ĀdX[j'*S{ʓe4*kpJ@?<ڣJxr>J@Ph1UPDα֚& P 3aa<۟; aKʀ@+ yO G"'j8Ge*30᷁1Y HnXVIsBm+q+`9xhOt:PW7+~̀jzkCK kQq#|6 (/qmCI s[hYȜyNO:]˶S|/N0: 9~HëPɤ[ajv:6  2Hi&O@J6!8e7!{٥pwW#^LxҖ"*㠟KE*pA⻩ ;'-4`*Q I\ʋňxc%0=!C, f|F3QYx_l ͷiۿ g/;ʵʵ֬{LyT^*3 :`lA߷Q ъZ,6(5}-@}1r'jH_A# I;Q*piˊ,Xp|N^Rڴu|L GF S*ёϩ\ai&E. s\(Y|3|:&6ʐZIÜyd6dDy(N57I3ňwy<DjqJ~Io-QbH݉crЖl/3Q?=!1q90A{(6'}m1ĆMYX8S@&1P̘17ہhGF ? 6֊ܝ%;hHR$tmI/!X!L?I=mX9};alI~6/40@C@/ۉ6(@S03B(eXt)! HI\sg59S? AI&!P#P\-nx! U&RMm!?G#06F@*s_L^@Wq@E/Tu:5S8# !=7'l(bQ01~޶L!b԰nm]v*_x-jjWz+yw2$qD||(V$Cr8g 63.Fh҄ S3wR@ba)]0J٘(&oF`"s'yv|5VvF(b!R.m7@W$Fb18O,(2gkNP?S])ggI a7{ksG(X08!`xmϧ}t7_ֻ?!upApvf0S!?c ?$PuЧCYKLma1 K9cT6`qc15A'.Q?$^wEAlB[0 }'4SSRVd~1:m1@xg(D3g@`dR1Aaʂa8Z$}[-_~DQWo.  * , P@ $H@,ȰG ! hnXТŇ'6tb .cE6$G2|BjYԨĈ!ITҊ$H`$MԒmB&Lï_AĔ"D +@BF#G)>4hi. >Tc2ʀ8 \'pAoسq'$^ܸ|b @Nu1lnsfd(v~0Lļ*UnARAfU-’% yc@HpIp"A- 2ɻ# ᱝdH"V$5R3,=:!hHdžzL7`@& `" &DŽ 5οxM9,**c8v"T@Ժ$PZ`n)3n,H#$nQ,rP +R0.}`1.Cq #D2Zm X}`pkMC\CxִQܬJ(Ք="pQY*hm7g{$̫zM!+oMfp]"aNΥ |388APa Gy`$+Fr=W`RXcd8ո 'aY 6 &KDbjaL2a;P+lh 0*֖~+L:7lcc:^N/W\7M8j= [`= * ,$ :P+@E3X+A?) SlĎӨT`tԂoFJzM^)tjۨ @" *Rsͷ-a5 J'5ߴ=8:RJ)~[ϙ@~UH,$총4 lX$>5W:b|k@Hx0Ԁ8 )o9ic5mJ aУ! @Ҝ"8V@3=\R|qC5in3T8S?/d9 72o !\8c@h(!|R( `5` 2 f5qA ЩU~dј-m:ak洬05,!Bm*l DI II4_JhE@֢╆K_ZI qz7M3bj1[ L:Ђpgi3+e ~@>&+N{U0ఓ kOW"ԅ*͟ p`A %GxD |IbQ-k#N*/Nτ:F}) <;л)Hi'R,$@GXiJ ?XHhȳ;}  hk{ٶeVriNW\! k%l8* UZ#$Hsq~7@'b$W e)IM؀sl(` oJHf*pR$Ȕڙ"x #$n +RYVEҜR%(T-X*6W4_a& 7Mװ(V 4[@ l{1ALRFW0q d-$8XEFq `]3lm+Z$e˖_kr"d4fՐn@$#ɷSQgPz5@&h]δg=`Rx,5``'03"+xL`p&. !q&N Kȅ$)ljӛCɖG7Zp(еl{[Uu8ądut:W>XDnDK Xm%|:9p bNvGJ' ,)ȈJLaev ȀxJbBYK>Wz4So8=W 3~`L0h+L@*PQ2K JM #Nt'?*Lmƪ6/Y4 ݏW!:ǔzC%o[{ZڅI0{͕NK-B7VϒRj/|#Dg3иMqGrKPJ_&۔SDil9ėP'ߤ)Zqe[3!2l6,i#_'}=o 轣IyM"}t<_ @&-kb#p`b3V O_W $AT`^ TPg~ԍ09zF`^_n7l8&"Ĥm4^#?5 27E[?0=q {.#,4Az;өL9h `)+.ғ-? s4.ѿµ* Cp;& d"Q+ˢ 1|-5ܿ%sˣ'zxC B K2#a)A À w!(Y $.DG.%@ B'AQ>LB/haH)&D*뵯C()J@7(ry%`);B0PlTC? S584@C銲DI"]Hf\LCcҢA82IcڰgA‰+$lHؐ!-ᖳc|,Rb阘 k3Fx'HNH<\C'Dሖ0h7 D f̭)*g& . Z0LDC]µ1LIVZ1]Cנ#A=9Z}I$/Ip)(h Fz"x*8F h[]@M K4tǠ0@;$|E1'a*="rEؤ+y+,䰍|@.yM(:&C)H((LI$LYL/X,>A u"? (C]ń<估؈ Kߔ :[7 =bGRa 8fP tƤ⢍BT]=4Uy4&bP5P&&c82! Rߝ:lrE рhdVK>)>bp{CxW By AL\A4e}9 cS55́(4[<| y֮$9e pہ(6%$9 А8Ȑ}q0"(Lǐa] ؂`%5uD"Cv ']XL}9踤ܬR ^SwIO>:cvba0|[$3jbB2}faE ]ғt"̩>HQ!-pZ.GXѽa2(4IԑW^g5  n-x-Zker+YҼ*Kx~k^!;čI(@8 Ƥ9T>xhJ@9au#p[evϏ@"#!dӳfo٥E݁qڍ0 oɟ.IVq KG\.9k !P\H6̪c2F&eZ6$4;cB5p<]0n̜Frј9 ('Xg,0?/ Q `$KIm؀oK đ'AѠ%=vdPR hgν #E*2!G49J c'Plqs2Ŏ6gä"R DpKfD=xP Xc8g n#JPw}!YXiCC%+q>$*$dg/@:/X@6h:;sp,xJâ-v0s##):7j s0= /|@ P1؋4ž r*%FzH7Ѯ/$?5ǃ,/I y 0p0/L~z֕T屴$WTH+k2{7K*~e12 < ؓ G 0 M72CuPM@X ÃBƍ& aĆ'6 1H'B$I+Rl)eb )>,hЀD9:h@P`!Z\0Ub*0`ԭWjpVAөSʭkW`%K/  @S`$7艡8p&2B?I-.C 8Zںj^$[AR 7x ?"HdHEҩN+|cȐ.\8rdAc2q VrvZW,RAYhYEZ ] `eVxT_з 5b-fH074K|DihjlMCo!\;0^ɑDRL1EJ-`tJ]N* 4 @ih7ޔDaAI`KIjpH@YfMVay TKgWWxuvU r5tH !"F\=nmpCBgBEadS=4D]KIw@eܹYH& '$ D'ptJgwdȔEBH'vC$Nb4E_Kt U0u%PD `TPApXt%[aaFՅCUCFpV!iD4"EA$yGTmشIEN|qxF0 !q!L\qz>^ \ ={k-偝sddێBU@*`ygX2Յs1(@S@_aV iq1V/Y*!߄נ0Ma6L"E D&I"HHqgGYdLqeI颪!X@Js FF쀜/}AS@dbg"&RĠrJJ%n~4`a  $8`lxpHpK'uQFr4=Fdb%%j]jBEM(̂U챝]Ar8&aF.a$E}`XX ԌF>Y ,qJFJY6EH*@%TEI4: IE`LRtHSXܗd1%T>>J^aڞ QVRޥP`5)aG E$_$M1kq c%z5_M1D3-36_ b$,@Xr&AVer>re9,׀T%1;.rȻFEI 8!jK8E,AvZ%X)=\$rN Gl,'Ps:ΉhI+l4j.4EW. \`xa`$v\0nH>Қ J.5mʢۍEH5J0jX #U-0Xebp T _%@K"`Η١m$4i:Ll]6+Xm}4DsBka?@eL VJXp~ pH+&M@d@jH2]QRq d%eBrc,ްfYcP'Ս/(&^~rbN(/(/{o6"ap ~j%5e!TiqRhr!dK esEO+R l,/]aGvO,(l %!ቪ- ƨb.-WrLT+G)`E`!o~ ')4 rXη>/Id])1LEȐ1$, < 0R$rfaX p `$m4F: 4eRuR4N5d\Kʣ4-X4D39',ofbօLEIZ+5g5j_\jhP(y_Y"> ֣l-{Rv4]][0۵}FvocNa̼; -N3jZr.Zg6Z\3;l2H}` mQ٬j&`Lh9XhL@X6 qGW`A6 ʦ( AJ!r:ghT3\%)hVh8HK_?VwX^cPiq^lC!aF6N=AN-j=t]'O޵5^[NJ]6b1)b(jBV/bFr_c^v^j^]w`YwϺu~ gbN%+ΤVaڀ(Ep(,SyZ3yYLR &[/}z|Cy]3)k.]I8Wét6P 6@!D(\%˕'i^Q#0Z= ;wދqɯ2e4lL}m" (ڿ#:$mћQ޼nD)wP$Hɲ:*<; vZ:" cJÙ8iR( &*FcJ(:LjC *ĖL@fL(j˨ Oέ ܋<r (O "R-JHL+2RL1ܴ $HK/BPA pB)% J3608`pGQP F,.;K* 9sȺJ2s0 # 2- E Ycˀ* 8AA36ZStku@<Xk"`dЁ|ePP -Cwz6x@ }QT\8(ˆcrN\"(뒊k:k!u eE tPFnm-.LTqDFX2qu ֶR7K,!(]E'-Ŵ]1 ==֋ꡧɒ::=}hoE@<+ǏǬ`:h lA 8( tLITo$;#H,kyr3$k{amupQ_}fY*2$ҕsb聂 &v,%n;'ҝhP ?0@?)tl%PL,z><y_Q p+!fF*uy@+ۻ25IgUɑUyJs3 ƮOIV2T.A tB`9pN~@  Ѩh ?nMQC>ֻXYj ͢?oXǡ!*$\sdxʅ^`]Xl8,Snnt 6}Du`DsF*>eDcXԀBۖ p">)?JK̸ࢲxFDcw+Un([d(ޝJq$[Wʋ'UA+Yf*OZz8@yr4ru>M0)D@B:ЁqY$Jx0\Mo$Nb%[~Q< zK*ћ~2@SeY-kj0UĒAjht>){S$ :p]JBW~D~t` ݎ*I[fNv zD '*x4;@:0}͒dיO4TGE0:OZ:iJȀ\V}l1 ]fc"\])o}cW%XGbSnrEoQ ,&k~Q=oBi,AU-#hF`>YgE8зjm"PYk]֟:8-"eo*`Dh7 \UW]vGZ  P_Ah/ٖhN:[m)pl5 kK[Xe zB<K!PZ0ZID՗FG~9ft=\e/efXG(mi8 t S K~Cƈ 4mLmS.E':7ѣ^H#gQ @kbAX{@ 2)+T6Ha%VGs0v`"V0찋I5ML(MzQP˖P@C㽁 B_v[Ryz @@% 5bCxSOJ0* [mo,,1~ ' rq7Roh H0mu#4^_{0y4``ޠnznNS]No:O=P.AՁ̘YZ粆ut#$}|b8k 2D)~3 `"61  @tvSLOQUP* @jl~T* 1.)3r,CjB= XL3 k0٣ mP)1MBo40"#"<=G, QB{cqC@RC2QQ'=mȘLzf=ت.  ł-E|É~, LoƲ&҄-[p-.#g=-Sl%!5R#'uR#&s2=S&`#N7Lb` |3,=@J1Qs<"\plZX!eQQ7Ps $ x@-sb4Ւ9Qi#5%S&"6<Sd= DRG7 '9e 8-E' D#Ds $sMt&2tAtX${N d)å1s-沭.ZU4Z \oHC =a `V% ]O&>Qvio`_u-*Ьϲ(RmdɤfĮ >-6%cs 2tSܪNۊN#XQ[Q1$-أ2N"oKN) " L1N%\h]6(& &@" 5E(bPPQg4&=jY@@@.2,wTmFg(!WdѲ ,gWVRdhdZrY1R*-7q~"`gJD` U| # x6BsbCX>&# EVd"@Zz3 f`t&W4":5 Z ]mT'^HpAfF"oQT ./bNVpCV+j)/U6N cMӜ%6`"3$Q= Q(/ NN; o^KkBx KBg'HvҜWCGzn1XRuxCpY&mUS3rT3Ǩ NG#PsQ<7H,8T)w tP&:3 df&@9O㨏N;M63\w"ld6pY1`l&aό[1K,weM . ;@35C@<{ 3_32Df F*jS2"֒.?xzd+7t\Zϖ(ZnwDWDZ71*]TT;'0-Z*c'#zT2 5:nr%` bM9p5F fH7 `U$X/w7/ lEVgލZ/L@jo ܀o"7D`7#}@vl0(dNZQ,eusg35d1-N2"o?Q!()={ɬ Cd7/.l߈`3She#2E{wQO2D؆Wf5K3t`kOW7MP8+Ei ~`d%F7ZX~1ڨ)qy4N0ڜ C?ŢSXOp2qpuz31:O ;/-[1"+Y5m̅ yR0 7<<`&hbCX" |p G \|1.yDr.ieC$FO-i-MѰQ QtV\#lj5N)ˍhwF`{y3yN3 `qZpz%/a@2{<\&Rb6J" *)8@g緜0r!iv#!֌SS`Rd:緽gFmr#(Y"']T-Rf- j4,"~vUb[ٿ{$3tG ?2  4:ڢrT\b 1#M6!O 7 ""s(v"fe'3  2$k8#} 2]k`Y+9#u׼6HN (v^1Bn`zP/F?CR# 3 {z#l^-?taoh/rD1ڄ.t,!@G`bG痶4Pþ1o;+˯u 8Zg9-IwoN hF{#W]HQzW<k NQP z> -dt?d" PЁ 0@ \b%z2G8p !J 2xi̙2ؼ !g|h ,X͑VV !adY$H7b%t 獹 >x  ĈфVL$ #&:!Rb?pజ" P!O[Cb`@Owu0gA„au :6e?0)BB-ׂo9Rm4ԑDgRuytaa DPtRN4sCF\H=tKh uWNŀF`z9ZIm` V7fdwPG= @S5Y,&TNRS\7iA@ւQ2fgy,J5FĮp@(P=@B' PxpH W"WF"i4AUYD&I_f73=Mymho&a QDO_𚹧,]( o욃`Ax@ |iQ%cz2f$ \Z"|'M ;RPB2B)N-nPvU4qǑ;YPvI* 1dAMdӅ2TRVQ@/~FMt4,npbA<@fY&"|7U$oI{> B{gZ6g -IDkd]D b mI@L;ByuA%GF+d]m I`iw@Wug&_b8NTRo0W}5W--lep!?E(&@L&~hp!)IpTHuZ(ۜd£P5`D -)8Ȣ-)K KB>, ^4GkjXETOQ@\LJ2/$ #~D _d+s ף,QF R$ L`%+ A%ӠmwUլUST2R>Pe\p`@vT ` Z."HӇ -'YiP 6y+J+n6Rƅ6C{ZڕmIONG~}:-pgp;ب 8x Ed0 fh0Y2l3+f CT+$xHf#SN:8h5gDb^#\uG 5QŢDdnRI[IƥqyLڦ8g@Z0 @v}B!v$+I@1<_20@` f8m{DZĥ!۬ǛZݱuK̬}D]:@d.oOso ʃ\宙 g0;ݫ|Dd& H*`diL Jhx+ ͓}l07 p%da p"nMi9jA$v+x!Äݓ nxJ+fSIYH/Urxڀa׫`*8D.y%scGit=bq" $sSqX~iUk$d݅>l8`pcl?w'1bчp>-a@3؁:*b1C$YtJr s62?=T pF}QUH#>SdywBFEEFF#rDvUkˁxF]0_m9ih&iUsc$f|!}Qmz"S"3VI"/:uZ'ppPHs  p 0(V2.%qMSECSDc7!5C%=4SE ыz8ghiir^spTꄆZ"pFp#0._w"2hI|WU0P1[c%'wUT$OÃ<4b9TK%DxP}&*Q>Y]Q"971eqb/3k@QdUT>1x(EVFG Q,0yމN6% 1AD!8 `S/$A(I6$p-m$~2,C;k`B0*?;}P@\jYYUI3ws%N~)I8%1jFLN]=5h;0q0y2G9GN<l99X@:G4uuhKEaB*Fa,u53Bp;F)6u'F}54?‰=`.6Еq&! P8ٙ5*561]/sp)0y=|1GD3$6~Hh6VF1X+`"a"+AE/09n;A%PNْ%"A܃xkES1SqUM񗿁!˱С4$N xMzNg*/UksqYdF 8`"i`vQpFPbat85::ăTE&wU;{<}EDEc$$HSJwZx,¢erƤ!7ځ)$G91_3s[rK/swD,?F]кcT{zPE!gqw41:~F\X#փ%$W8m2Y5w+a7NF&SVs  P:/l/(0uqjr0V*/A_zf]1ypFu(+#LBfgAWE&$d)=-)j.8wFw7cQvsii2Y&S\s {'VɵTmɪ_d`¿-^1r$gQfK=*qq[]Me-\e% $ ȁq68 SkC$8zXZ==-W-!F_8#`z|YgG-{zE|y-^3FO:cs4,k$rbQ11N[02&3ʋ6N f#ڱ-C;Y8*Hz<9/!ԸX$ZiܴCwc%kDy%+CU=\E|QH0y #y)灒JܱIKF'ױ$_<%@4 =!2%Pr<25%$˫ 9rMqIq-G3qVcmF ,>E .u0l8?rט%V#ш X[31y&~,Ι䳅2yp4Sϳ,]E1J΅.'=$,cwdM%ZTgb<9>K_x~(r=GW*})G9,JJ;=,PQ3Ľsw[Ap$K%q} ]-kB=b;(^ Ќ냌2'5O> oS6նNd0C[.p#яAeNmB~CCrq-,r;gcD-%w$pw|x<Ls592lRvb3CfvOz,Qf۽#'t.R-[gPd$쌭6y:.=%*űF2+J s6ј&me?BIH/Q`&Aroptפ61,錅szP˹dTgj~$6ϝC\>xQ7„ա>e@8 :U/0e7iOO!P&.Bl` 6,P"6X`! 02A4(т*x@ 5 ABN @h .\`4RK2bT" p@άt@@̾46J9r0@.f d& p*y瀛Ya0'ȔN@5M]kUGO2D!CN>!CƐ  QM~ 7nH8JGfP p~)pЛ$ѧJJt*ݬ'{CLX~0 tA [u J,4i" nITD&npبmd@D WPvt%6>P:!AKئT`7 Y`Jȥ8WG48ԛAPB;3ԘȔ/'+"(FΛsTz2% /L+ՁG:vw/m ypȾd(hN޵d0TO>tqܡ(A frU-|e,7H \BG(%DS(dԜBL}5INé`(C,Wb'00$SdLWD*aP-}B@%Ki l4$b2:HĎ_(Owjdp@%0.HM I0*&ђ:GH@RА&hG}f{G&̉ 'ʪ>(T !IJ %4R@@LID@JZ\f" Rr#(VPI) |@:+6Y&#Kx*?+aUʥR#8K-lAcNTLT صiW&m/XI'xfD$;ٌ1GO`7nJqT>LSQPB3@1EN' [DS/KXt0hFmm"  ; /Jt(F'ZLZeAv;w< 74%qd@4py`pa b9=d5=2\KxnLV |պn#I(a76{轨' X`6(pur5(  Q @INʹ+݋>UYL)#>_WeP'$#yW :[-9 )5z2]j/4䖖 ,yɷcnCa 3Ig&Z309^hBg?L* yEN\8Hރ_;lclk蒅7%1+Ŷ5"#/f%G]p Հ<]3Ub.HE;h+_r@XާMVn6OTiTDC.t ā`Pf-΢C]]L/@^3@,?gob"*&|1*GZ/a%s5q Bw N>&CP$@HI ($/ SH/@ 4#!IBB Dypx6 )93< 9q9+ H*Ἀs!6ŘAgs6i 8茾Nk$Siүѡ ථjc;* :в(? rA9194YWy 3L @#47, (Y 5 @x<{905F_s:g똘P; a![ 1&* >•जcͻJppH x I 4q8u]|)%˸2I$ 9 P5,4 ER"D9gk;'C"1p:O? N 6rcF0 Q>>+b?䊽BjKdziy)6h!:ZR xD1rl ;̸? Z'K++H2wg9ٝ'T %˞D 6QdCȀ;*4@^ $5?+|L6iObf ̻;tGI;l!;JB>K9Dm|#,H:+=cλMHEpͲؤC(x#$9?>p`ͺ;(A(# ,9:/lFX˞Y9zk/ ͡$3#L;FS?u 2J)et ̘ 482Ax!EմaSFPJ9ë3 2 4* DDet7M}U?9‘(`)#s5I++ '*k@bP3KˊD(8}8B\6#23nS+9#ޙRLE[[! M ̤L 9B@VFmI жOK֬>R,'+9@UMZ #r"J5SWsK-tRf,о0ĞDߒ)QxAP  ѠT$8aB.2 :W¼ԍTelRRC5 3hTx1?YclG\:X(DTA-ؓG~ [;z49gÐ 4,Z HDZAZ2ͨͻ6 ]CDq5d(L[ߴ!eAÞ݊IWӿЦ&o 8.ȹz,+&)+)ߗ@H%NmR&O܊S% )5 u)2 ̲ >ݾsP5٥e_ee^IB9ޯ J81Ej==sH]Kg\A0:N^p x{x!m `/U @:ԺeF`]R<蟢-=AXZHmĐ2 NTB+jRHǍԎ( MtR 88 Q2}eKO+ܥL?dd^=6˛ޏ;K{4-QXy*}L a6;E`BR=_];bʯ60&^zEfɈz]; Ø=[6™!Ac{6ݺC,S̓ޭM (5Ū; E&hyXF#E0BMq$))JuHQ(5ԁ#΄60IzeN RhY\4;iV<`U\@\+9,WOq$';Ց^i}!e󋲠4svg+Bvp((5Q;cDHB+RPZa}Zd pXɐZ2*x(^- j1c+Vdʝ˝ gVD`~Ke,nhLSʸP =8~mE 7Jg N'Qn1@sVZejl.Mo@#ďM&1emjO>K Х(}ĸyI5_ 0) xrYjجHH18bOa9XZ]>mlaZ |>QaӼ>9c୤R[--O$H"!p*H($"`MF9Їs?D`N෥֬p FXm5,]ܽ@šŤ[Z%8\FH# O q1 q bqָ( {**%%p0,醇4ҖKR>> {uAqDTDcv 7Z()R/}Gc,8dZOzTr>_RNjȵ^IZpA>CڼWcC7aF,}[m^u<pA"uPw,Aÿ o|}/>*PMncl5^kϰxl{w8}ˉr˲N=YOmͥ1 +$*G+ςzz/G(j{>RШszU`Yl7GgPPUtK޽2x1=i=kaAР!ƒ"xB @pa Te +ҠDȊCR⥤!} .^,Q#* `iM > 0)ԩK2mPA pP 0Y g"l "K( w;!/8€ RUj*7 Bߵ"С"}ba·!nRe˒0S R`PB 5hR"T8PTM{xVbq`ٱ=~>LYȐ6f׃_|.^&V`XUfYAraA7@=h!BEDEQ$E Pyd[DHQ!H!Ōlr9BMGhtPzq7aX㉷YM:vp)P"~i]M=} GE']t'~5AH B0~Pe^8hTfU(*T]CյВ٦kG& # lCGS|çJ|Jls%Ɨ] uNEIyZ\aUuHyPvDmkC-~Bt@=VPc`(Tzu&BQP!ևV{jW,†O-jF *>=:Pe{ю`xہ$e%嫯gXBd^dڥB9!p#L\{.isU4tuWEZ`CglǦ?Flr[uf*c P.PC${߲#֌"k|k(FG_\6pL>P9+&C5qZGE< 6P@PcD{WTJheA^ݕAi5ZN:ixQ]v9N)ںdLk#g-@ki9:quGs^4&ZAf-tYK̽Rg;[8&:Оx~[_Ȥb+zO"Gh U*:@*0l t 8`' Z(| A^,J{v8̕Psךj*"蕀_||,h c0Q{H 8}ֱVFZM-?_s#:Ki {4W=9lzi3 Psde!5k8/PF{+J շ)}#FI#_>M%F2;< e̜N^^hX] mi'X b JP;ӖDLsF4J0sjZ]U%PM TF,]2!e@\%iRP?9?MzHCLL5Eli fP!̖m"(Q؝R_R)!HQ{0#-f]&s꫞vJQ'J6(l7\@M>e:5izUF0E1,@ tu>*ثIn20trє/'Rr۔oYk>T7|oרnm@o™|]8Rk*ӂ<=mHvV)5j[˩vU.(*gJaqxcܚLZT`S[B鹺Pi͓ɠ#DOnp8tPZ׺ ۙ Wu\~ʻԹd89 1;dwcF̞uMkNz@{@Q |q.sI*Vj,p5e5̈́)3Ly4';l;];WJ:elK̦ы2wȩK]/rJrmLJ_ȮA+^~Z͂[l-o.K=eG_ 5*mE?]4~\_zpۿ?( 9.iD߽-MUAM* 1^I_DTsTO{U(^bTUPM8H|p@\fAPH^_.-RVVU- W|I xULMa& s%DeTE5܎\ b| @!qfIǀi y1[_lhj؜T5%&Xzp zNiL!Hm1eٝa4 45: #M5jFJ4BD%ޑVm&?Yqb `= EHNE9X!,",S~ذ˙<^*ҢoUdқ1AI`b@`!N,<#4FV4TA@fW\뙢a@fTLsEt t">IX%P5$4]{X(KT d``!H>*e@tIaE eEBV56]U@IGEMP(ZESIfH}S]E  Ӕ FT՝A]L-DDDbQflUԸ]je5@BE eEˆ |ʫ8.m[beX@YW޴>5T kYt$ #&mZG [`NΠ-^LD+ Fm4n@ | Ǩr4-aR˝dքWmUQ!v@$^/u@/5FllkZ@ܖ.pLؒ򡬚j[T :ng/VjIf/Yt TҨ V+φl.X"@M R/*j\ 8jSm`oJ41?d5&T0lN01 F, J0 5*:.Vj2*$Vs -K&N^}~r8UerZ"݁j៹4񫤱#lfg$?[H6  Vi j 舨 |Jn$q'>,$+$BlE%cr&%jr1}^D@;smb2www-980804/images/computer.gif100664 1750 1750 2427 6503342700 16071 0ustar csmallcsmallGIF89a00 $ ,0,,$,==<<988554((>1194.=8*)**Â?/:62//.1Ѯ՟=5@2&wӁߋ}Q!ćRjaC{:X,'AeDȑǏ!G+y6򅍏@t )V[3O/dۦCFTjN4Hp@vYD LD1'<9h .䌲]6aܹwb[wMe[W0(v؏ (P>K =BC2P[좄ěX(0 p/ɔ.ގkZ .(wPC9T   (ķI(Kl+L4 ')K ‹8TJED g\g gf'M33,C %o`=0ZvujO ;smb2www-980804/images/file.gif100664 1750 1750 440 6503343426 15131 0ustar csmallcsmallGIF89aܞ߮ 0QQQᆴq0 00 q AAQAqqq߆qqqAA!, die h+ꚰ0<9V+uX!l.#Z:LDdh#& p8^&k|WA}uT^1BtJjT6$~Aj]J^jR&~^.~P;u;"(!;smb2www-980804/images/share.gif100664 1750 1750 2774 6503350642 15346 0ustar csmallcsmallGIF89a00ueeeﺊueeUUUߪuߚ漢ϪuueUuUߚuueeeuUeUeUeEUUueEuUUueUeUEuEEuUEUUE0ﺚ00 eEEeE0UE}}}EE0U0EUU0U00eUE00E0 0 uU0 0UEEE eU0E 0e00Ǻ}}}qqϪuߎ}au!6,006 6Ģ ϲ ̅ʯ׳֯xy~c$s "\H h uL6L*XX8o/ S4RtP;xG^}! !C%A6p E:~\m$ \pA<|˕\D @ @`iS *!Ā=/:O(<NPY'ݰ#~ Q̧"M -DmBcNO|k +)"FG2p0l *y8,XH7*ޞ] .^$Lb̚1pF REVvuqA, ,B"SNA%U7(C{c}#2_3\XcYaiN9 0Hx!^|yl%(j0_y$ I}.e` *hZ<`)x]$Bi($v"pZ^5А 3P@ lbDa9d^(W^v' 4$xTevX%_Zva.~As)'eڊ.% 9Gpބ^@_+"a}( ]C(/uWjEB! ЬWCEL!dUw..Ψs8 +?RH]㵁z,oڣ};n*|Χ{ ${c^?M0[QǾB>xp&bPß?h@;smb2www-980804/images/printer.gif100664 1750 1750 3021 6535044105 15710 0ustar csmallcsmallGIF89a00aeiaaiQUYIIQIEQAAIܞyqyyYaYqq088008((0 $(  88IiiyaeqaaqY]iYYiQQa000׆}qyyqqy88Aimqiiq!,00@pH,Ȥrl:Pq< GvذP;)`,n3*J(oHQ35$)u)2-0]*% C{*)"$&$&%[i0#b* $$2& 2)7!9 *ii VN,!!")694&&u$8q,3$I_"84 59+ &D\pP' q%b3i J ,  ,x0"Q Đ4%1\bXtCRVQB D@+\a& 0@ ,)s @3J Yhp*- )_h@] [ cA2܉j 1Ԗb !B eЃg&R bH,0R!5n$̀/6 6!i'8!E38Xv(DƆ)KLР<2q Pt-_T̠h ^%l !|3Pau $7Pd ze@=@#YAP!7pT]Ͱ80v3^rX4A ,9frY#p@IX5pA x&` pg6v[8P";)28 k0 B7>PLX?ƁeAr :@<7 1 'U_$ ! H~^`;&`a07[] Yw9B\@ t$h# P`*81l@x*K[D&SN1(P5A \z;(2'u}1 ;ِPp ϲc g!gO,nCiV.촓 PC 8o{8TatN3=#(Z: 0k)_fC@ W 0/@hK SB/@Q1xA3`M^ {Tvl-,p|܊A '$2;smb2www-980804/images/message.gif100664 1750 1750 2561 6535631352 15667 0ustar csmallcsmallGIF89a00ϧxP h/߸`08?OG/wo8?7Ϡؿp@OO0??OWO_? g/Ѐ?0`GOooP7?PO@O / goPwpo_ϏW __/8︟O8 _`P00/o0` G@ow_OGP_?O0 //0 `0pw п🧐?@8/?0?pgoߗo`xаH0_/πo! ,00 +DD+D* D=J=)=NNBBCB.+*555=ʮβNBҶC+ ȨNNCC4#O#/*HH5=˖մiT`+Tp ܩS3NݬZ`0AA ܐHX1,A'`n$RbnO@Rt\Ɓ :EN)RT̨2'=8v[I_Gb".["\Qh2$ʺ$9k$Tl סawʼn$ Qx5*Zc@H;="Qx \7dA\ E2' 4ΰBtIxbXC(Ȑ$$Jk7 XK6 PZxdi_wh ^\*9(2c"DOЦq0 (@ĠxtЁ| ^@J t/2>lIG C81 "$fi(1Z 040į40``$Z@B .h |hP::!CH iA,C8+o$c ^+Ko3B@$#; fB,)+Qe /HǛUBxC.1XnGڔTr 8  e'+L$)F2TKgրgZaTp"iŠ8u 9@gͩ:2#M t$MwPo rW24ԳZxE"Ht@Sg;smb2www-980804/images/help.gif100664 1750 1750 404 6510260721 15134 0ustar csmallcsmallGIF89a ܋p!, IUO~UhBȔ穩 ۶(?DsMP7CMBRXLY>\ĤIh{qékjAd(A1gdz'[-Z}k_Mz~1 Ǚ*̬N#0 ;smb2www-980804/images/network.gif100664 1750 1750 4446 6503342700 15727 0ustar csmallcsmallGIF89a00`T88bF*q88qk`T`kD``v``*8TUF8q8*T**T`Tk88T"UT8`kvTTk3TTvT`v*8*Fqf8F`TvFFq*8F3UT`*8b8Fq"f`k8*bTTDTkTk3fkkTF3*T*T3w3w*T8T`k*Fb88F3U*FDw8TTv8T"f8Fb"D"UTv8b"DU*q*qD8qT*FTD8*F*TqTkv*bqD8`kTT`"U3D````T*8q*Tb8bF"wFUTkk"UF*bffTvv8q*Tv3T``**b*bb8bq8qD33fDUTv"TU"f8bb8`8TbkUTk*b*TT8FF`*b*q*F8*q`vTf8TqT*3888DDf*b**F8TT*DUDf`8q"wffwDUwUf8qq"3``k"kv33wD`T`FFT""!,00H*\ȰÇ#6 b @( 8x(Pr XXpa "lP>!b J<0@ ) b-0 1t1cC@6n;x(У0 A !bHF*8bUV]"Q#I,a&-@8yb(>H1d *50èV\)PaE:XXhقK^|E 80@ &d`B0tuÂcQf9 haB'@ DnjmpE9ذ fq @B4 Р†RAGv܁GzG|IpA~\TPb.PQ_4 Ga wQ D!B&@@%f H d8xF$"IzH_,| )Ă P$7^ I$ $Fp䠄  I0]f B%a`)0$%Pq &0 qC_1%ƀ %@ -s ,@}xFAЁ1d A r`,^ P-0f`"|j: `VKncJH!>8F$QFNnq# X@BFiMR(#f@ ”RY @C#]4PCP@x@hx-hp'HM>(L;՚@A,+q8"!r+SY@4+L([B[M Zld -IZK6 ;smb2www-980804/images/search.gif100664 1750 1750 1525 6535631545 15513 0ustar csmallcsmallGIF89a'-0,(I80($ yyyiiiaaaYYYQQQIII( AAAa]Y 088YQIQEA888808000((( Ϻ8hk*V0 UAxB4NdqD-YTFibF3CT>CKolȒ=uJDI /E{80X#RI&GJqB4tYg|!ljkg,""n^57 ѠB PDuPrJ(,UC 20d[N$(am0C 8 39Հ$kN8E5 oi  o&G (q@EF"L EC2d@ &dTHIJ~(ܱFM4FZd2 2B  ? R,pAEX`- A$a W , |2 h1 /[K½|  "|FDp @, B `P =Tl[p!4!|\B3 HP5H )C FBs,#] Fp2"pCI$Hݒ=7$| aGdp.(AlC|D· H.9es|FCH|n ꬷ^Aa`F響nL @Fa D@@ XA @0T kݖ>/) SH)0EAP@5H|?\L@ 18`!@ `yl &(z!z )\X LR .fG%"$)*`(@xxH@k Z$w8*ʅe]; == 0 ); open (VERSION, "VERSION"); $version=; chop $version; close VERSION; print <<"EOF"; Welcome to the installation of SMB2WWW, release $version. Press to continue, or press to stop. EOF $foo=; if ($is_root == 1) { while (! getpwnam($uname)) { print "$uname is not a valid username.\n" if (! $uname eq ""); print "What username shall I use to install smb2www [www-data] ? "; $uname=; chop $uname; $uname = "www-data" if ($uname eq ""); } while (! getgrnam($gname)) { print "$gname is not a valid groupname.\n" if (! $gname eq ""); print "What groupname shall I use to install smb2www [www-data] ? "; $gname= ; chop $gname; $gname = "www-data" if ($gname eq ""); } } print "Where shall I put smb2www [/usr/local/smb2www] ? "; $dir=; chop $dir; if ( $dir eq "") { $dir = "/usr/local/smb2www" }; print "\n"; die "Directory already exists ! Move first before continuing !" if ( -d $dir); mkdir "$dir",0755 or die "Unable to create directory ! Check your permissions."; print "\nDirectory $dir created successfully.\nNow creating subdirectories.\n"; mkdir "$dir/images",0755 or die "$!\n"; mkdir "$dir/cgi-bin",0755 or die "$!\n"; mkdir "$dir/bin",0755 or die "$!\n"; mkdir "$dir/etc",0755 or die "$!\n"; print "Subdirectories bin, etc, images and cgi-bin successfully created.\n\n"; if ($is_root) { print "Setting ownership to $uname:$gname..."; $uid=getpwnam($uname); $gid=getgrnam($gname); chown $uid,$gid,$dir,"$dir/images","$dir/cgi-bin","$dir/bin","$dir/etc" or die "\n$!\n"; print "done.\n\n"; } $smbc = ""; while (not -x "$smbc/smbclient" ) { print "In which directory is smbclient located [/usr/local/samba/bin] ? "; $smbc=; chop $smbc; if ( $smbc eq "") { $smbc = "/usr/local/samba/bin" }; print "\n"; } symlink "$smbc/smbclient","$dir/bin/smbclient" or die "unable to symlink smbclient to $dir/bin !\n"; $perl = ""; while (not -x "$perl" ){ print "What is your perl 5 binary [/usr/bin/perl] ? "; $perl=; chop $perl; if ( $perl eq "") { $perl = "/usr/bin/perl" }; print "\n"; } print "Which server shall I use as master browser ? "; $mbrowse=; chop $mbrowse; print "\n"; srand ( time ^ ($$ + ($$ << 15)) ); while (length $key < 25) { $key = $key.chr(rand(64)+64); } print "Which language would you like to use with SMB2WWW ?\n (english dutch finnish) [english] "; $language = ; chop $language; if ( $language eq "" ) { $language = "english" }; print "\n"; print "Which path shall I use for SMB2WWW pictures on your webserver\n[/smbimg] ? "; $imgpath=; chop $imgpath; if ( $imgpath eq "" ) { $imgpath = "/smbimg" }; print "\n"; print "Which path shall I use as SMB2WWW root on your webserver [/samba] ? "; $cgiroot=; chop $cgiroot; if ( $cgiroot eq "" ) { $cgiroot = "/samba" }; print "\n"; print "Where is your mime.types file [/etc] ? "; $mime=; chop $mime; if ( $mime eq "" ) { $mime = "/etc" }; $mime= $mime."/mime.types"; print "\n"; print "Now modifying scripts and configuration files...\n\n"; print "To make modifications later, edit $dir/etc/smb2www.conf\n"; # smb2www.conf open OUT, ">$dir/etc/smb2www.conf" or die "unable to create file $dir/etc/smb2www.conf !\n"; print OUT <<"EOF"; version = $version masterbrowser = $mbrowse username = nobody refresh = 300 cache = max-age = 300 bindir = $dir/bin cfgdir = $dir/etc imgroot = $imgpath cgiroot = $cgiroot linkto_other = http://samba.anu.edu.au/samba/smb2www/ background = cloud.gif icon_other = world.gif icon_all = network.gif icon_group = group.gif icon_computer = computer.gif icon_share = share.gif icon_printer = printer.gif icon_dir = folder.gif icon_file = file.gif icon_archive = archive.gif icon_help = help.gif icon_message = message.gif link = #7f0000 vlink = #4f0000 mimetype = $mime language = $language key = $key EOF close OUT; # All .pl files @pl = ("smbfile.pl","smbtar.pl","smbhelp.pl","smbshr.pl", "smbdir.pl","smbgrp.pl","smb2www.pl","smbmsg.pl"); foreach $plfile ( @pl) { open IN, "cgi-bin/$plfile"; $pline = ; open OUT, ">$dir/cgi-bin/$plfile" or die "$!\n"; print OUT "#! $perl\n"; while () { print OUT $_; } close OUT; chmod 0550,"$dir/cgi-bin/$plfile"; if ($is_root) { chown $uid,$gid, "$dir/cgi-bin/$plfile" } close IN; } # smb2www.pm open IN, "cgi-bin/smb2www.pm"; open OUT, ">$dir/cgi-bin/smb2www.pm"; while () { $_ =~ s#/usr/local/smb2www/etc/smb2www.conf#$dir/etc/smb2www.conf#; print OUT $_; } close OUT; if ($is_root) { chown $uid, $gid, "$dir/cgi-bin/smb2www.pm" } close IN; # copy all images `cp -v images/* $dir/images/`; if ($is_root) { opendir IMGDIR, "$dir/images"; @allfiles = grep !/^\./, readdir IMGDIR; closedir IMGDIR; foreach $file (@allfiles) { chown $uid,$gid, "$dir/images/$file"; } } # copy all language files `cp -v etc/*.lang $dir/etc/`; if ($is_root) { opendir ETCDIR, "$dir/etc"; @allfiles = grep !/^\./, readdir ETCDIR; closedir ETCDIR; foreach $file (@allfiles) { chown $uid, $gid, "$dir/etc/$file" } } # Setting permissions chmod 0550,"$dir/cgi-bin"; print "\nAdd this to your apache config:\n"; print "-------------------------------\n\n"; print "Alias $imgpath $dir/images\n"; print "ScriptAlias $cgiroot/ $dir/cgi-bin\n"; print "\nThank you for using SMB2WWW.\n\n"; smb2www-980804/Base64.pm100464 1750 1750 6223 6512475544 13672 0ustar csmallcsmall# # $Id: Base64.pm,v 1.8 1996/10/23 10:01:09 aas Exp $ package MIME::Base64; =head1 NAME encode_base64 - Encode string using base64 encoding decode_base64 - Decode base64 string =head1 SYNOPSIS use MIME::Base64; $encoded = encode_base64('Aladdin:open sesame'); $decoded = decode_base64($encoded); =head1 DESCRIPTION This module provides functions to encode and decode strings into the Base64 encoding specified in RFC 1521 - I. The Base64 encoding is designed to represent arbitrary sequences of octets in a form that need not be humanly readable. A 65-character subset ([A-Za-z0-9+/=]) of US-ASCII is used, enabling 6 bits to be represented per printable character. RFC 1521 says that the encoded bytes must be represented in lines of no more than 76 characters each. The second argument to encode_base64() is the line ending sequence to use. It defaults to C<"\n">. Use an empty string as second argument if you do not want the encoded string broken into lines. If you prefer not to import these routines into your namespace you can call them as: use MIME::Base64 (); $encoded = MIME::Base64::encode('Aladdin:open sesame'); $decoded = MIME::Base64::decode($encoded); =head1 COPYRIGHT Copyright 1995, 1996 Gisle Aas. This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself. =head1 AUTHOR Gisle Aas Based on LWP::Base64 written by Martijn Koster and Joerg Reichelt and code posted to comp.lang.perl <3pd2lp$6gf@wsinti07.win.tue.nl> by Hans Mulder =cut require 5.002; require Exporter; @ISA = qw(Exporter); @EXPORT = qw(encode_base64 decode_base64); $VERSION = sprintf("%d.%02d", q$Revision: 1.8 $ =~ /(\d+)\.(\d+)/); sub Version { $VERSION; } use Carp (); use integer; sub encode_base64 ($;$) { my $res = ""; my $eol = $_[1]; $eol = "\n" unless defined $eol; while ($_[0] =~ /(.{1,45})/gs) { $res .= substr(pack('u', $1), 1); chop($res); } $res =~ tr|` -_|AA-Za-z0-9+/|; # `# help emacs # fix padding at the end my $padding = (3 - length($_[0]) % 3) % 3; $res =~ s/.{$padding}$/'=' x $padding/e if $padding; # break encoded string into lines of no more than 76 characters each if (length $eol) { $res =~ s/(.{1,76})/$1$eol/g; } $res; } sub decode_base64 ($) { local($^W) = 0; # unpack("u",...) gives bogus warning in 5.00[123] my $str = shift; my $res = ""; $str =~ tr|A-Za-z0-9+=/||cd; # remove non-base64 chars Carp::croak("Base64 decoder requires string length to be a multiple of 4") if length($str) % 4; $str =~ s/=+$//; # remove padding $str =~ tr|A-Za-z0-9+/| -_|; # convert to uuencoded format while ($str =~ /(.{1,60})/gs) { my $len = chr(32 + length($1)*3/4); # compute length byte $res .= unpack("u", $len . $1 ); # uudecode } $res; } # Set up aliases so that these functions also can be called as # # MIME::Base64::encode(); # MIME::Base64::decode(); *encode = \&encode_base64; *decode = \&decode_base64; 1; smb2www-980804/VERSION100664 1750 1750 7 6561655233 13273 0ustar csmallcsmall980804