Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
S
samples
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
Operations
Operations
Incidents
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Χάρης Παπαδόπουλος
samples
Commits
f1d22bf7
Commit
f1d22bf7
authored
Jan 12, 2017
by
Σταύρος Παπαδάκης
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Command line LDAP check
parent
187c7467
Changes
5
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
158 additions
and
1 deletion
+158
-1
amka/command-line-client/amka.php
amka/command-line-client/amka.php
+1
-1
ldap/command-line/.gitignore
ldap/command-line/.gitignore
+1
-0
ldap/command-line/README.md
ldap/command-line/README.md
+54
-0
ldap/command-line/ldapcmd.php
ldap/command-line/ldapcmd.php
+95
-0
ldap/command-line/settings.php.dist
ldap/command-line/settings.php.dist
+7
-0
No files found.
amka/command-line-client/amka.php
View file @
f1d22bf7
...
@@ -24,7 +24,7 @@ if ($amka == '' || $surname == '' || $bdate == '') {
...
@@ -24,7 +24,7 @@ if ($amka == '' || $surname == '' || $bdate == '') {
echo
"Χρήση:
{
$argv
[
0
]
}
[-v] --amka <amka> --surname <surname>"
,
PHP_EOL
,
echo
"Χρήση:
{
$argv
[
0
]
}
[-v] --amka <amka> --surname <surname>"
,
PHP_EOL
,
" v: παραγωγή μηνυμάτων παρακολούθησης εκτέλεσης"
,
PHP_EOL
,
" v: παραγωγή μηνυμάτων παρακολούθησης εκτέλεσης"
,
PHP_EOL
,
" amka <amka>: ο αριθμός ΑΜΚΑ"
,
PHP_EOL
,
" amka <amka>: ο αριθμός ΑΜΚΑ"
,
PHP_EOL
,
"surname <surname>: επίθετο σε ΚΕΦΑΛΑΙΑ"
,
PHP_EOL
,
"surname <surname>: επίθετο σε ΚΕΦΑΛΑΙΑ"
,
PHP_EOL
;
exit
(
0
);
exit
(
0
);
}
}
...
...
ldap/command-line/.gitignore
0 → 100644
View file @
f1d22bf7
settings.php
ldap/command-line/README.md
0 → 100644
View file @
f1d22bf7
# Πρόγραμμα επίδειξης για έλεγχο LDAP χρήστη
Το πρόγραμμα ελέγχει με απλό τρόπο εάν ένα χρήστης υπάρχει στον
κατάλογο και επιστρέφει attributes του χρήστη εφόσον ζητηθούν.
## Οδηγίες
Αντιγράψτε το αρχείο
`settings.php.dist`
σε ένα νέο αρχείο
`settings.php`
και
τροποποιήστε αναλόγως.
```
php
return
[
'connectionString'
=>
'ldap://my.ldap.server'
,
'domain'
=>
null
,
// if AD, provide domain name for login
'baseSearchDN'
=>
'cn=Users,dc=YOURCOMPANY,dc=COM'
,
];
```
## Πρόγραμμα πελάτης
Για την επίδειξη των διαθέσιμων λειτουργιών έχει αναπτυχθεί πρόγραμμα
[
ldapcmd.php
](
ldapcmd.php
)
που μπορείτε να εκτελέσετε από τη γραμμή εντολών.
Το πρόγραμμα δέχεται τις παρακάτω παραμέτρους:
```
Χρήση: ldapcmd.php {-u | --username} <username> {-p | --password} <password>
[ -d | --domain <domain>] [-c] [--check] [-g <list>] [--get <list>]
u, username : όνομα χρήστη
p, password : κωδικός πρόσβασης
d, domain : domain για σύνδεση (AD domain εφόσον χρειάζεται)
c, check : έλεγχος στοιχείων πρόσβασης (προεπιλογή)
g, get : άντληση στοιχείων χρήστη, λίστα από attribute names χωρισμένη με κόμματα
π.χ. --get sn,displayname,givenname,memberof
```
### Παράδειγμα κλήσης
*Επιτυχής έλεγχος στοιχείων*
```
$ php ldapcmd.php -u kotsos --password kotsos -d PDECRETE
true
```
*Άντληση στοιχείων*
```
$ php ldapcmd.php -u kotsos --password kotsos -d PDECRETE -g sn,displayname,memberOf
sn:kotsou
displayname:kotsos kotsou
memberof:CN=Debugger Users,CN=Users,DC=pdecrete,DC=local
memberof:CN=Domain Guests,CN=Users,DC=pdecrete,DC=local
memberof:CN=IIS_WPG,CN=Users,DC=pdecrete,DC=local
```
ldap/command-line/ldapcmd.php
0 → 100644
View file @
f1d22bf7
<?php
$settings
=
require
(
__DIR__
.
'/settings.php'
);
/**
* Λήψη παραμέτρων καθορισμού λειτουργίας από τη γραμμή εντολών
*/
$options
=
getopt
(
'u:p:d:cg:'
,
[
'username:'
,
'password:'
,
'domain:'
,
'check'
,
'get:'
]);
$username
=
isset
(
$options
[
'u'
])
?
$options
[
'u'
]
:
(
isset
(
$options
[
'username'
])
?
$options
[
'username'
]
:
null
);
$password
=
isset
(
$options
[
'p'
])
?
$options
[
'p'
]
:
(
isset
(
$options
[
'password'
])
?
$options
[
'password'
]
:
null
);
$domain
=
isset
(
$options
[
'd'
])
?
$options
[
'd'
]
:
(
isset
(
$options
[
'domain'
])
?
$options
[
'domain'
]
:
null
);
if
(
$domain
===
null
)
{
// προεπιλεγμένη τιμή, εάν υπάρχει
$domain
=
(
isset
(
$settings
[
'domain'
])
&&
is_string
(
$settings
[
'domain'
]))
?
$settings
[
'domain'
]
:
null
;
}
$check
=
isset
(
$options
[
'c'
])
||
isset
(
$options
[
'check'
]);
$get_attributes_requested
=
''
;
if
(
isset
(
$options
[
'g'
]))
{
$get_attributes_requested
=
$options
[
'g'
];
}
if
(
isset
(
$options
[
'getg'
]))
{
$get_attributes_requested
=
$options
[
'get'
];
}
$get
=
!
(
$get_attributes_requested
==
''
);
if
(
$get
)
{
$get_attributes
=
explode
(
','
,
$get_attributes_requested
);
array_walk
(
$get_attributes
,
function
(
&
$v
,
$k
)
{
$v
=
mb_strtolower
(
$v
);
});
}
else
{
$get_attributes
=
[];
$check
=
true
;
// προεπιλογή
}
/**
* Έλεγχος παραμέτρων
*/
if
(
$username
===
null
||
$password
===
null
)
{
echo
"Χρήση:
{
$argv
[
0
]
}
{-u | --username} <username> {-p | --password} <password> "
,
PHP_EOL
,
" [ -d | --domain <domain>] [-c] [--check] [-g <list>] [--get <list>]"
,
PHP_EOL
,
" u, username : όνομα χρήστη"
,
PHP_EOL
,
" p, password : κωδικός πρόσβασης"
,
PHP_EOL
,
" d, domain : domain για σύνδεση (AD domain εφόσον χρειάζεται)"
,
PHP_EOL
,
" c, check : έλεγχος στοιχείων πρόσβασης (προεπιλογή)"
,
PHP_EOL
,
" g, get : άντληση στοιχείων χρήστη, λίστα από attribute names χωρισμένη με κόμματα"
,
PHP_EOL
,
" π.χ. --get sn,displayname,givenname,memberof"
,
PHP_EOL
;
exit
(
0
);
}
//
$ldap
=
ldap_connect
(
$settings
[
'connectionString'
]);
$ldaprdn
=
(
$domain
?
"
{
$domain
}
\\
"
:
''
)
.
$username
;
ldap_set_option
(
$ldap
,
LDAP_OPT_PROTOCOL_VERSION
,
3
);
ldap_set_option
(
$ldap
,
LDAP_OPT_REFERRALS
,
0
);
// δοκιμή σύνδεσης...
$bind
=
@
ldap_bind
(
$ldap
,
$ldaprdn
,
$password
);
// ενέργειες ανάλογα με το αίτημα του χρήστη
if
(
$bind
)
{
if
(
$check
)
{
echo
"true"
,
PHP_EOL
;
}
if
(
$get
)
{
$filter
=
"(sAMAccountName=
$username
)"
;
$result
=
@
ldap_search
(
$ldap
,
$settings
[
'baseSearchDN'
],
$filter
,
$get_attributes
);
if
(
$result
===
false
)
{
echo
"Σφάλμα "
,
ldap_error
(
$ldap
),
PHP_EOL
;
}
else
{
$data
=
ldap_get_entries
(
$ldap
,
$result
);
// echo "COUNT: ", $data["count"], PHP_EOL;
for
(
$i
=
0
;
$i
<
$data
[
'count'
];
$i
++
)
{
foreach
(
$get_attributes
as
$attribute_name
)
{
$attribute
=
isset
(
$data
[
$i
][
$attribute_name
])
?
$data
[
$i
][
$attribute_name
]
:
null
;
if
(
$attribute
===
null
)
continue
;
for
(
$c
=
0
;
$c
<
$attribute
[
'count'
];
$c
++
)
{
echo
"
{
$attribute_name
}
:
{
$attribute
[
$c
]
}
"
,
PHP_EOL
;
}
}
}
}
}
}
else
{
if
(
$check
)
{
echo
"false"
,
PHP_EOL
;
}
else
{
echo
"Λανθασμένα στοιχεία πρόσβασης "
,
ldap_error
(
$ldap
),
PHP_EOL
;
}
}
exit
(
0
);
ldap/command-line/settings.php.dist
0 → 100644
View file @
f1d22bf7
<?php
return
[
'connectionString'
=>
'ldap://my.ldap.server'
,
'domain'
=>
null
,
// if AD, provide domain name for login
'baseSearchDN'
=>
'cn=Users,dc=YOURCOMPANY,dc=COM'
,
];
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment