#!/usr/bin/perl # # This software may be used and distributed according to the terms # of the GNU Public License, incorporated herein by reference # # MyNapster WebClient copyright 2000 # info@mynapster.com # # You are welcome to modify and distribute this code use CGI qw(:standard); use CGI::Cookie; use lib "/home/mynapste/www/cgi-bin"; use napster; use strict; $SIG{'HUP'} = \&puke; $SIG{'INT'} = \&puke; $SIG{'KILL'} = \&puke; $SIG{'PIPE'} = \&puke; $SIG{'ALRM'} = \&puke; alarm 40; if (param()) { my $cookie_nick = cookie('nick'); my $cookie_pass = cookie('pass'); my ($nick, $pass); if (!$cookie_nick && !$cookie_pass) { my $mynapster = Napster->new("", ""); my @chars = ('a' .. 'z', 'A' .. 'Z', 0 .. 9); $nick = join "", map $chars[rand @chars], 1 .. 10; $pass = join "", map $chars[rand @chars], 1 .. 7; my ($type, $msg) = $mynapster->register_new_user($nick, $pass, $nick . '@hotmail.com'); if ($type != 3) { print header; print_form(); print p, h1("Could not create a new user, reason $type, message : $msg"),p; print end_html; die; } else { $cookie_nick = cookie(-NAME => 'nick', -VALUE => $nick, -EXPIRES => '+2y'); $cookie_pass = cookie(-NAME => 'pass', -VALUE => $pass, -EXPIRES => '+2y'); }; } else { $nick = $cookie_nick; $pass = $cookie_pass; }; my $mynapster = Napster->new($nick, $pass); my $nap_server = param('Server'); my @all_servers = param('servers'); foreach my $serv (@all_servers) { if ($serv =~ /$nap_server/) { $_ = $serv; }; }; my ($ip, $port); s/^(\S*)\s//; $ip = $1; s/^(\S*)\s//; $port = $1; my ($nap_ip, $nap_port) = $mynapster->connect($ip, $port); if ($nap_ip != -1) { print header(-COOKIE => [$cookie_nick, $cookie_pass]); print_form(); my %songs = $mynapster->search(FILENAME => param('name'), MAX_RESULTS => param('max_res')); if (!defined(%songs)) { print h3({-style=>'Color: green;'},"No matching songs found"), p; }; foreach my $song (keys %songs) { $_ = (split(/\\/, $song))[-1]; s/"//g; my ($md5, $size, $bitrate, $freq, $length, $nick, $ip, $link_type) = split ' ', $songs{$song}; my $ref = "/cgi-bin/get_song.cgi/?song=" . CGI::escape($song) . "&nick=" . CGI::escape($nick) . "&nap_ip=" . $nap_ip . "&nap_port=" . $nap_port . "&size=" . $size; my $mysize = sprintf '%.2f', $size/1000000; print a( {-href=>$ref}, $_), ' ', $mysize, " MB"; for (my $i = 1; $i < $link_type; $i++) { print ''; }; print p; } print end_html; $mynapster->disconnect; } else { print header; print_form(); print p, h1("Could not connect to napster, contact a webmaster"),p; } } else { print header; print_form(); sub puke { die; } sub print_form { ## my @servers = napster::get_servers_list; ## my @hidden_servers = @servers; ## foreach (@servers) ## { ## s/(\S*)$//; ## $_ = $1; ## }; ## my $serv_ref = \@servers; print start_html('My Napster'), h3({-style=>'Color: green;'},"My Napster"), start_form, "Song or Artist name : ", textfield('name'), " Max Results : ", textfield('max_res'), p; print radio_group(-name=>'Server', -values=>['opennap.htoc.com','opennap.cx','wintermute.sparhawk.bc.ca', 'wolf.ircmafia.org', 'imperialfleet.com', 'mynapster.com', 'culvernap.yi.org', 'mp3hoy.net', 'opennap.darkcrystal.cx', 'bitchx.dimension6.com', 'thrashmetal.napster.com', 'salsa.napster.com', 'crossover.napster.com', 'blackmetal.napster.com', 'polskpunk.napster.com', 'negerpunk.napster.com', 'hardcore.napster.com', 'clubhouse.napster.com', 'eurohouse.napster.com', 'alternative.napster.com', 'freestyle.napster.com', 'britpop.napster.com', 'samba.napster.com', 'tango.napster.com', 'porngroove.napster.com', 'primus.napster.com', 'trance.napster.com', 'opera.napster.com', 'acoustic.napster.com', 'easylistening.napster.com', 'symphonicrock.napster.com', 'psychedelicrock.napster.com', 'bluegrass.napster.com', 'celtic.napster.com', 'fastfusion.napster.com', 'swing.napster.com', 'hardrock.napster.com', 'rockandroll.napster.com', 'acidjazz.napster.com', 'acidpunk.napster.com', 'showtunes.napster.com', 'rave.napster.com', 'newage.napster.com', 'jungle.napster.com', 'gangstarap.napster.com', 'hiphop.napster.com', 'eurodance.napster.com', 'techno.napster.com', 'rock.napster.com', 'pop.napster.com', 'oldies.napster.com', 'funk.napster.com', 'disco.napster.com', 'bigband.napster.com', 'tribal.napster.com'], -default=>'eurohouse.napster.com'); print ''; print ''; print ''; print ''; print ''; print ''; print ''; print ''; print ''; print ''; print ''; print ''; print ''; print ''; print ''; print ''; print ''; print ''; print '

', p,p,submit, end_form, hr, p; };