Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Choose displayed username in sendtoken from attribute in Active Directory #567

Open
wants to merge 27 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
d248826
Added .gitignore of local VS files
RonaldCarter89 Jul 31, 2021
befb060
Chnage to use a defined variable to select the name used on emails wi…
RonaldCarter89 Jul 31, 2021
a9dc118
Update it.inc.php
RonaldCarter89 Jul 31, 2021
f25170a
Update it.inc.php
RonaldCarter89 Jul 31, 2021
9981c80
Update .travis.yml
RonaldCarter89 Jul 31, 2021
06cc49b
Changed to Support newer version of PHPUnit test, Changed to use mult…
RonaldCarter89 Jul 31, 2021
dadb237
More refinements
RonaldCarter89 Jul 31, 2021
3ce4cc4
More changes for Travis
RonaldCarter89 Jul 31, 2021
a38614b
More Travis
RonaldCarter89 Jul 31, 2021
a138f7f
Another attempt at Travis
RonaldCarter89 Jul 31, 2021
6b0ebf5
Yet more Travis
RonaldCarter89 Jul 31, 2021
1603b53
Chmaged PHP detect logic
RonaldCarter89 Aug 1, 2021
27371a3
Modified PHP logic
RonaldCarter89 Aug 1, 2021
fe94c1c
Chnaged from && to and
RonaldCarter89 Aug 1, 2021
114ee2e
More PHP logic fixes
RonaldCarter89 Aug 1, 2021
9269f11
Yet more PHP logic
RonaldCarter89 Aug 1, 2021
5e908f8
So sick of PHP logic
RonaldCarter89 Aug 1, 2021
35d85e3
PHP Logic!!!!!
RonaldCarter89 Aug 1, 2021
18bd3b8
PHP detect still
RonaldCarter89 Aug 1, 2021
ce46815
Removed PHP Detection will try Travis PHPUnit
RonaldCarter89 Aug 1, 2021
a8f0e05
Create php.yml
RonaldCarter89 Aug 1, 2021
b464b4a
Update php.yml
RonaldCarter89 Aug 1, 2021
c54400b
Update php.yml
RonaldCarter89 Aug 1, 2021
cb87cf4
Update php.yml
RonaldCarter89 Aug 1, 2021
d0d6886
Update php.yml
RonaldCarter89 Aug 1, 2021
b281c01
Update php.yml
RonaldCarter89 Aug 1, 2021
c460aa9
Update php.yml
RonaldCarter89 Aug 1, 2021
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 27 additions & 0 deletions .github/workflows/php.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
name: CI PHPUnit

on:
push:
branches: [ master ]
pull_request:
branches: [ master ]

jobs:
run:
name: test on Ubunut version ${{ matrix.operating-system }} with PHP of ${{ matrix.php-versions}}
runs-on: ${{ matrix.operating-system }}
strategy:
matrix:
operating-system: ['ubuntu-18.04', 'ubuntu20.04']
php-versions: ['5.3', '5.4', '5.5', '5.6', '7.0', '7.1', '7.2', '7.3', '7.4', '8.0', '8.1' ]

steps:
- name: Checkout
uses: actions/checkout@v2

- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php-versions }}


5 changes: 5 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
################################################################################
# This .gitignore file was automatically created by Microsoft(R) Visual Studio.
################################################################################

/.vs
119 changes: 104 additions & 15 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -1,21 +1,110 @@
language: php

dist: trusty
os:
- linux

php:
- '5.4'
- '5.5'
- '5.6'
- '7.0'
- '7.1'
- '7.2'
- '7.4'
dist: focal

before_install:
# If PHP >= 7.0, force use of PHPUnit 5.7
- if php -r "exit( (int)! version_compare( '$TRAVIS_PHP_VERSION', '7.0', '>=' ) );"; then mkdir -p ~/bin && wget -O ~/bin/phpunit https://phar.phpunit.de/phpunit-5.7.phar && chmod +x ~/bin/phpunit; fi
jobs:

script: phpunit tests
include:
# - dist: focal
# php: '5.4'
# - dist: focal
# php: '5.5'
# - dist: focal
# php: '5.6'
# - dist: focal
# php: '7.0'
# - dist: focal
# php: '7.1'
# - dist: focal
# php: '7.2'
# - dist: focal
# php: '7.3'
- dist: focal
php: '7.4'
- dist: focal
php: '8.0'

notifications:
irc: "irc.freenode.org#ltb-project"
# - dist: bionic
# php: '5.4'
# - dist: bionic
# php: '5.5'
# - dist: bionic
# php: '5.6'
# - dist: bionic
# php: '7.0'
- dist: bionic
php: '7.1'
- dist: bionic
php: '7.2'
- dist: bionic
php: '7.3'
- dist: bionic
php: '7.4'
- dist: bionic
php: '8.0'

# - dist: xenial
# php: '5.4'
# - dist: xenial
# php: '5.5'
- dist: xenial
php: '5.6'
- dist: xenial
php: '7.0'
- dist: xenial
php: '7.1'
- dist: xenial
php: '7.2'
- dist: xenial
php: '7.3'
- dist: xenial
php: '7.4'
- dist: xenial
php: '8.0'

- dist: trusty
php: '5.4'
- dist: trusty
php: '5.5'
- dist: trusty
php: '5.6'
- dist: trusty
php: '7.0'
- dist: trusty
php: '7.1'
- dist: trusty
php: '7.2'
- dist: trusty
php: '7.3'
- dist: trusty
php: '7.4'
- dist: trusty
php: '8.0'

- dist: precise
php: '5.4'
- dist: precise
php: '5.5'
- dist: precise
php: '5.6'
- dist: precise
php: '7.0'
- dist: precise
php: '7.1'
- dist: precise
php: '7.2'
- dist: precise
php: '7.3'
# - dist: precise
# php: '7.4'
# - dist: precise
# php: '8.0'

script:
phpunit tests

#notifications:
# irc: "irc.freenode.org#ltb-project"
42 changes: 28 additions & 14 deletions conf/config.inc.php
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,20 @@
# false: log only errors and do not display them (use this in production)
$debug = false;

# Active Directory mode
# true: use unicodePwd as password field
# false: LDAPv3 standard behavior
$ad_mode = false;
# Force account unlock when password is changed
$ad_options['force_unlock'] = false;
# Force user change password at next login
$ad_options['force_pwd_change'] = false;
# Allow user with expired password to change password
$ad_options['change_expired_password'] = false;
# Set AD attribute for username on emails using sendtoken
# example: $email_field = "displayName" or $email_field = "CN"
$email_field = "displayName"

# LDAP
$ldap_url = "ldap://localhost";
$ldap_starttls = false;
Expand All @@ -43,21 +57,15 @@
$ldap_base = "dc=example,dc=com";
$ldap_login_attribute = "uid";
$ldap_fullname_attribute = "cn";
$ldap_filter = "(&(objectClass=person)($ldap_login_attribute={login}))";
# Check and Set options for ad_mode
if ( !empty($ad_mode) ) {
$ldap_filter = "(&(objectClass=person)($ldap_login_attribute={login}))";
} else {
$ldap_filter = "(&(objectClass=user)(sAMAccountName={login})(!(userAccountControl:1.2.840.113556.1.4.803:=2)))";
}
$ldap_use_exop_passwd = false;
$ldap_use_ppolicy_control = false;

# Active Directory mode
# true: use unicodePwd as password field
# false: LDAPv3 standard behavior
$ad_mode = false;
# Force account unlock when password is changed
$ad_options['force_unlock'] = false;
# Force user change password at next login
$ad_options['force_pwd_change'] = false;
# Allow user with expired password to change password
$ad_options['change_expired_password'] = false;

# Samba mode
# true: update sambaNTpassword and sambaPwdLastSet attributes too
# false: just update the password
Expand Down Expand Up @@ -193,8 +201,14 @@
$multiple_answers_one_str = false;

# Answer attribute should be hidden to users!
$answer_objectClass = "extensibleObject";
$answer_attribute = "info";
# Check and Set options for ad_mode
if ( !empty($ad_mode) ) {
$answer_objectClass = "extensibleObject";
$answer_attribute = "info";
} else {
$answer_objectClass = "user";
$answer_attribute = "comment";
}

# Crypt answers inside the directory
$crypt_answers = true;
Expand Down
29 changes: 21 additions & 8 deletions htdocs/sendtoken.php
Original file line number Diff line number Diff line change
Expand Up @@ -133,14 +133,21 @@
}
}
} else {
# Use first available mail adress in ldap
if (count($mailValues) > 0) {
$mailValue = $mailValues[0];
if (strcasecmp($mail_attribute, "proxyAddresses") == 0) {
$mailValue = str_ireplace("smtp:", "", $mailValue);
# Check if AD_Mode is not used
if ( !empty($ad_mode) ) {
# Use first available mail adress in ldap
if (count($mailValues) > 0) {
$mailValue = $mailValues[0];
if (strcasecmp($mail_attribute, "proxyAddresses") == 0) {
$mailValue = str_ireplace("smtp:", "", $mailValue);
}
$mail = $mailValue;
$match = true;
}
$mail = $mailValue;
$match = true;
} else {
# Retreive Username for AD
#Set Username Varible for E-Mail
$email_name = reset(ldap_get_values($ldap, $entry, $email_field));
}
}
}
Expand Down Expand Up @@ -219,7 +226,13 @@
error_log("Send reset URL " . ( $debug ? "$reset_url" : "HIDDEN"));
}

$data = array( "login" => $login, "mail" => $mail, "url" => $reset_url ) ;
# Send $Username as "login" if in AD_Mode
if ( !empty($ad_mode) ) {
$data = array( "login" => $login, "mail" => $mail, "url" => $reset_url ) ;
} else {
$data = array( "login" => $email_name , "mail" => $mail, "url" => $reset_url ) ;
}


# Send message
if ( send_mail($mailer, $mail, $mail_from, $mail_from_name, $messages["resetsubject"], $messages["resetmessage"].$mail_signature, $data) ) {
Expand Down
44 changes: 23 additions & 21 deletions lang/it.inc.php
Original file line number Diff line number Diff line change
Expand Up @@ -32,15 +32,18 @@
$messages['newpasswordrequired'] = "Nuova password obbligatoria";
$messages['confirmpasswordrequired'] = "Per favore conferma la nuova password";
$messages['passwordchanged'] = "La tua password e' stata cambiata";
$messages['sshkeychanged'] = "La vostra chiave SSH è stata cambiata";
$messages['nomatch'] = "Password non corrispondenti";
$messages['badcredentials'] = "Login o password non corretti";
$messages['passworderror'] = "Password rifiutata dalla directory LDAP";
$messages['sshkeyerror'] = "La chiave SSH è stata rifiutata dalla directory LDAP";
$messages['title'] = "Self service password";
$messages['login'] = "Login";
$messages['oldpassword'] = "Vecchia password";
$messages['oldpassword'] = "vecchia password";
$messages['newpassword'] = "Nuova password";
$messages['confirmpassword'] = "Conferma";
$messages['submit'] = "Invia";
$messages['getuser'] = "Ottieni utente";
$messages['tooshort'] = "Password troppo corta";
$messages['toobig'] = "Password troppo lunga";
$messages['minlower'] = "La password non contiene abbastanza caratteri minuscoli";
Expand All @@ -63,18 +66,23 @@
$messages['password'] = "Password";
$messages['question'] = "Domanda";
$messages['answer'] = "Risposta";
$messages['setquestionshelp'] = "Imposta o cambia la tua domanda/risposta per il reset della password. Potrai poi reimpostare la tua password <a href=\"?action=resetbyquestions\">qui</a>.";
$messages['answerrequired'] = "Nessuna risposta inserita";
$messages['questionrequired'] = "Nessuna domanda selezionata";
$messages['passwordrequired'] = "Password obbligatoria";
$messages['sshkeyrequired'] = "è richiesta la chiave SSH";
$messages['invalidsshkey'] = "La chiave SSH inserita sembra non valida";
$messages['answermoderror'] = "La tua risposta non e' stata registrata";
$messages['answerchanged'] = "La tua risposta e' stata registrata";
$messages['answernomatch'] = "Risposta non corretta";
$messages['resetbyquestionshelp'] = "Scegli una domanda e rispondi per reimpostare la password. Per farlo devi aver <a href=\"?action=setquestions\">registrato una risposta</a>.";
$messages['setquestionshelp'] = "Imposta o cambia la tua domanda/risposta per il reset della password. Potrai poi reimpostare la tua password <a href=\"?action=resetbyquestions\">qui</a>.";
$messages['changehelp'] = "Immetti la tua vecchia password e scegline una nuova.";
$messages['changehelpreset'] = "Hai dimenticato la password?";
$messages['changehelpquestions'] = "<a href=\"?action=resetbyquestions\">Reimposta la tua password rispondendo alle domande</a>";
$messages['changehelptoken'] = "<a href=\"?action=sendtoken\">Reimposta la tua password con una verifica via mail</a>";
$messages['changehelpsms'] = "<a href=\"?action=sendsms\">Reimposta la tua password tramite SMS</a>";
$messages['changehelpsshkey'] = "<a href=\"?action=changesshkey\">Cambia la tua chiave SSH</a>";
$messages['changesshkeyhelp'] = "Inserisci la tua password e la nuova chiave SSH.";
$messages['resetmessage'] = "Buongiorno {login},\n\nClicca qui per reimpostare la tua password:\n{url}\n\nSe non sei stato tu a richiedere il reset, per piacere ignora questa email.";
$messages['resetsubject'] = "Reimposta la tua password";
$messages['sendtokenhelp'] = "Inserisci la tua login e il tuo indirizzo email per reimpostare la tua password. Quindi clicca sul link che riceverai via mail.";
Expand All @@ -87,55 +95,49 @@
$messages['tokenrequired'] = "Codice di verifica obbligatorio";
$messages['tokennotvalid'] = "Codice di verifica non valido";
$messages['resetbytokenhelp'] = "Il codice di verifica spedito via mail ti consente di reimpostare la password. Per avere un nuovo codice, <a href=\"?action=sendtoken\">clicca qui</a>.";
$messages['resetbysmshelp'] = "Il codice inviato via SMS ti permette di reimpostare la password. Per ricevere un nuovo codice, <a href=\"?action=sendsms\">clicca qui</a>.";
$messages['changemessage'] = "Buongiorno {login},\n\nLa tua password e' stata cambiata.\n\nSe non hai richiesto questa modifica, per favore contatta immediatamente il tuo amministratore di rete.";
$messages['changesubject'] = "La tua password e' stata cambiata";
$messages['changesshkeymessage'] = "Ciao {login}, \n\nIl SSH Key è stato modificato. \n\nSe non sei l'autore questo cambiamento, contattare immediatamente l'amministratore.";
$messages['changesshkeysubject'] = "La vostra chiave SSH è stata modificata";
$messages['badcaptcha'] = "Il codice captcha non e' corretto. Riprova.";
$messages['captcharequired'] = "The captcha is required.";
$messages['captcha'] = "Captcha";
$messages['notcomplex'] = "La tua password non e' abbastanza complessa";
$messages['policycomplex'] = "Numero minimo di tipi di carattere:";
$messages['sms'] = "Numero dell'SMS";
$messages['smsresetmessage'] = "Il tuo codice per il reset della password e':";
$messages['smscrypttokensrequired'] = "Non puoi utilizzare il reset via SMS senza crypt_tokens";
$messages['sendsmshelp'] = "Inserisci la tua login per ricevere il codice di verifica per il reset della password. Inserisci poi il codice ricevuto via SMS.";
$messages['smssent'] = "Un codice di conferma e' stato inviato via SMS";
$messages['smsnotsent'] = "Errore durante l'invio dell'SMS";
$messages['sms'] = "Numero dell'SMS";
$messages['smstoken'] = "Codice dell'SMS";
$messages['smsnonumber'] = "Numero di telefono non trovato";
$messages['username'] = "Username";
$messages['sendsmshelp'] = "Inserisci la tua login per ricevere il codice di verifica per il reset della password. Inserisci poi il codice ricevuto via SMS.";
$messages['changehelpsms'] = "<a href=\"?action=sendsms\">Reimposta la tua password tramite SMS</a>";
$messages['userfullname'] = "Nome completo dell'utente";
$messages['getuser'] = "Ottieni utente";
$messages['resetbysmshelp'] = "Il codice inviato via SMS ti permette di reimpostare la password. Per ricevere un nuovo codice, <a href=\"?action=sendsms\">clicca qui</a>.";
$messages['smssent'] = "Un codice di conferma e' stato inviato via SMS";
$messages['username'] = "Username";
$messages['smscrypttokensrequired'] = "Non puoi utilizzare il reset via SMS senza crypt_tokens";
$messages['smsuserfound'] = "Controlla che i dati siano corretti e premi 'Invia' per ricevere il codice via SMS";
$messages['smstoken'] = "Codice dell'SMS";
$messages['sshkey'] = "SSH Key";
$messages['nophpmbstring'] = "Devi installare PHP mbstring";
$messages['menuquestions'] = "Domande";
$messages['menutoken'] = "Mail";
$messages['menusms'] = "SMS";
$messages['menusshkey'] = "Chiave SSH";
$messages['nophpxml'] = "Devi installare PHP XML per usare questo strumento";
$messages['tokenattempts'] = "Token non valido, riprova";
$messages['emptychangeform'] = "Cambia la tua password";
$messages['emptysshkeychangeform'] = "Cambia la tua chiave SSH";
$messages['emptysendtokenform'] = "Email a password reset link";
$messages['emptyresetbyquestionsform'] = "Reimposta la tua password";
$messages['emptysetquestionsform'] = "Imposta la domanda per il reset della password";
$messages['emptysendsmsform'] = "Ottieni un codice di reset";
$messages['sameaslogin'] = "La nuova password è identica all'utente di login";
$messages['policydifflogin'] = "La nuova password non può essere uguale all'utente di login";
$messages['changesshkeymessage'] = "Ciao {login}, \n\nIl SSH Key è stato modificato. \n\nSe non sei l'autore questo cambiamento, contattare immediatamente l'amministratore.";
$messages['menusshkey'] = "Chiave SSH";
$messages['changehelpsshkey'] = "<a href=\"?action=changesshkey\">Cambia la tua chiave SSH</a>";
$messages['sshkeychanged'] = "La vostra chiave SSH è stata cambiata";
$messages['sshkeyrequired'] = "è richiesta la chiave SSH";
$messages['changesshkeysubject'] = "La vostra chiave SSH è stata modificata";
$messages['sshkey'] = "SSH Key";
$messages['emptysshkeychangeform'] = "Cambia la tua chiave SSH";
$messages['changesshkeyhelp'] = "Inserire la password e la nuova chiave SSH.";
$messages['sshkeyerror'] = "La chiave SSH è stata rifiutata dalla directory LDAP";
$messages['pwned'] = "La password scelta non è sicura in quanto pubblicata da precedenti intrusioni informatiche internazionali e non può essere usata. Se la stai usando su altri servizi ti consigliamo di cambiarla";
$messages['policypwned'] = "La password non deve essere stata precedentemente pubblicata in intrusioni informatiche internazionali";
$messages['throttle'] = "Troppo veloce! Per favore ritenta fra poco (se sei un essere umano)";
$messages['policydiffminchars'] = "Numero minimo di nuovi caratteri unici:";
$messages['diffminchars'] = "La nuova password è troppo simile a quella vecchia";
$messages['changesshkeyhelp'] = "Inserire la password e la nuova chiave SSH.";
$messages['specialatends'] = "La nuova password ha il suo unico carattere speciale all'inizio o alla fine";
$messages['policyspecialatends'] = "La nuova password non può aveere il suo unico carattere speciale all'inizio o alla fine";
$messages['checkdatabeforesubmit'] = "Per favore verifica le informazioni prima di inviare il modulo";
Expand Down
4 changes: 3 additions & 1 deletion tests/CheckPasswordTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,9 @@

require_once __DIR__ . '/../lib/vendor/defuse-crypto.phar';

class CheckPasswordTest extends \PHPUnit_Framework_TestCase
use PHPUnit\Framework\TestCase;

class CheckPasswordTest extends TestCase
{
/**
* Test check_password_strength function
Expand Down
Loading