requireAdmin(); /** Affiche les informations sur le fichier envoyé par le client */ function PrintUploadedFileInfo($form_name_file) { echo "Nom du fichier envoyé:".$_FILES[$form_name_file]['name']."
"; echo "Taille: ".$_FILES[$form_name_file]['size']." octets"."
"; echo "Mime type: ".$_FILES[$form_name_file]['type']."
"; echo "Nom du fichier temporaire sur le serveur: ".$_FILES[$form_name_file]['tmp_name']."
"; echo "Erreurs au cours du transfert: ".$_FILES[$form_name_file]['error']."
"; } $style = new Style(); echo $style->GetHeader(HOTSPOT_NETWORK_NAME.' Import NoCat passwd file'); echo "\n"; echo "
\n"; if(empty($_REQUEST['action'])) { echo "
\n"; echo "

"._('Please select the NoCat passwd file you want to import.')."

\n"; echo "\n"; echo "\n"; echo "\n"; echo "

"._("Accept users with no email adresses (Normally, NoCat usernames are expected to be the user's email adress, and the username is generated from the prefix.")."\n"; echo "

\n"; echo "

\n"; echo "\n"; echo _("I am sure I want to import (Otherwise, the import will only be simulated).")."

\n"; echo "
\n"; echo "
\n"; } else if ($_REQUEST['action'] == 'upload_file') { if($_FILES['userfile']['tmp_name']) { $import_user = Array(); /* $import_user[$username]['email'] $import_user[$username]['passwd_hash'] $import_user[$username]['original_username'] $import_user[$username]['username_modified_because_of'] $import_user[$username]['is_rejected'] $import_user[$username]['reject_reason'] */ PrintUploadedFileInfo('userfile'); $fp = fopen($_FILES['userfile']['tmp_name'], "rb"); $output = null; $row = 1; while (!feof($fp)) { $data = fgets ($fp); $num = count($data); echo "

Line $row: $data
\n"; if(preg_match("/^(.*):(.*)$/", $data, $matches)) { //echo "

". print_r($matches)."

\n"; $nocat_username = $matches[1]; $nocat_password_hash=$matches[2]; $matches = null; if(preg_match( "/^(.*)@.*$/", $nocat_username, $matches)) { $email = $nocat_username; $original_username = $matches[1]; } else { echo "

NoCat username isn't an email

"; $email = ''; $original_username = $nocat_username; } echo "

Generating temporary user from: $original_username; Checking internal duplicates (duplicate usernames in the imported file)

\n"; $username_modified_because_of=null; $username=$original_username; if(isset($import_user[$username])) { $index=1; while(isset($import_user[$username])) { $username_modified_because_of=$username; echo "

Can't use $username because it was already generated from the imported file

\n"; $username=$original_username."_$index"; $index++; } echo "

Final username is now $username

\n"; } else { echo "

Final username is still $username

\n"; } $import_user[$username]['email']=$email; $import_user[$username]['passwd_hash']=convert_nocat_password_hash($nocat_password_hash); $import_user[$username]['original_username']=$original_username; $import_user[$username]['username_modified_because_of']=$username_modified_because_of; $import_user[$username]['is_rejected']=null; $import_user[$username]['reject_reason']=null; } else { echo "

Line skipped

\n"; } $row++; } echo "

Total of ". ($row-1) ." lines read and ".count($import_user)." candidate users generated.
\n"; foreach($import_user as $username => $user) { //echo "

$username

\n"; //echo "

". print_r($user)."

\n"; $import_user[$username]['is_rejected']=false; if(!empty($user['email'])) { $email_str = $db->EscapeString($user['email']); $db->ExecSqlUniqueRes("SELECT email FROM users WHERE email='$email_str'", $user_info_email, false); if($user_info_email!=null) { $import_user[$username]['is_rejected']=true; $import_user[$username]['reject_reason'] .= "

"._('Sorry, a user account is already associated to the email address: ')."$user[email]

\n"; } } else if(empty($_REQUEST['accept_empty_email'])) { $import_user[$username]['is_rejected']=true; $import_user[$username]['reject_reason'] .= "

"._('Sorry, the user must have a email adress.')."

\n";null; } else { $username_str = $db->EscapeString($username); $db->ExecSqlUniqueRes("SELECT user_id FROM users WHERE user_id='$username_str'", $user_info_username, false); if($user_info_username!=null) { $import_user[$username]['is_rejected']=true; $import_user[$username]['reject_reason'] .= "

"._('Sorry, a user account already exists with the username: ')."$username

\n"; } } if(!empty($_REQUEST['import_confirm']) && $_REQUEST['import_confirm']=='true' && $import_user[$username]['is_rejected']==false) { $status = ACCOUNT_STATUS_ALLOWED; $token = gentoken(); $reg_date = iso8601_date(time()); $password_hash = $db->EscapeString($user['passwd_hash']); $username = $db->EscapeString($username); $email = $db->EscapeString($user['email']); $sql = "INSERT INTO users (user_id,email,pass,account_status,validation_token,reg_date) VALUES ('$username','$email','$password_hash','{$status}','{$token}','{$reg_date}')"; $update_successful = $db->ExecSqlUpdate($sql); if ($update_successful) { //send_validation_email($email); $showform=false; } else { $import_user[$username]['is_rejected']=true; $import_user[$username]['reject_reason'] .= "

"._('SQL error on: ')."$sql

\n"; } } } echo "

"._('Report')."

\n"; /* List rejected users */ echo "\n"; $count_reject=0; $count_success=0; foreach($import_user as $username => $user) { if($user['is_rejected']==true) { $count_reject++; echo "\n"; echo "\n"; echo "\n"; } else { $count_success++; } } echo "\n"; echo "\n"; echo "
$username$user[reject_reason]
$count_reject rejected users
UsernameReason for rejection
\n"; /* List users imported with mangled usernames */ echo "\n"; $count_mangled=0; foreach($import_user as $username => $user) { if($user['is_rejected']==false&&!empty($user['username_modified_because_of'])) { $count_mangled++; echo "\n"; echo "\n"; echo "\n"; } } echo "\n"; echo "\n"; echo "

$count_success user(s) successfully imported ($count_mangled of them had their username modified), $count_reject user(s)rejected

\n"; } } echo "\n"; ?>
$username$user[original_username]$user[username_modified_because_of]
$count_mangled users were imported with modified usernames
UsernameOriginal usernameChanged because of user