<commit_before><?php

/**
 * Virtual FTP Accounts Management Page 
 *
 * Copyright (c) 2009 Evolix - Tous droits reserves
 *
 * vim: expandtab softtabstop=4 tabstop=4 shiftwidth=4 showtabline=2 
 *
 * @author <NAME> <<EMAIL>>
 * @author <NAME> <<EMAIL>>
 * @author <NAME> <<EMAIL>>
 * @version 1.0
 */

$action=$params[1];
$account=$params[2];

$errors = array();
$errors[1] = "Les mots de passe de correspondent pas";
$errors[2] = "Le login doit contenir entre 6 et 16 caractères";
$errors[3] = "Le répertoire existe, continuer quand même ?";
$errors[4] = "Impossible de créer le dossier racine. Merci de contacter votre administrateur";
$errors[5] = "Le nom de compte choisi est déjà utilisé sur le système. Merci de le modifier";
$errors[6] = "Le chemin saisi n'est pas valide. Merci d'en saisir un autre";
$errors[7] = "Le mot de passe doit contenir au moins 6 caractères";

$user_id = $_SESSION['user_id'];

if ($action=="add") {
    $owner_list = get_owner_list();
 
  if(array_key_exists('submit_button', $_POST)) {
    //print "Ajout du compte {$_POST['login']}";
    $login = $_POST['login'];
    $passw = $_POST['passwd'];
    $pass2 = $_POST['passwd_c'];
    $dossier = $_POST['path'];
    if (array_key_exists('confirm', $_POST)) $confirm = $_POST['confirm'];

    // On vérifie que le login choisi n'est pas déjà pris
    $output = ""; 
    exec("cat /etc/proftpd/vpasswd | grep $login:", $output, $exec_return);
    if (!empty($output)) {
      $_SESSION['error']=5;
      $_SESSION['form']['login'] = $login;
      $_SESSION['form']['passw'] = $passw;
      $_SESSION['form']['pass2'] = $pass2;
      $_SESSION['form']['dossier'] = $dossier;
      http_redirect('/ftpadmin/add');
    }



    // On vérifie la taille du login
    if (strlen($login)<6 || strlen($login)>16) {
      $login='';
      $_SESSION['error']=2;
      http_redirect("/ftpadmin/add");
    }

    // On vérifie qu'on a bien saisi un mot de passe
    if (strlen($passw) < 6) {
      $_SESSION['error'] = 7;
      $_SESSION['form']['login'] = $login;
      $_SESSION['form']['passw'] = '';
      $_SESSION['form']['pass2'] = '';
      $_SESSION['form']['dossier'] = $dossier;
      http_redirect('/ftpadmin/add');
    }

    // On vérifie que les 2 mots de passe sont identiques
    if ($passw != $pass2) {
      $passw = $pass2 = '';
      $_SESSION['error']=1;
      $_SESSION['form']['login'] = $login;
      $_SESSION['form']['passw'] = '';
      $_SESSION['form']['pass2'] = '';
      $_SESSION['form']['dossier'] = $dossier;
      http_redirect("/ftpadmin/add");
    }

    /* Le superadmin est capable de créer un compte pour quelqu'un d'autre */
    /* ATTENTION : dans la suite du code $user_id est modifié */
    if(is_superadmin()) {
      $owner_info = posix_getpwnam($_POST['owner']);
      $user_id = $owner_info['uid'];
      $complete_path = sprintf('/home/%s/%s', $_POST['owner'], $dossier);
    } else {
      $complete_path = "/home/{$_SESSION['user']}/$dossier";
    }

    $_SESSION['error']=null;
    $_SESSION['form']=null;
    // Création du répertoire source
    $complete_path = str_replace('//', '/', $complete_path);
 
    // Vérification de l'intégrité du chemin saisi
    if (strpos($complete_path, '../')!==FALSE) {
      $_SESSION['error']=6;
      $_SESSION['form']['login'] = $login;
      $_SESSION['form']['passw'] = $<PASSWORD>;
      $_SESSION['form']['pass2'] = $<PASSWORD>;
      $_SESSION['form']['dossier'] = $dossier;
      http_redirect('/ftpadmin/add');
    }

    // Utilmisation du script de vérification d'existence d'un répertoire en sudo 
    $exists = '';
    exec("sudo /usr/share/scripts/evoadmin/directorycheck.sh $complete_path", $exists, $return);

    // On teste d'abord si le répertoire n'existe pas déjà ou si l'utilisateur 
    if ($exists[0]=="1" && !isset($confirm)) {
      $_SESSION['error']=3;
      $_SESSION['form']['login'] = $login;
      $_SESSION['form']['passw'] = $<PASSWORD>;
      $_SESSION['form']['pass2'] = $<PASSWORD>;
      $_SESSION['form']['dossier'] = $dossier;

      http_redirect('/ftpadmin/add');
    } elseif ($exists[0]=="1" && isset($confirm) && $confirm==0) {
      $_SESSION['error']=null; 
      $_SESSION['form']['login'] = $login;
      $_SESSION['form']['passw'] = $<PASSWORD>;
      $_SESSION['form']['pass2'] = $<PASSWORD>;
      $_SESSION['form']['dossier'] = "";
      http_redirect('/ftpadmin/add');
    } elseif ($exists[0]==0 || (isset($confirm) && $confirm==1)) {
     
      // On appelle le script de création de compte FTP
      sudoexec("ftpadmin.sh -a a -u $user_id -n $login -f $complete_path -p $passw", $standard_output, $function_output);

      // On revient à la page de listing
      $_SESSION['error']=null;
      $_SESSION['form']=null;
      $ftp_added_login = $login;
    
    } else {
      print "Le cas de figure présent n'existe pas... Avez-vous essayé de modifier l'adresse manuellement ?";
    }
  }

  include_once EVOADMIN_BASE . '../tpl/header.tpl.php';
  include_once EVOADMIN_BASE . '../tpl/menu.tpl.php';
  if(!empty($ftp_added_login)) {
    include_once EVOADMIN_BASE . '../tpl/ftpadmin-new-ok.tpl.php';
  } else {
    include_once EVOADMIN_BASE . '../tpl/ftpadmin-new.tpl.php';
  }
  include_once EVOADMIN_BASE . '../tpl/footer.tpl.php';

} elseif ($action=="edit") {

  print "Modification du mot de passe de $account";

} elseif ($action=="delete") {

  sudoexec("ftpadmin.sh -a d -u $user_id -n $account -f /dev/null -p azertyuiop", $standard_output, $function_output);
<commit_msg>Removed unecessary argument in ftpadmin.php delete<commit_after><?php

/**
 * Virtual FTP Accounts Management Page 
 *
 * Copyright (c) 2009 Evolix - Tous droits reserves
 *
 * vim: expandtab softtabstop=4 tabstop=4 shiftwidth=4 showtabline=2 
 *
 * @author <NAME> <<EMAIL>>
 * @author <NAME> <<EMAIL>>
 * @author <NAME> <<EMAIL>>
 * @version 1.0
 */

$action=$params[1];
$account=$params[2];

$errors = array();
$errors[1] = "Les mots de passe de correspondent pas";
$errors[2] = "Le login doit contenir entre 6 et 16 caractères";
$errors[3] = "Le répertoire existe, continuer quand même ?";
$errors[4] = "Impossible de créer le dossier racine. Merci de contacter votre administrateur";
$errors[5] = "Le nom de compte choisi est déjà utilisé sur le système. Merci de le modifier";
$errors[6] = "Le chemin saisi n'est pas valide. Merci d'en saisir un autre";
$errors[7] = "Le mot de passe doit contenir au moins 6 caractères";

$user_id = $_SESSION['user_id'];

if ($action=="add") {
    $owner_list = get_owner_list();
 
  if(array_key_exists('submit_button', $_POST)) {
    //print "Ajout du compte {$_POST['login']}";
    $login = $_POST['login'];
    $passw = $_POST['passwd'];
    $pass2 = $_POST['passwd_c'];
    $dossier = $_POST['path'];
    if (array_key_exists('confirm', $_POST)) $confirm = $_POST['confirm'];

    // On vérifie que le login choisi n'est pas déjà pris
    $output = ""; 
    exec("cat /etc/proftpd/vpasswd | grep $login:", $output, $exec_return);
    if (!empty($output)) {
      $_SESSION['error']=5;
      $_SESSION['form']['login'] = $login;
      $_SESSION['form']['passw'] = $<PASSWORD>;
      $_SESSION['form']['pass2'] = $<PASSWORD>;
      $_SESSION['form']['dossier'] = $dossier;
      http_redirect('/ftpadmin/add');
    }



    // On vérifie la taille du login
    if (strlen($login)<6 || strlen($login)>16) {
      $login='';
      $_SESSION['error']=2;
      http_redirect("/ftpadmin/add");
    }

    // On vérifie qu'on a bien saisi un mot de passe
    if (strlen($passw) < 6) {
      $_SESSION['error'] = 7;
      $_SESSION['form']['login'] = $login;
      $_SESSION['form']['passw'] = '';
      $_SESSION['form']['pass2'] = '';
      $_SESSION['form']['dossier'] = $dossier;
      http_redirect('/ftpadmin/add');
    }

    // On vérifie que les 2 mots de passe sont identiques
    if ($passw != $pass2) {
      $passw = $pass2 = '';
      $_SESSION['error']=1;
      $_SESSION['form']['login'] = $login;
      $_SESSION['form']['passw'] = '';
      $_SESSION['form']['pass2'] = '';
      $_SESSION['form']['dossier'] = $dossier;
      http_redirect("/ftpadmin/add");
    }

    /* Le superadmin est capable de créer un compte pour quelqu'un d'autre */
    /* ATTENTION : dans la suite du code $user_id est modifié */
    if(is_superadmin()) {
      $owner_info = posix_getpwnam($_POST['owner']);
      $user_id = $owner_info['uid'];
      $complete_path = sprintf('/home/%s/%s', $_POST['owner'], $dossier);
    } else {
      $complete_path = "/home/{$_SESSION['user']}/$dossier";
    }

    $_SESSION['error']=null;
    $_SESSION['form']=null;
    // Création du répertoire source
    $complete_path = str_replace('//', '/', $complete_path);
 
    // Vérification de l'intégrité du chemin saisi
    if (strpos($complete_path, '../')!==FALSE) {
      $_SESSION['error']=6;
      $_SESSION['form']['login'] = $login;
      $_SESSION['form']['passw'] = $<PASSWORD>;
      $_SESSION['form']['pass2'] = $<PASSWORD>;
      $_SESSION['form']['dossier'] = $dossier;
      http_redirect('/ftpadmin/add');
    }

    // Utilmisation du script de vérification d'existence d'un répertoire en sudo 
    $exists = '';
    exec("sudo /usr/share/scripts/evoadmin/directorycheck.sh $complete_path", $exists, $return);

    // On teste d'abord si le répertoire n'existe pas déjà ou si l'utilisateur 
    if ($exists[0]=="1" && !isset($confirm)) {
      $_SESSION['error']=3;
      $_SESSION['form']['login'] = $login;
      $_SESSION['form']['passw'] = $<PASSWORD>;
      $_SESSION['form']['pass2'] = $<PASSWORD>;
      $_SESSION['form']['dossier'] = $dossier;

      http_redirect('/ftpadmin/add');
    } elseif ($exists[0]=="1" && isset($confirm) && $confirm==0) {
      $_SESSION['error']=null; 
      $_SESSION['form']['login'] = $login;
      $_SESSION['form']['passw'] = $<PASSWORD>;
      $_SESSION['form']['pass2'] = $<PASSWORD>;
      $_SESSION['form']['dossier'] = "";
      http_redirect('/ftpadmin/add');
    } elseif ($exists[0]==0 || (isset($confirm) && $confirm==1)) {
     
      // On appelle le script de création de compte FTP
      sudoexec("ftpadmin.sh -a a -u $user_id -n $login -f $complete_path -p $passw", $standard_output, $function_output);

      // On revient à la page de listing
      $_SESSION['error']=null;
      $_SESSION['form']=null;
      $ftp_added_login = $login;
    
    } else {
      print "Le cas de figure présent n'existe pas... Avez-vous essayé de modifier l'adresse manuellement ?";
    }
  }

  include_once EVOADMIN_BASE . '../tpl/header.tpl.php';
  include_once EVOADMIN_BASE . '../tpl/menu.tpl.php';
  if(!empty($ftp_added_login)) {
    include_once EVOADMIN_BASE . '../tpl/ftpadmin-new-ok.tpl.php';
  } else {
    include_once EVOADMIN_BASE . '../tpl/ftpadmin-new.tpl.php';
  }
  include_once EVOADMIN_BASE . '../tpl/footer.tpl.php';

} elseif ($action=="edit") {

  print "Modification du mot de passe de $account";

} elseif ($action=="delete") {

  sudoexec("ftpadmin.sh -a d -n $account -f /dev/null -p azertyuiop", $standard_output, $function_output);

{'fraction_non_alphanumeric': 0.193662290629244, 'fraction_numerical': 0.009325486645540969, 'mean_word_length': 3.425480769230769, 'pattern_counts': {'":': 0, '<': 41, '<?xml version=': 0, '>': 37, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1627858', 'n_tokens_mistral': 3907, 'n_tokens_neox': 3818, 'n_words': 863}