;
fclose(FILE);
$counter = 0;
for my $key ( keys %director) {
push @actfound, $key;
$counter++;
}
$column = int( $counter / 3 ) - 1;
$counter = 0;
foreach my $actfound (@actfound) {
$selected = q{};
foreach my $allow (@allowed) {
chomp $allow;
if ( $actfound eq $allow ) {
$selected = ' checked="checked"';
last;
}
}
$refexpl_txt{$actfound} =~ s/\x22/\x27/gxsm; # XHTML Validation
$dismenu .=
qq~
\n~;
$counter++;
if ( $counter > $column + 1 ) {
$dismenu .= q~~;
$counter = 0;
}
}
$yymain .= qq~
~;
$yytitle = "$reftxt{'1'}";
$action_area = 'referer_control';
AdminTemplate();
return;
}
sub Refcontrol2 {
is_admin_or_gmod();
require Sources::SubList;
$counter = 0;
for my $key ( keys %director) {
push @actfound, $key;
$counter++;
}
foreach my $actfound (@actfound) {
if ( $FORM{$actfound} ) { push @outfile, "$actfound\n"; }
}
fopen( FILE, ">$vardir/allowed.txt" );
print {FILE} @outfile or croak "$croak{'print'} FILE";
fclose(FILE);
$yySetLocation = qq~$adminurl?action=referer_control~;
redirectexit();
return;
}
sub AddMember {
is_admin_or_gmod();
LoadLanguage('Register');
$yymain .= qq~
~;
$yytitle = "$register_txt{'97'}";
$action_area = 'addmember';
AdminTemplate();
return;
}
sub AddMember2 {
is_admin_or_gmod();
LoadLanguage('Register');
LoadLanguage('Main');
my %member;
while ( ( $key, $value ) = each %FORM ) {
$value =~ s/\A\s+//xsm;
$value =~ s/\s+\Z//xsm;
$value =~ s/[\n\r]//gxsm;
$member{$key} = $value;
}
# Make sure users can't register with banned details
banning( $member{'regusername'}, $member{'email'}, 1 );
# check if there is a system hash named like this by checking existence through size
my $hsize = keys %{ $member{'regusername'} };
if ( $hsize > 0 ) { fatal_error('system_prohibited_id'); }
if ( length( $member{'regusername'} ) > 25 ) {
$member{'regusername'} = substr $member{'regusername'}, 0, 25;
}
if ( $member{'regusername'} eq q{} ) {
fatal_error( 'no_username', "($member{'regusername'})" );
}
if ( $member{'regusername'} eq q{_} || $member{'regusername'} eq q{|} ) {
fatal_error( 'id_alfa_only', "($member{'regusername'})" );
}
if ( $member{'regusername'} =~ /guest/ism ) {
fatal_error( 'id_reserved', "($member{'regusername'})" );
}
if ( $member{'regusername'} =~ /[^\w\+\-\.\@]/sm ) {
fatal_error( 'invalid_character',
"$register_txt{'35'} $register_txt{'241e'}" );
}
if ( $member{'regusername'} =~ /^[0-9]+$/sm ) {
fatal_error( 'all_numbers',
"$register_txt{'35'} $register_txt{'241n'}" );
}
if ( $member{'email'} eq q{} ) {
fatal_error( 'no_email', "($member{'regusername'})" );
}
if ( -e "$memberdir/$member{'regusername'}.vars" ) {
fatal_error( 'id_taken', "($member{'regusername'})" );
}
if ( $member{'regusername'} eq $member{'passwrd1'} ) {
fatal_error('password_is_userid');
}
FromChars( $member{'regrealname'} );
$convertstr = $member{'regrealname'};
$convertcut = 30;
CountChars();
$member{'regrealname'} = $convertstr;
if ($cliped) {
fatal_error( 'realname_to_long',
"($member{'regrealname'} => $convertstr)" );
}
if ( $member{'regrealname'} =~
/[^ \w\x80-\xFF\[\]\(\)#\%\+,\-\|\.:=\?\@\^]/sm )
{
fatal_error( 'invalid_character',
"$register_txt{'38'} $register_txt{'241re'}" );
}
if ($emailpassword) {
srand;
$member{'passwrd1'} = int rand 100;
$member{'passwrd1'} =~ tr/0123456789/ymifxupbck/;
$_ = int rand 77;
$_ =~ tr/0123456789/q8dv7w4jm3/;
$member{'passwrd1'} .= $_;
$_ = int rand 89;
$_ =~ tr/0123456789/y6uivpkcxw/;
$member{'passwrd1'} .= $_;
$_ = int rand 188;
$_ =~ tr/0123456789/poiuytrewq/;
$member{'passwrd1'} .= $_;
$_ = int rand 65;
$_ =~ tr/0123456789/lkjhgfdaut/;
$member{'passwrd1'} .= $_;
}
else {
if ( $member{'passwrd1'} ne $member{'passwrd2'} ) {
fatal_error( 'password_mismatch', "($member{'regusername'})" );
}
if ( $member{'passwrd1'} eq q{} ) {
fatal_error( 'no_password', "($member{'regusername'})" );
}
if ( $member{'passwrd1'} =~
/[^\s\w!\@#\$\%\^&\*\(\)\+\|`~\-=\\:;'",\.\/\?\[\]\{\}]/sm )
{
fatal_error( 'invalid_character',
"$register_txt{'36'} $register_txt{'241'}" );
}
}
if ( $member{'email'} !~ /^[\w\-\.\+]+\@[\w\-\.\+]+\.\w{2,4}$/sm ) {
fatal_error( 'invalid_character',
"$register_txt{'69'} $register_txt{'241e'}" );
}
if (
( $member{'email'} =~ /(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)|(\.$)/sm )
|| ( $member{'email'} !~
/\A.+@\[?(\w|[-.])+\.[a-zA-Z]{2,4}|[0-9]{1,4}\]?\Z/sm )
)
{
fatal_error('invalid_email');
}
if (
lc $member{'regusername'} eq
lc MemberIndex( 'check_exist', $member{'regusername'}, 0 ) )
{
fatal_error( 'id_taken', "($member{'regusername'})" );
}
if (
lc $member{'email'} eq
lc MemberIndex( 'check_exist', $member{'email'}, 2 ) )
{
fatal_error( 'email_taken', "($member{'email'})" );
}
if (
lc $member{'regrealname'} eq
lc MemberIndex( 'check_exist', $member{'regrealname'}, 1 ) )
{
fatal_error( 'name_taken', "($member{'regrealname'})" );
}
if ( $name_cannot_be_userid
&& lc $member{'regusername'} eq lc $member{'regrealname'} )
{
fatal_error('name_is_userid');
}
fopen( RESERVE, "$vardir/reserve.txt" )
|| fatal_error( 'cannot_open', "$vardir/reserve.txt", 1 );
@reserve = ;
fclose(RESERVE);
fopen( RESERVECFG, "$vardir/reservecfg.txt" )
|| fatal_error( 'cannot_open', "$vardir/reservecfg.txt", 1 );
@reservecfg = ;
fclose(RESERVECFG);
for my $aa ( 0 .. $#reservecfg ) {
chomp $reservecfg[$aa];
}
$matchword = $reservecfg[0] eq 'checked';
$matchcase = $reservecfg[1] eq 'checked';
$matchuser = $reservecfg[2] eq 'checked';
$matchname = $reservecfg[3] eq 'checked';
$namecheck =
$matchcase eq 'checked'
? $member{'regusername'}
: lc $member{'regusername'};
$realnamecheck =
$matchcase eq 'checked'
? $member{'regrealname'}
: lc $member{'regrealname'};
foreach my $reserved (@reserve) {
chomp $reserved;
$reservecheck = $matchcase ? $reserved : lc $reserved;
if ($matchuser) {
if ($matchword) {
if ( $namecheck eq $reservecheck ) {
fatal_error( 'id_reserved', "$reserved" );
}
}
else {
if ( $namecheck =~ $reservecheck ) {
fatal_error( 'id_reserved', "$reserved" );
}
}
}
if ($matchname) {
if ($matchword) {
if ( $realnamecheck eq $reservecheck ) {
fatal_error( 'name_reserved', "$reserved" );
}
}
else {
if ( $realnamecheck =~ $reservecheck ) {
fatal_error( 'name_reserved', "$reserved" );
}
}
}
}
if ( -e ("$memberdir/$member{'username'}.vars") ) {
fatal_error('id_taken');
}
if ( $send_welcomeim == 1 ) {
$messageid = $BASETIME . $PROCESS_ID;
fopen( IM, ">$memberdir/$member{'regusername'}.msg", 1 );
print {IM}
"$messageid|$sendname|$member{'regusername'}|||$imsubject|$date|$imtext|$messageid|0|$ENV{'REMOTE_ADDR'}|s|u||\n"
or croak "$croak{'print'} IM";
fclose(IM);
}
$encryptopass = encode_password( $member{'passwrd1'} );
$reguser = $member{'regusername'};
$registerdate = timetostring($date);
if ($default_template) { $new_template = $default_template; }
else { $new_template = 'default'; }
ToHTML( $member{'regrealname'} );
${ $uid . $reguser }{'password'} = $encryptopass;
${ $uid . $reguser }{'realname'} = $member{'regrealname'};
${ $uid . $reguser }{'email'} = lc $member{'email'};
${ $uid . $reguser }{'postcount'} = 0;
${ $uid . $reguser }{'usertext'} = $defaultusertxt;
${ $uid . $reguser }{'userpic'} = 'blank.gif';
${ $uid . $reguser }{'regdate'} = $registerdate;
${ $uid . $reguser }{'regtime'} = $date;
${ $uid . $reguser }{'timeselect'} = $timeselected;
${ $uid . $reguser }{'timeoffset'} = $timeoffset;
${ $uid . $reguser }{'dsttimeoffset'} = $dstoffset;
${ $uid . $reguser }{'hidemail'} = $FORM{'hideemail'} ? 1 : 0;
${ $uid . $reguser }{'timeformat'} = q~MM D+ YYYY @ HH:mm:ss*~;
${ $uid . $reguser }{'template'} = $new_template;
${ $uid . $reguser }{'language'} = $member{'userlang'};
${ $uid . $reguser }{'pageindex'} = q~1|1|1~;
UserAccount( $reguser, 'register' ) & MemberIndex( 'add', $reguser ) &
FormatUserName($reguser);
if ($emailpassword) {
my $templanguage = $language;
$language = $member{'userlang'};
LoadLanguage('Email');
require Sources::Mailer;
my $message = template_email(
$passwordregemail,
{
'displayname' => $member{'regrealname'},
'username' => $reguser,
'password' => $member{'passwrd1'}
}
);
sendmail( $member{'email'}, "$mailreg_txt{'apr_result_info'} $mbname",
$message, q{}, $emailcharset );
$language = $templanguage;
}
elsif ($emailwelcome) {
my $templanguage = $language;
$language = $member{'userlang'};
LoadLanguage('Email');
require Sources::Mailer;
my $message = template_email(
$welcomeregemail,
{
'displayname' => $member{'regrealname'},
'username' => $reguser,
'password' => $member{'passwrd1'}
}
);
sendmail( $member{'email'}, "$mailreg_txt{'apr_result_info'} $mbname",
$message, q{}, $emailcharset );
$language = $templanguage;
}
$yytitle = "$register_txt{'245'}";
$yymain = "$register_txt{'245'}";
$yySetLocation =
qq~$adminurl?action=viewmembers;sort=regdate;reversed=on;start=0~;
redirectexit();
$action_area = 'addmember';
AdminTemplate();
return;
}
sub AdminCheck {
$yymain .= $my_admin_login;
$formsession = cloak("$mbname$username");
if ($do_scramble_id) { $user = cloak($username); }
else { $user = $username; }
my $adminpass = 'adminpass';
my $cookiename = "$cookieusername$adminpass";
if ( $yyCookies{$cookiename} ) {
if ( $INFO{'action2'} ) {
$my_action = qq~action=$INFO{'action2'};~;
}
if ( $INFO{'page'} ) {
$my_page = qq~page=$INFO{'page'};~;
}
if ( $my_action || $my_page ) { $my_query = q{?}; }
$yySetLocation = qq~$adminurl$my_query$my_action$my_page~;
redirectexit();
}
else {
$yymain =~
s/{yabb adminchk}/$adminurl?action=admincheck2;username=$user/sm;
if ( $INFO{'action2'} ) {
$yymain =~ s/{yabb act}/$INFO{'action2'}/sm;
}
if ( $INFO{'page'} ) {
$yymain =~ s/{yabb page}/$INFO{'page'}/sm;
}
$yynavigation = qq~› $admin_txt{'900'}~;
$yytitle = $admin_txt{'900'};
$yyuname = qq~${$uid.$username}{'realname'}~;
template();
}
return;
}
sub AdminCheck2 {
my $password = encode_password( $FORM{'passwrd'} || $INFO{'passwrd'} );
if ( $FORM{'action'} ) { $my_action = qq~action=$FORM{'action'};~; }
if ( $FORM{'page'} ) { $my_page = qq~page=$FORM{'page'};~; }
if ( $my_action || $my_page ) { $my_query = q{?}; }
if ( $do_scramble_id ) { $user = decloak($username); }
else { $user = $username; }
if ( ( $iamadmin || $iamgmod )
&& $password ne ${ $uid . $user }{'password'} )
{
fatal_error('no_admin_passwrd');
}
elsif ( $iamadmin
&& encode_password('admin') eq ${ $uid . $user }{'password'} )
{
fatal_error('default_password');
}
my $adminpass = 'adminpass';
my $cookiename = "$cookieusername$adminpass";
push @otherCookies,
write_cookie(
-name => "$cookiename",
-value => 'on',
-path => q{/},
-expires => '0'
);
$yySetLocation = qq~$adminurl$my_query$my_action$my_page~;
redirectexit();
return;
}
1;
|