HEX
Server: Apache
System: Linux sg241.singhost.net 2.6.32-896.16.1.lve1.4.51.el6.x86_64 #1 SMP Wed Jan 17 13:19:23 EST 2018 x86_64
User: honghock (909)
PHP: 8.0.30
Disabled: passthru,system,shell_exec,show_source,exec,popen,proc_open
Upload Files
File: //usr/local/share/perl5/Net/OSCAR/ServerCallbacks/23/signon.pm
package Net::OSCAR::ServerCallbacks;
BEGIN {
  $Net::OSCAR::ServerCallbacks::VERSION = '1.928';
}
use strict;
use warnings;
use Net::OSCAR::Constants;
use vars qw($SESSIONS $SCREENNAMES %COOKIES $screenname $connection $snac $conntype $family $subtype $data $reqid $reqdata $session $protobit %data);
sub {

my $hash;
($screenname, $hash) = ($data{screenname}, $data{auth_response});

if(!$SCREENNAMES->{$screenname}) {
	$connection->proto_send(protobit => "authorization_response", protodata => {error => 1});
}

my @valid_hashes = map {
	[$_, encode_password($session, exists($data{pass_is_hashed}) ? md5($SCREENNAMES->{$screenname}->{pw}) : $SCREENNAMES->{$screenname}->{pw}, $_)];
} keys %{$SESSIONS->{$screenname}->{keys}};

my $valid = 0;
foreach (@valid_hashes) {
	next unless $_->[1] eq $hash;
	$valid = 1;
	delete $SCREENNAMES->{$screenname}->{keys}->{$_->[0]};
	last;
}

if($valid) {
	my $key = randchars(256);
	$connection->proto_send(protobit => "authorization_response", protodata => {
		screenname => $SCREENNAMES->{$screenname}->{sn},
		email => $SCREENNAMES->{$screenname}->{email},
		auth_cookie => $key,
		server_ip => "127.0.0.1"
	});
	$session->delconn($connection);

	$COOKIES{$key} = {sn => $screenname, conntype => CONNTYPE_BOS};
} else {
	$connection->proto_send(protobit => "authorization_response", protodata => {error => 5});
	$session->delconn($connection);
}

};