The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.
package Net::OSCAR::ServerCallbacks;
BEGIN {
  $Net::OSCAR::ServerCallbacks::VERSION = '1.928';
}
use strict;
use warnings;
use vars qw($SESSIONS $SCREENNAMES %COOKIES $screenname $connection $snac $conntype $family $subtype $data $reqid $reqdata $session $protobit %data);
sub {

if(exists($SCREENNAMES->{$data{screenname}})) {
	$screenname = $data{screenname};
	my $key = sprintf("%08d", int(rand(99999999)));
	print "$screenname would like to sign on.  Generated key '$key'\n";

	$SESSIONS->{$screenname} ||= {};
	$SESSIONS->{$screenname}->{keys} ||= {};
	$SESSIONS->{$screenname}->{sessions} ||= [];
	$SESSIONS->{$screenname}->{status} ||= {
		online => 0,
	};

	$SESSIONS->{$screenname}->{keys}->{$key} = 1;
	$connection->proto_send(protobit => "authentication_key", protodata => {key => $key});
} else {
	$connection->proto_send(protobit => "authorization_response", protodata => {error => 1});
	$session->delconn($connection);
}

};