Subversion Repositories ALCASAR

Compare Revisions

No changes between revisions

Ignore whitespace Rev 2167 → Rev 2168

/web/acc/manager/htdocs/import_file.php
1,83 → 1,57
<?php
require('../lib/fpdf/fpdf.php');
/**
* Print credentials of imported users
*
* @author Tom Houdayer
* @copyright Copyright (C) ALCASAR (http://www.alcasar.net)
* @license GPL-3.0
* @version $Id$
*/
 
class fichePDF extends FPDF {
if ((!isset($_GET['file'])) || (empty($_GET['file']))) {
exit();
}
 
function Header()
{
$filename = $_GET['file'];
$format = ((isset($_GET['format'])) ? $_GET['format'] : 'txt');
 
}
function Footer()
{
//Positionnement à 1,5 cm du bas
$this->SetY(-15);
//Arial italique 8
$this->SetFont('Arial','I',8);
//Couleur du texte en gris
$this->SetTextColor(128);
//Numéro de page
$this->Cell(0,10,'Page '.$this->PageNo(),0,0,'C');
}
if (($format !== 'txt') && ($format !== 'pdf')) {
exit();
}
 
function lirefichier($fichier)
{
$this->AddPage();
//Lecture des lignes du fichier
$lines = file($fichier);
$n = 1;
foreach($lines as $line){
//Times 12
$this->SetFont('Times','',10);
//Sortie du texte justifié
$this->Cell(0,5,utf8_decode($line));
$this->Ln();
++$n;
if ($n > (50)){ // on affiche 50 ligne par page soit 5 fiches usagers
$this->AddPage();
$n = 1;
}
}
}
$filePath = '/tmp/'.$filename.'.pwd';
if ((!is_file($filePath)) || (!is_readable($filePath))) {
exit('FILE_NOT_FOUND');
}
 
function getImportFile($importFileName, $format = "txt"){
$importFile = "/tmp/$importFileName.pwd";
if(is_file($importFile)&&is_readable($importFile)){
if ($format=="txt"){
//telechargement
$taille=filesize($importFile);
header("Content-Type: application/x-download");
header("Content-Length: $taille");
header("Content-Disposition: attachment; filename=\"$importFileName.txt\"");
header("Cache-Control: private, max-age=0, must-revalidate");
header("Pragma: public");
header("Content-Type: application/force-download; filename=\"$importFileName.txt\"");
ini_set("zlib.output_compression","0");
readfile($importFile);
exit();
}elseif ($format=="pdf"){
$pdf=new fichePDF();
$pdf->lirefichier($importFile);
$pdf->Output($importFileName.".pdf","D");
}else{
getImportFile($importFileName,"txt");
}
} else {
return false;
}
if ($format === 'txt') {
header('Content-Type: application/x-download');
header('Content-Length: '.filesize($filePath));
header('Content-Disposition: attachment; filename="'.$filename.'.txt"');
header('Content-Type: application/force-download; filename="'.$filename.'.txt"');
header('Cache-Control: private, max-age=0, must-revalidate');
header('Pragma: public');
ini_set('zlib.output_compression', '0');
readfile($filePath);
} else if ($format === 'pdf') {
// Convert to PDF
$html = '<!doctype html><html><head><meta charset="utf-8"></head><body><pre>';
$html .= file_get_contents($filePath);
$html .= '</pre></body></html>';
file_put_contents("$filePath.pdf.html", $html);
 
$command = 'wkhtmltopdf' . ' --quiet --disable-smart-shrinking --footer-font-size 8 --footer-left "ALCASAR" --footer-center "[page] / [toPage]" --footer-right "' . date('Y-m-d H:i:s') . '" ' . escapeshellarg("$filePath.pdf.html") . ' ' . escapeshellarg("$filePath.pdf");
$output;
$exitCode;
exec($command, $output, $exitCode);
 
header('Content-Type: application/pdf');
header('Content-Length: '.filesize("$filePath.pdf"));
header('Content-Disposition: attachment; filename="'.$filename.'.pdf"');
header('Cache-Control: private, max-age=0, must-revalidate');
header('Pragma: public');
readfile("$filePath.pdf");
 
unlink("$filePath.pdf");
unlink("$filePath.pdf.html");
}
if (isset($_GET['file']) && $_GET['file']){
if (isset($_GET['format'])){
$format = $_GET['format'];
} else {
$format = "txt";
}
if (getImportFile($_GET['file'], $format)){
//fichier en cour de téléchargement
} else {
echo "erreur 2 ";
}
} else {
echo "erreur 1 ";
}
?>
Property changes:
Added: svn:keywords
+Id
\ No newline at end of property
/web/acc/manager/htdocs/ticket_user.php
1,54 → 1,42
<?php
require_once('/var/www/html/acc/manager/lib/alcasar/ticketspdf.class.php');
// ticket d'impression (thank's to Geoffroy MUSITELLI)
//--recupération des variables provenant du formulaire
$langue_imp=utf8_decode($_POST["langue_imp"]);
$log_imp=$_POST["log_imp"];
$passwd_imp=$_POST["passwd_imp"];
$exp_imp=utf8_decode($_POST["exp_imp"]);
$sto_imp=utf8_decode($_POST["sto_imp"]);
$mas_imp=utf8_decode($_POST["mas_imp"]);
$mds_imp=utf8_decode($_POST["mds_imp"]);
$mms_imp=utf8_decode($_POST["mms_imp"]);
// Langue du Ticket d'impression en fonction de la liste déroulante
if (isset($_POST["langue_imp"])) { $langue_imp = $_POST["langue_imp"]; } else { $langue_imp = "en"; };
if (is_file("../lib/langues_imp.php")) include("../lib/langues_imp.php") ;
// Si les valeurs de durée ne sont pas définies, on les remplace par la valeur 'Illimitée'
if (($sto_imp=='') or ($sto_imp=='-')){ $sto_imp=$l_unlimited;}
if (($mas_imp=='') or ($mas_imp=='-')){ $mas_imp=$l_unlimited;}
if (($mds_imp=='') or ($mds_imp=='-')){ $mds_imp=$l_unlimited;}
if (($mms_imp=='') or ($mms_imp=='-')){ $mms_imp=$l_unlimited;}
//création de la classe PDF pour faire l'entête et pieds de page
$pdf = new ticketsPDF(2,3);
$pdf->setTicketsTitle($l_title_imp);
$pdf->setTicketsFooter($l_footer_imp);
$pdf->newTickets();
$pdf->Ln(5);
$pdf->addInfos($l_login_imp, $log_imp);
$pdf->addInfos($l_password_imp, $passwd_imp);
$pdf->Ln(5);
$pdf->addInfos($l_max_all_session_imp, $mas_imp);
$pdf->addInfos($l_session_timeout_imp, $sto_imp);
$pdf->addInfos($l_max_daily_session_imp, $mds_imp);
$pdf->addInfos($l_expiration_imp, $exp_imp);
$pdf->Ln(10);
$pdf->addComment($l_explain);
 
// Création du duplicata
$pdf->newTickets();
$pdf->Ln(5);
$pdf->addInfos($l_login_imp, $log_imp);
$pdf->addInfos($l_password_imp, $passwd_imp);
$pdf->Ln(5);
$pdf->addInfos($l_max_all_session_imp, $mas_imp);
$pdf->addInfos($l_session_timeout_imp, $sto_imp);
$pdf->addInfos($l_max_daily_session_imp, $mds_imp);
$pdf->addInfos($l_expiration_imp, $exp_imp);
$pdf->Ln(10);
$pdf->addComment($l_duplicate,'C');//à mettre en rouge
 
// envoie du document au navigateur
$ticket_name="ticket_".$log_imp.".pdf";
$pdf->Output($ticket_name);
header ('Location: '.$ticket_name);
?>
<?php
/**
* Print tickets of the new user
*
* @author Tom Houdayer
* @copyright Copyright (C) ALCASAR (http://www.alcasar.net)
* @license GPL-3.0
* @version $Id$
*/
 
require_once __DIR__ . '/../lib/alcasar/TicketsGenerator.php';
$langue_imp = ((isset($_POST['langue_imp'])) ? $_POST['langue_imp'] : 'en');
require_once __DIR__ . '/../lib/langues_imp.php';
 
// Get datas from form
if ((!isset($_POST['log_imp'])) || (!isset($_POST['passwd_imp'])) || (!isset($_POST['exp_imp'])) || (!isset($_POST['sto_imp'])) || (!isset($_POST['mas_imp'])) || (!isset($_POST['mds_imp']))) {
exit();
}
$log_imp = $_POST['log_imp'];
$passwd_imp = $_POST['passwd_imp'];
$exp_imp = ((($_POST['exp_imp'] === '') || ($_POST['exp_imp'] === '-')) ? $l_without : utf8_decode($_POST['exp_imp']));
$sto_imp = ((($_POST['sto_imp'] === '') || ($_POST['sto_imp'] === '-')) ? $l_unlimited : utf8_decode($_POST['sto_imp']));
$mas_imp = ((($_POST['mas_imp'] === '') || ($_POST['mas_imp'] === '-')) ? $l_unlimited : utf8_decode($_POST['mas_imp']));
$mds_imp = ((($_POST['mds_imp'] === '') || ($_POST['mds_imp'] === '-')) ? $l_unlimited : utf8_decode($_POST['mds_imp']));
 
// Generate tickets
$ticketsGenerator = new TicketsGenerator(['language' => $langue_imp]);
 
// Add user
$ticketsGenerator->addTicket([
'username' => $log_imp,
'password' => $passwd_imp,
'maxAllSession' => $mas_imp,
'sessionTimeout' => $sto_imp,
'maxDailySession' => $mds_imp,
'expiration' => $exp_imp
]);
 
// Save the PDF and redirect user to it
$filename = 'ticket_' . $log_imp . '.pdf';
$ticketsGenerator->saveAs($filename);
header('Location: ' . $filename);
Property changes:
Added: svn:keywords
+Id
\ No newline at end of property
/web/acc/manager/htdocs/ticket_voucher.php
1,200 → 1,137
<?php
CONST ROOT = '/';
require_once(ROOT.'/var/www/html/acc/manager/lib/alcasar/ticketspdf.class.php');
/**
* Print tickets of new users
*
* @author Tom Houdayer
* @copyright Copyright (C) ALCASAR (http://www.alcasar.net)
* @license GPL-3.0
* @version $Id$
*/
 
/*
TODO :
- refonte de GenRandUsersName()
- traiter si $nbfailuser (nombre de ticket non créé pour cause de doublon)
*/
require_once __DIR__ . '/../lib/alcasar/TicketsGenerator.php';
require_once '/etc/freeradius-web/config.php';
require_once '../lib/sql/drivers/'.$config['sql_type'].'/functions.php';;
require_once '../lib/attrshow.php';
require_once '../lib/defaults.php';
require_once '../lib/functions.php';
if ($config['sql_use_operators'] === 'true') {
require_once '../lib/operators.php';
}
 
// POUR LES BESOINS DU DEVELOPPEMENT
// BUFFERISATION DES DONNEES ENVOYEES AU CLIENT (compatibilité avec les fichiers existants)
ob_start();
//Common Functions
function sec_imp($time)
/* Formatage des secondes avant l'impression */
{
$jour = 0;$heure = 0;$minute = 0;$seconde = 0;
$jour = floor($time/86400);
$reste = $time%86400;
if ($jour!=0) $result = $jour.' J ';
$heure = floor($reste/3600);
$reste = $reste%3600;
if ($heure!=0) $result = $result.$heure.' H ';
$minute = floor($reste/60);
if ($minute!=0) $result = $result.$minute.' min ';
$seconde = $reste%60;
if ($seconde!=0) $result = $result.$seconde.' s ';
return $result;
 
// Get datas from form
if ((!isset($_POST['nbtickets'])) || (!is_numeric($_POST['nbtickets']))){
header('Location: voucher_new.php');
exit();
}
function GenPassword($nb_car="8")
{
/* generation aléatoire du mot de passe */
$password = "";
$chaine = "aAzZeErRtTyYuUIopP152346897mMLkK";
$chaine .= "jJhHgGfFdDsSqQwWxXcCvVbBnN152346897";
while($nb_car != 0)
{
$i = rand(0,71);
$password = $password.$chaine[$i];
$nb_car --;
}
return $password ;
}
function GenRandUsersName()
{
$nb_car= 12;
$chaine = "AZE489RTYU2PML5KJ35HGF9DSQWXCV3BN267";
//$i = rand(0,25);
//$j = rand(0,25);
//$k = rand(0,25);
$userName = "";
while($nb_car != 0)
{
$i = rand(0,35);
$userName .= $chaine[$i];
$nb_car --;
}
//return "T".$chaine[$i].substr(time(),4).$chaine[$j].$chaine[$k];
return $userName;
}
$nbTickets = (int)$_POST['nbtickets'];
$langue_imp = ((isset($_POST['langue_imp'])) ? $_POST['langue_imp'] : 'en');
require_once __DIR__ . '/../lib/langues_imp.php';
 
if (isset($_POST['nbtickets'])&& is_numeric($_POST['nbtickets'])){
$nbtickets = (int)$_POST['nbtickets'];
if ($config['general_lib_type'] === 'sql' && $config['sql_use_operators'] === 'true') {
$show_ops = 1;
$colspan = 2;
} else {
header("Location: voucher_new.php");
exit;
$show_ops = 0;
$colspan = 1;
}
if ($config['sql_use_operators'] === 'true') {
$text = ',op';
$passwd_op = ",':='";
}
 
// Langue du Ticket d'impression en fonction de la liste déroulante
if (isset($_POST["langue_imp"])) { $langue_imp = $_POST["langue_imp"]; } else { $langue_imp = "en"; };
if (is_file("../lib/langues_imp.php")) include("../lib/langues_imp.php") ;
 
require(ROOT.'etc/freeradius-web/config.php');
require('../lib/attrshow.php');
require('../lib/defaults.php');
if ($config[general_lib_type] == 'sql' && $config[sql_use_operators] == 'true'){
$colspan=2;
$show_ops=1;
}else{
$show_ops = 0;
$colspan=1;
// Connect to database
$link = da_sql_pconnect($config);
if (!$link) {
exit('ERR_DATABASE_CONNECT');
}
 
$LIBpath = "../lib/";
require(ROOT.'etc/freeradius-web/config.php');
if (is_file($LIBpath."sql/drivers/$config[sql_type]/functions.php"))
{
include_once($LIBpath."sql/drivers/$config[sql_type]/functions.php");
$nbFailUsers = 0;
 
 
 
// Generate tickets
$ticketsGenerator = new TicketsGenerator(['language' => $langue_imp]);
 
 
for ($i = 0; $i < $nbTickets; $i++) {
// Generate username and password
$login = generateRandomString(8);
$passwd = generateRandomString(12);
$password = $passwd;
// Check user exist
require '../lib/'.$config['general_lib_type'].'/user_info.php';
if ($user_exists === 'yes') {
$nbFailUsers++;
continue;
}
else
{
echo "<b>Could not include SQL library</b><br>\n";
exit();
 
// Create user in database
require '../lib/'.$config['general_lib_type'].'/create_user.php';
 
// Get group infos
if ((isset($group)) && ($group !== '')) {
$loginUser = $login;
$login = $group;
require '../lib/sql/group_info.php';
$login = $loginUser;
}
include_once($LIBpath.'functions.php');
if ($config['sql_use_operators'] == 'true')
{
include_once($LIBpath."operators.php");
$text = ',op';
$passwd_op = ",':='";
}
$link = @da_sql_pconnect($config);
 
$nbfailuser = 0;
// Format datas
$sto_imp = (($sto_imp === '') ? $l_unlimited : formatTime($sto_imp));
$mas_imp = (($mas_imp === '') ? $l_unlimited : formatTime($mas_imp));
$mds_imp = (($mds_imp === '') ? $l_unlimited : formatTime($mds_imp));
$mms_imp = (($mms_imp === '') ? $l_unlimited : formatTime($mms_imp));
$exp_imp = (($Expiration === '') ? $l_without : date('d - m - Y', strtotime($Expiration)));
 
// Préparation de la fiche PDF
$pdf = new ticketsPDF(2,3);
$pdf->setTicketsTitle($l_title_imp);
$pdf->setTicketsFooter($l_footer_imp);
// Add user
$ticketsGenerator->addTicket([
'username' => $login,
'password' => $password,
'maxAllSession' => $mas_imp,
'sessionTimeout' => $sto_imp,
'maxDailySession' => $mds_imp,
'expiration' => $exp_imp
]);
}
 
if ($link)
 
// Generate the PDF
$ticketsGenerator->output();
 
 
/**
* Format time in seconds to days/hours/minutes/secondes.
*
* @param int $time Time in seconds.
*
* @return string Formated time.
*/
function formatTime($time)
{
if (is_file($LIBpath."crypt/$config[general_encryption_method].php"))
{
include($LIBpath."crypt/$config[general_encryption_method].php");
// ajout des comptes (mêmes attributs pour tous sauf login + mdp)
$days = floor($time / 86400); $reste = $time % 86400;
$hours = floor($reste / 3600); $reste = $reste % 3600;
$minutes = floor($reste / 60);
$secondes = $reste % 60;
 
for ($i = 1; $i <= $nbtickets; $i++)
{
// effacement des variables
$login = "";
$passwd = "";
// création des données uniques
$login = GenRandUsersName();
$passwd = GenPassword();
// création des variables d'impression
$login_imp = $login;
$passwd1_imp = $passwd;
// encryption du mot de passe (pas besoins, déjà présent dans le fichier create_user.php)
//$passwd = da_encrypt($passwd);
// test si l'usager existe
if (is_file("../lib/$config[general_lib_type]/user_info.php"))
include("../lib/$config[general_lib_type]/user_info.php");
if ($user_exists == "no"){
// Création de l'usager
if (is_file("../lib/$config[general_lib_type]/create_user.php"))
include("../lib/$config[general_lib_type]/create_user.php");
/* Petit traitement pré-impression pour la lisibilité */
/* Récupération des attributs du groupe le cas échéant */
if ($group!=''){
$saved_login = $login;
$login = $group;
if (is_file("../lib/sql/group_info.php"))
include("../lib/sql/group_info.php");
$login = $saved_login;}
/* Si les valeurs de durée sont vide remplissage avec la valeur 'Illimitée'*/
/* et formatage des secondes sous le format Heure min ses*/
if ($sto_imp==''){ $sto_imp=$l_unlimited;}
else { $sto_imp=sec_imp($sto_imp);}
if ($mas_imp==''){ $mas_imp=$l_unlimited;}
else { $mas_imp=sec_imp($mas_imp);}
if ($mds_imp==''){ $mds_imp=$l_unlimited;}
else { $mds_imp=sec_imp($mds_imp);}
if ($mms_imp==''){ $mms_imp=$l_unlimited;}
else { $mms_imp=sec_imp($mms_imp);}
/*Formatage de la date afin d'être lisible dans toute les langues 'jj mm yyyy'*/
$exp_imp = $Expiration;
if ($exp_imp!=''){ $exp_imp=date("d - m - Y",strtotime($exp_imp));}
else { $exp_imp=$l_without;}
// Ajout d'un ticket sur la fiche PDF
$pdf->newTickets();
$pdf->Ln(5);
$pdf->addInfos($l_login_imp, $login_imp);
$pdf->addInfos($l_password_imp, $passwd1_imp);
$pdf->Ln(5);
$pdf->addInfos($l_max_all_session_imp, $mas_imp);
$pdf->addInfos($l_session_timeout_imp, $sto_imp);
$pdf->addInfos($l_max_daily_session_imp, $mds_imp);
$pdf->addInfos($l_expiration_imp, $exp_imp);
$pdf->Ln(10);
$pdf->addComment($l_explain);
return "$days J $hours H $minutes min $secondes s";
}
 
// Création du duplicata
$pdf->newTickets();
$pdf->Ln(5);
$pdf->addInfos($l_login_imp, $login_imp);
$pdf->addInfos($l_password_imp, $passwd1_imp);
$pdf->Ln(5);
$pdf->addInfos($l_max_all_session_imp, $mas_imp);
$pdf->addInfos($l_session_timeout_imp, $sto_imp);
$pdf->addInfos($l_max_daily_session_imp, $mds_imp);
$pdf->addInfos($l_expiration_imp, $exp_imp);
$pdf->Ln(10);
$pdf->addComment($l_duplicate,'C');//à mettre en rouge
} else {
$nbfailuser++;
}# if user
} # end for
} # end if (is file)
} # end if (link)
 
//Affichage de la fiche de tickets
ob_end_clean();
$pdf->Output();
?>
/**
* Generate a random string.
*
* @param int $length Length of the string.
*
* @return string Random string.
*/
function generateRandomString($length = 8)
{
$string = '';
$chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$randoms = openssl_random_pseudo_bytes($length);
for ($i = 0; $i < $length; $i++) {
$string .= $chars[ord($randoms[$i]) % 62];
}
return $string;
}
Property changes:
Added: svn:keywords
+Id
\ No newline at end of property