Compare commits

...

2527 Commits

Author SHA1 Message Date
Roland Gruber 72ef7f1ac5 identification method description 2020-08-17 20:22:07 +02:00
Roland Gruber 4f8b1e81ea identification method description 2020-08-14 16:47:32 +02:00
Roland Gruber c5b6c8132c fixed PHP message 2020-08-13 17:30:35 +02:00
Roland Gruber 6c306bcb9e translation 2020-08-11 19:58:30 +02:00
Roland Gruber 3c7fdca8eb 7.3 2020-08-10 20:04:38 +02:00
Roland Gruber d0b18ad8b5 translation 2020-08-10 19:47:10 +02:00
Roland Gruber 4455a5a15d translation 2020-08-09 20:28:20 +02:00
Roland Gruber 598fa546a9 translation 2020-08-07 22:07:47 +02:00
Roland Gruber df0e02da9f refactoring 2020-07-30 20:41:39 +02:00
Roland Gruber 2ee58dd737 7.3 2020-07-30 20:26:35 +02:00
Roland Gruber 8375f9e0d0 code fixes 2020-07-29 17:02:21 +02:00
Roland Gruber ad23fd0fc2 codeql 2020-07-29 16:47:51 +02:00
Roland Gruber 5972e94fdb codeql 2020-07-29 16:37:15 +02:00
gruberroland 9a9bb3dce7
Create codeql-analysis.yml 2020-07-29 16:18:54 +02:00
Roland Gruber bfa22c6aa3 allow to hide a part of the DN in display 2020-07-26 21:28:28 +02:00
Roland Gruber 09989ee804 fixed rtl display 2020-07-26 21:24:45 +02:00
Roland Gruber 08a65e2608 webcam support 2020-07-26 20:50:04 +02:00
gruberroland 3368b4ab10
Merge pull request #102 from LDAPAccountManager/feature/webcam
Feature/webcam
2020-07-24 21:05:57 +02:00
Roland Gruber b3905d73ca fixed test 2020-07-24 21:00:36 +02:00
Roland Gruber e5344b0568 fixed test 2020-07-24 20:56:20 +02:00
Roland Gruber b00fd8d83e typo 2020-07-24 20:54:19 +02:00
Roland Gruber 018513ac95 webcam support 2020-07-24 20:49:04 +02:00
Roland Gruber 75120fc25d webcam support 2020-07-24 10:06:22 +02:00
Roland Gruber 3ad5dcf65a webcam support 2020-07-22 13:28:17 +02:00
Roland Gruber 6768c7e7ef webcam support 2020-07-22 08:23:49 +02:00
Roland Gruber 1dd0f64f5b fixed removing of memberUid on forced sync 2020-07-20 20:59:24 +02:00
Roland Gruber cb58a27972 fixed removing of memberUid on forced sync 2020-07-20 20:56:31 +02:00
Roland Gruber 9394eeeabd fixed unbound variable 2020-07-19 13:08:33 +02:00
Roland Gruber ffb3ed9357 use additional LDAP filter for search 2020-07-18 20:36:08 +02:00
Roland Gruber 4158ebb91d use additional LDAP filter for search 2020-07-18 20:33:36 +02:00
Roland Gruber 2698995cc2 added job to send users group summary 2020-07-18 20:13:38 +02:00
Roland Gruber 840289e360 fixed test 2020-07-18 13:22:00 +02:00
Roland Gruber 60109eb47c config export/import 2020-07-12 10:13:30 +02:00
Roland Gruber e070accf18 active export/import 2020-07-12 09:48:49 +02:00
Roland Gruber 21e7e4a95d export webauthn data 2020-07-08 20:46:56 +02:00
Roland Gruber 5e770d8920 fixed warning 2020-07-03 20:02:48 +02:00
Roland Gruber e03cd1f57c moved message 2020-06-30 20:51:20 +02:00
Roland Gruber d32d8d3a0d moved error message 2020-06-30 20:24:38 +02:00
Roland Gruber 1523f0ee8f enhanced error messages 2020-06-28 20:52:10 +02:00
Roland Gruber bc277e4c0a enhanced error messages 2020-06-28 20:46:32 +02:00
Roland Gruber f75f813a9a enhanced error messages 2020-06-28 11:16:37 +02:00
Roland Gruber 87986e93cc PHP notice 2020-06-27 20:47:43 +02:00
Roland Gruber 780daded11 show info if login failed and account can be determined as locked 2020-06-21 21:33:43 +02:00
Roland Gruber 38cbfb9dab fixed translation 2020-06-21 21:12:44 +02:00
Roland Gruber 60199a41b5 fixed layout 2020-06-19 12:42:15 +02:00
Roland Gruber aed8ce867c 7.3.PRE1 2020-06-19 09:10:18 +02:00
Roland Gruber 30909b385a show password prompt if user with expired password logs in 2020-06-18 13:08:23 +02:00
gruberroland 55ccddbf1e
Merge pull request #101 from LDAPAccountManager/configImportExport
Config import export
2020-06-17 13:05:01 +02:00
Roland Gruber ee75385e7d fixed tests 2020-06-17 12:57:18 +02:00
gruberroland 9ec8d2ce57
Merge branch 'develop' into configImportExport 2020-06-17 12:27:25 +02:00
Roland Gruber 605713a181 better error messages on login 2020-06-17 11:28:05 +02:00
Roland Gruber fd8e7c1de3 fixed tests 2020-06-16 20:14:33 +02:00
Roland Gruber bdd3dd39b9 sync primary group 2020-06-16 09:55:28 +02:00
Roland Gruber 4d0a6d92e7 round with precision 2 2020-06-15 20:26:33 +02:00
Roland Gruber e58459d351 PHP 7.4 2020-06-15 20:23:15 +02:00
Roland Gruber 316c979ef2 PHP 7.4 2020-06-15 20:20:35 +02:00
Roland Gruber 3bd507a47d make group display configurable 2020-06-15 15:34:44 +02:00
Roland Gruber 01844a0d05 Merge remote-tracking branch 'remotes/origin/develop' into configImportExport
# Conflicts:
#	lam/lib/selfService.inc
2020-06-14 21:36:48 +02:00
Roland Gruber 57dcbd880d PHPDoc 2020-06-14 21:34:19 +02:00
Roland Gruber 12581a5dc0 format usage 2020-06-14 21:22:50 +02:00
Roland Gruber 2fcabf0c07 Merge branch 'develop' of github.com:LDAPAccountManager/lam into develop 2020-06-14 19:58:24 +02:00
Roland Gruber db523af70f use full width for groups 2020-06-14 19:58:02 +02:00
Roland Gruber 69796a98f3 fixed formatting issue 2020-06-12 09:42:54 +02:00
gruberroland 82905cb4e5
Merge pull request #99 from steffen-moser/fixAutoSyncForGroupOfMembers
Adding groupOfMembers to the GON types
2020-06-06 10:41:54 +02:00
Steffen Moser 6f88ec8d9d Adding groupOfMembers to the GON types 2020-06-06 02:51:26 +02:00
Roland Gruber 75fd361116 Merge branch 'develop' of github.com:LDAPAccountManager/lam into develop 2020-06-05 16:01:24 +02:00
Roland Gruber f36446fe43 PHP 7.4 2020-06-05 16:00:59 +02:00
gruberroland 1196c56287
Update FUNDING.yml 2020-06-04 20:43:14 +02:00
gruberroland 48ace3c3f9
Create FUNDING.yml 2020-06-04 20:42:08 +02:00
Roland Gruber 5a09f8159f typos 2020-06-03 17:51:21 +02:00
Roland Gruber 6ade23ce65 7.3 2020-06-02 19:44:34 +02:00
Roland Gruber 03f6fd858b fixed build 2020-06-02 19:40:57 +02:00
Roland Gruber f23d2a4455 set user verification to discouraged 2020-06-01 20:08:58 +02:00
Roland Gruber f091b653b8 store self service profiles as JSON 2020-06-01 10:52:55 +02:00
Roland Gruber aa43b4721b store self service profiles as JSON 2020-06-01 10:34:34 +02:00
Roland Gruber 7bd799bee3 PDF global templates export 2020-05-30 12:35:22 +02:00
gruberroland 3ba7fa18bd
Create SECURITY.md 2020-05-28 20:32:31 +02:00
Roland Gruber 2e61e2dca9 #96 added option to disable certificate check 2020-05-28 20:25:39 +02:00
Roland Gruber 71af42442b phpmailer update 2020-05-28 20:11:36 +02:00
Roland Gruber 3018a887c0 PHP 7.4 2020-05-27 17:33:29 +02:00
Roland Gruber aaddb6eead TCPDF 6.3.5 2020-05-27 17:25:59 +02:00
Roland Gruber 95bdb04949 PHP 7.4 fix 2020-05-27 17:18:35 +02:00
Roland Gruber 93a7ffdd65 remove dev files before building packages 2020-05-24 09:17:14 +02:00
Roland Gruber ed28d3b8e7 fix version 2020-05-24 09:04:41 +02:00
gruberroland 3c305f26fa
Merge pull request #94 from patbaumgartner/develop
Providing better env variables to customize users and groups DN
2020-05-24 08:33:15 +02:00
Patrick Baumgartner ecdd23e843
Renaming env variables and providing better defaults 2020-05-23 14:07:47 +02:00
Patrick Baumgartner 1081b51fe9
Adding LDAP_GROUPS_DN und LDAP_USERS_DN 2020-05-23 14:05:27 +02:00
Patrick Baumgartner b91333ff12
Allowing to have a DN for users and groups
Users and groups are usually not in the same DN/OU, therefore we need the possibility to adjust them as well via environment variables and still keeping backward compatibility.
2020-05-23 14:00:02 +02:00
Roland Gruber 2e5419b3ac Merge branch 'develop' into configImportExport
# Conflicts:
#	lam/VERSION
2020-05-22 21:12:24 +02:00
Roland Gruber 9198187a26 typos 2020-05-22 21:10:48 +02:00
Roland Gruber 32b5a14226 import and export account profile templates 2020-05-22 21:02:13 +02:00
Roland Gruber 5151d96592 refactoring 2020-05-16 11:10:37 +02:00
Roland Gruber 0a72bc9635 config import and export 2020-05-13 20:47:12 +02:00
Roland Gruber 6fc259d718 config import and export 2020-05-12 20:58:56 +02:00
Roland Gruber 40fd19e3bf refactoring 2020-05-07 21:31:21 +02:00
Roland Gruber 9b4261ca36 refactoring 2020-05-07 21:18:19 +02:00
Roland Gruber 2db6bf23eb refactoring 2020-05-07 21:15:26 +02:00
Roland Gruber ffd74d88e4 config export 2020-05-07 21:10:47 +02:00
Roland Gruber a246fde0e2 refactoring 2020-05-07 20:27:50 +02:00
Roland Gruber 665ca9daad refactoring 2020-05-07 20:22:41 +02:00
Roland Gruber 81587a9b00 refactoring 2020-05-03 10:59:35 +02:00
Roland Gruber 9c6e30a03b account profile export 2020-05-03 10:32:35 +02:00
Roland Gruber c9d32bf2de refactoring 2020-05-02 18:51:33 +02:00
Roland Gruber a6b39d522f 7.2 2020-05-01 08:54:14 +02:00
Roland Gruber 8e9700d230 7.2 2020-05-01 08:41:53 +02:00
Roland Gruber e44f3d3243 refactoring 2020-04-29 20:33:43 +02:00
Roland Gruber 8743285719 #93 added missing locales 2020-04-28 21:06:15 +02:00
Roland Gruber 7fcc2cf38d error handling 2020-04-27 21:53:50 +02:00
Roland Gruber 1d107c4a24 i18n 2020-04-27 20:25:35 +02:00
Roland Gruber ec2a017fc7 i18n 2020-04-26 19:43:36 +02:00
Roland Gruber a724638886 i18n 2020-04-26 13:46:16 +02:00
Roland Gruber acbdec11dd i18n 2020-04-26 08:57:49 +02:00
Roland Gruber 8d50dd59b0 server profiles import 2020-04-26 08:55:09 +02:00
Roland Gruber ea72ab63a9 Merge remote-tracking branch 'remotes/origin/develop' into configImportExport 2020-04-25 20:50:33 +02:00
Roland Gruber d0e88cf80b i18n 2020-04-25 20:34:47 +02:00
Roland Gruber 2331e42e34 fixed text alignment 2020-04-23 21:18:27 +02:00
Roland Gruber df189f69e7 7.2 2020-04-22 20:20:52 +02:00
Roland Gruber 5b17baa628 i18n 2020-04-22 18:41:57 +02:00
Roland Gruber 5a40e6fed1 7.2 2020-04-21 21:18:39 +02:00
Roland Gruber d980ffc1a5 7.2 2020-04-21 20:14:57 +02:00
Roland Gruber 56d51c8e8c fixed issue with LDAP escaping 2020-04-21 20:01:35 +02:00
Roland Gruber a52393dc79 fixed issue when no quotas are found 2020-04-20 21:05:11 +02:00
Roland Gruber 58882affa7 fixed issue when no quotas are found 2020-04-19 20:53:56 +02:00
Roland Gruber 8b38839dae fixed issue when no quotas are found 2020-04-19 20:49:25 +02:00
Roland Gruber 24a6e14251 export server profiles 2020-04-19 20:40:40 +02:00
Roland Gruber 9936c834db onclick for span 2020-04-19 20:39:57 +02:00
Roland Gruber e8d421ae04 added certificates to export 2020-04-13 15:40:33 +02:00
Roland Gruber 00c5a014b4 import main config 2020-04-12 21:51:19 +02:00
Roland Gruber 38293656b6 check which settings are imported 2020-04-12 14:00:23 +02:00
Roland Gruber 9ed53f51de added export 2020-04-12 13:52:11 +02:00
Roland Gruber f0f81c085b added export 2020-04-12 13:51:36 +02:00
Roland Gruber 8af2132926 import/export config 2020-04-12 12:39:52 +02:00
Roland Gruber 541684d49f responsive 2020-04-11 15:41:26 +02:00
Roland Gruber 07f5ae2d7a #213 fixed Google reCaptcha 2020-04-10 20:48:09 +02:00
Roland Gruber b65125beaf added dev mode 2020-04-10 20:34:36 +02:00
Roland Gruber c9990fa189 allow to create Unix group when creating a user 2020-04-07 17:52:57 +02:00
gruberroland 18e1e5e3c1
Merge pull request #92 from LDAPAccountManager/composer-update
updated dependencies
2020-04-03 17:35:14 +02:00
Roland Gruber 6f5a8cb0cd updated dependencies 2020-04-03 17:33:33 +02:00
gruberroland 9cf564e500
Merge pull request #91 from LDAPAccountManager/licenseMail
License mail
2020-04-03 16:57:45 +02:00
Roland Gruber e9eca9ab74 docs 2020-04-03 16:57:22 +02:00
Roland Gruber ffb8fca488 show license message depending on setting 2020-04-03 16:53:55 +02:00
Roland Gruber 365389cd0b show license message depending on setting 2020-04-02 21:19:23 +02:00
Roland Gruber 0609c748ea 7.2 2020-04-02 21:02:06 +02:00
Roland Gruber 394cbedb2a configurable license warning 2020-03-28 21:57:04 +01:00
Roland Gruber 028f8adcfd configurable license warning 2020-03-28 21:34:58 +01:00
Roland Gruber 56eb28c2ba added auto-conversion for values 2020-03-28 18:06:38 +01:00
Roland Gruber 468a95e434 fixed profile check 2020-03-26 16:47:22 +01:00
Roland Gruber b12ba2369e refactoring 2020-03-19 20:42:36 +01:00
Roland Gruber 726f1e13b4 refactoring 2020-03-19 20:26:49 +01:00
gruberroland 802b16797a
Merge pull request #88 from LDAPAccountManager/phpMailer
Php mailer
2020-03-19 20:20:25 +01:00
Roland Gruber a07c0013ae refactoring 2020-03-19 19:55:58 +01:00
Roland Gruber bd7d32d2d0 refactoring 2020-03-19 19:48:38 +01:00
gruberroland 824ec1917a
Merge pull request #87 from LDAPAccountManager/phpMailer
Php mailer
2020-03-19 19:39:28 +01:00
Roland Gruber c192886117 phpMailer 2020-03-19 19:33:40 +01:00
Roland Gruber bf52e55f5f Merge branch 'develop' into phpMailer
# Conflicts:
#	lam/HISTORY
2020-03-19 19:23:26 +01:00
Roland Gruber 4a5ef05f38 7.1 2020-03-16 21:53:45 +01:00
Roland Gruber 54f6c82cee 7.1 2020-03-16 21:27:58 +01:00
Roland Gruber b6425b9abd refactoring 2020-03-13 20:59:30 +01:00
Roland Gruber 96c4b49f06 i18n 2020-03-13 11:31:51 +01:00
Roland Gruber 04065ccf58 fixed missing translations 2020-03-13 11:30:11 +01:00
Roland Gruber 0647faf744 new mail system 2020-03-11 21:29:07 +01:00
Roland Gruber 012e2b450f new mail system 2020-03-11 21:27:36 +01:00
Roland Gruber 2904f178a0 new mail system 2020-03-11 21:09:42 +01:00
Roland Gruber 6d5971d716 translation update 2020-03-11 09:01:26 +01:00
Roland Gruber 50596a358e new mail server options 2020-03-10 21:08:20 +01:00
Roland Gruber 0f40ba18c0 new mail server options 2020-03-09 21:40:15 +01:00
Roland Gruber 44dff694c4 added PHPMailer 2020-03-06 21:29:16 +01:00
Roland Gruber e386b9dad4 #20 sort users 2020-03-04 14:17:51 +01:00
Roland Gruber b4007b5d8e composer update 2020-03-04 13:02:09 +01:00
Roland Gruber 0230241b15 spell checking 2020-03-04 12:07:56 +01:00
Roland Gruber 51ed41f4fa spell checking 2020-03-04 12:02:14 +01:00
Roland Gruber 8894146c06 spell checking 2020-03-04 11:53:30 +01:00
Roland Gruber 2495dae78a spell checking 2020-03-03 20:57:29 +01:00
Roland Gruber ad2bce6a6a spell checking 2020-03-03 20:54:24 +01:00
Roland Gruber 5b14134108 spell checking 2020-03-03 20:34:06 +01:00
Roland Gruber 45b4bdb7d5 spell checking 2020-03-02 16:44:15 +01:00
Roland Gruber b7ab251f6c spell checking 2020-03-02 15:20:18 +01:00
Roland Gruber 041a8eb833 i18n 2020-03-01 13:37:52 +01:00
Roland Gruber eae8f36dab typos 2020-02-24 20:08:28 +01:00
Roland Gruber 799d9b24fc 7.1 2020-02-22 21:06:56 +01:00
Roland Gruber f3747d176e 7.1 2020-02-22 19:56:30 +01:00
Roland Gruber cb5291cb1a 7.1 2020-02-22 13:29:06 +01:00
Roland Gruber 5f09fe6ebe 7.1 2020-02-22 11:18:45 +01:00
Roland Gruber 110d693aaf 7.1 2020-02-22 11:16:10 +01:00
Roland Gruber 8eb07c27f4 7.1 2020-02-22 11:15:08 +01:00
Roland Gruber 4090fff0f3 fixed test 2020-02-22 11:07:30 +01:00
Roland Gruber 0610004c7d refactoring 2020-02-22 11:07:18 +01:00
Roland Gruber cc5fab6e5a removed debug output 2020-02-22 10:46:00 +01:00
Roland Gruber aec46823ba translation update 2020-02-22 10:29:25 +01:00
Roland Gruber 74d8210b01 phpunit update 2020-02-21 19:53:08 +01:00
Roland Gruber 5153f6ea17 fixed issues with comma in DN 2020-02-21 19:30:28 +01:00
Roland Gruber 098c28339a 7.1 2020-02-18 20:58:36 +01:00
Roland Gruber 45cbadd56c i18n 2020-02-18 20:47:49 +01:00
Roland Gruber a98fe5786a Merge remote-tracking branch 'origin/develop' into develop 2020-02-16 20:31:57 +01:00
Roland Gruber afdfa543d6 added crossorigin for manifest 2020-02-16 20:31:42 +01:00
gruberroland e923a03979
Merge pull request #86 from LDAPAccountManager/feature/imap
Feature/imap
2020-02-15 21:43:24 +01:00
Roland Gruber 0f8fb1e146 refactoring 2020-02-15 21:43:08 +01:00
Roland Gruber 59e9635e90 refactoring 2020-02-15 21:38:07 +01:00
Roland Gruber c0e1e026d8 use Horde imap library 2020-02-15 21:32:04 +01:00
Roland Gruber bd3777f764 use Horde imap library 2020-02-15 21:25:06 +01:00
Roland Gruber 362014ddf6 use Horde imap library 2020-02-15 21:23:40 +01:00
Roland Gruber aa0228c34c use Horde imap library 2020-02-15 14:11:40 +01:00
Roland Gruber 3f06070b89 added Horde IMAP lib 2020-02-13 21:31:32 +01:00
Roland Gruber 3d409d6e48 more profile options 2020-02-11 21:13:47 +01:00
Roland Gruber fdb6aaa809 increase default field size to 1000 2020-02-10 20:52:15 +01:00
Roland Gruber 7981f59b0e support workstations 2020-02-08 15:43:11 +01:00
Roland Gruber 2fbac1d9f0 Merge branch 'develop' of github.com:LDAPAccountManager/lam into develop 2020-02-08 15:42:41 +01:00
Roland Gruber 29f41b8774 PHP notice 2020-02-08 15:42:07 +01:00
gruberroland 64b41eb8e1
Merge pull request #85 from lasat/develop
Add 'expose 80' to Dockerfile
2020-02-05 20:37:14 +01:00
Roland Gruber 2b83758564 self registration for AD 2020-02-05 20:33:32 +01:00
Roland Gruber b15b94cb29 PHP7 2020-02-04 19:08:18 +01:00
lasat 4d3af3daaa
Add 'expose 80' to Dockerfile
this made usage with seperate network and behind reverse proxies (traefik, nginx) easier
2020-02-04 13:52:55 +01:00
Roland Gruber c468ba6479 fixed mail sending 2020-02-02 20:39:44 +01:00
Roland Gruber daa2fec5c7 2020 2020-02-02 19:47:09 +01:00
Roland Gruber e28efcfd21 allow ^/$ in filter expression 2020-02-01 17:30:53 +01:00
Roland Gruber 3dc40d1f99 refactoring 2020-02-01 17:13:35 +01:00
Roland Gruber c8d1e5ab82 AD LDS 2020-02-01 11:37:53 +01:00
Roland Gruber 981b0320f9 set email return-path 2020-01-28 20:45:38 +01:00
Roland Gruber 1e4ff3ce11 fixed issue with non-existing entries 2020-01-26 11:34:45 +01:00
Roland Gruber 9316803fc6 fixed PHP issue 2020-01-24 18:42:34 +01:00
Roland Gruber 7aa038a710 password check module 2020-01-22 21:35:12 +01:00
Roland Gruber c1d09bba09 added displayName 2020-01-19 18:12:03 +01:00
Roland Gruber 4131d5fe6c require PHP7 2020-01-18 10:40:30 +01:00
Roland Gruber 60b3ffb9ca added composer 2020-01-17 22:45:54 +01:00
Roland Gruber 02770b7759 ES5 2020-01-16 21:30:33 +01:00
Roland Gruber 9a855266ab ES5 2020-01-16 21:18:39 +01:00
Roland Gruber 1440bf22d6 ES5 2020-01-16 21:12:55 +01:00
Roland Gruber 7d1c2afd21 ES5 2020-01-16 21:01:57 +01:00
Roland Gruber d9fd4b36e2 optimize clone 2020-01-16 20:38:45 +01:00
gruberroland 7b222d9edb
Merge pull request #80 from LDAPAccountManager/webauthn
Webauthn
2020-01-13 20:29:43 +01:00
Roland Gruber 0c65e5bedb webauthn 2020-01-13 20:20:54 +01:00
Roland Gruber 8ee96c56d2 fixed error messages 2020-01-13 20:19:57 +01:00
Roland Gruber c1e6b61ecd webauthn 2020-01-13 20:14:40 +01:00
Roland Gruber f1db477fda webauthn 2020-01-12 10:57:39 +01:00
Roland Gruber 691055b83e webauthn 2020-01-11 17:29:05 +01:00
Roland Gruber 286e447553 php-imap 2020-01-10 20:07:10 +01:00
Roland Gruber 4e329f1f55 webauthn 2020-01-10 20:06:24 +01:00
Roland Gruber 3ac7ae668b data attributes 2020-01-10 20:05:06 +01:00
Roland Gruber c29be12a9e webauthn 2020-01-08 20:38:26 +01:00
Roland Gruber 0990d61507 webauthn 2020-01-06 14:02:32 +01:00
Roland Gruber 8a014f3a8a webauthn 2020-01-06 12:26:50 +01:00
Roland Gruber 9e1e0634e6 webauthn 2020-01-05 19:05:55 +01:00
Roland Gruber 03ced7c697 webauthn 2020-01-05 17:53:12 +01:00
Roland Gruber 3299d48e95 webauthn 2020-01-04 20:39:05 +01:00
Roland Gruber 7df361d6d0 webauthn 2020-01-04 19:06:01 +01:00
Roland Gruber 38addc429c webauthn 2020-01-04 18:28:25 +01:00
Roland Gruber ef9b3dd64e webauthn 2020-01-01 18:12:29 +01:00
Roland Gruber f97359f466 webauthn 2020-01-01 18:08:30 +01:00
Roland Gruber 9d9c37a44a webauthn 2020-01-01 17:17:35 +01:00
Roland Gruber 91e98b6926 webauthn 2020-01-01 17:13:19 +01:00
Roland Gruber 7514ec6b84 webauthn 2020-01-01 17:04:14 +01:00
Roland Gruber 68f6f3eafe i18n 2020-01-01 13:58:51 +01:00
Roland Gruber 7a096cfc94 webauthn 2019-12-31 17:01:51 +01:00
Roland Gruber 06d19858e3 Merge remote-tracking branch 'remotes/origin/develop' into webauthn
# Conflicts:
#	lam/HISTORY
2019-12-31 12:29:38 +01:00
Roland Gruber 6f28f17e41 7.0 2019-12-21 20:29:45 +01:00
Roland Gruber 3e20940d34 7.0 2019-12-21 20:04:02 +01:00
Roland Gruber 3ffefbd821 7.0 2019-12-21 19:47:18 +01:00
Roland Gruber 4e892e2171 refactoring 2019-12-21 19:40:29 +01:00
Roland Gruber eae502c629 refactoring 2019-12-21 15:13:48 +01:00
Roland Gruber de19770211 refactoring 2019-12-21 15:08:48 +01:00
Roland Gruber 27a4234634 added unit tests 2019-12-21 14:18:03 +01:00
Roland Gruber 0e835e3003 added webauthn error message 2019-12-19 22:01:54 +01:00
Roland Gruber 0ed0d17676 Merge branch 'develop' into webauthn 2019-12-19 21:14:28 +01:00
Roland Gruber 934f3be4a1 i18n 2019-12-18 22:12:42 +01:00
Roland Gruber 1851f02832 display additional data for Windows hosts 2019-12-17 21:17:28 +01:00
Roland Gruber 9136d79751 allow to skip preconfiguration 2019-12-16 20:39:58 +01:00
Roland Gruber 10f6897e7e fixed environment variables 2019-12-16 17:03:39 +01:00
Roland Gruber 54d4bd40c9 added LAM_LANG 2019-12-16 16:58:55 +01:00
Roland Gruber 65a10ef62c fixed install issue 2019-12-15 17:40:44 +01:00
Roland Gruber 8abd515ac6 fixed install issue 2019-12-15 17:30:00 +01:00
Roland Gruber 1d4bdd7156 fixed set -e issue 2019-12-15 17:18:50 +01:00
Roland Gruber c6bb9d5b22 debhelper 2019-12-15 17:14:42 +01:00
Roland Gruber 023d5c833c do not install lam.conf if other config files exist 2019-12-15 16:23:09 +01:00
Roland Gruber c2a8501cac i18n 2019-12-15 16:16:00 +01:00
Roland Gruber dbc096f7af include JS files 2019-12-13 18:24:28 +01:00
Roland Gruber 9208cb2349 support skipping of 2FA 2019-12-09 21:36:57 +01:00
Roland Gruber 9086f5847e Merge remote-tracking branch 'origin/develop' into webauthn
Conflicts:
	lam/locale/de_DE/LC_MESSAGES/messages.mo
	lam/locale/de_DE/LC_MESSAGES/messages.po
2019-12-09 20:13:09 +01:00
Roland Gruber 6469d8fb4c i18n 2019-12-09 20:04:37 +01:00
Roland Gruber b985110def 7.0.RC1 2019-12-09 18:19:11 +01:00
Roland Gruber 80c97d49c6 typo 2019-12-09 17:59:54 +01:00
Roland Gruber 7e3635a3c2 CSS fix 2019-12-08 18:41:33 +01:00
Roland Gruber e20689dfe6 new standards version 2019-12-08 09:51:45 +01:00
Roland Gruber 49c088915f 7.0 2019-12-08 09:37:47 +01:00
gruberroland 1bc26a314e
Merge pull request #81 from LDAPAccountManager/docker
Docker
2019-12-07 21:49:13 +01:00
Roland Gruber 7734b33e26 docs update 2019-12-07 21:46:22 +01:00
Roland Gruber 3054f38d7c documented environment variables, cleanup 2019-12-07 21:41:36 +01:00
Roland Gruber 3d7e2e9c47 copyright 2019-12-07 20:00:44 +01:00
gruberroland c170a0954c
Merge pull request #76 from fbartels/docker
General Dockerfile improvements & automatic configuration
2019-12-07 19:06:49 +01:00
Roland Gruber 22d15581a9 deactivated outdated translations 2019-12-07 13:32:20 +01:00
Roland Gruber 8e9641fad3 i18n 2019-12-07 13:17:08 +01:00
Roland Gruber 596b5bb1f8 i18n 2019-12-07 12:56:39 +01:00
Roland Gruber 0723b5f6bb i18n 2019-12-07 12:51:17 +01:00
Roland Gruber a8738a5e53 typos 2019-12-07 12:49:45 +01:00
Roland Gruber 2aabad9a3d webauthn: store registrations, check for duplicate security keys 2019-12-01 18:11:19 +01:00
Roland Gruber 0f13e3c8ba webauthn 2019-11-30 14:23:49 +01:00
Roland Gruber 0a30964011 php 7.3 2019-11-30 11:29:06 +01:00
Roland Gruber 18eb9ed216 php 7.3 2019-11-30 11:19:53 +01:00
Roland Gruber 84d20e204a php 7.3 2019-11-30 11:16:25 +01:00
Roland Gruber c71b01a73e php 7.3 2019-11-30 11:12:07 +01:00
Roland Gruber 41b4869052 php 7.3 2019-11-30 11:04:29 +01:00
Roland Gruber e4363b83c4 webauthn 2019-11-30 10:42:08 +01:00
Roland Gruber 2d90e73b2f webauthn 2019-11-30 08:48:01 +01:00
Roland Gruber 4d5d93c62b webauthn 2019-11-28 21:19:44 +01:00
Roland Gruber 58e15da1a8 updated test cases 2019-11-28 21:18:25 +01:00
Roland Gruber 1535bf4da6 webauthn 2019-11-25 21:07:23 +01:00
Roland Gruber 9637c2dff6 webauthn 2019-11-24 09:45:57 +01:00
Roland Gruber e329c28c3e webauthn 2019-11-21 22:03:42 +01:00
Roland Gruber db48e32dc6 fixed message 2019-11-21 22:02:38 +01:00
Roland Gruber 38045cbac1 PHP 7 2019-11-21 21:51:05 +01:00
Roland Gruber deca797a80 PHP 7 2019-11-21 21:48:14 +01:00
Roland Gruber 4cb095f0f7 removed image 2019-11-21 20:01:14 +01:00
Roland Gruber a5036782bd added "cn" to profile options 2019-11-21 19:57:45 +01:00
Roland Gruber ffd47f8ca5 webauthn 2019-11-21 19:34:01 +01:00
Roland Gruber 62dcd743fb webauthn 2019-11-17 21:51:24 +01:00
Roland Gruber e471b5586d Merge remote-tracking branch 'origin/develop' into webauthn
Conflicts:
	lam/lib/2factor.inc
2019-11-17 21:41:40 +01:00
Roland Gruber df09375be3 webauthn 2019-11-17 21:38:57 +01:00
gruberroland 1dac968a02
Merge pull request #79 from LDAPAccountManager/yubico_multiServer
YubiKey multi server setup
2019-11-17 17:51:56 +01:00
Roland Gruber 3719e55105 docs update 2019-11-17 17:50:30 +01:00
Roland Gruber 61025edd68 YubiKey multiple servers 2019-11-17 17:44:30 +01:00
Roland Gruber 128dc774fb YubiKey multi server setup 2019-11-16 08:28:24 +01:00
Roland Gruber b65623742d added help in self service 2019-11-15 19:08:51 +01:00
Roland Gruber 6395756ceb self service fixes 2019-11-15 15:43:16 +01:00
Felix Bartels 75cfafebc9 General Dockerfile improvements & automatic configuration
- add a docker-compose file for easy rebuilds and test deployments
- switch to slim version of base image
- instruct apt to run noninteractive
- maintainer is deprecated in Dockerfile
- reformat packages being installed and add ca-certificates
- reduce layers and size while cleaning up in the indivdual layers
- add proper startup script
- make apache put logs on the console
- add healthcheck
- set lam password at startup
- make more settings configurable through env variables
- add ldap to the example compose file
- predefine DEBUG var
- Upgrade to Debian Buster

Signed-off-by: Felix Bartels <felix@host-consultants.de>
2019-11-15 07:39:21 +01:00
Roland Gruber 65412574a0 styling updates 2019-11-14 21:56:15 +01:00
gruberroland 690ba0407d
Merge pull request #77 from LDAPAccountManager/hideTabs
Hide tabs
2019-11-13 20:04:12 +01:00
Roland Gruber 42fb854601 7.0 2019-11-09 14:35:16 +01:00
Roland Gruber b0d786c86e fixed formatting of DN with escaped commas 2019-11-09 14:32:35 +01:00
Roland Gruber d991ec578c fixed saving accounts with Windows escaping 2019-11-09 14:25:06 +01:00
Roland Gruber 83a0ff71c9 #210 removed old workaround that causes issues with spaces in DN 2019-11-09 14:10:06 +01:00
Roland Gruber 714dbaa0fd filter by substring match instead of exact match 2019-11-09 11:08:42 +01:00
Roland Gruber a3f0c07096 spacing fixes 2019-11-07 21:45:12 +01:00
Roland Gruber 5a12fc7a2e less padding 2019-11-07 21:14:52 +01:00
Roland Gruber e3b0d10bf8 hide tabs for edit pages 2019-11-07 21:05:11 +01:00
Roland Gruber eddbc27d3d save some space on screen 2019-11-07 17:21:59 +01:00
Roland Gruber c05d07d8f5 responsive 2019-11-04 19:54:39 +01:00
Roland Gruber 50102f2c3f responsive 2019-11-03 09:26:49 +01:00
Roland Gruber 00a299e80f responsive 2019-11-02 18:51:36 +01:00
Roland Gruber dbb2e8aa37 refactoring 2019-11-02 12:05:32 +01:00
Roland Gruber 3169c85802 responsive 2019-11-02 12:01:16 +01:00
Roland Gruber 75ce322789 responsive 2019-11-02 11:35:54 +01:00
Roland Gruber cbff63567c responsive 2019-11-02 10:44:28 +01:00
Roland Gruber 622a72ef18 refactoring 2019-11-01 21:01:08 +01:00
Roland Gruber 22b4da76e9 responsive 2019-11-01 20:58:22 +01:00
Roland Gruber 6039d77a7d responsive 2019-11-01 20:39:17 +01:00
Roland Gruber 58828c9836 line break issue fixed 2019-10-26 17:52:40 +02:00
Roland Gruber 3c5ef4eb30 put suffix + RDN in one line 2019-10-26 17:52:17 +02:00
gruberroland 51e9c29973
Merge pull request #75 from LDAPAccountManager/refactoring_lamdaemon
added prefix for lamdaemon
2019-10-26 17:32:36 +02:00
Roland Gruber b91b28d013 added prefix for lamdaemon 2019-10-26 17:28:24 +02:00
Roland Gruber 1c5c760f6e decreased min-width of input in account list 2019-10-24 21:15:37 +02:00
Roland Gruber 20c1ea8991 better table layout 2019-10-24 21:07:57 +02:00
gruberroland f21f8ee423
Merge pull request #74 from LDAPAccountManager/refactoring_lamdaemon
Refactoring lamdaemon
2019-10-23 21:27:27 +02:00
Roland Gruber 624c94bff0 updated connect() method 2019-10-23 21:25:33 +02:00
Roland Gruber eef69a7a35 updated connect() method 2019-10-23 21:14:54 +02:00
Roland Gruber 04c00f0850 Merge branch 'develop' of git@github.com:LDAPAccountManager/lam.git into develop 2019-10-23 18:57:10 +02:00
Roland Gruber 7334947d54 use only 33% for image 2019-10-23 18:56:54 +02:00
gruberroland 21e50208ed
Merge pull request #73 from LDAPAccountManager/refactoring_lamdaemon
added getConfiguredScriptServers()
2019-10-22 21:26:30 +02:00
Roland Gruber d074e2377d use getConfiguredScriptServers() 2019-10-22 21:22:32 +02:00
Roland Gruber 162ed79946 use getConfiguredScriptServers() 2019-10-17 21:18:13 +02:00
Roland Gruber d2a07f697c refactoring 2019-10-15 16:15:12 +02:00
Roland Gruber 4128f703aa refactoring 2019-10-15 16:06:46 +02:00
Roland Gruber de988316a5 use getConfiguredScriptServers() 2019-10-13 20:12:55 +02:00
Roland Gruber cc3e8057d8 added getConfiguredScriptServers() 2019-10-13 20:04:22 +02:00
Roland Gruber dc94c51cda 7.0 2019-10-12 17:35:19 +02:00
Roland Gruber 8426cc6ccd fixed inclusion of Duo CSS 2019-10-12 10:10:31 +02:00
Roland Gruber b5e163cfc3 disable password saving 2019-10-10 20:45:40 +02:00
Roland Gruber ff8fd47bed refactoring 2019-10-06 11:13:44 +02:00
Roland Gruber 0240dec74e refactoring 2019-10-05 12:29:51 +02:00
Roland Gruber d5b779c5e1 fixed Sonar issues 2019-10-05 12:21:19 +02:00
Roland Gruber 6052047b52 added missing Duo 2019-10-03 17:48:17 +02:00
Roland Gruber ac56e61a0f 6.9 2019-09-29 10:52:07 +02:00
Roland Gruber 9530f704e2 added source-only build 2019-09-29 09:43:16 +02:00
Roland Gruber 461a9819c7 6.9 2019-09-29 09:25:43 +02:00
Roland Gruber 5a2fa00b37 fix for self service 2019-09-28 17:53:07 +02:00
Roland Gruber e2b92878fa 8.0.1 2019-09-28 17:52:44 +02:00
Roland Gruber b327e72a46 6.9 2019-09-28 17:27:32 +02:00
Roland Gruber af9f714ffb responsive 2019-09-28 11:24:47 +02:00
Roland Gruber 426e1cf80f responsive fix 2019-09-27 20:09:47 +02:00
Roland Gruber 969d681104 responsive 2019-09-27 19:06:22 +02:00
Roland Gruber 0eff6e7065 responsive 2019-09-27 19:00:05 +02:00
Roland Gruber 807925d9a7 responsive 2019-09-27 17:16:16 +02:00
Roland Gruber 302acfa2d9 responsive 2019-09-26 19:44:17 +02:00
Roland Gruber 3ad1b5c20a responsive 2019-09-26 19:24:49 +02:00
Roland Gruber 728e3cacc3 sorting 2019-09-26 19:24:36 +02:00
Roland Gruber a1da6a897d fixed issue with group of names update 2019-09-26 18:40:16 +02:00
Roland Gruber cb699635c5 fixed gd test 2019-09-26 18:19:57 +02:00
Roland Gruber a9c0833250 responsive 2019-09-26 18:05:06 +02:00
Roland Gruber 7add41b48e responsive 2019-09-23 17:59:15 +02:00
Roland Gruber 2bc62a34cf validation update 2019-09-22 13:19:26 +02:00
Roland Gruber 6298546620 responsive 2019-09-17 12:02:21 +02:00
Roland Gruber fa3baf8f86 i18n improvements 2019-09-13 21:16:22 +02:00
Roland Gruber 45e0968059 fixed broken images 2019-09-12 21:39:26 +02:00
Roland Gruber fa6a40a7a0 i18n 2019-09-10 08:28:47 +02:00
Roland Gruber f646e1e8ff responsive 2019-09-07 20:43:04 +02:00
Roland Gruber a8eb89aaf2 responsive 2019-09-06 21:13:43 +02:00
Roland Gruber 533ea1645f fixed getSelfServiceSettings() 2019-09-05 21:26:49 +02:00
Roland Gruber 482226a955 6.9 2019-09-04 18:07:58 +02:00
Roland Gruber 51eaeed060 responsive 2019-09-03 21:31:29 +02:00
Roland Gruber 44fc341de9 responsive 2019-09-02 18:05:25 +02:00
Roland Gruber caf809c87e responsive update 2019-09-02 18:05:05 +02:00
Roland Gruber 967ff33b34 less space 2019-09-02 18:04:21 +02:00
Roland Gruber 065232505e responsive 2019-09-01 10:52:03 +02:00
Roland Gruber b21b3657fb custom label 2019-09-01 09:34:06 +02:00
Roland Gruber 9db074c1e7 added delete button 2019-08-31 11:15:49 +02:00
Roland Gruber cfcb1efd8f show tabs when save error occured 2019-08-31 11:07:06 +02:00
Roland Gruber 60c3053901 responsive 2019-08-30 22:32:38 +02:00
Roland Gruber ab3d13cf28 check SSH key 2019-08-29 20:44:47 +02:00
Roland Gruber d73ffee957 phpceclib 2.0.21 2019-08-29 20:23:11 +02:00
Roland Gruber c7c1d030e3 responsive 2019-08-27 21:30:51 +02:00
Roland Gruber 156252ef7f responsive 2019-08-27 21:29:51 +02:00
Roland Gruber 3c4e558e6c filter for addDoubleSelectionArea() 2019-08-26 20:26:00 +02:00
Roland Gruber 1b31c893fd max-width-10 2019-08-26 18:59:07 +02:00
Roland Gruber 4c05994a6f responsive 2019-08-25 12:44:13 +02:00
Roland Gruber 92110ed8da responsive 2019-08-25 12:41:14 +02:00
Roland Gruber 5668f5f634 responsive 2019-08-25 12:26:32 +02:00
Roland Gruber 99c4130435 responsive 2019-08-25 11:59:53 +02:00
Roland Gruber 8c7d06e4ae #207 added note about RSA 2019-08-25 11:43:18 +02:00
Roland Gruber 493150ab6f responsive 2019-08-23 22:03:29 +02:00
Roland Gruber 9fa374e2b4 6.8.2 2019-08-20 17:34:52 +02:00
Roland Gruber e63900b566 typo 2019-08-19 21:59:47 +02:00
Roland Gruber 47c55d76c5 responsive 2019-08-19 21:56:21 +02:00
Roland Gruber fa259a2168 *_count attributes 2019-08-19 21:01:40 +02:00
Roland Gruber 6815777b8c responsive 2019-08-17 10:53:01 +02:00
Roland Gruber 4084972bd2 styling title bar 2019-08-17 10:52:44 +02:00
Roland Gruber 46cfdb821c support respoinsiveRow in multi-field 2019-08-17 10:52:26 +02:00
Roland Gruber 368a3988dc responsive 2019-08-17 10:27:18 +02:00
Roland Gruber 1acf7c95e4 added feature policy 2019-08-16 22:09:31 +02:00
Roland Gruber 17ac43d503 double area for mobile 2019-08-15 17:15:57 +02:00
Roland Gruber 39f363ba83 fixed title 2019-08-15 17:15:23 +02:00
Roland Gruber 49ae8b49b6 responsive 2019-08-15 17:03:33 +02:00
Roland Gruber 43326b515f mobile fix 2019-08-15 17:02:50 +02:00
Roland Gruber 1783f6f9b6 allow to render an area with two selects 2019-08-15 17:02:36 +02:00
Roland Gruber 1d994cc5b8 fixed closing div on empty select 2019-08-15 17:01:53 +02:00
Roland Gruber 8df75742d2 refactored edit header 2019-08-15 15:11:25 +02:00
Roland Gruber edf2f61df4 responsive 2019-08-15 14:37:05 +02:00
Roland Gruber f88b5ee74f help icon 2019-08-15 14:36:55 +02:00
Roland Gruber febba5803a responsive design 2019-08-15 14:13:10 +02:00
Roland Gruber bb32bb6424 set LDAP_OPT_X_TLS_CACERTFILE 2019-08-15 12:48:37 +02:00
Roland Gruber 4a373743af fixed #206 2019-08-14 20:53:08 +02:00
Roland Gruber f77adfe858 fixed config issue 2019-08-14 20:49:10 +02:00
Roland Gruber 71283f3b53 i18n 2019-08-13 20:08:21 +02:00
Roland Gruber 9cae521150 Duo 2019-08-13 20:08:08 +02:00
gruberroland a7f2f753c5
Merge pull request #70 from LDAPAccountManager/duo
Duo support
2019-08-13 17:36:12 +02:00
Roland Gruber 095e728104 Duo 2019-08-13 17:29:02 +02:00
Roland Gruber bf777b2e99 Duo support 2019-08-13 17:03:30 +02:00
Roland Gruber edb50f4d4b login attribute for 2-factor 2019-08-11 09:39:47 +02:00
Roland Gruber 5f15b2fae2 dynamic scrolling 2019-08-10 14:19:23 +02:00
Roland Gruber 9781e951a6 footer for self service 2019-08-08 21:10:32 +02:00
gruberroland 02d100b5f0
Merge pull request #68 from LDAPAccountManager/decrypt_login
Decrypt login
2019-08-06 21:48:47 +02:00
Roland Gruber 5d87fd7037 removed debug 2019-08-06 21:44:12 +02:00
Roland Gruber e0a82bc70d removed decrypt_login() 2019-08-05 21:56:06 +02:00
Roland Gruber 6d392e51ee refactoring 2019-07-31 21:19:42 +02:00
Roland Gruber 34431b286d 6.8.1 2019-07-25 20:24:45 +02:00
Roland Gruber fa7c9699db filtering of dynamic scrolling fields 2019-07-24 22:00:15 +02:00
Roland Gruber 778fde3357 refactoring 2019-07-24 21:32:25 +02:00
Roland Gruber 29a7b0c3e0 dynamic select field 2019-07-24 21:29:26 +02:00
Roland Gruber f8cfcf9f34 Ajax filtering 2019-07-20 20:29:31 +02:00
Roland Gruber 2bb7470fa2 use Ajax filtering 2019-07-20 20:25:14 +02:00
Roland Gruber 3cabf78630 fixed issues with single select box 2019-07-19 16:15:11 +02:00
Roland Gruber 877d35362b refactoring 2019-07-19 10:27:53 +02:00
Roland Gruber 2ade724c40 refactoring 2019-07-19 10:16:28 +02:00
Roland Gruber b831414ca4 allow to show member/owner count 2019-07-17 21:10:24 +02:00
Roland Gruber 03caa12d31 docker 2019-07-16 12:12:39 +02:00
Roland Gruber f6d80e3abd 6.8 2019-07-02 19:09:49 +02:00
Roland Gruber 85ebe6ff04 6.8 2019-07-02 19:04:54 +02:00
Roland Gruber 14f6ecd91b gitignore 2019-07-02 12:55:01 +02:00
Roland Gruber 259fff76af 6.8 2019-07-02 12:54:16 +02:00
gruberroland 7ebfa14029
Merge pull request #67 from LDAPAccountManager/feature/parallelEditing
6.8
2019-07-02 12:49:09 +02:00
Roland Gruber f3516ba92d 6.8 2019-07-02 12:47:32 +02:00
Roland Gruber 6086765d16 Self service: support legacy attribute "email" for password self reset
and user self registration
2019-06-28 11:09:00 +02:00
Roland Gruber 8fa29aa1d0 i18n 2019-06-28 10:34:25 +02:00
Roland Gruber 1e54f0fb08 legacy email support 2019-06-22 22:07:31 +02:00
Roland Gruber ddb8402b0a #66 2019-06-20 21:14:12 +02:00
Roland Gruber 105cbd7403 i18n 2019-06-14 20:30:19 +02:00
Roland Gruber 0faebfe928 i18n 2019-06-11 08:50:47 +02:00
Roland Gruber b25ad345d7 6.8 2019-06-09 10:02:06 +02:00
Roland Gruber 3ba7a75d0c 6.8 2019-06-08 22:14:56 +02:00
Roland Gruber f285f83c3e 6.8 2019-06-08 20:46:36 +02:00
Roland Gruber ef0673decd password optional 2019-06-05 19:24:46 +02:00
Roland Gruber 929b37ce40 translation update 2019-06-04 09:05:17 +02:00
Roland Gruber 94ee2317a6 translation update 2019-06-01 08:48:38 +02:00
Roland Gruber 51e0c41fae ignore logs 2019-06-01 08:31:42 +02:00
gruberroland 2993588a2a
Merge pull request #65 from LDAPAccountManager/feature/parallelEditing
Feature/parallel editing
2019-05-30 17:21:50 +02:00
Roland Gruber 86e37191fa cleanup old containers 2019-05-30 17:19:45 +02:00
Roland Gruber 49423d778c PHP notice 2019-05-30 17:18:01 +02:00
Roland Gruber 213807efc6 translation update 2019-05-30 16:40:00 +02:00
Roland Gruber d0dadf2949 parallel editing 2019-05-30 15:51:23 +02:00
Roland Gruber 5a9c4660e1 use random session key 2019-05-23 22:09:05 +02:00
Roland Gruber 5989df4a43 use variable session key 2019-05-23 20:38:44 +02:00
Roland Gruber 6c47d1528a Revert "provide tab id"
This reverts commit e5484ee833.
2019-05-23 17:22:47 +02:00
Roland Gruber e5484ee833 provide tab id 2019-05-20 20:06:55 +02:00
Roland Gruber 8186aed796 removed parallel editing check 2019-05-20 18:06:07 +02:00
Roland Gruber 89aa75c61a PWA 2019-05-20 17:19:04 +02:00
Roland Gruber a20cc2652a updated PWA 2019-05-20 17:04:53 +02:00
Roland Gruber c79170a34f service worker 2019-05-20 16:30:12 +02:00
Roland Gruber ae511610ec progressive web app 2019-05-20 15:48:37 +02:00
Roland Gruber b1f85eb050 added force password change to profile editor 2019-05-20 13:10:06 +02:00
Roland Gruber 1f20b1d48e fixed wrong error message 2019-05-20 12:26:27 +02:00
Roland Gruber bd28b7160f 6.8 2019-05-20 11:24:19 +02:00
Roland Gruber 0879961b61 PHP 7.3 fixes 2019-05-20 11:09:02 +02:00
Roland Gruber c3a7fac3f3 added home drive to profile editor options 2019-05-12 20:51:46 +02:00
Roland Gruber a69ab717bd refactoring 2019-05-12 20:51:12 +02:00
Roland Gruber 2938be9308 fixed comparison check 2019-05-12 18:41:52 +02:00
Roland Gruber 3b35aa29da hide fields that are not managed by a module 2019-05-12 18:11:39 +02:00
Roland Gruber 54b68e7765 show server profile in header 2019-05-12 10:13:09 +02:00
Roland Gruber 99da1f05e6 common version text 2019-05-12 09:50:23 +02:00
Roland Gruber 2924e3e652 check for XMLReader and XMLWriter 2019-05-08 20:40:02 +02:00
Roland Gruber de2ff0afa2 account status 2019-05-08 20:34:54 +02:00
Roland Gruber f8a91f3f4f #200 fixed filter select for account status 2019-05-08 20:32:29 +02:00
Roland Gruber 9bac92a4a5 Bind DLZ records 2019-04-17 21:40:37 +02:00
Roland Gruber 415d3c11b8 fixed dependency 2019-04-05 22:18:34 +02:00
Roland Gruber 04bd9acc37 6.7 2019-04-05 20:50:38 +02:00
Roland Gruber 3d0a53cb07 clear old links 2019-03-25 20:25:49 +01:00
Roland Gruber c253c67af5 limit size of first column in account list 2019-03-25 20:18:14 +01:00
Roland Gruber 25539ee021 6.7 2019-03-25 19:52:21 +01:00
Roland Gruber 9c4d068592 yubico 2019-03-24 13:30:48 +01:00
Roland Gruber 63e3adf89f tcpdf 2019-03-24 12:55:48 +01:00
Roland Gruber 03108cc055 tcpdf 2019-03-24 12:38:30 +01:00
Roland Gruber 050519215f tcpdf 2019-03-24 12:33:06 +01:00
Roland Gruber 788a10d293 tcpdf 2019-03-24 12:29:28 +01:00
Roland Gruber f85d64aaa4 TCPDF update 2019-03-24 09:37:16 +01:00
Roland Gruber 9ba767eb30 translation update 2019-03-24 09:04:48 +01:00
Roland Gruber e38c184cd7 translation update 2019-03-23 07:40:40 +01:00
Roland Gruber b4ddddee58 i18n 2019-03-17 20:31:58 +01:00
Roland Gruber 01f037c5fc typo 2019-03-15 18:12:30 +01:00
Roland Gruber a15a3ea233 6.7 2019-03-15 17:25:38 +01:00
Roland Gruber 534afc281b translation update 2019-03-10 10:25:49 +01:00
Roland Gruber f91d29bb58 typo 2019-03-10 10:25:33 +01:00
Roland Gruber 0ff0131dc8 typo 2019-03-10 10:13:23 +01:00
Roland Gruber a5a7a66e2a self service 2019-03-10 10:06:22 +01:00
Roland Gruber 68e3b3f076 base URL 2019-03-09 11:27:49 +01:00
Roland Gruber 4f04dcb48e added base URL to getCallingURL() 2019-03-09 11:10:42 +01:00
Roland Gruber 19ea7dd3dd base URL for self service 2019-03-09 09:41:32 +01:00
Roland Gruber 2ac5b95e63 refactoring 2019-03-09 09:19:39 +01:00
Roland Gruber 7564ba33f4 new self service fields 2019-03-06 19:39:13 +01:00
Roland Gruber e10416f588 group of names memberships 2019-03-06 19:14:58 +01:00
Roland Gruber 87921f07c7 Merge branch 'develop' of git@github.com:LDAPAccountManager/lam.git into develop 2019-03-06 18:09:33 +01:00
Roland Gruber a93bcf830f Unix group memberships in self service 2019-03-06 18:09:22 +01:00
gruberroland b2d1f5de58
Merge pull request #64 from dhoffend/fix-ldap-exop
create correct error message when ldap_exop fails
2019-03-06 18:03:45 +01:00
Daniel Hoffend 8da632d4a0 create correct error message when ldap_exop fails 2019-03-06 16:52:10 +01:00
Roland Gruber cc90b307b0 fixed issue when object class of groups is in lower case 2019-03-05 17:59:33 +01:00
Roland Gruber 39f0730434 added mail alias to self service 2019-03-03 13:18:02 +01:00
Roland Gruber 82201ec448 added mail routing address to self service 2019-03-03 10:34:43 +01:00
Roland Gruber 12d5ac115a Shadow account expiration date 2019-03-03 10:28:43 +01:00
Roland Gruber dd2fb80375 added shadow account expiration notification job 2019-03-03 10:16:45 +01:00
Roland Gruber 8af9661254 PHP 7.3 2019-03-01 19:18:09 +01:00
Roland Gruber 5a6506cf6d fixed logging 2019-03-01 18:28:14 +01:00
Roland Gruber da4788b3cc fixed file attributes 2019-03-01 17:26:18 +01:00
Roland Gruber ad41a10036 remote logging 2019-03-01 17:18:54 +01:00
Roland Gruber ab12d24703 XFR 2019-02-27 20:05:25 +01:00
Roland Gruber 1eac04648a support multiple regex IDs for upload check 2019-02-27 19:22:39 +01:00
Roland Gruber 3d1ce91759 fixed footer 2019-02-27 19:16:31 +01:00
gruberroland 3587661a9d
Merge pull request #62 from LDAPAccountManager/monolog
Monolog
2019-02-24 12:01:10 +01:00
Roland Gruber 7c87eb0324 remote logging 2019-02-24 12:00:15 +01:00
Roland Gruber dfc8e5e5d3 ignore nuser+ngroup 2019-02-24 11:58:43 +01:00
Roland Gruber fb78790a39 6.7 2019-02-24 11:58:21 +01:00
Roland Gruber 575b700604 implemented logging 2019-02-23 20:29:45 +01:00
Roland Gruber ffe2316003 added configuration for remote logging 2019-02-23 19:44:10 +01:00
Roland Gruber 4949b1b70a added Monolog 2019-02-23 18:59:03 +01:00
Roland Gruber 34ffbb4f36 responsive account edit page 2019-02-23 18:42:21 +01:00
Roland Gruber 5f32b829b6 DNAME 2019-02-10 11:09:18 +01:00
Roland Gruber 8ac696ed22 fixed cases when numbers are equal 2019-02-01 20:27:49 +01:00
Roland Gruber 1c708bb816 PHP 7.3 2019-02-01 20:27:21 +01:00
Roland Gruber 716d119d34 PHP 7.3 fix 2019-02-01 20:18:55 +01:00
Roland Gruber 1bd598b0c3 set security headers 2019-02-01 19:38:03 +01:00
Roland Gruber 77e7c77e20 use String().trim() 2019-02-01 19:35:31 +01:00
Roland Gruber ec19de29c0 fixed content type 2019-01-29 21:31:50 +01:00
gruberroland b00282afb0
Merge pull request #58 from chriamue/patch-1
keep container running
2019-01-29 19:43:45 +01:00
Christian M f0e69fa6a3
keep container running
Hi, using ldapaccountmanager/lam in kubernetes stops running.
I think the same problem will happen starting using docker-compose.
Can you please change the Dockerfile or document on dockerhub.
Here is a config that works:
...
      containers:
        - name: ldap-account-manager
          image: ldapaccountmanager/lam
          command: ["/bin/sh"]
          args: ["-c", "service apache2 start && sleep infinity"]
2019-01-29 13:06:09 +01:00
Roland Gruber d15cde2507 fixed click events on page 2 and later 2019-01-28 21:14:49 +01:00
Roland Gruber b3d5b641f6 updated RPM 2019-01-28 18:21:00 +01:00
Roland Gruber db0150b0f6 removed dependencies as PHP 5 and 7 cannot be set together 2019-01-28 18:19:32 +01:00
Roland Gruber 992814d1c6 Bind DLZ description 2019-01-27 10:33:58 +01:00
Roland Gruber 3b6dd49278 tree-only configurations 2019-01-18 19:16:48 +01:00
Roland Gruber 189cabf5f4 do not add types by default to allow tree-only configurations 2019-01-18 19:11:10 +01:00
Roland Gruber ac936dd34a added mailLocalAddress and proxyAddresses as self service fields 2019-01-16 20:52:59 +01:00
Roland Gruber 7403a95104 removed obsolete code 2019-01-13 14:44:24 +01:00
Roland Gruber 8f14cab65e Dockerfile 2019-01-12 11:02:39 +01:00
Roland Gruber 104bfb0682 removed logging of all users 2019-01-09 18:53:20 +01:00
Roland Gruber 20f617ebdf check rights 2019-01-04 19:00:05 +01:00
Roland Gruber 18547baad2 refactoring 2019-01-02 21:10:32 +01:00
gruberroland 5682245739
Merge pull request #57 from LDAPAccountManager/yubiKey2FA
YubiKey 2FA
2019-01-01 11:53:49 +01:00
Roland Gruber e43d520e52 limit id length 2019-01-01 11:31:43 +01:00
Roland Gruber 8c4612c2ff documentation 2019-01-01 11:24:44 +01:00
Roland Gruber d0a97c47a9 YubiKey for self service 2019-01-01 10:54:31 +01:00
Roland Gruber 89ab8d0f1f get attribute name from config 2018-12-31 12:39:20 +01:00
Roland Gruber 4fea8155c8 refactoring 2018-12-31 11:42:20 +01:00
Roland Gruber 098618704a fixed logo copy 2018-12-31 11:03:50 +01:00
Roland Gruber fc24f4a2aa YubiKey support 2018-12-31 10:51:44 +01:00
Roland Gruber a55c337efd refactoring 2018-12-29 21:06:27 +01:00
Roland Gruber a206e9fefe limit key length to 12 2018-12-29 20:06:13 +01:00
Roland Gruber f0086e725b refactoring 2018-12-29 15:49:42 +01:00
Roland Gruber cf25c31a37 refactoring 2018-12-29 09:51:51 +01:00
Roland Gruber 87e47ae9b1 Merge branch 'develop' of git@github.com:LDAPAccountManager/lam.git into develop 2018-12-28 13:42:52 +01:00
Roland Gruber aa8fdf5369 standards 2018-12-28 13:30:27 +01:00
Roland Gruber 6af8cf3dc3 6.6 2018-12-28 11:29:41 +01:00
Roland Gruber bc3152c03a refactoring 2018-12-28 11:19:15 +01:00
Roland Gruber 5e4c692f6f update 2018-12-26 10:05:17 +01:00
Roland Gruber 57d5e1ce3f refactoring 2018-12-26 09:53:58 +01:00
Roland Gruber 2ce96573c0 docs 2018-12-26 09:39:51 +01:00
Roland Gruber 727390064f refactoring 2018-12-24 12:44:09 +01:00
Roland Gruber e8c0fb9371 translation update 2018-12-24 11:16:26 +01:00
Roland Gruber fbb7749425 translation update 2018-12-23 20:55:19 +01:00
Roland Gruber ffcf1c82df phpunit 2018-12-23 19:12:51 +01:00
Roland Gruber 36782d1a1a phpunit 2018-12-23 18:54:35 +01:00
Roland Gruber d35aa31a8f phpunit 2018-12-23 18:40:37 +01:00
Roland Gruber e14b199feb phpunit 2018-12-23 18:37:19 +01:00
Roland Gruber cbb94aecc4 phpunit 2018-12-23 18:28:16 +01:00
Roland Gruber 53d1d1d865 refactoring 2018-12-23 18:22:26 +01:00
Roland Gruber 5b4c9b8c38 coverage for lib 2018-12-23 17:55:44 +01:00
Roland Gruber efdaa29136 refactoring 2018-12-23 17:52:56 +01:00
Roland Gruber 4e7c972187 refactoring 2018-12-23 17:46:31 +01:00
Roland Gruber 19858a03f5 refactoring 2018-12-23 17:45:01 +01:00
Roland Gruber 615e0f4947 refactoring 2018-12-23 17:39:44 +01:00
Roland Gruber 36b91b2785 refactoring 2018-12-23 17:32:17 +01:00
Roland Gruber e43b106c95 refactoring 2018-12-23 17:28:42 +01:00
Roland Gruber 77282fed29 refactoring 2018-12-23 17:21:50 +01:00
Roland Gruber de2b6e1631 refactoring 2018-12-23 13:54:08 +01:00
Roland Gruber 077556a6a9 refactoring 2018-12-23 11:11:23 +01:00
Roland Gruber 2a10013f36 refactoring 2018-12-23 11:01:29 +01:00
Roland Gruber e289cabe3f added var 2018-12-23 10:41:33 +01:00
Roland Gruber 5a6ee994cb removed duplicates 2018-12-23 10:33:42 +01:00
Roland Gruber 4636b63e7b fixed max. errors to show 2018-12-23 10:33:15 +01:00
Roland Gruber 6b24c8f7f0 error message fix 2018-12-23 10:32:56 +01:00
Roland Gruber 5eb0bcbc39 fixed array_unique usage 2018-12-23 10:32:36 +01:00
Roland Gruber cbad61519e added title 2018-12-23 10:32:09 +01:00
Roland Gruber d3608c7bd0 changed includes 2018-12-22 21:33:07 +01:00
Roland Gruber 680b99aba3 phpunit 2018-12-22 21:28:21 +01:00
Roland Gruber 2e0637cf7b unit tests 2018-12-22 21:14:41 +01:00
Roland Gruber d3ce330b62 unit tests 2018-12-22 21:12:16 +01:00
Roland Gruber e64abbaf46 Sonar 2018-12-22 20:32:53 +01:00
Roland Gruber bb061d128f Sonar 2018-12-22 20:23:57 +01:00
Roland Gruber 2f453aa5db Sonar 2018-12-22 20:20:58 +01:00
Roland Gruber b988411011 Sonar 2018-12-22 20:16:16 +01:00
Roland Gruber 5517a48e56 Sonar 2018-12-22 20:11:40 +01:00
Roland Gruber 0c52c929c5 updated test 2018-12-22 19:52:31 +01:00
Roland Gruber 57b2add165 TravisCI 2018-12-22 17:46:15 +01:00
Roland Gruber 74deb30986 translation update 2018-12-16 11:46:13 +01:00
Roland Gruber d9e2393f89 translation update 2018-12-12 19:38:12 +01:00
Roland Gruber a90d377faa replaced closure-compiler 2018-12-10 17:53:38 +01:00
Roland Gruber 4a94a19535 6.6 2018-12-10 17:09:12 +01:00
Roland Gruber f257cdede4 translation update 2018-12-09 19:56:34 +01:00
Roland Gruber ce4486a1e4 added domain-search 2018-11-25 14:51:03 +01:00
Roland Gruber 44e8fc232d new redirect 2018-11-25 14:50:24 +01:00
Roland Gruber d07d20f546 new refresh 2018-11-25 10:51:39 +01:00
Roland Gruber bb9a1b1719 check for duplicate host name 2018-11-23 20:05:41 +01:00
Roland Gruber 2d3f584bb4 added fallback for iconv 2018-11-23 18:31:47 +01:00
Roland Gruber 8852dd170d responsive 2018-11-20 19:24:26 +01:00
Roland Gruber bf34dd43bc responsive 2018-11-20 19:21:03 +01:00
Roland Gruber 691ccbc477 responsive delete page 2018-11-20 19:18:23 +01:00
Roland Gruber fe913bd5bf fixed issue with delete all 2018-11-20 18:45:24 +01:00
Roland Gruber 42bca3db59 responsive design 2018-11-18 09:19:12 +01:00
Roland Gruber 92115264fb group sync 2018-11-17 20:43:59 +01:00
Roland Gruber bb9f1f0eff Windows group sync 2018-11-17 20:40:09 +01:00
Roland Gruber 4ced8c519f Bind DLZ 2018-11-16 18:52:30 +01:00
Roland Gruber 01fa846f86 bindDLZ tests 2018-11-16 18:50:33 +01:00
Roland Gruber 085be08eea support weeks in number shortening 2018-11-14 20:13:31 +01:00
Roland Gruber 74e8fb830d fixed PHP notice 2018-11-11 20:20:20 +01:00
Roland Gruber b7396de612 fixed list filtering 2018-11-11 19:56:15 +01:00
Roland Gruber 29c3f6582c better DHCP searching 2018-11-11 13:28:36 +01:00
Roland Gruber 89b46e63fc 6.6 2018-11-05 20:22:51 +01:00
Roland Gruber d983e86605 #140 account expiration notification jobs 2018-11-05 20:21:46 +01:00
Roland Gruber 4b4b982ad9 cron jobs 2018-11-04 20:48:57 +01:00
Roland Gruber 22bc951171 #140 account expiration job 2018-11-03 11:22:19 +01:00
gruberroland b42c694a8a
Merge pull request #56 from LDAPAccountManager/jquery-update
Jquery update
2018-11-02 19:51:34 +01:00
Roland Gruber 94c122e44f new jQuery version 2018-11-02 17:51:12 +01:00
Roland Gruber 898afd25e2 copyright update 2018-11-01 20:11:45 +01:00
Roland Gruber 10fef6d1d2 jQuery update 2018-11-01 20:02:06 +01:00
Roland Gruber 55cdd56465 jQuery update 2018-11-01 19:46:19 +01:00
Roland Gruber 14edd44652 jQuery update 2018-11-01 18:17:11 +01:00
Roland Gruber 6f3bbf11a4 jQuery update 2018-11-01 18:09:51 +01:00
Roland Gruber 54f93d1424 fixed tabs 2018-11-01 11:26:55 +01:00
Roland Gruber baeaa0f98b jQuery update 2018-11-01 11:21:03 +01:00
Roland Gruber b197b6297b added lightbox 2018-10-28 17:18:47 +01:00
Roland Gruber 510d69e28b added lightbox on user list 2018-10-28 16:10:29 +01:00
gruberroland a97e489ba7
Merge pull request #55 from LDAPAccountManager/feature/responsiveList
Feature/responsive list
2018-10-28 15:18:04 +01:00
Roland Gruber 1935d3def8 responsive account table 2018-10-28 13:55:30 +01:00
Roland Gruber 985828da3a responsive account table 2018-10-28 10:11:45 +01:00
Roland Gruber dec9585733 added row events and tools 2018-10-27 16:43:04 +02:00
Roland Gruber fe5260b5e6 click and double click events for rows 2018-10-27 16:42:31 +02:00
Roland Gruber 62ae3267d2 responsive table head 2018-10-27 14:39:37 +02:00
Roland Gruber aa921cadf8 responsive settings dialog 2018-10-27 11:42:45 +02:00
Roland Gruber ec5fcebd7f responsive navigation 2018-10-26 20:13:13 +02:00
Roland Gruber a6f11073ca responsive account lists 2018-10-23 20:25:45 +02:00
Roland Gruber b0edc4c6f9 responsive account list 2018-10-23 06:51:23 +02:00
Roland Gruber 1b198403d7 color for self service 2018-10-22 21:11:31 +02:00
Roland Gruber a804f94d6f added hidden field for selected accordion tab 2018-10-21 10:08:17 +02:00
Roland Gruber ea40d3b796 added departmentNumber 2018-10-20 19:44:23 +02:00
Roland Gruber fc71a984bf added multi-value field functions for self service 2018-10-20 19:41:18 +02:00
Roland Gruber 5ac81d90eb styling of self service 2018-10-20 17:20:24 +02:00
Roland Gruber dc5f2f5bbf fix for links 2018-10-19 21:31:13 +02:00
Roland Gruber 9dffa0ed12 YubiKey support 2018-10-15 21:05:39 +02:00
gruberroland 65de9a2d18
Merge pull request #54 from LDAPAccountManager/importexport
Importexport
2018-10-14 09:57:53 +02:00
Roland Gruber b324cca20c updated help for import/export 2018-10-14 09:44:10 +02:00
Roland Gruber 5f62f9aed3 added link to go down DN level 2018-10-14 09:16:55 +02:00
Roland Gruber f0cbe217eb go back in DN selection 2018-10-13 19:05:50 +02:00
Roland Gruber d0388973e5 added first level of DN selection 2018-10-11 16:52:38 +02:00
Roland Gruber 89df814e77 DN chooser 2018-10-06 19:47:33 +02:00
Roland Gruber a202ed8824 disable tree import/export 2018-10-06 19:31:16 +02:00
Roland Gruber 1247e1f22b Merge remote-tracking branch 'origin/develop' into importexport 2018-10-06 10:53:39 +02:00
Roland Gruber ef41215d22 added CSV export 2018-10-06 10:45:44 +02:00
Roland Gruber 1d7db3794b LDIF export 2018-10-04 21:07:55 +02:00
Roland Gruber 378ab6cf93 6.5 2018-09-25 19:44:09 +02:00
Roland Gruber cfce928df4 fixed links 2018-09-25 19:00:08 +02:00
Roland Gruber 0b66a600a2 6.5 2018-09-25 17:52:09 +02:00
Roland Gruber a811c8ee7f 6.5 2018-09-25 17:47:06 +02:00
Roland Gruber f2d77dc851 export 2018-09-23 20:12:27 +02:00
Roland Gruber 9e5c2f0fd8 added libapache2-mod-fcgid 2018-09-23 10:07:45 +02:00
Roland Gruber 23e58208cf added libapache2-mod-fcgid 2018-09-23 10:06:25 +02:00
Roland Gruber 98f6c2bf84 export 2018-09-23 10:05:06 +02:00
Roland Gruber 4afd3d940e added export form 2018-09-15 20:13:57 +02:00
Roland Gruber 0bd7fcacf0 renamed tool 2018-09-15 18:27:38 +02:00
Roland Gruber 0cc31a4391 added checkbox to not stop on error 2018-09-15 18:25:53 +02:00
Roland Gruber cd749730a4 fixed error handling 2018-09-15 15:10:50 +02:00
Roland Gruber 2b9d775347 test 2018-09-15 15:07:53 +02:00
Roland Gruber 5b81c8e03c modify - add, delete, replace 2018-09-15 15:03:47 +02:00
Roland Gruber 28118bdaef translation update 2018-09-12 22:42:25 +02:00
Roland Gruber 08f8007f3e translation update 2018-09-10 19:40:59 +02:00
Roland Gruber 11258d7f1f translation update 2018-09-07 20:43:39 +02:00
Roland Gruber fe3c054825 changetype delete 2018-09-06 21:30:05 +02:00
Roland Gruber 1cbe9d546f changetype modrdn 2018-09-06 21:19:07 +02:00
Roland Gruber 109e7d679c add changetype 2018-09-06 20:53:22 +02:00
Roland Gruber 08c0f40282 typo 2018-09-06 18:24:30 +02:00
Roland Gruber 6031795a6d newer standards 2018-09-06 17:59:10 +02:00
Roland Gruber fc98320c71 6.5.RC1 2018-09-06 17:51:10 +02:00
Roland Gruber 613b47e738 translations 2018-09-04 21:11:05 +02:00
Roland Gruber 822b23c83a translation update 2018-09-04 19:55:05 +02:00
Roland Gruber a44350407e import changetype add 2018-09-04 19:34:03 +02:00
Roland Gruber 33b35fa23b import full entries 2018-09-01 13:36:04 +02:00
Roland Gruber c9cff54937 import tool 2018-08-31 20:59:05 +02:00
Roland Gruber a4c867d6b3 show/hide for radio 2018-08-29 18:59:45 +02:00
Roland Gruber 32d18361e9 better error message 2018-08-29 18:19:17 +02:00
Roland Gruber abceebdc4b fixed file upload 2018-08-28 21:17:05 +02:00
Roland Gruber 18a22ef1c4 fixed file upload 2018-08-28 21:15:51 +02:00
Roland Gruber 7222f10fe6 import/export 2018-08-28 20:20:36 +02:00
Roland Gruber f0b3b548de moved files 2018-08-28 20:19:49 +02:00
gruberroland 5a15f29418
Merge pull request #52 from LDAPAccountManager/imageutils
Imageutils
2018-08-25 19:43:50 +02:00
Roland Gruber 1fa90317e8 history 2018-08-25 19:40:46 +02:00
Roland Gruber 4b0411d448 support GD and Imagick 2018-08-25 19:39:47 +02:00
Roland Gruber 2c158e6844 use image utils 2018-08-19 20:25:15 +02:00
Roland Gruber 6f8a9549f2 added image manipulation class 2018-08-19 19:13:16 +02:00
Roland Gruber caa96faa5c updated history 2018-08-18 11:01:37 +02:00
Roland Gruber 0b7315a351 warn if user id already exists 2018-08-18 10:57:42 +02:00
Roland Gruber 458b3c454f check group of names before adding members 2018-08-18 10:48:44 +02:00
Roland Gruber 316ed2d0a8 check Unix membership before LDAP add 2018-08-18 10:32:39 +02:00
Roland Gruber 828fdc08c5 no array constant 2018-08-16 18:30:52 +02:00
Roland Gruber 2848bc9586 fixed issues with next user name suggestion 2018-08-15 10:43:10 +02:00
Roland Gruber ebe2c6390a check mailbox before creation 2018-08-12 10:39:24 +02:00
Roland Gruber a35c4bc06d set duplicate uid message to warning 2018-08-12 10:38:56 +02:00
Roland Gruber cb24a02efd set duplicate user name to warning 2018-08-12 09:41:36 +02:00
gruberroland 2acd157626
Merge pull request #51 from LDAPAccountManager/apache2.2-removal
drop Apache 2.2 support
2018-08-11 14:59:44 +02:00
Roland Gruber 7da2586583 drop Apache 2.2 support 2018-08-11 14:57:05 +02:00
Roland Gruber 0d70919200 check if scope class exists 2018-08-10 20:02:41 +02:00
Roland Gruber 96b29d8919 replace existing accounts during upload 2018-08-06 20:41:07 +02:00
Roland Gruber c2cae621e7 added salt for crypt 2018-07-31 19:10:42 +02:00
Roland Gruber d37bd1db71 gitignore 2018-07-28 13:42:58 +02:00
Roland Gruber c1918cdb4f gitignore 2018-07-28 13:36:15 +02:00
Roland Gruber 76330c4d92 ignore 2018-07-16 18:48:30 +02:00
Roland Gruber 90bb19a142 Kolab update 2018-07-14 16:59:35 +02:00
Roland Gruber b06266c1e6 Kolab update 2018-07-14 16:23:35 +02:00
Roland Gruber b58fb827fd LDAP_EXOP 2018-07-07 17:48:20 +02:00
Roland Gruber 86b10eda6a LDAP EXOP password change 2018-07-07 17:40:44 +02:00
Roland Gruber c4e8811056 check RDN value 2018-07-07 17:39:49 +02:00
Roland Gruber 6962420169 support password exop 2018-07-07 14:05:39 +02:00
Roland Gruber 805f04f508 fixed PHP notice 2018-07-07 14:04:43 +02:00
Roland Gruber 5c796f84ec auto delete module 2018-06-30 11:02:40 +02:00
Roland Gruber 31862c5bc5 added form validation 2018-06-30 09:49:20 +02:00
Roland Gruber 36c731e092 fixed PHP 7.2 warning 2018-06-30 09:16:43 +02:00
Roland Gruber 1f23b0314b added auto delete module 2018-06-29 20:44:36 +02:00
Roland Gruber 237ba66711 added date+time check 2018-06-29 20:43:10 +02:00
Roland Gruber fdca95bd3b 3rd party 2018-06-28 14:40:12 +02:00
Roland Gruber d29ec9220d removed samples 2018-06-28 14:29:06 +02:00
Roland Gruber 48ff1e39f4 3rd party 2018-06-28 14:24:44 +02:00
Roland Gruber 7b689e44a7 formatting and removed extra license file 2018-06-28 14:24:27 +02:00
Roland Gruber 87b72f6995 3rd party 2018-06-28 14:02:28 +02:00
Roland Gruber 206eda9100 3rdParty 2018-06-28 13:52:44 +02:00
Roland Gruber 4316805413 Debian dependencies 2018-06-28 13:46:44 +02:00
Roland Gruber 558a8f774f reduced grid to minimum 2018-06-27 18:19:35 +02:00
Roland Gruber 516a6b7654 do not show duplicate devices for quota 2018-06-27 14:20:45 +02:00
Roland Gruber 9422d9d678 responsive layout 2018-06-25 18:07:26 +02:00
Roland Gruber 0445919f26 translation update 2018-06-22 22:02:31 +02:00
Roland Gruber 41e495a29c fixed rename issue 2018-06-21 21:06:37 +02:00
gruberroland 17dc6dc694
Merge pull request #50 from LDAPAccountManager/ckeditorUpdate
ckeditor update
2018-06-21 20:58:18 +02:00
Roland Gruber 380a26ab50 dependency 2018-06-20 10:17:21 +02:00
Roland Gruber c73b4392b0 checkout tag only 2018-06-20 09:50:45 +02:00
Roland Gruber a975c80404 6.4 2018-06-20 09:28:10 +02:00
Roland Gruber e51ee9c826 check for invalid configuration 2018-06-20 08:27:10 +02:00
Roland Gruber d707c525a4 ckeditor update 2018-06-17 18:07:19 +02:00
Roland Gruber 4df34f631c translation update 2018-06-16 10:48:31 +02:00
Roland Gruber 7a0ec1cafb sync groups 2018-06-15 19:04:29 +02:00
Roland Gruber 717f2fda41 added option to sync Windows groups 2018-06-15 19:03:51 +02:00
Roland Gruber 89a8c41f78 added sync with Windows members 2018-06-13 19:00:45 +02:00
Roland Gruber c83842ef40 changed config ordering 2018-06-11 17:48:43 +02:00
Roland Gruber 1b4e899755 translation update 2018-06-06 21:29:38 +02:00
Roland Gruber 6221b3650f 6.4 2018-06-04 18:37:46 +02:00
gruberroland 869858fd2c
Merge pull request #49 from etlel/develop
major correction of mistakes in the French translation
2018-06-03 17:50:28 +02:00
Louperivois 3aeea4f444 Correction of mistakes and inconsistencies in the French translation 2018-06-02 11:56:31 -04:00
Roland Gruber 29b51a287a updated standards 2018-05-31 09:23:06 +02:00
Roland Gruber 4940ba069f responsive design 2018-05-31 09:11:05 +02:00
Roland Gruber e2e75ece20 added local filtering 2018-05-31 08:58:30 +02:00
Roland Gruber dfc3dcb4c6 limit server side filtering to known attributes 2018-05-30 19:43:44 +02:00
Roland Gruber 97cb8bcce9 provide method to define server side filtering 2018-05-30 18:48:34 +02:00
Roland Gruber fc0c396f64 translation update 2018-05-29 18:04:44 +02:00
Roland Gruber 8e144b1e30 added options to sync Unix and group of names memberships 2018-05-28 18:43:15 +02:00
Roland Gruber 38bfa53285 check CN for duplicates 2018-05-27 18:25:00 +02:00
Roland Gruber 133d554916 check for existing email address 2018-05-22 19:55:49 +02:00
Roland Gruber 6dfc06931a check user name 2018-05-20 09:31:06 +02:00
Roland Gruber a73b8777f2 support "," in DN 2018-05-20 08:22:51 +02:00
Roland Gruber daefa6cdb8 responsive tools 2018-05-19 14:00:53 +02:00
Roland Gruber 179f08ddb2 responsive tools 2018-05-19 13:26:35 +02:00
Roland Gruber dd2308f780 responsive tools 2018-05-19 11:14:31 +02:00
Roland Gruber 8e083898e2 responsive tools 2018-05-19 09:48:12 +02:00
Roland Gruber 88a2bb9479 responsive tools 2018-05-19 08:15:34 +02:00
Roland Gruber d5c1e06bac responsive tools 2018-05-17 19:56:58 +02:00
Roland Gruber cd8dab077e responsive tools 2018-05-17 19:40:17 +02:00
Roland Gruber 2dab545449 removed id 2018-05-17 19:11:24 +02:00
Roland Gruber c5f045ced8 more obfuscation 2018-05-16 19:23:26 +02:00
Roland Gruber 8ec7c2136f updated normalize 2018-05-16 18:27:35 +02:00
Roland Gruber a0c8f5b1e7 added image cropping 2018-05-16 18:00:54 +02:00
Louperivois cda5da41ea Correction of mistakes and inconsistencies in the French translation 2018-05-12 12:42:31 -04:00
Roland Gruber ac70ea60e3 image cropping 2018-05-12 16:41:52 +02:00
Roland Gruber 137ef0721f added cropping support 2018-05-12 10:43:32 +02:00
Roland Gruber 5ec89293b2 require imagick 2018-05-12 09:39:29 +02:00
Roland Gruber ffaa7d5bac fixed scrolling 2018-05-12 09:22:23 +02:00
Louperivois 5d9f12bfd9 major correction of mistakes in the French translation 2018-05-10 22:48:45 -04:00
Roland Gruber 35d580f217 responsive tools 2018-05-10 09:06:19 +02:00
Roland Gruber c30045b3ad changed warning message 2018-05-10 08:00:45 +02:00
Roland Gruber 26356262aa responsive tools 2018-05-08 20:11:53 +02:00
Roland Gruber 38164082ce responsive 2018-05-02 20:29:47 +02:00
Roland Gruber 06612960c9 responsive 2018-05-02 20:26:10 +02:00
Roland Gruber 26c3dcdc8e 6.4 2018-05-01 10:16:05 +02:00
gruberroland 20bee9f684
Merge pull request #48 from LDAPAccountManager/php7.2
Php7.2
2018-05-01 10:11:01 +02:00
Roland Gruber bb38fe42a7 new PHPUnit 2018-05-01 10:08:05 +02:00
Roland Gruber f9198ce9e1 added additional test 2018-05-01 09:51:41 +02:00
Roland Gruber 7959b1dc5d PHP 7.2 2018-05-01 09:42:50 +02:00
Roland Gruber 7b9726a2d3 PHP 7.2 2018-05-01 09:41:30 +02:00
Roland Gruber 774334aa88 updated tests 2018-05-01 09:34:56 +02:00
Roland Gruber 735a7d3554 PHP 7.2 compatibility 2018-04-30 19:32:47 +02:00
Roland Gruber 632d3a26bd PHP 7.2 compatibility 2018-04-30 19:29:31 +02:00
Roland Gruber a9ac81352e removed create_function 2018-04-29 20:51:29 +02:00
Roland Gruber ecb9cb2dfe tests for masort() 2018-04-29 19:21:49 +02:00
Roland Gruber ae296aa3b9 PHP 7.2 2018-04-25 19:53:03 +02:00
Roland Gruber 2a02a26c16 IMAP file upload 2018-04-22 21:29:44 +02:00
Roland Gruber e171042b9f fixed column overview 2018-04-22 21:25:10 +02:00
Roland Gruber bca8100d0a responsive upload 2018-04-18 19:30:45 +02:00
Roland Gruber c0df2e6a27 responsive upload 2018-04-18 19:08:51 +02:00
Roland Gruber 9e71a67953 responsive upload 2018-04-18 18:43:29 +02:00
Roland Gruber fad14da5f7 new input elements 2018-04-17 21:01:20 +02:00
Roland Gruber d328f19f0a responsive 2018-04-16 20:46:09 +02:00
Roland Gruber e3793cd78f responsive table padding 2018-04-16 20:45:49 +02:00
Roland Gruber be4292bbbb help for subtitles 2018-04-16 20:45:29 +02:00
Roland Gruber 7128404409 password expiration 2018-04-15 19:03:50 +02:00
Roland Gruber a1fa476517 password expiration 2018-04-15 18:37:38 +02:00
Roland Gruber 08d87af41a fixed icons 2018-04-15 10:46:20 +02:00
Roland Gruber 743c7b9559 show modules for force password change 2018-04-15 10:42:02 +02:00
Roland Gruber 5d9beec96d checkboxes support classes 2018-04-15 10:33:44 +02:00
Roland Gruber 5b578cee53 fixed PHP notice 2018-04-14 16:33:10 +02:00
Roland Gruber ff4a77a738 wildcards and profile options for mail routing 2018-04-14 16:07:13 +02:00
Roland Gruber 7541a15193 allow to move account type position 2018-04-11 19:52:32 +02:00
Roland Gruber 7d35991bb4 print DN if uid already exists 2018-04-11 18:40:44 +02:00
Roland Gruber 10f881c323 external password check 2018-04-11 18:17:18 +02:00
Roland Gruber 38d12b349d 6.4 2018-04-10 21:41:03 +02:00
Roland Gruber fa67431df3 external password check 2018-04-10 21:32:26 +02:00
Roland Gruber 78bfff3bb8 6.4 2018-04-10 19:46:57 +02:00
Roland Gruber b5a37edc98 PHP 7.2 2018-04-10 19:46:41 +02:00
Roland Gruber 5f01264521 changed filter for loading the account 2018-04-05 18:41:44 +02:00
Roland Gruber 7de8db855c added note aabout SSH LDAP auth command 2018-03-24 09:52:56 +01:00
Roland Gruber 73c799f90a translation update 2018-03-20 18:20:02 +01:00
Roland Gruber fe1547e145 typo 2018-03-19 18:10:38 +01:00
Roland Gruber 5a13e3898c policy update 2018-03-19 18:07:16 +01:00
Roland Gruber 32759c45cb 6.3 2018-03-19 18:01:31 +01:00
Roland Gruber 79acfbf185 6.3 2018-03-18 08:48:03 +01:00
Roland Gruber 993751c7ff changed CSRF token handling from GET to POST 2018-03-14 20:06:09 +01:00
Roland Gruber ca358b3975 translation update 2018-03-14 18:37:44 +01:00
Roland Gruber d4f0d6db96 check input 2018-03-12 19:53:41 +01:00
Roland Gruber 16fc7f7e86 check input 2018-03-12 19:48:56 +01:00
Roland Gruber 0f09b6c6d9 get group name from more modules 2018-03-12 19:22:04 +01:00
Roland Gruber f1d7aec5fc check request values 2018-03-12 19:08:39 +01:00
Roland Gruber a5f9412ee3 6.3 2018-03-11 10:52:56 +01:00
Roland Gruber 8bbb4d774a fixed checkbox selector 2018-03-11 10:44:52 +01:00
Roland Gruber eb99b37ddb set secure flag for session cookie 2018-03-10 18:48:11 +01:00
Roland Gruber 0181bed466 translation update 2018-03-08 19:06:57 +01:00
Roland Gruber cc651ec3e0 translation update 2018-03-04 15:42:50 +01:00
Roland Gruber e037373dc0 new settings 2018-03-04 10:10:53 +01:00
Roland Gruber a85dfefed2 Unix reconfiguration 2018-03-04 09:57:14 +01:00
Roland Gruber c3370a8ec2 fixed import 2018-03-04 09:43:32 +01:00
Roland Gruber 45c1ade0f1 fixed PDF 2018-03-04 09:43:16 +01:00
Roland Gruber 1a37568520 fix for file upload 2018-03-04 09:37:32 +01:00
Roland Gruber f9e6247158 config options for subtypes 2018-03-03 17:44:28 +01:00
Roland Gruber d12724179b sync group of names must be global option 2018-03-03 17:04:40 +01:00
Roland Gruber 5925c71503 removed advanced options accordion 2018-03-03 10:28:44 +01:00
Roland Gruber 2d2be02b34 fixed PHP error on old versions 2018-03-03 10:28:21 +01:00
Roland Gruber fe44f7b13c fixed showing of auto-sync option 2018-02-25 10:46:22 +01:00
Roland Gruber 351735e073 support subtypes 2018-02-25 10:32:06 +01:00
Roland Gruber 596355e959 config settings for each account subtype 2018-02-24 15:15:07 +01:00
Roland Gruber 618c9604e0 fix for new schema namespace 2018-02-24 15:14:36 +01:00
Roland Gruber dfd1748810 check for unique label 2018-02-24 14:18:15 +01:00
Roland Gruber 0b5e5f35a1 captcha support 2018-02-11 11:26:52 +01:00
Roland Gruber 6049be786f better logging 2018-02-11 10:27:23 +01:00
Roland Gruber a1fbae2f14 captcha 2018-02-10 17:31:03 +01:00
Roland Gruber 049f3760b8 typo 2018-02-09 20:35:06 +01:00
Roland Gruber fb364cbeb7 display DN of group of names 2018-02-09 20:33:35 +01:00
Roland Gruber 8b89cfc4db fixed font parameter 2018-02-09 20:32:44 +01:00
Roland Gruber 8ed53444f7 2018 2018-02-06 19:05:44 +01:00
gruberroland 8ea9904a5f
Merge pull request #45 from LDAPAccountManager/6_2_1_merge
6 2 1 merge
2018-02-06 19:00:43 +01:00
Roland Gruber f0b68d2b1a Merge remote-tracking branch 'origin/develop' into 6_2_1
Conflicts:
	lam-packaging/debian/changelog
	lam/HISTORY
	lam/VERSION
2018-02-06 18:57:46 +01:00
Roland Gruber c7462fa862 6.2.1 2018-02-04 17:45:12 +01:00
Roland Gruber 93a409babd #44 fixed login issue
# Conflicts:
#	lam/HISTORY
2018-02-04 17:29:10 +01:00
Roland Gruber 24dfcd1f4a fixed certificate buttons 2018-02-04 17:17:18 +01:00
Roland Gruber 75abda70ca fixed certificate buttons 2018-02-02 18:58:23 +01:00
Roland Gruber dd0ba120ca user name suggestions: clean umlauts and special characters only in LDAP
values
2018-01-17 17:39:31 +01:00
Roland Gruber 44eb1b93d2 #44 fixed login issue 2018-01-16 18:31:52 +01:00
Roland Gruber fa9f2490ec responsive 2018-01-13 19:58:55 +01:00
Roland Gruber 3b8addba5e type hints 2018-01-12 18:00:18 +01:00
Roland Gruber 999e22a2d1 responsive schema browser 2018-01-12 17:57:32 +01:00
Roland Gruber 05fac42d77 refactoring 2018-01-08 18:42:55 +01:00
Roland Gruber 12cf9e61da refactoring 2018-01-07 17:44:50 +01:00
Roland Gruber c370ab7e09 refactoring 2018-01-07 17:33:46 +01:00
Roland Gruber 7db09169be refactoring 2018-01-07 17:19:28 +01:00
Roland Gruber 5f714c4ab5 refactoring 2018-01-07 17:00:02 +01:00
Roland Gruber 6f6feade86 responsive 2018-01-06 18:17:50 +01:00
Roland Gruber c63b03ff2f fixed menu width 2018-01-03 19:00:41 +01:00
Roland Gruber 5ee8a052ac responsive 2018-01-03 18:40:51 +01:00
Roland Gruber b71ae14684 responsive 2018-01-03 18:03:00 +01:00
Roland Gruber 63c72daa63 responsive 2018-01-02 21:42:02 +01:00
Roland Gruber 21d0b7eb02 referential integrity overlay 2017-12-31 13:48:16 +01:00
Roland Gruber 39e5cf1985 referential integrity 2017-12-31 12:53:30 +01:00
Roland Gruber 4b4b9892d4 referential integrity overlay 2017-12-31 12:37:50 +01:00
Roland Gruber fc0b65468a custom types 2017-12-31 10:52:33 +01:00
Roland Gruber d9a8f16e78 custom base type 2017-12-30 17:07:49 +01:00
Roland Gruber 124f563090 custom types 2017-12-30 15:05:33 +01:00
Roland Gruber 9fa744ddb5 dynamic lists 2017-12-22 11:56:03 +01:00
Roland Gruber 3c07a0e878 added type id 2017-12-22 10:43:02 +01:00
Roland Gruber 7541cf63fe fixed font weight in table 2017-12-22 10:42:09 +01:00
Roland Gruber 7223e997f2 also read hidden attributes 2017-12-22 10:41:31 +01:00
Roland Gruber 574ddbcbb6 added type id to get LDAP filter 2017-12-22 09:41:52 +01:00
Roland Gruber ea33f2f5ac use type ids for config check 2017-12-20 20:44:08 +01:00
Roland Gruber 1e51b59cf9 dynamic lists 2017-12-20 18:47:28 +01:00
Roland Gruber b57230faf2 added explanation and fixed K/M/G/T 2017-12-20 18:26:12 +01:00
Roland Gruber 854231d0e2 use type id in $allScopes 2017-12-18 21:52:24 +01:00
Roland Gruber 07b885a2ad responsive settings 2017-12-17 12:03:43 +01:00
Roland Gruber b6d130ce14 responsive settings 2017-12-17 11:44:49 +01:00
Roland Gruber 9efa8507df responsive show/hide for checkboxes 2017-12-17 11:44:28 +01:00
Roland Gruber 400827889a responsive settings 2017-12-17 09:59:07 +01:00
Roland Gruber 30a7865daf support help module setting 2017-12-16 16:20:37 +01:00
Roland Gruber 55e5ddae3f PHPdoc 2017-12-16 15:47:06 +01:00
Roland Gruber 7397be0ee1 smaller title 2017-12-15 16:58:54 +01:00
Roland Gruber 47caf8bdc5 fix for rich-edit 2017-12-15 16:53:53 +01:00
Roland Gruber bb89fa334b added validation rules 2017-12-15 16:52:56 +01:00
Roland Gruber c87a7dc1f2 6.3 2017-12-13 17:16:30 +01:00
Roland Gruber 4dc1fc16d5 check for duplicate call 2017-12-13 17:05:17 +01:00
Roland Gruber 40c9d92b9a typo 2017-12-13 16:51:19 +01:00
Roland Gruber 046a29d7d5 deliver CSS/JS as one file 2017-12-13 16:47:52 +01:00
Roland Gruber 564fc2ed7f docs 2017-12-13 16:09:26 +01:00
Roland Gruber db504da5d7 error handling 2017-12-13 12:31:26 +01:00
Roland Gruber 68cd9b53aa fixed issue when no type was preselected 2017-12-13 11:06:57 +01:00
Roland Gruber b541460231 error handling 2017-12-13 10:59:38 +01:00
Roland Gruber 3eaeaa6c30 fixed missing types 2017-12-13 10:59:16 +01:00
Roland Gruber c8cd42eddc policy 2017-12-13 10:20:39 +01:00
Roland Gruber d5cd6a678c 6.2 2017-12-13 10:11:46 +01:00
Roland Gruber 0ec5c8ce7e margin for textarea 2017-12-06 19:21:59 +01:00
Roland Gruber e949577727 CSS class support for responsive row and width selection for responsive
table
2017-12-06 18:30:44 +01:00
Roland Gruber ecdd731b3a avoid text overflow 2017-12-06 17:36:34 +01:00
gruberroland 839941187c
Merge pull request #43 from LDAPAccountManager/responsiveSettings
Responsive settings
2017-12-04 21:06:18 +01:00
Roland Gruber 1101f50908 layout fix 2017-12-04 18:31:19 +01:00
Roland Gruber e6f43db732 copyright 2017-12-02 18:09:59 +01:00
Roland Gruber 6be073de49 responsive settings 2017-12-02 18:07:33 +01:00
Roland Gruber 059d987cc9 responsive settings 2017-12-02 17:51:59 +01:00
Roland Gruber c61c2dac54 responsive settings 2017-12-02 15:59:36 +01:00
Roland Gruber 7271354247 responsive settings 2017-12-02 14:53:31 +01:00
Roland Gruber 913f49f71c translation update 2017-12-01 18:20:09 +01:00
Roland Gruber 0a2a75c88e translation update 2017-11-29 18:18:31 +01:00
Roland Gruber 281938613f 6.2 2017-11-28 19:14:00 +01:00
Roland Gruber 767a296de1 translation update 2017-11-28 18:12:33 +01:00
Roland Gruber 06952795cd standards 4.1.1 2017-11-27 18:52:18 +01:00
Roland Gruber 7dbfbb4bbe license update 2017-11-27 18:46:35 +01:00
Roland Gruber 2484a335e4 fixed build 2017-11-27 18:34:20 +01:00
Roland Gruber 942498f163 6.2 2017-11-27 18:27:14 +01:00
Roland Gruber f882a8bc42 translation update 2017-11-27 18:13:40 +01:00
Roland Gruber ee795fa42e better help support 2017-11-27 18:11:38 +01:00
Roland Gruber 150e6158dc fixed host options 2017-11-25 17:55:29 +01:00
Roland Gruber 7521164800 responsive settings 2017-11-25 17:51:13 +01:00
Roland Gruber 016ef337df responsive settings 2017-11-25 17:40:31 +01:00
Roland Gruber 9dd005ce5a responsive settings 2017-11-25 17:06:29 +01:00
Roland Gruber c688217165 do not escape label 2017-11-25 17:05:54 +01:00
Roland Gruber 0952a461cc support array of module options 2017-11-25 14:44:12 +01:00
Roland Gruber 75599c21d6 responsive settings 2017-11-25 14:35:22 +01:00
Roland Gruber 97e4a55e03 allow longer label text for checkboxes 2017-11-25 14:34:42 +01:00
Roland Gruber 86a2a1c8de responsive settings 2017-11-25 11:39:34 +01:00
Roland Gruber 2d991a420d support larger icons 2017-11-25 11:38:52 +01:00
Roland Gruber a1bee10fd1 generic way for initial focus 2017-11-24 19:22:11 +01:00
Roland Gruber 985acfb5f2 LAM Pro hint 2017-11-23 18:40:04 +01:00
Roland Gruber 2ff684d3af translation update 2017-11-23 18:15:22 +01:00
Roland Gruber 1dea64098d hidden tools formatting 2017-11-21 20:11:59 +01:00
Roland Gruber bdcacc1d55 responsive design 2017-11-21 20:02:36 +01:00
Roland Gruber c0f0dc0412 typos 2017-11-21 18:17:03 +01:00
Roland Gruber 7654fdfd3c set ssl variables also when session not yet exists 2017-11-19 10:31:26 +01:00
Roland Gruber d0f6befa7e support number fields with min/max 2017-11-19 10:13:41 +01:00
Roland Gruber 56fe32cad6 #42 fixed PHP notice in LM hash 2017-11-14 20:42:52 +01:00
Roland Gruber 7146be7ecf responsive design 2017-11-12 11:45:36 +01:00
Roland Gruber 213c973dd9 common functions for config pages 2017-11-11 16:39:53 +01:00
Roland Gruber 83074b5fb4 added icon 2017-11-11 15:12:43 +01:00
Roland Gruber ff8fd54b91 fixed photo deletion 2017-11-07 20:28:38 +01:00
Roland Gruber ab78756094 responsive layout 2017-11-05 18:47:15 +01:00
Roland Gruber c5558b4ddf htmlSpan 2017-11-05 18:46:11 +01:00
Roland Gruber a453e67402 unique icon for module settings 2017-11-05 11:00:25 +01:00
Roland Gruber ef5a689938 responsive layout 2017-11-05 10:49:33 +01:00
Roland Gruber ce68219e6a refactoring 2017-11-04 19:27:02 +01:00
Roland Gruber ed325fcab6 responsive layout 2017-11-04 15:09:29 +01:00
Roland Gruber 8d78f0d040 removed obsolete code 2017-11-04 13:49:26 +01:00
Roland Gruber 0becd907f6 use central function to include CSS/JS 2017-11-04 11:29:38 +01:00
Roland Gruber 78c4043927 responsive config login 2017-11-04 10:49:28 +01:00
Roland Gruber 97dc46fb7d removed obsolete scripts 2017-11-04 09:12:47 +01:00
Roland Gruber d143e59889 responsive main configuration 2017-11-03 18:53:10 +01:00
Roland Gruber 8d601c57ff responsive table 2017-11-02 20:05:57 +01:00
Roland Gruber 45e37db836 responsive update 2017-11-01 19:41:29 +01:00
Roland Gruber 93d26f97cb moved responsive CSS classes to separate file 2017-11-01 13:55:02 +01:00
Roland Gruber c0d146d6e1 responsive design 2017-11-01 13:45:20 +01:00
Roland Gruber aab3658deb added doc 2017-11-01 10:35:41 +01:00
Roland Gruber 94fdfca094 added PDF 2017-11-01 10:17:34 +01:00
Roland Gruber 21d7a381b7 updated grid and responsive login page 2017-10-31 15:22:34 +01:00
gruberroland 0d0cb17ae1
Merge pull request #41 from LDAPAccountManager/JobResultLog
Job result log
2017-10-29 16:37:40 +01:00
Roland Gruber a7f1166ede job dry-run 2017-10-29 16:35:22 +01:00
Roland Gruber faac345f53 new job logger 2017-10-29 16:26:25 +01:00
Roland Gruber ea30293724 new job logging 2017-10-29 15:55:00 +01:00
Roland Gruber 57c169e700 added isDebugLoggingEnabled() 2017-10-29 11:33:07 +01:00
Roland Gruber 4cb8aec794 changed logging 2017-10-25 20:40:28 +02:00
Roland Gruber 6a3f31aa30 added error handler for Ajax call 2017-10-25 20:38:39 +02:00
Roland Gruber fce8908a72 refactoring 2017-10-24 21:06:18 +02:00
Roland Gruber f1decc1f4c refactoring 2017-10-24 20:48:34 +02:00
Roland Gruber 8629b5d867 refactoring 2017-10-24 20:43:28 +02:00
Roland Gruber 09fd516f9f updated images 2017-10-23 18:12:46 +02:00
gruberroland 8e8437a4aa Merge pull request #40 from LDAPAccountManager/tcpdf
Tcpdf
2017-10-23 18:05:36 +02:00
Roland Gruber 6b97541530 added font selection 2017-10-23 17:58:08 +02:00
Roland Gruber 8ccaf564ed support saving default value in local storage 2017-10-22 19:45:54 +02:00
Roland Gruber 4544259dd4 CJK fonts 2017-10-22 19:17:03 +02:00
Roland Gruber 164c6c005e better formatting of postal addres in PDF 2017-10-22 17:21:00 +02:00
Roland Gruber 44fbc4b507 removed old fonts 2017-10-22 17:10:13 +02:00
Roland Gruber 061bb0d38f removed FPDF 2017-10-22 16:58:44 +02:00
Roland Gruber 8f03835019 added TCPDF 2017-10-22 15:26:52 +02:00
Roland Gruber 21a305bf4f refactoring 2017-10-22 10:32:56 +02:00
Roland Gruber c5a0be924c quota: allow k/m/g/t/K/M/G/T 2017-10-21 21:37:40 +02:00
Roland Gruber b3a5e0603e fixed profile check 2017-10-21 21:37:07 +02:00
Roland Gruber 2c14a5ae61 support to store default profile for new users 2017-10-20 20:26:35 +02:00
gruberroland 54bf006d5c Merge pull request #39 from LDAPAccountManager/expireStatus
Expire status
2017-10-19 19:46:10 +02:00
Roland Gruber c7bc9ee258 doc update 2017-10-19 19:44:13 +02:00
Roland Gruber a52f4f1e5d Windows expiration 2017-10-19 19:32:22 +02:00
Roland Gruber fb08739441 check shadow password expiration 2017-10-17 17:46:04 +02:00
Roland Gruber f1fc0c1fba added expired to status selction 2017-10-17 17:22:22 +02:00
Roland Gruber 7e450ebdfa changed label 2017-10-16 19:54:44 +02:00
Roland Gruber e60aaf1a77 show expiration status 2017-10-16 19:51:27 +02:00
Roland Gruber e7898c4326 removed obsolete mt_srand 2017-10-16 19:50:44 +02:00
Roland Gruber 696ec86674 allow to build branches 2017-10-15 10:53:07 +02:00
Roland Gruber 66a1b43565 expiration status 2017-10-15 10:22:19 +02:00
Roland Gruber ddf2e22e91 fixed 1673595 2017-10-13 06:54:41 +02:00
Roland Gruber fc63f9fe91 updated priority 2017-10-13 06:48:57 +02:00
Roland Gruber ecfb9879e4 removed obsolete convertHex2bin() 2017-10-10 18:55:43 +02:00
Roland Gruber b227a55a2b central function for LDAP connect 2017-10-07 14:45:15 +02:00
Roland Gruber 4f3eb2f7bb fixed import of yet untrusted certificates 2017-10-07 10:47:42 +02:00
Roland Gruber 1a1d28a8af allow to set token if not yet done 2017-10-07 09:58:05 +02:00
Roland Gruber 6781fb1964 shorter login name 2017-10-03 10:17:51 +02:00
Roland Gruber 06f145d6a9 move rpmsign to the end 2017-09-28 18:21:10 +02:00
Roland Gruber 6c65c774f4 6.2 2017-09-28 18:13:11 +02:00
Roland Gruber 18e5206b26 Debian update 2017-09-28 17:57:46 +02:00
Roland Gruber fcb3553e6e added hint for kadmin wrapper script 2017-09-24 10:05:20 +02:00
Roland Gruber d521f60f66 Merge branch 'develop' of git@github.com:LDAPAccountManager/lam.git into develop 2017-09-24 09:49:02 +02:00
Roland Gruber 38cf0b2108 fixed issue when saving '0' values 2017-09-24 09:48:42 +02:00
gruberroland cc0002e833 Merge pull request #38 from LDAPAccountManager/release-6.2
Release 6.2
2017-09-23 09:59:07 +02:00
Roland Gruber be24c5a3ca Merge remote-tracking branch 'origin/develop' into release-6.2
Conflicts:
	lam/HISTORY
2017-09-23 09:55:19 +02:00
Roland Gruber a5522c29ab SASL support for self service 2017-09-22 19:52:57 +02:00
Roland Gruber 9f91009174 6.1 2017-09-19 18:26:58 +02:00
Roland Gruber 6ec7fb87f3 refactoring 2017-09-18 19:47:27 +02:00
Roland Gruber 93e69bfb4c refactoring 2017-09-18 19:39:08 +02:00
Roland Gruber e37f3e3dc4 translation update 2017-09-18 19:26:51 +02:00
Roland Gruber e468e10a29 foreach loops 2017-09-17 12:33:33 +02:00
Roland Gruber 5cdcc495f4 use foreach 2017-09-17 11:25:11 +02:00
Roland Gruber e0fd0c8a51 added images + doc 2017-09-17 10:27:50 +02:00
Roland Gruber d7f967352b added type hinting 2017-09-17 10:17:13 +02:00
Roland Gruber 166c9b285a removed TODOs 2017-09-17 09:59:21 +02:00
Roland Gruber b89a227f7c new remote API 2017-09-17 09:40:05 +02:00
Roland Gruber e899bf8c82 new remote API 2017-09-17 09:21:37 +02:00
Roland Gruber 749021a175 use proper namespace and class 2017-09-16 22:16:35 +02:00
Roland Gruber f2c78d6992 added newline 2017-09-16 22:08:57 +02:00
Roland Gruber 1411aa4863 new phpseclib 2017-09-16 16:55:21 +02:00
Roland Gruber 0e251a3244 update to phpseclib 2.0.6 2017-09-16 15:09:25 +02:00
Roland Gruber aa435cecfb removed obsolete magic_quotes_gpc handling 2017-09-16 13:31:59 +02:00
Roland Gruber c8d36eadd7 PHP 5.6 and IE 11 2017-09-16 09:58:08 +02:00
Roland Gruber 29d3e2560f nginx PHP 7 config 2017-09-08 21:10:11 +02:00
Roland Gruber fb25095248 fixed PHP version 2017-09-08 07:32:00 +02:00
Roland Gruber 9a19bc85f3 translation update 2017-09-07 21:52:22 +02:00
Roland Gruber b3bbc87736 fixed storing config 2017-09-07 07:17:52 +02:00
Roland Gruber 7e8bea25d5 6.1 2017-09-05 19:36:06 +02:00
Roland Gruber e0865608a2 CRYPT-SHA512 2017-09-05 19:32:42 +02:00
Roland Gruber e9d658e4bd translation update 2017-09-05 18:38:33 +02:00
Roland Gruber 9a5ec3d8c3 custom fields constants 2017-09-05 07:21:22 +02:00
Roland Gruber 6bb5249bf1 upload API change 2017-09-02 13:03:36 +02:00
Roland Gruber 264d8ea26c newline 2017-08-28 19:32:49 +02:00
Roland Gruber efa6846dfe gitignore 2017-08-28 19:30:43 +02:00
Roland Gruber 8661d9612a more tests 2017-08-28 19:29:30 +02:00
Roland Gruber f1ebe371d7 custom fields constants 2017-08-27 22:10:14 +02:00
Roland Gruber 8ef708b43f 193 2017-08-27 09:49:59 +02:00
Roland Gruber a6bca40ea4 PHP 7 nginx 2017-08-27 09:48:54 +02:00
Roland Gruber 29ebf207a5 #193 fixed PHP7 issue on nginx 2017-08-27 09:37:28 +02:00
Roland Gruber ec308f3b20 added auto-trimming 2017-08-26 11:42:48 +02:00
Roland Gruber 0c56824988 custom fields 2017-08-24 20:45:09 +02:00
Roland Gruber 485c04f092 fixed 5.4 issue and insert position for PDF editor 2017-08-24 20:29:55 +02:00
Roland Gruber d545622594 #192 fixed initial settings 2017-08-21 18:38:46 +02:00
Roland Gruber 1666b9d2fc 6.1 2017-08-20 19:40:31 +02:00
Roland Gruber 56fbf6ad74 fixed help in self service 2017-08-20 19:40:11 +02:00
Roland Gruber 25849a874c added syslog dependency 2017-08-16 21:09:06 +02:00
Roland Gruber e89b62c044 XML check 2017-08-16 19:25:53 +02:00
Roland Gruber 66e89f7acd 6.1 2017-08-15 10:32:24 +02:00
Roland Gruber 026f33a3da Merge branch 'develop' of git@github.com:LDAPAccountManager/lam.git into develop 2017-08-15 10:29:48 +02:00
Roland Gruber 463aaa2f4b fixed post modify 2017-08-15 10:29:30 +02:00
Roland Gruber 204798567f fixed variable 2017-07-20 21:22:35 +02:00
Roland Gruber 3b9f847ca6 fixed email 2017-07-19 21:16:25 +02:00
Roland Gruber 88cd30ff05 6.0.1 2017-07-19 20:51:32 +02:00
Roland Gruber ae64c43e2f Patch 19: fixed multi-value input field 2017-07-19 20:33:28 +02:00
Roland Gruber b99aa5729d fixed issue with tool visibility 2017-07-16 20:48:46 +02:00
Roland Gruber d06035f1ce reduced icons 2017-07-05 17:54:10 +02:00
Roland Gruber bacd10dedb reduced icons 2017-07-05 17:53:22 +02:00
Roland Gruber b78dc34d36 allow types to define their custom icon 2017-07-05 17:44:18 +02:00
Roland Gruber f24fcf853b removed obsolete locking code 2017-07-05 17:11:38 +02:00
Roland Gruber 85e8b3e739 remove outdated entries 2017-07-03 20:23:49 +02:00
Roland Gruber 499c6b6a2c fixed issues with duplicating empty type and module settings 2017-07-02 09:35:27 +02:00
gruberroland 7264498645 Merge pull request #34 from LDAPAccountManager/pdf_xml
Pdf xml
2017-07-02 09:05:21 +02:00
Roland Gruber 642f24fcee new PDF writing API 2017-07-02 09:00:14 +02:00
Roland Gruber 3a4e208cf9 new API: remove entries and sections 2017-07-01 11:21:53 +02:00
Roland Gruber e9bfa90336 new API: add section entries 2017-07-01 09:59:51 +02:00
Roland Gruber 677a34e9a9 migration to new PDF API 2017-07-01 09:50:49 +02:00
Roland Gruber b900f52a4c fixed missing time zone 2017-06-27 20:23:04 +02:00
Roland Gruber ad6837c056 typo 2017-06-27 20:19:28 +02:00
Roland Gruber 9660af8f48 new output dir 2017-06-27 20:19:14 +02:00
Roland Gruber 3f1d91ce37 Merge branch 'develop' into pdf_xml 2017-06-26 18:58:12 +02:00
Roland Gruber d1e83fa973 6.0 2017-06-26 18:32:53 +02:00
Roland Gruber f47381828c removed old XML parser 2017-06-25 15:21:11 +02:00
Roland Gruber 6800df7985 new PDF API 2017-06-25 15:19:11 +02:00
Roland Gruber ba3782b685 new PDF API 2017-06-25 14:47:33 +02:00
Roland Gruber e4eed3c55d new PDF reader 2017-06-25 14:23:28 +02:00
Roland Gruber 77e592d1dc new PDF model 2017-06-25 09:49:11 +02:00
Roland Gruber af3c0965bf new PDF model 2017-06-25 09:47:32 +02:00
Roland Gruber b527ad253b fixed height of vertical tabs 2017-06-20 18:43:19 +02:00
Roland Gruber e515eb2019 translation update 2017-06-19 18:10:35 +02:00
Roland Gruber 6fc698b695 chmod 2017-06-15 11:08:51 +02:00
Roland Gruber 7a58c318a0 debhelper 2017-06-15 11:06:56 +02:00
Roland Gruber fb063beb2d fix rights 2017-06-15 11:05:18 +02:00
Roland Gruber 8adc56d47a updated debhelper level 2017-06-15 10:58:31 +02:00
Roland Gruber 350cda3f75 translation update 2017-06-15 10:52:33 +02:00
Roland Gruber bdc11ba121 fixed method signatures 2017-06-14 19:59:14 +02:00
Roland Gruber a7d9166ca2 6.0.RC2 2017-06-13 19:31:47 +02:00
Roland Gruber 613842e33a translation update 2017-06-13 19:24:35 +02:00
Roland Gruber ee7aea44eb fixed issue with self service 2017-06-12 17:49:15 +02:00
Roland Gruber 6d52216a09 new type API 2017-06-11 21:15:41 +02:00
Roland Gruber 6d91963df0 fixed PHP warnings 2017-06-11 21:04:16 +02:00
Roland Gruber bee01d1682 reordering 2017-06-07 19:39:01 +02:00
Roland Gruber 61eb284e27 translation update 2017-06-07 19:24:01 +02:00
Roland Gruber 1dd6dafe14 translation update 2017-06-06 19:46:20 +02:00
Roland Gruber 4d4248936a 6.0 2017-06-06 19:05:51 +02:00
Roland Gruber 4b3f65fc6f fixed double linking 2017-06-05 19:16:51 +02:00
Roland Gruber 368ba7b2c1 Revert "removed duplicate entry"
This reverts commit f572c8f25d.
2017-06-05 18:58:47 +02:00
Roland Gruber f572c8f25d removed duplicate entry 2017-06-05 18:47:30 +02:00
Roland Gruber dbaa6746de Courier 2017-06-05 18:28:24 +02:00
gruberroland ceaa4d6405 Merge pull request #33 from LDAPAccountManager/courier
Courier
2017-06-05 11:08:33 +02:00
Roland Gruber e0068e1f68 upload 2017-06-05 11:03:31 +02:00
Roland Gruber e64e7e3adf fixed upload 2017-06-05 11:03:20 +02:00
Roland Gruber bc3e1d4856 implemented except upload 2017-06-05 09:42:00 +02:00
Roland Gruber 7260bb5267 PHPdoc fixes 2017-06-05 09:39:29 +02:00
Roland Gruber 4130b1d880 initial checkin 2017-05-30 20:31:05 +02:00
Roland Gruber 41c35e23d1 translation update 2017-05-29 19:21:45 +02:00
Roland Gruber 619d37861c courier mail aliases 2017-05-29 19:01:36 +02:00
Roland Gruber 8cc6564540 fixed label for required multi-values 2017-05-29 19:00:32 +02:00
Roland Gruber 06136f1d5f custom fields selection with LDAP search 2017-05-25 11:40:06 +02:00
Roland Gruber 129338dfa6 refactoring 2017-05-25 11:00:58 +02:00
Roland Gruber e6dd937f32 fix for select with empty value 2017-05-25 09:49:05 +02:00
Roland Gruber fab16750a6 custom fields file upload 2017-05-21 13:35:41 +02:00
Roland Gruber 851f8b5bb7 new type API 2017-05-20 11:46:49 +02:00
Roland Gruber b57cdea3fc do not render empty help entries 2017-05-20 11:46:26 +02:00
Roland Gruber d3d6dfc032 new type API 2017-05-20 10:55:26 +02:00
Roland Gruber 824d3df9f9 provide type for upload 2017-05-20 10:04:09 +02:00
Roland Gruber c172acfa7b links 2017-05-20 09:21:15 +02:00
Roland Gruber 4e2fc18eda removed list of tables 2017-05-20 09:13:36 +02:00
Roland Gruber e423194cce Kopano support 2017-05-20 09:04:31 +02:00
Roland Gruber cc690fe34b Kopano 2017-05-17 20:34:57 +02:00
Roland Gruber c9e7973ed4 Kopano 2017-05-16 21:15:15 +02:00
Roland Gruber 7b57ca83c0 create base folders for pdf/profiles 2017-05-15 20:11:00 +02:00
Roland Gruber 3933081282 fixed password attribute 2017-05-13 17:58:02 +02:00
Roland Gruber a6952f1d9f "o" for self service 2017-05-13 11:10:38 +02:00
Roland Gruber eaa09a2799 new type API 2017-05-13 11:07:54 +02:00
Roland Gruber 5d10297448 new type API 2017-05-10 19:23:28 +02:00
Roland Gruber 0244dd9ff1 typo 2017-05-10 18:48:59 +02:00
Roland Gruber 2f5f0caff1 new type API 2017-05-08 19:59:28 +02:00
Roland Gruber 7b82372a2d support Windows lockoutTime 2017-05-07 13:26:41 +02:00
Roland Gruber 7169068d93 disable browser password managers 2017-05-06 15:41:38 +02:00
Roland Gruber 40b701a8bf new type API 2017-05-06 15:22:27 +02:00
Roland Gruber b886074693 fixed return value 2017-05-06 15:21:37 +02:00
Roland Gruber 09bd0720d5 #190 fixed PHP notice 2017-05-06 13:48:48 +02:00
Roland Gruber 711d5b3d77 new type API 2017-05-06 11:09:43 +02:00
Roland Gruber f60c37edcd new type API 2017-05-06 10:47:19 +02:00
Roland Gruber 9c9d8b3f09 new type API 2017-05-03 20:37:04 +02:00
Roland Gruber 056cbce9c3 new type API 2017-05-02 21:20:16 +02:00
Roland Gruber 51bb97ba38 new type API 2017-05-01 20:02:44 +02:00
Roland Gruber 50d472e96d new type API 2017-04-26 19:25:12 +02:00
Roland Gruber c51918907e new type API 2017-04-26 19:01:57 +02:00
Roland Gruber 1a16b3cd5b new type API 2017-04-26 18:22:05 +02:00
Roland Gruber 394faed7eb new type API 2017-04-25 20:14:59 +02:00
Roland Gruber cd4cc1ae26 new type API 2017-04-25 20:03:38 +02:00
Roland Gruber b4248bc898 new type API 2017-04-24 20:13:20 +02:00
Roland Gruber 94553967e5 new type API 2017-04-23 20:46:58 +02:00
Roland Gruber 9ac206a613 new type API 2017-04-22 16:14:15 +02:00
Roland Gruber 01f2d618f2 new type API 2017-04-22 15:59:07 +02:00
Roland Gruber a844d4d06d new type API 2017-04-22 11:57:57 +02:00
Roland Gruber 7d4dd7bda2 new type API 2017-04-22 11:25:25 +02:00
Roland Gruber cc997a625f new type API 2017-04-22 11:16:41 +02:00
Roland Gruber c01e6c242e added accountContainer when getting PDF fields 2017-04-22 10:52:31 +02:00
Roland Gruber 9a8f264450 removed obsolete code 2017-04-22 10:22:46 +02:00
Roland Gruber e01e3f0e1a allow to set CSS classes on links 2017-04-20 18:26:56 +02:00
Roland Gruber 515a153286 added account expiration date to PDF fields 2017-04-18 18:28:10 +02:00
Roland Gruber f4ce9c1299 fixed required check 2017-04-17 20:29:31 +02:00
Roland Gruber 077f81be49 changed conditions 2017-04-17 19:53:07 +02:00
Roland Gruber 6676cac168 be more failure tolerant 2017-04-17 19:30:34 +02:00
Roland Gruber 50b721c7ef fixed return code 2017-04-17 19:12:11 +02:00
Roland Gruber 7919b3f150 be more error tolerant 2017-04-17 12:02:23 +02:00
Roland Gruber cf850c8057 fixed typo 2017-04-17 11:59:40 +02:00
Roland Gruber c5a47f1691 do not enable PHP by default (done by PHP package itself) 2017-04-17 11:52:18 +02:00
Roland Gruber 02a69aace8 removed old conf.d support 2017-04-17 11:16:38 +02:00
Roland Gruber d7cb9f4b52 removed action module config 2017-04-17 11:12:21 +02:00
Roland Gruber e4a035a1c3 set default password 2017-04-16 19:02:49 +02:00
Roland Gruber d4a6bf00fa PHP 7.1 2017-04-16 19:01:53 +02:00
Roland Gruber 291c9ee14f Merge branch '5.7.1' into develop 2017-04-05 19:53:02 +02:00
Roland Gruber 997a4530e6 #188 fixed issue with self service Ajax requests 2017-04-05 19:49:14 +02:00
Roland Gruber e99f8dae36 replaced MCrypt with OpenSSL 2017-04-02 19:37:06 +02:00
Roland Gruber ee2bde16e9 5.8 2017-04-02 15:54:27 +02:00
Roland Gruber b13054d5b2 5.8 2017-04-02 15:45:57 +02:00
Roland Gruber 3be9e00e2a new minification 2017-04-02 15:42:57 +02:00
Roland Gruber dd17435a20 replaced YUI compressor 2017-04-02 15:35:06 +02:00
Roland Gruber fb1ab48b38 new type API 2017-04-02 15:34:45 +02:00
Roland Gruber 7d5310f588 fix for Edge 2017-04-02 14:32:18 +02:00
Roland Gruber 40bbb4736e fixed accordion 2017-04-02 13:19:40 +02:00
Roland Gruber 8b0dd38bfe new type API 2017-04-01 09:59:13 +02:00
Roland Gruber 267cdcb31b new type API 2017-04-01 09:57:03 +02:00
Roland Gruber 3a3c88ba4b added typeId for profile methods 2017-03-30 20:39:24 +02:00
Roland Gruber ef1eec558a new type API 2017-03-30 18:56:23 +02:00
Roland Gruber 953ea96aa0 typo 2017-03-30 18:55:52 +02:00
Roland Gruber e1b7be85a7 5.8.RC1 2017-03-27 18:58:53 +02:00
Roland Gruber 9b8d39d3dd translation update 2017-03-27 18:40:34 +02:00
Roland Gruber 9a4963c85b new type API 2017-03-25 20:25:20 +01:00
Roland Gruber 207c77b5f0 new type API 2017-03-24 18:23:52 +01:00
Roland Gruber daa51d1659 new type API 2017-03-22 20:17:52 +01:00
Roland Gruber 2f45affd69 ignore dot files on cleanup 2017-03-22 19:41:01 +01:00
Roland Gruber 0ac6fc6c2e new type API 2017-03-21 19:26:31 +01:00
Roland Gruber 6022dee5a0 new type API 2017-03-21 18:47:05 +01:00
Roland Gruber 2ce3618ca9 new type API 2017-03-20 21:12:08 +01:00
Roland Gruber 8161c897c6 fixed redirect 2017-03-20 21:11:42 +01:00
Roland Gruber 572935dde8 support multiple configs 2017-03-18 11:28:21 +01:00
Roland Gruber 4c04d67d02 removed obsolete code 2017-03-16 20:09:50 +01:00
gruberroland 4179b1bbe6 Merge pull request #29 from LDAPAccountManager/lam58
Lam58
2017-03-16 20:05:43 +01:00
Roland Gruber a92642795b new type API 2017-03-16 19:44:01 +01:00
Roland Gruber 599f5c4cda Merge branch 'develop' into lam58 2017-03-16 19:32:38 +01:00
Roland Gruber c51f2893ce 5.7 2017-03-14 18:27:06 +01:00
Roland Gruber baa8536560 new method to get modules of a type 2017-03-12 12:12:11 +01:00
gruberroland 0d15c8b9d7 Merge pull request #27 from LDAPAccountManager/icon
added icon
2017-03-11 11:40:46 +01:00
Roland Gruber f36226b2bb added icon 2017-03-11 11:38:22 +01:00
Roland Gruber effc028255 PHP version 2017-03-11 10:58:02 +01:00
Roland Gruber 036a16a031 fixed issues with empty (#26) 2017-03-08 17:19:44 +01:00
Roland Gruber bcfcd15e92 translation update 2017-03-07 19:02:52 +01:00
Roland Gruber 0e67958385 added missing new line 2017-03-06 19:35:33 +01:00
Roland Gruber b6ea9ec201 added namespace 2017-03-06 19:32:30 +01:00
Roland Gruber 6da80b323e added namespace 2017-03-06 19:18:58 +01:00
Roland Gruber a3d6ea07b4 added namespace 2017-03-06 19:16:02 +01:00
Roland Gruber cb1ffbef07 added namespace 2017-03-06 19:12:02 +01:00
Roland Gruber 706492cc54 translation update 2017-03-05 09:40:10 +01:00
Roland Gruber cb62f63cd8 department changes 2017-03-04 11:18:30 +01:00
Roland Gruber 4d6724430e switch to attribute name department instead of departmentNumber 2017-03-04 11:14:17 +01:00
Roland Gruber ad836591c5 2017 2017-03-02 20:50:17 +01:00
Roland Gruber 8fd5151521 chmod 2017-03-01 18:26:16 +01:00
Roland Gruber 2c71fb9c7b 5.7 2017-03-01 17:47:46 +01:00
Roland Gruber fa6360d5c8 5.7 2017-03-01 17:43:30 +01:00
Roland Gruber eced92fe0d 5.7 2017-03-01 17:35:40 +01:00
Roland Gruber 875cec5152 translation update 2017-02-27 20:15:03 +01:00
Roland Gruber 9a5ea26777 changed logout to be more fault tolerant 2017-02-27 19:25:47 +01:00
Roland Gruber 7bc0115b2a translation update 2017-02-25 13:46:52 +01:00
Roland Gruber 9fdbee4c0f translation update 2017-02-25 13:44:41 +01:00
Roland Gruber 453e0da077 #185 make comparing attribute values more strict 2017-02-21 19:57:50 +01:00
Roland Gruber f57a6a4b3c chmod 2017-02-20 18:41:46 +01:00
Roland Gruber 8f7b9c9c5a font links 2017-02-20 18:36:08 +01:00
Roland Gruber a7523916c1 DejaVu 2017-02-20 17:57:45 +01:00
Roland Gruber 7cab830b06 DejaVu font 2017-02-19 11:14:16 +01:00
gruberroland 7c94b6e13f Merge pull request #25 from LDAPAccountManager/new_pdf_api
New pdf api
2017-02-19 09:25:56 +01:00
Roland Gruber 8ab3996483 dependencies 2017-02-19 09:19:37 +01:00
Roland Gruber fc514c461f developer update 2017-02-19 09:16:06 +01:00
Roland Gruber d949b1bae4 PHPDoc update 2017-02-19 09:14:11 +01:00
Roland Gruber 7ccd41ef11 new PDF API 2017-02-18 21:10:06 +01:00
Roland Gruber 753b443656 added PDF namespace 2017-02-18 10:13:08 +01:00
Roland Gruber 809cb97f84 set correct head line 2017-02-18 09:59:57 +01:00
Roland Gruber ddeafb3503 replace internal PDF API 2017-02-15 21:45:26 +01:00
Roland Gruber 581eb84598 disable debug in tree because too much 2017-02-15 18:35:23 +01:00
Roland Gruber 835e28ef2b close 1628937 2017-02-12 10:58:57 +01:00
Roland Gruber d0d244b0a7 fixed 1632193 2017-02-12 10:50:29 +01:00
Roland Gruber 3c84fb1dbc dependencies 2017-02-12 10:49:02 +01:00
Roland Gruber e342a61d2d dependencies 2017-02-12 10:28:26 +01:00
gruberroland 968b6ebd22 Merge pull request #24 from LDAPAccountManager/2factor_auth
2factor auth
2017-02-11 22:37:24 +01:00
Roland Gruber c0ea7ecf34 2-factor documentation 2017-02-11 22:34:42 +01:00
Roland Gruber c475c66d60 2-factor 2017-02-11 22:07:38 +01:00
Roland Gruber 82bb3674fd get config for admin interface 2017-02-11 19:54:57 +01:00
Roland Gruber ac92e048fb refactoring 2017-02-11 19:39:05 +01:00
Roland Gruber 88050ca3f0 added 2-factor options 2017-02-11 18:16:08 +01:00
Roland Gruber f405f7910b check if user is logged in 2017-02-11 17:11:37 +01:00
Roland Gruber 5274f7d048 xinclude 2017-02-10 19:32:34 +01:00
Roland Gruber af265a3014 split howto 2017-02-10 19:30:10 +01:00
gruberroland b32ba7feb4 Merge pull request #23 from LDAPAccountManager/2factor_auth
2factor auth
2017-02-10 18:36:43 +01:00
Roland Gruber 5d54a7ea7b 2-factor authentication 2017-02-10 18:34:23 +01:00
Roland Gruber d2a1c917c2 5.6.6 2017-02-09 19:40:19 +01:00
Roland Gruber 6508042ec2 fixed issue when settings contain a ": " 2017-02-09 19:39:10 +01:00
Roland Gruber 1d8a6b3e28 fixed import 2017-02-08 18:49:27 +01:00
Roland Gruber 9eebadb5ca check 2nd factor 2017-02-08 18:45:15 +01:00
Roland Gruber 61f75e1dfa added more 2-factor options 2017-01-31 20:50:51 +01:00
Roland Gruber b3a917255d 2-factor authentication options 2017-01-30 20:02:31 +01:00
Roland Gruber 85bf6865cc gitignore 2017-01-28 17:54:48 +01:00
Roland Gruber 1c81c4c17e 5.6.5 2017-01-25 17:48:26 +01:00
Roland Gruber d39a29cc25 5.6.5 2017-01-23 19:58:48 +01:00
Roland Gruber afdc4b3f92 2factor authentication 2017-01-23 19:57:50 +01:00
Roland Gruber 16bc59f4c3 added curl 2017-01-22 20:37:56 +01:00
Roland Gruber 46477a829c trim upload input 2017-01-22 18:01:24 +01:00
Roland Gruber 936fb60b42 fixed template copy 2017-01-22 18:00:47 +01:00
Roland Gruber 71f4307745 allow subclassing 2017-01-15 11:02:18 +01:00
Roland Gruber d07a463e9a fixed account creation 2017-01-11 21:43:23 +01:00
Roland Gruber 89cfba1a24 fixed template copy 2017-01-11 21:27:28 +01:00
Roland Gruber f1fb0bf355 removed obsolete copying 2017-01-11 21:20:08 +01:00
Roland Gruber adcea47ce5 fixed case sensitivity 2017-01-11 21:01:37 +01:00
gruberroland 08771b3ffd Merge pull request #9 from LDAPAccountManager/type_api
new type API
2017-01-08 21:06:10 +01:00
Roland Gruber 17b71064ee support multiple type configs 2017-01-08 20:59:09 +01:00
gruberroland 841306c00c Merge pull request #22 from LDAPAccountManager/type_api_tmp
Type api tmp
2017-01-07 19:16:24 +01:00
Roland Gruber 6b643729d0 new type API 2017-01-07 19:14:29 +01:00
Roland Gruber 7d60eba628 removed obsolete code 2017-01-07 19:10:33 +01:00
Roland Gruber d6b9a28b58 new type API 2017-01-07 19:10:12 +01:00
gruberroland 94c4450e2c Merge pull request #20 from LDAPAccountManager/type_api_tmp
Type api tmp
2017-01-07 18:45:03 +01:00
Roland Gruber 84f2b43923 new type API for delete 2017-01-07 18:39:40 +01:00
Roland Gruber cdaa9a8a12 new type API for upload 2017-01-07 18:23:04 +01:00
gruberroland dede64d746 Merge pull request #19 from LDAPAccountManager/type_api_tmp
Type api tmp
2017-01-06 13:58:10 +01:00
Roland Gruber 9355b55982 init PDF and account profiles 2017-01-06 13:56:17 +01:00
Roland Gruber 752417f355 performance improvements 2017-01-06 11:38:52 +01:00
Roland Gruber 695f94e322 new type API for PDF 2017-01-06 10:11:47 +01:00
Roland Gruber 164433343c fixed select 2017-01-06 10:11:29 +01:00
Roland Gruber 61647ed008 PDF import with new type API 2017-01-05 21:40:48 +01:00
Roland Gruber 8774583532 new type API for PDF 2017-01-05 21:05:17 +01:00
Roland Gruber a9234c1537 new type API for PDF 2017-01-04 20:52:51 +01:00
gruberroland dba1cdcf96 Merge pull request #18 from LDAPAccountManager/type_api_tmp
new type API
2017-01-03 20:03:41 +01:00
Roland Gruber 22cfb56f60 new type API 2017-01-03 20:02:29 +01:00
gruberroland 71ccfc7356 Merge pull request #17 from LDAPAccountManager/type_api_tmp
Type api tmp
2016-12-31 15:09:55 +01:00
Roland Gruber e93d59740c moved getSuffixList() 2016-12-31 14:44:46 +01:00
Roland Gruber 7027522950 new type API 2016-12-31 11:13:36 +01:00
Roland Gruber ccc2721f51 formatting 2016-12-31 11:00:47 +01:00
Roland Gruber b408538403 getSuffixList() no longer supports self service 2016-12-31 10:55:56 +01:00
Roland Gruber 7f6574af8c move reading of suffix list 2016-12-31 10:43:31 +01:00
gruberroland 6b6cd4538f Merge pull request #16 from LDAPAccountManager/type_api_tmp
Type api tmp
2016-12-29 20:13:56 +01:00
Roland Gruber a6330b41e2 new type API 2016-12-29 20:12:15 +01:00
Roland Gruber 23c1251009 new type API 2016-12-29 19:39:34 +01:00
gruberroland c8b1dfe35b Merge pull request #15 from LDAPAccountManager/type_api_tmp
Type api tmp
2016-12-28 20:01:14 +01:00
Roland Gruber da5661a0f9 configuration for multi-types 2016-12-28 19:53:49 +01:00
Roland Gruber fe21487a3b multi type support 2016-12-28 19:53:18 +01:00
Roland Gruber 769aea44ba multi type support 2016-12-28 19:52:57 +01:00
Roland Gruber cf872b330c fixed missing $types 2016-12-28 19:51:48 +01:00
Roland Gruber 5f699648d0 reset password 2016-12-28 18:26:17 +01:00
gruberroland 8a432792ee Merge pull request #14 from LDAPAccountManager/type_api_tmp
Type api tmp
2016-12-26 19:33:09 +01:00
Roland Gruber 294ab941b1 new type API 2016-12-26 19:28:34 +01:00
Roland Gruber cbdd69f7f6 new type API 2016-12-26 19:11:05 +01:00
Roland Gruber 0bf8702763 new type API 2016-12-26 18:41:22 +01:00
Roland Gruber fad7a009f0 html coverage 2016-12-26 18:31:55 +01:00
Roland Gruber 4417e5aff7 check if tests can be run 2016-12-26 18:16:49 +01:00
Roland Gruber 39fdc3e5d2 include path 2016-12-26 18:06:18 +01:00
Roland Gruber 56bc52a7a7 changed include paths 2016-12-26 18:01:08 +01:00
Roland Gruber 949bc2ad1b PHPUnit 2016-12-26 17:51:15 +01:00
Roland Gruber 35b91ce517 Merge remote-tracking branch 'origin/type_api' into type_api_tmp 2016-12-26 17:41:03 +01:00
Roland Gruber fe4fa15ee7 tests 2016-12-26 17:40:25 +01:00
Roland Gruber 59d22b6652 phpunit 2016-12-26 11:06:38 +01:00
Roland Gruber d862ff6300 phpunit 2016-12-26 11:05:30 +01:00
gruberroland aa1af9ed71 Merge pull request #13 from LDAPAccountManager/type_api_tmp
Type api tmp
2016-12-26 10:54:07 +01:00
Roland Gruber 010f3d848b composer.json 2016-12-26 10:52:46 +01:00
Roland Gruber a95b614692 composer.json 2016-12-26 10:51:55 +01:00
gruberroland 2cde29e040 Merge pull request #12 from LDAPAccountManager/type_api_tmp
Type api tmp
2016-12-26 10:31:13 +01:00
Roland Gruber ed31fe6dd4 new type API 2016-12-26 10:26:26 +01:00
Roland Gruber 50468a1fef added namespace 2016-12-26 10:02:08 +01:00
gruberroland 8e9fd5bb36 Merge pull request #11 from LDAPAccountManager/type_api_tmp
new type API
2016-12-25 18:49:54 +01:00
Roland Gruber dbb3c779c4 new type API 2016-12-25 18:46:41 +01:00
gruberroland ad77a4054f Merge pull request #10 from LDAPAccountManager/type_api_tmp
new type API
2016-12-24 15:46:35 +01:00
Roland Gruber 207cd984ce new type API 2016-12-24 15:39:02 +01:00
Roland Gruber f9995d7cb6 new type API 2016-12-24 13:04:31 +01:00
Roland Gruber aa9c11ae0c new type API 2016-12-23 20:58:01 +01:00
Roland Gruber d510dc58c1 fixed PHP error 2016-12-20 22:12:31 +01:00
Roland Gruber 3fc092b3b7 namespace 2016-12-19 21:37:27 +01:00
Roland Gruber 97be076bba namespace for types 2016-12-19 21:32:08 +01:00
Roland Gruber f16a0286f7 removed advanced options 2016-12-19 17:05:47 +01:00
Roland Gruber b8e76638c4 5.7 2016-12-19 16:34:36 +01:00
Roland Gruber c0fb2a785c 5.6 2016-12-18 19:42:04 +01:00
Roland Gruber 6222f3d1f3 Merge branch 'develop' of git@github.com:LDAPAccountManager/lam.git into develop 2016-12-18 13:16:57 +01:00
Roland Gruber db60c61ef5 added class 2016-12-18 13:16:41 +01:00
gruberroland 184b0e5b82 Merge pull request #8 from LDAPAccountManager/responsive_config
responsive
2016-12-18 13:11:09 +01:00
Roland Gruber 7b2cef9981 fixed log message 2016-12-18 13:08:55 +01:00
Roland Gruber 5708f5b96c responsive 2016-12-14 20:43:16 +01:00
Roland Gruber 5caf322903 gitignore 2016-12-14 19:46:14 +01:00
Roland Gruber f8eee85c29 translation update 2016-12-11 20:00:20 +01:00
Roland Gruber 7838c9da25 translation update 2016-12-09 19:54:23 +01:00
gruberroland 1ba9008da2 Merge pull request #6 from LDAPAccountManager/upload_ajax
Upload ajax
2016-12-08 18:31:21 +01:00
Roland Gruber 308e3292c9 fixed error message 2016-12-08 18:17:04 +01:00
Roland Gruber eddfb11cf0 Ajax file upload 2016-12-07 21:18:06 +01:00
Roland Gruber c9008b3c7c fix PHP notices 2016-12-07 21:17:20 +01:00
Roland Gruber 502a47ecfa updated copyright + manual 2016-12-03 13:44:21 +01:00
Roland Gruber 30e1bd8469 translation update 2016-12-01 20:45:45 +01:00
Roland Gruber 2804d7ccaa translation update 2016-11-29 21:59:24 +01:00
Roland Gruber fd5de4198c translation update 2016-11-29 19:24:21 +01:00
Roland Gruber a7d99aa2ea 5.6 2016-11-28 19:01:48 +01:00
Roland Gruber 2b29f054bc fixed typos 2016-11-28 18:59:10 +01:00
Roland Gruber 422ab23a72 multiple security questions 2016-11-27 12:06:58 +01:00
Roland Gruber 44a722351a buttons 2016-11-26 18:24:51 +01:00
Roland Gruber f6d018f3f4 new replacement system 2016-11-20 10:32:13 +01:00
Roland Gruber dc23a7b766 new wildcard mechanism 2016-11-19 19:20:44 +01:00
Roland Gruber bb73f687ed more default translations 2016-11-14 19:37:39 +01:00
Roland Gruber cf636521f4 custom scripts 2016-11-14 19:17:59 +01:00
Roland Gruber 9f9802549a attributes field maxlength=1000 2016-11-14 19:17:10 +01:00
Roland Gruber 5f5b86b16d label for manual scripts 2016-11-14 19:15:08 +01:00
Roland Gruber 213c65d115 fixed mail check 2016-11-12 09:51:08 +01:00
Roland Gruber 4373c1b040 mail routing for groups 2016-11-12 09:48:34 +01:00
Roland Gruber 9f9cb353b1 new Windows attributes 2016-11-09 21:49:02 +01:00
Roland Gruber 7211faaf47 added proxyAddresses 2016-11-09 21:46:27 +01:00
Roland Gruber 2382108462 support for company, mobile, otherMobile, pager, otherPager 2016-11-09 19:22:43 +01:00
Roland Gruber a0dffd1f08 set INFO.userPasswordStatusChange in personal module 2016-11-06 10:08:36 +01:00
Roland Gruber a050000879 5.6 2016-11-05 12:51:31 +01:00
Roland Gruber 82c579e56e docs update 2016-11-05 12:13:14 +01:00
Roland Gruber 55f0964710 job history 2016-11-01 15:33:29 +01:00
Roland Gruber 9b9a462517 added tablepadding05 2016-11-01 15:17:26 +01:00
Roland Gruber 10c2e2c726 replaced dry run icon 2016-11-01 11:48:16 +01:00
Roland Gruber a0c02057f5 tar.bz2 update 2016-11-01 09:24:31 +01:00
Roland Gruber 97bea2bd0f autoconf fixes 2016-11-01 09:23:36 +01:00
Roland Gruber bc68b0eb5a install sample config 2016-11-01 08:55:34 +01:00
Roland Gruber aa5020d46b expiration hint 2016-10-25 20:02:10 +02:00
Roland Gruber 68bee45561 evaluation hint 2016-10-25 19:50:46 +02:00
Roland Gruber 70e3afc38e license expiration 2016-10-24 20:26:39 +02:00
Roland Gruber 54afe29cb8 hide login when no profiles were found 2016-10-09 10:59:43 +02:00
Roland Gruber ba4965bb98 fixed config rights 2016-10-09 10:45:21 +02:00
Roland Gruber 69932539b0 new version 2016-10-09 10:39:17 +02:00
Roland Gruber cd46b06dd4 fixed autoconf installation 2016-10-09 10:37:35 +02:00
Roland Gruber 0813e24b7a fixed rights 2016-09-10 16:16:10 +02:00
Roland Gruber c4bc0b3f07 translation updates 2016-09-10 16:09:34 +02:00
Roland Gruber 6efa35bdbc phpdoc 2016-09-10 15:34:29 +02:00
Roland Gruber 6d24baa182 5.5 2016-09-10 15:17:40 +02:00
Roland Gruber bff8c8dfad translation update 2016-09-06 18:52:55 +02:00
Roland Gruber d9e4871576 changed order 2016-09-06 17:49:34 +02:00
Roland Gruber 9acf4c86c0 translation update 2016-09-05 14:39:19 +02:00
Roland Gruber 52594017d6 white background 2016-09-02 14:57:11 +02:00
Roland Gruber d0df311595 do not modify if value is the same 2016-09-02 11:07:15 +02:00
Roland Gruber e3901f434e use ldap_modify_batch if available 2016-09-02 11:05:19 +02:00
Roland Gruber 3aaa019701 PHP 5.4 fix 2016-09-02 10:06:39 +02:00
Roland Gruber f350424b97 translation update 2016-09-01 19:23:19 +02:00
Roland Gruber 1142b54ea4 translations 2016-08-29 19:44:58 +02:00
Roland Gruber 49ac5ae7f5 minify CSS 2016-08-27 22:28:37 +02:00
Roland Gruber 7dab0517a4 Revert "5.5"
This reverts commit 7db31cb041.
2016-08-27 22:10:34 +02:00
Roland Gruber 7db31cb041 5.5 2016-08-27 21:48:20 +02:00
Roland Gruber 6efdc5d030 license docs 2016-08-27 19:52:52 +02:00
Roland Gruber 5c6988eea2 responsive design 2016-08-27 15:56:23 +02:00
Roland Gruber 5b284f84f8 style 2016-08-27 15:31:59 +02:00
Roland Gruber ddd5df2bfe date 2016-08-27 15:14:43 +02:00
Roland Gruber d4df8a98e3 new version 2016-08-27 12:05:24 +02:00
Roland Gruber 5bde5554aa style changes 2016-08-27 10:40:05 +02:00
Roland Gruber faba43680c changed license check 2016-08-27 09:15:33 +02:00
Roland Gruber 08a329eb7d added license key 2016-08-21 11:16:44 +02:00
Roland Gruber 619b715a60 env 2016-08-21 09:18:04 +02:00
Roland Gruber 500d0eecf9 removed obsolete code 2016-08-12 20:23:35 +02:00
Roland Gruber d13d2908a8 lamdaemon SSH key 2016-08-09 20:18:58 +02:00
Roland Gruber b5e8794163 support lamdaemon authentication with SSH key 2016-08-08 22:01:36 +02:00
Roland Gruber 7a580d0296 PHP 7 issue 2016-08-07 10:42:21 +02:00
Roland Gruber 5f725d3253 moved encryption functions to security.inc 2016-08-07 10:40:36 +02:00
Roland Gruber b50d48e082 fixed issue with password change icon 2016-07-30 09:37:07 +02:00
Roland Gruber ce3d5930be 389ds password mail job 2016-07-23 10:46:50 +02:00
Roland Gruber d6365d3c1d added 389ds password expiration 2016-07-21 20:31:40 +02:00
Roland Gruber 75f7ee43ca removed mktime calls 2016-07-20 20:19:26 +02:00
Roland Gruber b2fc9fe4c6 removed getDate() 2016-07-18 20:58:47 +02:00
Roland Gruber be211bedea removed getDate() 2016-07-18 20:34:43 +02:00
Roland Gruber 32e79e6417 check for duplicate MACs 2016-07-17 20:45:17 +02:00
Roland Gruber 41b0172810 added Windows cleanup job 2016-07-17 10:26:22 +02:00
Roland Gruber 3bef3a577a added Qmail cleanup job 2016-07-17 09:25:36 +02:00
Roland Gruber 3e923725db cleanup job FreeRadius 2016-07-16 16:07:21 +02:00
Roland Gruber 4f5d7273c8 new styles 2016-07-16 14:35:11 +02:00
Roland Gruber 9e767e885c added htmlContentLink 2016-07-16 14:34:53 +02:00
Roland Gruber a195a9e9f8 move/delete expired accounts 2016-07-16 10:31:21 +02:00
Roland Gruber 0bb6888ad0 added job to move or delete expired accounts 2016-07-16 09:52:09 +02:00
Roland Gruber 1a3f0f5d8a removed obsolete code 2016-07-14 21:00:47 +02:00
Roland Gruber d3cacaaa5d allow to show effective members 2016-07-13 22:05:03 +02:00
Roland Gruber 9cdb618a01 5.5 2016-07-13 20:09:45 +02:00
Roland Gruber 9c57805972 remove empty image tags when no photo is set 2016-07-11 19:30:53 +02:00
Roland Gruber 7ba57d8161 password history 2016-07-09 09:31:55 +02:00
Roland Gruber feaa741096 password history 2016-07-09 08:26:05 +02:00
Roland Gruber 8bb1b358d2 Allow to sync Unix password with Windows password 2016-06-26 10:15:45 +02:00
Roland Gruber 5d85a88ca1 fixed rights 2016-06-21 20:11:25 +02:00
Roland Gruber f0a376846c updated LAM Pro files 2016-06-21 20:06:09 +02:00
Roland Gruber ca85245fac 5.4 2016-06-21 19:00:44 +02:00
Roland Gruber b5afb21b21 389ds locking 2016-06-19 17:12:00 +02:00
Roland Gruber f4f6b7c34c support 389ds (de)activation 2016-06-19 15:34:02 +02:00
Roland Gruber 2509cb1d68 support 389ds (de)activation 2016-06-19 14:48:28 +02:00
Roland Gruber cfc5aee617 added password to PDF fields 2016-06-19 11:41:47 +02:00
Roland Gruber 60b57e12f0 translation update 2016-06-09 17:27:50 +02:00
Roland Gruber b73cbf63cb translation update 2016-06-06 19:30:43 +02:00
Roland Gruber 687d1e4358 date update 2016-05-31 18:09:25 +02:00
Roland Gruber 33205d0e8b translation update 2016-05-31 17:57:16 +02:00
Roland Gruber ec2d11dd6a translation update 2016-05-30 21:44:48 +02:00
Roland Gruber 146e5c4061 reduce messages 2016-05-29 11:01:25 +02:00
Roland Gruber 083f8de056 fixed for loop 2016-05-29 10:50:06 +02:00
Roland Gruber 36add79764 better service restart 2016-05-29 10:22:33 +02:00
Roland Gruber 12d8870334 translation update 2016-05-29 08:48:51 +02:00
Roland Gruber 672ba58ac5 3.8.9 2016-05-28 20:13:55 +02:00
Roland Gruber d116967ab8 spec file update 2016-05-28 20:05:55 +02:00
Roland Gruber ec84e6935c translation update 2016-05-28 19:43:39 +02:00
Roland Gruber 89bdcdfe3d Samba history support 2016-05-27 21:18:40 +02:00
Roland Gruber 1e9a5bd74c Samba history support 2016-05-27 21:17:22 +02:00
Roland Gruber 6089935a71 check password minimum age for Samba 3 2016-05-26 20:08:08 +02:00
Roland Gruber 3a2580478d check password history in self service 2016-05-26 19:41:10 +02:00
Roland Gruber d47438d4a8 fixed search_domains 2016-05-26 19:40:37 +02:00
Roland Gruber 7870f0babb 5.3-2 2016-05-24 19:37:09 +02:00
Roland Gruber 8879f2cfd2 check password history 2016-05-22 09:56:32 +02:00
Roland Gruber bdae11ff4a store sambaPasswordHistory 2016-05-20 19:38:36 +02:00
Roland Gruber cf5132745d support for 389ds locking and deactivation 2016-05-15 12:15:30 +02:00
Roland Gruber 616b11e362 show 389ds lock status 2016-05-14 14:12:24 +02:00
Roland Gruber 016025fe2d show 389ds deactivation status in account list 2016-05-14 13:28:22 +02:00
Roland Gruber bbf6d31827 CC and BCC address for password notification jobs (RFE 134) 2016-05-14 11:25:26 +02:00
Roland Gruber 3387e210ad CC and BCC address for password notification jobs (RFE 134) 2016-05-14 11:22:36 +02:00
Roland Gruber 06e716139a ship with patched version of fpdf 2016-05-10 18:37:01 +02:00
Roland Gruber c4075de648 phpseclib 1.0.2 2016-05-10 18:14:55 +02:00
Roland Gruber 88b7a32187 optional posixAccount object class 2016-05-09 20:10:14 +02:00
Roland Gruber 0b3c6b1036 do not copy .gitignore 2016-04-22 22:09:14 +02:00
Roland Gruber fa1713323f ignore 2016-04-22 21:55:22 +02:00
Roland Gruber 7a338d26f3 browsers 2016-04-19 20:42:37 +02:00
Roland Gruber db9a2ba2a1 fix for 32bit systems (179) 2016-04-19 20:41:51 +02:00
Roland Gruber ed969dec2d 5.4.RC1 2016-04-02 15:40:01 +02:00
Roland Gruber bd93daa397 more robust reload 2016-04-02 15:33:19 +02:00
Roland Gruber bd85a89d4c more robust Apache restart 2016-04-02 15:06:55 +02:00
Roland Gruber 8511a05a72 better link handling 2016-04-02 14:45:33 +02:00
Roland Gruber ad2002c3e1 reCAPTCHA 2016-04-02 13:42:07 +02:00
Roland Gruber bcf888423b support for Google reCAPTCHA 2016-04-02 13:30:06 +02:00
Roland Gruber cb5f5bb3d2 support magic numbers for UIDs/GIDs 2016-03-28 11:15:14 +02:00
Roland Gruber e66931e393 support magic numbers for UIDs/GIDs 2016-03-28 11:11:06 +02:00
Roland Gruber 75a239f10b support magic numbers for UID/GID 2016-03-28 11:06:04 +02:00
Roland Gruber 25f546e100 rename SQLite database on profile rename 2016-03-28 09:25:21 +02:00
Roland Gruber e8760f2541 .gitignore 2016-03-26 15:02:04 +01:00
Roland Gruber b9455e4b3a .gitignore 2016-03-26 14:45:46 +01:00
Roland Gruber 133589f792 readme 2016-03-25 13:33:30 +01:00
Roland Gruber e0d5ed512b .gitignores 2016-03-25 13:17:51 +01:00
Roland Gruber dda22833f6 move to git 2016-03-25 12:50:28 +01:00
Roland Gruber de73467c34 2016-03-21 18:23:49 +00:00
Roland Gruber 4c3708897a 2016-03-21 18:23:33 +00:00
Roland Gruber 397519b48d 2016-03-20 11:02:16 +00:00
Roland Gruber 13fc330c02 2016-03-20 10:48:36 +00:00
Roland Gruber e8ede90eb5 added filter function to html.inc 2016-03-19 09:06:53 +00:00
Roland Gruber fcd03fd509 translation update 2016-03-17 19:15:51 +00:00
Roland Gruber 38c5293577 translation update 2016-03-16 19:37:37 +00:00
Roland Gruber 6fc9c857c6 translation update 2016-03-16 19:31:26 +00:00
Roland Gruber 38ac104f85 2016-03-13 17:20:18 +00:00
Roland Gruber 88d32d3072 2016-03-13 17:20:07 +00:00
Roland Gruber a46cefc336 translation update 2016-03-09 20:32:28 +00:00
Roland Gruber 4e2e355c5d translation update 2016-03-07 18:25:57 +00:00
Roland Gruber 012b91fe15 2016-03-06 09:21:52 +00:00
Roland Gruber 7534019074 2016-03-06 09:07:58 +00:00
Roland Gruber dfef863ec1 translation update 2016-03-06 09:07:41 +00:00
Roland Gruber 0af33438f5 2016-03-05 19:43:08 +00:00
Roland Gruber b5f3a48a84 new options for password reset page 2016-02-28 14:24:37 +00:00
Roland Gruber c24c42f212 2016-02-28 12:35:41 +00:00
Roland Gruber 38c6f488a5 new options for password reset page 2016-02-26 19:49:57 +00:00
Roland Gruber d68bf64505 2016-02-13 18:07:03 +00:00
Roland Gruber cd01231c4a puppet: allow to enforce classes 2016-02-13 14:36:48 +00:00
Roland Gruber a0f8e8ddd1 puppet: allow to enforce classes 2016-02-13 14:35:42 +00:00
Roland Gruber 91b5523b81 allow to enforce classes 2016-02-13 14:29:41 +00:00
Roland Gruber 0bbf26bc17 support multi-value selects 2016-02-13 14:29:25 +00:00
Roland Gruber a02441f0ab show classes+variables as single line input fields, added autocomplete 2016-02-13 13:50:14 +00:00
Roland Gruber db4bfd306b allow @ in UNC path (#178) 2016-02-07 17:19:19 +00:00
Roland Gruber 81bd228c6b calendar fields for custom fields 2016-02-02 20:19:57 +00:00
Roland Gruber 3f4e2ab3c1 calendar fields for custom fields 2016-02-02 20:19:24 +00:00
Roland Gruber 46840ce839 2016-02-02 19:51:48 +00:00
Roland Gruber c04ee71ddd pwdExpireWarning for PPolicy notification job 2016-01-31 16:45:52 +00:00
Roland Gruber 4e18e82f0b ppolicy notification job tests 2016-01-26 20:32:11 +00:00
Roland Gruber d6716ee9b4 test for shadowAccount expiration job 2016-01-20 20:49:23 +00:00
Roland Gruber 2d878b02f6 better testability 2016-01-20 20:48:53 +00:00
Roland Gruber f8e7adf82d refactoring 2016-01-20 20:48:30 +00:00
Roland Gruber 3715bb4377 phpseclib 1.0.1 2016-01-19 18:02:38 +00:00
Roland Gruber 27d1ea33c9 set correct content type for JSON requests 2016-01-16 19:19:48 +00:00
Roland Gruber f2168738bd set correct content type for JSON requests 2016-01-16 19:17:19 +00:00
Roland Gruber edef026b24 expiration date placeholder for jobs 2016-01-16 18:46:58 +00:00
Roland Gruber b627bc7088 added NIS netgroup module for hosts 2016-01-10 10:45:09 +00:00
Roland Gruber 26cd5736d2 added NIS netgroup module for hosts 2016-01-09 19:20:57 +00:00
Roland Gruber 06f47376e5 fixed PHP notices for hosts 2016-01-09 19:20:28 +00:00
Roland Gruber ed0673332f support for LDAP views based on nsview 2016-01-06 15:37:09 +00:00
Roland Gruber 87cdeedf42 2016-01-06 15:06:57 +00:00
Roland Gruber 3b20a34774 support for LDAP views based on nsview 2016-01-06 15:05:52 +00:00
Roland Gruber a3a5cd0dc5 fixed problem with autoload in tree view 2016-01-05 16:55:01 +00:00
Roland Gruber a659bdeccf added fax number 2016-01-03 15:43:28 +00:00
Roland Gruber 9e80d5a205 2016 2016-01-03 11:09:38 +00:00
Roland Gruber 56201b02d8 allow to set a display name for the server 2016-01-03 11:03:10 +00:00
Roland Gruber 856b35ae05 allow to set a display name for the server 2016-01-03 10:56:57 +00:00
Roland Gruber 410948f612 config tests 2016-01-02 16:00:38 +00:00
Roland Gruber c677a10b6d config fixes 2016-01-02 14:28:03 +00:00
Roland Gruber 7c0cada014 PHPunit 2016-01-02 13:39:28 +00:00
Roland Gruber 38f52e6a98 2016-01-02 12:17:28 +00:00
Roland Gruber 7d124bb77c support K5KEY 2016-01-02 12:16:14 +00:00
Roland Gruber bc0505db1c set attributes only if extension was added 2016-01-02 12:14:58 +00:00
Roland Gruber 8a7a18b361 require PHP 5.4.0 2016-01-01 18:45:46 +00:00
Roland Gruber 008469ca57 PHP 7 2016-01-01 18:26:06 +00:00
Roland Gruber 8ef6848477 PHP7 fixes - constructor must be named __construct() 2016-01-01 18:21:59 +00:00
Roland Gruber 758bc8dd5f PHP7 fixes - constructor must be named __construct() 2016-01-01 18:11:36 +00:00
Roland Gruber e24021d2eb added 64bit hint 2016-01-01 17:44:28 +00:00
Roland Gruber 87627acd61 PHP7 fixes - constructor must be named __construct() 2015-12-31 14:07:31 +00:00
Roland Gruber a1c2039371 2015-12-30 19:17:42 +00:00
Roland Gruber 0726d3b52b 2015-12-30 19:17:29 +00:00
Roland Gruber c0b82bae89 PHP 7 2015-12-30 19:06:41 +00:00
Roland Gruber 78f12f42d8 PHP 7 2015-12-22 19:43:55 +00:00
Roland Gruber a14a3bb0de layout fix if content area is too wide 2015-12-20 19:07:04 +00:00
Roland Gruber c02f80d996 prevent clickjacking 2015-12-19 09:31:21 +00:00
Roland Gruber 36f054b84e mark cookies HTTP only 2015-12-19 09:12:47 +00:00
Roland Gruber b38bc8bc8a 2015-12-15 17:12:51 +00:00
Roland Gruber ad4e157da3 2015-12-15 17:12:20 +00:00
Roland Gruber 949f4775a8 translation update 2015-12-15 17:11:18 +00:00
Roland Gruber 1bf355b0b1 translation update 2015-12-14 19:24:30 +00:00
Roland Gruber 4f1c423815 translation update 2015-12-10 21:34:04 +00:00
Roland Gruber 7bcca7c3bd support for Windows 2015-12-09 17:12:20 +00:00
Roland Gruber 18bdb2a044 enhanced filtering 2015-12-08 16:46:08 +00:00
Roland Gruber 146196a441 2015-12-05 09:24:46 +00:00
Roland Gruber 8c803f607a added "-" in profile editor 2015-12-05 08:51:01 +00:00
Roland Gruber 589847548b doc update 2015-12-05 08:42:07 +00:00
Roland Gruber 52874b8bef translation update 2015-12-02 19:35:58 +00:00
Roland Gruber d101d11e1b translation update 2015-12-02 19:29:56 +00:00
Roland Gruber 647d206589 translation update 2015-12-02 19:26:31 +00:00
Roland Gruber 59ccfc607f translation update 2015-12-02 19:19:23 +00:00
Roland Gruber 8fe31ab806 translation update 2015-12-01 19:44:55 +00:00
Roland Gruber c8dd7bb1c4 translation update 2015-12-01 19:39:15 +00:00
Roland Gruber 1ec9679a73 translation update 2015-11-30 18:26:26 +00:00
Roland Gruber 73fc8a963f 2015-11-30 17:20:40 +00:00
Roland Gruber bf66b59a24 2015-11-30 17:19:15 +00:00
Roland Gruber 9b5fcb56c4 password expiration job for Windows users 2015-11-27 21:24:29 +00:00
Roland Gruber 390216d0ac password expiration job for Windows users 2015-11-27 21:03:27 +00:00
Roland Gruber 251417972e changed label for cn 2015-11-24 19:33:18 +00:00
Roland Gruber 0083c465b3 started password expiration job for Windows users 2015-11-18 07:17:54 +00:00
Roland Gruber 673bb1539b generic password notification job 2015-11-16 20:10:47 +00:00
Roland Gruber da06bafcdf generic password notification job 2015-11-16 19:54:36 +00:00
Roland Gruber 834d36cc2f fixed problem with time formating 2015-11-16 19:48:58 +00:00
Roland Gruber 362a287674 added password notification job for Shadow accounts 2015-11-15 15:56:02 +00:00
Roland Gruber 9436aeabfb added password notification job for Shadow accounts 2015-11-15 15:36:20 +00:00
Roland Gruber 2956d13cd5 refactoring 2015-11-11 19:29:43 +00:00
Roland Gruber 7c49c86522 2015-11-11 18:47:00 +00:00
Roland Gruber c289c84af2 support more attributes 2015-11-08 16:33:08 +00:00
Roland Gruber 19d6b6a704 2015-11-08 16:31:13 +00:00
Roland Gruber e6661e75e3 support more attributes 2015-11-08 10:00:40 +00:00
Roland Gruber 0a9d9bc9d9 support more attributes 2015-11-08 09:59:20 +00:00
Roland Gruber f0966d1c97 support more attributes 2015-11-07 15:43:43 +00:00
Roland Gruber 15a835cef1 support more attributes 2015-11-07 14:44:34 +00:00
Roland Gruber f3a6fecab6 Time zone for self service 2015-11-07 09:14:48 +00:00
Roland Gruber 96ae5f85e2 use getTimeZone() 2015-11-07 08:30:52 +00:00
Roland Gruber da7e667100 added parseLDAPTimeStamp() 2015-11-07 08:09:49 +00:00
Roland Gruber b36d674c6c 2015-11-06 17:26:11 +00:00
Roland Gruber ed999af541 allow ":" in filter 2015-11-06 17:04:55 +00:00
Roland Gruber 54a5672bc2 expiration date for Windows 2015-11-02 20:53:20 +00:00
Roland Gruber 89421417fe support Windows timestamps 2015-11-01 10:20:39 +00:00
Roland Gruber 8e125eb168 fixed IP check 2015-10-30 19:09:55 +00:00
Roland Gruber d459045561 2015-10-28 18:32:57 +00:00
Roland Gruber 94d82cd696 2015-10-28 18:26:38 +00:00
Roland Gruber f0c3c14c24 2015-10-28 18:26:16 +00:00
Roland Gruber 38a1f3f32f 2015-10-28 18:20:07 +00:00
Roland Gruber 8a6ba88689 PHP 7 2015-10-26 19:47:25 +00:00
Roland Gruber 93a87c8f6f IMAP initial folder support 2015-10-18 18:08:34 +00:00
Roland Gruber 3bcb22a70b added server migration 2015-10-18 13:03:33 +00:00
Roland Gruber 2b21d987a7 2015-10-11 15:49:08 +00:00
Roland Gruber 268dc336d7 support onClick for images 2015-10-10 09:02:00 +00:00
Roland Gruber 8f450f58d5 2015-10-04 14:01:32 +00:00
Roland Gruber 1eed08c637 2015-10-04 13:25:38 +00:00
Roland Gruber 7dc73c1bf4 update of phpseclib 2015-10-04 13:24:43 +00:00
Roland Gruber bd2254684f removed PHP dependency 2015-10-03 12:08:32 +00:00
Roland Gruber 430a5cc4b7 removed PHP dependency 2015-10-03 12:08:05 +00:00
Roland Gruber 3173d05438 2015-09-02 17:09:50 +00:00
Roland Gruber 7cd0018933 2015-09-02 16:39:30 +00:00
Roland Gruber 7cd3b6b6c8 2015-09-02 16:34:00 +00:00
Roland Gruber 03765bbaca 2015-08-31 15:40:04 +00:00
Roland Gruber addcd500ca 2015-08-31 15:39:20 +00:00
Roland Gruber 97a621c3a0 translation update 2015-08-26 16:57:42 +00:00
Roland Gruber 5182ab6465 2015-08-26 16:57:22 +00:00
Roland Gruber ffb7933bda better timezone handling 2015-08-23 17:56:27 +00:00
Roland Gruber d9824cda40 better timezone handling 2015-08-23 08:18:30 +00:00
Roland Gruber db7ae2ea34 use extended upload function 2015-08-16 16:43:42 +00:00
Roland Gruber 1f8d1445e8 use extended upload function 2015-08-16 08:47:48 +00:00
Roland Gruber b8f7d87864 use extended upload function 2015-08-15 18:11:54 +00:00
Roland Gruber 65f43d9fcd translation update 2015-08-15 06:44:22 +00:00
Roland Gruber 971923ec72 2015-08-14 19:00:47 +00:00
Roland Gruber 53f085ffe0 2015-08-14 18:44:38 +00:00
Roland Gruber f7a8919331 2015-08-14 18:42:36 +00:00
Roland Gruber 97bcc6992e translation update 2015-08-14 18:23:25 +00:00
Roland Gruber abd8950fe0 responsive self service 2015-08-09 13:18:04 +00:00
Roland Gruber 81946a0d38 responsive self service 2015-08-09 09:00:38 +00:00
Roland Gruber a53a432c2b responsive self service 2015-08-09 07:57:56 +00:00
Roland Gruber d5ea258c10 responsive self service 2015-08-09 07:22:01 +00:00
Roland Gruber a74e645ea3 responsive self service 2015-08-06 19:20:54 +00:00
Roland Gruber 5342ee41ad responsive self service 2015-08-05 17:03:32 +00:00
Roland Gruber a2f5dae6b3 responsive self service 2015-08-04 18:41:12 +00:00
Roland Gruber 22bbbe05db auto-range for self registration 2015-08-04 06:30:38 +00:00
Roland Gruber 01863ec355 support windowsUser for IMAP 2015-08-04 05:22:59 +00:00
Roland Gruber 24c6aa9df6 support also windowsUser 2015-08-03 20:00:58 +00:00
Roland Gruber 2a6ea95e60 support also windowsUser 2015-08-03 19:56:49 +00:00
Roland Gruber bf1e8081f7 box shadow 2015-08-02 19:18:39 +00:00
Roland Gruber bd1337f6af box shadow 2015-08-02 19:16:46 +00:00
Roland Gruber e41332d624 better icon styling 2015-08-02 19:16:30 +00:00
Roland Gruber e259a8addb better icon styling 2015-08-02 17:34:10 +00:00
Roland Gruber 981626370b responsive self service 2015-08-02 17:33:53 +00:00
Roland Gruber d7f82c768a responsive self service 2015-07-29 19:14:10 +00:00
Roland Gruber acb723c752 responsive self service 2015-07-26 09:38:15 +00:00
Roland Gruber f5f89afb19 responsive self service 2015-07-26 09:37:57 +00:00
Roland Gruber 25a312e65e responsive self service 2015-07-26 09:37:40 +00:00
Roland Gruber a6f807f60a functions to shorten timestamps 2015-07-26 08:19:55 +00:00
Roland Gruber f44705f2a7 2015-07-26 08:00:07 +00:00
Roland Gruber 801f80ed47 MySQL support for jobs 2015-07-26 07:59:24 +00:00
Roland Gruber 75e7924770 check uploaded keys (RFE 124) 2015-07-26 07:58:42 +00:00
Roland Gruber 4e3041eee1 use extended upload function 2015-07-26 07:56:32 +00:00
Roland Gruber 9f5ded8521 MySQL support for jobs 2015-07-26 07:55:41 +00:00
Roland Gruber 88510b8fc5 MySQL support for jobs 2015-07-26 07:55:28 +00:00
Roland Gruber 208ec53c06 no more pixels for font size 2015-07-26 07:55:08 +00:00
Roland Gruber d74ade3b3a use extended upload function 2015-07-13 18:05:39 +00:00
Roland Gruber 435604544b use extended upload function 2015-07-13 16:33:56 +00:00
Roland Gruber 224c4ede8d common function to upload multi-value attributes 2015-07-12 12:41:47 +00:00
Roland Gruber 15570725e2 support jobs 2015-07-12 09:11:16 +00:00
Roland Gruber daafa828df added PDFTable 2015-07-12 08:44:22 +00:00
Roland Gruber 25ff82f545 added PDFTable 2015-07-11 09:50:00 +00:00
Roland Gruber cf9c5c9f70 added PDFTable 2015-07-08 19:22:27 +00:00
Roland Gruber 451c1c5e4c added PDFTable 2015-07-08 18:41:53 +00:00
Roland Gruber 95b87c003f added PDFTable 2015-07-08 17:14:52 +00:00
Roland Gruber 4bb9a6d8c5 2015-07-08 17:14:30 +00:00
Roland Gruber 0fd01851b9 phpSeclib update 2015-07-06 19:44:12 +00:00
Roland Gruber bc0b29a090 update jQuery 2015-07-06 19:36:49 +00:00
Roland Gruber 81eefdd60f fallback to UTC if no timezone setting is available 2015-07-06 19:36:29 +00:00
Roland Gruber bf6872fefa translation update 2015-06-30 17:02:07 +00:00
Roland Gruber 5cfadb1f26 support jobs 2015-06-29 19:20:42 +00:00
Roland Gruber 6b42978126 2015-06-29 18:58:53 +00:00
Roland Gruber e69b329c50 2015-06-29 18:37:46 +00:00
Roland Gruber e73009942b 2015-06-29 18:36:51 +00:00
Roland Gruber b33dc30fb2 2015-06-29 18:34:40 +00:00
Roland Gruber b42d6dc62e 2015-06-29 18:34:14 +00:00
Roland Gruber 4a10c667b2 support jobs 2015-06-29 18:34:02 +00:00
Roland Gruber f2c298db65 use module query instead of version module 2015-06-28 11:19:01 +00:00
Roland Gruber 97cf528af0 PHPdoc 2015-06-26 18:52:01 +00:00
Roland Gruber 77a6a0d0c9 check if client IP is empty 2015-06-26 18:06:22 +00:00
Roland Gruber 8bd5b0fe9c translation update 2015-06-24 18:09:30 +00:00
Roland Gruber cb8d48b8a6 translation update 2015-06-24 18:05:06 +00:00
Roland Gruber 6592377b38 translation update 2015-06-24 17:51:22 +00:00
Roland Gruber 39910e51e9 translation update 2015-06-24 17:46:04 +00:00
Roland Gruber c2ee0a7eec translation update 2015-06-24 17:41:25 +00:00
Roland Gruber 3534369586 2015-06-24 17:41:14 +00:00
Roland Gruber 63cab618fc formatting 2015-06-24 17:40:20 +00:00
Roland Gruber 28fcd7c8e7 translation update 2015-06-22 17:36:50 +00:00
Roland Gruber 243b227004 translation update 2015-06-22 11:26:47 +00:00
Roland Gruber 5061e34911 translation update 2015-06-19 17:47:41 +00:00
Roland Gruber 4e8fe408b7 mode 0640 for PDFs and certificates in tmp folder 2015-06-18 18:16:00 +00:00
Roland Gruber 5c5a2c4588 NIS netgroup module for users 2015-06-18 17:34:44 +00:00
Roland Gruber 0edcb1401a support ou=addressbook (RFE 117) 2015-06-17 19:41:48 +00:00
Roland Gruber 5aa5b7b4b0 2015-06-17 17:33:30 +00:00
Roland Gruber 982dd61a2b support jobs 2015-06-17 17:32:05 +00:00
Roland Gruber 7e26d7fd1f support jobs 2015-06-17 17:19:08 +00:00
Roland Gruber 390635fbea translation update 2015-06-16 19:45:31 +00:00
Roland Gruber 3fd91c99af 2015-06-16 19:14:57 +00:00
Roland Gruber 2056285542 2015-06-16 19:00:38 +00:00
Roland Gruber dc10196c35 support jobs 2015-06-16 18:59:56 +00:00
Roland Gruber 75155bbf38 support jobs 2015-06-12 18:28:25 +00:00
Roland Gruber 6ec9809cb1 support jobs 2015-06-09 19:03:04 +00:00
Roland Gruber 2151a7e373 support jobs 2015-06-09 19:02:24 +00:00
Roland Gruber 75b59ce12d added time zone setting to server profile 2015-06-08 19:03:57 +00:00
Roland Gruber 5930ef17b5 added time zone setting to server profile 2015-06-08 18:33:38 +00:00
Roland Gruber b9d1c64398 added option to auto-sync with group of names 2015-06-07 16:52:16 +00:00
Roland Gruber 73c113554b allow to edit memberOf for Windows groups 2015-06-07 07:43:25 +00:00
Roland Gruber b74d47a709 allow to edit memberOf for Windows groups 2015-06-07 07:38:49 +00:00
Roland Gruber c5e07d35f3 support msSFU30DomainInfo 2015-06-07 07:04:02 +00:00
Roland Gruber 69db640b85 support msSFU30DomainInfo 2015-06-07 06:34:24 +00:00
Roland Gruber 6702d53f26 added live filter 2015-06-03 18:32:48 +00:00
Roland Gruber 4d519247a3 allow to change shadowLastChange 2015-06-02 19:31:46 +00:00
Roland Gruber 65cfecd421 2015-06-01 17:42:51 +00:00
Roland Gruber 2790fcddd6 2015-06-01 17:42:04 +00:00
Roland Gruber ae37e9671b support filter for NIS net groups 2015-06-01 17:41:42 +00:00
Roland Gruber ec066fe7e6 added option to auto-sync with group of names 2015-05-31 08:46:44 +00:00
Roland Gruber e0d291378e support filter for NIS net groups 2015-05-31 08:03:00 +00:00
Roland Gruber 0807a1b741 fixed module order if or-combined dependencies are used 2015-05-30 17:42:32 +00:00
Roland Gruber f490b3563a 2015-05-26 18:11:26 +00:00
Roland Gruber f3495fe799 2015-05-26 18:10:39 +00:00
Roland Gruber 03c9668a9a NIS netgroup module for users 2015-05-26 18:10:12 +00:00
Roland Gruber ed90fc0c03 support uid change 2015-05-25 18:50:21 +00:00
Roland Gruber 07863e5c9a file upload 2015-05-25 18:37:58 +00:00
Roland Gruber 147b033522 PDF + profile 2015-05-25 17:44:51 +00:00
Roland Gruber a34ec53c9c NIS netgroup module for users 2015-05-25 09:32:34 +00:00
Roland Gruber d743616816 2015-05-25 09:30:15 +00:00
Roland Gruber b5645be12e added option to auto-sync with group of names 2015-05-24 09:57:43 +00:00
Roland Gruber f9916b49af added option to auto-sync with group of names 2015-05-24 09:49:01 +00:00
Roland Gruber 8ac98e43fd 2015-05-23 13:34:44 +00:00
Roland Gruber bc97646569 support groupOfMembers 2015-05-23 13:34:08 +00:00
Roland Gruber 209eeab251 support ou=addressbook (RFE 117) 2015-05-23 12:10:55 +00:00
Roland Gruber 3f175a9823 Lamdaemon: update group of home directory if user's primary group changes 2015-05-22 17:22:01 +00:00
Roland Gruber 50c5a65b98 support to filter by account status 2015-05-21 17:50:00 +00:00
Roland Gruber e6861152ec 2015-05-21 16:50:04 +00:00
Roland Gruber 221b9b1baf big picture 2015-05-19 18:41:09 +00:00
Roland Gruber 8b61d5ea5a revert PHP version 2015-05-19 18:18:01 +00:00
Roland Gruber c79d1ca6c1 new PHP version 2015-05-18 19:13:25 +00:00
Roland Gruber 7edb863912 big picture 2015-05-18 19:12:17 +00:00
Roland Gruber 7afd2dae11 new PHP version 2015-05-18 19:12:00 +00:00
Roland Gruber 85c4de6c78 389 server size limit 2015-05-17 10:47:12 +00:00
Roland Gruber 64ac515842 2015-05-15 19:20:17 +00:00
Roland Gruber 35846435f4 added CSRF protection 2015-05-15 19:16:46 +00:00
Roland Gruber 10a47cb134 added CSRF protection 2015-05-14 11:49:56 +00:00
Roland Gruber c34b040766 added CSRF protection 2015-05-14 09:18:45 +00:00
Roland Gruber 1f0d4b0cda 2015-05-10 09:01:25 +00:00
Roland Gruber 48948dab4a support systemd 2015-05-10 08:52:23 +00:00
Roland Gruber 57045892e9 support systemd 2015-05-10 08:30:45 +00:00
Roland Gruber b0664b7131 fixed compareDN 2015-05-09 11:52:23 +00:00
Roland Gruber 60ee50c120 2015-04-19 19:22:27 +00:00
Roland Gruber c417f6a60e 2015-04-19 17:18:22 +00:00
Roland Gruber 528a98681e fixed problem with PDF printing 2015-04-19 17:17:17 +00:00
Roland Gruber 20d5accdcc 2015-03-31 17:13:34 +00:00
Roland Gruber b22b907a7f 2015-03-31 17:12:33 +00:00
Roland Gruber 94f2adc4a1 support to set no expiration date in profile 2015-03-27 21:15:20 +00:00
Roland Gruber fec8f0dbc6 translation update 2015-03-27 20:48:02 +00:00
Roland Gruber 366b443aa6 translation update 2015-03-27 20:42:02 +00:00
Roland Gruber 9c57a0df49 translation update 2015-03-26 21:03:01 +00:00
Roland Gruber 8be5402b9f translation update 2015-03-24 17:17:29 +00:00
Roland Gruber af43a42224 fixed IP check 2015-03-19 17:13:34 +00:00
Roland Gruber e7e4e13ac5 translation update 2015-03-19 16:36:46 +00:00
Roland Gruber 892add5e95 translation update 2015-03-16 21:26:26 +00:00
Roland Gruber 858fc2bd5c translation update 2015-03-16 21:20:46 +00:00
Roland Gruber fe6ec5c53e 2015-03-15 18:29:13 +00:00
Roland Gruber e79d016288 2015-03-15 17:43:28 +00:00
Roland Gruber af03c3180e 2015-03-15 17:42:27 +00:00
Roland Gruber 828bc5c638 added addPDFKeyValue() 2015-03-15 17:38:03 +00:00
Roland Gruber 7028ac28e4 added addPDFKeyValue() 2015-03-13 17:15:45 +00:00
Roland Gruber 187b51978e added addPDFKeyValue() 2015-03-11 20:50:37 +00:00
Roland Gruber 5392204173 added debug output 2015-03-11 20:14:36 +00:00
Roland Gruber 3f92c0d8f1 hint for master/slave 2015-03-09 17:20:24 +00:00
Roland Gruber 217b947ea1 added addPDFKeyValue() 2015-03-08 20:09:18 +00:00
Roland Gruber 03344bfada removed obsolete code 2015-03-08 19:34:22 +00:00
Roland Gruber ebe9d4aca2 fixed typo 2015-03-01 19:20:29 +00:00
Roland Gruber 3d0ddd7708 added addPDFKeyValue() 2015-03-01 19:20:17 +00:00
Roland Gruber acd5de4abf support password change with old password 2015-03-01 16:48:25 +00:00
Roland Gruber af5191366f allow to sync members from group of names (RFE 116) 2015-03-01 14:45:45 +00:00
Roland Gruber b9880c437b docs update 2015-03-01 14:44:41 +00:00
Roland Gruber c7ccb8ca38 custom security questions in self service 2015-03-01 12:44:33 +00:00
Roland Gruber 7e41184e8f PHP 5.3.2 required 2015-03-01 10:30:24 +00:00
Roland Gruber 4324843792 obfuscation fix 2015-03-01 10:15:04 +00:00
Roland Gruber edafcbb170 allow to set tree view in debug mode 2015-02-23 19:03:53 +00:00
Roland Gruber a85d7174e5 #120 Use HTTP_X_REAL_IP to log ip addresses 2015-02-17 18:31:52 +00:00
Roland Gruber 75b42a68ff check if accounts are edited in multiple browser tabs 2015-02-16 19:54:21 +00:00
Roland Gruber 8d9eb36e0c support SASL as password hash 2015-02-11 17:00:41 +00:00
Roland Gruber 5b776dfef4 support SASL as password hash 2015-02-11 16:59:57 +00:00
Roland Gruber b57015ff3f support SASL as password hash 2015-02-11 16:57:38 +00:00
Roland Gruber 8ab35a11de 2015-01-23 20:51:38 +00:00
Roland Gruber 758a7abe5d support image file size limit and cropping (requires php-imagick) in self service 2015-01-23 20:51:15 +00:00
Roland Gruber 4ce3c72cab use IfModule instead of IfVersion 2015-01-09 21:56:19 +00:00
Roland Gruber 42abddfc7c allow to print primary group members 2015-01-07 17:33:06 +00:00
Roland Gruber 8c27a44cf8 added $pdfKeys to get_pdfEntries 2015-01-07 17:18:42 +00:00
Roland Gruber 8a4bb431a7 added $pdfKeys to get_pdfEntries 2015-01-07 17:16:35 +00:00
Roland Gruber 250256f273 2015-01-01 16:57:27 +00:00
Roland Gruber 978a3519ff config templates 2015-01-01 16:53:58 +00:00
Roland Gruber 806a534a73 config templates 2015-01-01 16:49:02 +00:00
Roland Gruber 56aa9bd25f config templates 2015-01-01 16:34:04 +00:00
Roland Gruber 844f8a4418 config templates 2015-01-01 16:18:45 +00:00
Roland Gruber c66c91fa8d 2014-12-25 07:32:43 +00:00
Roland Gruber a8159dc4e0 templates for server profiles 2014-12-25 07:31:04 +00:00
Roland Gruber 772b9c3127 refactoring 2014-12-22 20:21:54 +00:00
Roland Gruber f862f9bd8e no more Samba 3 in config template 2014-12-22 20:03:10 +00:00
Roland Gruber c6902624aa 2014-12-16 19:06:24 +00:00
Roland Gruber dc847e19f2 2014-12-16 19:06:08 +00:00
Roland Gruber 1f94c4b924 do not display AD technical error message 2014-12-11 20:00:58 +00:00
Roland Gruber 77fe535ee6 translation update 2014-12-11 18:31:13 +00:00
Roland Gruber 1676c1b81d fixed LDAP_DEREF_NEVER 2014-12-11 18:22:35 +00:00
Roland Gruber 261a794249 translation update 2014-12-05 17:48:54 +00:00
Roland Gruber d798eda323 2014-12-05 17:47:09 +00:00
Roland Gruber 83d7352e35 translation update 2014-12-04 17:46:18 +00:00
Roland Gruber 80db0b103a translation update 2014-12-01 19:28:48 +00:00
Roland Gruber 0a63e69b23 fixed log level 2014-12-01 19:18:50 +00:00
Roland Gruber 4f502d207a 2014-11-30 17:32:33 +00:00
Roland Gruber 390925184c 2014-11-30 16:39:13 +00:00
Roland Gruber 05e2bfadce 2014-11-30 16:38:54 +00:00
Roland Gruber 1e2bd921a7 2014-11-30 16:37:50 +00:00
Roland Gruber 2a0d383180 translation update 2014-11-30 16:36:49 +00:00
Roland Gruber d62ab9b138 added userPrincipalName as self service search attribute 2014-11-30 10:40:43 +00:00
Roland Gruber ecb08a6141 support paged results 2014-11-29 17:40:39 +00:00
Roland Gruber 700182bed4 lamdaemon update 2014-11-29 17:31:58 +00:00
Roland Gruber 79fd504a7e new standards version 2014-11-23 16:36:04 +00:00
Roland Gruber 8561e62fde allow to enter page number in list view (#114) 2014-11-10 20:51:04 +00:00
Roland Gruber 7ad3ff978f allow to change order of account modules 2014-11-02 19:16:18 +00:00
Roland Gruber 85cd14436d allow to change order of account modules 2014-10-26 16:24:44 +00:00
Roland Gruber e19ed3bfa4 added option to follow referrals 2014-10-26 09:33:43 +00:00
Roland Gruber c2fe307059 support radiusProfileDn 2014-10-25 19:21:04 +00:00
Roland Gruber 4fe383cf2b 2014-10-25 19:18:03 +00:00
Roland Gruber 092ca3ff57 added isLoggedIn() 2014-10-25 19:17:53 +00:00
Roland Gruber 6d1904ffd6 support radiusProfileDn 2014-10-25 19:00:10 +00:00
Roland Gruber 0c0a3a13bf added dialupAccess 2014-10-25 17:41:39 +00:00
Roland Gruber 7d68a61681 max height+width for photos 2014-10-25 13:13:44 +00:00
Roland Gruber 260a8dbf02 PHP compatibility fix 2014-10-25 13:00:00 +00:00
Roland Gruber 1955ee9e4f translation update 2014-10-25 10:18:06 +00:00
Roland Gruber 6768c0843a 2014-10-07 07:36:39 +00:00
Roland Gruber 396ca14811 removed default self service profile 2014-10-05 18:38:27 +00:00
Roland Gruber 9d8af56228 removed default self service profile 2014-10-05 18:28:41 +00:00
Roland Gruber 2b40157434 removed default self service profile 2014-10-05 18:24:02 +00:00
Roland Gruber 246d4a8bab removed default self service profile 2014-10-05 18:18:58 +00:00
Roland Gruber aa916f8a5e removed obsolete .htaccess files 2014-10-05 17:54:48 +00:00
Roland Gruber a0d8842433 removed obsolete .htaccess files 2014-10-05 17:47:43 +00:00
Roland Gruber b7a193150e 2014-10-05 17:36:07 +00:00
Roland Gruber a295102397 2014-10-05 17:35:47 +00:00
Roland Gruber c1ef1bbfb4 better description of upgrade 2014-10-05 17:07:01 +00:00
Roland Gruber 83a34888a2 fixed default profile 2014-10-05 16:50:40 +00:00
Roland Gruber 982ed0ae27 trim LDAP suffix 2014-10-01 18:45:15 +00:00
Roland Gruber f18bc7e38c reverted last change 2014-10-01 18:42:27 +00:00
Roland Gruber 27c68d11b9 fix for DN that includes a " ," 2014-10-01 18:13:16 +00:00
Roland Gruber 311c106690 fixed problem with DN check 2014-09-30 17:19:05 +00:00
Roland Gruber 0e547029d8 remove obsolete .htaccess files 2014-09-30 17:17:15 +00:00
Roland Gruber d821c4b846 2014-09-28 08:00:35 +00:00
Roland Gruber 84378b7664 2014-09-28 08:00:15 +00:00
Roland Gruber 155770df62 translation update 2014-09-28 07:24:05 +00:00
Roland Gruber bc9019d9b9 fixed language selection 2014-09-28 07:16:14 +00:00
Roland Gruber 203f5f25d6 translation update 2014-09-25 16:11:29 +00:00
Roland Gruber 831bd71350 translation update 2014-09-25 16:08:36 +00:00
Roland Gruber 275fefa007 translation update 2014-09-25 16:06:31 +00:00
Roland Gruber f140d40823 translation update 2014-09-24 20:50:30 +00:00
Roland Gruber fd41e12e64 translation update 2014-09-24 18:42:51 +00:00
Roland Gruber 123d818567 password dialog 2014-09-21 19:52:30 +00:00
Roland Gruber 8df830d281 enter in password field presses button 2014-09-21 19:28:56 +00:00
Roland Gruber 3d8c0e7dcc performance fixes 2014-09-21 18:09:44 +00:00
Roland Gruber 4d3b81881a 2014-09-21 18:08:18 +00:00
Roland Gruber 463548c948 performance fixes 2014-09-21 15:06:11 +00:00
Roland Gruber 169cb977f0 added .pdf extension 2014-09-21 14:19:06 +00:00
Roland Gruber 037e663de0 4.7 2014-09-15 16:20:33 +00:00
Roland Gruber 8319d923ff 2014-09-15 16:11:05 +00:00
Roland Gruber a800fdd8a2 2014-09-15 16:06:51 +00:00
Roland Gruber f0ff3b9425 2014-09-14 19:59:43 +00:00
Roland Gruber d898a643ac 2014-09-14 19:50:53 +00:00
Roland Gruber 06d988de34 2014-09-14 19:27:02 +00:00
Roland Gruber 0e2049a58c 2014-09-14 19:26:41 +00:00
Roland Gruber aebc5b9a19 translation update 2014-09-14 19:16:56 +00:00
Roland Gruber 2d57aba435 translation update 2014-09-13 14:49:55 +00:00
Roland Gruber 6d86cef692 support pooling of IP ranges (RFE 107) 2014-09-13 14:43:44 +00:00
Roland Gruber 2131405664 fixed display problem with language tags 2014-08-31 19:42:17 +00:00
Roland Gruber 4f124b1d0f support Nginx 2014-08-26 18:19:31 +00:00
Roland Gruber 849ffead99 fixed Debian bug 758070 regarding directory test 2014-08-21 19:14:50 +00:00
Roland Gruber 5259a9e48e memory limit 2014-08-19 18:03:50 +00:00
Roland Gruber 0d9a99b22b added check if object is in correct suffix 2014-08-12 18:24:59 +00:00
Roland Gruber f45c84b253 support Nginx 2014-07-27 17:48:59 +00:00
Roland Gruber a67f498075 support Nginx 2014-07-27 17:48:25 +00:00
Roland Gruber ef400b8359 replace $user and $group in displayName 2014-07-27 15:51:00 +00:00
Roland Gruber e5e219f35c preset alternate email with backup email address (RFE 111) 2014-07-27 13:24:19 +00:00
Roland Gruber de8b444e39 support pager 2014-07-27 11:10:42 +00:00
Roland Gruber 55acc04483 always set sAMAccountName 2014-07-26 12:44:32 +00:00
Roland Gruber 97e99a709b 2014-07-23 15:58:12 +00:00
Roland Gruber 02ddc9b427 sort PDF output 2014-07-17 19:34:51 +00:00
Roland Gruber acfbd2fb6f 2014-07-15 18:18:39 +00:00
Roland Gruber 9a762e4e64 2014-07-15 18:17:47 +00:00
Roland Gruber ad463e6dc3 renamed abc_sample to abc.sample 2014-07-12 14:31:00 +00:00
Roland Gruber d106d9d6a9 renamed abc_sample to abc.sample 2014-07-12 14:28:52 +00:00
Roland Gruber 86cdccd4f3 renamed abc_sample to abc.sample 2014-07-12 14:24:05 +00:00
Roland Gruber d3be7dd2c7 renamed abc_sample to abc.sample 2014-07-12 14:23:41 +00:00
Roland Gruber 8d110afacd 2014-07-12 14:17:22 +00:00
Roland Gruber 4413d34f29 fix for can_manage() 2014-07-12 14:12:19 +00:00
Roland Gruber 1129cbce33 runEditPagePostAction() with reference to accout container 2014-07-12 13:39:07 +00:00
Roland Gruber c40ce39bb8 allow types to specify config options 2014-07-12 13:29:15 +00:00
Roland Gruber 0e170f56ff allow % in user/group names 2014-07-03 20:01:44 +00:00
Roland Gruber 1d5d39f7f6 2014-06-12 17:12:43 +00:00
Roland Gruber 329ba771e1 2014-06-12 16:24:21 +00:00
Roland Gruber 6524455cea 2014-06-12 16:23:45 +00:00
Roland Gruber 9cb642ba14 translation update 2014-06-11 15:47:04 +00:00
Roland Gruber 87c1c6eb09 translation update 2014-06-11 15:43:45 +00:00
Roland Gruber e1aba5bccf translation update 2014-06-10 17:29:33 +00:00
Roland Gruber a6f53f0ef0 fixed links 2014-06-02 20:57:43 +00:00
Roland Gruber b852fc67c0 translation update 2014-06-01 17:27:55 +00:00
Roland Gruber f887d98b32 translation update 2014-06-01 06:57:18 +00:00
Roland Gruber 151aa9823c 2014-05-31 14:09:20 +00:00
Roland Gruber 824b9b1c43 2014-05-31 13:54:33 +00:00
Roland Gruber 97cab1447a 2014-05-31 13:54:12 +00:00
Roland Gruber 59cd76ca7f 2014-05-31 13:52:01 +00:00
Roland Gruber b92588c8f2 2014-05-31 13:51:36 +00:00
Roland Gruber 4875dc3a39 translation update 2014-05-31 13:51:22 +00:00
Roland Gruber 93a4819b99 auto PTR management 2014-05-31 13:40:43 +00:00
Roland Gruber c0037bee34 translation update 2014-05-30 15:27:05 +00:00
Roland Gruber d54c690a62 fix for module caching 2014-05-26 18:42:55 +00:00
Roland Gruber 662bd53e91 added graphical hint if password does not match policy 2014-05-25 17:29:19 +00:00
Roland Gruber fba01c0ada added graphical hint if password values are not equal 2014-05-25 14:37:05 +00:00
Roland Gruber 10cc9ae872 move homedir via lamdaemon 2014-05-22 19:26:10 +00:00
Roland Gruber ccf5c7a8cc added note for apt-get -f install 2014-05-16 15:16:16 +00:00
Roland Gruber 7d55dcca99 support users/groups without correct object class on Windows 2014-05-15 19:30:46 +00:00
Roland Gruber 5814dc495b sudo roles: added "not before", "not after" and order 2014-05-03 18:48:11 +00:00
Roland Gruber c49a0669b7 sudo roles: added "not before", "not after" and order 2014-05-03 18:47:43 +00:00
Roland Gruber 555983b92d support header text 2014-05-03 13:28:37 +00:00
Roland Gruber df5b96e1f3 support ou, uid and description in self service 2014-05-03 09:33:44 +00:00
Roland Gruber 0e74a752f8 allow multiple cn values 2014-04-21 19:21:47 +00:00
Roland Gruber 180d2a8800 allow to display all PHP errors 2014-04-21 10:52:46 +00:00
Roland Gruber e7434df3a1 made can_manage() abstract in baseModule to save memory 2014-04-21 10:32:00 +00:00
Roland Gruber 5e5ac7f169 2014-04-20 13:19:37 +00:00
Roland Gruber e47bf042a8 2014-04-20 13:15:37 +00:00
Roland Gruber 5b73ecb074 phpUnit 2014-04-20 13:15:19 +00:00
Roland Gruber 11e6a3fb66 made can_manage() abstract in baseModule to save memory 2014-04-20 13:00:42 +00:00
Roland Gruber 6cd040e9c1 made can_manage() abstract in baseModule to save memory 2014-04-20 12:59:36 +00:00
Roland Gruber 58dead0b75 made can_manage() abstract in baseModule to save memory 2014-04-20 12:59:14 +00:00
Roland Gruber 9b0e712317 reduced upload code 2014-04-18 18:29:51 +00:00
Roland Gruber 1372c4645a reduced upload code 2014-04-18 09:03:31 +00:00
Roland Gruber f564879f09 extended password policy 2014-04-17 19:26:08 +00:00
Roland Gruber 3a6c38996a reduced upload code 2014-04-15 19:49:47 +00:00
Roland Gruber 55ef9496db 2014-04-15 19:22:42 +00:00
Roland Gruber 0e150b1db1 2014-04-15 19:22:18 +00:00
Roland Gruber 77d27d7ca9 2014-04-15 19:21:25 +00:00
Roland Gruber 5ece0c8391 reduced upload code 2014-04-13 16:59:56 +00:00
Roland Gruber 65d47fee7c 2014-04-13 11:38:08 +00:00
Roland Gruber fee3862dd2 reduced upload code 2014-04-13 11:37:32 +00:00
Roland Gruber 4c38fa8564 reduced upload code 2014-04-13 10:50:59 +00:00
Roland Gruber 6d726b9a4c reduced upload code 2014-04-12 17:52:33 +00:00
Roland Gruber 3f830115f1 fixed message when column is unique but not required 2014-04-12 17:51:47 +00:00
Roland Gruber 3fce6ba2a8 support device in host selection 2014-04-12 12:35:05 +00:00
Roland Gruber 88221fcbd4 ckeditor 4.3.4 2014-04-11 20:22:45 +00:00
Roland Gruber 77aff6c3ab ckeditor 4.3.4 2014-04-11 20:19:54 +00:00
Roland Gruber ace6f7d7d8 ckeditor 4.3.4 2014-04-11 20:07:18 +00:00
Roland Gruber b59508b051 ckeditor 4.3.4 2014-04-11 20:05:45 +00:00
Roland Gruber ecb85b4afb ckeditor 4.3.4 2014-04-11 20:04:33 +00:00
Roland Gruber 58ee83870c ckeditor 4.3.4 2014-04-11 20:03:10 +00:00
Roland Gruber 03da48ccae fixed problem in delete view 2014-04-06 16:39:51 +00:00
Roland Gruber ddf40d1783 extended password policy 2014-04-05 18:43:34 +00:00
Roland Gruber b1097df77b extended password policy 2014-04-05 18:42:46 +00:00
Roland Gruber 85f21de260 allow to disable Unix group membership management 2014-03-30 07:47:44 +00:00
Roland Gruber d6b54ec38b updated to phpseclib 0.3.6 2014-03-30 07:03:05 +00:00
Roland Gruber 89c8180032 updated to phpseclib 0.3.6 2014-03-30 07:02:44 +00:00
Roland Gruber 2ba23fbb35 updated to phpseclib 0.3.6 2014-03-30 07:02:09 +00:00
Roland Gruber 74c0d76017 updated to phpseclib 0.3.6 2014-03-30 06:59:06 +00:00
Roland Gruber 69ccd12855 updated to phpseclib 0.3.6 2014-03-30 06:58:05 +00:00
Roland Gruber 0e5583298b updated to phpseclib 0.3.6 2014-03-30 06:57:20 +00:00
Roland Gruber 9bfd16cbf9 updated to phpseclib 0.3.6 2014-03-30 06:55:33 +00:00
Roland Gruber f6f8767607 set logo via CSS 2014-03-29 11:11:37 +00:00
Roland Gruber a2bdec6afe set logo via CSS 2014-03-29 11:04:14 +00:00
Roland Gruber dee5bce3c4 set logo via CSS 2014-03-29 09:55:25 +00:00
Roland Gruber b7e7a958f5 translation update 2014-03-17 18:51:19 +00:00
Roland Gruber 44894dbe36 2014-03-17 18:45:27 +00:00
Roland Gruber 4be4dfd314 2014-03-17 18:45:00 +00:00
Roland Gruber b603a8850e translation update 2014-03-14 18:19:46 +00:00
Roland Gruber d05538aeff PDF manual 2014-03-11 20:56:07 +00:00
Roland Gruber adbe5e8bf8 PDF manual 2014-03-11 17:11:06 +00:00
Roland Gruber 899377adad PDF manual 2014-03-11 16:52:52 +00:00
Roland Gruber c0b0fc8d7e PDF manual 2014-03-11 16:36:35 +00:00
Roland Gruber 7b9fbf1919 translation update 2014-03-10 21:40:25 +00:00
Roland Gruber de6c4a216d PDF manual 2014-03-10 19:12:45 +00:00
Roland Gruber fee7b3fa51 PDF manual 2014-03-10 19:12:06 +00:00
Roland Gruber f56b7bd643 PDF manual 2014-03-10 18:48:31 +00:00
Roland Gruber 595fb2b454 PDF manual 2014-03-10 18:46:28 +00:00
Roland Gruber 84c4391324 translation update 2014-03-10 17:04:02 +00:00
Roland Gruber 26e39ac8ad translation update 2014-03-10 16:54:13 +00:00
Roland Gruber c4c37c0471 2014-03-09 11:36:29 +00:00
Roland Gruber c076ccb66b generate single page HTML, too 2014-03-09 11:35:54 +00:00
Roland Gruber 100a6fa72f 2014-03-08 16:44:32 +00:00
Roland Gruber ccb7f0119a added option for accordion view 2014-03-08 16:37:16 +00:00
Roland Gruber f50c5cf641 2014-03-08 13:46:57 +00:00
Roland Gruber e7583cd8eb minify JS files 2014-03-08 13:45:26 +00:00
Roland Gruber 314ba9d0e2 minify JS files 2014-03-08 13:43:17 +00:00
Roland Gruber 5e304edd98 minify JS files 2014-03-08 13:40:14 +00:00
Roland Gruber c5385ecbc4 added link to license file 2014-03-08 13:39:47 +00:00
Roland Gruber dc4c045201 minify JS files 2014-03-08 13:37:43 +00:00
Roland Gruber c0a4fecfec minify JS files 2014-03-08 13:30:43 +00:00
Roland Gruber 4e730d6858 minify JS files 2014-03-08 13:26:51 +00:00
Roland Gruber 73552aa780 minify JS files 2014-03-08 10:34:47 +00:00
Roland Gruber 51ef9d0d65 2014-03-08 09:52:06 +00:00
Roland Gruber 7a2f3a97d5 fixed duplicate members (167) 2014-03-08 09:13:21 +00:00
Roland Gruber 75939766b1 translation update 2014-03-07 19:13:51 +00:00
Roland Gruber 7cc868fb3b reverted last change 2014-03-06 20:13:11 +00:00
Roland Gruber 5c58d2c140 no extra white space for image-only buttons 2014-03-06 20:08:44 +00:00
Roland Gruber dfec83853e translation update 2014-03-06 17:39:22 +00:00
Roland Gruber d2563c3b67 removed jQuery chosen plugin 2014-03-02 19:50:48 +00:00
Roland Gruber e7807d9727 2014-03-02 19:30:34 +00:00
Roland Gruber c5c3662b07 2014-03-02 19:30:07 +00:00
Roland Gruber 62f77d2341 2014-03-02 19:28:32 +00:00
Roland Gruber 574be6c18f 2014-03-02 19:28:08 +00:00
Roland Gruber 0e1e6111fd no longer include phpdoc 2014-03-02 19:24:13 +00:00
Roland Gruber 5f2e8fadea no minified JS code in repo 2014-03-02 18:30:03 +00:00
Roland Gruber 3d086e93d4 removed jQuery chosen plugin 2014-03-02 18:23:38 +00:00
Roland Gruber 2165d2cc4c translation update 2014-03-02 11:48:59 +00:00
Roland Gruber 4ccafe1145 translation update 2014-03-02 11:35:53 +00:00
Roland Gruber 5cc16a6957 translate AD password policy error 2014-02-27 20:50:57 +00:00
Roland Gruber 01719b9899 disable browser auto-completion 2014-02-27 20:50:25 +00:00
Roland Gruber 1110c7f56f 2014-02-27 17:06:13 +00:00
Roland Gruber 9669bb0690 use type filters when searching for groups (bug 165) 2014-02-27 17:04:18 +00:00
Roland Gruber 85fa2b8bf0 use type filters when searching for groups (bug 165) 2014-02-26 20:45:11 +00:00
Roland Gruber 59ad00f9d2 support type filters without parenthesis 2014-02-26 20:13:16 +00:00
Roland Gruber 72952501fc use type filters when searching for groups (bug 165) 2014-02-26 20:02:50 +00:00
Roland Gruber eb38d77491 NIS mail alias support on user page 2014-02-22 17:28:59 +00:00
Roland Gruber c0a6eed8bc support to add recipient to existing alias entries 2014-02-22 14:12:12 +00:00
Roland Gruber 3e4b2c9db4 support to create alias entries 2014-02-22 13:03:29 +00:00
Roland Gruber d593df8eeb make getOUs() protected 2014-02-22 13:03:01 +00:00
Roland Gruber da3e69ae0d supported LDAP servers 2014-02-22 13:02:26 +00:00
Roland Gruber e6eebe0d81 allow to manage mail aliases in user entry 2014-02-20 20:50:35 +00:00
Roland Gruber 7bbdec0498 disable form autocompletion 2014-02-20 17:14:22 +00:00
Roland Gruber d88882a123 fixed DN display in list 2014-02-16 16:20:41 +00:00
Roland Gruber 9b5b0aa9ff backup email address for password self reset 2014-02-16 12:18:59 +00:00
Roland Gruber cadeafd496 added NIS attributes for Windows 2014-02-12 19:39:51 +00:00
Roland Gruber 36f09e7a73 reduce upload code 2014-02-11 19:31:22 +00:00
Roland Gruber 6926b7cbde enhanced password mail sending 2014-02-10 19:16:37 +00:00
Roland Gruber 400b66f647 Oracle database support 2014-02-09 18:10:34 +00:00
Roland Gruber 60dd44710e Oracle database support 2014-02-09 18:06:41 +00:00
Roland Gruber 3badc0ec56 Oracle database support 2014-02-09 17:51:11 +00:00
Roland Gruber 945651148f Oracle database support 2014-02-09 14:48:49 +00:00
Roland Gruber 543c9322ea Oracle database support 2014-02-09 14:47:35 +00:00
Roland Gruber 0ac34b07a4 added description field, support to add existing host, fixed active flag 2014-02-08 15:06:02 +00:00
Roland Gruber c2d22b6e46 fixed docs 2014-02-08 15:05:15 +00:00
Roland Gruber 74d96a099c fixed typo 2014-02-07 20:10:41 +00:00
Roland Gruber acfb2c8e57 support help text for custom fields 2014-02-06 19:19:29 +00:00
Roland Gruber 6f690a27f7 check if email is already in use 2014-02-06 18:43:06 +00:00
Roland Gruber bcff255441 earlier check for duplicate user names 2014-02-06 17:34:56 +00:00
Roland Gruber 53d611e9e2 earlier check for duplicate user names 2014-02-06 17:29:58 +00:00
Roland Gruber 577be7d5a5 support help text for custom fields 2014-02-06 17:29:04 +00:00
Roland Gruber d526ff09a8 language selection for self service 2014-02-02 17:02:08 +00:00
Roland Gruber ab2d400b2b language selection for self service 2014-02-02 16:32:39 +00:00
Roland Gruber afc9b6e1a5 updated language handling 2014-02-02 12:36:12 +00:00
Roland Gruber 7cebc19276 "select all" link on top 2014-02-01 18:31:56 +00:00
Roland Gruber 4eb336db70 "select all" link on top 2014-02-01 15:32:44 +00:00
Roland Gruber 959a058ee5 fixed missing main config 2014-02-01 15:32:24 +00:00
Roland Gruber dccabdaacf better sorting and auto-completion for hosts 2014-01-28 20:00:47 +00:00
Roland Gruber 6a8f3e5c4e display as text box when > 50 recipients 2014-01-27 19:40:50 +00:00
Roland Gruber c62a5693af support Bind DLZ TXT/SRV 2014-01-26 18:46:36 +00:00
Roland Gruber abb3c21f59 reduced memory usage 2014-01-25 14:14:46 +00:00
Roland Gruber aae1bc78f1 updated the default profile 2014-01-23 20:02:55 +00:00
Roland Gruber 395910f6f2 init module settings 2014-01-23 19:23:48 +00:00
Roland Gruber c39fe8497a 2014-01-20 16:51:53 +00:00
Roland Gruber 63dc4fb588 2014-01-20 16:51:26 +00:00
Roland Gruber 36d216c935 enable version module 2014-01-20 16:45:12 +00:00
Roland Gruber d47b7fd080 added hint for PHP Imagick 2014-01-20 16:35:37 +00:00
Roland Gruber 7e28c3ba11 support for organizationalRole entries 2014-01-19 13:30:30 +00:00
Roland Gruber 660e290ab3 fixed extension check (bug 162) 2014-01-18 19:25:44 +00:00
Roland Gruber 8493c83dcd increase memory limit 2014-01-18 19:23:40 +00:00
Roland Gruber 914cd0d13d fixed extension check (bug 162) 2014-01-18 17:25:08 +00:00
Roland Gruber 846ebe2f80 fixed problems of module cache 2014-01-18 11:45:46 +00:00
Roland Gruber 0d6354a6dc support for organizationalRole entries 2014-01-18 11:40:24 +00:00
Roland Gruber 327a354f11 support for organizationalRole entries 2014-01-18 11:39:19 +00:00
Roland Gruber 745a987705 support for organizationalRole entries 2014-01-18 11:38:38 +00:00
Roland Gruber a6ce7e7f26 support for organizationalRole entries 2014-01-18 09:56:29 +00:00
Roland Gruber 188191889f fix for inactive types 2014-01-18 09:55:56 +00:00
Roland Gruber 2d59facb16 support for organizationalRole entries 2014-01-18 08:17:30 +00:00
Roland Gruber 34ec7419c9 support for organizationalRole entries 2014-01-18 08:16:47 +00:00
Roland Gruber 848b444382 fixed problems of module cache 2014-01-17 18:13:15 +00:00
Roland Gruber a7d3773493 allow to set single account types read-only 2014-01-15 20:48:52 +00:00
Roland Gruber 4b9c4bf535 allow to select users in mail alias module 2014-01-14 18:59:44 +00:00
Roland Gruber 219bde94fe extended htmlAccountPageButton 2014-01-14 18:51:36 +00:00
Roland Gruber 03fd7c0f96 allow to select users 2014-01-14 18:50:54 +00:00
Roland Gruber 0967291ef3 clear sudo entries on delete 2014-01-14 18:08:13 +00:00
Roland Gruber 56f4626626 added separate IP list for self service 2014-01-12 19:58:15 +00:00
Roland Gruber b99f5b3928 removed obsolete code 2014-01-12 19:52:39 +00:00
Roland Gruber 9d76d03b5e fixed getCallingURL 2014-01-12 19:52:14 +00:00
Roland Gruber f558f1f545 document SMTP setup 2014-01-12 15:27:07 +00:00
Roland Gruber ce22f01bb7 added performance chapter 2014-01-12 11:17:16 +00:00
Roland Gruber 750a118884 make session encryption optional 2014-01-12 11:08:43 +00:00
Roland Gruber 14a619989e added option if referrals should be followed 2014-01-12 10:18:35 +00:00
Roland Gruber fe3463b77a added performance chapter 2014-01-11 14:08:47 +00:00
Roland Gruber ce5eb71111 read-only fields for inetOrgPerson 2014-01-06 14:39:26 +00:00
Roland Gruber 681d855088 read-only fields for inetOrgPerson 2014-01-06 14:29:09 +00:00
Roland Gruber 4a12632936 preselect last used profile 2014-01-05 14:00:32 +00:00
Roland Gruber bf7384104a made more clear when post scripts are not run 2013-12-30 18:50:56 +00:00
Roland Gruber 630aab2df1 allow password mails for new accounts 2013-12-29 18:10:26 +00:00
Roland Gruber 0c4c2c4cf6 performance fix 2013-12-29 10:31:40 +00:00
Roland Gruber 28b37af889 IMAP dynamic login names 2013-12-29 09:50:41 +00:00
Roland Gruber 066dc11564 2013-12-28 10:49:06 +00:00
Roland Gruber a855be6f63 allow $user, $firstname, $lastname wildcards 2013-12-28 10:48:54 +00:00
Roland Gruber 25d6611231 fill default user name from AD module 2013-12-28 10:48:31 +00:00
Roland Gruber 7538def6f7 allow $user, $firstname, $lastname wildcards 2013-12-28 10:47:50 +00:00
Roland Gruber 27585a01a5 deactivate jQuery chosen 2013-12-27 17:33:46 +00:00
Roland Gruber 9c458ea93e support mailbox quota 2013-12-27 16:26:26 +00:00
Roland Gruber 06247fd84a fixed width 2013-12-26 16:29:11 +00:00
Roland Gruber 907c62663e use chosen for select boxes 2013-12-26 16:09:30 +00:00
Roland Gruber 9edfe22754 added photo options 2013-12-26 16:08:55 +00:00
Roland Gruber a6cc0d8a3e allow to upload PEM certificates with junk data before cert data 2013-12-26 11:35:49 +00:00
Roland Gruber cfd8abc3e6 auto add aobject classes fix 2013-12-26 11:22:45 +00:00
Roland Gruber 689bdebbc3 fix for renaming entries in AD 2013-12-26 11:22:26 +00:00
Roland Gruber f56b723e60 fixed password setting for AD 2013-12-26 11:06:11 +00:00
Roland Gruber b7a675c950 fixed password setting for AD 2013-12-26 11:00:13 +00:00
Roland Gruber c0da431914 fix for AD 2013-12-26 10:58:58 +00:00
Roland Gruber 32f4e3f313 added example for smaller fonts 2013-12-22 13:46:45 +00:00
Roland Gruber 55af0e8a62 more debug output 2013-12-22 12:24:15 +00:00
Roland Gruber 5d862fff7c 2013-12-22 12:23:45 +00:00
Roland Gruber 85a784d8ba translation update 2013-12-20 16:32:52 +00:00
Roland Gruber d2783a7bd9 2013-12-18 17:38:25 +00:00
Roland Gruber f018c27101 added self service proxy 2013-12-18 17:37:36 +00:00
Roland Gruber f3ce5f6df3 2013-12-18 17:37:07 +00:00
Roland Gruber 94334c3834 2013-12-18 17:36:51 +00:00
Roland Gruber 550edfe4e3 support for Ukrainian 2013-12-17 20:29:51 +00:00
Roland Gruber 8d6a873a1f support for Ukrainian 2013-12-17 20:24:37 +00:00
Roland Gruber 33bfa56ad0 fixed PHP notice 2013-12-17 20:24:13 +00:00
Roland Gruber 2ae6635e0f support for Ukrainian 2013-12-17 20:21:32 +00:00
Roland Gruber c5e9c3a113 support for Ukrainian 2013-12-17 20:21:06 +00:00
Roland Gruber d095472e9b translation update 2013-12-15 16:34:37 +00:00
Roland Gruber 4d724d930b translation update 2013-12-14 19:07:51 +00:00
Roland Gruber 98342316cd translation update 2013-12-14 12:16:21 +00:00
Roland Gruber 593748507f added php5-json 2013-12-08 12:12:13 +00:00
Roland Gruber a66f2c4151 translation update 2013-12-08 11:40:04 +00:00
Roland Gruber f2d7069f6d translation update 2013-12-07 16:49:23 +00:00
Roland Gruber 7a20131b65 translation update 2013-12-05 19:38:46 +00:00
Roland Gruber ee4c13d2b4 translation update 2013-12-04 21:20:46 +00:00
Roland Gruber 3565612cc6 do not run empty LDAP operations 2013-12-04 18:11:49 +00:00
Roland Gruber 11110a4e39 2013-12-01 16:33:52 +00:00
Roland Gruber 6107bc13be 4.4 2013-12-01 12:14:16 +00:00
Roland Gruber 15fc38675e 4.4 2013-12-01 12:13:58 +00:00
Roland Gruber 064350590f support US English 2013-12-01 10:03:12 +00:00
Roland Gruber 0fedef433b try to fix Samba4 tree problems 2013-12-01 10:02:48 +00:00
Roland Gruber c74c838bd9 support US English 2013-12-01 10:02:20 +00:00
Roland Gruber aaae31c315 support for Turkish 2013-11-30 15:05:40 +00:00
Roland Gruber 04c0796f9e allow to relabel self service fields 2013-11-30 15:02:06 +00:00
Roland Gruber 6e3f499976 support for Turkish 2013-11-29 19:48:07 +00:00
Roland Gruber c5b3402abd support for Turkish 2013-11-29 19:47:50 +00:00
Roland Gruber 4fcb0c270e support for Turkish 2013-11-29 19:47:29 +00:00
Roland Gruber bd9f619c6e allow removal of extension 2013-11-24 12:01:54 +00:00
Roland Gruber 1ca279d353 fix for random numbers 2013-11-24 10:04:46 +00:00
Roland Gruber e972e9d071 fixed renaming of entries 2013-11-24 10:04:19 +00:00
Roland Gruber 2bac9ccff8 added home drive and home directory 2013-11-23 14:40:06 +00:00
Roland Gruber 50f9e17be4 fixed help escaping 2013-11-23 14:39:41 +00:00
Roland Gruber 779941bda0 multi edit tool 2013-11-23 13:51:48 +00:00
Roland Gruber bbda539377 multi edit tool 2013-11-23 13:22:54 +00:00
Roland Gruber ba135d33e2 fixed help 2013-11-23 13:22:31 +00:00
Roland Gruber a934c7c769 multi edit tool 2013-11-19 20:10:03 +00:00
Roland Gruber 8bc0489f39 multi edit tool 2013-11-18 21:52:27 +00:00
Roland Gruber b323d66ffd removed mail aliases 2013-11-18 17:39:59 +00:00
Roland Gruber b1d5aa8ac2 multi edit tool 2013-11-17 19:05:10 +00:00
Roland Gruber d2e078c269 Bind DLZ update 2013-11-17 10:17:33 +00:00
Roland Gruber cbe36660ea fixed error message 2013-11-17 10:16:58 +00:00
Roland Gruber fad3f0b47a new version 2013-11-17 10:16:07 +00:00
Roland Gruber d98d4387c7 new version 2013-11-17 10:15:38 +00:00
Roland Gruber 8352a81fc7 selfRegistration: support constant values 2013-11-10 12:58:56 +00:00
Roland Gruber 5fd9b3edc7 Apache 2.4 support 2013-11-10 10:44:30 +00:00
Roland Gruber 2256e0100e Apache 2.4 support 2013-11-10 10:43:52 +00:00
Roland Gruber b4f41ca543 Apache 2.4 support 2013-11-10 10:22:08 +00:00
Roland Gruber 9c2a727e7a 2013-11-10 10:08:26 +00:00
Roland Gruber 192eab74b4 2013-11-10 10:08:07 +00:00
Roland Gruber b6d8f995bc Apache 2.4 support 2013-11-10 10:06:22 +00:00
Roland Gruber bdaa5960c2 Apache 2.4 support 2013-11-10 10:05:45 +00:00
Roland Gruber 0b57f01f3a selinux hint 2013-11-10 10:04:56 +00:00
Roland Gruber 916e5474c4 support systemctl 2013-11-09 13:27:20 +00:00
Roland Gruber 0ccb20a343 Windows user: support userPrincipalName 2013-11-09 13:26:31 +00:00
Roland Gruber fe843a990a typo 2013-11-09 13:25:45 +00:00
Roland Gruber 1581832879 allow "#" in user names 2013-11-08 18:14:06 +00:00
Roland Gruber 75322829ae handle quotes in DN 2013-11-04 16:32:10 +00:00
Roland Gruber a4d87bfcc1 Kolab shared folders 2013-11-03 20:25:04 +00:00
Roland Gruber 5ca1f7528d Kolab update 2013-11-03 20:00:12 +00:00
Roland Gruber 384a30fab6 Kolab update 2013-11-03 17:19:30 +00:00
Roland Gruber 819384f1cb Kolab update 2013-11-03 17:17:47 +00:00
Roland Gruber 599db388f0 added missing help entry 2013-11-03 17:16:12 +00:00
Roland Gruber b059301681 first version of Kolab shared folders 2013-11-02 15:06:03 +00:00
Roland Gruber f8ce8e0ef0 reduced code 2013-11-02 11:08:04 +00:00
Roland Gruber 5200138e06 reduced code 2013-11-02 10:25:08 +00:00
Roland Gruber fe9fe9079f reduced code 2013-11-01 18:59:55 +00:00
Roland Gruber 65a9302cf4 documented adaption to corporate design 2013-11-01 16:26:57 +00:00
Roland Gruber 8e33fa4504 allow to run read/modify as bind user 2013-11-01 15:54:49 +00:00
Roland Gruber 0151736c60 auto-convert photos to JPG (158) 2013-11-01 14:22:13 +00:00
Roland Gruber 8358172e8b auto-convert photos to JPG (158) 2013-11-01 14:14:47 +00:00
Roland Gruber 30b57a7da5 added auto-completion 2013-11-01 10:54:03 +00:00
Roland Gruber 458705adaa email validation changes and LDAP size limit warning to log file 2013-10-29 18:33:02 +00:00
Roland Gruber 45e5b40577 show ppolicy last password change in self service 2013-10-27 18:53:55 +00:00
Roland Gruber 597b352cc1 Bind DLZ 2013-10-27 17:19:33 +00:00
Roland Gruber 64f672994d Bind DLZ 2013-10-27 16:10:49 +00:00
Roland Gruber cea5af51e0 Bind DLZ 2013-10-27 16:04:33 +00:00
Roland Gruber c3034ab7c7 Bind DLZ 2013-10-27 16:02:36 +00:00
Roland Gruber 3ab4b419dc fixed sorting by DN 2013-10-27 15:54:36 +00:00
Roland Gruber 882f5281a8 fixed email validation 2013-10-25 17:38:49 +00:00
Roland Gruber ff223625a4 fixed email validation 2013-10-25 17:36:26 +00:00
Roland Gruber e930b134d7 confirm profile loading for existing accounts 2013-10-23 18:05:29 +00:00
Roland Gruber b32c965786 switch primary group in additional group memberships (RFE 108) 2013-10-23 17:30:03 +00:00
Roland Gruber 0f1bd1b550 switch primary group in additional group memberships (RFE 108) 2013-10-23 17:26:00 +00:00
Roland Gruber 1710cd8b40 reduced code 2013-10-22 17:41:24 +00:00
Roland Gruber 1d94d8e12d fixed password self reset schema installation 2013-10-22 17:40:26 +00:00
Roland Gruber 3cafca08ab XSS fix (Debian bug 726976) 2013-10-21 17:49:30 +00:00
Roland Gruber eafde7b331 XSS fix (Debian bug 726976) 2013-10-21 16:39:28 +00:00
Roland Gruber c5bed144c0 XSS fix (Debian bug 726976) 2013-10-21 16:21:38 +00:00
Roland Gruber 5932cffbd8 replaced WZTooltip with JQuery 2013-10-20 18:07:56 +00:00
Roland Gruber b7629a40ef reduced code 2013-10-20 14:26:29 +00:00
Roland Gruber 33245c8e38 reduced code 2013-10-19 14:29:02 +00:00
Roland Gruber 720c257d0b added php-apc 2013-10-19 10:47:00 +00:00
Roland Gruber 796f6a38c9 reduced code 2013-10-19 10:25:39 +00:00
Roland Gruber f1f74c5f9e set PHP error reporting to E_ALL & ~E_NOTICE by default 2013-10-18 17:43:09 +00:00
Roland Gruber 1f2bd7e66a password self reset schema 2013-10-18 15:07:04 +00:00
Roland Gruber 1253b2f270 better LDAP error messages 2013-10-16 17:37:17 +00:00
Roland Gruber 7c377bbcd2 central mail sending 2013-10-16 16:48:59 +00:00
Roland Gruber 280e9a290d central function to get calling URL 2013-10-15 18:51:36 +00:00
Roland Gruber 86b7d3ee7e added PyKota support to LAM 2013-10-15 17:32:33 +00:00
Roland Gruber 1cccab7b66 added PyKota support 2013-10-15 16:12:39 +00:00
Roland Gruber 9c5e5102f5 allow to upload and delete PDF logo files 2013-10-08 19:19:05 +00:00
Roland Gruber 2e27115031 allow to upload and delete logo files 2013-10-08 19:11:01 +00:00
Roland Gruber 3c497505a3 fixed tab labels 2013-10-08 16:14:58 +00:00
Roland Gruber 398343b9b2 typo 2013-10-08 16:14:22 +00:00
Roland Gruber 351cf063fb fix for rename operations 2013-10-06 14:51:17 +00:00
Roland Gruber 83fba4a8af 2013-10-05 14:55:06 +00:00
Roland Gruber 90003744e4 IPv6 check 2013-10-05 14:54:56 +00:00
Roland Gruber b7bb54a035 additional LDAP filter for self service 2013-09-29 14:17:30 +00:00
Roland Gruber f96be2a227 allow to set password label in self service 2013-09-29 13:51:37 +00:00
Roland Gruber c3f42c8e2d support custom label and icon in customFields module 2013-09-29 08:08:56 +00:00
Roland Gruber d738484948 custom labels for account types 2013-09-28 11:46:52 +00:00
Roland Gruber d6900a27b9 show last password change in self service 2013-09-28 11:44:41 +00:00
Roland Gruber ad86c68537 custom fields 2013-09-26 18:14:00 +00:00
Roland Gruber 2b0d61ece2 typo 2013-09-24 18:42:22 +00:00
Roland Gruber 87f270a2c4 fixed schema test for cn/description 2013-09-24 16:34:38 +00:00
Roland Gruber 0dc56e6463 PyKota 2013-09-16 19:24:24 +00:00
Roland Gruber 97cc9f2958 2013-09-16 19:24:08 +00:00
Roland Gruber cf507531c1 2013-09-16 18:17:14 +00:00
Roland Gruber 49d928c33f 2013-09-16 17:53:51 +00:00
Roland Gruber a42f8ed899 2013-09-16 17:33:35 +00:00
Roland Gruber cfaf55a8b9 2013-09-16 17:33:09 +00:00
Roland Gruber 7df62ed7fb Lamdaemon: do not show message if home directory to delete was not found (154) 2013-09-16 17:30:42 +00:00
Roland Gruber 2740e4451a get extended LDAP error message 2013-09-15 14:57:55 +00:00
Roland Gruber 0554872b2f translation update 2013-09-14 16:54:52 +00:00
Roland Gruber 85948a5849 fixed PHP notice 2013-09-14 16:13:49 +00:00
Roland Gruber 752d1fd5b3 fixed PHP notice 2013-09-14 15:38:35 +00:00
Roland Gruber 5c995a9773 fixed PHP notice 2013-09-14 15:31:50 +00:00
Roland Gruber 784a42aa1a translation update 2013-09-09 17:37:51 +00:00
Roland Gruber 2d912e283d translation update 2013-09-03 20:20:00 +00:00
Roland Gruber 8951a3ceea translation update 2013-09-03 20:13:06 +00:00
Roland Gruber 5f8573d69b translation update 2013-09-01 14:28:36 +00:00
Roland Gruber fc9d33c4c3 2013-09-01 09:05:07 +00:00
Roland Gruber 994835f5d0 2013-09-01 09:04:42 +00:00
Roland Gruber 24799dcb6f 2013-09-01 09:03:42 +00:00
Roland Gruber 13ba386305 Kolab 2013-09-01 09:03:24 +00:00
Roland Gruber f0749387fa added active flag for hosts and unknown-clients option 2013-08-31 09:33:45 +00:00
Roland Gruber 62ee03271d Kolab user: allowed senders/receivers 2013-08-29 17:55:49 +00:00
Roland Gruber c99283c8b6 Kolab group support 2013-08-29 16:44:58 +00:00
Roland Gruber 5f528d5ad8 support local members 2013-08-25 14:22:13 +00:00
Roland Gruber 05da1c1325 support local members 2013-08-25 14:21:37 +00:00
Roland Gruber c90e7ae0b0 2013-08-25 12:30:30 +00:00
Roland Gruber 9d4f585386 PyKota support 2013-08-25 12:19:00 +00:00
Roland Gruber d8e8cc1f55 Samba 4 bug 2013-08-25 12:18:46 +00:00
Roland Gruber b6828b4b4b fix for list attributes 2013-08-25 12:18:00 +00:00
Roland Gruber 9e28caf41a PPolicy locking 2013-08-23 16:10:07 +00:00
Roland Gruber 81164b536a fixed Samba doc 2013-08-22 16:46:32 +00:00
Roland Gruber 99d73b4dcd allow -1 for pwdMaxAge 2013-08-22 16:44:40 +00:00
Roland Gruber 27136315c1 negative numbers 2013-08-22 16:43:47 +00:00
Roland Gruber 95dca33041 negative numbers 2013-08-22 16:43:18 +00:00
Roland Gruber 1279c8d4bc 2013-08-21 17:46:26 +00:00
Roland Gruber c846a1afb2 2013-08-21 16:17:06 +00:00
Roland Gruber 96044266c2 2013-08-20 18:57:13 +00:00
Roland Gruber 211c5a71e0 small fixes 2013-08-20 18:56:52 +00:00
Roland Gruber 1de6550360 2013-08-20 18:56:19 +00:00
Roland Gruber c2bf387275 support posixAccount/posixGroup on Samba 4 2013-08-18 14:19:37 +00:00
Roland Gruber 24646635f9 support Samba 4 2013-08-18 12:24:53 +00:00
Roland Gruber bad02085dc support Samba 4 2013-08-18 11:47:46 +00:00
Roland Gruber f665ef3425 support Samba 4 2013-08-18 11:47:18 +00:00
Roland Gruber a3a911f4ed support multi-value text-areas 2013-08-18 11:38:20 +00:00
Roland Gruber 869d4cf6c4 file upload and ajax for self service 2013-08-15 19:06:57 +00:00
Roland Gruber 365216144b prevent scrolling on self service certificates 2013-08-15 19:06:10 +00:00
Roland Gruber 1ca4f12b8d allow to specify SSL CA certificates in LAM main configuration 2013-08-15 15:30:19 +00:00
Roland Gruber 001f43d729 2013-08-15 15:29:48 +00:00
Roland Gruber 672aeed7a9 2013-08-15 13:57:22 +00:00
Roland Gruber dcce771b39 allow to specify SSL CA certificates in LAM main configuration 2013-08-13 18:22:21 +00:00
Roland Gruber 191ccc97f8 support custom scripts in user self registration 2013-08-13 18:22:03 +00:00
Roland Gruber 66c83efecd password self reset for Samba 4 2013-08-11 18:58:20 +00:00
Roland Gruber 650144364f 2013-08-11 10:50:34 +00:00
Roland Gruber 2903d0c2e4 id for tables 2013-08-11 10:50:21 +00:00
Roland Gruber f2f77eae90 allow to specify SSL CA certificates in LAM main configuration 2013-08-10 13:25:09 +00:00
Roland Gruber 90e01cbcaa allow to specify SSL CA certificates in LAM main configuration 2013-08-10 12:43:01 +00:00
Roland Gruber 442c3f5cc6 2013-08-07 17:19:24 +00:00
Roland Gruber c77f9c75ec PHP 5.5 fix 2013-08-02 21:01:14 +00:00
Roland Gruber 80f74acbd0 PHP 5.5 fix 2013-08-02 20:37:05 +00:00
Roland Gruber 9b29b3e764 show group members 2013-07-31 19:21:31 +00:00
Roland Gruber 135feeaa7f move buttons are no more links; removed buttons to change section titles 2013-07-30 19:48:34 +00:00
Roland Gruber 2940462f96 fix problems if password reset is continued in different browser 2013-07-28 17:49:20 +00:00
Roland Gruber 2a1a4e57a6 encode UTF-8 characters in emails 2013-07-26 19:52:18 +00:00
Roland Gruber 6ecbf53b08 PPolicy: password history check 2013-07-26 19:04:56 +00:00
Roland Gruber 47f37858cc save scroll position 2013-07-24 19:58:49 +00:00
Roland Gruber 0c226abdc5 calculate checksums 2013-07-23 18:57:46 +00:00
Roland Gruber 583a291fca tar.gz -> tar.bz2 2013-07-23 18:30:14 +00:00
Roland Gruber fe90f9d2dc tar.gz -> tar.bz2 2013-07-23 18:29:53 +00:00
Roland Gruber e06b821eb9 always set mime version 2013-07-23 18:01:53 +00:00
Roland Gruber 5b30662599 added managedBy 2013-07-21 16:27:56 +00:00
Roland Gruber 8cc198ab34 use new random number function 2013-07-21 11:47:49 +00:00
Roland Gruber 87956b95fe 2013-07-21 11:34:51 +00:00
Roland Gruber fc385ba466 use new random number function 2013-07-21 11:34:31 +00:00
Roland Gruber a235a151e7 use new random number function 2013-07-21 11:32:05 +00:00
Roland Gruber 5e85ef39eb fixed image display 2013-07-21 11:31:20 +00:00
Roland Gruber bf77abb0c1 filter " ", -, _ in suggested user names 2013-07-21 10:39:46 +00:00
Roland Gruber b41487794d fix problems with browser autocomplete 2013-07-21 10:35:54 +00:00
Roland Gruber 7318c7364d save language selection 2013-07-21 10:05:16 +00:00
Roland Gruber a2b5b92bd1 down button 2013-07-21 10:04:38 +00:00
Roland Gruber 633caccec6 attribute uniqueness 2013-07-21 10:04:12 +00:00
Roland Gruber e1f4835de4 2013-07-21 09:44:02 +00:00
Roland Gruber f2d9643a41 Apache 2.4 changes 2013-07-19 21:06:13 +00:00
Roland Gruber 163cd79b82 Apache 2.4 changes 2013-07-19 20:45:57 +00:00
Roland Gruber f90539a563 2013-06-17 18:52:47 +00:00
Roland Gruber 98a3759096 2013-06-17 18:43:43 +00:00
Roland Gruber c30213babc 2013-06-17 18:41:49 +00:00
Roland Gruber 96a9b7c2e6 suggested user names must be in lower case, replace umlauts 2013-06-17 18:38:42 +00:00
Roland Gruber b3af716ced fixed loop in profile editor 2013-06-17 18:25:38 +00:00
Roland Gruber a0e3eec1af allow larger files 2013-06-14 18:28:25 +00:00
Roland Gruber 9c13d988de translation update 2013-06-12 20:47:40 +00:00
Roland Gruber b823a13fbb typo 2013-06-12 20:43:34 +00:00
Roland Gruber 2decdf0bff 2013-06-04 16:13:29 +00:00
Roland Gruber 7c97d16c1b 2013-06-04 16:03:40 +00:00
Roland Gruber e2048fedd3 better info message 2013-06-03 18:48:43 +00:00
Roland Gruber 83a251645d better documentation 2013-06-03 18:42:27 +00:00
Roland Gruber b7fc23ef3d fix for fast cgi 2013-06-03 15:44:29 +00:00
Roland Gruber a778162d5b added function to check if Unix password is lockable 2013-06-01 12:17:31 +00:00
Roland Gruber c93300aae5 2013-05-28 19:03:52 +00:00
Roland Gruber 649cb0a83a reselect last user on failed login 2013-05-25 13:24:55 +00:00
Roland Gruber 88c1bd9476 trim some input fields to prevent copy+paste errors 2013-05-25 12:47:07 +00:00
Roland Gruber ed09935d4f 2013-05-24 18:31:20 +00:00
Roland Gruber 12eceb447d update owner attribute on dn change 2013-05-24 18:30:30 +00:00
Roland Gruber 32520128e9 translation update 2013-05-22 15:22:11 +00:00
Roland Gruber 77ec160a32 translation update 2013-05-22 15:16:22 +00:00
Roland Gruber 96d483803e translation update 2013-05-21 20:39:04 +00:00
Roland Gruber ff850726fc translation update 2013-05-21 17:32:49 +00:00
Roland Gruber 009e7095d9 translation update 2013-05-21 16:32:52 +00:00
Roland Gruber fe738d09ac fixed PO generation 2013-05-21 16:30:49 +00:00
Roland Gruber 26c8e7c337 translation update 2013-05-21 16:30:30 +00:00
Roland Gruber 00f1c493ae translation update 2013-05-21 16:29:45 +00:00
Roland Gruber b56e92b62f translation update 2013-05-21 15:51:04 +00:00
Roland Gruber 92127c7c0c make autocompletion more fault tolerant 2013-05-21 15:50:06 +00:00
Roland Gruber 0d0b980650 Samba 4 changes 2013-05-20 09:28:34 +00:00
Roland Gruber a7ac16dc88 fixed error message 2013-05-20 09:28:14 +00:00
Roland Gruber f1a8dc4ad5 translation update 2013-05-14 18:17:30 +00:00
Roland Gruber 6f93c7fa1c translation update 2013-05-14 18:08:40 +00:00
Roland Gruber 9cd593035b Samba 4 2013-05-12 13:18:22 +00:00
Roland Gruber 3b3d020ad2 parallel building 2013-05-12 09:13:59 +00:00
Roland Gruber 3ea6fa8971 2013-05-12 08:53:54 +00:00
Roland Gruber d3effb5e93 2013-05-12 08:52:58 +00:00
Roland Gruber c35a610bbb https 2013-05-12 08:51:34 +00:00
Roland Gruber 80b9029b84 https 2013-05-12 08:51:17 +00:00
Roland Gruber b2b57b5dc0 ship manual only in main package 2013-05-12 08:38:07 +00:00
Roland Gruber a96dcc149a translation update 2013-05-10 16:20:37 +00:00
Roland Gruber b893be577b added module cache 2013-05-09 19:10:35 +00:00
Roland Gruber a8711815fb fixed password hash config option 2013-05-09 17:27:19 +00:00
Roland Gruber 6449a78587 reduced PDF code 2013-05-09 17:26:56 +00:00
Roland Gruber e87af38aaa reduced PDF code 2013-05-09 15:47:35 +00:00
Roland Gruber 8a3d23c944 added PDF workarounds 2013-05-07 19:19:00 +00:00
Roland Gruber 103ee7fc0c reduced PDF code 2013-05-07 19:18:21 +00:00
Roland Gruber 6c25d73608 Samba 4 2013-05-07 17:55:42 +00:00
Roland Gruber 124bf010f5 Samba 4 2013-05-07 17:55:28 +00:00
Roland Gruber a359e5432b reduced PDF code 2013-05-06 19:16:47 +00:00
Roland Gruber 452901d687 reduced PDF code 2013-05-05 18:37:04 +00:00
Roland Gruber a789fa2806 fixed class name 2013-05-05 18:32:12 +00:00
Roland Gruber b90000791d reduced PDF code 2013-05-05 18:26:54 +00:00
Roland Gruber 2aa0c4d406 sort PDF values 2013-05-05 18:26:30 +00:00
Roland Gruber 1abec30bcd reduced PDF code 2013-05-05 13:50:19 +00:00
Roland Gruber 4230f78268 reduced PDF code 2013-05-04 18:22:07 +00:00
Roland Gruber e9d980663c PHPDoc 2013-05-04 18:20:08 +00:00
Roland Gruber 16c1e2f0e1 save scroll position in edit page 2013-05-01 16:55:59 +00:00
Roland Gruber ada2967854 allow to hide buttons to create/delete accounts 2013-05-01 12:43:45 +00:00
Roland Gruber 4f25877520 allow to hide buttons to create/delete accounts 2013-05-01 12:36:17 +00:00
Roland Gruber afb8d6ebdd fixed PHP notice 2013-05-01 12:35:09 +00:00
Roland Gruber 7558be0e90 set PDF files 0600 2013-05-01 08:20:14 +00:00
Roland Gruber ebafcf33b1 moved additional filter and hidden type to advanced options 2013-04-29 18:16:14 +00:00
Roland Gruber bc08c52c70 smaller message boxes 2013-04-28 18:45:35 +00:00
Roland Gruber 4e90ba0def 2013-04-28 10:24:29 +00:00
Roland Gruber 914bc4154d allow to send password mails in upload 2013-04-28 10:21:45 +00:00
Roland Gruber 22c0ebe6d4 make password sending more flexible 2013-04-28 10:20:54 +00:00
Roland Gruber 26b6505be7 added mail aliases 2013-04-27 17:38:01 +00:00
Roland Gruber 99119ea96b fixed multi-value validation 2013-04-27 17:37:04 +00:00
Roland Gruber ffbe228ba8 Active Directory support 2013-04-25 19:25:28 +00:00
Roland Gruber 73a5673c04 smaller lamdaemon package 2013-04-24 18:30:44 +00:00
Roland Gruber b8b0e2ab20 Active Directory support 2013-04-24 18:28:23 +00:00
Roland Gruber bd3e80596f fixed upload 2013-04-23 18:30:08 +00:00
Roland Gruber 6008cf2f9f docs update 2013-04-23 18:18:44 +00:00
Roland Gruber 0a6c9c43a3 docs update 2013-04-23 18:15:29 +00:00
Roland Gruber b64bed94f8 enhanced docs 2013-04-22 17:43:01 +00:00
Roland Gruber 1cc1261f80 enhanced docs 2013-04-22 17:42:35 +00:00
Roland Gruber 8e4c255053 support clear text password in PDF and custom scripts 2013-04-21 18:53:39 +00:00
Roland Gruber c70d566942 Samba 4 2013-04-21 18:52:33 +00:00
Roland Gruber ed4a0ee2b5 Samba 4 2013-04-21 18:52:06 +00:00
Roland Gruber 16a6b955b4 Samba 4 2013-04-21 18:51:47 +00:00
Roland Gruber a6a8b329bb 2013-04-21 16:42:14 +00:00
Roland Gruber 2112eb82b0 fixed password must be changed option 2013-04-21 16:41:19 +00:00
Roland Gruber c4ba99bbba support for simple self service fields 2013-04-20 16:14:03 +00:00
Roland Gruber 546303df10 self service 2013-04-20 16:13:16 +00:00
Roland Gruber 8592d8da74 performance fixes 2013-04-20 15:14:03 +00:00
Roland Gruber fb147e36a0 implemented self service password change 2013-04-20 12:52:30 +00:00
Roland Gruber 272ad893dc static function for password hash 2013-04-20 08:54:29 +00:00
Roland Gruber 687dcd25c6 fix for schema test 2013-04-20 08:32:12 +00:00
Roland Gruber c78e65d4f5 support for Samba 4 2013-04-20 08:31:09 +00:00
Roland Gruber 98ce4e3edf Samba 4 fix 2013-04-20 08:30:20 +00:00
Roland Gruber 0d9508def1 file upload, profile and PDF options 2013-04-14 19:19:33 +00:00
Roland Gruber 90c1a4d1ed fixed typo 2013-04-14 19:18:25 +00:00
Roland Gruber 1e1ecc3b30 fixed typo 2013-04-14 19:17:48 +00:00
Roland Gruber ecbc2b007a added account flags and group management 2013-04-13 15:57:32 +00:00
Roland Gruber d04b291be3 fixed LDAP filter 2013-04-13 15:56:45 +00:00
Roland Gruber c86878e90f fixed help popups 2013-04-13 15:55:54 +00:00
Roland Gruber 8b4dc54340 better logging 2013-04-11 17:40:34 +00:00
Roland Gruber c8e07115bf fixed error message about uidNumber range when using Samba ID pool 2013-04-10 19:04:43 +00:00
Roland Gruber 300c422453 2013-04-07 17:37:17 +00:00
Roland Gruber cb9d89642e 2013-04-07 17:29:06 +00:00
Roland Gruber 3adc50c8ac password support 2013-04-07 17:28:09 +00:00
Roland Gruber fa037be32a do not show Unix account status if no password available 2013-04-07 17:27:21 +00:00
Roland Gruber e3514fd253 2013-04-06 15:01:50 +00:00
Roland Gruber 430d5c3e1a typo 2013-04-06 15:01:19 +00:00
Roland Gruber 2cbec4f1e5 Samba 4 user support 2013-04-06 15:00:53 +00:00
Roland Gruber f49ad6079e fixed tab layout 2013-04-02 18:54:39 +00:00
Roland Gruber 8d2bb051a0 more efficient sorting 2013-04-02 18:46:39 +00:00
Roland Gruber 2c66f35de2 layout fix 2013-04-01 12:00:09 +00:00
Roland Gruber f70031f93d upload + PDF 2013-03-30 14:58:21 +00:00
Roland Gruber 9702066547 user certificate upload for self service 2013-03-30 14:22:26 +00:00
Roland Gruber a2bd06de31 user certificate upload for self service 2013-03-30 14:22:11 +00:00
Roland Gruber ecac892898 Samba 4 host support 2013-03-29 18:25:34 +00:00
Roland Gruber d7454ab251 Samba 4 group support 2013-03-29 10:21:03 +00:00
Roland Gruber e8760a2794 finished Samba 4 group support 2013-03-29 09:51:24 +00:00
Roland Gruber 8156abe179 Samba 4 group support 2013-03-26 20:00:39 +00:00
Roland Gruber 7f8607bb7b removed invalid group types 2013-03-25 15:47:47 +00:00
Roland Gruber 1f49f941f6 allow to send password mail to alternate recipient 2013-03-24 19:18:15 +00:00
Roland Gruber 5932e0abc6 added htmlAccordion and option to specify user name suggestion format 2013-03-24 18:39:08 +00:00
Roland Gruber 76d207f19f autocompletion for some fields 2013-03-24 15:25:01 +00:00
Roland Gruber 6e851a9f68 2013-03-24 11:24:49 +00:00
Roland Gruber e9bda2315e added filter for members 2013-03-24 11:23:54 +00:00
Roland Gruber 40c91ee816 more space around help icon 2013-03-24 11:23:32 +00:00
Roland Gruber f5acde465a added htmlEqualHeight 2013-03-24 11:23:02 +00:00
Roland Gruber 777392fc7c show cn of user in member dialog 2013-03-24 10:43:08 +00:00
Roland Gruber 6657436544 allow to hide gecos, posix groups and group of names 2013-03-24 10:03:35 +00:00
Roland Gruber dd9314931c equal widths 2013-03-24 10:02:49 +00:00
Roland Gruber 23819a8cf4 fixed login name display if contains no "=" 2013-03-24 10:01:54 +00:00
Roland Gruber 57ab5f7959 removed Kolab appendix 2013-03-18 19:06:56 +00:00
Roland Gruber 0916a3fb19 4.1 2013-03-18 18:53:02 +00:00
Roland Gruber 78eb0af356 2013-03-18 18:52:06 +00:00
Roland Gruber e669f74d40 2013-03-18 18:47:14 +00:00
Roland Gruber 85af3b2903 added back link 2013-03-17 14:35:46 +00:00
Roland Gruber 33ed616dd6 fixed host name labels 2013-03-16 17:12:00 +00:00
Roland Gruber e35e6f2046 jQuery fixes 2013-03-16 14:35:41 +00:00
Roland Gruber 678a77773b fixed attribute injection for password mails (146) 2013-03-16 14:33:15 +00:00
Roland Gruber 2977462c94 jQuery fixes 2013-03-16 14:32:27 +00:00
Roland Gruber 3cbbdfe7f6 added folding marks for PDF 2013-03-16 13:39:33 +00:00
Roland Gruber d637578186 translation update 2013-03-15 18:12:50 +00:00
Roland Gruber b355c46190 translation update 2013-03-15 17:29:29 +00:00
Roland Gruber 448d7c0ca6 better display of managers 2013-03-12 20:06:16 +00:00
Roland Gruber 2a3a0fd1a0 fixed DN sorting 2013-03-12 20:05:41 +00:00
Roland Gruber b8636a415d 2013-03-10 19:54:33 +00:00
Roland Gruber fb3ddf5274 some fixes for user name and description 2013-03-10 19:53:48 +00:00
Roland Gruber 81dc6801b6 translation update 2013-03-10 19:08:51 +00:00
Roland Gruber d04f560e04 translation update 2013-03-10 14:49:37 +00:00
Roland Gruber 74a5bc7e0d added function to add simple text input fields 2013-03-10 14:37:03 +00:00
Roland Gruber 2b94e72ec6 fix for jquery menus 2013-03-10 14:36:34 +00:00
Roland Gruber 11e0c84be4 added function to add simple text input fields 2013-03-09 18:41:10 +00:00
Roland Gruber 981cf628a8 function to display simple PDF fields 2013-03-09 17:25:02 +00:00
Roland Gruber 0676b9528a translation update 2013-03-05 16:33:37 +00:00
Roland Gruber 36d52e7302 translation update 2013-03-04 19:24:02 +00:00
Roland Gruber dfe4cf0182 Unister patch for business category in account profile 2013-03-04 19:21:16 +00:00
Roland Gruber 9a6eba0a49 delete .pot 2013-03-02 17:48:44 +00:00
Roland Gruber 4abc5ed98a translation update 2013-03-02 17:39:01 +00:00
Roland Gruber fdb8ef686a 2013-03-02 15:42:46 +00:00
5227 changed files with 704277 additions and 243114 deletions

3
.github/FUNDING.yml vendored Normal file
View File

@ -0,0 +1,3 @@
github: [LDAPAccountManager]

11
.github/codeql/codeql-config.yml vendored Normal file
View File

@ -0,0 +1,11 @@
name: "LAM CodeQL config"
queries:
- uses: security-and-quality
paths-ignore:
- '**/3rdParty/**/*.*'
- '**/lib/extra/**/*.*'
- '**/lib/*jquery*.js'
paths:
- lam

56
.github/workflows/codeql-analysis.yml vendored Normal file
View File

@ -0,0 +1,56 @@
name: "CodeQL"
on:
push:
branches: [develop]
pull_request:
# The branches below must be a subset of the branches above
branches: [develop]
schedule:
- cron: '0 10 * * 0'
jobs:
analyse:
name: Analyse
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v2
with:
# We must fetch at least the immediate parents so that if this is
# a pull request then we can checkout the head.
fetch-depth: 2
# If this run was triggered by a pull request event, then checkout
# the head of the pull request instead of the merge commit.
- run: git checkout HEAD^2
if: ${{ github.event_name == 'pull_request' }}
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@v1
# Override language selection by uncommenting this and choosing your languages
# with:
# languages: go, javascript, csharp, python, cpp, java
with:
config-file: ./.github/codeql/codeql-config.yml
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
# If this step fails, then you should remove it and run the build manually (see below)
- name: Autobuild
uses: github/codeql-action/autobuild@v1
# Command-line programs to run using the OS shell.
# 📚 https://git.io/JvXDl
# ✏️ If the Autobuild fails above, remove it and uncomment the following three lines
# and modify them (or add more) to build your code if your project
# uses a compiled language
#- run: |
# make bootstrap
# make release
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v1

9
.gitignore vendored Normal file
View File

@ -0,0 +1,9 @@
/.settings/
/.buildpath
/.project
/.Readme.md.html
/vendor/
/composer.lock
/code-coverage/
/.phpunit.result.cache
/lam/lib/3rdParty/composer/bin/

18
.travis.yml Normal file
View File

@ -0,0 +1,18 @@
language: php
addons:
sonarcloud:
organization: "ldap-account-manager"
php:
- '7.3'
cache:
directories:
- '$HOME/.sonar/cache'
script:
- phpunit
- ls -l code-coverage/*
- sonar-scanner
- pip install --user codespell
- cd lam
- ./codespell.sh

28
Readme.md Normal file
View File

@ -0,0 +1,28 @@
LDAP Account Manager
====================
LDAP Account Manager (LAM) is a webfrontend for managing entries (e.g. users, groups, DHCP settings) stored in an LDAP directory. LAM was designed to make LDAP management as easy as possible for the user. It abstracts from the technical details of LDAP and allows persons without technical background to manage LDAP entries. If needed, power users may still directly edit LDAP entries via the integrated LDAP browser.
![LAM](https://www.ldap-account-manager.org/lamcms/sites/default/files/styles/slideshow/public/userList.png)
![LAM](https://www.ldap-account-manager.org/lamcms/sites/default/files/styles/slideshow/public/user_0.png)
# Download
You can get the newest version at https://www.ldap-account-manager.org/.
# Documentation
Please see the [documentation area](https://www.ldap-account-manager.org/lamcms/documentation).
# Source code
There are two modules. Usually, you only need the files inside "lam".
* [lam](lam): LAM main source code
* [lam-packaging](lam-packaging): build scripts
# License
LAM is published under the GNU General Public License.
The complete list of licenses can be found in the copyright file.
Copyright (C) 2003 - 2020 Roland Gruber <post@rolandgruber.de>

9
SECURITY.md Normal file
View File

@ -0,0 +1,9 @@
# Security Policy
## Supported Versions
Security updates are always created based on the latest release.
## Reporting a Vulnerability
Please report all security issues to post@rolandgruber.de. Reports will be answered within 48h.

10
composer.json Normal file
View File

@ -0,0 +1,10 @@
{
"require-dev" : {
"phpunit/phpunit" : "8.5.2",
"squizlabs/php_codesniffer" : "3.4.0"
},
"require": {
"ext-ldap": "*",
"ext-json": "*"
}
}

1
copyright Normal file
View File

@ -0,0 +1 @@
Please see lam/copyright.

View File

@ -1,340 +0,0 @@
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Library General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) year name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
<signature of Ty Coon>, 1 April 1989
Ty Coon, President of Vice
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Library General
Public License instead of this License.

View File

@ -1,120 +0,0 @@
28.07.2005 0.4.10
- PHP5 compatibility added
09.03.2005 0.4.9
- fixed bugs:
fixed error messages when moving an user account
fixed problem with special group SIDs
lamdaemon.pl security fix
26.01.2005 0.4.8
- allow "%" at the beginning of Samba home/profile path (1107998)
- fixed bugs:
fixed IE fix ;-)
no more warnings for profiles with no additional groups set
19.12.2004 0.4.7
- added "*.exe" to Samba logon script regex (1081715)
- fixed bugs:
fixed doctype of main frame
removed syntax check for LDAP suffixes
fixed IE bug at login
fixed encoding in HTTP header
passwords with "'" are now handled correctly at login (1081460)
fixed Samba flags if multiple hosts were created
updated .htaccess files to be compatible with newer Apache versions
26.05.2004 0.4.6
- fixed bugs:
password hashes were not disabled correctly
street was copied to postal code on modify (938502)
underscore was not allowed for host names (934445)
deleting postal address or facsimile number failed (948616)
TLS error handling (958497)
smaller fixes on personal settings page
21.03.2004 0.4.5
- added French translation
- fixed bugs:
StatusMessages with additional variables did not work
Samba hosts had unnecessary objectClass shadowAccount (910084)
Samba host passwords were still wrong
LAM had problems with non-standard spelled object classes (907636)
Perl scripts did not work if Perl is not installed in /usr/bin/perl (913554)
problems when cn!=uid (915041)
home directories were not deleted by lamdaemon.pl (913552)
29.02.2004 0.4.4 (stable)
- fixed bugs:
plain posix groups could not be used as Samba 3 primary group
if magic_quotes_gpc in php.ini is was set to "Off", several pages did not work
some smaller bugs in mass upload
Samba hash values for hosts were not correct
Unix passwords could be disabled but not reenabled
fixed problem with eval() in status.inc (894433)
08.02.2004 0.4.3
- new login layout
- added Hungarian and Japanese translations
- fixed bugs:
Samba paswords were sometimes empty for new users (892272)
links in list views may not work with web servers other than Apache
21.01.2004 0.4.2
- added config wizard
- MHash is only needed for PHP < 4.3
- use Blowfish for encryption instead of MCrypt
29.12.2003 0.4.1
- better error handling at login
- support spaces in DNs
- PDF text for users
- create missing OUs recursivly
- fixed bugs:
SMD5 passwords were wrong
primaryGroupSID wrong if SID has no relation to Algorithmic RID Base
Samba 2 accounts could not be created
29.10.2003 0.4 (Beta1)
- improved design
- improved documentation
- Fixed possible error which could delete entries if objectclass didn't fit
- Fixed many samba 3.0 related bugs, most related to SIDs
- edit group members directly
- support for several password hashes (CRYPT/SHA/SSHA/MD5/SMD5/PLAIN)
- PDF output for groups and hosts
31.08.2003 0.3 (Alpha 3)
- Samba 3 support
- manage Samba 3 domains
- multiple configuration files
- PDF output
- better mass creation
04.07.2003 0.2 (Alpha 2)
- support for multiple OUs + OU-Editor
- account creation via file upload
- profile editor
- experimental Samba 3 support
- fixed a lot of bugs
23.05.2003 0.1 (Alpha 1)
Initial release

View File

@ -1,59 +0,0 @@
Installation Instructions for LAM
---------------------------------
1. Requirements
- Apache webserver (SSL optional) with installed PHP-Module (PHP-Module with
ldap, gettext, mcrypt+mhash optional)
- Perl
- OpenLDAP (>2.0 with samba.schema)
- A web browser :-)
MHash is only needed if you use PHP < 4.3 and want to use SHA or SSHA
for password hashes.
MCrypt will be used if available, otherwise Blowfish will be used
to store your LDAP password in the session file.
Getting mcrypt and mhash for Suse/RedHat:
Either you compile PHP4 yourself or you use some unofficial packages:
- Suse: ftp://ftp.suse.com/pub/people/poeml/mod_php4
- RedHat: http://ftp.horde.org/pub/RPMS
Samba.schema: LAM currently depends on the schema file from Samba.
You can find samba.schema in the Samba tarball (examples/LDAP).
Add this file to your slapd.conf to get LAM working.
OpenLDAP + Suse: Do not use the rfc2307bis.schema but nis.schema instead.
2. Installation
* Extract package with:
tar xzf ldap-account-manager_<version>.tar.gz
* Copy files into the html-file scope of the webserver. For example
/apache/htdocs.
* Set appropriate file permissions:
- lam/sess: write permission for apache user
- lam/tmp: write permission for apache user
- lam/config (with subdirectories): write permission for apache user
- lam/lib: perl files must be set executable (See also
docs/readme.lamdeamon.txt)
* Configure config.cfg and create a configuration profile.
Copy config.cfg_sample to config.cfg and set the master password and default
profile.
- With web browser:
Follow the link "Configuration Login" from the start page (lam/index.html).
(The default password to edit the options is "lam")
- Manually:
A default config file can be found in /lam/config/lam.conf_sample.
Change the necessary entries and rename it to /lam/config/lam.conf.

View File

@ -1,81 +0,0 @@
LAM - Readme
============
A set of PHP-scripts to administrate Unix and Samba accounts in an LDAP server.
LAM runs on any webserver with PHP4 support and connects to your LDAP server
unencrypted or via SSL.
The application manages accounts for users, groups and Samba hosts in
multiple organizational units. LAM supports the Samba 2.x schema and the
Samba 3 schema.
http://sourceforge.net/projects/lam/
Copyright (C) 2003 - 2004 Michael Duergner <michael@duergner.com>
Roland Gruber <mail@rolandgruber.de>
Tilo Lutz <tilolutz@gmx.de>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Requirements:
PHP4
Openldap (2.0 or greater)
A web-browser that supports CSS (Netscape 4.x is not recommended)
Summary:
With LAM you can easily manage user, group and machine accounts stored in
a LDAP server over a web interface. At the moment it supports:
- displaying the user/group/host/domain entries
- deleting entries
- adding new entries
- editing entries
- filtering and sorting
- account profiles
- access management
- multiple configuration profiles
- OU Editor
- User creation via file upload
- Samba 2 and 3 schema support
Important:
The standard password to edit the configuration options is "lam".
Download:
You can get the newest version at http://sourceforge.net/projects/lam/
Installation:
Please see the INSTALL file.
Documentation:
Basic documentation is available in the directory "docs".
Internationalization:
If you want to use a translated version of LAM be sure to install the
needed locales. See locale/ for a list of supported locales and languages.
Debian users can add locales with "dpkg-reconfigure locales".
Security:
It is strongly recommended to use a SSL connection to your web server.
LAM needs to store your LDAP username + password in the session. The session
files are saved in sess/ and are accessible only by the web server. To increase
security username and password are encrypted with MCrypt/AES or Blowfish.
The key and IV are generated at random when you log in. They are stored in two
cookies.
Have fun!
The LAM devel team

View File

@ -1,4 +0,0 @@
0.5
- check security
- modular architecture

View File

@ -1,4 +0,0 @@
<Files ~ *>
Order allow,deny
Deny from all
</Files>

View File

@ -1,5 +0,0 @@
# password to add/delete/rename configuration profiles
password: lam
# default profile, without ".conf"
default: lam

View File

@ -1,80 +0,0 @@
# LDAP Account Manager configuration
# server address (e.g. ldap://localhost:389 or ldaps://localhost:636)
serverURL: ldap://localhost:389
# list of users who are allowed to use LDAP Account Manager
# names have to be seperated by semicolons
# e.g. admins: cn=admin,dc=yourdomain,dc=org;cn=root,dc=yourdomain,dc=org
admins: cn=Manager,dc=my-domain,dc=com
# password to change these preferences via webfrontend
passwd: lam
# suffix of users
# e.g. ou=People,dc=yourdomain,dc=org
usersuffix: ou=people,dc=my-domain,dc=com
# suffix of groups
# e.g. ou=Groups,dc=yourdomain,dc=org
groupsuffix: ou=groups,dc=my-domain,dc=com
# suffix of Samba hosts
# e.g. ou=machines,dc=yourdomain,dc=org
hostsuffix: ou=machines,dc=my-domain,dc=com
# suffix of Samba 3 domains
# e.g. ou=domains,dc=yourdomain,dc=org
domainsuffix: ou=domains,dc=my-domain,dc=com
# minimum and maximum UID numbers
minUID: 10000
maxUID: 20000
# minimum and maximum GID numbers
minGID: 10000
maxGID: 20000
# minimum and maximum UID numbers for Samba Hosts
minMachine: 25000
maxMachine: 35000
# list of attributes to show in user list
# entries can either be predefined values (e.g. '#cn' or '#uid')
# or individual ones (e.g. 'uid:User ID' or 'host:Host Name')
# values have to be seperated by semicolons
userlistAttributes: #uid;#givenName;#sn;#uidNumber;#gidNumber
# list of attributes to show in group list
# entries can either be predefined values (e.g. '#cn' or '#gidNumber')
# or individual ones (e.g. 'cn:Group Name')
# values have to be seperated by semicolons
grouplistAttributes: #cn;#gidNumber;#memberUID;#description
# list of attributes to show in host list
# entries can either be predefined values (e.g. '#cn' or '#uid')
# or individual ones (e.g. 'cn:Host Name')
# values have to be seperated by semicolons
hostlistAttributes: #cn;#description;#uidNumber;#gidNumber
# maximum number of rows to show in user/group/host lists
maxlistentries: 30
# default language (a line from config/language)
defaultLanguage: en_GB:ISO-8859-1:English (Britain)
# Path to external Script
scriptPath:
# Server of external Script
scriptServer:
# Set to "yes" only if you use the new Samba 3.x schema.
samba3: yes
# Number of minutes LAM caches LDAP searches.
cachetimeout: 5
# Password hash algorithm (CRYPT/MD5/SMD5/SHA/SSHA/PLAIN).
pwdhash: SSHA

View File

@ -1,19 +0,0 @@
# LDAP Account Manager Language Configuration file
# Each line consists of a : seperated entrys. The first entry is the link to the language definition, the second is the language description. Further entries are not used yet.
# Normally you don't have to edit this file manually. It is modified automatically when you add a new language in the Configuration-Site.
# Englisch language
en_GB:ISO-8859-1:English (Great Britain)
# German language
de_DE:ISO-8859-15:Deutsch (Deutschland)
# Hungarian language
hu_HU:ISO-8859-2:Magyar (Magyarorszag)
# Japanese language
ja_JP.eucJP:EUC-JP:Japanese (EUC)
# French language
fr_FR:ISO-8859-15:Francais (France)

View File

@ -1,2 +0,0 @@

View File

@ -1,15 +0,0 @@
general_homedir: /home/$user
general_shell: /bin/bash
unix_password_no: 0
unix_pwdwarn: 10
unix_pwdallowlogin: 10
unix_pwdminage: 1
unix_pwdmaxage: 365
unix_pwdexpire: 1893452400
unix_deactivated: 0
smb_password_no: 0
smb_useunixpwd: 1
smb_flagsD: 0
smb_flagsX: 1
smb_homedrive: U:
smb_smbhome: \\server\$user

View File

@ -1,17 +0,0 @@
/bin/ash
/bin/bash
/bin/bash1
/bin/csh
/bin/false
/bin/ksh
/bin/sh
/bin/tcsh
/bin/true
/bin/zsh
/usr/bin/csh
/usr/bin/ksh
/usr/bin/passwd
/usr/bin/bash
/usr/bin/rbash
/usr/bin/tcsh
/usr/bin/zsh

View File

@ -1,51 +0,0 @@
This software is copyright (c) 2003 - 2004 by Tilo Lutz, Roland Gruber and Michael Duergner.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
The complete license can be found in the file COPYING.
Some parts of this package have other, compatible licences. These are:
A: GNU Lesser General Public License
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
The complete license can be found in the file docs/LGPL-license.txt.
B: Freeware
You may use, modify and redistribute this software as you wish.
Programs and licenses with other licenses and/or authors than the
main license and authors:
lib/blowfish.inc A 2002-2003 Mike Cochrane
lib/fpdf.php B 2003 Olivier Plathey

View File

@ -1,25 +0,0 @@
Samba.schema: LAM currently depends on the schema file from Samba.
You can find samba.schema in the Samba tarball (examples/LDAP).
Add this file to your slapd.conf to get LAM working.
Access to the webfrontend:
- If you configured Apache(-SSL) at installation
you can access LDAP Account Manager via
http://localhost/lam or https://host.domain/lam.
- Otherwise you will have to setup your webserver
to load /usr/share/ldap-account-manager/index.html
which is the start file.
Configuration:
All settings can be edited via the webfrontend. The default
password for the configuration is "lam". However you can
also edit the configuration files directly.
The configuration files are /etc/ldap-account-manager/config.cfg
and /var/lib/ldap-account-manager/config/lam.conf.

View File

@ -1,138 +0,0 @@
ldap-account-manager (0.4.10-2) unstable; urgency=low
* fixed debconf dependency
-- Roland Gruber <post@rolandgruber.de> Wed, 3 Aug 2005 15:25:29 +0200
ldap-account-manager (0.4.10-1) unstable; urgency=low
* Updated to new upstream release 0.4.10.
-- Roland Gruber <post@rolandgruber.de> Wed, 27 Jul 2005 11:39:53 +0200
ldap-account-manager (0.4.9-2) unstable; urgency=low
* Closes: #300007: fixed typo
-- Roland Gruber <post@rolandgruber.de> Thu, 17 Mar 2005 19:20:29 +0100
ldap-account-manager (0.4.9-1) unstable; urgency=low
* Updated to new upstream release
* Closes: #296498: added documentation for samba.schema
-- Roland Gruber <post@rolandgruber.de> Wed, 2 Mar 2005 19:52:29 +0100
ldap-account-manager (0.4.8-1) unstable; urgency=low
* Updated to new upstream version 0.4.8.
-- Roland Gruber <post@rolandgruber.de> Sun, 23 Jan 2005 20:03:36 +0100
ldap-account-manager (0.4.7-1) unstable; urgency=low
* Updated to new upstream version 0.4.7.
-- Roland Gruber <post@rolandgruber.de> Thu, 16 Dec 2004 21:06:58 +0100
ldap-account-manager (0.4.6-3) unstable; urgency=low
* Closes: #281781: syntax error in apache.conf fixed
* added watch file
-- Roland Gruber <post@rolandgruber.de> Sun, 21 Nov 2004 13:18:43 +0100
ldap-account-manager (0.4.6-2) unstable; urgency=low
* Added template to change master configuration password.
* Closes: #257137: Interface configuration has a default password
* Closes: #260733: expanded PHP dependency with libapache2-mod-php4
-- Roland Gruber <post@rolandgruber.de> Fri, 23 Jul 2004 14:50:56 +0200
ldap-account-manager (0.4.6-1) unstable; urgency=low
* Updated to new upstream version 0.4.6.
-- Roland Gruber <post@rolandgruber.de> Thu, 20 May 2004 19:37:53 +0200
ldap-account-manager (0.4.5-1) unstable; urgency=low
* Updated to new upstream version 0.4.5.
-- Roland Gruber <post@rolandgruber.de> Sat, 20 Mar 2004 16:52:00 +0100
ldap-account-manager (0.4.4-1) unstable; urgency=low
* Updated to new upstream version (0.4.4)
* Closes: #232820: config/shells is no longer a symbolic link
-- Roland Gruber <post@rolandgruber.de> Wed, 25 Feb 2004 21:07:36 +0100
ldap-account-manager (0.4.3-1) unstable; urgency=low
* Updated to new upstream version (0.4.3)
-- Roland Gruber <post@rolandgruber.de> Sun, 8 Feb 2004 17:15:47 +0100
ldap-account-manager (0.4.2-1) unstable; urgency=low
* Updated to new upstream version (0.4.2)
-- Roland Gruber <post@rolandgruber.de> Thu, 15 Jan 2004 16:22:15 +0100
ldap-account-manager (0.4.1-1) unstable; urgency=low
* Updated to new upstream version (0.4.1)
-- Roland Gruber <post@rolandgruber.de> Fri, 29 Dec 2003 21:19:27 +0100
ldap-account-manager (0.4-4) unstable; urgency=low
* added debconf template for alias name
-- Roland Gruber <post@rolandgruber.de> Sun, 16 Nov 2003 16:03:55 +0100
ldap-account-manager (0.4-3) unstable; urgency=low
* copied access control from .htaccess files to apache.conf
-- Roland Gruber <post@rolandgruber.de> Sat, 1 Nov 2003 13:22:56 +0100
ldap-account-manager (0.4-2) unstable; urgency=low
* fixed error in postinst script
* added dependency php4-mhash
-- Roland Gruber <post@rolandgruber.de> Thu, 30 Oct 2003 16:19:45 +0100
ldap-account-manager (0.4-1) unstable; urgency=low
* Updated to Beta 1 release (0.4)
-- Roland Gruber <post@rolandgruber.de> Mon, 13 Oct 2003 20:23:29 +0200
ldap-account-manager (0.3-1) unstable; urgency=low
* Updated to Alpha 3 Release.
-- Roland Gruber <linux@rolandgruber.de> Fri, 29 August 2003 17:04:00 +0200
ldap-account-manager (0.2-1) unstable; urgency=low
* Updated to Alpha 2 Release.
-- Roland Gruber <linux@rolandgruber.de> Sat, 2 July 2003 18:42:00 +0200
ldap-account-manager (0.1-2) unstable; urgency=low
* Fixed missing directory config/profiles/groups.
-- Roland Gruber <linux@rolandgruber.de> Sat, 4 June 2003 18:19:00 +0200
ldap-account-manager (0.1-1) unstable; urgency=low
* Initial Release.
-- Roland Gruber <linux@rolandgruber.de> Sat, 3 May 2003 21:14:23 +0200

View File

@ -1,48 +0,0 @@
Alias /lam /usr/share/ldap-account-manager
<Directory /usr/share/ldap-account-manager>
Options +FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
DirectoryIndex index.html
</Directory>
<Directory /var/lib/ldap-account-manager/tmp>
Options -Indexes
</Directory>
<Directory /var/lib/ldap-account-manager/sess>
Options -Indexes
Order allow,deny
Deny from all
</Directory>
<Directory /var/lib/ldap-account-manager/config>
Options -Indexes
Order allow,deny
Deny from all
</Directory>
<Directory /usr/share/ldap-account-manager/lib>
Options -Indexes
<Files ~ .*>
Order allow,deny
Deny from all
</Files>
<Files ~ functions.js>
Order allow,deny
Allow from all
</Files>
<Files ~ fpdf.php>
Order allow,deny
Allow from all
</Files>
</Directory>
<Directory /usr/share/ldap-account-manager/lib/font>
Options -Indexes
Order allow,deny
Deny from all
</Directory>

View File

@ -1,266 +0,0 @@
## debian/packages for ldap-account-manager
Source: ldap-account-manager
Section: web
Priority: extra
Maintainer: Roland Gruber <post@rolandgruber.de>
Standards-Version: 3.6.2
Home-Page: <URL:http://lam.sf.net>
Upstream-Source: <URL:http://www.sourceforge.net/projects/lam>
Description: Webfrontend to manage Samba and Unix accounts
Copyright: GPL
This software is copyright (c) 2003 - 2004 by Tilo Lutz, Roland Gruber
and Michael Duergner.
.
.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
.
.
Some parts of this package have other, compatible licences. These are:
.
A: GNU Lesser General Public License
.
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
.
On Debian systems, the complete text of the GNU Lesser General Public
License can be found in /usr/share/common-licenses/LGPL file.
.
B: Freeware
.
You may use, modify and redistribute this software as you wish.
.
.
Programs and licenses with other licenses and/or authors than the
main license and authors:
.
lib/blowfish.inc A 2002-2003 Mike Cochrane
lib/fpdf.php B 2003 Olivier Plathey
Major-Changes:
Package: ldap-account-manager
Architecture: all
Depends: php4 | php4-cgi | libapache2-mod-php4, php4-ldap, apache | apache-ssl | httpd, perl, wwwconfig-common, debconf | debconf-2.0
Recommends: php4-mhash
Suggests: ldap-server, sudo, php4-mcrypt
Conflicts: php4-apc
Description: webfrontend for managing Unix and Samba accounts in an LDAP directory
LDAP Account Manager (LAM) runs on an existing webserver. LAM
supports LDAP connections via SSL and TLS. It uses the
Samba 2.x or Samba 3 schema and manages user, group and host
accounts. You can use templates for account creation and use
multiple configuration profiles. Account information can be
exported as PDF file. There is also a script
included which manages quota and homedirectories, you have to
setup sudo if you want to use it. LAM is translated to
English, French, German, Hungarian and Japanese.
.
Homepage: http://lam.sourceforge.net/
Install: sh
yada install -data -into /usr/share/ldap-account-manager index.html
yada install -data -into /var/lib/ldap-account-manager/tmp tmp/.htaccess
yada install -data -into /var/lib/ldap-account-manager/config config/.htaccess
yada install -data -into /var/lib/ldap-account-manager/config config/language
yada install -data -into /var/lib/ldap-account-manager/config config/shells
yada install -data -into /var/lib/ldap-account-manager/config config/lam.conf_sample
yada install -conffile -subdir ldap-account-manager -as config.cfg config/config.cfg_sample
ln -s /etc/ldap-account-manager/config.cfg $ROOT/var/lib/ldap-account-manager/config/config.cfg
yada install -dir /var/lib/ldap-account-manager/config/profiles
yada install -data -into /var/lib/ldap-account-manager/config/profiles/users config/profiles/users/*.pru
yada install -data -into /var/lib/ldap-account-manager/config/profiles/groups config/profiles/groups/*.prg
yada install -data -into /var/lib/ldap-account-manager/config/profiles/hosts config/profiles/hosts/*.prh
yada install -dir /var/lib/ldap-account-manager/config/pdf
yada install -doc docs/README.*
yada install -data -into /usr/share/ldap-account-manager/graphics graphics/*.jpg
yada install -data -into /usr/share/ldap-account-manager/graphics graphics/*.png
yada install -data -into /usr/share/ldap-account-manager/help help/help.inc
yada install -data -into /usr/share/ldap-account-manager/lib lib/.htaccess
yada install -data -into /usr/share/ldap-account-manager/lib lib/*.inc
yada install -data -into /usr/share/ldap-account-manager/lib lib/*.php
yada install -data -into /usr/share/ldap-account-manager/lib lib/*.js
yada install -exec -into /usr/share/ldap-account-manager/lib lib/*.pl
yada install -data -into /usr/share/ldap-account-manager/lib/font lib/font/*.php
yada install -dir /usr/share/ldap-account-manager/locale
yada install -dir /usr/share/ldap-account-manager/locale/de_DE
yada install -data -into /usr/share/ldap-account-manager/locale/de_DE/LC_MESSAGES locale/de_DE/LC_MESSAGES/messages.?o
yada install -dir /usr/share/ldap-account-manager/locale/hu_HU
yada install -data -into /usr/share/ldap-account-manager/locale/hu_HU/LC_MESSAGES locale/hu_HU/LC_MESSAGES/messages.?o
yada install -dir /usr/share/ldap-account-manager/locale/ja_JP
yada install -data -into /usr/share/ldap-account-manager/locale/ja_JP/LC_MESSAGES locale/ja_JP/LC_MESSAGES/messages.?o
yada install -dir /usr/share/ldap-account-manager/locale/fr_FR
yada install -data -into /usr/share/ldap-account-manager/locale/fr_FR/LC_MESSAGES locale/fr_FR/LC_MESSAGES/messages.?o
yada install -data -into /var/lib/ldap-account-manager/sess sess/.htaccess
yada install -data -into /usr/share/ldap-account-manager/style style/*.css
yada install -data -into /usr/share/ldap-account-manager/templates templates/*.php
yada install -data -into /usr/share/ldap-account-manager/templates/account templates/account/*.php
yada install -data -into /usr/share/ldap-account-manager/templates/config templates/config/*.php
yada install -data -into /usr/share/ldap-account-manager/templates/lists templates/lists/*.php
yada install -data -into /usr/share/ldap-account-manager/templates/profedit templates/profedit/*.php
yada install -data -into /usr/share/ldap-account-manager/templates/confwiz templates/confwiz/*.php
yada install -conffile -subdir ldap-account-manager -as apache.conf debian/lam.apache.conf
yada install -doc -as changelog HISTORY
yada install -doc -as changelog.Debian debian/changelog
yada install -doc TODO
yada install -doc debian/README.Debian
yada install -doc README
Templates:
Template: ldap-account-manager/webserver
Type: select
Choices: Apache, Apache-SSL, Both, None
Default: ${webserver}
Description: Which webserver would you like to configure automatically?
LDAP Account Manager supports any webserver that supports PHP4, but this
automatic configuration process only supports Apache and Apache-SSL. Selecting
Apache without SSL can be a security risk and is not recommended.
If you choose to configure Apache(-SSL) LAM can be accessed at http(s)://localhost/lam
.
Template: ldap-account-manager/alias
Type: string
Default: lam
Description: Enter alias:
LAM will add an alias to your httpd.conf which allows you to
access LAM at http(s)://localhost/lam. If you want an alias other than
"lam" please specify it here.
.
Template: ldap-account-manager/passwd
Type: string
Default: lam
Description: Enter master configuration password (clear text):
The configuration profiles are secured by a master password.
You will need it to create and delete profiles. As default it is
set to "lam" and can be changed directly in LAM. But you can also
change it now.
Config: bash
db_subst "ldap-account-manager/webserver" "webserver" "Apache" || true
db_input medium "ldap-account-manager/webserver" || true
db_go
db_input low "ldap-account-manager/alias" || true
db_go
db_input low "ldap-account-manager/passwd" || true
db_go
Preinst: bash
if [ ! -d /var/lib/ldap-account-manager ]; then \
mkdir /var/lib/ldap-account-manager; fi
if [ ! -h /usr/share/ldap-account-manager/config ]&&[ -d /usr/share/ldap-account-manager/config ]; \
then mv /usr/share/ldap-account-manager/config /var/lib/ldap-account-manager/config; fi
if [ ! -h /usr/share/ldap-account-manager/sess ]&&[ -d /usr/share/ldap-account-manager/sess ]; \
then mv /usr/share/ldap-account-manager/sess /var/lib/ldap-account-manager/sess; fi
Postinst: bash
if [ ! -h /usr/share/ldap-account-manager/config ]; then\
ln -s /var/lib/ldap-account-manager/config /usr/share/ldap-account-manager/config; fi
if [ ! -h /usr/share/ldap-account-manager/sess ]; then\
ln -s /var/lib/ldap-account-manager/sess /usr/share/ldap-account-manager/sess; fi
if [ ! -h /usr/share/ldap-account-manager/tmp ]; then\
ln -s /var/lib/ldap-account-manager/tmp /usr/share/ldap-account-manager/tmp; fi
chown www-data /etc/ldap-account-manager/config.cfg
chmod 600 /etc/ldap-account-manager/config.cfg
chown www-data /var/lib/ldap-account-manager/sess
chown www-data /var/lib/ldap-account-manager/tmp
chown -R www-data /var/lib/ldap-account-manager/config
chown www-data /var/lib/ldap-account-manager/tmp
if [ ! -f /var/lib/ldap-account-manager/config/lam.conf ]; \
then cp /var/lib/ldap-account-manager/config/lam.conf_sample /var/lib/ldap-account-manager/config/lam.conf; \
chown www-data /var/lib/ldap-account-manager/config/lam.conf; fi
chmod 600 /var/lib/ldap-account-manager/config/*.conf
if [ "$1" = "configure" ]; then
db_get "ldap-account-manager/alias"
alias="$RET"
perl -pi -e "s/Alias \/.* \/usr\/share\/ldap-account-manager/Alias \/$alias \/usr\/share\/ldap-account-manager/g"\
/etc/ldap-account-manager/apache.conf
db_get "ldap-account-manager/passwd"
passwd="$RET"
perl -pi -e "s/password: .*/password: $passwd/g" /etc/ldap-account-manager/config.cfg
db_get "ldap-account-manager/webserver"
webserver="$RET"
case "$webserver" in
Apache) webservers="apache";;
Apache-SSL) webservers="apache-ssl";;
Both) webservers="apache apache-ssl";;
*) webservers="";;
esac
.
. /usr/share/wwwconfig-common/php.get
.
for server in $webservers; do
if [ "$phpver" = "php4" ]; then
extension=".php"
typestr="application/x-httpd-php"
. /usr/share/wwwconfig-common/apache-addtype_all.sh
[ "$status" = "uncommented" -o "$status" = "added" -o "$status" = "lineadded" ] && restart="$server $restart"
fi
.
. /usr/share/wwwconfig-common/apache-php.sh
[ "$status" = "uncomment" ] && restart="$server $restart"
.
includefile=/etc/ldap-account-manager/apache.conf
. /usr/share/wwwconfig-common/apache-include_all.sh
[ "$status" = "uncomment" -o "$status" = "include" ] && restart="$server $restart"
.
index=index.php
. /usr/share/wwwconfig-common/apache-index_all.sh
[ "$status" = "added" ] && restart="$server $restart"
done
.
servers="apache-ssl apache"
. /usr/share/wwwconfig-common/restart.sh
fi
Postrm: bash
if [ -f /etc/apache/httpd.conf \
-a -f /usr/share/wwwconfig-common/apache-uninclude_all.sh ]; then
db_get "ldap-account-manager/webserver" || true
webserver="$RET"
case "$webserver" in
Apache) webservers="apache";;
Apache-SSL) webservers="apache-ssl";;
Both) webservers="apache apache-ssl";;
*) webservers="";;
esac
includefile=/etc/ldap-account-manager/apache.conf
.
if [ "$1" = "purge" ]; then
for server in $webservers; do
. /usr/share/wwwconfig-common/apache-uninclude_all.sh
if [ "$status" = "purge" ]; then
restart="$restart $server"
fi
done
test -d /etc/ldap-account-manager && rm -rf /etc/ldap-account-manager
fi
.
if [ "$1" = "remove" ]; then
for server in $webservers; do
. /usr/share/wwwconfig-common/apache-cominclude_all.sh
if [ "$status" = "comment" ]; then
restart="$restart $server"
fi
done
fi
.
servers="apache-ssl apache"
. /usr/share/wwwconfig-common/restart.sh
fi
if [ "$1" = "purge" ]; then
rm -r -f /usr/share/ldap-account-manager; rm -r -f /var/lib/ldap-account-manager; fi

View File

@ -1,5 +0,0 @@
# format version number, currently 2; this line is compulsory!
version=2
# LDAP Account Manager at Sourceforge
http://prdownloads.sourceforge.net/lam/ldap-account-manager_(.*)\.tar\.gz

View File

@ -1,502 +0,0 @@
GNU LESSER GENERAL PUBLIC LICENSE
Version 2.1, February 1999
Copyright (C) 1991, 1999 Free Software Foundation, Inc.
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
[This is the first released version of the Lesser GPL. It also counts
as the successor of the GNU Library Public License, version 2, hence
the version number 2.1.]
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
Licenses are intended to guarantee your freedom to share and change
free software--to make sure the software is free for all its users.
This license, the Lesser General Public License, applies to some
specially designated software packages--typically libraries--of the
Free Software Foundation and other authors who decide to use it. You
can use it too, but we suggest you first think carefully about whether
this license or the ordinary General Public License is the better
strategy to use in any particular case, based on the explanations below.
When we speak of free software, we are referring to freedom of use,
not price. Our General Public Licenses are designed to make sure that
you have the freedom to distribute copies of free software (and charge
for this service if you wish); that you receive source code or can get
it if you want it; that you can change the software and use pieces of
it in new free programs; and that you are informed that you can do
these things.
To protect your rights, we need to make restrictions that forbid
distributors to deny you these rights or to ask you to surrender these
rights. These restrictions translate to certain responsibilities for
you if you distribute copies of the library or if you modify it.
For example, if you distribute copies of the library, whether gratis
or for a fee, you must give the recipients all the rights that we gave
you. You must make sure that they, too, receive or can get the source
code. If you link other code with the library, you must provide
complete object files to the recipients, so that they can relink them
with the library after making changes to the library and recompiling
it. And you must show them these terms so they know their rights.
We protect your rights with a two-step method: (1) we copyright the
library, and (2) we offer you this license, which gives you legal
permission to copy, distribute and/or modify the library.
To protect each distributor, we want to make it very clear that
there is no warranty for the free library. Also, if the library is
modified by someone else and passed on, the recipients should know
that what they have is not the original version, so that the original
author's reputation will not be affected by problems that might be
introduced by others.
Finally, software patents pose a constant threat to the existence of
any free program. We wish to make sure that a company cannot
effectively restrict the users of a free program by obtaining a
restrictive license from a patent holder. Therefore, we insist that
any patent license obtained for a version of the library must be
consistent with the full freedom of use specified in this license.
Most GNU software, including some libraries, is covered by the
ordinary GNU General Public License. This license, the GNU Lesser
General Public License, applies to certain designated libraries, and
is quite different from the ordinary General Public License. We use
this license for certain libraries in order to permit linking those
libraries into non-free programs.
When a program is linked with a library, whether statically or using
a shared library, the combination of the two is legally speaking a
combined work, a derivative of the original library. The ordinary
General Public License therefore permits such linking only if the
entire combination fits its criteria of freedom. The Lesser General
Public License permits more lax criteria for linking other code with
the library.
We call this license the "Lesser" General Public License because it
does Less to protect the user's freedom than the ordinary General
Public License. It also provides other free software developers Less
of an advantage over competing non-free programs. These disadvantages
are the reason we use the ordinary General Public License for many
libraries. However, the Lesser license provides advantages in certain
special circumstances.
For example, on rare occasions, there may be a special need to
encourage the widest possible use of a certain library, so that it becomes
a de-facto standard. To achieve this, non-free programs must be
allowed to use the library. A more frequent case is that a free
library does the same job as widely used non-free libraries. In this
case, there is little to gain by limiting the free library to free
software only, so we use the Lesser General Public License.
In other cases, permission to use a particular library in non-free
programs enables a greater number of people to use a large body of
free software. For example, permission to use the GNU C Library in
non-free programs enables many more people to use the whole GNU
operating system, as well as its variant, the GNU/Linux operating
system.
Although the Lesser General Public License is Less protective of the
users' freedom, it does ensure that the user of a program that is
linked with the Library has the freedom and the wherewithal to run
that program using a modified version of the Library.
The precise terms and conditions for copying, distribution and
modification follow. Pay close attention to the difference between a
"work based on the library" and a "work that uses the library". The
former contains code derived from the library, whereas the latter must
be combined with the library in order to run.
GNU LESSER GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License Agreement applies to any software library or other
program which contains a notice placed by the copyright holder or
other authorized party saying it may be distributed under the terms of
this Lesser General Public License (also called "this License").
Each licensee is addressed as "you".
A "library" means a collection of software functions and/or data
prepared so as to be conveniently linked with application programs
(which use some of those functions and data) to form executables.
The "Library", below, refers to any such software library or work
which has been distributed under these terms. A "work based on the
Library" means either the Library or any derivative work under
copyright law: that is to say, a work containing the Library or a
portion of it, either verbatim or with modifications and/or translated
straightforwardly into another language. (Hereinafter, translation is
included without limitation in the term "modification".)
"Source code" for a work means the preferred form of the work for
making modifications to it. For a library, complete source code means
all the source code for all modules it contains, plus any associated
interface definition files, plus the scripts used to control compilation
and installation of the library.
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running a program using the Library is not restricted, and output from
such a program is covered only if its contents constitute a work based
on the Library (independent of the use of the Library in a tool for
writing it). Whether that is true depends on what the Library does
and what the program that uses the Library does.
1. You may copy and distribute verbatim copies of the Library's
complete source code as you receive it, in any medium, provided that
you conspicuously and appropriately publish on each copy an
appropriate copyright notice and disclaimer of warranty; keep intact
all the notices that refer to this License and to the absence of any
warranty; and distribute a copy of this License along with the
Library.
You may charge a fee for the physical act of transferring a copy,
and you may at your option offer warranty protection in exchange for a
fee.
2. You may modify your copy or copies of the Library or any portion
of it, thus forming a work based on the Library, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) The modified work must itself be a software library.
b) You must cause the files modified to carry prominent notices
stating that you changed the files and the date of any change.
c) You must cause the whole of the work to be licensed at no
charge to all third parties under the terms of this License.
d) If a facility in the modified Library refers to a function or a
table of data to be supplied by an application program that uses
the facility, other than as an argument passed when the facility
is invoked, then you must make a good faith effort to ensure that,
in the event an application does not supply such function or
table, the facility still operates, and performs whatever part of
its purpose remains meaningful.
(For example, a function in a library to compute square roots has
a purpose that is entirely well-defined independent of the
application. Therefore, Subsection 2d requires that any
application-supplied function or table used by this function must
be optional: if the application does not supply it, the square
root function must still compute square roots.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Library,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Library, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote
it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Library.
In addition, mere aggregation of another work not based on the Library
with the Library (or with a work based on the Library) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may opt to apply the terms of the ordinary GNU General Public
License instead of this License to a given copy of the Library. To do
this, you must alter all the notices that refer to this License, so
that they refer to the ordinary GNU General Public License, version 2,
instead of to this License. (If a newer version than version 2 of the
ordinary GNU General Public License has appeared, then you can specify
that version instead if you wish.) Do not make any other change in
these notices.
Once this change is made in a given copy, it is irreversible for
that copy, so the ordinary GNU General Public License applies to all
subsequent copies and derivative works made from that copy.
This option is useful when you wish to copy part of the code of
the Library into a program that is not a library.
4. You may copy and distribute the Library (or a portion or
derivative of it, under Section 2) in object code or executable form
under the terms of Sections 1 and 2 above provided that you accompany
it with the complete corresponding machine-readable source code, which
must be distributed under the terms of Sections 1 and 2 above on a
medium customarily used for software interchange.
If distribution of object code is made by offering access to copy
from a designated place, then offering equivalent access to copy the
source code from the same place satisfies the requirement to
distribute the source code, even though third parties are not
compelled to copy the source along with the object code.
5. A program that contains no derivative of any portion of the
Library, but is designed to work with the Library by being compiled or
linked with it, is called a "work that uses the Library". Such a
work, in isolation, is not a derivative work of the Library, and
therefore falls outside the scope of this License.
However, linking a "work that uses the Library" with the Library
creates an executable that is a derivative of the Library (because it
contains portions of the Library), rather than a "work that uses the
library". The executable is therefore covered by this License.
Section 6 states terms for distribution of such executables.
When a "work that uses the Library" uses material from a header file
that is part of the Library, the object code for the work may be a
derivative work of the Library even though the source code is not.
Whether this is true is especially significant if the work can be
linked without the Library, or if the work is itself a library. The
threshold for this to be true is not precisely defined by law.
If such an object file uses only numerical parameters, data
structure layouts and accessors, and small macros and small inline
functions (ten lines or less in length), then the use of the object
file is unrestricted, regardless of whether it is legally a derivative
work. (Executables containing this object code plus portions of the
Library will still fall under Section 6.)
Otherwise, if the work is a derivative of the Library, you may
distribute the object code for the work under the terms of Section 6.
Any executables containing that work also fall under Section 6,
whether or not they are linked directly with the Library itself.
6. As an exception to the Sections above, you may also combine or
link a "work that uses the Library" with the Library to produce a
work containing portions of the Library, and distribute that work
under terms of your choice, provided that the terms permit
modification of the work for the customer's own use and reverse
engineering for debugging such modifications.
You must give prominent notice with each copy of the work that the
Library is used in it and that the Library and its use are covered by
this License. You must supply a copy of this License. If the work
during execution displays copyright notices, you must include the
copyright notice for the Library among them, as well as a reference
directing the user to the copy of this License. Also, you must do one
of these things:
a) Accompany the work with the complete corresponding
machine-readable source code for the Library including whatever
changes were used in the work (which must be distributed under
Sections 1 and 2 above); and, if the work is an executable linked
with the Library, with the complete machine-readable "work that
uses the Library", as object code and/or source code, so that the
user can modify the Library and then relink to produce a modified
executable containing the modified Library. (It is understood
that the user who changes the contents of definitions files in the
Library will not necessarily be able to recompile the application
to use the modified definitions.)
b) Use a suitable shared library mechanism for linking with the
Library. A suitable mechanism is one that (1) uses at run time a
copy of the library already present on the user's computer system,
rather than copying library functions into the executable, and (2)
will operate properly with a modified version of the library, if
the user installs one, as long as the modified version is
interface-compatible with the version that the work was made with.
c) Accompany the work with a written offer, valid for at
least three years, to give the same user the materials
specified in Subsection 6a, above, for a charge no more
than the cost of performing this distribution.
d) If distribution of the work is made by offering access to copy
from a designated place, offer equivalent access to copy the above
specified materials from the same place.
e) Verify that the user has already received a copy of these
materials or that you have already sent this user a copy.
For an executable, the required form of the "work that uses the
Library" must include any data and utility programs needed for
reproducing the executable from it. However, as a special exception,
the materials to be distributed need not include anything that is
normally distributed (in either source or binary form) with the major
components (compiler, kernel, and so on) of the operating system on
which the executable runs, unless that component itself accompanies
the executable.
It may happen that this requirement contradicts the license
restrictions of other proprietary libraries that do not normally
accompany the operating system. Such a contradiction means you cannot
use both them and the Library together in an executable that you
distribute.
7. You may place library facilities that are a work based on the
Library side-by-side in a single library together with other library
facilities not covered by this License, and distribute such a combined
library, provided that the separate distribution of the work based on
the Library and of the other library facilities is otherwise
permitted, and provided that you do these two things:
a) Accompany the combined library with a copy of the same work
based on the Library, uncombined with any other library
facilities. This must be distributed under the terms of the
Sections above.
b) Give prominent notice with the combined library of the fact
that part of it is a work based on the Library, and explaining
where to find the accompanying uncombined form of the same work.
8. You may not copy, modify, sublicense, link with, or distribute
the Library except as expressly provided under this License. Any
attempt otherwise to copy, modify, sublicense, link with, or
distribute the Library is void, and will automatically terminate your
rights under this License. However, parties who have received copies,
or rights, from you under this License will not have their licenses
terminated so long as such parties remain in full compliance.
9. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Library or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Library (or any work based on the
Library), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Library or works based on it.
10. Each time you redistribute the Library (or any work based on the
Library), the recipient automatically receives a license from the
original licensor to copy, distribute, link with or modify the Library
subject to these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties with
this License.
11. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Library at all. For example, if a patent
license would not permit royalty-free redistribution of the Library by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Library.
If any portion of this section is held invalid or unenforceable under any
particular circumstance, the balance of the section is intended to apply,
and the section as a whole is intended to apply in other circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
12. If the distribution and/or use of the Library is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Library under this License may add
an explicit geographical distribution limitation excluding those countries,
so that distribution is permitted only in or among countries not thus
excluded. In such case, this License incorporates the limitation as if
written in the body of this License.
13. The Free Software Foundation may publish revised and/or new
versions of the Lesser General Public License from time to time.
Such new versions will be similar in spirit to the present version,
but may differ in detail to address new problems or concerns.
Each version is given a distinguishing version number. If the Library
specifies a version number of this License which applies to it and
"any later version", you have the option of following the terms and
conditions either of that version or of any later version published by
the Free Software Foundation. If the Library does not specify a
license version number, you may choose any version ever published by
the Free Software Foundation.
14. If you wish to incorporate parts of the Library into other free
programs whose distribution conditions are incompatible with these,
write to the author to ask for permission. For software which is
copyrighted by the Free Software Foundation, write to the Free
Software Foundation; we sometimes make exceptions for this. Our
decision will be guided by the two goals of preserving the free status
of all derivatives of our free software and of promoting the sharing
and reuse of software generally.
NO WARRANTY
15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Libraries
If you develop a new library, and you want it to be of the greatest
possible use to the public, we recommend making it free software that
everyone can redistribute and change. You can do so by permitting
redistribution under these terms (or, alternatively, under the terms of the
ordinary General Public License).
To apply these terms, attach the following notices to the library. It is
safest to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least the
"copyright" line and a pointer to where the full notice is found.
<one line to give the library's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Also add information on how to contact you by electronic and paper mail.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the library, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the
library `Frob' (a library for tweaking knobs) written by James Random Hacker.
<signature of Ty Coon>, 1 April 1990
Ty Coon, President of Vice
That's all there is to it!

View File

@ -1,286 +0,0 @@
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
<TITLE>FAQ</TITLE>
<LINK TYPE="text/css" REL="stylesheet" HREF="fpdf.css">
</HEAD>
<BODY>
<H2>FAQ</H2>
<B>1.</B> <A HREF='#1'>What's exactly the license of FPDF? Are there any usage restrictions?</A><BR>
<B>2.</B> <A HREF='#2'>When I try to create a PDF, a lot of weird characters show on the screen. Why?</A><BR>
<B>3.</B> <A HREF='#3'>I try to generate a PDF and IE displays a blank page. What happens?</A><BR>
<B>4.</B> <A HREF='#4'>I send parameters using the POST method and the values don't appear in the PDF.</A><BR>
<B>5.</B> <A HREF='#5'>When I use a PHP session, IE doesn't display my PDF any more but asks me to download it.</A><BR>
<B>6.</B> <A HREF='#6'>When I'm on SSL, IE can't open the PDF.</A><BR>
<B>7.</B> <A HREF='#7'>When I execute a script I get the message "FPDF error: Don't alter the locale before including class file".</A><BR>
<B>8.</B> <A HREF='#8'>I try to put a PNG and Acrobat says "There was an error processing a page. A drawing error occurred".</A><BR>
<B>9.</B> <A HREF='#9'>I encounter the following error when I try to generate a PDF: Warning: Cannot add header information - headers already sent by (output started at script.php:X)</A><BR>
<B>10.</B> <A HREF='#10'>I try to display a variable in the Header method but nothing prints.</A><BR>
<B>11.</B> <A HREF='#11'>I defined the Header and Footer methods in my PDF class but nothing appears.</A><BR>
<B>12.</B> <A HREF='#12'>I can't make line breaks work. I put \n in the string printed by MultiCell but it doesn't work.</A><BR>
<B>13.</B> <A HREF='#13'>I try to put the euro symbol but it doesn't work.</A><BR>
<B>14.</B> <A HREF='#14'>I draw a frame with very precise dimensions, but when printed I notice some differences.</A><BR>
<B>15.</B> <A HREF='#15'>I'd like to use the whole surface of the page, but when printed I always have some margins. How can I get rid of them?</A><BR>
<B>16.</B> <A HREF='#16'>What's the limit of the file sizes I can generate with FPDF?</A><BR>
<B>17.</B> <A HREF='#17'>Can I modify a PDF with FPDF?</A><BR>
<B>18.</B> <A HREF='#18'>I'd like to make a search engine in PHP and index PDF files. Can I do it with FPDF?</A><BR>
<B>19.</B> <A HREF='#19'>Can I convert an HTML page to PDF with FPDF?</A><BR>
<B>20.</B> <A HREF='#20'>Can I concatenate PDF files with FPDF?</A><BR>
<BR><BR>
<P><A NAME='1'></A><B>1.</B> <FONT CLASS='st'>What's exactly the license of FPDF? Are there any usage restrictions?</FONT></P>
FPDF is Freeware (it is stated at the beginning of the source file). There is no usage
restriction. You may embed it freely in your application (commercial or not), with or
without modification. You may redistribute it, too.
<P><A NAME='2'></A><B>2.</B> <FONT CLASS='st'>When I try to create a PDF, a lot of weird characters show on the screen. Why?</FONT></P>
These "weird" characters are in fact the actual content of your PDF. This behaviour is a bug of
IE. When it first receives an HTML page, then a PDF from the same URL, it displays it directly
without launching Acrobat. This happens frequently during the development stage: on the least
script error, an HTML page is sent, and after correction, the PDF arrives.
<BR>
To solve the problem, simply quit and restart IE. You can also go to another URL and come
back.
<BR>
To avoid this kind of inconvenience during the development, you can generate the PDF directly
to a file and open it through the explorer.
<P><A NAME='3'></A><B>3.</B> <FONT CLASS='st'>I try to generate a PDF and IE displays a blank page. What happens?</FONT></P>
First of all, check that you send nothing to the browser after the PDF (not even a space or a
carriage return). You can put an exit statement just after the call to the Output() method to
be sure.
<BR>
If it still doesn't work, it means you're a victim of the "blank page syndrome". IE used in
conjunction with the Acrobat plug-in suffers from numerous bugs, in all versions. You should
test your application with as many IE versions as possible (at least if you're on the Internet).
The problem occurs mostly with the POST method, so it is strongly advised to avoid it (all the
more that it causes other problems, see the next question). The GET works better but may fail
when the URL becomes too long: don't use a query string with more than 45 characters. However, a
tip exists to exceed this limit: end the URL with .pdf, which tricks IE. If you use a form, you
can add a hidden field at the last position:
<BR>
<BR>
<TABLE WIDTH="100%" BGCOLOR="#E0E0E0"><TR><TD>
<TT>
&lt;INPUT TYPE=&quot;HIDDEN&quot; NAME=&quot;ext&quot; VALUE=&quot;.pdf&quot;&gt;
</TT>
</TD></TR></TABLE><BR>
The usage of PHP sessions also often causes trouble (avoid using HTTP headers preventing caching).
See question 5 for a workaround.
<BR>
<BR>
To avoid all these problems in a reliable manner, two main techniques exist:
<BR>
<BR>
- Disable the plug-in and use Acrobat as a helper application. To do this, launch Acrobat; in
the File menu, Preferences, General, uncheck the option "Web Browser Integration" (for Acrobat
5: Edit, Preferences, Options, "Display PDF in Browser"). Then, the next time you load a PDF in
IE, it displays the dialog box "Open it" or "Save it to disk". Uncheck the option "Always ask
before opening this type of file" and choose Open. From now on, PDF files will open
automatically in an external Acrobat window.
<BR>
The drawback of the method is that you need to alter the client configuration, which you can do
in an intranet environment but not for the Internet.
<BR>
<BR>
- Use a redirection technique. It consists in generating the PDF in a temporary file on the
server and redirect the client on it (by using JavaScript, not the Location HTTP header which
also causes trouble). For instance, at the end of the script, you can put the following:
<BR>
<BR>
<TABLE WIDTH="100%" BGCOLOR="#E0E0E0"><TR><TD>
<TT>
//Determine a temporary file name in the current directory<BR>
$file=basename(tempnam(getcwd(),'tmp'));<BR>
//Save PDF to file<BR>
$pdf-&gt;Output($file);<BR>
//JavaScript redirection<BR>
echo &quot;&lt;HTML&gt;&lt;SCRIPT&gt;document.location='getpdf.php?f=$file';&lt;/SCRIPT&gt;&lt;/HTML&gt;&quot;;
</TT>
</TD></TR></TABLE><BR>
Then create the getpdf.php file with this:
<BR>
<BR>
<TABLE WIDTH="100%" BGCOLOR="#E0E0E0"><TR><TD>
<TT>
&lt;?php<BR>
$f=$HTTP_GET_VARS['f'];<BR>
//Check file (don't skip it!)<BR>
if(substr($f,0,3)!='tmp' or strpos($f,'/') or strpos($f,'\\'))<BR>
&nbsp;&nbsp;&nbsp;&nbsp;die('Incorrect file name');<BR>
if(!file_exists($f))<BR>
&nbsp;&nbsp;&nbsp;&nbsp;die('File does not exist');<BR>
//Handle special IE request if needed<BR>
if($HTTP_SERVER_VARS['HTTP_USER_AGENT']=='contype')<BR>
{<BR>
&nbsp;&nbsp;&nbsp;&nbsp;Header('Content-Type: application/pdf');<BR>
&nbsp;&nbsp;&nbsp;&nbsp;exit;<BR>
}<BR>
//Output PDF<BR>
Header('Content-Type: application/pdf');<BR>
Header('Content-Length: '.filesize($f));<BR>
readfile($f);<BR>
//Remove file<BR>
unlink($f);<BR>
exit;<BR>
?&gt;
</TT>
</TD></TR></TABLE><BR>
This method works in most cases but IE6 can still experience trouble. The "ultimate" method
consists in redirecting directly to the temporary file. The file name must therefore end with .pdf:
<BR>
<BR>
<TABLE WIDTH="100%" BGCOLOR="#E0E0E0"><TR><TD>
<TT>
//Determine a temporary file name in the current directory<BR>
$file=basename(tempnam(getcwd(),'tmp'));<BR>
rename($file,$file.'.pdf');<BR>
$file.='.pdf';<BR>
//Save PDF to file<BR>
$pdf-&gt;Output($file);<BR>
//JavaScript redirection<BR>
echo &quot;&lt;HTML&gt;&lt;SCRIPT&gt;document.location='$file';&lt;/SCRIPT&gt;&lt;/HTML&gt;&quot;;
</TT>
</TD></TR></TABLE><BR>
This method turns the dynamic PDF into a static one and avoids all troubles. But you have to do
some cleaning in order to delete the temporary files. For instance:
<BR>
<BR>
<TABLE WIDTH="100%" BGCOLOR="#E0E0E0"><TR><TD>
<TT>
function CleanFiles($dir)<BR>
{<BR>
&nbsp;&nbsp;&nbsp;&nbsp;//Delete temporary files<BR>
&nbsp;&nbsp;&nbsp;&nbsp;$t=time();<BR>
&nbsp;&nbsp;&nbsp;&nbsp;$h=opendir($dir);<BR>
&nbsp;&nbsp;&nbsp;&nbsp;while($file=readdir($h))<BR>
&nbsp;&nbsp;&nbsp;&nbsp;{<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(substr($file,0,3)=='tmp' and substr($file,-4)=='.pdf')<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$path=$dir.'/'.$file;<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if($t-filemtime($path)&gt;3600)<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@unlink($path);<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>
&nbsp;&nbsp;&nbsp;&nbsp;}<BR>
&nbsp;&nbsp;&nbsp;&nbsp;closedir($h);<BR>
}
</TT>
</TD></TR></TABLE><BR>
This function deletes all files of the form tmp*.pdf older than an hour in the specified
directory. You may call it where you want, for instance in the script which generates the PDF.
<BR>
<BR>
Remark: it is necessary to open the PDF in a new window, as you can't go backwards due to the
redirection.
<P><A NAME='4'></A><B>4.</B> <FONT CLASS='st'>I send parameters using the POST method and the values don't appear in the PDF.</FONT></P>
It's a problem affecting some versions of IE (especially the first 5.5). See the previous
question for the ways to work around it.
<P><A NAME='5'></A><B>5.</B> <FONT CLASS='st'>When I use a PHP session, IE doesn't display my PDF any more but asks me to download it.</FONT></P>
It's a problem affecting some versions of IE. To work around it, add the following line before
session_start():
<BR>
<BR>
<TABLE WIDTH="100%" BGCOLOR="#E0E0E0"><TR><TD>
<TT>
session_cache_limiter('private');
</TT>
</TD></TR></TABLE><BR>
or do a redirection as explained in question 3.
<P><A NAME='6'></A><B>6.</B> <FONT CLASS='st'>When I'm on SSL, IE can't open the PDF.</FONT></P>
The problem may be fixed by adding this line:<BR>
<BR>
<TABLE WIDTH="100%" BGCOLOR="#E0E0E0"><TR><TD>
<TT>
Header('Pragma: public');
</TT>
</TD></TR></TABLE><BR>
<P><A NAME='7'></A><B>7.</B> <FONT CLASS='st'>When I execute a script I get the message "FPDF error: Don't alter the locale before including class file".</FONT></P>
When the decimal separator is configured as a comma before including a file, there is a
<A HREF="http://bugs.php.net/bug.php?id=17105" TARGET="_blank">bug</A> in some PHP versions and decimal
numbers get truncated. Therefore you shouldn't make a call to setlocale() before including the class.
On Unix, you shouldn't set the LC_ALL environment variable neither, for it is equivalent to a
setlocale() call.
<P><A NAME='8'></A><B>8.</B> <FONT CLASS='st'>I try to put a PNG and Acrobat says "There was an error processing a page. A drawing error occurred".</FONT></P>
Acrobat 5 has a bug and is unable to display transparent monochrome images (i.e. with 1 bit per
pixel). Remove transparency or save your image in 16 colors (4 bits per pixel) or more.
<P><A NAME='9'></A><B>9.</B> <FONT CLASS='st'>I encounter the following error when I try to generate a PDF: Warning: Cannot add header information - headers already sent by (output started at script.php:X)</FONT></P>
You must send nothing to the browser except the PDF itself: no HTML, no space, no carriage return,
neither before nor after. The script outputs something at line X.
<P><A NAME='10'></A><B>10.</B> <FONT CLASS='st'>I try to display a variable in the Header method but nothing prints.</FONT></P>
You have to use the <TT>global</TT> keyword, for instance:
<BR>
<BR>
<TABLE WIDTH="100%" BGCOLOR="#E0E0E0"><TR><TD>
<TT>
function Header()<BR>
{<BR>
&nbsp;&nbsp;&nbsp;&nbsp;global $title;<BR>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;SetFont('Arial','B',15);<BR>
&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;Cell(0,10,$title,1,1,'C');<BR>
}
</TT>
</TD></TR></TABLE><BR>
<P><A NAME='11'></A><B>11.</B> <FONT CLASS='st'>I defined the Header and Footer methods in my PDF class but nothing appears.</FONT></P>
You have to create an object from the PDF class, not FPDF:<BR>
<BR>
<TABLE WIDTH="100%" BGCOLOR="#E0E0E0"><TR><TD>
<TT>
$pdf=new PDF();
</TT>
</TD></TR></TABLE><BR>
<P><A NAME='12'></A><B>12.</B> <FONT CLASS='st'>I can't make line breaks work. I put \n in the string printed by MultiCell but it doesn't work.</FONT></P>
You have to enclose your string with double quotes, not single ones.
<P><A NAME='13'></A><B>13.</B> <FONT CLASS='st'>I try to put the euro symbol but it doesn't work.</FONT></P>
The standard fonts have the euro character at position 128. You can define a constant like this
for convenience:
<BR>
<BR>
<TABLE WIDTH="100%" BGCOLOR="#E0E0E0"><TR><TD>
<TT>
define('EURO',chr(128));
</TT>
</TD></TR></TABLE><BR>
Note: Acrobat 4 or higher is required to display euro.
<P><A NAME='14'></A><B>14.</B> <FONT CLASS='st'>I draw a frame with very precise dimensions, but when printed I notice some differences.</FONT></P>
To respect dimensions, you have to uncheck the option "Fit to page" in the print dialog box.
<P><A NAME='15'></A><B>15.</B> <FONT CLASS='st'>I'd like to use the whole surface of the page, but when printed I always have some margins. How can I get rid of them?</FONT></P>
All printers have physical margins (different depending on the model), it is therefore impossible
to remove them and print on the totality of the paper.
<P><A NAME='16'></A><B>16.</B> <FONT CLASS='st'>What's the limit of the file sizes I can generate with FPDF?</FONT></P>
There is no particular limit. There are some constraints however:
<BR>
<BR>
- The maximum memory size allocated to PHP scripts defaults to 8MB. For very big documents,
especially with images, this limit may be reached (the file being built into memory). The
parameter is configured in the php.ini file.
<BR>
<BR>
- The maximum execution time allocated defaults to 30 seconds. This limit can of course be easily
reached. It is configured in php.ini and may be altered dynamically with set_time_limit().
<BR>
<BR>
- Browsers generally have a 5 minute time-out. If you send the PDF directly to the browser and
reach the limit, it will be lost. It is therefore advised for very big documents to
generate them in a file, and to send some data to the browser from time to time (for instance
page 1, page 2... with flush() to force the output). When the document is finished, you can send
a redirection on it with JavaScript or create a link.
<BR>
Remark: even when the browser goes in time-out, the script may continue to run on the server.
<P><A NAME='17'></A><B>17.</B> <FONT CLASS='st'>Can I modify a PDF with FPDF?</FONT></P>
No.
<P><A NAME='18'></A><B>18.</B> <FONT CLASS='st'>I'd like to make a search engine in PHP and index PDF files. Can I do it with FPDF?</FONT></P>
No. But a GPL C utility does exist, pdftotext, which is able to extract the textual content from
a PDF. It is provided with the Xpdf package:<BR>
<BR>
<A HREF="http://www.foolabs.com/xpdf/" TARGET="_blank">http://www.foolabs.com/xpdf/</A>
<P><A NAME='19'></A><B>19.</B> <FONT CLASS='st'>Can I convert an HTML page to PDF with FPDF?</FONT></P>
No. But a GPL C utility does exist, htmldoc, which allows to do it and gives good results:<BR>
<BR>
<A HREF="http://www.easysw.com/htmldoc/" TARGET="_blank">http://www.easysw.com/htmldoc/</A>
<P><A NAME='20'></A><B>20.</B> <FONT CLASS='st'>Can I concatenate PDF files with FPDF?</FONT></P>
No. But a free C utility exists to perform this task:<BR>
<BR>
<A HREF="http://thierry.schmit.free.fr/dev/mbtPdfAsm/enMbtPdfAsm2.html" TARGET="_blank">http://thierry.schmit.free.fr/dev/mbtPdfAsm/enMbtPdfAsm2.html</A>
</BODY>
</HTML>

View File

@ -1,28 +0,0 @@
The attribute "host" is only in objectclass account.
Unfortunatly "account" conflicts with
"inetorgperson". so there's no perfect way to use
both.
In order to get attribute host working you have to
modify schema/inetorgperson and include host:
# inetOrgPerson
# The inetOrgPerson represents people who are associated with an
# organization in some way. It is a structural class and is derived
# from the organizationalPerson which is defined in X.521 [X521].
objectclass ( 2.16.840.1.113730.3.2.2
NAME 'inetOrgPerson'
DESC 'RFC2798: Internet Organizational Person'
SUP organizationalPerson
STRUCTURAL
MAY (
audio $ businessCategory $ carLicense $ departmentNumber $
displayName $ employeeNumber $ employeeType $ givenName $
homePhone $ homePostalAddress $ initials $ jpegPhoto $
labeledURI $ mail $ manager $ mobile $ o $ pager $
photo $ roomNumber $ secretary $ uid $ userCertificate $
x500uniqueIdentifier $ preferredLanguage $
userSMIMECertificate $ userPKCS12 $ host )
)

View File

@ -1,79 +0,0 @@
lamdaemon.pl is used to modify quota and homedirs
on a remote or local host via ssh.
If you want wo use it you have to set up some
things to get it to work:
1. Setup values in LDAP Account Manager
* Set the remote or local host in the configuration
(e.g. 127.0.0.1)
* Path to lamdaemon.pl, e.g. /srv/www/htdocs/lam/lib/lamdaemon.pl
2. Set up sudo
The perl script has to run as root. Therefore we need
a wrapper, sudo.
Edit /etc/sudoers on host where homedirs or quotas should be used
and add the following line:
$admin All= NOPASSWD: $path
$admin is the adminuser from LAM and $path
is the path to lamdaemon.pl e.g. "$admin All= NOPASSWD: /srv/www/htdocs/lam/lib/lamdaemon.pl"
At the moment the password is a paramteter of lamdaemon.pl
therefore you should disable logging so the password does not
appear in any logfile.
This can be done by adding the following line to /etc/sudoers:
Defaults:$admin !syslog
3. Set up Perl
We need some external Perl modules, Quota and Net::SSH::Perl
To install them, run:
perl -MCPAN -e shell
install Quota
install Net::SSH::Perl
If your Perl executable is not located in /usr/bin/perl you will have to edit
the path in the first line of lamdaemon.pl.
4. Test lamdaemon.pl
There is a test-function in lamdaemon.pl. Please run lamdaemon.pl
with the following parameters to test it:
lamdaemon.pl $ssh-server $lam_path_on_host $admin-username $admin-password *test
$ssh-server is the remote host lamdaemon.pl should be run on
$lam_path_on_host is the path to lamdaemon.pl on remote host
$admin-username is the name of the user which is allowed to run lamdaemon.pl
as root. It is the same user as in /etc/sudoers
$admin-password is the password of the admin user
*test is the command which tells lamdaemon.pl to test settings
You have to run the command as the user your webserver is running, e.g.
wwwrun@tilo:/srv/www/htdocs/lam/lib> /srv/www/htdocs/lam/lib/lamdaemon.pl \
127.0.0.1 /srv/www/htdocs/lam/lib/lamdaemon.pl adminuser secret *test
You should get the following response:
Net::SSH::Perl successfully installed.
Perl quota module successfully installed.
If you have not seen any error lamdaemon.pl should be set up successfully.
!!! Attention !!!
Your password in LDAP has to be hashed with CRYPT. If you use something like SSHA
you will probably get "Access denied.".
Now everything should work fine.
Security warning:
-----------------
If you use PHP < 4.3 your admin user and password are passed as commandline argument.
This can be a security risk. Upgrade your PHP version for productive use.
Please send a mail to TiloLutz@gmx.de if you have any suggestions.

View File

@ -1,21 +0,0 @@
Some basic hints to configure the OpenLDAP server:
SIZELIMIT: OpenLDAP allows by default 500 return values per search, if you have more users/groups/hosts
change this in slapd.conf: e.g. "sizelimit 10000" or "sizelimit -1" for unlimited return values.
INDICES: Indices will improve the performance when searching for entries in the LDAP directory.
The following indices are recommended:
index objectClass eq
index default sub
index uidNumber eq
index gidNumber eq
index memberUid eq
index cn,sn,uid,displayName pres,sub,eq
# Samba 2.x
index rid eq
index primaryGroupID eq
# Samba 3.x
index sambaSID eq
index sambaPrimaryGroupSID eq
index sambaDomainName eq

View File

@ -1,36 +0,0 @@
1. Use of SSL
The data which is transfered between you and LAM is very sensitive.
Please always use SSL encrypted connections between LAM and your browser to
protect yourself against network sniffers.
2. LDAP+SSL and TLS
LAM should start TLS automatically if possible. LDAP+SSL will be used if you use
ldaps://servername in your configuration profile.
3. Chrooted servers
If your server is chrooted and you have no access to /dev/random or /dev/urandom
this can be a security risk. LAM stores your LDAP password encrypted in the session.
LAM uses rand() to generate the key if /dev/random and /dev/urandom are not accessible.
Therefore the key can be easily guessed.
An attaker needs read access to the session file (e.g. by another Apache instance) to
exploit this.
4. LDAP password protection
Your LDAP password is stored encrypted in the session file. The key and IV to decrypt
it are stored in two cookies. We use MCrypt/AES or Blowfish to encrypt the password.
5. Protection of new user passwords
These passwords are, if stored in the session file, encrypted with the same key and IV
as your LDAP password.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Binary file not shown.

View File

@ -1,28 +0,0 @@
<?php
/*
$Id$
This code is part of LDAP Account Manager (http://www.sourceforge.net/projects/lam)
Copyright (C) 2003 Michael Duergner
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
LDAP Account Manager example file for external help pages.
*/
?>
<h1 class="help"><?php echo "Help test"; ?></h1>
<p class="help"><?php echo "Some text descibing the error"; ?></p>
<p class="help"><?php echo "Optionalle some links to referring help topics"; ?></p>

View File

@ -1,315 +0,0 @@
<?php
/*
$Id$
This code is part of LDAP Account Manager (http://www.sourceforge.net/projects/lam)
Copyright (C) 2003 Michael Duergner
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
LDAP Account Manager help topics.
*/
setlanguage();
$helpArray = array (
// 0 - 99
// any developer
// 200 - 299
// Roland Gruber
// configuration wizard
// configuration login
// config profile management
"200" => array ("ext" => "FALSE", "Headline" => _("Configuration Wizard") . " - " . _("Login"),
"Text" => _("Please enter the configuration password. This is NOT your LDAP password. It is stored in your .conf-file. If this is the first time you log in, enter \"lam\".")),
"201" => array ("ext" => "FALSE", "Headline" => _("Configuration Wizard") . " - " . _("Server address"),
"Text" => _("This is the server address of your LDAP server. Use ldap:// for standard LDAP connections and ldaps:// for encrypted (require server certificates) connections. The port value is optional.") .
"<br><br><b> " .
_("Examples") .
":</b><br><br> " .
_("ldap://localhost:389 connects to localhost using a standard LDAP connection on port 389") .
"<br> " .
_("ldaps://141.40.146.133 connects to 141.40.146.133 using an encrypted LDAP connection.") .
"<br><br><br><b> " .
_("Note") .
":</b><br><br>" .
_("When using ldaps:// be sure to use exactly the same IP/domain name as in your certificate!")),
"202" => array ("ext" => "FALSE", "Headline" => _("Configuration Wizard") . " - " . _("User/Group/Host suffix"),
"Text" => _("This is the suffix of the LDAP tree from where to search for user/group/host entries. Only entries in these subtrees will be displayed in the user/group/host list. When creating a new accont this will be the DN where it is saved.") .
"<br><br><b>".
_("Examples").
":</b><br><br>".
_("ou=People,dc=yourcompany,dc=com will read and store all accounts in this subtree.")),
"203" => array ("ext" => "FALSE", "Headline" => _("Configuration Wizard") . " - " . _("UID number"),
"Text" => _("These are the minimum and maximum numbers to use for user IDs when creating new user accounts. The range should be different from that of machines. New user accounts will always get the highest number in use plus one.")),
"204" => array ("ext" => "FALSE", "Headline" => _("Configuration Wizard") . " - " . _("GID number"),
"Text" => _("These are the minimum and maximum numbers to use for group IDs when creating new group accounts. New group accounts will always get the highest number in use plus one.")),
"205" => array ("ext" => "FALSE", "Headline" => _("Configuration Wizard") . " - " . _("Machine number"),
"Text" => _("These are the minimum and maximum numbers to use for machine IDs when creating new accounts for Samba hosts. The range should be different from that of users. New host accounts will always get the highest number in use plus one.")),
"206" => array ("ext" => "FALSE", "Headline" => _("Configuration Wizard") . " - " . _("List attributes"),
"Text" => _("This is the list of attributes to show in the user/group/host list. The entries can either be predefined values, \"#attribute\", or individual ones, \"attribute:description\". Several entries are seperated by semicolons.") .
"<br><br><b>" .
_("Example") .
": </b>#homeDirectory;#uid;#uidNumber;#gidNumber;mail:Mail address<br><br><br><u><b>" .
_("Predefined values") .
":</b></u><br><br><b>" .
_("Users") .
": </b>#uid, #uidNumber, #gidNumber, #cn, #host, #givenName, #sn, #homeDirectory, #loginShell, #mail, #gecos".
"<br><b>" .
_("Groups") .
": </b>#cn, #gidNumber, #memberUID, #member, #description".
"<br><b>" .
_("Hosts") .
": </b>#uid, #cn, #rid, #description"),
"207" => array ("ext" => "FALSE", "Headline" => _("Configuration Wizard") . " - " . _("Valid users"),
"Text" => _("This is a list of valid DN entries of all users that are allowed to login to LDAP Account Manager. The user names have to be separated by semicolons.") .
"<br><br><b>" .
_("Example") .
": </b>cn=admin,dc=yourdomain,dc=org;cn=manager,dc=yourdomain,dc=org"),
"208" => array ("ext" => "FALSE", "Headline" => _("Configuration Wizard") . " - " . _("Maximum list entries"),
"Text" => _("This is the number of rows to show in the user/group/host list. If more entries are found the list will be split into several pages.")),
"209" => array ("ext" => "FALSE", "Headline" => _("Configuration Wizard") . " - " . _("Default language"),
"Text" => _("This defines the language of the login window and sets this language as the default language. Users can change the language at login.")),
"210" => array ("ext" => "FALSE", "Headline" => _("Configuration Wizard") . " - " . _("Script path"),
"Text" => _("This is the absolute path to an external script for setting quotas and creating home directories.").
"<br><br><b>".
_("Use it at your own risk and read the documentation for lamdaemon before you use it!").
"</b>"),
"211" => array ("ext" => "FALSE", "Headline" => _("Configuration Wizard") . " - " . _("Script server"),
"Text" => _("This is the server where the lamdaemon script is stored. LDAP Account Manager will make a SSH connection to this server with username and password provided at login.").
"<br><br><b>".
_("Use it at your own risk and read the documentation for lamdaemon before you use it!").
"</b>"),
"212" => array ("ext" => "FALSE", "Headline" => _("Configuration Wizard") . " - " . _("Change password"),
"Text" => _("If you want to change the current preferences password, please enter it here.")),
"213" => array ("ext" => "FALSE", "Headline" => _("Configuration Wizard") . " - " . _("Samba version"),
"Text" => _("If you use Samba 3.x with the new LDAP schema say \"yes\" here, otherwise \"no\".").
"<br><br><b>".
_("LAM will not work if version is wrong!").
"</b>"),
"214" => array ("ext" => "FALSE", "Headline" => _("Configuration Wizard") . " - " . _("Cache timeout"),
"Text" => _("This is the time in minutes which LAM caches its LDAP searches. Shorter times will stress LDAP more but decrease the possibility that changes are not identified.")),
"215" => array ("ext" => "FALSE", "Headline" => _("Configuration Wizard") . " - " . _("Password hash type"),
"Text" => _("LAM supports CRYPT, SHA, SSHA, MD5 and SMD5 to generate the hash value of an user password. SSHA and CRYPT are the most common but CRYPT does not support passwords greater than 8 letters. We do not recommend to use plain text passwords.")),
"216" => array ("ext" => "FALSE", "Headline" => _("Configuration Wizard") . " - " . _("Text for user PDF"),
"Text" => _("This text will appear on top of every user PDF file.")),
"230" => array ("ext" => "FALSE", "Headline" => _("Profile management") . " - " . _("Add profile"),
"Text" => _("Please enter the name of the new profile and the password to change its settings. Profile names may contain letters, numbers and -/_.")),
"231" => array ("ext" => "FALSE", "Headline" => _("Profile management") . " - " . _("Rename profile"),
"Text" => _("Please enter the new name of the profile. The name may contain letters, numbers and -/_.")),
"232" => array ("ext" => "FALSE", "Headline" => _("Profile management") . " - " . _("Delete profile"),
"Text" => _("This will delete the selected profile.")),
"233" => array ("ext" => "FALSE", "Headline" => _("Profile management") . " - " . _("Set profile password"),
"Text" => _("This changes the password of the selected profile.")),
"234" => array ("ext" => "FALSE", "Headline" => _("Profile management") . " - " . _("Change default profile"),
"Text" => _("This changes the profile which is selected by default at login.")),
"235" => array ("ext" => "FALSE", "Headline" => _("Profile management") . " - " . _("Change master password"),
"Text" => _("If you want to change your master configuration password, please enter it here.")),
"236" => array ("ext" => "FALSE", "Headline" => _("Profile management") . " - " . _("Master password"),
"Text" => _("Please enter the master configuration password. This is NOT your LDAP password. It is stored in your config.cfg file. If this is the first time you log in, enter \"lam\".")),
// 300 - 399
// Roland Gruber
// profile editor
"301" => array ("ext" => "FALSE", "Headline" => _("Profile Editor") . " - " . _("Set Unix password for Samba"),
"Text" => _("If set to \"yes\" the Windows password will be the same as the Unix one.").
"<br><br>".
_("If unsure say \"yes\" here.")),
"302" => array ("ext" => "FALSE", "Headline" => _("Profile Editor") . " - " . _("User can change password"),
"Text" => _("If set to \"yes\" the user will be able to change his Windows password.").
"<br><br>".
_("If unsure say \"yes\" here.")),
"360" => array ("ext" => "FALSE", "Headline" => _("Profile Editor") . " - " . _("Profile name"),
"Text" => _("Name under which the profile will be saved. If a profile with the same name exists, it will be overwritten.")),
// 400 - 499
// Tilo Lutz
// account.php
"400" => array ("ext" => "FALSE", "Headline" => _("Username"),
"Text" => _("Username of the user who should be created. Valid characters are: a-z,0-9, .-_. Lam does not allow a number as first character because useradd also does not allow it. Lam does not allow capital letters A-Z because it can cause several problems. If username is already used username will be expanded with a number. The next free number will be used. Warning: Older systems have problems with usernames longer than 8 characters. You can not log in to Windows if username is longer than 16 characters.")),
"401" => array ("ext" => "FALSE", "Headline" => _("UID number"),
"Text" => _("If empty UID number will be generated automaticly. Valid values are between %s and %s."),
"variables" => array($_SESSION['config']->get_minUID(), $_SESSION['config']->get_maxUID())),
"402" => array ("ext" => "FALSE", "Headline" => _("Additional groups"),
"Text" => _("Hold the CTRL-key to (de)select multiple groups."). ' '. _("Can be left empty.")),
"403" => array ("ext" => "FALSE", "Headline" => _("Home directory"),
"Text" => _("$%s and $%s are replaced with username or primary groupname."),
"variables" => array('user', 'group')),
"404" => array ("ext" => "FALSE", "Headline" => _("Gecos"),
"Text" => _("User description. If left empty sur- and give name will be used.")),
"405" => array ("ext" => "FALSE", "Headline" => _("Login shell"),
"Text" => _("To disable login use /bin/false. List of shells is read from lam/config/shells")),
"406" => array ("ext" => "FALSE", "Headline" => _("Primary group"),
"Text" => _("The Primary Group the user should be member of.")),
"407" => array ("ext" => "FALSE", "Headline" => _("Groupname"),
"Text" => _("Group name of the group which should be created. Valid characters are: a-z,0-9, .-_. Lam does not allow a number as first character because groupadd also does not allow it. Lam does not allow capital letters A-Z because it can cause several problems. If groupname is already used groupname will be expanded with a number. The next free number will be used.")),
"408" => array ("ext" => "FALSE", "Headline" => _("GID number"),
"Text" => _("If empty GID number will be generated automaticly. Valid values are between %s and %s."),
"variables" => array($_SESSION['config']->get_minGID(), $_SESSION['config']->get_maxGID())),
"409" => array ("ext" => "FALSE", "Headline" => _("Gecos"),
"Text" => _("Group description. If left empty group name will be used.")),
"410" => array ("ext" => "FALSE", "Headline" => _("Host name"),
"Text" => _("Host name of the host which should be created. Valid characters are: a-z,0-9, .-_$. Lam does not allow a number as first character because useradd also does not allow it. Lam does not allow capital letters A-Z because it can cause several problems. Hostnames are always ending with $. If last character is not $ it will be added. If hostname is already used hostname will be expanded with a number. The next free number will be used.")),
"411" => array ("ext" => "FALSE", "Headline" => _("UID number"),
"Text" => _("If empty UID number will be generated automaticly. Valid values are between %s and %s."),
"variables" => array($_SESSION['config']->get_minMachine(), $_SESSION['config']->get_maxMachine())),
"412" => array ("ext" => "FALSE", "Headline" => _("Primary group"),
"Text" => _("The Primary group the host should be member of.")),
"413" => array ("ext" => "FALSE", "Headline" => _("Gecos"),
"Text" => _("Host description. If left empty host name will be used.")),
"414" => array ("ext" => "FALSE", "Headline" => _("Password warn"),
"Text" => _("Days before password is to expire that user is warned of pending password expiration. If set value must be 0<."). ' '. _("Can be left empty.")),
"415" => array ("ext" => "FALSE", "Headline" => _("Password expire"),
"Text" => _("Number of days a user can login even his password has expired. -1=always."). ' '. _("Can be left empty.")),
"416" => array ("ext" => "FALSE", "Headline" => _("Maximum password age"),
"Text" => _("Number of days after a user has to change his password again. If set value must be 0<."). ' '. _("Can be left empty.")),
"417" => array ("ext" => "FALSE", "Headline" => _("Minimum password age"),
"Text" => _("Number of days a user has to wait until he\'s allowed to change his password again. If set value must be 0<."). ' '. _("Can be left empty.")),
"418" => array ("ext" => "FALSE", "Headline" => _("Expire date"),
"Text" => _("Account expire date. Format: DD-MM-YYYY")),
"419" => array ("ext" => "FALSE", "Headline" => _("Group members"),
"Text" => _("Users wich are also members of group.")),
"420" => array ("ext" => "FALSE", "Headline" => _("Display name"),
"Text" => _("Windows clients will show display name as group description.")),
"421" => array ("ext" => "FALSE", "Headline" => _("Load profile"),
"Text" => _("You can select a previous defined profile here. This will set all fields to the profile values.")),
"422" => array ("ext" => "FALSE", "Headline" => _("Expand suffix with primary groupname"),
"Text" => _("If selected users will be added with OUs expanded with their primary group. E.g. if a user is in group admin the user suffix will be ou=admin,+user suffix.")),
"423" => array ("ext" => "FALSE", "Headline" => _("Group suffix"),
"Text" => _("If a not yet existing group is defined in csv-file, a new group in the selected group suffix will be created.")),
"424" => array ("ext" => "FALSE", "Headline" => _("Surname"),
"Text" => _("Surname of user. Only letters, - and spaces are allowed.")),
"425" => array ("ext" => "FALSE", "Headline" => _("Given name"),
"Text" => _("Given name of user. Only letters, - and spaces are allowed.")),
"426" => array ("ext" => "FALSE", "Headline" => _("Use no password"),
"Text" => _("If checked no password will be used.")),
"427" => array ("ext" => "FALSE", "Headline" => _("Account deactivated"),
"Text" => _("If checked account will be deactivated by putting a ! before the encrypted password.")),
"428" => array ("ext" => "FALSE", "Headline" => _("Use unix password"),
"Text" => _("If checked unix password will also be used as samba password.")),
"429" => array ("ext" => "FALSE", "Headline" => _("Password does not expire"),
"Text" => _("If checked password does not expire. (Setting X-Flag)")),
"430" => array ("ext" => "FALSE", "Headline" => _("User can change password"),
"Text" => _("Date after the user is able to change his password. Format: DD-MM-YYYY")),
"431" => array ("ext" => "FALSE", "Headline" => _("User must change password"),
"Text" => _("Date after the user must change his password. Format: DD-MM-YYYY")),
"432" => array ("ext" => "FALSE", "Headline" => _("Account is deactivated"),
"Text" => _("If checked account will be deactivated. (Setting D-Flag)")),
"433" => array ("ext" => "FALSE", "Headline" => _("Home drive"),
"Text" => _("Driveletter assigned on windows workstations as homedirectory.")),
"434" => array ("ext" => "FALSE", "Headline" => _("Logon script"),
"Text" => _("Filename and -path relative to netlogon-share which should be executed on logon. $%s and $%s are replaced with user- and groupname."). ' '. _("Can be left empty."),
"variables" => array('user', 'group')),
"435" => array ("ext" => "FALSE", "Headline" => _("Profile path"),
"Text" => _("Path of the userprofile. Can be a local absolute path or a UNC-path (\\\\server\\share). $%s and $%s are replaced with user- and groupname."). ' '. _("Can be left empty."),
"variables" => array('user', 'group')),
"436" => array ("ext" => "FALSE", "Headline" => _("Samba workstations"),
"Text" => _("List of samba workstations the user is allowed to login. Empty means every workstation."). ' '. _("Can be left empty.")),
"437" => array ("ext" => "FALSE", "Headline" => _("Home path"),
"Text" => _("UNC-path (\\\\server\\share) of homedirectory. $%s and $%s are replaced with user- and groupname."). ' '. _("Can be left empty."),
"variables" => array('user', 'group')),
"438" => array ("ext" => "FALSE", "Headline" => _("Domain"),
"Text" => _("Windows-Domain of user."). ' '. _("Can be left empty.")),
"439" => array ("ext" => "FALSE", "Headline" => _("Mountpoint"),
"Text" => _("Mountpoint of device with enabled quotas.")),
"440" => array ("ext" => "FALSE", "Headline" => _("Used blocks"),
"Text" => _("Used blocks. 1000 blocks are usually 1MB")),
"441" => array ("ext" => "FALSE", "Headline" => _("Soft block limit"),
"Text" => _("Soft block limit."), "SeeAlso" => '<a href="http://www.ibiblio.org/pub/Linux/docs/HOWTO/other-formats/html_single/Quota.html#ss4.4">'.
'Quota How-To</a>'),
"442" => array ("ext" => "FALSE", "Headline" => _("Hard block limit"),
"Text" => _("Hard block limit").'.', "SeeAlso" => '<a href="http://www.ibiblio.org/pub/Linux/docs/HOWTO/other-formats/html_single/Quota.html#ss4.5">'.
'Quota How-To</a>'),
"443" => array ("ext" => "FALSE", "Headline" => _("Grace block period"),
"Text" => _("Grace block period. Most filesystems use a fixed maximum value of 7 days."), "SeeAlso" => '<a href="http://www.ibiblio.org/pub/Linux/docs/HOWTO/other-formats/html_single/Quota.html#ss4.6">'.
'Quota How-To</a>'),
"444" => array ("ext" => "FALSE", "Headline" => _("Used inodes"),
"Text" => _("Used inodes (files)").'.'),
"445" => array ("ext" => "FALSE", "Headline" => _("Soft inode limit"),
"Text" => _("Soft inode (files) limit."), "SeeAlso" => '<a href="http://www.ibiblio.org/pub/Linux/docs/HOWTO/other-formats/html_single/Quota.html#ss4.4">'.
'Quota How-To</a>'),
"446" => array ("ext" => "FALSE", "Headline" => _("Hard inode limit"),
"Text" => _("Hard inode (files) limit").'.', "SeeAlso" => '<a href="http://www.ibiblio.org/pub/Linux/docs/HOWTO/other-formats/html_single/Quota.html#ss4.5">'.
'Quota How-To</a>'),
"447" => array ("ext" => "FALSE", "Headline" => _("Grace inode period"),
"Text" => _("Grace inode (files) period. Most filesystems use a fixed maximum value of 7 days."), "SeeAlso" => '<a href="http://www.ibiblio.org/pub/Linux/docs/HOWTO/other-formats/html_single/Quota.html#ss4.6">'.
'Quota How-To</a>'),
"448" => array ("ext" => "FALSE", "Headline" => _("Job title"),
"Text" => _("Job title of user, Vice President, ...")),
"449" => array ("ext" => "FALSE", "Headline" => _("Employee type"),
"Text" => _("Employee type: Contractor, Employee, Intern, Temp, External, ...")),
"450" => array ("ext" => "FALSE", "Headline" => _("Street"),
"Text" => _("Street")),
"451" => array ("ext" => "FALSE", "Headline" => _("Postal code"),
"Text" => _("Postal code")),
"452" => array ("ext" => "FALSE", "Headline" => _("Postal address"),
"Text" => _("Postal address, city")),
"453" => array ("ext" => "FALSE", "Headline" => _("Telephone number"),
"Text" => _("Telephone number")),
"454" => array ("ext" => "FALSE", "Headline" => _("Mobile number"),
"Text" => _("Mobile number")),
"455" => array ("ext" => "FALSE", "Headline" => _("Fax number"),
"Text" => _("Fax number")),
"456" => array ("ext" => "FALSE", "Headline" => _("eMail address"),
"Text" => _("eMail address")),
"457" => array ("ext" => "FALSE", "Headline" => _("Save profile"),
"Text" => _("This will make a profile of the current account. The saved values are the same as in the profile editor. Profile names may contain the letters a-z, 0-9 and -_.")),
"458" => array ("ext" => "FALSE", "Headline" => _("Select group profile"),
"Text" => _("If a not yet existing group is defined in csv-file, a new group with the selected group profile will be created.")),
"460" => array ("ext" => "FALSE", "Headline" => _("Windows domain"),
"Text" => _("Windows domain of host."). ' '. _("Can be left empty.")),
"461" => array ("ext" => "FALSE", "Headline" => _("Suffix"),
"Text" => _("Position in ldap-tree where the user should be created.")),
"462" => array ("ext" => "FALSE", "Headline" => _("Suffix"),
"Text" => _("Position in ldap-tree where the group should be created.")),
"463" => array ("ext" => "FALSE", "Headline" => _("Suffix"),
"Text" => _("Position in ldap-tree where the host should be created.")),
"464" => array ("ext" => "FALSE", "Headline" => _("Windows groupname"),
"Text" => _("If you want to use a well known RID you can selcet a well known group.")),
"466" => array ("ext" => "FALSE", "Headline" => _("Unix workstations"),
"Text" => _("Comma separated list of unix workstations the user is allowed to login."). ' '. _("Can be left empty.")),
"467" => array ("ext" => "FALSE", "Headline" => _("Domain"),
"Text" => _("Windows-Domain of group."). ' '. _("Can be left empty.")),
"468" => array ("ext" => "FALSE", "Headline" => _("Group members"),
"Text" => _("Users also being member of the current group."). ' '. _("Can be left empty.")),
// 600 - 699
// Roland Gruber
// OU-editor, domain page
"601" => array ("ext" => "FALSE", "Headline" => _("OU-Editor") . " - " . _("New organizational unit"),
"Text" => _("This will create a new organizational unit under the selected one.")),
"602" => array ("ext" => "FALSE", "Headline" => _("OU-Editor") . " - " . _("Delete organizational unit"),
"Text" => _("This will delete the selected organizational unit. The OU has to be empty.")),
"651" => array ("ext" => "FALSE", "Headline" => _("Domain name"),
"Text" => _("The name of your Windows domain or workgroup.")),
"652" => array ("ext" => "FALSE", "Headline" => _("Suffix"),
"Text" => _("The domain entry will be saved under this suffix.")),
"653" => array ("ext" => "FALSE", "Headline" => _("Domain SID"),
"Text" => _("The SID of your Samba server. Get it with \"net getlocalsid\".")),
"654" => array ("ext" => "FALSE", "Headline" => _("Next RID"),
"Text" => _("Next RID to use when creating accounts.")),
"655" => array ("ext" => "FALSE", "Headline" => _("Next User RID"),
"Text" => _("Next RID to use when creating user accounts.")),
"656" => array ("ext" => "FALSE", "Headline" => _("Next Group RID"),
"Text" => _("Next RID to use when creating groups.")),
"657" => array ("ext" => "FALSE", "Headline" => _("Algorithmic RID Base"),
"Text" => _("Used for calculating RIDs from UID/GID. Do not change if unsure."))
/* This is a sample help entry. Just copy this line an modify the vakues between the [] brackets.
Help text is located in the array:
"[Helpnumber]" => array ("ext" => "FALSE", "Headline" => _("[Headline]"), "Text" => _("[Text]"), "SeeAlso" => "[SeeAlso link]"),
Help text is located in an extra file; File must be stored in help directory; Link has to be the path to the file if it is stored in a subdirectory and the filename with a leading slash;
"[Helpnumber]" => array ("ext" => "TRUE", "Link" => "[path/FileName]),
*/
);
?>

View File

@ -1,16 +0,0 @@
/*
This file contains a list of 100er blocks of help numbers. Each block can be unassigned or assigned to a developer. Each block description contains the name of the developer and the topic the help numbers are used for.
If you are a developer and need a block of help numbers please contact Michael Dürgner <michael@duergner.com> ICQ-UIN:176796482.
Help numbers should only be used if they are assigned in this file to avoid double entries. In the help/help.inc file each block should begin with the range of help numbers, the developers name and the topic.
*/
0 - 99: any developer: for testing purposes
100 - 199: unassigend
200 - 299: Roland Gruber: configuration wizard, configuration login
300 - 399: Roland Gruber: profil editor
400 - 499: Tilo Lutz: account.php
500 - 599: Tilo Lutz: Masscreate and Massdelete
600 - 699: Roland Gruber: OU-Editor
700 -: unassigned

View File

@ -1,11 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title>LDAP Account Manager</title>
<meta http-equiv="refresh" content="0; URL=templates/login.php">
</head>
<body>
</body>
</html>

View File

@ -1,12 +0,0 @@
<Files ~ .*>
Order allow,deny
Deny from all
</Files>
<Files ~ functions.js>
Order allow,deny
Allow from all
</Files>
<Files ~ fpdf.php>
Order allow,deny
Allow from all
</Files>

File diff suppressed because it is too large Load Diff

View File

@ -1,530 +0,0 @@
<?php
/**
* The Cipher_blowfish:: class implements the Cipher interface enryption data
* using the Blowfish algorithm.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* Copyright 2002-2003 Mike Cochrane <mike@graftonhall.co.nz>
*
* See http://www.fsf.org/copyleft/lgpl.html for license information (LGPL).
*
* This file was copied from the Horde project (http://www.horde.org).
*
* author: Mike Cochrane <mike@graftonhall.co.nz>
*
* edited by Roland Gruber <post@rolandgruber.de> for LAM
* - added encrypt/decrypt functions
*/
class Cipher_blowfish {
/* Pi Array */
var $p = array(
0x243F6A88, 0x85A308D3, 0x13198A2E, 0x03707344,
0xA4093822, 0x299F31D0, 0x082EFA98, 0xEC4E6C89,
0x452821E6, 0x38D01377, 0xBE5466CF, 0x34E90C6C,
0xC0AC29B7, 0xC97C50DD, 0x3F84D5B5, 0xB5470917,
0x9216D5D9, 0x8979FB1B);
/* S Boxes */
var $s1 = array(
0xD1310BA6, 0x98DFB5AC, 0x2FFD72DB, 0xD01ADFB7,
0xB8E1AFED, 0x6A267E96, 0xBA7C9045, 0xF12C7F99,
0x24A19947, 0xB3916CF7, 0x0801F2E2, 0x858EFC16,
0x636920D8, 0x71574E69, 0xA458FEA3, 0xF4933D7E,
0x0D95748F, 0x728EB658, 0x718BCD58, 0x82154AEE,
0x7B54A41D, 0xC25A59B5, 0x9C30D539, 0x2AF26013,
0xC5D1B023, 0x286085F0, 0xCA417918, 0xB8DB38EF,
0x8E79DCB0, 0x603A180E, 0x6C9E0E8B, 0xB01E8A3E,
0xD71577C1, 0xBD314B27, 0x78AF2FDA, 0x55605C60,
0xE65525F3, 0xAA55AB94, 0x57489862, 0x63E81440,
0x55CA396A, 0x2AAB10B6, 0xB4CC5C34, 0x1141E8CE,
0xA15486AF, 0x7C72E993, 0xB3EE1411, 0x636FBC2A,
0x2BA9C55D, 0x741831F6, 0xCE5C3E16, 0x9B87931E,
0xAFD6BA33, 0x6C24CF5C, 0x7A325381, 0x28958677,
0x3B8F4898, 0x6B4BB9AF, 0xC4BFE81B, 0x66282193,
0x61D809CC, 0xFB21A991, 0x487CAC60, 0x5DEC8032,
0xEF845D5D, 0xE98575B1, 0xDC262302, 0xEB651B88,
0x23893E81, 0xD396ACC5, 0x0F6D6FF3, 0x83F44239,
0x2E0B4482, 0xA4842004, 0x69C8F04A, 0x9E1F9B5E,
0x21C66842, 0xF6E96C9A, 0x670C9C61, 0xABD388F0,
0x6A51A0D2, 0xD8542F68, 0x960FA728, 0xAB5133A3,
0x6EEF0B6C, 0x137A3BE4, 0xBA3BF050, 0x7EFB2A98,
0xA1F1651D, 0x39AF0176, 0x66CA593E, 0x82430E88,
0x8CEE8619, 0x456F9FB4, 0x7D84A5C3, 0x3B8B5EBE,
0xE06F75D8, 0x85C12073, 0x401A449F, 0x56C16AA6,
0x4ED3AA62, 0x363F7706, 0x1BFEDF72, 0x429B023D,
0x37D0D724, 0xD00A1248, 0xDB0FEAD3, 0x49F1C09B,
0x075372C9, 0x80991B7B, 0x25D479D8, 0xF6E8DEF7,
0xE3FE501A, 0xB6794C3B, 0x976CE0BD, 0x04C006BA,
0xC1A94FB6, 0x409F60C4, 0x5E5C9EC2, 0x196A2463,
0x68FB6FAF, 0x3E6C53B5, 0x1339B2EB, 0x3B52EC6F,
0x6DFC511F, 0x9B30952C, 0xCC814544, 0xAF5EBD09,
0xBEE3D004, 0xDE334AFD, 0x660F2807, 0x192E4BB3,
0xC0CBA857, 0x45C8740F, 0xD20B5F39, 0xB9D3FBDB,
0x5579C0BD, 0x1A60320A, 0xD6A100C6, 0x402C7279,
0x679F25FE, 0xFB1FA3CC, 0x8EA5E9F8, 0xDB3222F8,
0x3C7516DF, 0xFD616B15, 0x2F501EC8, 0xAD0552AB,
0x323DB5FA, 0xFD238760, 0x53317B48, 0x3E00DF82,
0x9E5C57BB, 0xCA6F8CA0, 0x1A87562E, 0xDF1769DB,
0xD542A8F6, 0x287EFFC3, 0xAC6732C6, 0x8C4F5573,
0x695B27B0, 0xBBCA58C8, 0xE1FFA35D, 0xB8F011A0,
0x10FA3D98, 0xFD2183B8, 0x4AFCB56C, 0x2DD1D35B,
0x9A53E479, 0xB6F84565, 0xD28E49BC, 0x4BFB9790,
0xE1DDF2DA, 0xA4CB7E33, 0x62FB1341, 0xCEE4C6E8,
0xEF20CADA, 0x36774C01, 0xD07E9EFE, 0x2BF11FB4,
0x95DBDA4D, 0xAE909198, 0xEAAD8E71, 0x6B93D5A0,
0xD08ED1D0, 0xAFC725E0, 0x8E3C5B2F, 0x8E7594B7,
0x8FF6E2FB, 0xF2122B64, 0x8888B812, 0x900DF01C,
0x4FAD5EA0, 0x688FC31C, 0xD1CFF191, 0xB3A8C1AD,
0x2F2F2218, 0xBE0E1777, 0xEA752DFE, 0x8B021FA1,
0xE5A0CC0F, 0xB56F74E8, 0x18ACF3D6, 0xCE89E299,
0xB4A84FE0, 0xFD13E0B7, 0x7CC43B81, 0xD2ADA8D9,
0x165FA266, 0x80957705, 0x93CC7314, 0x211A1477,
0xE6AD2065, 0x77B5FA86, 0xC75442F5, 0xFB9D35CF,
0xEBCDAF0C, 0x7B3E89A0, 0xD6411BD3, 0xAE1E7E49,
0x00250E2D, 0x2071B35E, 0x226800BB, 0x57B8E0AF,
0x2464369B, 0xF009B91E, 0x5563911D, 0x59DFA6AA,
0x78C14389, 0xD95A537F, 0x207D5BA2, 0x02E5B9C5,
0x83260376, 0x6295CFA9, 0x11C81968, 0x4E734A41,
0xB3472DCA, 0x7B14A94A, 0x1B510052, 0x9A532915,
0xD60F573F, 0xBC9BC6E4, 0x2B60A476, 0x81E67400,
0x08BA6FB5, 0x571BE91F, 0xF296EC6B, 0x2A0DD915,
0xB6636521, 0xE7B9F9B6, 0xFF34052E, 0xC5855664,
0x53B02D5D, 0xA99F8FA1, 0x08BA4799, 0x6E85076A);
var $s2 = array(
0x4B7A70E9, 0xB5B32944, 0xDB75092E, 0xC4192623,
0xAD6EA6B0, 0x49A7DF7D, 0x9CEE60B8, 0x8FEDB266,
0xECAA8C71, 0x699A17FF, 0x5664526C, 0xC2B19EE1,
0x193602A5, 0x75094C29, 0xA0591340, 0xE4183A3E,
0x3F54989A, 0x5B429D65, 0x6B8FE4D6, 0x99F73FD6,
0xA1D29C07, 0xEFE830F5, 0x4D2D38E6, 0xF0255DC1,
0x4CDD2086, 0x8470EB26, 0x6382E9C6, 0x021ECC5E,
0x09686B3F, 0x3EBAEFC9, 0x3C971814, 0x6B6A70A1,
0x687F3584, 0x52A0E286, 0xB79C5305, 0xAA500737,
0x3E07841C, 0x7FDEAE5C, 0x8E7D44EC, 0x5716F2B8,
0xB03ADA37, 0xF0500C0D, 0xF01C1F04, 0x0200B3FF,
0xAE0CF51A, 0x3CB574B2, 0x25837A58, 0xDC0921BD,
0xD19113F9, 0x7CA92FF6, 0x94324773, 0x22F54701,
0x3AE5E581, 0x37C2DADC, 0xC8B57634, 0x9AF3DDA7,
0xA9446146, 0x0FD0030E, 0xECC8C73E, 0xA4751E41,
0xE238CD99, 0x3BEA0E2F, 0x3280BBA1, 0x183EB331,
0x4E548B38, 0x4F6DB908, 0x6F420D03, 0xF60A04BF,
0x2CB81290, 0x24977C79, 0x5679B072, 0xBCAF89AF,
0xDE9A771F, 0xD9930810, 0xB38BAE12, 0xDCCF3F2E,
0x5512721F, 0x2E6B7124, 0x501ADDE6, 0x9F84CD87,
0x7A584718, 0x7408DA17, 0xBC9F9ABC, 0xE94B7D8C,
0xEC7AEC3A, 0xDB851DFA, 0x63094366, 0xC464C3D2,
0xEF1C1847, 0x3215D908, 0xDD433B37, 0x24C2BA16,
0x12A14D43, 0x2A65C451, 0x50940002, 0x133AE4DD,
0x71DFF89E, 0x10314E55, 0x81AC77D6, 0x5F11199B,
0x043556F1, 0xD7A3C76B, 0x3C11183B, 0x5924A509,
0xF28FE6ED, 0x97F1FBFA, 0x9EBABF2C, 0x1E153C6E,
0x86E34570, 0xEAE96FB1, 0x860E5E0A, 0x5A3E2AB3,
0x771FE71C, 0x4E3D06FA, 0x2965DCB9, 0x99E71D0F,
0x803E89D6, 0x5266C825, 0x2E4CC978, 0x9C10B36A,
0xC6150EBA, 0x94E2EA78, 0xA5FC3C53, 0x1E0A2DF4,
0xF2F74EA7, 0x361D2B3D, 0x1939260F, 0x19C27960,
0x5223A708, 0xF71312B6, 0xEBADFE6E, 0xEAC31F66,
0xE3BC4595, 0xA67BC883, 0xB17F37D1, 0x018CFF28,
0xC332DDEF, 0xBE6C5AA5, 0x65582185, 0x68AB9802,
0xEECEA50F, 0xDB2F953B, 0x2AEF7DAD, 0x5B6E2F84,
0x1521B628, 0x29076170, 0xECDD4775, 0x619F1510,
0x13CCA830, 0xEB61BD96, 0x0334FE1E, 0xAA0363CF,
0xB5735C90, 0x4C70A239, 0xD59E9E0B, 0xCBAADE14,
0xEECC86BC, 0x60622CA7, 0x9CAB5CAB, 0xB2F3846E,
0x648B1EAF, 0x19BDF0CA, 0xA02369B9, 0x655ABB50,
0x40685A32, 0x3C2AB4B3, 0x319EE9D5, 0xC021B8F7,
0x9B540B19, 0x875FA099, 0x95F7997E, 0x623D7DA8,
0xF837889A, 0x97E32D77, 0x11ED935F, 0x16681281,
0x0E358829, 0xC7E61FD6, 0x96DEDFA1, 0x7858BA99,
0x57F584A5, 0x1B227263, 0x9B83C3FF, 0x1AC24696,
0xCDB30AEB, 0x532E3054, 0x8FD948E4, 0x6DBC3128,
0x58EBF2EF, 0x34C6FFEA, 0xFE28ED61, 0xEE7C3C73,
0x5D4A14D9, 0xE864B7E3, 0x42105D14, 0x203E13E0,
0x45EEE2B6, 0xA3AAABEA, 0xDB6C4F15, 0xFACB4FD0,
0xC742F442, 0xEF6ABBB5, 0x654F3B1D, 0x41CD2105,
0xD81E799E, 0x86854DC7, 0xE44B476A, 0x3D816250,
0xCF62A1F2, 0x5B8D2646, 0xFC8883A0, 0xC1C7B6A3,
0x7F1524C3, 0x69CB7492, 0x47848A0B, 0x5692B285,
0x095BBF00, 0xAD19489D, 0x1462B174, 0x23820E00,
0x58428D2A, 0x0C55F5EA, 0x1DADF43E, 0x233F7061,
0x3372F092, 0x8D937E41, 0xD65FECF1, 0x6C223BDB,
0x7CDE3759, 0xCBEE7460, 0x4085F2A7, 0xCE77326E,
0xA6078084, 0x19F8509E, 0xE8EFD855, 0x61D99735,
0xA969A7AA, 0xC50C06C2, 0x5A04ABFC, 0x800BCADC,
0x9E447A2E, 0xC3453484, 0xFDD56705, 0x0E1E9EC9,
0xDB73DBD3, 0x105588CD, 0x675FDA79, 0xE3674340,
0xC5C43465, 0x713E38D8, 0x3D28F89E, 0xF16DFF20,
0x153E21E7, 0x8FB03D4A, 0xE6E39F2B, 0xDB83ADF7);
var $s3 = array(
0xE93D5A68, 0x948140F7, 0xF64C261C, 0x94692934,
0x411520F7, 0x7602D4F7, 0xBCF46B2E, 0xD4A20068,
0xD4082471, 0x3320F46A, 0x43B7D4B7, 0x500061AF,
0x1E39F62E, 0x97244546, 0x14214F74, 0xBF8B8840,
0x4D95FC1D, 0x96B591AF, 0x70F4DDD3, 0x66A02F45,
0xBFBC09EC, 0x03BD9785, 0x7FAC6DD0, 0x31CB8504,
0x96EB27B3, 0x55FD3941, 0xDA2547E6, 0xABCA0A9A,
0x28507825, 0x530429F4, 0x0A2C86DA, 0xE9B66DFB,
0x68DC1462, 0xD7486900, 0x680EC0A4, 0x27A18DEE,
0x4F3FFEA2, 0xE887AD8C, 0xB58CE006, 0x7AF4D6B6,
0xAACE1E7C, 0xD3375FEC, 0xCE78A399, 0x406B2A42,
0x20FE9E35, 0xD9F385B9, 0xEE39D7AB, 0x3B124E8B,
0x1DC9FAF7, 0x4B6D1856, 0x26A36631, 0xEAE397B2,
0x3A6EFA74, 0xDD5B4332, 0x6841E7F7, 0xCA7820FB,
0xFB0AF54E, 0xD8FEB397, 0x454056AC, 0xBA489527,
0x55533A3A, 0x20838D87, 0xFE6BA9B7, 0xD096954B,
0x55A867BC, 0xA1159A58, 0xCCA92963, 0x99E1DB33,
0xA62A4A56, 0x3F3125F9, 0x5EF47E1C, 0x9029317C,
0xFDF8E802, 0x04272F70, 0x80BB155C, 0x05282CE3,
0x95C11548, 0xE4C66D22, 0x48C1133F, 0xC70F86DC,
0x07F9C9EE, 0x41041F0F, 0x404779A4, 0x5D886E17,
0x325F51EB, 0xD59BC0D1, 0xF2BCC18F, 0x41113564,
0x257B7834, 0x602A9C60, 0xDFF8E8A3, 0x1F636C1B,
0x0E12B4C2, 0x02E1329E, 0xAF664FD1, 0xCAD18115,
0x6B2395E0, 0x333E92E1, 0x3B240B62, 0xEEBEB922,
0x85B2A20E, 0xE6BA0D99, 0xDE720C8C, 0x2DA2F728,
0xD0127845, 0x95B794FD, 0x647D0862, 0xE7CCF5F0,
0x5449A36F, 0x877D48FA, 0xC39DFD27, 0xF33E8D1E,
0x0A476341, 0x992EFF74, 0x3A6F6EAB, 0xF4F8FD37,
0xA812DC60, 0xA1EBDDF8, 0x991BE14C, 0xDB6E6B0D,
0xC67B5510, 0x6D672C37, 0x2765D43B, 0xDCD0E804,
0xF1290DC7, 0xCC00FFA3, 0xB5390F92, 0x690FED0B,
0x667B9FFB, 0xCEDB7D9C, 0xA091CF0B, 0xD9155EA3,
0xBB132F88, 0x515BAD24, 0x7B9479BF, 0x763BD6EB,
0x37392EB3, 0xCC115979, 0x8026E297, 0xF42E312D,
0x6842ADA7, 0xC66A2B3B, 0x12754CCC, 0x782EF11C,
0x6A124237, 0xB79251E7, 0x06A1BBE6, 0x4BFB6350,
0x1A6B1018, 0x11CAEDFA, 0x3D25BDD8, 0xE2E1C3C9,
0x44421659, 0x0A121386, 0xD90CEC6E, 0xD5ABEA2A,
0x64AF674E, 0xDA86A85F, 0xBEBFE988, 0x64E4C3FE,
0x9DBC8057, 0xF0F7C086, 0x60787BF8, 0x6003604D,
0xD1FD8346, 0xF6381FB0, 0x7745AE04, 0xD736FCCC,
0x83426B33, 0xF01EAB71, 0xB0804187, 0x3C005E5F,
0x77A057BE, 0xBDE8AE24, 0x55464299, 0xBF582E61,
0x4E58F48F, 0xF2DDFDA2, 0xF474EF38, 0x8789BDC2,
0x5366F9C3, 0xC8B38E74, 0xB475F255, 0x46FCD9B9,
0x7AEB2661, 0x8B1DDF84, 0x846A0E79, 0x915F95E2,
0x466E598E, 0x20B45770, 0x8CD55591, 0xC902DE4C,
0xB90BACE1, 0xBB8205D0, 0x11A86248, 0x7574A99E,
0xB77F19B6, 0xE0A9DC09, 0x662D09A1, 0xC4324633,
0xE85A1F02, 0x09F0BE8C, 0x4A99A025, 0x1D6EFE10,
0x1AB93D1D, 0x0BA5A4DF, 0xA186F20F, 0x2868F169,
0xDCB7DA83, 0x573906FE, 0xA1E2CE9B, 0x4FCD7F52,
0x50115E01, 0xA70683FA, 0xA002B5C4, 0x0DE6D027,
0x9AF88C27, 0x773F8641, 0xC3604C06, 0x61A806B5,
0xF0177A28, 0xC0F586E0, 0x006058AA, 0x30DC7D62,
0x11E69ED7, 0x2338EA63, 0x53C2DD94, 0xC2C21634,
0xBBCBEE56, 0x90BCB6DE, 0xEBFC7DA1, 0xCE591D76,
0x6F05E409, 0x4B7C0188, 0x39720A3D, 0x7C927C24,
0x86E3725F, 0x724D9DB9, 0x1AC15BB4, 0xD39EB8FC,
0xED545578, 0x08FCA5B5, 0xD83D7CD3, 0x4DAD0FC4,
0x1E50EF5E, 0xB161E6F8, 0xA28514D9, 0x6C51133C,
0x6FD5C7E7, 0x56E14EC4, 0x362ABFCE, 0xDDC6C837,
0xD79A3234, 0x92638212, 0x670EFA8E, 0x406000E0);
var $s4 = array(
0x3A39CE37, 0xD3FAF5CF, 0xABC27737, 0x5AC52D1B,
0x5CB0679E, 0x4FA33742, 0xD3822740, 0x99BC9BBE,
0xD5118E9D, 0xBF0F7315, 0xD62D1C7E, 0xC700C47B,
0xB78C1B6B, 0x21A19045, 0xB26EB1BE, 0x6A366EB4,
0x5748AB2F, 0xBC946E79, 0xC6A376D2, 0x6549C2C8,
0x530FF8EE, 0x468DDE7D, 0xD5730A1D, 0x4CD04DC6,
0x2939BBDB, 0xA9BA4650, 0xAC9526E8, 0xBE5EE304,
0xA1FAD5F0, 0x6A2D519A, 0x63EF8CE2, 0x9A86EE22,
0xC089C2B8, 0x43242EF6, 0xA51E03AA, 0x9CF2D0A4,
0x83C061BA, 0x9BE96A4D, 0x8FE51550, 0xBA645BD6,
0x2826A2F9, 0xA73A3AE1, 0x4BA99586, 0xEF5562E9,
0xC72FEFD3, 0xF752F7DA, 0x3F046F69, 0x77FA0A59,
0x80E4A915, 0x87B08601, 0x9B09E6AD, 0x3B3EE593,
0xE990FD5A, 0x9E34D797, 0x2CF0B7D9, 0x022B8B51,
0x96D5AC3A, 0x017DA67D, 0xD1CF3ED6, 0x7C7D2D28,
0x1F9F25CF, 0xADF2B89B, 0x5AD6B472, 0x5A88F54C,
0xE029AC71, 0xE019A5E6, 0x47B0ACFD, 0xED93FA9B,
0xE8D3C48D, 0x283B57CC, 0xF8D56629, 0x79132E28,
0x785F0191, 0xED756055, 0xF7960E44, 0xE3D35E8C,
0x15056DD4, 0x88F46DBA, 0x03A16125, 0x0564F0BD,
0xC3EB9E15, 0x3C9057A2, 0x97271AEC, 0xA93A072A,
0x1B3F6D9B, 0x1E6321F5, 0xF59C66FB, 0x26DCF319,
0x7533D928, 0xB155FDF5, 0x03563482, 0x8ABA3CBB,
0x28517711, 0xC20AD9F8, 0xABCC5167, 0xCCAD925F,
0x4DE81751, 0x3830DC8E, 0x379D5862, 0x9320F991,
0xEA7A90C2, 0xFB3E7BCE, 0x5121CE64, 0x774FBE32,
0xA8B6E37E, 0xC3293D46, 0x48DE5369, 0x6413E680,
0xA2AE0810, 0xDD6DB224, 0x69852DFD, 0x09072166,
0xB39A460A, 0x6445C0DD, 0x586CDECF, 0x1C20C8AE,
0x5BBEF7DD, 0x1B588D40, 0xCCD2017F, 0x6BB4E3BB,
0xDDA26A7E, 0x3A59FF45, 0x3E350A44, 0xBCB4CDD5,
0x72EACEA8, 0xFA6484BB, 0x8D6612AE, 0xBF3C6F47,
0xD29BE463, 0x542F5D9E, 0xAEC2771B, 0xF64E6370,
0x740E0D8D, 0xE75B1357, 0xF8721671, 0xAF537D5D,
0x4040CB08, 0x4EB4E2CC, 0x34D2466A, 0x0115AF84,
0xE1B00428, 0x95983A1D, 0x06B89FB4, 0xCE6EA048,
0x6F3F3B82, 0x3520AB82, 0x011A1D4B, 0x277227F8,
0x611560B1, 0xE7933FDC, 0xBB3A792B, 0x344525BD,
0xA08839E1, 0x51CE794B, 0x2F32C9B7, 0xA01FBAC9,
0xE01CC87E, 0xBCC7D1F6, 0xCF0111C3, 0xA1E8AAC7,
0x1A908749, 0xD44FBD9A, 0xD0DADECB, 0xD50ADA38,
0x0339C32A, 0xC6913667, 0x8DF9317C, 0xE0B12B4F,
0xF79E59B7, 0x43F5BB3A, 0xF2D519FF, 0x27D9459C,
0xBF97222C, 0x15E6FC2A, 0x0F91FC71, 0x9B941525,
0xFAE59361, 0xCEB69CEB, 0xC2A86459, 0x12BAA8D1,
0xB6C1075E, 0xE3056A0C, 0x10D25065, 0xCB03A442,
0xE0EC6E0E, 0x1698DB3B, 0x4C98A0BE, 0x3278E964,
0x9F1F9532, 0xE0D392DF, 0xD3A0342B, 0x8971F21E,
0x1B0A7441, 0x4BA3348C, 0xC5BE7120, 0xC37632D8,
0xDF359F8D, 0x9B992F2E, 0xE60B6F47, 0x0FE3F11D,
0xE54CDA54, 0x1EDAD891, 0xCE6279CF, 0xCD3E7E6F,
0x1618B166, 0xFD2C1D05, 0x848FD2C5, 0xF6FB2299,
0xF523F357, 0xA6327623, 0x93A83531, 0x56CCCD02,
0xACF08162, 0x5A75EBB5, 0x6E163697, 0x88D273CC,
0xDE966292, 0x81B949D0, 0x4C50901B, 0x71C65614,
0xE6C6C7BD, 0x327A140A, 0x45E1D006, 0xC3F27B9A,
0xC9AA53FD, 0x62A80F00, 0xBB25BFE2, 0x35BDD2F6,
0x71126905, 0xB2040222, 0xB6CBCF7C, 0xCD769C2B,
0x53113EC0, 0x1640E3D3, 0x38ABBD60, 0x2547ADF0,
0xBA38209C, 0xF746CE76, 0x77AFA1C5, 0x20756060,
0x85CBFE4E, 0x8AE88DD8, 0x7AAAF9B0, 0x4CF9AA7E,
0x1948C25C, 0x02FB8A8C, 0x01C36AE4, 0xD6EBE1F9,
0x90D4F869, 0xA65CDEA0, 0x3F09252D, 0xC208E69F,
0xB74E6132, 0xCE77E25B, 0x578FDFE3, 0x3AC372E6);
/* The number of rounds to do */
var $_rounds = 16;
/* Constructor */
function Cipher_blowfish($params = null)
{
}
/**
* Set the key to be used for en/decryption
*
* @param String $key The key to use
*/
function setKey($key)
{
$key = $this->_formatKey($key);
$keyPos = $keyXor = 0;
$iMax = count($this->p);
$keyLen = count($key);
for ($i = 0; $i < $iMax; $i++) {
for ($t = 0; $t < 4; $t++) {
$keyXor = ($keyXor << 8) | (($key[$keyPos]) & 0x0ff);
if (++$keyPos == $keyLen) {
$keyPos = 0;
}
}
$this->p[$i] = $this->p[$i] ^ $keyXor;
}
$encZero = array('L' => 0, 'R' => 0);
for ($i = 0; $i + 1 < $iMax; $i += 2) {
$encZero = $this->_encryptBlock($encZero['L'], $encZero['R']);
$this->p[$i] = $encZero['L'];
$this->p[$i + 1] = $encZero['R'];
}
$iMax = count($this->s1);
for ($i = 0; $i < $iMax; $i += 2) {
$encZero = $this->_encryptBlock($encZero['L'], $encZero['R']);
$this->s1[$i] = $encZero['L'];
$this->s1[$i + 1] = $encZero['R'];
}
$iMax = count($this->s2);
for ($i = 0; $i < $iMax; $i += 2) {
$encZero = $this->_encryptBlock($encZero['L'], $encZero['R']);
$this->s2[$i] = $encZero['L'];
$this->s2[$i + 1] = $encZero['R'];
}
$iMax = count($this->s3);
for ($i = 0; $i < $iMax; $i += 2) {
$encZero = $this->_encryptBlock($encZero['L'], $encZero['R']);
$this->s3[$i] = $encZero['L'];
$this->s3[$i + 1] = $encZero['R'];
}
$iMax = count($this->s4);
for ($i = 0; $i < $iMax; $i += 2) {
$encZero = $this->_encryptBlock($encZero['L'], $encZero['R']);
$this->s4[$i] = $encZero['L'];
$this->s4[$i + 1] = $encZero['R'];
}
}
/**
* Return the size of the blocks that this cipher needs
*
* @return Integer The number of characters per block
*/
function getBlockSize()
{
return 8;
}
/**
* Encrypt a block on data.
*
* @param String $block The data to encrypt
* @param optional String $key The key to use
*
* @return String the encrypted output
*/
function encryptBlock($block, $key = null)
{
if (!is_null($key)) {
$this->setKey($key);
}
list($L, $R) = array_values(unpack('N*', $block));
$parts = $this->_encryptBlock($L, $R);
return pack("NN", $parts['L'], $parts['R']);
}
/**
* Encrypt a string of data.
*
* @param String $data The string to encrypt
* @param optional String $key The key to use
*
* @return String the encrypted output
*/
function encrypt($data, $key = null) {
// add end marker
$data .= 'x';
// split data to array of encryptable blocks
$data_blocks = array();
for ($j = 0; $j < strlen($data); $j = $j + 8) {
$data_blocks[] = substr($data, $j, 8);
}
// add spaces to last block if needed
$data_blocks[sizeof($data_blocks) - 1] = str_pad($data_blocks[sizeof($data_blocks) - 1], 8);
// encrypt blocks
$crypt_blocks = array();
for ($i = 0; $i < sizeof($data_blocks); $i++) {
$crypt_blocks[] = $this->encryptBlock($data_blocks[$i], $key);
}
return implode("", $crypt_blocks);
}
/**
* Encrypt a block on data.
*
* @param String $L The data to encrypt.
* @param String $R The data to encrypt.
*
* @return String The encrypted output.
*/
function _encryptBlock($L, $R)
{
$L ^= $this->p[0];
$R ^= ((($this->s1[($L >> 24) & 0xFF] + $this->s2[($L >> 16) & 0x0ff]) ^ $this->s3[($L >> 8) & 0x0ff]) + $this->s4[$L & 0x0ff]) ^ $this->p[1];
$L ^= ((($this->s1[($R >> 24) & 0xFF] + $this->s2[($R >> 16) & 0x0ff]) ^ $this->s3[($R >> 8) & 0x0ff]) + $this->s4[$R & 0x0ff]) ^ $this->p[2];
$R ^= ((($this->s1[($L >> 24) & 0xFF] + $this->s2[($L >> 16) & 0x0ff]) ^ $this->s3[($L >> 8) & 0x0ff]) + $this->s4[$L & 0x0ff]) ^ $this->p[3];
$L ^= ((($this->s1[($R >> 24) & 0xFF] + $this->s2[($R >> 16) & 0x0ff]) ^ $this->s3[($R >> 8) & 0x0ff]) + $this->s4[$R & 0x0ff]) ^ $this->p[4];
$R ^= ((($this->s1[($L >> 24) & 0xFF] + $this->s2[($L >> 16) & 0x0ff]) ^ $this->s3[($L >> 8) & 0x0ff]) + $this->s4[$L & 0x0ff]) ^ $this->p[5];
$L ^= ((($this->s1[($R >> 24) & 0xFF] + $this->s2[($R >> 16) & 0x0ff]) ^ $this->s3[($R >> 8) & 0x0ff]) + $this->s4[$R & 0x0ff]) ^ $this->p[6];
$R ^= ((($this->s1[($L >> 24) & 0xFF] + $this->s2[($L >> 16) & 0x0ff]) ^ $this->s3[($L >> 8) & 0x0ff]) + $this->s4[$L & 0x0ff]) ^ $this->p[7];
$L ^= ((($this->s1[($R >> 24) & 0xFF] + $this->s2[($R >> 16) & 0x0ff]) ^ $this->s3[($R >> 8) & 0x0ff]) + $this->s4[$R & 0x0ff]) ^ $this->p[8];
$R ^= ((($this->s1[($L >> 24) & 0xFF] + $this->s2[($L >> 16) & 0x0ff]) ^ $this->s3[($L >> 8) & 0x0ff]) + $this->s4[$L & 0x0ff]) ^ $this->p[9];
$L ^= ((($this->s1[($R >> 24) & 0xFF] + $this->s2[($R >> 16) & 0x0ff]) ^ $this->s3[($R >> 8) & 0x0ff]) + $this->s4[$R & 0x0ff]) ^ $this->p[10];
$R ^= ((($this->s1[($L >> 24) & 0xFF] + $this->s2[($L >> 16) & 0x0ff]) ^ $this->s3[($L >> 8) & 0x0ff]) + $this->s4[$L & 0x0ff]) ^ $this->p[11];
$L ^= ((($this->s1[($R >> 24) & 0xFF] + $this->s2[($R >> 16) & 0x0ff]) ^ $this->s3[($R >> 8) & 0x0ff]) + $this->s4[$R & 0x0ff]) ^ $this->p[12];
$R ^= ((($this->s1[($L >> 24) & 0xFF] + $this->s2[($L >> 16) & 0x0ff]) ^ $this->s3[($L >> 8) & 0x0ff]) + $this->s4[$L & 0x0ff]) ^ $this->p[13];
$L ^= ((($this->s1[($R >> 24) & 0xFF] + $this->s2[($R >> 16) & 0x0ff]) ^ $this->s3[($R >> 8) & 0x0ff]) + $this->s4[$R & 0x0ff]) ^ $this->p[14];
$R ^= ((($this->s1[($L >> 24) & 0xFF] + $this->s2[($L >> 16) & 0x0ff]) ^ $this->s3[($L >> 8) & 0x0ff]) + $this->s4[$L & 0x0ff]) ^ $this->p[15];
$L ^= ((($this->s1[($R >> 24) & 0xFF] + $this->s2[($R >> 16) & 0x0ff]) ^ $this->s3[($R >> 8) & 0x0ff]) + $this->s4[$R & 0x0ff]) ^ $this->p[16];
$R ^= $this->p[17];
return array('L' => $R, 'R' => $L);
}
/**
* Decrypt a string of data.
*
* @param String $data The data to decrypt
* @param optional String $key The key to use
*
* @return String the decrypted output
*/
function decrypt($data, $key = null){
// decrypt string parts
$decr_blocks = array();
for ($i = 0; $i < (strlen($data) / 8); $i++) {
$decr_blocks[] = $this->decryptBlock(substr($data, $i * 8, 8), $key);
}
$decr_text = "";
$decr_text = implode("", $decr_blocks);
// removed whitespaces and end marker
$decr_text = chop($decr_text);
$decr_text = substr($decr_text, 0, (strlen($decr_text) - 1));
return $decr_text;
}
/**
* Decrypt a block on data.
*
* @param String $block The data to decrypt
* @param optional String $key The key to use
*
* @return String the decrypted output
*/
function decryptBlock($block, $key = null)
{
if (!is_null($key)) {
$this->setKey($key);
}
list($L, $R) = array_values(unpack('N*', $block));
$L ^= $this->p[17];
$R ^= ((($this->s1[($L >> 24) & 0xFF] + $this->s2[($L >> 16) & 0x0ff]) ^ $this->s3[($L >> 8) & 0x0ff]) + $this->s4[$L & 0x0ff]) ^ $this->p[16];
$L ^= ((($this->s1[($R >> 24) & 0xFF] + $this->s2[($R >> 16) & 0x0ff]) ^ $this->s3[($R >> 8) & 0x0ff]) + $this->s4[$R & 0x0ff]) ^ $this->p[15];
$R ^= ((($this->s1[($L >> 24) & 0xFF] + $this->s2[($L >> 16) & 0x0ff]) ^ $this->s3[($L >> 8) & 0x0ff]) + $this->s4[$L & 0x0ff]) ^ $this->p[14];
$L ^= ((($this->s1[($R >> 24) & 0xFF] + $this->s2[($R >> 16) & 0x0ff]) ^ $this->s3[($R >> 8) & 0x0ff]) + $this->s4[$R & 0x0ff]) ^ $this->p[13];
$R ^= ((($this->s1[($L >> 24) & 0xFF] + $this->s2[($L >> 16) & 0x0ff]) ^ $this->s3[($L >> 8) & 0x0ff]) + $this->s4[$L & 0x0ff]) ^ $this->p[12];
$L ^= ((($this->s1[($R >> 24) & 0xFF] + $this->s2[($R >> 16) & 0x0ff]) ^ $this->s3[($R >> 8) & 0x0ff]) + $this->s4[$R & 0x0ff]) ^ $this->p[11];
$R ^= ((($this->s1[($L >> 24) & 0xFF] + $this->s2[($L >> 16) & 0x0ff]) ^ $this->s3[($L >> 8) & 0x0ff]) + $this->s4[$L & 0x0ff]) ^ $this->p[10];
$L ^= ((($this->s1[($R >> 24) & 0xFF] + $this->s2[($R >> 16) & 0x0ff]) ^ $this->s3[($R >> 8) & 0x0ff]) + $this->s4[$R & 0x0ff]) ^ $this->p[9];
$R ^= ((($this->s1[($L >> 24) & 0xFF] + $this->s2[($L >> 16) & 0x0ff]) ^ $this->s3[($L >> 8) & 0x0ff]) + $this->s4[$L & 0x0ff]) ^ $this->p[8];
$L ^= ((($this->s1[($R >> 24) & 0xFF] + $this->s2[($R >> 16) & 0x0ff]) ^ $this->s3[($R >> 8) & 0x0ff]) + $this->s4[$R & 0x0ff]) ^ $this->p[7];
$R ^= ((($this->s1[($L >> 24) & 0xFF] + $this->s2[($L >> 16) & 0x0ff]) ^ $this->s3[($L >> 8) & 0x0ff]) + $this->s4[$L & 0x0ff]) ^ $this->p[6];
$L ^= ((($this->s1[($R >> 24) & 0xFF] + $this->s2[($R >> 16) & 0x0ff]) ^ $this->s3[($R >> 8) & 0x0ff]) + $this->s4[$R & 0x0ff]) ^ $this->p[5];
$R ^= ((($this->s1[($L >> 24) & 0xFF] + $this->s2[($L >> 16) & 0x0ff]) ^ $this->s3[($L >> 8) & 0x0ff]) + $this->s4[$L & 0x0ff]) ^ $this->p[4];
$L ^= ((($this->s1[($R >> 24) & 0xFF] + $this->s2[($R >> 16) & 0x0ff]) ^ $this->s3[($R >> 8) & 0x0ff]) + $this->s4[$R & 0x0ff]) ^ $this->p[3];
$R ^= ((($this->s1[($L >> 24) & 0xFF] + $this->s2[($L >> 16) & 0x0ff]) ^ $this->s3[($L >> 8) & 0x0ff]) + $this->s4[$L & 0x0ff]) ^ $this->p[2];
$L ^= ((($this->s1[($R >> 24) & 0xFF] + $this->s2[($R >> 16) & 0x0ff]) ^ $this->s3[($R >> 8) & 0x0ff]) + $this->s4[$R & 0x0ff]) ^ $this->p[1];
$decrypted = pack("NN", $R ^ $this->p[0], $L);
return $decrypted;
}
/**
* Converts a text key into an array.
*
* @return array The key.
*/
function _formatKey($key)
{
return array_values(unpack('C*', $key));
}
}
?>

View File

@ -1,804 +0,0 @@
<?php
/*
$Id$
This code is part of LDAP Account Manager (http://www.sourceforge.net/projects/lam)
Copyright (C) 2003 Roland Gruber
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Config supplies access to the configuration data.
*/
// PHP 5 compatibility
if( phpversion() >= "5" ) ini_set( "zend.ze1_compatibility_mode", 1 );
include_once("status.inc");
// sets language settings for automatic translation
function setlanguage() {
if (!isset($_SESSION['language'])) {
$_SESSION['language'] = "en_GB.:ISO-8859-1:English (Great Britain)";
}
$language = explode(":", $_SESSION['language']);
putenv("LANG=" . $language[0]); // e.g. LANG=de_DE
setlocale(LC_ALL, $language[0]); // set LC_ALL to de_DE
$locdir = substr(__FILE__, 0, strlen(__FILE__) - 15) . "/locale"; // set path to translations
bindtextdomain("messages", $locdir);
textdomain("messages");
header("Content-type: text/html; charset=" . $language[1], true);
}
// returns an array of string with all available configuration profiles (without .conf)
function getConfigProfiles() {
$dir = dir(substr(__FILE__, 0, strlen(__FILE__) - 15) . "/config");
$ret = array();
$pos = 0;
while ($entry = $dir->read()){
$ext = substr($entry, strlen($entry)-5, 5);
$name = substr($entry, 0, strlen($entry)-5);
// check if extension is right, add to profile list
if ($ext == ".conf") {
$ret[$pos] = $name;
$pos ++;
}
}
sort($ret);
return $ret;
}
// print meta refresh
// $page is the URL of the target page
function metaRefresh($page) {
echo $_SESSION['header'];
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $page . "\">\n";
echo "<title></title>\n";
echo "</head>\n";
echo "<body>\n";
// print link if refresh does not work
echo "<p>\n";
echo "<a href=\"" . $page . "\">" . _("Click here if you are not directed to the next page.") . "</a>\n";
echo "</p>\n";
echo "</body>\n";
echo "</html>\n";
}
/*
// class Config
*/
// manages .conf files
class Config {
// server address (e.g. ldap://127.0.0.1:389)
var $ServerURL;
// array of strings: users with admin rights
var $Admins;
// string: password to edit preferences
var $Passwd;
// suffix for users
var $usersuffix;
// suffix for groups
var $groupsuffix;
// suffix for Samba hosts
var $hostsuffix;
// suffix for domains (Samba 3)
var $domainsuffix;
// minimum/maximum numbers for UID, GID and UID of Samba Hosts
var $MinUID;
var $MaxUID;
var $MinGID;
var $MaxGID;
var $MinMachine;
var $MaxMachine;
// attributes that are shown in the user/group/host tables
var $userlistAttributes;
var $grouplistAttributes;
var $hostlistAttributes;
// maximum number of rows shown in user/group/host list
var $maxlistentries;
// default language
var $defaultLanguage;
// Path to external script and server where it is executed
// used for managing quota and home directories
// optional settings, may not be defined
var $scriptPath;
var $scriptServer;
// if "yes" use the new LDAP schema for Samba 3.x
var $samba3;
// LDAP cache timeout
var $cachetimeout;
// password hash algorithm
var $pwdhash;
// text to include in user PDF files
var $pdftext = "";
// name of configuration file
var $file;
// list of all settings in config file
var $settings = array("ServerURL", "Passwd", "Admins", "usersuffix", "groupsuffix", "hostsuffix",
"domainsuffix", "MinUID", "MaxUID", "MinGID", "MaxGID", "MinMachine", "MaxMachine",
"userlistAttributes", "grouplistAttributes", "hostlistAttributes", "maxlistentries",
"defaultLanguage", "scriptPath", "scriptServer", "samba3", "cachetimeout", "pwdhash");
// constructor, loads preferences from config file
function Config($file=0) {
// load first profile if none is given
if (!is_string($file)) {
$profiles = getConfigProfiles();
$file = $profiles[0];
}
$this->file = $file;
$this->reload();
}
// reloads preferences from config file
function reload() {
$conffile = substr(__FILE__, 0, strlen(__FILE__) - 15) . "/config/" . $this->file . ".conf";
if (is_file($conffile) == True) {
$file = fopen($conffile, "r");
if (!$file) {
StatusMessage("ERROR", "", _("Unable to load configuration!") . " (" . $conffile . ")");
return;
}
while (!feof($file)) {
$line = fgets($file, 1024);
$line = trim($line); // remove spaces at the beginning and end
if (($line == "")||($line[0] == "#")) continue; // ignore comments and empty lines
// search keywords
for ($i = 0; $i < sizeof($this->settings); $i++) {
$keyword = $this->settings[$i];
$keylen = strlen($keyword);
if (strtolower(substr($line, 0, $keylen + 2)) == strtolower($keyword . ": ")) {
$this->$keyword = substr($line, $keylen + 2, strlen($line) - $keylen -2);
break;
}
}
}
fclose($file);
}
else {
StatusMessage("ERROR", "", _("Unable to load configuration!") . " (" . $conffile . ")");
}
// load user PDF text
$pdffile = substr(__FILE__, 0, strlen(__FILE__) - 15) . "/config/pdf/" . $this->file . ".txt";
if (is_file($pdffile) == True) {
$pdfstring = @file($pdffile);
$pdfstring = @implode("", $pdfstring);
if ($pdfstring) $this->pdftext = $pdfstring;
else $this->pdftext = "";
}
}
// saves preferences to config file
function save() {
$conffile = substr(__FILE__, 0, strlen(__FILE__) - 15) . "/config/" . $this->file . ".conf";
if (is_file($conffile) == True) {
$file = fopen($conffile, "r");
if (!$file) {
StatusMessage("ERROR", "", _("Cannot open config file!") . " (" . $conffile . ")");
return;
}
$file_array = array();
// read config file
while (!feof($file)) {
array_push($file_array, fgets($file, 1024));
}
fclose($file);
// generate new configuration file
$saved = array(); // includes all settings which have been saved
for ($i = 0; $i < sizeof($file_array); $i++) {
$line = trim($file_array[$i]);
if (($line == "")||($line[0] == "#")) continue; // ignore comments and empty lines
// search for keywords
for ($k = 0; $k < sizeof($this->settings); $k++) {
$keyword = $this->settings[$k];
$keylen = strlen($keyword);
if (strtolower(substr($line, 0, $keylen + 1)) == strtolower($keyword . ":")) {
$file_array[$i] = $keyword . ": " . $this->$keyword . "\n";
$saved[] = $keyword; // mark keyword as saved
break;
}
}
}
// check if we have to add new entries (e.g. if user upgraded LAM and has an old config file)
if (!in_array("ServerURL", $saved)) array_push($file_array, "\n\n# server address (e.g. ldap://localhost:389 or ldaps://localhost:636)\n" . "serverURL: " . $this->ServerURL . "\n");
if (!in_array("Passwd", $saved)) array_push($file_array, "\n\n# password to change these preferences via webfrontend\n" . "passwd: " . $this->Passwd . "\n");
if (!in_array("Admins", $saved)) array_push($file_array, "\n\n# list of users who are allowed to use LDAP Account Manager\n" .
"# names have to be seperated by semicolons\n" .
"# e.g. admins: cn=admin,dc=yourdomain,dc=org;cn=root,dc=yourdomain,dc=org\n" . "admins: " . $this->Admins . "\n");
if (!in_array("usersuffix", $saved)) array_push($file_array, "\n\n# suffix of users\n" .
"# e.g. ou=People,dc=yourdomain,dc=org\n" . "usersuffix: " . $this->usersuffix . "\n");
if (!in_array("groupsuffix", $saved)) array_push($file_array, "\n\n# suffix of groups\n" .
"# e.g. ou=Groups,dc=yourdomain,dc=org\n" . "groupsuffix: " . $this->groupsuffix . "\n");
if (!in_array("hostsuffix", $saved)) array_push($file_array, "\n\n# suffix of Samba hosts\n" .
"# e.g. ou=machines,dc=yourdomain,dc=org\n" . "hostsuffix: " . $this->hostsuffix . "\n");
if (!in_array("domainsuffix", $saved)) array_push($file_array, "\n\n# suffix of Samba 3 domains\n" .
"# e.g. ou=domains,dc=yourdomain,dc=org\n" . "domainsuffix: " . $this->domainsuffix . "\n");
if (!in_array("MinUID", $saved)) array_push($file_array, "\n\n# minimum UID number\n" . "minUID: " . $this->MinUID . "\n");
if (!in_array("MaxUID", $saved)) array_push($file_array, "\n\n# maximum UID number\n" . "maxUID: " . $this->MaxUID . "\n");
if (!in_array("MinGID", $saved)) array_push($file_array, "\n\n# minimum GID number\n" . "minGID: " . $this->MinGID . "\n");
if (!in_array("MaxGID", $saved)) array_push($file_array, "\n\n# maximum GID number\n" . "maxGID: " . $this->MaxGID . "\n");
if (!in_array("MinMachine", $saved)) array_push($file_array, "\n\n# minimum UID number for Samba hosts\n" . "minMachine: " . $this->MinMachine . "\n");
if (!in_array("MaxMachine", $saved)) array_push($file_array, "\n\n# maximum UID number for Samba hosts\n" . "maxMachine: " . $this->MaxMachine . "\n");
if (!in_array("userlistAttributes", $saved)) array_push($file_array, "\n\n# list of attributes to show in user list\n# entries can either be predefined values (e.g. '#cn' or '#uid')" .
"\n# or individual ones (e.g. 'uid:User ID' or 'host:Host Name')\n# values have to be seperated by semicolons\n" . "userlistAttributes: " . $this->userlistAttributes . "\n");
if (!in_array("grouplistAttributes", $saved)) array_push($file_array, "\n\n# list of attributes to show in group list\n# entries can either be predefined values (e.g. '#cn' or '#gidNumber')" .
"\n# or individual ones (e.g. 'cn:Group Name')\n# values have to be seperated by semicolons\n" . "grouplistAttributes: " . $this->grouplistAttributes . "\n");
if (!in_array("hostlistAttributes", $saved)) array_push($file_array, "\n\n# list of attributes to show in host list\n# entries can either be predefined values (e.g. '#cn' or '#uid')" .
"\n# or individual ones (e.g. 'cn:Host Name')\n# values have to be seperated by semicolons\n" . "hostlistAttributes: " . $this->hostlistAttributes . "\n");
if (!in_array("maxlistentries", $saved)) array_push($file_array, "\n\n# maximum number of rows to show in user/group/host lists\n" . "maxlistentries: " . $this->maxlistentries . "\n");
if (!in_array("defaultLanguage", $saved)) array_push($file_array, "\n\n# default language (a line from config/language)\n" . "defaultLanguage: " . $this->defaultLanguage . "\n");
if (!in_array("scriptPath", $saved)) array_push($file_array, "\n\n# Path to external Script\n" . "scriptPath: " . $this->scriptPath . "\n");
if (!in_array("scriptServer", $saved)) array_push($file_array, "\n\n# Server of external Script\n" . "scriptServer: " . $this->scriptServer . "\n");
if (!in_array("samba3", $saved)) array_push($file_array, "\n\n# Set to \"yes\" only if you use the new Samba 3.x schema.\n" . "samba3: " . $this->samba3 . "\n");
if (!in_array("cachetimeout", $saved)) array_push($file_array, "\n\n# Number of minutes LAM caches LDAP searches.\n" . "cacheTimeout: " . $this->cachetimeout . "\n");
if (!in_array("pwdhash", $saved)) array_push($file_array, "\n\n# Password hash algorithm (CRYPT/MD5/SMD5/SHA/SSHA/PLAIN).\n" . "pwdhash: " . $this->pwdhash . "\n");
$file = fopen($conffile, "w");
if ($file) {
for ($i = 0; $i < sizeof($file_array); $i++) fputs($file, $file_array[$i]);
fclose($file);
@chmod ($conffile, 0600);
}
else {
StatusMessage("ERROR", "", _("Cannot open config file!") . " (" . $conffile . ")");
exit;
}
}
}
// prints current preferences
function printconf() {
echo "<b>" . _("Server address") . ": </b>" . $this->ServerURL . "<br>";
echo "<b>" . _("Password hash type") . ": </b>" . $this->pwdhash . "<br>";
echo "<b>" . _("Cache timeout") . ": </b>" . $this->cachetimeout . "<br>";
echo "<b>" . _("Samba 3.x schema") . ": </b>" . $this->samba3 . "<br>";
echo "<b>" . _("UserSuffix") . ": </b>" . $this->usersuffix . "<br>";
echo "<b>" . _("GroupSuffix") . ": </b>" . $this->groupsuffix . "<br>";
echo "<b>" . _("HostSuffix") . ": </b>" . $this->hostsuffix . "<br>";
echo "<b>" . _("DomainSuffix") . ": </b>" . $this->domainsuffix . "<br>";
echo "<b>" . _("Minimum UID number") . ": </b>" . $this->MinUID . "<br>";
echo "<b>" . _("Maximum UID number") . ": </b>" . $this->MaxUID . "<br>";
echo "<b>" . _("Minimum GID number") . ": </b>" . $this->MinGID . "<br>";
echo "<b>" . _("Maximum GID number") . ": </b>" . $this->MaxGID . "<br>";
echo "<b>" . _("Minimum Machine number") . ": </b>" . $this->MinMachine . "<br>";
echo "<b>" . _("Maximum Machine number") . ": </b>" . $this->MaxMachine . "<br>";
echo "<b>" . _("Attributes in User List") . ": </b>" . $this->userlistAttributes . "<br>";
echo "<b>" . _("Attributes in Group List") . ": </b>" . $this->grouplistAttributes . "<br>";
echo "<b>" . _("Attributes in Host List") . ": </b>" . $this->hostlistAttributes . "<br>";
echo "<b>" . _("Maximum list entries") . ": </b>" . $this->maxlistentries . "<br>";
echo "<b>" . _("Default language") . ": </b>" . $this->defaultLanguage . "<br>";
echo "<b>" . _("Path to external script") . ": </b>" . $this->scriptPath . "<br>";
echo "<b>" . _("Server of external script") . ": </b>" . $this->scriptServer . "<br>";
echo "<b>" . _("List of valid users") . ": </b>" . $this->Admins . "<br><br>";
echo "<b>" . _("Text for user PDF") . ": </b>" . $this->get_pdftext();
}
// functions to read/write preferences
// returns the server address as string
function get_ServerURL() {
return $this->ServerURL;
}
// sets the server address
// $value: new server address
// returns true if $value has correct format
function set_ServerURL($value) {
if (is_string($value)) $this->ServerURL = $value;
else return false;
return true;
}
// returns an array of string with all admin names
function get_Admins() {
return explode(";", $this->Admins);
}
// returns all admin users seperated by semicolons
function get_Adminstring() {
return $this->Admins;
}
// needs a string that contains all admin users seperated by semicolons
// $value: new admin string
// returns true if $value has correct format
function set_Adminstring($value) {
if (is_string($value) &&
eregi("^[^;]+(;[^;]+)*$", $value)) {
$this->Admins = $value;
}
else return false;
return true;
}
// returns the password to access the preferences wizard
function get_Passwd() {
return $this->Passwd;
}
// sets the preferences wizard password
// $value: new password
// returns true if $value has correct format
function set_Passwd($value) {
if (is_string($value)) $this->Passwd = $value;
else return false;
return true;
}
// returns the LDAP suffix where users are saved
function get_UserSuffix() {
return $this->usersuffix;
}
// sets the LDAP suffix where users are saved
// $value: new user suffix
// returns true if $value has correct format
function set_UserSuffix($value) {
if (is_string($value)) {
$this->usersuffix = $value;
}
else return false;
return true;
}
// returns the LDAP suffix where groups are saved
function get_GroupSuffix() {
return $this->groupsuffix;
}
// sets the LDAP suffix where groups are saved
// $value: new group suffix
// returns true if $value has correct format
function set_GroupSuffix($value) {
if (is_string($value)) {
$this->groupsuffix = $value;
}
else return false;
return true;
}
// returns the LDAP suffix where hosts are saved
function get_HostSuffix() {
return $this->hostsuffix;
}
// sets the LDAP suffix where hosts are saved
// $value: new host suffix
// returns true if $value has correct format
function set_HostSuffix($value) {
if (is_string($value)) {
$this->hostsuffix = $value;
}
else return false;
return true;
}
// returns the LDAP suffix where domains are saved
function get_DomainSuffix() {
return $this->domainsuffix;
}
// sets the LDAP suffix where domains are saved
// $value: new domain suffix
// returns true if $value has correct format
function set_DomainSuffix($value) {
if (!$value && ($this->get_Samba3() == "no")) $this->domainsuffix = "";
elseif (is_string($value)) {
$this->domainsuffix = $value;
}
else return false;
return true;
}
// returns the minimum UID to use when creating new users
function get_minUID() {
return $this->MinUID;
}
// sets the minimum UID to use when creating new users
// $value: new minimum UID number
// returns true if $value has correct format
function set_minUID($value) {
if (is_numeric($value)) $this->MinUID = $value;
else return false;
return true;
}
// returns the maximum UID to use when creating new users
function get_maxUID() {
return $this->MaxUID;
}
// sets the maximum UID to use when creating new users
// $value: new maximum UID number
// returns true if $value has correct format
function set_maxUID($value) {
if (is_numeric($value)) $this->MaxUID = $value;
else return false;
return true;
}
// returns the minimum GID to use when creating new groups
function get_minGID() {
return $this->MinGID;
}
// sets the minimum GID to use when creating new groups
// $value: new minimum GID number
// returns true if $value has correct format
function set_minGID($value) {
if (is_numeric($value)) $this->MinGID = $value;
else return false;
return true;
}
// returns the maximum GID to use when creating new groups
function get_maxGID() {
return $this->MaxGID;
}
// sets the maximum GID to use when creating new groups
// $value: new maximum GID number
// returns true if $value has correct format
function set_maxGID($value) {
if (is_numeric($value)) $this->MaxGID = $value;
else return false;
return true;
}
// returns the minimum UID to use when creating new Samba hosts
function get_minMachine() {
return $this->MinMachine;
}
// sets the minimum UID to use when creating new Samba hosts
// $value: new minimum machine number
// returns true if $value has correct format
function set_minMachine($value) {
if (is_numeric($value)) $this->MinMachine = $value;
else return false;
return true;
}
// returns the maximum UID to use when creating new Samba hosts
function get_maxMachine() {
return $this->MaxMachine;
}
// sets the maximum UID to use when creating new Samba hosts
// $value: new maximum machine number
// returns true if $value has correct format
function set_maxMachine($value) {
if (is_numeric($value)) $this->MaxMachine = $value;
else return false;
return true;
}
// returns the list of attributes to show in user list
function get_userlistAttributes() {
return $this->userlistAttributes;
}
// sets the list of attributes to show in user list
// $value: new attribute string
// returns true if $value has correct format
function set_userlistAttributes($value) {
if (is_string($value) && eregi("^((#[^:;]+)|([^:;]*:[^:;]+))(;((#[^:;]+)|([^:;]*:[^:;]+)))*$", $value)) {
$this->userlistAttributes = $value;
}
else return false;
return true;
}
// returns the list of attributes to show in group list
function get_grouplistAttributes() {
return $this->grouplistAttributes;
}
// sets the list of attributes to show in group list
// $value: new attribute string
// returns true if $value has correct format
function set_grouplistAttributes($value) {
if (is_string($value) && eregi("^((#[^:;]+)|([^:;]*:[^:;]+))(;((#[^:;]+)|([^:;]*:[^:;]+)))*$", $value)) {
$this->grouplistAttributes = $value;
}
else return false;
return true;
}
// returns the list of attributes to show in host list
function get_hostlistAttributes() {
return $this->hostlistAttributes;
}
// sets the list of attributes to show in host list
// $value: new attribute string
// returns true if $value has correct format
function set_hostlistAttributes($value) {
if (is_string($value) && eregi("^((#[^:;]+)|([^:;]*:[^:;]+))(;((#[^:;]+)|([^:;]*:[^:;]+)))*$", $value)) {
$this->hostlistAttributes = $value;
}
else return false;
return true;
}
// returns the maximum number of rows in user/group/host lists
function get_MaxListEntries() {
return $this->maxlistentries;
}
// sets the maximum number of rows in user/group/host lists
// $value: new attribute string
// returns true if $value has correct format
function set_MaxListEntries ($value) {
if (is_numeric($value)) $this->maxlistentries = $value;
else return false;
return true;
}
// returns the default language string
function get_defaultLanguage() {
return $this->defaultLanguage;
}
// sets the default language string
// $value: new default language
// returns true if $value has correct format
function set_defaultLanguage($value) {
if (is_string($value)) $this->defaultLanguage = $value;
else return false;
return true;
}
// returns the path to the external script
function get_scriptPath() {
return $this->scriptPath;
}
// sets the path to the external script
// $value: new script path
// returns true if $value has correct format
function set_scriptPath($value) {
if (!$value) $this->scriptPath = ""; // optional parameter
elseif (is_string($value) && eregi("^/([a-z0-9_\\-])+(/([a-z0-9_\\.\\-])+)+$", $value)) $this->scriptPath = $value;
else return false;
return true;
}
// returns the server of the external script
function get_scriptServer() {
return $this->scriptServer;
}
// sets the server of the external script
// $value: new script server
// returns true if $value has correct format
function set_scriptServer($value) {
if (!$value) $this->scriptServer = ""; // optional parameter
elseif (is_string($value) && eregi("^[a-z0-9\\-]+(\\.[a-z0-9\\-]+)*$", $value)) {
$this->scriptServer = $value;
}
else return false;
return true;
}
// returns "yes" if Samba 3.x schema is used, otherwise "no"
function get_samba3() {
return $this->samba3;
}
// returns true if Samba 3, else false
function is_samba3() {
if ($this->samba3 == "yes") return true;
else return false;
}
// set Samba version: "yes" means 3.x schema, "no" means 2.2.x schema
// $value: "yes"/"no"
// returns true if $value has correct format
function set_samba3($value) {
if (is_string($value) && eregi("^(yes|no)$", $value)) {
$this->samba3 = $value;
}
else return false;
return true;
}
// returns the LDAP cache timeout in minutes
function get_cacheTimeout() {
if (isset($this->cachetimeout)) return $this->cachetimeout;
else return 5;
}
// returns the LDAP cache timeout in seconds
function get_cacheTimeoutSec() {
return $this->cachetimeout * 60;
}
// sets the LDAP cache timeout in minutes (0,1,2,5,10,15)
// $value: new cache timeout
// returns true if $value has correct format
function set_cacheTimeout($value) {
if (is_numeric($value) && ($value > -1)) {
$this->cachetimeout = $value;
}
else return false;
return true;
}
// returns the password hash type
function get_pwdhash() {
if ($this->pwdhash) return strtoupper($this->pwdhash);
else return "SSHA";
}
// set the password hash type (CRYPT/SHA/SSHA/MD5/SMD5)
// $value: new password hash algorithm
// returns true if $value has correct format
function set_pwdhash($value) {
if (is_string($value) && eregi("^(crypt|sha|ssha|md5|smd5|plain)$", $value)) {
$this->pwdhash = $value;
}
else return false;
return true;
}
// returns text for user PDF files
function get_pdftext() {
if ($this->pdftext) return $this->pdftext;
else return "";
}
// set the text for user PDF files
// $value: string containing the text
// returns true if $value has correct format and could be saved
function set_pdftext($value) {
// check if text changed
if ($value == $this->pdftext) return true;
if (is_string($value)) {
// save to file
$pdffile = substr(__FILE__, 0, strlen(__FILE__) - 15) . "/config/pdf/" . $this->file . ".txt";
$file = @fopen($pdffile, "w");
if ($file) {
@fputs($file, $value);
fclose($file);
$this->pdftext = $value;
}
else return false;
$this->pdftext = $value;
}
else return false;
return true;
}
}
/*
// class CfgMain
*/
// manages config.cfg
class CfgMain {
// default profile
var $default;
// password to change config.cfg
var $password;
// constructor, loads preferences from config file
function CfgMain() {
$this->reload();
}
// reloads preferences from config file config.cfg
function reload() {
$conffile = substr(__FILE__, 0, strlen(__FILE__) - 15) . "/config/config.cfg";
if (is_file($conffile) == True) {
$file = fopen($conffile, "r");
if (!$file) {
StatusMessage("ERROR", "", _("Unable to load configuration!") . " (" . $conffile . ")");
return;
}
while (!feof($file)) {
$line = fgets($file, 1024);
$line = trim($line); // remove spaces at the beginning and end
if (($line == "")||($line[0] == "#")) continue; // ignore comments
// search keywords
if (substr($line, 0, 10) == "password: ") {
$this->password = substr($line, 10, strlen($line)-10);
continue;
}
if (substr($line, 0, 9) == "default: ") {
$this->default = substr($line, 9, strlen($line)-9);
continue;
}
}
fclose($file);
}
else {
StatusMessage("ERROR", "", _("Unable to load configuration!") . " (" . $conffile . ")");
}
}
// saves preferences to config file config.cfg
function save() {
$conffile = substr(__FILE__, 0, strlen(__FILE__) - 15) . "/config/config.cfg";
if (is_file($conffile) == True) {
// booleans to check if value was already saved
$save_password = $save_default = False;
$file = fopen($conffile, "r");
if (!$file) {
StatusMessage("ERROR", "", _("Cannot open config file!") . " (" . $conffile . ")");
return;
}
$file_array = array();
// read config file
while (!feof($file)) {
array_push($file_array, fgets($file, 1024));
}
fclose($file);
// generate new configuration file
for ($i = 0; $i < sizeof($file_array); $i++) {
if (($file_array[$i] == "\n")||($file_array[$i][0] == "#")) continue; // ignore comments
// search for keywords
if (substr($file_array[$i], 0, 10) == "password: ") {
$file_array[$i] = "password: " . $this->password . "\n";
$save_password = True;
continue;
}
if (substr($file_array[$i], 0, 9) == "default: ") {
$file_array[$i] = "default: " . $this->default . "\n";
$save_default = True;
continue;
}
}
}
// check if we have to add new entries (e.g. if user upgraded LAM and has an old config file)
if (!$save_password == True) array_push($file_array, "\n\n# password to add/delete/rename configuration profiles\n" . "password: " . $this->password);
if (!$save_default == True) array_push($file_array, "\n\n# default profile, without \".conf\"\n" . "default: " . $this->default);
$file = fopen($conffile, "w");
if ($file) {
for ($i = 0; $i < sizeof($file_array); $i++) fputs($file, $file_array[$i]);
fclose($file);
}
else {
StatusMessage("ERROR", "", _("Cannot open config file!") . " (" . $conffile . ")");
exit;
}
}
}
?>

View File

@ -1,499 +0,0 @@
#! /usr/bin/perl
# File Modified from Tilo Lutz, TiloLutz@gmx.de to fit better
# in lam, LDAP Account Manager
# added last two lines and changed from package to normal perl-programm
#
# Samba LM/NT Hash Generating Library.
#
# Usage:
# use Crypt::SmbHash;
# ( $lmhash, $nthash ) = ntlmgen($pass);
# or
# ntlmgen $pass, $lmhash, $nthash;
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
#
# Copyright(C) 2001 Benjamin Kuit <bj@it.uts.edu.au>
#
#package Crypt::SmbHash;
use 5.005;
use strict;
use Exporter;
use vars qw(@ISA @EXPORT @EXPORT_OK $VERSION);
@ISA = qw(Exporter);
$VERSION = '0.02';
@EXPORT = qw( ntlmgen );
# The mdfour function is available for exporting if they really want
# it =)
@EXPORT_OK = qw( lmhash nthash ntlmgen mdfour );
# Works out if local system has the module Digest::MD4, and uses it
# if it does, otherwise uses ported version of the md4 algorithm
# Performance is alot better with Digest::MD4, so its recommended to
# get Digest::MD4 installed if you intend to generate alot of hashes
# in a small amount of time.
my $HaveDigestMD4;
BEGIN {
$HaveDigestMD4 = 0;
if ( eval "require 'Digest/MD4.pm';" ) {
$HaveDigestMD4 = 1;
}
}
# lmhash PASSWORD
# Generates lanman password hash for a given password, returns the hash
#
# Extracted and ported from SAMBA/source/libsmb/smbencrypt.c:nt_lm_owf_gen
sub lmhash($) {
my ( $pass ) = @_;
my ( @p16 );
$pass = substr($pass||"",0,129);
$pass =~ tr/a-z/A-Z/;
$pass = substr($pass,0,14);
@p16 = E_P16($pass);
return join("", map {sprintf("%02X",$_);} @p16);
}
# nthash PASSWORD
# Generates nt md4 password hash for a given password, returns the hash
#
# Extracted and ported from SAMBA/source/libsmb/smbencrypt.c:nt_lm_owf_gen
sub nthash($) {
my ( $pass ) = @_;
my ( $hex );
my ( $digest );
$pass = substr($pass||"",0,128);
$pass =~ s/(.)/$1\000/sg;
$hex = "";
if ( $HaveDigestMD4 ) {
eval {
$digest = new Digest::MD4;
$digest->reset();
$digest->add($pass);
$hex = $digest->hexdigest();
$hex =~ tr/a-z/A-Z/;
};
$HaveDigestMD4 = 0 unless ( $hex );
}
$hex = sprintf("%02X"x16,mdfour($pass)) unless ( $hex );
return $hex;
}
# ntlmgen PASSWORD, LMHASH, NTHASH
# Generate lanman and nt md4 password hash for given password, and assigns
# values to arguments. Combined function of lmhash and nthash
sub ntlmgen {
my ( $nthash, $lmhash );
$nthash = nthash($_[0]);
$lmhash = lmhash($_[0]);
if ( $#_ == 2 ) {
$_[1] = $lmhash;
$_[2] = $nthash;
}
return ( $lmhash, $nthash );
}
# Support functions
# Ported from SAMBA/source/lib/md4.c:F,G and H respectfully
sub F { my ( $X, $Y, $Z ) = @_; return ($X&$Y) | ((~$X)&$Z); }
sub G { my ( $X, $Y, $Z) = @_; return ($X&$Y) | ($X&$Z) | ($Y&$Z); }
sub H { my ($X, $Y, $Z) = @_; return $X^$Y^$Z; }
# Needed? because perl seems to choke on overflowing when doing bitwise
# operations on numbers larger than 32 bits. Well, it did on my machine =)
sub add32 {
my ( @v ) = @_;
my ( $ret, @sum );
foreach ( @v ) {
$_ = [ ($_&0xffff0000)>>16, ($_&0xffff) ];
}
@sum = ();
foreach ( @v ) {
$sum[0] += $_->[0];
$sum[1] += $_->[1];
}
$sum[0] += ($sum[1]&0xffff0000)>>16;
$sum[1] &= 0xffff;
$sum[0] &= 0xffff;
$ret = ($sum[0]<<16) | $sum[1];
return $ret;
}
# Ported from SAMBA/source/lib/md4.c:lshift
# Renamed to prevent clash with SAMBA/source/libsmb/smbdes.c:lshift
sub md4lshift {
my ($x, $s) = @_;
$x &= 0xFFFFFFFF;
return (($x<<$s)&0xFFFFFFFF) | ($x>>(32-$s));
}
# Ported from SAMBA/source/lib/md4.c:ROUND1
sub ROUND1 {
my($a,$b,$c,$d,$k,$s,@X) = @_;
$_[0] = md4lshift(add32($a,F($b,$c,$d),$X[$k]), $s);
return $_[0];
}
# Ported from SAMBA/source/lib/md4.c:ROUND2
sub ROUND2 {
my ($a,$b,$c,$d,$k,$s,@X) = @_;
$_[0] = md4lshift(add32($a,G($b,$c,$d),$X[$k],0x5A827999), $s);
return $_[0];
}
# Ported from SAMBA/source/lib/md4.c:ROUND3
sub ROUND3 {
my ($a,$b,$c,$d,$k,$s,@X) = @_;
$_[0] = md4lshift(add32($a,H($b,$c,$d),$X[$k],0x6ED9EBA1), $s);
return $_[0];
}
# Ported from SAMBA/source/lib/md4.c:mdfour64
sub mdfour64 {
my ( $A, $B, $C, $D, @M ) = @_;
my ( $AA, $BB, $CC, $DD );
my ( @X );
@X = (map { $_?$_:0 } @M)[0..15];
$AA=$A; $BB=$B; $CC=$C; $DD=$D;
ROUND1($A,$B,$C,$D, 0, 3, @X); ROUND1($D,$A,$B,$C, 1, 7, @X);
ROUND1($C,$D,$A,$B, 2, 11, @X); ROUND1($B,$C,$D,$A, 3, 19, @X);
ROUND1($A,$B,$C,$D, 4, 3, @X); ROUND1($D,$A,$B,$C, 5, 7, @X);
ROUND1($C,$D,$A,$B, 6, 11, @X); ROUND1($B,$C,$D,$A, 7, 19, @X);
ROUND1($A,$B,$C,$D, 8, 3, @X); ROUND1($D,$A,$B,$C, 9, 7, @X);
ROUND1($C,$D,$A,$B, 10, 11, @X); ROUND1($B,$C,$D,$A, 11, 19, @X);
ROUND1($A,$B,$C,$D, 12, 3, @X); ROUND1($D,$A,$B,$C, 13, 7, @X);
ROUND1($C,$D,$A,$B, 14, 11, @X); ROUND1($B,$C,$D,$A, 15, 19, @X);
ROUND2($A,$B,$C,$D, 0, 3, @X); ROUND2($D,$A,$B,$C, 4, 5, @X);
ROUND2($C,$D,$A,$B, 8, 9, @X); ROUND2($B,$C,$D,$A, 12, 13, @X);
ROUND2($A,$B,$C,$D, 1, 3, @X); ROUND2($D,$A,$B,$C, 5, 5, @X);
ROUND2($C,$D,$A,$B, 9, 9, @X); ROUND2($B,$C,$D,$A, 13, 13, @X);
ROUND2($A,$B,$C,$D, 2, 3, @X); ROUND2($D,$A,$B,$C, 6, 5, @X);
ROUND2($C,$D,$A,$B, 10, 9, @X); ROUND2($B,$C,$D,$A, 14, 13, @X);
ROUND2($A,$B,$C,$D, 3, 3, @X); ROUND2($D,$A,$B,$C, 7, 5, @X);
ROUND2($C,$D,$A,$B, 11, 9, @X); ROUND2($B,$C,$D,$A, 15, 13, @X);
ROUND3($A,$B,$C,$D, 0, 3, @X); ROUND3($D,$A,$B,$C, 8, 9, @X);
ROUND3($C,$D,$A,$B, 4, 11, @X); ROUND3($B,$C,$D,$A, 12, 15, @X);
ROUND3($A,$B,$C,$D, 2, 3, @X); ROUND3($D,$A,$B,$C, 10, 9, @X);
ROUND3($C,$D,$A,$B, 6, 11, @X); ROUND3($B,$C,$D,$A, 14, 15, @X);
ROUND3($A,$B,$C,$D, 1, 3, @X); ROUND3($D,$A,$B,$C, 9, 9, @X);
ROUND3($C,$D,$A,$B, 5, 11, @X); ROUND3($B,$C,$D,$A, 13, 15, @X);
ROUND3($A,$B,$C,$D, 3, 3, @X); ROUND3($D,$A,$B,$C, 11, 9, @X);
ROUND3($C,$D,$A,$B, 7, 11, @X); ROUND3($B,$C,$D,$A, 15, 15, @X);
# We want to change the arguments, so assign them to $_[0] markers
# rather than to $A..$D
$_[0] = add32($A,$AA); $_[1] = add32($B,$BB);
$_[2] = add32($C,$CC); $_[3] = add32($D,$DD);
@X = map { 0 } (1..16);
}
# Ported from SAMBA/source/lib/md4.c:copy64
sub copy64 {
my ( @in ) = @_;
my ( $i, @M );
for $i ( 0..15 ) {
$M[$i] = ($in[$i*4+3]<<24) | ($in[$i*4+2]<<16) |
($in[$i*4+1]<<8) | ($in[$i*4+0]<<0);
}
return @M;
}
# Ported from SAMBA/source/lib/md4.c:copy4
sub copy4 {
my ( $x ) = @_;
my ( @out );
$out[0] = $x&0xFF;
$out[1] = ($x>>8)&0xFF;
$out[2] = ($x>>16)&0xFF;
$out[3] = ($x>>24)&0xFF;
@out = map { $_?$_:0 } @out;
return @out;
}
# Ported from SAMBA/source/lib/md4.c:mdfour
sub mdfour {
my ( @in ) = unpack("C*",$_[0]);
my ( $b, @A, @M, @buf, @out );
$b = scalar @in * 8;
@A = ( 0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476 );
while (scalar @in > 64 ) {
@M = copy64( @in );
mdfour64( @A, @M );
@in = @in[64..$#in];
}
@buf = ( @in, 0x80, map {0} (1..128) )[0..127];
if ( scalar @in <= 55 ) {
@buf[56..59] = copy4( $b );
@M = copy64( @buf );
mdfour64( @A, @M );
}
else {
@buf[120..123] = copy4( $b );
@M = copy64( @buf );
mdfour64( @A, @M );
@M = copy64( @buf[64..$#buf] );
mdfour64( @A, @M );
}
@out[0..3] = copy4($A[0]);
@out[4..7] = copy4($A[1]);
@out[8..11] = copy4($A[2]);
@out[12..15] = copy4($A[3]);
return @out;
}
# Contants used in lanlam hash calculations
# Ported from SAMBA/source/libsmb/smbdes.c:perm1[56]
my @perm1 = (57, 49, 41, 33, 25, 17, 9,
1, 58, 50, 42, 34, 26, 18,
10, 2, 59, 51, 43, 35, 27,
19, 11, 3, 60, 52, 44, 36,
63, 55, 47, 39, 31, 23, 15,
7, 62, 54, 46, 38, 30, 22,
14, 6, 61, 53, 45, 37, 29,
21, 13, 5, 28, 20, 12, 4);
# Ported from SAMBA/source/libsmb/smbdes.c:perm2[48]
my @perm2 = (14, 17, 11, 24, 1, 5,
3, 28, 15, 6, 21, 10,
23, 19, 12, 4, 26, 8,
16, 7, 27, 20, 13, 2,
41, 52, 31, 37, 47, 55,
30, 40, 51, 45, 33, 48,
44, 49, 39, 56, 34, 53,
46, 42, 50, 36, 29, 32);
# Ported from SAMBA/source/libsmb/smbdes.c:perm3[64]
my @perm3 = (58, 50, 42, 34, 26, 18, 10, 2,
60, 52, 44, 36, 28, 20, 12, 4,
62, 54, 46, 38, 30, 22, 14, 6,
64, 56, 48, 40, 32, 24, 16, 8,
57, 49, 41, 33, 25, 17, 9, 1,
59, 51, 43, 35, 27, 19, 11, 3,
61, 53, 45, 37, 29, 21, 13, 5,
63, 55, 47, 39, 31, 23, 15, 7);
# Ported from SAMBA/source/libsmb/smbdes.c:perm4[48]
my @perm4 = ( 32, 1, 2, 3, 4, 5,
4, 5, 6, 7, 8, 9,
8, 9, 10, 11, 12, 13,
12, 13, 14, 15, 16, 17,
16, 17, 18, 19, 20, 21,
20, 21, 22, 23, 24, 25,
24, 25, 26, 27, 28, 29,
28, 29, 30, 31, 32, 1);
# Ported from SAMBA/source/libsmb/smbdes.c:perm5[32]
my @perm5 = ( 16, 7, 20, 21,
29, 12, 28, 17,
1, 15, 23, 26,
5, 18, 31, 10,
2, 8, 24, 14,
32, 27, 3, 9,
19, 13, 30, 6,
22, 11, 4, 25);
# Ported from SAMBA/source/libsmb/smbdes.c:perm6[64]
my @perm6 =( 40, 8, 48, 16, 56, 24, 64, 32,
39, 7, 47, 15, 55, 23, 63, 31,
38, 6, 46, 14, 54, 22, 62, 30,
37, 5, 45, 13, 53, 21, 61, 29,
36, 4, 44, 12, 52, 20, 60, 28,
35, 3, 43, 11, 51, 19, 59, 27,
34, 2, 42, 10, 50, 18, 58, 26,
33, 1, 41, 9, 49, 17, 57, 25);
# Ported from SAMBA/source/libsmb/smbdes.c:sc[16]
my @sc = (1, 1, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 1);
# Ported from SAMBA/source/libsmb/smbdes.c:sbox[8][4][16]
# Side note, I used cut and paste for all these numbers, I did NOT
# type them all in =)
my @sbox = ([[14, 4, 13, 1, 2, 15, 11, 8, 3, 10, 6, 12, 5, 9, 0, 7],
[ 0, 15, 7, 4, 14, 2, 13, 1, 10, 6, 12, 11, 9, 5, 3, 8],
[ 4, 1, 14, 8, 13, 6, 2, 11, 15, 12, 9, 7, 3, 10, 5, 0],
[15, 12, 8, 2, 4, 9, 1, 7, 5, 11, 3, 14, 10, 0, 6, 13]],
[[15, 1, 8, 14, 6, 11, 3, 4, 9, 7, 2, 13, 12, 0, 5, 10],
[ 3, 13, 4, 7, 15, 2, 8, 14, 12, 0, 1, 10, 6, 9, 11, 5],
[ 0, 14, 7, 11, 10, 4, 13, 1, 5, 8, 12, 6, 9, 3, 2, 15],
[13, 8, 10, 1, 3, 15, 4, 2, 11, 6, 7, 12, 0, 5, 14, 9]],
[[10, 0, 9, 14, 6, 3, 15, 5, 1, 13, 12, 7, 11, 4, 2, 8],
[13, 7, 0, 9, 3, 4, 6, 10, 2, 8, 5, 14, 12, 11, 15, 1],
[13, 6, 4, 9, 8, 15, 3, 0, 11, 1, 2, 12, 5, 10, 14, 7],
[ 1, 10, 13, 0, 6, 9, 8, 7, 4, 15, 14, 3, 11, 5, 2, 12]],
[[ 7, 13, 14, 3, 0, 6, 9, 10, 1, 2, 8, 5, 11, 12, 4, 15],
[13, 8, 11, 5, 6, 15, 0, 3, 4, 7, 2, 12, 1, 10, 14, 9],
[10, 6, 9, 0, 12, 11, 7, 13, 15, 1, 3, 14, 5, 2, 8, 4],
[ 3, 15, 0, 6, 10, 1, 13, 8, 9, 4, 5, 11, 12, 7, 2, 14]],
[[ 2, 12, 4, 1, 7, 10, 11, 6, 8, 5, 3, 15, 13, 0, 14, 9],
[14, 11, 2, 12, 4, 7, 13, 1, 5, 0, 15, 10, 3, 9, 8, 6],
[ 4, 2, 1, 11, 10, 13, 7, 8, 15, 9, 12, 5, 6, 3, 0, 14],
[11, 8, 12, 7, 1, 14, 2, 13, 6, 15, 0, 9, 10, 4, 5, 3]],
[[12, 1, 10, 15, 9, 2, 6, 8, 0, 13, 3, 4, 14, 7, 5, 11],
[10, 15, 4, 2, 7, 12, 9, 5, 6, 1, 13, 14, 0, 11, 3, 8],
[ 9, 14, 15, 5, 2, 8, 12, 3, 7, 0, 4, 10, 1, 13, 11, 6],
[ 4, 3, 2, 12, 9, 5, 15, 10, 11, 14, 1, 7, 6, 0, 8, 13]],
[[ 4, 11, 2, 14, 15, 0, 8, 13, 3, 12, 9, 7, 5, 10, 6, 1],
[13, 0, 11, 7, 4, 9, 1, 10, 14, 3, 5, 12, 2, 15, 8, 6],
[ 1, 4, 11, 13, 12, 3, 7, 14, 10, 15, 6, 8, 0, 5, 9, 2],
[ 6, 11, 13, 8, 1, 4, 10, 7, 9, 5, 0, 15, 14, 2, 3, 12]],
[[13, 2, 8, 4, 6, 15, 11, 1, 10, 9, 3, 14, 5, 0, 12, 7],
[ 1, 15, 13, 8, 10, 3, 7, 4, 12, 5, 6, 11, 0, 14, 9, 2],
[ 7, 11, 4, 1, 9, 12, 14, 2, 0, 6, 10, 13, 15, 3, 5, 8],
[ 2, 1, 14, 7, 4, 10, 8, 13, 15, 12, 9, 0, 3, 5, 6, 11]]);
# Ported from SAMBA/source/libsmb/smbdes.c:xor
# Hack: Split arguments in half and then xor's first half of arguments to
# second half of arguments. Probably proper way of doing this would
# be to used referenced variables
sub mxor {
my ( @in ) = @_;
my ( $i, $off, @ret );
$off = int($#in/2);
for $i ( 0..$off ) {
$ret[$i] = $in[$i] ^ $in[$i+$off+1];
}
return @ret;
}
# Ported from SAMBA/source/libsmb/smbdes.c:str_to_key
sub str_to_key {
my ( @str ) = @_;
my ( $i, @key );
@str = map { $_?$_:0 } @str;
$key[0] = $str[0]>>1;
$key[1] = (($str[0]&0x01)<<6) | ($str[1]>>2);
$key[2] = (($str[1]&0x03)<<5) | ($str[2]>>3);
$key[3] = (($str[2]&0x07)<<4) | ($str[3]>>4);
$key[4] = (($str[3]&0x0F)<<3) | ($str[4]>>5);
$key[5] = (($str[4]&0x1F)<<2) | ($str[5]>>6);
$key[6] = (($str[5]&0x3F)<<1) | ($str[6]>>7);
$key[7] = $str[6]&0x7F;
for $i (0..7) {
$key[$i] = ($key[$i]<<1);
}
return @key;
}
# Ported from SAMBA/source/libsmb/smbdes.c:permute
# Would probably be better to pass in by reference
sub permute {
my ( @a ) = @_;
my ( $i, $n, @in, @p, @out );
# Last argument is the count of the perm values
$n = $a[$#a];
@in = @a[0..($#a-$n-1)];
@p = @_[($#a-$n)..($#a-1)];
for $i ( 0..($n-1) ) {
$out[$i] = $in[$p[$i]-1]?1:0;
}
return @out;
}
# Ported from SAMBA/source/libsmb/smbdes.c:lshift
# Lazy shifting =)
sub lshift {
my ( $count, @d ) = @_;
$count %= ($#d+1);
@d = (@d,@d)[$count..($#d+$count)];
return @d;
}
# Ported from SAMBA/source/libsmb/smbdes.c:dohash
sub dohash {
my ( @a ) = @_;
my ( @in, @key, $forw, @pk1, @c, @d, @ki, @cd, $i, @pd1, @l, @r, @rl, @out );
@in = @a[0..63];
@key = @a[64..($#_-1)];
$forw = $a[$#a];
@pk1 = permute( @key, @perm1, 56 );
@c = @pk1[0..27];
@d = @pk1[28..55];
for $i ( 0..15 ) {
@c = lshift( $sc[$i], @c );
@d = lshift( $sc[$i], @d );
@cd = map { $_?1:0 } ( @c, @d );
$ki[$i] = [ permute( @cd, @perm2, 48 ) ];
}
@pd1 = permute( @in, @perm3, 64 );
@l = @pd1[0..31];
@r = @pd1[32..63];
for $i ( 0..15 ) {
my ( $j, $k, @b, @er, @erk, @cb, @pcb, @r2 );
@er = permute( @r, @perm4, 48 );
@erk = mxor(@er, @{ @ki[$forw?$i:(15-$i)] });
for $j ( 0..7 ) {
for $k ( 0..5 ) {
$b[$j][$k] = $erk[$j*6 + $k];
}
}
for $j ( 0..7 ) {
my ( $m, $n );
$m = ($b[$j][0]<<1) | $b[$j][5];
$n = ($b[$j][1]<<3) | ($b[$j][2]<<2) | ($b[$j][3]<<1) | $b[$j][4];
for $k ( 0..3 ) {
$b[$j][$k]=($sbox[$j][$m][$n] & (1<<(3-$k)))?1:0;
}
}
for $j ( 0..7 ) {
for $k ( 0..3 ) {
$cb[$j*4+$k]=$b[$j][$k];
}
}
@pcb = permute( @cb, @perm5, 32);
@r2 = mxor(@l,@pcb);
@l = @r[0..31];
@r = @r2[0..31];
}
@rl = ( @r, @l );
@out = permute( @rl, @perm6, 64 );
return @out;
}
# Ported from SAMBA/source/libsmb/smbdes.c:smbhash
sub smbhash{
my ( @in, @key, $forw, @outb, @out, @inb, @keyb, @key2, $i );
@in = @_[0..7];
@key = @_[8..14];
$forw = $_[$#_];
@key2 = str_to_key(@key);
for $i ( 0..63 ) {
$inb[$i] = ( $in[$i/8] & (1<<(7-($i%8)))) ? 1:0;
$keyb[$i] = ( $key2[$i/8] & (1<<(7-($i%8)))) ? 1:0;
$outb[$i] = 0;
}
@outb = dohash(@inb,@keyb,$forw);
for $i ( 0..7 ) {
$out[$i] = 0;
}
for $i ( 0..64 ) {
if ( $outb[$i] ) {
$out[$i/8] |= (1<<(7-($i%8)));
}
}
return @out;
}
# Ported from SAMBA/source/libsmb/smbdes.c:E_P16
sub E_P16 {
my ( @p16, @p14, @sp8 );
@p16 = map { 0 } (1..16);
@p14 = unpack("C*",$_[0]);
@sp8 = ( 0x4b, 0x47, 0x53, 0x21, 0x40, 0x23, 0x24, 0x25 );
@p16 = (smbhash(@sp8,@p14[0..6],1),smbhash(@sp8,@p14[7..13],1));
return @p16;
}
if ($ARGV[0] eq 'nt') { print nthash($ARGV[1])."\n"; }
if ($ARGV[0] eq 'lm') { print lmhash($ARGV[1])."\n"; }

View File

@ -1,7 +0,0 @@
<?php
for($i=0;$i<=255;$i++)
$fpdf_charwidths['courier'][chr($i)]=600;
$fpdf_charwidths['courierB']=$fpdf_charwidths['courier'];
$fpdf_charwidths['courierI']=$fpdf_charwidths['courier'];
$fpdf_charwidths['courierBI']=$fpdf_charwidths['courier'];
?>

View File

@ -1,15 +0,0 @@
<?php
$fpdf_charwidths['helvetica']=array(
chr(0)=>278,chr(1)=>278,chr(2)=>278,chr(3)=>278,chr(4)=>278,chr(5)=>278,chr(6)=>278,chr(7)=>278,chr(8)=>278,chr(9)=>278,chr(10)=>278,chr(11)=>278,chr(12)=>278,chr(13)=>278,chr(14)=>278,chr(15)=>278,chr(16)=>278,chr(17)=>278,chr(18)=>278,chr(19)=>278,chr(20)=>278,chr(21)=>278,
chr(22)=>278,chr(23)=>278,chr(24)=>278,chr(25)=>278,chr(26)=>278,chr(27)=>278,chr(28)=>278,chr(29)=>278,chr(30)=>278,chr(31)=>278,' '=>278,'!'=>278,'"'=>355,'#'=>556,'$'=>556,'%'=>889,'&'=>667,'\''=>191,'('=>333,')'=>333,'*'=>389,'+'=>584,
','=>278,'-'=>333,'.'=>278,'/'=>278,'0'=>556,'1'=>556,'2'=>556,'3'=>556,'4'=>556,'5'=>556,'6'=>556,'7'=>556,'8'=>556,'9'=>556,':'=>278,';'=>278,'<'=>584,'='=>584,'>'=>584,'?'=>556,'@'=>1015,'A'=>667,
'B'=>667,'C'=>722,'D'=>722,'E'=>667,'F'=>611,'G'=>778,'H'=>722,'I'=>278,'J'=>500,'K'=>667,'L'=>556,'M'=>833,'N'=>722,'O'=>778,'P'=>667,'Q'=>778,'R'=>722,'S'=>667,'T'=>611,'U'=>722,'V'=>667,'W'=>944,
'X'=>667,'Y'=>667,'Z'=>611,'['=>278,'\\'=>278,']'=>278,'^'=>469,'_'=>556,'`'=>333,'a'=>556,'b'=>556,'c'=>500,'d'=>556,'e'=>556,'f'=>278,'g'=>556,'h'=>556,'i'=>222,'j'=>222,'k'=>500,'l'=>222,'m'=>833,
'n'=>556,'o'=>556,'p'=>556,'q'=>556,'r'=>333,'s'=>500,'t'=>278,'u'=>556,'v'=>500,'w'=>722,'x'=>500,'y'=>500,'z'=>500,'{'=>334,'|'=>260,'}'=>334,'~'=>584,chr(127)=>350,chr(128)=>556,chr(129)=>350,chr(130)=>222,chr(131)=>556,
chr(132)=>333,chr(133)=>1000,chr(134)=>556,chr(135)=>556,chr(136)=>333,chr(137)=>1000,chr(138)=>667,chr(139)=>333,chr(140)=>1000,chr(141)=>350,chr(142)=>611,chr(143)=>350,chr(144)=>350,chr(145)=>222,chr(146)=>222,chr(147)=>333,chr(148)=>333,chr(149)=>350,chr(150)=>556,chr(151)=>1000,chr(152)=>333,chr(153)=>1000,
chr(154)=>500,chr(155)=>333,chr(156)=>944,chr(157)=>350,chr(158)=>500,chr(159)=>667,chr(160)=>278,chr(161)=>333,chr(162)=>556,chr(163)=>556,chr(164)=>556,chr(165)=>556,chr(166)=>260,chr(167)=>556,chr(168)=>333,chr(169)=>737,chr(170)=>370,chr(171)=>556,chr(172)=>584,chr(173)=>333,chr(174)=>737,chr(175)=>333,
chr(176)=>400,chr(177)=>584,chr(178)=>333,chr(179)=>333,chr(180)=>333,chr(181)=>556,chr(182)=>537,chr(183)=>278,chr(184)=>333,chr(185)=>333,chr(186)=>365,chr(187)=>556,chr(188)=>834,chr(189)=>834,chr(190)=>834,chr(191)=>611,chr(192)=>667,chr(193)=>667,chr(194)=>667,chr(195)=>667,chr(196)=>667,chr(197)=>667,
chr(198)=>1000,chr(199)=>722,chr(200)=>667,chr(201)=>667,chr(202)=>667,chr(203)=>667,chr(204)=>278,chr(205)=>278,chr(206)=>278,chr(207)=>278,chr(208)=>722,chr(209)=>722,chr(210)=>778,chr(211)=>778,chr(212)=>778,chr(213)=>778,chr(214)=>778,chr(215)=>584,chr(216)=>778,chr(217)=>722,chr(218)=>722,chr(219)=>722,
chr(220)=>722,chr(221)=>667,chr(222)=>667,chr(223)=>611,chr(224)=>556,chr(225)=>556,chr(226)=>556,chr(227)=>556,chr(228)=>556,chr(229)=>556,chr(230)=>889,chr(231)=>500,chr(232)=>556,chr(233)=>556,chr(234)=>556,chr(235)=>556,chr(236)=>278,chr(237)=>278,chr(238)=>278,chr(239)=>278,chr(240)=>556,chr(241)=>556,
chr(242)=>556,chr(243)=>556,chr(244)=>556,chr(245)=>556,chr(246)=>556,chr(247)=>584,chr(248)=>611,chr(249)=>556,chr(250)=>556,chr(251)=>556,chr(252)=>556,chr(253)=>500,chr(254)=>556,chr(255)=>500);
?>

View File

@ -1,15 +0,0 @@
<?php
$fpdf_charwidths['helveticaB']=array(
chr(0)=>278,chr(1)=>278,chr(2)=>278,chr(3)=>278,chr(4)=>278,chr(5)=>278,chr(6)=>278,chr(7)=>278,chr(8)=>278,chr(9)=>278,chr(10)=>278,chr(11)=>278,chr(12)=>278,chr(13)=>278,chr(14)=>278,chr(15)=>278,chr(16)=>278,chr(17)=>278,chr(18)=>278,chr(19)=>278,chr(20)=>278,chr(21)=>278,
chr(22)=>278,chr(23)=>278,chr(24)=>278,chr(25)=>278,chr(26)=>278,chr(27)=>278,chr(28)=>278,chr(29)=>278,chr(30)=>278,chr(31)=>278,' '=>278,'!'=>333,'"'=>474,'#'=>556,'$'=>556,'%'=>889,'&'=>722,'\''=>238,'('=>333,')'=>333,'*'=>389,'+'=>584,
','=>278,'-'=>333,'.'=>278,'/'=>278,'0'=>556,'1'=>556,'2'=>556,'3'=>556,'4'=>556,'5'=>556,'6'=>556,'7'=>556,'8'=>556,'9'=>556,':'=>333,';'=>333,'<'=>584,'='=>584,'>'=>584,'?'=>611,'@'=>975,'A'=>722,
'B'=>722,'C'=>722,'D'=>722,'E'=>667,'F'=>611,'G'=>778,'H'=>722,'I'=>278,'J'=>556,'K'=>722,'L'=>611,'M'=>833,'N'=>722,'O'=>778,'P'=>667,'Q'=>778,'R'=>722,'S'=>667,'T'=>611,'U'=>722,'V'=>667,'W'=>944,
'X'=>667,'Y'=>667,'Z'=>611,'['=>333,'\\'=>278,']'=>333,'^'=>584,'_'=>556,'`'=>333,'a'=>556,'b'=>611,'c'=>556,'d'=>611,'e'=>556,'f'=>333,'g'=>611,'h'=>611,'i'=>278,'j'=>278,'k'=>556,'l'=>278,'m'=>889,
'n'=>611,'o'=>611,'p'=>611,'q'=>611,'r'=>389,'s'=>556,'t'=>333,'u'=>611,'v'=>556,'w'=>778,'x'=>556,'y'=>556,'z'=>500,'{'=>389,'|'=>280,'}'=>389,'~'=>584,chr(127)=>350,chr(128)=>556,chr(129)=>350,chr(130)=>278,chr(131)=>556,
chr(132)=>500,chr(133)=>1000,chr(134)=>556,chr(135)=>556,chr(136)=>333,chr(137)=>1000,chr(138)=>667,chr(139)=>333,chr(140)=>1000,chr(141)=>350,chr(142)=>611,chr(143)=>350,chr(144)=>350,chr(145)=>278,chr(146)=>278,chr(147)=>500,chr(148)=>500,chr(149)=>350,chr(150)=>556,chr(151)=>1000,chr(152)=>333,chr(153)=>1000,
chr(154)=>556,chr(155)=>333,chr(156)=>944,chr(157)=>350,chr(158)=>500,chr(159)=>667,chr(160)=>278,chr(161)=>333,chr(162)=>556,chr(163)=>556,chr(164)=>556,chr(165)=>556,chr(166)=>280,chr(167)=>556,chr(168)=>333,chr(169)=>737,chr(170)=>370,chr(171)=>556,chr(172)=>584,chr(173)=>333,chr(174)=>737,chr(175)=>333,
chr(176)=>400,chr(177)=>584,chr(178)=>333,chr(179)=>333,chr(180)=>333,chr(181)=>611,chr(182)=>556,chr(183)=>278,chr(184)=>333,chr(185)=>333,chr(186)=>365,chr(187)=>556,chr(188)=>834,chr(189)=>834,chr(190)=>834,chr(191)=>611,chr(192)=>722,chr(193)=>722,chr(194)=>722,chr(195)=>722,chr(196)=>722,chr(197)=>722,
chr(198)=>1000,chr(199)=>722,chr(200)=>667,chr(201)=>667,chr(202)=>667,chr(203)=>667,chr(204)=>278,chr(205)=>278,chr(206)=>278,chr(207)=>278,chr(208)=>722,chr(209)=>722,chr(210)=>778,chr(211)=>778,chr(212)=>778,chr(213)=>778,chr(214)=>778,chr(215)=>584,chr(216)=>778,chr(217)=>722,chr(218)=>722,chr(219)=>722,
chr(220)=>722,chr(221)=>667,chr(222)=>667,chr(223)=>611,chr(224)=>556,chr(225)=>556,chr(226)=>556,chr(227)=>556,chr(228)=>556,chr(229)=>556,chr(230)=>889,chr(231)=>556,chr(232)=>556,chr(233)=>556,chr(234)=>556,chr(235)=>556,chr(236)=>278,chr(237)=>278,chr(238)=>278,chr(239)=>278,chr(240)=>611,chr(241)=>611,
chr(242)=>611,chr(243)=>611,chr(244)=>611,chr(245)=>611,chr(246)=>611,chr(247)=>584,chr(248)=>611,chr(249)=>611,chr(250)=>611,chr(251)=>611,chr(252)=>611,chr(253)=>556,chr(254)=>611,chr(255)=>556);
?>

View File

@ -1,15 +0,0 @@
<?php
$fpdf_charwidths['helveticaBI']=array(
chr(0)=>278,chr(1)=>278,chr(2)=>278,chr(3)=>278,chr(4)=>278,chr(5)=>278,chr(6)=>278,chr(7)=>278,chr(8)=>278,chr(9)=>278,chr(10)=>278,chr(11)=>278,chr(12)=>278,chr(13)=>278,chr(14)=>278,chr(15)=>278,chr(16)=>278,chr(17)=>278,chr(18)=>278,chr(19)=>278,chr(20)=>278,chr(21)=>278,
chr(22)=>278,chr(23)=>278,chr(24)=>278,chr(25)=>278,chr(26)=>278,chr(27)=>278,chr(28)=>278,chr(29)=>278,chr(30)=>278,chr(31)=>278,' '=>278,'!'=>333,'"'=>474,'#'=>556,'$'=>556,'%'=>889,'&'=>722,'\''=>238,'('=>333,')'=>333,'*'=>389,'+'=>584,
','=>278,'-'=>333,'.'=>278,'/'=>278,'0'=>556,'1'=>556,'2'=>556,'3'=>556,'4'=>556,'5'=>556,'6'=>556,'7'=>556,'8'=>556,'9'=>556,':'=>333,';'=>333,'<'=>584,'='=>584,'>'=>584,'?'=>611,'@'=>975,'A'=>722,
'B'=>722,'C'=>722,'D'=>722,'E'=>667,'F'=>611,'G'=>778,'H'=>722,'I'=>278,'J'=>556,'K'=>722,'L'=>611,'M'=>833,'N'=>722,'O'=>778,'P'=>667,'Q'=>778,'R'=>722,'S'=>667,'T'=>611,'U'=>722,'V'=>667,'W'=>944,
'X'=>667,'Y'=>667,'Z'=>611,'['=>333,'\\'=>278,']'=>333,'^'=>584,'_'=>556,'`'=>333,'a'=>556,'b'=>611,'c'=>556,'d'=>611,'e'=>556,'f'=>333,'g'=>611,'h'=>611,'i'=>278,'j'=>278,'k'=>556,'l'=>278,'m'=>889,
'n'=>611,'o'=>611,'p'=>611,'q'=>611,'r'=>389,'s'=>556,'t'=>333,'u'=>611,'v'=>556,'w'=>778,'x'=>556,'y'=>556,'z'=>500,'{'=>389,'|'=>280,'}'=>389,'~'=>584,chr(127)=>350,chr(128)=>556,chr(129)=>350,chr(130)=>278,chr(131)=>556,
chr(132)=>500,chr(133)=>1000,chr(134)=>556,chr(135)=>556,chr(136)=>333,chr(137)=>1000,chr(138)=>667,chr(139)=>333,chr(140)=>1000,chr(141)=>350,chr(142)=>611,chr(143)=>350,chr(144)=>350,chr(145)=>278,chr(146)=>278,chr(147)=>500,chr(148)=>500,chr(149)=>350,chr(150)=>556,chr(151)=>1000,chr(152)=>333,chr(153)=>1000,
chr(154)=>556,chr(155)=>333,chr(156)=>944,chr(157)=>350,chr(158)=>500,chr(159)=>667,chr(160)=>278,chr(161)=>333,chr(162)=>556,chr(163)=>556,chr(164)=>556,chr(165)=>556,chr(166)=>280,chr(167)=>556,chr(168)=>333,chr(169)=>737,chr(170)=>370,chr(171)=>556,chr(172)=>584,chr(173)=>333,chr(174)=>737,chr(175)=>333,
chr(176)=>400,chr(177)=>584,chr(178)=>333,chr(179)=>333,chr(180)=>333,chr(181)=>611,chr(182)=>556,chr(183)=>278,chr(184)=>333,chr(185)=>333,chr(186)=>365,chr(187)=>556,chr(188)=>834,chr(189)=>834,chr(190)=>834,chr(191)=>611,chr(192)=>722,chr(193)=>722,chr(194)=>722,chr(195)=>722,chr(196)=>722,chr(197)=>722,
chr(198)=>1000,chr(199)=>722,chr(200)=>667,chr(201)=>667,chr(202)=>667,chr(203)=>667,chr(204)=>278,chr(205)=>278,chr(206)=>278,chr(207)=>278,chr(208)=>722,chr(209)=>722,chr(210)=>778,chr(211)=>778,chr(212)=>778,chr(213)=>778,chr(214)=>778,chr(215)=>584,chr(216)=>778,chr(217)=>722,chr(218)=>722,chr(219)=>722,
chr(220)=>722,chr(221)=>667,chr(222)=>667,chr(223)=>611,chr(224)=>556,chr(225)=>556,chr(226)=>556,chr(227)=>556,chr(228)=>556,chr(229)=>556,chr(230)=>889,chr(231)=>556,chr(232)=>556,chr(233)=>556,chr(234)=>556,chr(235)=>556,chr(236)=>278,chr(237)=>278,chr(238)=>278,chr(239)=>278,chr(240)=>611,chr(241)=>611,
chr(242)=>611,chr(243)=>611,chr(244)=>611,chr(245)=>611,chr(246)=>611,chr(247)=>584,chr(248)=>611,chr(249)=>611,chr(250)=>611,chr(251)=>611,chr(252)=>611,chr(253)=>556,chr(254)=>611,chr(255)=>556);
?>

View File

@ -1,15 +0,0 @@
<?php
$fpdf_charwidths['helveticaI']=array(
chr(0)=>278,chr(1)=>278,chr(2)=>278,chr(3)=>278,chr(4)=>278,chr(5)=>278,chr(6)=>278,chr(7)=>278,chr(8)=>278,chr(9)=>278,chr(10)=>278,chr(11)=>278,chr(12)=>278,chr(13)=>278,chr(14)=>278,chr(15)=>278,chr(16)=>278,chr(17)=>278,chr(18)=>278,chr(19)=>278,chr(20)=>278,chr(21)=>278,
chr(22)=>278,chr(23)=>278,chr(24)=>278,chr(25)=>278,chr(26)=>278,chr(27)=>278,chr(28)=>278,chr(29)=>278,chr(30)=>278,chr(31)=>278,' '=>278,'!'=>278,'"'=>355,'#'=>556,'$'=>556,'%'=>889,'&'=>667,'\''=>191,'('=>333,')'=>333,'*'=>389,'+'=>584,
','=>278,'-'=>333,'.'=>278,'/'=>278,'0'=>556,'1'=>556,'2'=>556,'3'=>556,'4'=>556,'5'=>556,'6'=>556,'7'=>556,'8'=>556,'9'=>556,':'=>278,';'=>278,'<'=>584,'='=>584,'>'=>584,'?'=>556,'@'=>1015,'A'=>667,
'B'=>667,'C'=>722,'D'=>722,'E'=>667,'F'=>611,'G'=>778,'H'=>722,'I'=>278,'J'=>500,'K'=>667,'L'=>556,'M'=>833,'N'=>722,'O'=>778,'P'=>667,'Q'=>778,'R'=>722,'S'=>667,'T'=>611,'U'=>722,'V'=>667,'W'=>944,
'X'=>667,'Y'=>667,'Z'=>611,'['=>278,'\\'=>278,']'=>278,'^'=>469,'_'=>556,'`'=>333,'a'=>556,'b'=>556,'c'=>500,'d'=>556,'e'=>556,'f'=>278,'g'=>556,'h'=>556,'i'=>222,'j'=>222,'k'=>500,'l'=>222,'m'=>833,
'n'=>556,'o'=>556,'p'=>556,'q'=>556,'r'=>333,'s'=>500,'t'=>278,'u'=>556,'v'=>500,'w'=>722,'x'=>500,'y'=>500,'z'=>500,'{'=>334,'|'=>260,'}'=>334,'~'=>584,chr(127)=>350,chr(128)=>556,chr(129)=>350,chr(130)=>222,chr(131)=>556,
chr(132)=>333,chr(133)=>1000,chr(134)=>556,chr(135)=>556,chr(136)=>333,chr(137)=>1000,chr(138)=>667,chr(139)=>333,chr(140)=>1000,chr(141)=>350,chr(142)=>611,chr(143)=>350,chr(144)=>350,chr(145)=>222,chr(146)=>222,chr(147)=>333,chr(148)=>333,chr(149)=>350,chr(150)=>556,chr(151)=>1000,chr(152)=>333,chr(153)=>1000,
chr(154)=>500,chr(155)=>333,chr(156)=>944,chr(157)=>350,chr(158)=>500,chr(159)=>667,chr(160)=>278,chr(161)=>333,chr(162)=>556,chr(163)=>556,chr(164)=>556,chr(165)=>556,chr(166)=>260,chr(167)=>556,chr(168)=>333,chr(169)=>737,chr(170)=>370,chr(171)=>556,chr(172)=>584,chr(173)=>333,chr(174)=>737,chr(175)=>333,
chr(176)=>400,chr(177)=>584,chr(178)=>333,chr(179)=>333,chr(180)=>333,chr(181)=>556,chr(182)=>537,chr(183)=>278,chr(184)=>333,chr(185)=>333,chr(186)=>365,chr(187)=>556,chr(188)=>834,chr(189)=>834,chr(190)=>834,chr(191)=>611,chr(192)=>667,chr(193)=>667,chr(194)=>667,chr(195)=>667,chr(196)=>667,chr(197)=>667,
chr(198)=>1000,chr(199)=>722,chr(200)=>667,chr(201)=>667,chr(202)=>667,chr(203)=>667,chr(204)=>278,chr(205)=>278,chr(206)=>278,chr(207)=>278,chr(208)=>722,chr(209)=>722,chr(210)=>778,chr(211)=>778,chr(212)=>778,chr(213)=>778,chr(214)=>778,chr(215)=>584,chr(216)=>778,chr(217)=>722,chr(218)=>722,chr(219)=>722,
chr(220)=>722,chr(221)=>667,chr(222)=>667,chr(223)=>611,chr(224)=>556,chr(225)=>556,chr(226)=>556,chr(227)=>556,chr(228)=>556,chr(229)=>556,chr(230)=>889,chr(231)=>500,chr(232)=>556,chr(233)=>556,chr(234)=>556,chr(235)=>556,chr(236)=>278,chr(237)=>278,chr(238)=>278,chr(239)=>278,chr(240)=>556,chr(241)=>556,
chr(242)=>556,chr(243)=>556,chr(244)=>556,chr(245)=>556,chr(246)=>556,chr(247)=>584,chr(248)=>611,chr(249)=>556,chr(250)=>556,chr(251)=>556,chr(252)=>556,chr(253)=>500,chr(254)=>556,chr(255)=>500);
?>

View File

@ -1,15 +0,0 @@
<?php
$fpdf_charwidths['symbol']=array(
chr(0)=>250,chr(1)=>250,chr(2)=>250,chr(3)=>250,chr(4)=>250,chr(5)=>250,chr(6)=>250,chr(7)=>250,chr(8)=>250,chr(9)=>250,chr(10)=>250,chr(11)=>250,chr(12)=>250,chr(13)=>250,chr(14)=>250,chr(15)=>250,chr(16)=>250,chr(17)=>250,chr(18)=>250,chr(19)=>250,chr(20)=>250,chr(21)=>250,
chr(22)=>250,chr(23)=>250,chr(24)=>250,chr(25)=>250,chr(26)=>250,chr(27)=>250,chr(28)=>250,chr(29)=>250,chr(30)=>250,chr(31)=>250,' '=>250,'!'=>333,'"'=>713,'#'=>500,'$'=>549,'%'=>833,'&'=>778,'\''=>439,'('=>333,')'=>333,'*'=>500,'+'=>549,
','=>250,'-'=>549,'.'=>250,'/'=>278,'0'=>500,'1'=>500,'2'=>500,'3'=>500,'4'=>500,'5'=>500,'6'=>500,'7'=>500,'8'=>500,'9'=>500,':'=>278,';'=>278,'<'=>549,'='=>549,'>'=>549,'?'=>444,'@'=>549,'A'=>722,
'B'=>667,'C'=>722,'D'=>612,'E'=>611,'F'=>763,'G'=>603,'H'=>722,'I'=>333,'J'=>631,'K'=>722,'L'=>686,'M'=>889,'N'=>722,'O'=>722,'P'=>768,'Q'=>741,'R'=>556,'S'=>592,'T'=>611,'U'=>690,'V'=>439,'W'=>768,
'X'=>645,'Y'=>795,'Z'=>611,'['=>333,'\\'=>863,']'=>333,'^'=>658,'_'=>500,'`'=>500,'a'=>631,'b'=>549,'c'=>549,'d'=>494,'e'=>439,'f'=>521,'g'=>411,'h'=>603,'i'=>329,'j'=>603,'k'=>549,'l'=>549,'m'=>576,
'n'=>521,'o'=>549,'p'=>549,'q'=>521,'r'=>549,'s'=>603,'t'=>439,'u'=>576,'v'=>713,'w'=>686,'x'=>493,'y'=>686,'z'=>494,'{'=>480,'|'=>200,'}'=>480,'~'=>549,chr(127)=>0,chr(128)=>0,chr(129)=>0,chr(130)=>0,chr(131)=>0,
chr(132)=>0,chr(133)=>0,chr(134)=>0,chr(135)=>0,chr(136)=>0,chr(137)=>0,chr(138)=>0,chr(139)=>0,chr(140)=>0,chr(141)=>0,chr(142)=>0,chr(143)=>0,chr(144)=>0,chr(145)=>0,chr(146)=>0,chr(147)=>0,chr(148)=>0,chr(149)=>0,chr(150)=>0,chr(151)=>0,chr(152)=>0,chr(153)=>0,
chr(154)=>0,chr(155)=>0,chr(156)=>0,chr(157)=>0,chr(158)=>0,chr(159)=>0,chr(160)=>750,chr(161)=>620,chr(162)=>247,chr(163)=>549,chr(164)=>167,chr(165)=>713,chr(166)=>500,chr(167)=>753,chr(168)=>753,chr(169)=>753,chr(170)=>753,chr(171)=>1042,chr(172)=>987,chr(173)=>603,chr(174)=>987,chr(175)=>603,
chr(176)=>400,chr(177)=>549,chr(178)=>411,chr(179)=>549,chr(180)=>549,chr(181)=>713,chr(182)=>494,chr(183)=>460,chr(184)=>549,chr(185)=>549,chr(186)=>549,chr(187)=>549,chr(188)=>1000,chr(189)=>603,chr(190)=>1000,chr(191)=>658,chr(192)=>823,chr(193)=>686,chr(194)=>795,chr(195)=>987,chr(196)=>768,chr(197)=>768,
chr(198)=>823,chr(199)=>768,chr(200)=>768,chr(201)=>713,chr(202)=>713,chr(203)=>713,chr(204)=>713,chr(205)=>713,chr(206)=>713,chr(207)=>713,chr(208)=>768,chr(209)=>713,chr(210)=>790,chr(211)=>790,chr(212)=>890,chr(213)=>823,chr(214)=>549,chr(215)=>250,chr(216)=>713,chr(217)=>603,chr(218)=>603,chr(219)=>1042,
chr(220)=>987,chr(221)=>603,chr(222)=>987,chr(223)=>603,chr(224)=>494,chr(225)=>329,chr(226)=>790,chr(227)=>790,chr(228)=>786,chr(229)=>713,chr(230)=>384,chr(231)=>384,chr(232)=>384,chr(233)=>384,chr(234)=>384,chr(235)=>384,chr(236)=>494,chr(237)=>494,chr(238)=>494,chr(239)=>494,chr(240)=>0,chr(241)=>329,
chr(242)=>274,chr(243)=>686,chr(244)=>686,chr(245)=>686,chr(246)=>384,chr(247)=>384,chr(248)=>384,chr(249)=>384,chr(250)=>384,chr(251)=>384,chr(252)=>494,chr(253)=>494,chr(254)=>494,chr(255)=>0);
?>

View File

@ -1,15 +0,0 @@
<?php
$fpdf_charwidths['times']=array(
chr(0)=>250,chr(1)=>250,chr(2)=>250,chr(3)=>250,chr(4)=>250,chr(5)=>250,chr(6)=>250,chr(7)=>250,chr(8)=>250,chr(9)=>250,chr(10)=>250,chr(11)=>250,chr(12)=>250,chr(13)=>250,chr(14)=>250,chr(15)=>250,chr(16)=>250,chr(17)=>250,chr(18)=>250,chr(19)=>250,chr(20)=>250,chr(21)=>250,
chr(22)=>250,chr(23)=>250,chr(24)=>250,chr(25)=>250,chr(26)=>250,chr(27)=>250,chr(28)=>250,chr(29)=>250,chr(30)=>250,chr(31)=>250,' '=>250,'!'=>333,'"'=>408,'#'=>500,'$'=>500,'%'=>833,'&'=>778,'\''=>180,'('=>333,')'=>333,'*'=>500,'+'=>564,
','=>250,'-'=>333,'.'=>250,'/'=>278,'0'=>500,'1'=>500,'2'=>500,'3'=>500,'4'=>500,'5'=>500,'6'=>500,'7'=>500,'8'=>500,'9'=>500,':'=>278,';'=>278,'<'=>564,'='=>564,'>'=>564,'?'=>444,'@'=>921,'A'=>722,
'B'=>667,'C'=>667,'D'=>722,'E'=>611,'F'=>556,'G'=>722,'H'=>722,'I'=>333,'J'=>389,'K'=>722,'L'=>611,'M'=>889,'N'=>722,'O'=>722,'P'=>556,'Q'=>722,'R'=>667,'S'=>556,'T'=>611,'U'=>722,'V'=>722,'W'=>944,
'X'=>722,'Y'=>722,'Z'=>611,'['=>333,'\\'=>278,']'=>333,'^'=>469,'_'=>500,'`'=>333,'a'=>444,'b'=>500,'c'=>444,'d'=>500,'e'=>444,'f'=>333,'g'=>500,'h'=>500,'i'=>278,'j'=>278,'k'=>500,'l'=>278,'m'=>778,
'n'=>500,'o'=>500,'p'=>500,'q'=>500,'r'=>333,'s'=>389,'t'=>278,'u'=>500,'v'=>500,'w'=>722,'x'=>500,'y'=>500,'z'=>444,'{'=>480,'|'=>200,'}'=>480,'~'=>541,chr(127)=>350,chr(128)=>500,chr(129)=>350,chr(130)=>333,chr(131)=>500,
chr(132)=>444,chr(133)=>1000,chr(134)=>500,chr(135)=>500,chr(136)=>333,chr(137)=>1000,chr(138)=>556,chr(139)=>333,chr(140)=>889,chr(141)=>350,chr(142)=>611,chr(143)=>350,chr(144)=>350,chr(145)=>333,chr(146)=>333,chr(147)=>444,chr(148)=>444,chr(149)=>350,chr(150)=>500,chr(151)=>1000,chr(152)=>333,chr(153)=>980,
chr(154)=>389,chr(155)=>333,chr(156)=>722,chr(157)=>350,chr(158)=>444,chr(159)=>722,chr(160)=>250,chr(161)=>333,chr(162)=>500,chr(163)=>500,chr(164)=>500,chr(165)=>500,chr(166)=>200,chr(167)=>500,chr(168)=>333,chr(169)=>760,chr(170)=>276,chr(171)=>500,chr(172)=>564,chr(173)=>333,chr(174)=>760,chr(175)=>333,
chr(176)=>400,chr(177)=>564,chr(178)=>300,chr(179)=>300,chr(180)=>333,chr(181)=>500,chr(182)=>453,chr(183)=>250,chr(184)=>333,chr(185)=>300,chr(186)=>310,chr(187)=>500,chr(188)=>750,chr(189)=>750,chr(190)=>750,chr(191)=>444,chr(192)=>722,chr(193)=>722,chr(194)=>722,chr(195)=>722,chr(196)=>722,chr(197)=>722,
chr(198)=>889,chr(199)=>667,chr(200)=>611,chr(201)=>611,chr(202)=>611,chr(203)=>611,chr(204)=>333,chr(205)=>333,chr(206)=>333,chr(207)=>333,chr(208)=>722,chr(209)=>722,chr(210)=>722,chr(211)=>722,chr(212)=>722,chr(213)=>722,chr(214)=>722,chr(215)=>564,chr(216)=>722,chr(217)=>722,chr(218)=>722,chr(219)=>722,
chr(220)=>722,chr(221)=>722,chr(222)=>556,chr(223)=>500,chr(224)=>444,chr(225)=>444,chr(226)=>444,chr(227)=>444,chr(228)=>444,chr(229)=>444,chr(230)=>667,chr(231)=>444,chr(232)=>444,chr(233)=>444,chr(234)=>444,chr(235)=>444,chr(236)=>278,chr(237)=>278,chr(238)=>278,chr(239)=>278,chr(240)=>500,chr(241)=>500,
chr(242)=>500,chr(243)=>500,chr(244)=>500,chr(245)=>500,chr(246)=>500,chr(247)=>564,chr(248)=>500,chr(249)=>500,chr(250)=>500,chr(251)=>500,chr(252)=>500,chr(253)=>500,chr(254)=>500,chr(255)=>500);
?>

View File

@ -1,15 +0,0 @@
<?php
$fpdf_charwidths['timesB']=array(
chr(0)=>250,chr(1)=>250,chr(2)=>250,chr(3)=>250,chr(4)=>250,chr(5)=>250,chr(6)=>250,chr(7)=>250,chr(8)=>250,chr(9)=>250,chr(10)=>250,chr(11)=>250,chr(12)=>250,chr(13)=>250,chr(14)=>250,chr(15)=>250,chr(16)=>250,chr(17)=>250,chr(18)=>250,chr(19)=>250,chr(20)=>250,chr(21)=>250,
chr(22)=>250,chr(23)=>250,chr(24)=>250,chr(25)=>250,chr(26)=>250,chr(27)=>250,chr(28)=>250,chr(29)=>250,chr(30)=>250,chr(31)=>250,' '=>250,'!'=>333,'"'=>555,'#'=>500,'$'=>500,'%'=>1000,'&'=>833,'\''=>278,'('=>333,')'=>333,'*'=>500,'+'=>570,
','=>250,'-'=>333,'.'=>250,'/'=>278,'0'=>500,'1'=>500,'2'=>500,'3'=>500,'4'=>500,'5'=>500,'6'=>500,'7'=>500,'8'=>500,'9'=>500,':'=>333,';'=>333,'<'=>570,'='=>570,'>'=>570,'?'=>500,'@'=>930,'A'=>722,
'B'=>667,'C'=>722,'D'=>722,'E'=>667,'F'=>611,'G'=>778,'H'=>778,'I'=>389,'J'=>500,'K'=>778,'L'=>667,'M'=>944,'N'=>722,'O'=>778,'P'=>611,'Q'=>778,'R'=>722,'S'=>556,'T'=>667,'U'=>722,'V'=>722,'W'=>1000,
'X'=>722,'Y'=>722,'Z'=>667,'['=>333,'\\'=>278,']'=>333,'^'=>581,'_'=>500,'`'=>333,'a'=>500,'b'=>556,'c'=>444,'d'=>556,'e'=>444,'f'=>333,'g'=>500,'h'=>556,'i'=>278,'j'=>333,'k'=>556,'l'=>278,'m'=>833,
'n'=>556,'o'=>500,'p'=>556,'q'=>556,'r'=>444,'s'=>389,'t'=>333,'u'=>556,'v'=>500,'w'=>722,'x'=>500,'y'=>500,'z'=>444,'{'=>394,'|'=>220,'}'=>394,'~'=>520,chr(127)=>350,chr(128)=>500,chr(129)=>350,chr(130)=>333,chr(131)=>500,
chr(132)=>500,chr(133)=>1000,chr(134)=>500,chr(135)=>500,chr(136)=>333,chr(137)=>1000,chr(138)=>556,chr(139)=>333,chr(140)=>1000,chr(141)=>350,chr(142)=>667,chr(143)=>350,chr(144)=>350,chr(145)=>333,chr(146)=>333,chr(147)=>500,chr(148)=>500,chr(149)=>350,chr(150)=>500,chr(151)=>1000,chr(152)=>333,chr(153)=>1000,
chr(154)=>389,chr(155)=>333,chr(156)=>722,chr(157)=>350,chr(158)=>444,chr(159)=>722,chr(160)=>250,chr(161)=>333,chr(162)=>500,chr(163)=>500,chr(164)=>500,chr(165)=>500,chr(166)=>220,chr(167)=>500,chr(168)=>333,chr(169)=>747,chr(170)=>300,chr(171)=>500,chr(172)=>570,chr(173)=>333,chr(174)=>747,chr(175)=>333,
chr(176)=>400,chr(177)=>570,chr(178)=>300,chr(179)=>300,chr(180)=>333,chr(181)=>556,chr(182)=>540,chr(183)=>250,chr(184)=>333,chr(185)=>300,chr(186)=>330,chr(187)=>500,chr(188)=>750,chr(189)=>750,chr(190)=>750,chr(191)=>500,chr(192)=>722,chr(193)=>722,chr(194)=>722,chr(195)=>722,chr(196)=>722,chr(197)=>722,
chr(198)=>1000,chr(199)=>722,chr(200)=>667,chr(201)=>667,chr(202)=>667,chr(203)=>667,chr(204)=>389,chr(205)=>389,chr(206)=>389,chr(207)=>389,chr(208)=>722,chr(209)=>722,chr(210)=>778,chr(211)=>778,chr(212)=>778,chr(213)=>778,chr(214)=>778,chr(215)=>570,chr(216)=>778,chr(217)=>722,chr(218)=>722,chr(219)=>722,
chr(220)=>722,chr(221)=>722,chr(222)=>611,chr(223)=>556,chr(224)=>500,chr(225)=>500,chr(226)=>500,chr(227)=>500,chr(228)=>500,chr(229)=>500,chr(230)=>722,chr(231)=>444,chr(232)=>444,chr(233)=>444,chr(234)=>444,chr(235)=>444,chr(236)=>278,chr(237)=>278,chr(238)=>278,chr(239)=>278,chr(240)=>500,chr(241)=>556,
chr(242)=>500,chr(243)=>500,chr(244)=>500,chr(245)=>500,chr(246)=>500,chr(247)=>570,chr(248)=>500,chr(249)=>556,chr(250)=>556,chr(251)=>556,chr(252)=>556,chr(253)=>500,chr(254)=>556,chr(255)=>500);
?>

View File

@ -1,15 +0,0 @@
<?php
$fpdf_charwidths['timesBI']=array(
chr(0)=>250,chr(1)=>250,chr(2)=>250,chr(3)=>250,chr(4)=>250,chr(5)=>250,chr(6)=>250,chr(7)=>250,chr(8)=>250,chr(9)=>250,chr(10)=>250,chr(11)=>250,chr(12)=>250,chr(13)=>250,chr(14)=>250,chr(15)=>250,chr(16)=>250,chr(17)=>250,chr(18)=>250,chr(19)=>250,chr(20)=>250,chr(21)=>250,
chr(22)=>250,chr(23)=>250,chr(24)=>250,chr(25)=>250,chr(26)=>250,chr(27)=>250,chr(28)=>250,chr(29)=>250,chr(30)=>250,chr(31)=>250,' '=>250,'!'=>389,'"'=>555,'#'=>500,'$'=>500,'%'=>833,'&'=>778,'\''=>278,'('=>333,')'=>333,'*'=>500,'+'=>570,
','=>250,'-'=>333,'.'=>250,'/'=>278,'0'=>500,'1'=>500,'2'=>500,'3'=>500,'4'=>500,'5'=>500,'6'=>500,'7'=>500,'8'=>500,'9'=>500,':'=>333,';'=>333,'<'=>570,'='=>570,'>'=>570,'?'=>500,'@'=>832,'A'=>667,
'B'=>667,'C'=>667,'D'=>722,'E'=>667,'F'=>667,'G'=>722,'H'=>778,'I'=>389,'J'=>500,'K'=>667,'L'=>611,'M'=>889,'N'=>722,'O'=>722,'P'=>611,'Q'=>722,'R'=>667,'S'=>556,'T'=>611,'U'=>722,'V'=>667,'W'=>889,
'X'=>667,'Y'=>611,'Z'=>611,'['=>333,'\\'=>278,']'=>333,'^'=>570,'_'=>500,'`'=>333,'a'=>500,'b'=>500,'c'=>444,'d'=>500,'e'=>444,'f'=>333,'g'=>500,'h'=>556,'i'=>278,'j'=>278,'k'=>500,'l'=>278,'m'=>778,
'n'=>556,'o'=>500,'p'=>500,'q'=>500,'r'=>389,'s'=>389,'t'=>278,'u'=>556,'v'=>444,'w'=>667,'x'=>500,'y'=>444,'z'=>389,'{'=>348,'|'=>220,'}'=>348,'~'=>570,chr(127)=>350,chr(128)=>500,chr(129)=>350,chr(130)=>333,chr(131)=>500,
chr(132)=>500,chr(133)=>1000,chr(134)=>500,chr(135)=>500,chr(136)=>333,chr(137)=>1000,chr(138)=>556,chr(139)=>333,chr(140)=>944,chr(141)=>350,chr(142)=>611,chr(143)=>350,chr(144)=>350,chr(145)=>333,chr(146)=>333,chr(147)=>500,chr(148)=>500,chr(149)=>350,chr(150)=>500,chr(151)=>1000,chr(152)=>333,chr(153)=>1000,
chr(154)=>389,chr(155)=>333,chr(156)=>722,chr(157)=>350,chr(158)=>389,chr(159)=>611,chr(160)=>250,chr(161)=>389,chr(162)=>500,chr(163)=>500,chr(164)=>500,chr(165)=>500,chr(166)=>220,chr(167)=>500,chr(168)=>333,chr(169)=>747,chr(170)=>266,chr(171)=>500,chr(172)=>606,chr(173)=>333,chr(174)=>747,chr(175)=>333,
chr(176)=>400,chr(177)=>570,chr(178)=>300,chr(179)=>300,chr(180)=>333,chr(181)=>576,chr(182)=>500,chr(183)=>250,chr(184)=>333,chr(185)=>300,chr(186)=>300,chr(187)=>500,chr(188)=>750,chr(189)=>750,chr(190)=>750,chr(191)=>500,chr(192)=>667,chr(193)=>667,chr(194)=>667,chr(195)=>667,chr(196)=>667,chr(197)=>667,
chr(198)=>944,chr(199)=>667,chr(200)=>667,chr(201)=>667,chr(202)=>667,chr(203)=>667,chr(204)=>389,chr(205)=>389,chr(206)=>389,chr(207)=>389,chr(208)=>722,chr(209)=>722,chr(210)=>722,chr(211)=>722,chr(212)=>722,chr(213)=>722,chr(214)=>722,chr(215)=>570,chr(216)=>722,chr(217)=>722,chr(218)=>722,chr(219)=>722,
chr(220)=>722,chr(221)=>611,chr(222)=>611,chr(223)=>500,chr(224)=>500,chr(225)=>500,chr(226)=>500,chr(227)=>500,chr(228)=>500,chr(229)=>500,chr(230)=>722,chr(231)=>444,chr(232)=>444,chr(233)=>444,chr(234)=>444,chr(235)=>444,chr(236)=>278,chr(237)=>278,chr(238)=>278,chr(239)=>278,chr(240)=>500,chr(241)=>556,
chr(242)=>500,chr(243)=>500,chr(244)=>500,chr(245)=>500,chr(246)=>500,chr(247)=>570,chr(248)=>500,chr(249)=>556,chr(250)=>556,chr(251)=>556,chr(252)=>556,chr(253)=>444,chr(254)=>500,chr(255)=>444);
?>

View File

@ -1,15 +0,0 @@
<?php
$fpdf_charwidths['timesI']=array(
chr(0)=>250,chr(1)=>250,chr(2)=>250,chr(3)=>250,chr(4)=>250,chr(5)=>250,chr(6)=>250,chr(7)=>250,chr(8)=>250,chr(9)=>250,chr(10)=>250,chr(11)=>250,chr(12)=>250,chr(13)=>250,chr(14)=>250,chr(15)=>250,chr(16)=>250,chr(17)=>250,chr(18)=>250,chr(19)=>250,chr(20)=>250,chr(21)=>250,
chr(22)=>250,chr(23)=>250,chr(24)=>250,chr(25)=>250,chr(26)=>250,chr(27)=>250,chr(28)=>250,chr(29)=>250,chr(30)=>250,chr(31)=>250,' '=>250,'!'=>333,'"'=>420,'#'=>500,'$'=>500,'%'=>833,'&'=>778,'\''=>214,'('=>333,')'=>333,'*'=>500,'+'=>675,
','=>250,'-'=>333,'.'=>250,'/'=>278,'0'=>500,'1'=>500,'2'=>500,'3'=>500,'4'=>500,'5'=>500,'6'=>500,'7'=>500,'8'=>500,'9'=>500,':'=>333,';'=>333,'<'=>675,'='=>675,'>'=>675,'?'=>500,'@'=>920,'A'=>611,
'B'=>611,'C'=>667,'D'=>722,'E'=>611,'F'=>611,'G'=>722,'H'=>722,'I'=>333,'J'=>444,'K'=>667,'L'=>556,'M'=>833,'N'=>667,'O'=>722,'P'=>611,'Q'=>722,'R'=>611,'S'=>500,'T'=>556,'U'=>722,'V'=>611,'W'=>833,
'X'=>611,'Y'=>556,'Z'=>556,'['=>389,'\\'=>278,']'=>389,'^'=>422,'_'=>500,'`'=>333,'a'=>500,'b'=>500,'c'=>444,'d'=>500,'e'=>444,'f'=>278,'g'=>500,'h'=>500,'i'=>278,'j'=>278,'k'=>444,'l'=>278,'m'=>722,
'n'=>500,'o'=>500,'p'=>500,'q'=>500,'r'=>389,'s'=>389,'t'=>278,'u'=>500,'v'=>444,'w'=>667,'x'=>444,'y'=>444,'z'=>389,'{'=>400,'|'=>275,'}'=>400,'~'=>541,chr(127)=>350,chr(128)=>500,chr(129)=>350,chr(130)=>333,chr(131)=>500,
chr(132)=>556,chr(133)=>889,chr(134)=>500,chr(135)=>500,chr(136)=>333,chr(137)=>1000,chr(138)=>500,chr(139)=>333,chr(140)=>944,chr(141)=>350,chr(142)=>556,chr(143)=>350,chr(144)=>350,chr(145)=>333,chr(146)=>333,chr(147)=>556,chr(148)=>556,chr(149)=>350,chr(150)=>500,chr(151)=>889,chr(152)=>333,chr(153)=>980,
chr(154)=>389,chr(155)=>333,chr(156)=>667,chr(157)=>350,chr(158)=>389,chr(159)=>556,chr(160)=>250,chr(161)=>389,chr(162)=>500,chr(163)=>500,chr(164)=>500,chr(165)=>500,chr(166)=>275,chr(167)=>500,chr(168)=>333,chr(169)=>760,chr(170)=>276,chr(171)=>500,chr(172)=>675,chr(173)=>333,chr(174)=>760,chr(175)=>333,
chr(176)=>400,chr(177)=>675,chr(178)=>300,chr(179)=>300,chr(180)=>333,chr(181)=>500,chr(182)=>523,chr(183)=>250,chr(184)=>333,chr(185)=>300,chr(186)=>310,chr(187)=>500,chr(188)=>750,chr(189)=>750,chr(190)=>750,chr(191)=>500,chr(192)=>611,chr(193)=>611,chr(194)=>611,chr(195)=>611,chr(196)=>611,chr(197)=>611,
chr(198)=>889,chr(199)=>667,chr(200)=>611,chr(201)=>611,chr(202)=>611,chr(203)=>611,chr(204)=>333,chr(205)=>333,chr(206)=>333,chr(207)=>333,chr(208)=>722,chr(209)=>667,chr(210)=>722,chr(211)=>722,chr(212)=>722,chr(213)=>722,chr(214)=>722,chr(215)=>675,chr(216)=>722,chr(217)=>722,chr(218)=>722,chr(219)=>722,
chr(220)=>722,chr(221)=>556,chr(222)=>611,chr(223)=>500,chr(224)=>500,chr(225)=>500,chr(226)=>500,chr(227)=>500,chr(228)=>500,chr(229)=>500,chr(230)=>667,chr(231)=>444,chr(232)=>444,chr(233)=>444,chr(234)=>444,chr(235)=>444,chr(236)=>278,chr(237)=>278,chr(238)=>278,chr(239)=>278,chr(240)=>500,chr(241)=>500,
chr(242)=>500,chr(243)=>500,chr(244)=>500,chr(245)=>500,chr(246)=>500,chr(247)=>675,chr(248)=>500,chr(249)=>500,chr(250)=>500,chr(251)=>500,chr(252)=>500,chr(253)=>444,chr(254)=>500,chr(255)=>444);
?>

View File

@ -1,15 +0,0 @@
<?php
$fpdf_charwidths['zapfdingbats']=array(
chr(0)=>0,chr(1)=>0,chr(2)=>0,chr(3)=>0,chr(4)=>0,chr(5)=>0,chr(6)=>0,chr(7)=>0,chr(8)=>0,chr(9)=>0,chr(10)=>0,chr(11)=>0,chr(12)=>0,chr(13)=>0,chr(14)=>0,chr(15)=>0,chr(16)=>0,chr(17)=>0,chr(18)=>0,chr(19)=>0,chr(20)=>0,chr(21)=>0,
chr(22)=>0,chr(23)=>0,chr(24)=>0,chr(25)=>0,chr(26)=>0,chr(27)=>0,chr(28)=>0,chr(29)=>0,chr(30)=>0,chr(31)=>0,' '=>278,'!'=>974,'"'=>961,'#'=>974,'$'=>980,'%'=>719,'&'=>789,'\''=>790,'('=>791,')'=>690,'*'=>960,'+'=>939,
','=>549,'-'=>855,'.'=>911,'/'=>933,'0'=>911,'1'=>945,'2'=>974,'3'=>755,'4'=>846,'5'=>762,'6'=>761,'7'=>571,'8'=>677,'9'=>763,':'=>760,';'=>759,'<'=>754,'='=>494,'>'=>552,'?'=>537,'@'=>577,'A'=>692,
'B'=>786,'C'=>788,'D'=>788,'E'=>790,'F'=>793,'G'=>794,'H'=>816,'I'=>823,'J'=>789,'K'=>841,'L'=>823,'M'=>833,'N'=>816,'O'=>831,'P'=>923,'Q'=>744,'R'=>723,'S'=>749,'T'=>790,'U'=>792,'V'=>695,'W'=>776,
'X'=>768,'Y'=>792,'Z'=>759,'['=>707,'\\'=>708,']'=>682,'^'=>701,'_'=>826,'`'=>815,'a'=>789,'b'=>789,'c'=>707,'d'=>687,'e'=>696,'f'=>689,'g'=>786,'h'=>787,'i'=>713,'j'=>791,'k'=>785,'l'=>791,'m'=>873,
'n'=>761,'o'=>762,'p'=>762,'q'=>759,'r'=>759,'s'=>892,'t'=>892,'u'=>788,'v'=>784,'w'=>438,'x'=>138,'y'=>277,'z'=>415,'{'=>392,'|'=>392,'}'=>668,'~'=>668,chr(127)=>0,chr(128)=>390,chr(129)=>390,chr(130)=>317,chr(131)=>317,
chr(132)=>276,chr(133)=>276,chr(134)=>509,chr(135)=>509,chr(136)=>410,chr(137)=>410,chr(138)=>234,chr(139)=>234,chr(140)=>334,chr(141)=>334,chr(142)=>0,chr(143)=>0,chr(144)=>0,chr(145)=>0,chr(146)=>0,chr(147)=>0,chr(148)=>0,chr(149)=>0,chr(150)=>0,chr(151)=>0,chr(152)=>0,chr(153)=>0,
chr(154)=>0,chr(155)=>0,chr(156)=>0,chr(157)=>0,chr(158)=>0,chr(159)=>0,chr(160)=>0,chr(161)=>732,chr(162)=>544,chr(163)=>544,chr(164)=>910,chr(165)=>667,chr(166)=>760,chr(167)=>760,chr(168)=>776,chr(169)=>595,chr(170)=>694,chr(171)=>626,chr(172)=>788,chr(173)=>788,chr(174)=>788,chr(175)=>788,
chr(176)=>788,chr(177)=>788,chr(178)=>788,chr(179)=>788,chr(180)=>788,chr(181)=>788,chr(182)=>788,chr(183)=>788,chr(184)=>788,chr(185)=>788,chr(186)=>788,chr(187)=>788,chr(188)=>788,chr(189)=>788,chr(190)=>788,chr(191)=>788,chr(192)=>788,chr(193)=>788,chr(194)=>788,chr(195)=>788,chr(196)=>788,chr(197)=>788,
chr(198)=>788,chr(199)=>788,chr(200)=>788,chr(201)=>788,chr(202)=>788,chr(203)=>788,chr(204)=>788,chr(205)=>788,chr(206)=>788,chr(207)=>788,chr(208)=>788,chr(209)=>788,chr(210)=>788,chr(211)=>788,chr(212)=>894,chr(213)=>838,chr(214)=>1016,chr(215)=>458,chr(216)=>748,chr(217)=>924,chr(218)=>748,chr(219)=>918,
chr(220)=>927,chr(221)=>928,chr(222)=>928,chr(223)=>834,chr(224)=>873,chr(225)=>828,chr(226)=>924,chr(227)=>924,chr(228)=>917,chr(229)=>930,chr(230)=>931,chr(231)=>463,chr(232)=>883,chr(233)=>836,chr(234)=>836,chr(235)=>867,chr(236)=>867,chr(237)=>696,chr(238)=>696,chr(239)=>874,chr(240)=>0,chr(241)=>874,
chr(242)=>760,chr(243)=>946,chr(244)=>771,chr(245)=>865,chr(246)=>771,chr(247)=>888,chr(248)=>967,chr(249)=>888,chr(250)=>831,chr(251)=>873,chr(252)=>927,chr(253)=>970,chr(254)=>918,chr(255)=>0);
?>

File diff suppressed because it is too large Load Diff

View File

@ -1,130 +0,0 @@
/*
$Id$
This code is part of LDAP Account Manager (http://www.sourceforge.net/projects/lam)
Copyright (C) 2003 Roland Gruber
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
// functions for row checking and mouseOver effects
// mouseOver function
function user_over(list, box) {
cbox = document.getElementsByName(box)[0];
if (cbox.checked == false) list.setAttribute('class','userlist-over', 0);
}
// mouseOut function
function user_out(list, box) {
cbox = document.getElementsByName(box)[0];
if (cbox.checked == false) list.setAttribute('class','userlist', 0);
}
// onClick function
function user_click(list, box) {
cbox = document.getElementsByName(box)[0];
if (cbox.checked == true) {
cbox.checked = false;
list.setAttribute('class','userlist-over', 0);
}
else {
cbox.checked = true;
list.setAttribute('class','userlist-checked', 0);
}
}
// mouseOver function
function group_over(list, box) {
cbox = document.getElementsByName(box)[0];
if (cbox.checked == false) list.setAttribute('class','grouplist-over', 0);
}
// mouseOut function
function group_out(list, box) {
cbox = document.getElementsByName(box)[0];
if (cbox.checked == false) list.setAttribute('class','grouplist', 0);
}
// onClick function
function group_click(list, box) {
cbox = document.getElementsByName(box)[0];
if (cbox.checked == true) {
cbox.checked = false;
list.setAttribute('class','grouplist-over', 0);
}
else {
cbox.checked = true;
list.setAttribute('class','grouplist-checked', 0);
}
}
// mouseOver function
function host_over(list, box) {
cbox = document.getElementsByName(box)[0];
if (cbox.checked == false) list.setAttribute('class','hostlist-over', 0);
}
// mouseOut function
function host_out(list, box) {
cbox = document.getElementsByName(box)[0];
if (cbox.checked == false) list.setAttribute('class','hostlist', 0);
}
// onClick function
function host_click(list, box) {
cbox = document.getElementsByName(box)[0];
if (cbox.checked == true) {
cbox.checked = false;
list.setAttribute('class','hostlist-over', 0);
}
else {
cbox.checked = true;
list.setAttribute('class','hostlist-checked', 0);
}
}
// mouseOver function
function domain_over(list, box) {
cbox = document.getElementsByName(box)[0];
if (cbox.checked == false) list.setAttribute('class','domainlist-over', 0);
}
// mouseOut function
function domain_out(list, box) {
cbox = document.getElementsByName(box)[0];
if (cbox.checked == false) list.setAttribute('class','domainlist', 0);
}
// onClick function
function domain_click(list, box) {
cbox = document.getElementsByName(box)[0];
if (cbox.checked == true) {
cbox.checked = false;
list.setAttribute('class','domainlist-over', 0);
}
else {
cbox.checked = true;
list.setAttribute('class','domainlist-checked', 0);
}
}

View File

@ -1,232 +0,0 @@
#! /usr/bin/perl
# $Id$
#
# This code is part of LDAP Account Manager (http://www.sourceforge.net/projects/lam)
# Copyright (C) 2003 Tilo Lutz
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
#
# LDAP Account Manager daemon to create and delete homedirecotries and quotas
#use strict; # Use strict for security reasons
@quota_grp;
@quota_usr; # Filesystems with enabled userquotas
# vals = DN, PAssword, user, home, (add|rem),
# quota, (set|get),(u|g), (mountpoint,blocksoft,blockhard,filesoft,filehard)+
# chown options
$|=1; # Disable buffering
sub get_fs { # Load mountpoints from mtab if enabled quotas
Quota::setmntent();
my $i=0;
my @args;
while (my @temp = Quota::getmntent()) {
$args[$i][0] = $temp[0];
$args[$i][1] = $temp[1];
$args[$i][2] = $temp[2];
$args[$i][3] = $temp[3];
$i++;
}
Quota::endmntent();
my $j=0; my $k=0; $i=0;
while ($args[$i][0]) {
if ( $args[$i][3] =~ m/usrquota/ ) {
$quota_usr[$j][0] = $args[$i][0];
$quota_usr[$j][1] = $args[$i][1];
$quota_usr[$j][2] = $args[$i][2];
$quota_usr[$j][3] = $args[$i][3];
$j++;
}
if ( $args[$i][3] =~ m/grpquota/ ) {
$quota_grp[$k][0] = $args[$i][0];
$quota_grp[$k][1] = $args[$i][1];
$quota_grp[$k][2] = $args[$i][2];
$quota_grp[$k][3] = $args[$i][3];
$k++;
}
$i++;
}
}
# ***************** Check values
if ($( == 0 ) { # we are root
# Drop root Previleges
($<, $>) = ($>, $<);
if ($ARGV[0] eq "*test") {
use Quota; # Needed to get and set quotas
print "Perl quota module successfully installed.\n";
print "If you haven't seen any errors lamdaemon.pl was set up successfully.\n";
}
else {
# loop for every transmitted user
my $string = do {local $/;<STDIN>};
@input = split ("\n", $string );
for ($i=0; $i<=$#input; $i++) {
$return = "";
@vals = split (' ', $input[$i]);
switch: {
# Get user information
if (($vals[3] eq 'user') || ($vals[1] eq 'home')) { @user = getpwnam($vals[0]); }
else { @user = getgrnam($vals[0]); }
$vals[1] eq 'home' && do {
switch2: {
$vals[2] eq 'add' && do {
# split homedir to set all directories below the last dir. to 755
my $path = $user[7];
$path =~ s,/(?:[^/]*)$,,;
($<, $>) = ($>, $<); # Get root privileges
if (! -e $path) {
system 'mkdir', '-m 755', '-p', $path; # Create paths to homedir
}
if (! -e $user[7]) {
system 'mkdir', '-m 755', $user[7]; # Create himdir itself
system "cp -a /etc/skel/* /etc/skel/.[^.]* $user[7]"; # Copy /etc/sekl into homedir
system 'chown', '-R', "$user[2]:$user[3]" , $user[7]; # Change owner to new user
if (-e '/usr/sbin/useradd.local') {
system '/usr/sbin/useradd.local', $user[0]; # run useradd-script
}
}
($<, $>) = ($>, $<); # Give up root previleges
last switch2;
};
$vals[2] eq 'rem' && do {
($<, $>) = ($>, $<); # Get root previliges
if (-d $user[7]) {
system 'rm', '-R', $user[7]; # Delete Homedirectory
if (-e '/usr/sbin/userdel.local') {
system '/usr/sbin/userdel.local', $user[0];
}
}
($<, $>) = ($>, $<); # Give up root previleges
last switch2;
};
}
last switch;
};
$vals[1] eq 'quota' && do {
use Quota; # Needed to get and set quotas
get_fs(); # Load list of devices with enabled quotas
# Store quota information in array
@quota_temp1 = split (':', $vals[4]);
$group=0;
$i=0;
while ($quota_temp1[$i]) {
$j=0;
@temp = split (',', $quota_temp1[$i]);
while ($temp[$j]) {
$quota[$i][$j] = $temp[$j];
$j++;
}
$i++;
}
if ($vals[3] eq 'user') { $group=false; }
else {
$group=1;
@quota_usr = @quota_grp;
}
switch2: {
$vals[2] eq 'rem' && do {
$i=0;
($<, $>) = ($>, $<); # Get root privileges
while ($quota_usr[$i][0]) {
$dev = Quota::getqcarg($quota_usr[$i][1]);
$return = Quota::setqlim($dev,$user[2],0,0,0,0,1,$group);
$i++;
}
($<, $>) = ($>, $<); # Give up root previleges
last switch2;
};
$vals[2] eq 'set' && do {
$i=0;
($<, $>) = ($>, $<); # Get root privileges
while ($quota_usr[$i][0]) {
$dev = Quota::getqcarg($quota[$i][0]);
$return = Quota::setqlim($dev,$user[2],$quota[$i][1],$quota[$i][2],$quota[$i][3],$quota[$i][4],1,$group);
$i++;
}
($<, $>) = ($>, $<); # Give up root previleges
last switch2;
};
$vals[2] eq 'get' && do {
$i=0;
($<, $>) = ($>, $<); # Get root privileges
while ($quota_usr[$i][0]) {
if ($vals[0]ne'+') {
$dev = Quota::getqcarg($quota_usr[$i][1]);
@temp = Quota::query($dev,$user[2],$group);
if ($temp[0]ne'') {
$return = "$quota_usr[$i][1],$temp[0],$temp[1],$temp[2],$temp[3],$temp[4],$temp[5],$temp[6],$temp[7]:$return";
}
else { $return = "$quota_usr[$i][1],0,0,0,0,0,0,0,0:$return"; }
}
else { $return = "$quota_usr[$i][1],0,0,0,0,0,0,0,0:$return"; }
$i++;
}
($<, $>) = ($>, $<); # Give up root previleges
last switch2;
};
}
};
last switch;
};
print "$return\n";
}
}
}
else {
$hostname = shift @ARGV;
$remotepath = shift @ARGV;
use Net::SSH::Perl;
if ($ARGV[2] eq "*test") { print "Net::SSH::Perl successfully installed.\n"; }
if (($ARGV[0] eq "-") and ($ARGV[1] eq "-")) { # user+passwd are in STDIN
$username = <STDIN>;
chop($username);
@username = split (',', $username);
$username[0] =~ s/uid=//;
$username[0] =~ s/cn=//;
$username = $username[0];
$password = <STDIN>;
chop($password);
}
else {
@username = split (',', $ARGV[0]);
$username[0] =~ s/uid=//;
$username[0] =~ s/cn=//;
$username = $username[0];
$password = $ARGV[1];
}
my $ssh = Net::SSH::Perl->new($hostname, options=>[
"UserKnownHostsFile /dev/null"],
protocol => "2,1" );
$ssh->login($username, $password);
# Put all transfered lines in one string
if ($ARGV[2] ne "*test") {
$string = do {local $/;<STDIN>};
@string2 = split ("\n", $string);
for ($i=0; $i<=$#string2; $i++) {
($stdout2, $stderr, $exit) = $ssh->cmd("sudo $remotepath $argv", $string2[$i]);
$stdout .= $stdout2;
}
print $stdout;
}
else {
($stdout, $stderr, $exit) = $ssh->cmd("sudo $remotepath *test");
print $stdout;
}
}

View File

@ -1,601 +0,0 @@
<?php
/*
$Id$
This code is part of LDAP Account Manager (http://www.sourceforge.net/projects/lam)
Copyright (C) 2003 Roland Gruber
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
// ldap.inc provides basic functions to connect to the OpenLDAP server.
// PHP 5 compatibility
if( phpversion() >= "5" ) ini_set( "zend.ze1_compatibility_mode", 1 );
include_once("config.inc");
include_once("blowfish.inc");
// converts a HEX string to a binary value
function hex2bin($value) {
return pack("H*", $value);
}
// returns the hash value of a plain text password
// the hash algorithm depends on the configuration file
// $password: the password string
// $enabled: marks the hash as enabled/disabled (e.g. by prefixing "!")
function pwd_hash($password, $enabled=true) {
// check for empty password
if (! $password || ($password == "")) {
return "";
}
// calculate new random number
$_SESSION['ldap']->new_rand();
// hash password with algorithm from config file
$hash = "";
switch ($_SESSION['config']->get_pwdhash()) {
case 'CRYPT':
$hash = "{CRYPT}" . crypt($password);
break;
case 'MD5':
$hash = "{MD5}" . base64_encode(hex2bin(md5($password)));
break;
case 'SMD5':
$salt0 = substr(pack("h*", md5($_SESSION['ldap']->rand)), 0, 8);
$salt = substr(pack("H*", md5($salt0 . $password)), 0, 4);
$hash = "{SMD5}" . base64_encode(hex2bin(md5($password . $salt)) . $salt);
break;
case 'SHA':
// PHP 4.3+ can use sha1() function
if (function_exists(sha1)) {
$hash = "{SHA}" . base64_encode(hex2bin(sha1($password)));
}
// otherwise use MHash
elseif (function_exists(mHash)) {
$hash = "{SHA}" . base64_encode(mHash(MHASH_SHA1, $password));
}
// if SHA1 is not possible use crypt()
else {
$hash = "{CRYPT}" . crypt($password);
}
break;
case 'SSHA':
// PHP 4.3+ can use sha1() function
if (function_exists(sha1)) {
$salt0 = substr(pack("h*", md5($_SESSION['ldap']->rand)), 0, 8);
$salt = substr(pack("H*", sha1($salt0 . $password)), 0, 4);
$hash = "{SSHA}" . base64_encode(hex2bin(sha1($password . $salt)) . $salt);
}
// otherwise use MHash
elseif (function_exists(mHash)) {
$salt = mhash_keygen_s2k(MHASH_SHA1, $password, substr(pack("h*", md5($_SESSION['ldap']->rand)), 0, 8), 4);
$hash = base64_encode(mHash(MHASH_SHA1, $password . $salt) . $salt);
$hash = "{SSHA}" . $hash;
}
// if SSHA is not possible use crypt()
else {
$hash = "{CRYPT}" . crypt($password);
}
break;
case 'PLAIN':
$hash = $password;
break;
// use SSHA if the setting is invalid
default:
// PHP 4.3+ can use sha1() function
if (function_exists(sha1)) {
$salt0 = substr(pack("h*", md5($_SESSION['ldap']->rand)), 0, 8);
$salt = substr(pack("H*", sha1($salt0 . $password)), 0, 4);
$hash = "{SSHA}" . base64_encode(hex2bin(sha1($password . $salt)) . $salt);
}
// otherwise use MHash
elseif (function_exists(mHash)) {
$salt = mhash_keygen_s2k(MHASH_SHA1, $password, substr(pack("h*", md5($_SESSION['ldap']->rand)), 0, 8), 4);
$hash = base64_encode(mHash(MHASH_SHA1, $password . $salt) . $salt);
$hash = "{SSHA}" . $hash;
}
// if SSHA is not possible use crypt()
else {
$hash = "{CRYPT}" . crypt($password);
}
break;
}
// enable/disable password
if (! $enabled) return pwd_disable($hash);
else return $hash;
}
// marks an password hash as enabled
// and returns the new hash string
// hash: hash value to enable
function pwd_enable($hash) {
// check if password is disabled (old wrong LAM method)
if ((substr($hash, 0, 2) == "!{") || ((substr($hash, 0, 2) == "*{"))) {
return substr($hash, 1, strlen($hash));
}
// check for "!" or "*" at beginning of password hash
else {
if (substr($hash, 0, 1) == "{") {
$pos = strpos($hash, "}");
if ((substr($hash, $pos + 1, 1) == "!") || (substr($hash, $pos + 1, 1) == "*")) {
// enable hash
return substr($hash, 0, $pos + 1) . substr($hash, $pos + 2, strlen($hash));
}
else return $hash; // not disabled
}
else return $hash; // password is plain text
}
}
// marks an password hash as disabled
// and returns the new hash string
// hash: hash value to disable
function pwd_disable($hash) {
// check if password is disabled (old wrong LAM method)
if ((substr($hash, 0, 2) == "!{") || ((substr($hash, 0, 2) == "*{"))) {
return $hash;
}
// check for "!" or "*" at beginning of password hash
else {
if (substr($hash, 0, 1) == "{") {
$pos = strpos($hash, "}");
if ((substr($hash, $pos + 1, 1) == "!") || (substr($hash, $pos + 1, 1) == "*")) {
// hash already disabled
return $hash;
}
else return substr($hash, 0, $pos + 1) . "!" . substr($hash, $pos + 1, strlen($hash)); // not disabled
}
else return $hash; // password is plain text
}
}
// checks if a password hash is enabled/disabled
// returns true if the password is marked as enabled
function pwd_is_enabled($hash) {
// disabled passwords have a "!" or "*" at the beginning (old wrong LAM method)
if ((substr($hash, 0, 2) == "!{") || ((substr($hash, 0, 2) == "*{"))) return false;
if (substr($hash, 0, 1) == "{") {
$pos = strrpos($hash, "}");
// check if hash starts with "!" or "*"
if ((substr($hash, $pos + 1, 1) == "!") || (substr($hash, $pos + 1, 1) == "*")) return false;
else return true;
}
else return true;
}
// manages connection to LDAP and several helper functions
class Ldap{
// object of Config to access preferences
var $conf;
// server handle
var $server;
// LDAP username and password used for bind
var $username;
var $password;
// Arrays that contain LDAP attributes and their descriptions which are translated
var $ldapUserAttributes;
var $ldapGroupAttributes;
var $ldapHostAttributes;
// array with all objectClass strings from the LDAP server
var $objectClasses;
// capabilities of the LDAP server
var $supports_unix_hosts=false; // host attribute in inetOrgPerson
var $supports_samba2_schema=false; // objectClass sambaAccount
var $supports_samba3_schema=false; // objectClass sambaSamAccount
// random number (changes on every page request)
var $rand;
// constructor
// $config: an object of Config (../config/config.php)
function Ldap($config) {
setlanguage();
if (is_object($config)) $this->conf = $config;
else return false;
// construct arrays with known LDAP attributes
$this->ldapUserAttributes = array (
"uid" => _("User ID"),
"uidnumber" => _("UID number"),
"gidnumber" => _("GID number"),
"cn" => _("Username"),
"host" => _("Allowed hosts"),
"givenname" => _("First name"),
"sn" => _("Last name"),
"homedirectory" => _("Home directory"),
"loginshell" => _("Login shell"),
"mail" => _("E-Mail"),
"gecos" => _("Description")
);
$this->ldapGroupAttributes = array (
"cn" => _("Group name"),
"gidnumber" => _("GID number"),
"memberuid" => _("Group members"),
"member" => _("Group member DNs"),
"description" => _("Group description")
);
$this->ldapHostAttributes = array (
"uid" => _("Host username"),
"cn" => _("Host name"),
"rid" => _("RID (Windows UID)"),
"description" => _("Host description"),
"uidnumber" => _("UID number"),
"gidnumber" => _("GID number")
);
mt_srand((double)microtime()*1000000);
$this->rand = mt_rand();
return true;
}
// connects to the server using the given username and password
// if connect succeeds the server handle is returned
// $user: user name
// $passwd: password
function connect($user, $passwd) {
// close any prior connection
@$this->close();
// do not allow anonymous bind
if ((!$user)||($user == "")||(!$passwd)) {
return false;
}
// save password und username encrypted
$this->encrypt_login($user, $passwd);
$this->server = @ldap_connect($this->conf->get_ServerURL());
if ($this->server) {
// use LDAPv3
ldap_set_option($this->server, LDAP_OPT_PROTOCOL_VERSION, 3);
// start TLS if possible
if (function_exists('ldap_start_tls')) {
@ldap_start_tls($this->server);
// connect without TLS if it failed
if (ldap_errno($this->server) != 0) {
@ldap_close($this->server);
$this->server = @ldap_connect($this->conf->get_ServerURL());
ldap_set_option($this->server, LDAP_OPT_PROTOCOL_VERSION, 3);
}
}
$bind = @ldap_bind($this->server, $user, $passwd);
if ($bind) {
// read objectClasses from server and update capabilities if needed
if (! $this->objectClasses) {
$this->updateClasses();
$this->updateCapabilities();
}
// return success number
return ldap_errno($this->server);
}
// return error number
else return ldap_errno($this->server);
}
else return false;
}
// closes connection to server
function close() {
@ldap_close($this->server);
}
// searches LDAP for a specific user name
// and returns its DN entry
// $name: user name
function search_username($name) {
$filter = "(uid=$name)";
$attrs = array();
$sr = @ldap_search($this->server, $this->conf->get_UserSuffix(), $filter, $attrs);
if ($sr) {
$info = ldap_get_entries($this->server, $sr);
// return only first DN entry
$ret = $info[0]["dn"];
ldap_free_result($sr);
return $ret;
}
}
// returns an array with all organizational units under the given suffix
// $suffix: search suffix
function search_units($suffix) {
$ret = array();
$sr = @ldap_search($this->server(), $suffix, "objectClass=organizationalunit", array("DN"));
if ($sr) {
$units = ldap_get_entries($this->server, $sr);
// extract Dns
for ($i = 0; $i < sizeof($units); $i++) {
if ($units[$i]['dn']) $ret[] = $units[$i]['dn'];
}
}
// add root suffix if needed
$found = false;
for ($i = 0; $i < sizeof($ret); $i++) { // search suffix case-intensitive
if (strtolower($suffix) == strtolower($ret[$i])) {
$found = true;
break;
}
}
if (!$found) {
$ret[] = $suffix;
}
usort($ret, array($this,"cmp_array"));
return $ret;
}
// returns an array with all Samba 3 domain entries under the given suffix
// $suffix: search suffix
function search_domains($suffix) {
$ret = array();
$attr = array("DN", "sambaDomainName", "sambaSID", "sambaNextRid", "sambaNextGroupRid",
"sambaNextUserRid", "sambaAlgorithmicRidBase");
$sr = @ldap_search($this->server(), $suffix, "objectClass=sambaDomain", $attr);
if ($sr) {
$units = ldap_get_entries($this->server, $sr);
// delete count entry
array_shift($units);
// extract attributes
for ($i = 0; $i < sizeof($units); $i++) {
$ret[$i] = new samba3domain();
$ret[$i]->dn = $units[$i]['dn'];
$ret[$i]->name = $units[$i]['sambadomainname'][0];
$ret[$i]->SID = $units[$i]['sambasid'][0];
$ret[$i]->nextRID = $units[$i]['sambanextrid'][0];
$ret[$i]->nextGroupRID = $units[$i]['sambanextgrouprid'][0];
$ret[$i]->nextUserRID = $units[$i]['sambanextuserrid'][0];
if (isset($units[$i]['sambaalgorithmicridbase'][0])) $ret[$i]->RIDbase = $units[$i]['sambaalgorithmicridbase'][0];
}
// sort array by domain name
usort($ret, array($this,"cmp_domain"));
}
return $ret;
}
// reads the array of objectClasses from the LDAP server
function updateClasses() {
// read from default cn
$sr = @ldap_read($this->server, 'cn=subschema', '(objectClass=*)', array('objectclasses'));
// if default was not correct check different cn
if (!$sr) $sr = @ldap_read($this->server, 'cn=schema', '(objectClass=*)', array('objectclasses'));
if ($sr) {
// get search result and save it
$info = @ldap_get_entries($this->server,$sr);
if ($info) {
$this->objectClasses = $info[0]['objectclasses'];
array_shift($this->objectClasses);
return true;
}
}
// if search failed save empty result
$this->objectClasses = array();
}
// updates the capabilities values (var $supports_*)
function updateCapabilities() {
for ($i = 0; $i < sizeof($this->objectClasses); $i++) {
$line = $this->objectClasses[$i];
// search keywords
if (strpos($line, "NAME 'inetOrgPerson'") && strpos($line, " host ")) $this->supports_unix_hosts = true;
if (strpos($line, "NAME 'sambaAccount'")) $this->supports_samba2_schema = true;
if (strpos($line, "NAME 'sambaSamAccount'")) $this->supports_samba3_schema = true;
}
}
// returns the LDAP connection handle
function server() {
return $this->server;
}
// closes connection to LDAP server before serialization
function __sleep() {
$this->close();
// define which attributes to save
return array("conf", "username", "password", "ldapUserAttributes", "ldapGroupAttributes",
"ldapHostAttributes", "objectClasses", "supports_unix_hosts", "supports_samba2_schema",
"supports_samba3_schema", "rand");
}
// reconnects to LDAP server when deserialized
function __wakeup() {
$data = $this->decrypt_login();
$this->connect($data[0], $data[1]);
// change random number
mt_srand($this->rand + (microtime() * 1000000));
$this->rand = mt_rand();
// delete PDF files which are older than 10 min
if (isset($_SESSION['lampath'])) {
$relpath = $_SESSION['lampath'] . 'tmp/';
$time = time();
$dir = @opendir($relpath);
while ($file = @readdir($dir)) {
if (substr($file, -4) == '.pdf') {
$path = $relpath . $file;
if ($time - filemtime($path) > 600) {
@unlink($path);
}
}
}
@closedir($h);
}
}
// calculates a new value for rand
function new_rand() {
// change random number
mt_srand($this->rand + (microtime() * 1000000));
$this->rand = mt_rand();
}
// encrypts a string
// $data: string to encrypt
// return: encrypted string
function encrypt($data) {
// use MCrypt if available
if (function_exists(mcrypt_create_iv)) {
// read key and iv from cookie
$iv = base64_decode($_COOKIE["IV"]);
$key = base64_decode($_COOKIE["Key"]);
// encrypt string
return mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key, $data, MCRYPT_MODE_ECB, $iv);
}
// use Blowfish if MCrypt is not available
else {
// read key and iv from cookie
$iv = base64_decode($_COOKIE["IV"]);
$key = base64_decode($_COOKIE["Key"]);
$b_key = $iv . $key;
// encrypt string
$b_fish = new Cipher_blowfish();
return $b_fish->encrypt($data, $b_key);
}
}
// decrypts a string
// $data: string to decrypt
// return: decrypted string
function decrypt($data) {
// use MCrypt if available
if (function_exists(mcrypt_create_iv)) {
// read key and iv from cookie
$iv = base64_decode($_COOKIE["IV"]);
$key = base64_decode($_COOKIE["Key"]);
// decrypt string
$ret = mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $key, $data, MCRYPT_MODE_ECB, $iv);
$ret = str_replace(chr(00), "", $ret);
return $ret;
}
// use Blowfish if MCrypt is not available
else {
// read key and iv from cookie
$iv = base64_decode($_COOKIE["IV"]);
$key = base64_decode($_COOKIE["Key"]);
$b_key = $iv . $key;
// decrypt string
$b_fish = new Cipher_blowfish();
return $b_fish->decrypt($data, $b_key);
}
}
// encrypts username and password
// $username: LDAP user name
// $password: LDAP password
function encrypt_login($username, $password) {
// encrypt username and password
$this->username = base64_encode($this->encrypt($username));
$this->password = base64_encode($this->encrypt($password));
}
// decrypts username and password
// returns an array
// return[0]: user name
// return[1]: password
function decrypt_login() {
// decrypt username and password
$username = $this->decrypt(base64_decode($this->username));
$password = $this->decrypt(base64_decode($this->password));
$ret = array($username, $password);
return $ret;
}
// closes connection to LDAP server and deletes encrypted username/password
function destroy() {
$this->close();
$this->username="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
$this->password="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
}
// returns an array that contains LDAP attribute names and their description
function attributeUserArray() {
return $this->ldapUserAttributes;
}
// returns an array that contains LDAP attribute names and their description
function attributeGroupArray() {
return $this->ldapGroupAttributes;
}
// returns an array that contains LDAP attribute names and their description
function attributeHostArray() {
return $this->ldapHostAttributes;
}
// helper function to sort the unit DNs
function cmp_array($a, $b) {
// split DNs
$array_a = explode(",", $a);
$array_b = explode(",", $b);
$len_a = sizeof($array_a);
$len_b = sizeof($array_b);
// check how many parts to compare
$len = min($len_a, $len_b);
// compare from last part on
for ($i = 0; $i < $len; $i++) {
// get parts to compare
$part_a = strtolower($array_a[$len_a - $i - 1]);
$part_b = strtolower($array_b[$len_b - $i - 1]);
// compare parts
if ($part_a == $part_b) { // part is identical
if ($i == ($len - 1)) {
if ($len_a > $len_b) return 1;
elseif ($len_a < $len_b) return -1;
else return 0; // DNs are identical
}
}
elseif ($part_a == max($part_a, $part_b)) return 1;
else return -1;
}
}
// helper function to sort the domains
function cmp_domain($a, $b) {
if ($a->name == $b->name) return 0;
elseif ($a->name == max($a->name, $b->name)) return 1;
else return -1;
}
}
// represents a Samba 3 domain entry
class samba3domain {
// DN
var $dn;
// domain name
var $name;
// domain SID
var $SID;
// next RID
var $nextRID;
// next user RID
var $nextUserRID;
// next group RID
var $nextGroupRID;
// RID base to calculate RIDs, default 1000
var $RIDbase=1000;
}
?>

View File

@ -1,577 +0,0 @@
<?php
/*
$Id$
This code is part of LDAP Account Manager (http://www.sourceforge.net/projects/lam)
Copyright (C) 2003 Michael Drgner
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
LDAP Account Manager lamPDF class and some pdf functions
*/
// PHP 5 compatibility
if( phpversion() >= "5" ) ini_set( "zend.ze1_compatibility_mode", 1 );
define('FPDF_FONTPATH', 'font/');
include_once("fpdf.php");
function createUserPDF($accounts) {
// The decimal separator must be a dot in order to write pdf-files
setlocale(LC_NUMERIC, "C");
// Start PDF file
$pdfFile = new lamPDF();
$pdfFile->Open();
// Write some information into the PDF file
$pdfFile->setFont("arial","",12);
$pdfFile->setTitle("LDAP Account Manager");
$pdfFile->setSubject(_("User information page"));
$pdfFile->setAuthor("LDAP Account Manager Devel-Team -Michael Duergner-");
$pdfFile->setCreator("LDAP Account Manager (pdf.inc)");
// Loop for every sumbitted account and print its values on a extra page
foreach ($accounts as $account) {
$pdfFile->addPage();
// Load string with additional information from session
$info_string = $_SESSION['config']->pdftext;
// Print individuall text.
// Get all allowed vairables from account-object
$values = get_object_vars($account);
$values = array_keys($values);
// Replace $varstring in string with variable
foreach ($values as $value) {
// replace string
if (is_string($account->$value)) $info_string = str_replace('$'.$value, $account->$value, $info_string);
// replace object
else if (is_object($account->$value)) {
$values2 = get_object_vars($account->$value);
$values2 = array_keys($values2);
foreach ($values2 as $value2) {
$info_string = str_replace('$'.$value.'->'.$value2, $account->$value->$value2, $info_string);
}
}
// replace array
else if (is_array($account->$value)) {
foreach ($account->$value as $sub_array2) $sub_array .= $sub_array2.", ";
$sub_array = substr($sub_array, 0, -2);
$info_string = str_replace('$'.$value, $sub_array, $info_string);
}
}
// Split string in array
$info_array = explode("\n", $info_string);
$pdfFile->setFont("times","",10);
foreach ($info_array as $info)
$pdfFile->Cell(50,5,$info,0,1,"L",0);
$pdfFile->Ln(6);
// Print Personal settings
$pdfFile->setFont("arial","B",12);
$pdfFile->Write(5,"- " . _("Personal User Infos") . ":");
$pdfFile->Ln(6);
$pdfFile->setFont("times","B",10);
$pdfFile->Cell(50,5,_("Job title") . ":",0,0,"R",0);
$pdfFile->setFont("times","",10);
$pdfFile->Cell(50,5,$account->personal_title,0,1,"L",0);
$pdfFile->setFont("times","B",10);
$pdfFile->Cell(50,5,_("Surname") . ":",0,0,"R",0);
$pdfFile->setFont("times","",10);
$pdfFile->Cell(50,5,$account->general_surname,0,1,"L",0);
$pdfFile->setFont("times","B",10);
$pdfFile->Cell(50,5,_("Given name") . ":",0,0,"R",0);
$pdfFile->setFont("times","",10);
$pdfFile->Cell(50,5,$account->general_givenname,0,1,"L",0);
$pdfFile->setFont("times","B",10);
$pdfFile->Cell(50,5,_("Street") . ":",0,0,"R",0);
$pdfFile->setFont("times","",10);
$pdfFile->Cell(50,5,$account->personal_street,0,1,"L",0);
$pdfFile->setFont("times","B",10);
$pdfFile->Cell(50,5,_("Postal code") . ":",0,0,"R",0);
$pdfFile->setFont("times","",10);
$pdfFile->Cell(50,5,$account->personal_postalCode,0,1,"L",0);
$pdfFile->setFont("times","B",10);
$pdfFile->Cell(50,5,_("Postal address") . ":",0,0,"R",0);
$pdfFile->setFont("times","",10);
$pdfFile->Cell(50,5,$account->personal_postalAddress,0,1,"L",0);
$pdfFile->setFont("times","B",10);
$pdfFile->Cell(50,5,_("E-Mail") . ":",0,0,"R",0);
$pdfFile->setFont("times","",10);
$pdfFile->Cell(50,5,$account->personal_mail,0,1,"L",0);
$pdfFile->setFont("times","B",10);
$pdfFile->Cell(50,5,_("Phone") . ":",0,0,"R",0);
$pdfFile->setFont("times","",10);
$pdfFile->Cell(50,5,$account->personal_telephoneNumber,0,1,"L",0);
$pdfFile->setFont("times","B",10);
$pdfFile->Cell(50,5,_("Cellular phone") . ":",0,0,"R",0);
$pdfFile->setFont("times","",10);
$pdfFile->Cell(50,5,$account->personal_mobileTelephoneNumber,0,1,"L",0);
$pdfFile->setFont("times","B",10);
$pdfFile->Cell(50,5,_("Facsimile") . ":",0,0,"R",0);
$pdfFile->setFont("times","",10);
$pdfFile->Cell(50,5,$account->personal_facsimileTelephoneNumber,0,1,"L",0);
$pdfFile->setFont("times","",10);
// Print Unix settings
$pdfFile->Ln(9);
$pdfFile->setFont("arial","B",12);
$pdfFile->Write(5,"- " . _("Unix User Settings") . ":");
$pdfFile->Ln(6);
$pdfFile->setFont("times","B",10);
$pdfFile->Cell(50,5,_("Username") . ":",0,0,"R",0);
$pdfFile->setFont("times","",10);
$pdfFile->Cell(50,5,$account->general_username,0,1,"L",0);
if($account->unix_password_no == "1") {
$pdfFile->setFont("times","B",10);
$pdfFile->Cell(50,5,_("Unix password") . ":",0,0,"R",0);
$pdfFile->setFont("times","",10);
$pdfFile->Cell(50,5,_("Unix password disabled!"),0,1,"L",0);
}
elseif($account->unix_password == "") {
}
else {
$account->unix_password = $_SESSION['ldap']->decrypt(base64_decode($account->unix_password));
$pdfFile->setFont("times","B",10);
$pdfFile->Cell(50,5,_("Unix password") . ":",0,0,"R",0);
$pdfFile->setFont("times","",10);
$pdfFile->Cell(50,5,$account->unix_password,0,1,"L",0);
}
$pdfFile->setFont("times","B",10);
$pdfFile->Cell(50,5,_("Group(s)") . ":",0,0,"R",0);
if ($account->general_group != -1) {
$text = $account->general_group;
if (sizeof($account->general_groupadd) > 0) $text .= ", " . implode(", ", $account->general_groupadd);
}
else {
$text = "";
if (sizeof($account->general_groupadd) > 0) $text = implode(", ", $account->general_groupadd);
}
$pdfFile->setFont("times","",10);
$pdfFile->MultiCell(0,5,$text,0,"L",0);
$pdfFile->setFont("times","B",10);
$pdfFile->Cell(50,5,_("Home Directory") . ":",0,0,"R",0);
$pdfFile->setFont("times","",10);
$pdfFile->Cell(50,5,$account->general_homedir,0,1,"L",0);
$pdfFile->setFont("times","B",10);
$pdfFile->Cell(50,5,_("Login Shell") . ":",0,0,"R",0);
$text = "";
$shells = $account->general_shell;
$pdfFile->setFont("times","",10);
$pdfFile->Cell(50,5,$account->general_shell,0,1,"L",0);
$pdfFile->setFont("times","B",10);
$pdfFile->Cell(50,5,_("Password expire") . ":",0,0,"R",0);
$pdfFile->setFont("times","",10);
$pdfFile->Cell(50,5,date('j. F Y' ,$account->unix_pwdexpire),0,1,"L",0);
$pdfFile->setFont("times","B",10);
$pdfFile->Cell(50,5,_("Login at host(s)") . ":",0,0,"R",0);
$pdfFile->setFont("times","",10);
$pdfFile->MultiCell(0,5,implode(", ",explode(",",$account->unix_host)),0,1,"L",0);
// Print Samba settings
$pdfFile->Ln(9);
$pdfFile->setFont("arial","B",12);
$pdfFile->Write(5,"- " . _("Windows User Settings") . ":");
$pdfFile->Ln(6);
$pdfFile->setFont("times","B",10);
$pdfFile->Cell(50,5,_("Username") . ":",0,0,"R",0);
$pdfFile->setFont("times","",10);
$pdfFile->Cell(50,5,$account->general_username,0,1,"L",0);
if($account->smb_flags['N']) {
$pdfFile->setFont("times","B",10);
$pdfFile->Cell(50,5,_("Windows password") . ":",0,0,"R",0);
$pdfFile->setFont("times","",10);
$pdfFile->Cell(50,5,_("Windows password disabled!"),0,1,"L",0);
}
elseif($account->smb_useunixpwd == "1") {
$pdfFile->setFont("times","B",10);
$pdfFile->Cell(50,5,_("Windows password") . ":",0,0,"R",0);
$pdfFile->setFont("times","",10);
$pdfFile->Cell(50,5,_("Windows password set to unix password."),0,1,"L",0);
}
elseif($account->smb_password == "") {
}
else {
$account->smb_password = $_SESSION['ldap']->decrypt(base64_decode($account->smb_password));
$pdfFile->setFont("times","B",10);
$pdfFile->Cell(50,5,_("Windows password") . ":",0,0,"R",0);
$pdfFile->setFont("times","",10);
$pdfFile->Cell(50,5,$account->smb_password,0,1,"L",0);
}
$pdfFile->setFont("times","B",10);
$pdfFile->Cell(50,5,_("Home drive") . ":",0,0,"R",0);
$pdfFile->setFont("times","",10);
$pdfFile->Cell(50,5,$account->smb_homedrive,0,1,"L",0);
$pdfFile->setFont("times","B",10);
$pdfFile->Cell(50,5,_("Logon script") . ":",0,0,"R",0);
$pdfFile->setFont("times","",10);
$pdfFile->Cell(50,5,$account->smb_scriptPath,0,1,"L",0);
$pdfFile->setFont("times","B",10);
$pdfFile->Cell(50,5,_("Profile path") . ":",0,0,"R",0);
$pdfFile->setFont("times","",10);
$pdfFile->Cell(50,5,$account->smb_profilePath,0,1,"L",0);
$pdfFile->setFont("times","B",10);
$pdfFile->Cell(50,5,_("Login at workstation(s)") . ":",0,0,"R",0);
$pdfFile->setFont("times","",10);
$pdfFile->MultiCell(0,5,implode(", ",explode(",",$account->smb_smbuserworkstations)),0,1,"L",0);
$pdfFile->setFont("times","B",10);
$pdfFile->Cell(50,5,_("Windows home directory") . ":",0,0,"R",0);
$pdfFile->setFont("times","",10);
$pdfFile->Cell(50,5,$account->smb_smbhome,0,1,"L",0);
$pdfFile->setFont("times","B",10);
$pdfFile->Cell(50,5,_("Windows Domain") . ":",0,0,"R",0);
$pdfFile->setFont("times","",10);
if($_SESSION['config']->get_samba3() == "yes") $pdfFile->Cell(50,5,$account->smb_domain->name,0,1,"L",0);
else $pdfFile->Cell(50,5,$account->smb_domain,0,1,"L",0);
// Print Quota settings
$pdfFile->Ln(9);
$pdfFile->setFont("arial","B",12);
$pdfFile->Write(5,"- " . _("Quota Settings") . ":");
$pdfFile->Ln(6);
$pdfFile->setFont("times","B",10);
$pdfFile->Cell(50,5,_("User quota(s)") . ":",0,0,"R",0);
$pdfFile->setFont("times","",10);
$quotas = $account->quota;
if(count($quotas)>0) {
$pdfFile->Cell(30,5,_("Mountpoint"),0,0,"L",0);
$pdfFile->Cell(30,5,_("Soft block"),0,0,"L",0);
$pdfFile->Cell(30,5,_("Soft inode"),0,0,"L",0);
$pdfFile->Cell(30,5,_("Hard block"),0,0,"L",0);
$pdfFile->Cell(30,5,_("Hard inode"),0,1,"L",0);
for($j=0;$j<count($quotas);$j++) {
$pdfFile->Cell(50,5,"",0,0,"R",0);
$pdfFile->Cell(30,5,$quotas[$j][0],0,0,"L",0);
$pdfFile->Cell(30,5,$quotas[$j][2],0,0,"L",0);
$pdfFile->Cell(30,5,$quotas[$j][6],0,0,"L",0);
$pdfFile->Cell(30,5,$quotas[$j][3],0,0,"L",0);
$pdfFile->Cell(30,5,$quotas[$j][7],0,1,"L",0);
}
}
else {
$pdfFile->Cell(50,5,_("No user quotas defined or no quota support by filesystem."),0,1,"L",0);
}
$pdfFile->Ln(9);
}
// Close PDF
$pdfFile->Close();
// Get relative url path
$fullpath = realpath('.');
$subdirs = explode('/', str_replace($_SESSION['lampath'], '', $fullpath));
for ($i=0; $i<count($subdirs); $i++ ) $filename .= '../';
// use timestamp and random number from ldap.inc as filename so it should be unique.
$filename .= 'tmp/' . $_SESSION['ldap']->rand . time() .'.pdf';
// Save PDF
$pdfFile->Output($filename);
// Output meta refresh to pdf-file
metaRefresh($filename);
// Return relative path of pdf-file
return $filename;
}
// creates a PDF with host accounts
// $accounts: array of account
function createHostPDF($accounts) {
// The decimal separator must be a dot in order to write pdf-files
setlocale(LC_NUMERIC, "C");
// Start PDF file
$pdfFile = new lamHostPDF();
$pdfFile->Open();
// Write some information into the PDF file
$pdfFile->setFont("arial","",12);
$pdfFile->setTitle("LDAP Account Manager");
$pdfFile->setSubject(_("Samba-Host information page"));
$pdfFile->setAuthor("LDAP Account Manager Devel-Team -Roland Gruber-");
$pdfFile->setCreator("LDAP Account Manager (pdf.inc)");
// print host accounts
$pdfFile->addPage();
$k = 0; // used to count the already printed accounts per page
for($i = 0; $i < count($accounts); $i++) {
$k++;
$account = $accounts[$i];
$ypos = $pdfFile->GetY();
$pdfFile->setFont("times","B",16);
$pdfFile->Write(5,$account->general_username);
$pdfFile->Ln(8);
$pdfFile->setFont("times","B",10);
$pdfFile->Write(5,_("Description") . ": ");
$pdfFile->setFont("times","",10);
$pdfFile->Write(5,$account->general_gecos);
$pdfFile->Ln(5);
$pdfFile->setFont("times","B",10);
$pdfFile->Write(5,_("UID") . ": ");
$pdfFile->setFont("times","",10);
$pdfFile->Write(5,$account->general_uidNumber);
$pdfFile->Ln(5);
$pdfFile->setFont("times","B",10);
$pdfFile->Write(5,_("Primary group") . ": ");
$pdfFile->setFont("times","",10);
if ($account->general_group != -1) $pdfFile->Write(5,$account->general_group);
$pdfFile->Ln(5);
$pdfFile->setFont("times","B",10);
$pdfFile->Write(5,_("Domain") . ": ");
$pdfFile->setFont("times","",10);
unset($domain);
if (is_string($account->smb_domain)) {
$domain = $account->smb_domain;
}
else {
$domain = $account->smb_domain->name;
}
$pdfFile->Write(5,$domain);
$pdfFile->Ln(5);
$pdfFile->setFont("times","B",10);
$pdfFile->Write(5,_("DN") . ": ");
$pdfFile->setFont("times","",9);
$pdfFile->Write(5,$account->general_dn);
// print second column
if ($accounts[$i+1]) {
$k++;
$i++;
$account = $accounts[$i];
$pdfFile->SetY($ypos);
$pdfFile->SetX(115);
$pdfFile->setFont("times","B",16);
$pdfFile->Write(5,$account->general_username);
$pdfFile->Ln(7);
$pdfFile->SetX(115);
$pdfFile->setFont("times","B",10);
$pdfFile->Write(5,_("Description") . ": ");
$pdfFile->setFont("times","",10);
$pdfFile->Write(5,$account->general_gecos);
$pdfFile->Ln(5);
$pdfFile->SetX(115);
$pdfFile->setFont("times","B",10);
$pdfFile->Write(5,_("UID") . ": ");
$pdfFile->setFont("times","",10);
$pdfFile->Write(5,$account->general_uidNumber);
$pdfFile->Ln(5);
$pdfFile->SetX(115);
$pdfFile->setFont("times","B",10);
$pdfFile->Write(5,_("Primary group") . ": ");
$pdfFile->setFont("times","",10);
$pdfFile->Write(5,$account->general_group);
$pdfFile->Ln(5);
$pdfFile->SetX(115);
$pdfFile->setFont("times","B",10);
$pdfFile->Write(5,_("Domain") . ": ");
$pdfFile->setFont("times","",10);
unset($domain);
if (is_string($account->smb_domain)) {
$domain = $account->smb_domain;
}
else {
$domain = $account->smb_domain->name;
}
$pdfFile->Write(5,$domain);
$pdfFile->Ln(5);
$pdfFile->SetX(115);
$pdfFile->setFont("times","B",10);
$pdfFile->Write(5,_("DN") . ": ");
$pdfFile->setFont("times","",9);
$pdfFile->Write(5,$account->general_dn);
}
// space between two rows
if ($i < count($accounts) - 1) {
$pdfFile->Ln(12);
}
// new page after twelve accounts
if ($k == 12) {
$k = 0;
$pdfFile->addPage();
}
}
// Close PDF
$pdfFile->Close();
// Get relative url path
$fullpath = realpath('.');
$subdirs = explode('/', str_replace($_SESSION['lampath'], '', $fullpath));
for ($i=0; $i<count($subdirs); $i++ ) $filename .= '../';
// use timestamp and random number from ldap.inc as filename so it should be unique.
$filename .= 'tmp/' . $_SESSION['ldap']->rand . time() .'.pdf';
// Save PDF
$pdfFile->Output($filename);
// Output meta refresh to pdf-file
metaRefresh($filename);
// Return relative path of pdf-file
return $filename;
}
// creates a PDF with groups
// $accounts: array of account
function createGroupPDF($accounts) {
// The decimal separator must be a dot in order to write pdf-files
setlocale(LC_NUMERIC, "C");
// Start PDF file
$pdfFile = new lamGroupPDF();
$pdfFile->Open();
// Write some information into the PDF file
$pdfFile->setFont("arial","",12);
$pdfFile->setTitle("LDAP Account Manager");
$pdfFile->setSubject(_("Group information page"));
$pdfFile->setAuthor("LDAP Account Manager Devel-Team -Roland Gruber-");
$pdfFile->setCreator("LDAP Account Manager (pdf.inc)");
// print group accounts
$pdfFile->addPage();
for($i = 0; $i < count($accounts); $i++) {
$account = $accounts[$i];
$ypos = $pdfFile->GetY();
if ($ypos > 260) $pdfFile->addPage();
$pdfFile->setFont("times","B",16);
$pdfFile->Write(5,$account->general_username);
$pdfFile->Ln(8);
$pdfFile->setFont("times","B",10);
$pdfFile->Write(5,_("Description") . ": ");
$pdfFile->setFont("times","",10);
$pdfFile->Write(5,$account->general_gecos);
$pdfFile->Ln(5);
if ($account->smb_displayname) {
$pdfFile->setFont("times","B",10);
$pdfFile->Write(5,_("Display name") . ": ");
$pdfFile->setFont("times","",10);
$pdfFile->Write(5,$account->smb_displayname);
$pdfFile->Ln(5);
}
$pdfFile->setFont("times","B",10);
$pdfFile->Write(5,_("GID") . ": ");
$pdfFile->setFont("times","",10);
$pdfFile->Write(5,$account->general_uidNumber);
$pdfFile->Ln(5);
if ($account->domain) {
$pdfFile->setFont("times","B",10);
$pdfFile->Write(5,_("Domain") . ": ");
$pdfFile->setFont("times","",10);
$pdfFile->Write(5,$account->domain->name);
$pdfFile->Ln(5);
}
$pdfFile->setFont("times","B",10);
$pdfFile->Write(5,_("DN") . ": ");
$pdfFile->setFont("times","",9);
$pdfFile->Write(5,$account->general_dn);
if (is_array($account->unix_memberUid)) {
$pdfFile->Ln(5);
$pdfFile->setFont("times","B",10);
$pdfFile->Write(5,_("Members") . ": ");
$pdfFile->setFont("times","",10);
$pdfFile->Write(5,implode(", ", $account->unix_memberUid));
}
// space between two rows
if ($i < count($accounts) - 1) {
$pdfFile->Ln(12);
}
}
// Close PDF
$pdfFile->Close();
// Get relative url path
$fullpath = realpath('.');
$subdirs = explode('/', str_replace($_SESSION['lampath'], '', $fullpath));
for ($i=0; $i<count($subdirs); $i++ ) $filename .= '../';
// use timestamp and random number from ldap.inc as filename so it should be unique.
$filename .= 'tmp/' . $_SESSION['ldap']->rand . time() .'.pdf';
// Save PDF
$pdfFile->Output($filename);
// Output meta refresh to pdf-file
metaRefresh($filename);
// Return relative path of pdf-file
return $filename;
}
// lamPDF class || For defining own a Header and Footer
class lamPDF extends FPDF {
// Print page header
function header() {
$imageFile = substr(__FILE__,0,strlen(__FILE__)- 11) . "graphics/printLogo.jpg";
$this->Image($imageFile,10,10,50,20,"JPG");
$this->SetFont("arial","B",22);
$this->Cell(170,5,"LDAP Account Manager",0,1,"R",0);
$this->Ln(3);
$this->SetFont("times","",14);
$this->Cell(170,5,"- " . _("User information page") . " -",0,0,"R",0);
$this->SetLineWidth(0.8);
$this->Line(10,40,200,40);
$this->Line(10,42,200,42);
$this->SetY(50);
}
// Print page footer
function footer() {
$this->SetLineWidth(0.8);
$this->Line(10,280,200,280);
$this->Line(10,282,200,282);
$this->SetY(285);
$this->Cell(0,5,_("This document was automatically created by LDAP Account Manager"),0,0,"C",0);
}
}
// lamHostPDF class || For defining own a Header and Footer
class lamHostPDF extends FPDF {
// Print page header
function header() {
$imageFile = substr(__FILE__,0,strlen(__FILE__)- 11) . "graphics/printLogo.jpg";
$this->Image($imageFile,10,10,50,20,"JPG");
$this->SetFont("arial","B",22);
$this->Cell(170,5,"LDAP Account Manager",0,1,"R",0);
$this->Ln(3);
$this->SetFont("times","",14);
$this->Cell(170,5,"- " . _("Samba-Host information page") . " -",0,0,"R",0);
$this->SetLineWidth(0.8);
$this->Line(10,35,200,35);
$this->Line(10,37,200,37);
$this->SetY(45);
}
// Print page footer
function footer() {
$this->SetLineWidth(0.8);
$this->Line(10,280,200,280);
$this->Line(10,282,200,282);
$this->SetY(285);
$this->SetFont("arial","B",12);
$this->Cell(0,5,_("This document was automatically created by LDAP Account Manager"),0,0,"C",0);
$this->SetFont("arial","",12);
$this->Cell(0,5,$this->PageNo(),0,1,"R",0);
}
}
// lamGroupPDF class || For defining own Header and Footer
class lamGroupPDF extends FPDF {
// Print page header
function header() {
$imageFile = substr(__FILE__,0,strlen(__FILE__)- 11) . "graphics/printLogo.jpg";
$this->Image($imageFile,10,10,50,20,"JPG");
$this->SetFont("arial","B",22);
$this->Cell(170,5,"LDAP Account Manager",0,1,"R",0);
$this->Ln(3);
$this->SetFont("times","",14);
$this->Cell(170,5,"- " . _("Group information page") . " -",0,0,"R",0);
$this->SetLineWidth(0.8);
$this->Line(10,35,200,35);
$this->Line(10,37,200,37);
$this->SetY(45);
}
// Print page footer
function footer() {
$this->SetLineWidth(0.8);
$this->Line(10,280,200,280);
$this->Line(10,282,200,282);
$this->SetY(285);
$this->SetFont("arial","B",12);
$this->Cell(0,5,_("This document was automatically created by LDAP Account Manager"),0,0,"C",0);
$this->SetFont("arial","",12);
$this->Cell(0,5,$this->PageNo(),0,1,"R",0);
}
}

View File

@ -1,553 +0,0 @@
<?php
/*
$Id$
This code is part of LDAP Account Manager (http://www.sourceforge.net/projects/lam)
Copyright (C) 2003 Roland Gruber
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
// profiles.inc provides functions to load and save profiles for users/groups/hosts
// PHP 5 compatibility
if( phpversion() >= "5" ) ini_set( "zend.ze1_compatibility_mode", 1 );
include_once("config.inc");
include_once("account.inc");
include_once("ldap.inc");
// returns an array of String with all available user profiles (without .pru)
function getUserProfiles() {
$dir = @dir(substr(__FILE__, 0, strlen(__FILE__) - 17) . "/config/profiles/users");
$ret = array();
$pos = 0;
if ($dir) {
while ($entry = $dir->read()){
$ext = substr($entry, strlen($entry)-4, 4);
$name = substr($entry, 0, strlen($entry)-4);
if ($ext == ".pru") {
$ret[$pos] = $name;
$pos ++;
}
}
}
return $ret;
}
// returns an array of String with all available group profiles (without .prg)
function getGroupProfiles() {
$dir = @dir(substr(__FILE__, 0, strlen(__FILE__) - 17) . "/config/profiles/groups");
$ret = array();
$pos = 0;
if ($dir) {
while ($entry = $dir->read()){
$ext = substr($entry, strlen($entry)-4, 4);
$name = substr($entry, 0, strlen($entry)-4);
if ($ext == ".prg") {
$ret[$pos] = $name;
$pos ++;
}
}
}
return $ret;
}
// returns an array of String with all available host profiles (without .prh)
function getHostProfiles() {
$dir = @dir(substr(__FILE__, 0, strlen(__FILE__) - 17) . "/config/profiles/hosts");
$ret = array();
$pos = 0;
if ($dir) {
while ($entry = $dir->read()){
$ext = substr($entry, strlen($entry)-4, 4);
$name = substr($entry, 0, strlen($entry)-4);
if ($ext == ".prh") {
$ret[$pos] = $name;
$pos ++;
}
}
}
return $ret;
}
// loads an user profile
// $profile: name of the profile (without .pru)
// the return value is an account object
function loadUserProfile($profile) {
if (!eregi("^[0-9a-z_\\-]+$", $profile)) return false;
$acc = new account();
$file = substr(__FILE__, 0, strlen(__FILE__) - 17) . "/config/profiles/users/" . $profile . ".pru";
if (is_file($file) == True) {
$file = @fopen($file, "r");
if ($file) {
while (!feof($file)) {
$line = fgets($file, 1024);
if (($line == "\n")||($line[0] == "#")) continue; // ignore comments
// search keywords
if (substr($line, 0, 15) == "general_group: ") {
$acc->general_group = chop(substr($line, 15, strlen($line)-15));
continue;
}
if (substr($line, 0, 18) == "general_groupadd: ") {
$acc->general_groupadd = explode(";", chop(substr($line, 18, strlen($line)-18)));
continue;
}
if (substr($line, 0, 17) == "general_homedir: ") {
$acc->general_homedir = chop(substr($line, 17, strlen($line)-17));
continue;
}
if (substr($line, 0, 15) == "general_shell: ") {
$acc->general_shell = chop(substr($line, 15, strlen($line)-15));
continue;
}
if (substr($line, 0, 18) == "unix_password_no: ") {
$acc->unix_password_no = chop(substr($line, 18, strlen($line)-18));
continue;
}
if (substr($line, 0, 14) == "unix_pwdwarn: ") {
$acc->unix_pwdwarn = chop(substr($line, 14, strlen($line)-14));
continue;
}
if (substr($line, 0, 20) == "unix_pwdallowlogin: ") {
$acc->unix_pwdallowlogin = chop(substr($line, 20, strlen($line)-20));
continue;
}
if (substr($line, 0, 16) == "unix_pwdminage: ") {
$acc->unix_pwdminage = chop(substr($line, 16, strlen($line)-16));
continue;
}
if (substr($line, 0, 16) == "unix_pwdmaxage: ") {
$acc->unix_pwdmaxage = chop(substr($line, 16, strlen($line)-16));
continue;
}
if (substr($line, 0, 16) == "unix_pwdexpire: ") {
$acc->unix_pwdexpire = chop(substr($line, 16, strlen($line)-16));
continue;
}
if (substr($line, 0, 18) == "unix_deactivated: ") {
$acc->unix_deactivated = chop(substr($line, 18, strlen($line)-18));
continue;
}
if (substr($line, 0, 11) == "unix_host: ") {
$acc->unix_host = chop(substr($line, 11, strlen($line)-11));
continue;
}
if (substr($line, 0, 17) == "smb_password_no: ") {
$acc->smb_flags['N'] = chop(substr($line, 17, strlen($line)-17));
continue;
}
if (substr($line, 0, 16) == "smb_useunixpwd: ") {
$acc->smb_useunixpwd = chop(substr($line, 16, strlen($line)-16));
continue;
}
if (substr($line, 0, 12) == "smb_flagsD: ") {
$acc->smb_flags['D'] = chop(substr($line, 12, strlen($line)-12));
continue;
}
if (substr($line, 0, 12) == "smb_flagsX: ") {
$acc->smb_flags['X'] = chop(substr($line, 12, strlen($line)-12));
continue;
}
if (substr($line, 0, 15) == "smb_homedrive: ") {
$acc->smb_homedrive = chop(substr($line, 15, strlen($line)-15));
continue;
}
if (substr($line, 0, 16) == "smb_scriptPath: ") {
$acc->smb_scriptPath = chop(substr($line, 16, strlen($line)-16));
continue;
}
if (substr($line, 0, 17) == "smb_profilePath: ") {
$acc->smb_profilePath = chop(substr($line, 17, strlen($line)-17));
continue;
}
if (substr($line, 0, 25) == "smb_smbuserworkstations: ") {
$acc->smb_smbuserworkstations = chop(substr($line, 25, strlen($line)-25));
continue;
}
if (substr($line, 0, 13) == "smb_smbhome: ") {
$acc->smb_smbhome = chop(substr($line, 13, strlen($line)-13));
continue;
}
if (substr($line, 0, 12) == "smb_domain: ") {
if ($_SESSION['config']->is_samba3()) {
$dn = chop(substr($line, 12, strlen($line)-12));
if (! stristr($dn, "sambaDomainName=")) { // Samba 3 and Samba 2 profile
// get domain list
$doms = $_SESSION['ldap']->search_domains($_SESSION['config']->get_domainSuffix());
// search domain name
for ($d = 0; $d < sizeof($doms); $d++) {
if (strtolower($doms[$d]->name) == strtolower($dn)) {
$acc->smb_domain = $doms[$d];
break;
}
}
}
else { // Samba 3 and Samba 3 profile
// load domain object
$dom = new samba3domain();
$sr = @ldap_search($_SESSION['ldap']->server, $dn, "objectClass=sambaDomain");
if ($sr) {
$info = @ldap_get_entries($_SESSION['ldap']->server, $sr);
if ($info) {
// get domain attributes
@array_shift($info);
$dom->dn = $dn;
$dom->name = $info[0]['sambadomainname'][0];
$dom->SID = $info[0]['sambasid'][0];
$dom->nextRID = $info[0]['sambanextrid'][0];
$dom->nextUserRID = $info[0]['sambanextuserrid'][0];
$dom->nextGroupRID = $info[0]['sambanextgrouprid'][0];
if (isset($dom->RIDbase)) $dom->RIDbase = $info[0]['sambaalgorithmicridbase'][0];
}
}
$acc->smb_domain = $dom;
}
}
else {
$dom_name = chop(substr($line, 12, strlen($line)-12));
if (substr($dom_name, 0, 16) == "sambaDomainName=") { // Samba 2 and Samba 3 profile
// extract domain name from DN
$dom_name = substr($dom_name, 16, strlen($dom_name) - 16);
$pos = strpos($dom_name, ",");
$dom_name = substr($dom_name, 0, $pos);
$acc->smb_domain = $dom_name;
}
else { // Samba 2 and Samba 2 profile
$acc->smb_domain = $dom_name;
}
}
continue;
}
if (substr($line, 0, 7) == "quota: ") {
$acc->quota = chop(substr($line, 7, strlen($line)-7));
// split mountpoints
$acc->quota = explode(";", $acc->quota);
// split attributes
for ($i = 0; $i < sizeof($acc->quota); $i++) {
$temp = explode(",", $acc->quota[$i]);
$acc->quota[$i] = array();
$acc->quota[$i][0] = $temp[0];
$acc->quota[$i][2] = $temp[1];
$acc->quota[$i][3] = $temp[2];
$acc->quota[$i][6] = $temp[3];
$acc->quota[$i][7] = $temp[4];
}
}
}
fclose($file);
}
else {
StatusMessage("ERROR", "", _("Unable to load profile!") . " " . $file);
}
}
else {
StatusMessage("ERROR", "", _("Unable to load profile!") . " " . $file);
}
return $acc;
}
// loads an group profile
// $profile: name of the group profile (without .prg)
// the return value is an account object
function loadGroupProfile($profile) {
if (!eregi("^[0-9a-z_\\-]+$", $profile)) return false;
$acc = new account();
$file = substr(__FILE__, 0, strlen(__FILE__) - 17) . "/config/profiles/groups/" . $profile . ".prg";
if (is_file($file) == True) {
$file = @fopen($file, "r");
if ($file) {
while (!feof($file)) {
$line = fgets($file, 1024);
if (($line == "\n")||($line[0] == "#")) continue; // ignore comments
// search keywords
if (substr($line, 0, 12) == "smb_domain: ") {
if ($_SESSION['config']->is_samba3()) {
$dn = chop(substr($line, 12, strlen($line)-12));
// load domain object
$dom = new samba3domain();
$sr = @ldap_search($_SESSION['ldap']->server, $dn, "objectClass=sambaDomain");
if ($sr) {
$info = @ldap_get_entries($_SESSION['ldap']->server, $sr);
if ($info) {
// get domain attributes
@array_shift($info);
$dom->dn = $dn;
$dom->name = $info[0]['sambadomainname'][0];
$dom->SID = $info[0]['sambasid'][0];
$dom->nextRID = $info[0]['sambanextrid'][0];
$dom->nextUserRID = $info[0]['sambanextuserrid'][0];
$dom->nextGroupRID = $info[0]['sambanextgrouprid'][0];
if (isset($dom->RIDbase)) $dom->RIDbase = $info[0]['sambaalgorithmicridbase'][0];
}
}
$acc->smb_domain = $dom;
}
}
if (substr($line, 0, 7) == "quota: ") {
if ($_SESSION['config']->get_scriptPath()) {
$acc->quota = chop(substr($line, 7, strlen($line)-7));
// split mountpoints
$acc->quota = explode(";", $acc->quota);
// split attributes
for ($i = 0; $i < sizeof($acc->quota); $i++) {
$temp = explode(",", $acc->quota[$i]);
$acc->quota[$i] = array();
$acc->quota[$i][0] = $temp[0];
$acc->quota[$i][2] = $temp[1];
$acc->quota[$i][3] = $temp[2];
$acc->quota[$i][6] = $temp[3];
$acc->quota[$i][7] = $temp[4];
}
}
}
}
fclose($file);
}
else {
StatusMessage("ERROR", "", _("Unable to load profile!") . " " . $file);
}
}
else {
StatusMessage("ERROR", "", _("Unable to load profile!") . " " . $file);
}
return $acc;
}
// loads an host profile
// $profile: name of the host profile (without .prh)
// the return value is an account object
function loadHostProfile($profile) {
if (!eregi("^[0-9a-z_\\-]+$", $profile)) return false;
$acc = new account();
$file = substr(__FILE__, 0, strlen(__FILE__) - 17) . "/config/profiles/hosts/" . $profile . ".prh";
if (is_file($file) == True) {
$file = @fopen($file, "r");
if ($file) {
while (!feof($file)) {
$line = fgets($file, 1024);
if (($line == "\n")||($line[0] == "#")) continue; // ignore comments
// search keywords
if (substr($line, 0, 15) == "general_group: ") {
$acc->general_group = chop(substr($line, 15, strlen($line)-15));
continue;
}
if (substr($line, 0, 12) == "smb_domain: ") {
if ($_SESSION['config']->is_samba3()) {
$dn = chop(substr($line, 12, strlen($line)-12));
// load domain object
$dom = new samba3domain();
$sr = @ldap_search($_SESSION['ldap']->server, $dn, "objectClass=sambaDomain");
if ($sr) {
$info = @ldap_get_entries($_SESSION['ldap']->server, $sr);
if ($info) {
// get domain attributes
@array_shift($info);
$dom->dn = $dn;
$dom->name = $info[0]['sambadomainname'][0];
$dom->SID = $info[0]['sambasid'][0];
$dom->nextRID = $info[0]['sambanextrid'][0];
$dom->nextUserRID = $info[0]['sambanextuserrid'][0];
$dom->nextGroupRID = $info[0]['sambanextgrouprid'][0];
if (isset($dom->RIDbase)) $dom->RIDbase = $info[0]['sambaalgorithmicridbase'][0];
}
}
$acc->smb_domain = $dom;
}
else $acc->smb_domain = chop(substr($line, 12, strlen($line)-12));
continue;
}
}
fclose($file);
}
else {
StatusMessage("ERROR", "", _("Unable to load profile!") . " " . $file);
}
}
else {
StatusMessage("ERROR", "", _("Unable to load profile!") . " " . $file);
}
return $acc;
}
// saves an account object to an user profile
// file is created, if needed
// $profile: name of the user profile (without .pru)
// $account: account object which is saved
function saveUserProfile($account, $profile) {
if (!$_SESSION['loggedIn'] == true) return false;
// check profile name
if (!eregi("^[0-9a-z\\-_]+$", $profile)) return false;
if (!is_object($account)) {
StatusMessage("ERROR", "", _("saveUserProfile: account has wrong type!"));
return false;
}
$path = substr(__FILE__, 0, strlen(__FILE__) - 17) . "/config/profiles/users/" . $profile . ".pru";
$file = @fopen($path, "w");
if ($file) {
// replace user and group names
$homedir = $account->general_homedir;
$profpath = $account->smb_profilePath;
$scriptPath = $account->smb_scriptPath;
$smbhome = $account->smb_smbhome;
if ($account->general_username) {
$homedir = str_replace($account->general_username, "\$user", $homedir);
$profpath = str_replace($account->general_username, "\$user", $profpath);
$scriptPath = str_replace($account->general_username, "\$user", $scriptPath);
$smbhome = str_replace($account->general_username, "\$user", $smbhome);
}
if ($account->general_group) {
$homedir = str_replace($account->general_group, "\$group", $homedir);
$profpath = str_replace($account->general_group, "\$group", $profpath);
$scriptPath = str_replace($account->general_group, "\$group", $scriptPath);
$smbhome = str_replace($account->general_group, "\$group", $smbhome);
}
// write attributes
if (isset($account->general_group)) fputs($file, "general_group: " . $account->general_group . "\n");
if (isset($account->general_groupadd)) fputs($file, "general_groupadd: " . implode(";", $account->general_groupadd) . "\n");
if (isset($account->general_homedir)) fputs($file, "general_homedir: " . $homedir . "\n");
if (isset($account->general_shell)) fputs($file, "general_shell: " . $account->general_shell . "\n");
if (isset($account->unix_password_no)) fputs($file, "unix_password_no: " . $account->unix_password_no . "\n");
if (isset($account->unix_pwdwarn)) fputs($file, "unix_pwdwarn: " . $account->unix_pwdwarn . "\n");
if (isset($account->unix_pwdallowlogin)) fputs($file, "unix_pwdallowlogin: " . $account->unix_pwdallowlogin . "\n");
if (isset($account->unix_pwdminage)) fputs($file, "unix_pwdminage: " . $account->unix_pwdminage . "\n");
if (isset($account->unix_pwdmaxage)) fputs($file, "unix_pwdmaxage: " . $account->unix_pwdmaxage . "\n");
if (isset($account->unix_pwdexpire)) fputs($file, "unix_pwdexpire: " . $account->unix_pwdexpire . "\n");
if (isset($account->unix_deactivated)) fputs($file, "unix_deactivated: " . $account->unix_deactivated . "\n");
if (isset($account->unix_host)) fputs($file, "unix_host: " . $account->unix_host . "\n");
if (isset($account->smb_flags['N'])) fputs($file, "smb_password_no: " . $account->smb_flags['N'] . "\n");
if (isset($account->smb_useunixpwd)) fputs($file, "smb_useunixpwd: " . $account->smb_useunixpwd . "\n");
if (isset($account->smb_flags['D'])) fputs($file, "smb_flagsD: " . $account->smb_flags['D'] . "\n");
if (isset($account->smb_flags['X'])) fputs($file, "smb_flagsX: " . $account->smb_flags['X'] . "\n");
if (isset($account->smb_homedrive)) fputs($file, "smb_homedrive: " . $account->smb_homedrive . "\n");
if (isset($account->smb_scriptPath)) fputs($file, "smb_scriptPath: " . $scriptPath . "\n");
if (isset($account->smb_profilePath)) fputs($file, "smb_profilePath: " . $profpath . "\n");
if (isset($account->smb_smbuserworkstations)) fputs($file, "smb_smbuserworkstations: " . $account->smb_smbuserworkstations . "\n");
if (isset($account->smb_smbhome)) fputs($file, "smb_smbhome: " . $smbhome . "\n");
if (isset($account->smb_domain)) fputs($file, "smb_domain: " . $account->smb_domain . "\n");
if (isset($account->quota)) {
// convert array to string
for ($i = 0; $i < sizeof($account->quota); $i++) {
$account->quota[$i] = implode(",", $account->quota[$i]);
}
$temp = implode(";", $account->quota);
fputs($file, "quota: " . $temp . "\n");
}
// close file
fclose($file);
}
else {
StatusMessage("ERROR", _("Unable to save profile!"), $path);
return false;
}
return true;
}
// saves an account object to an group profile
// file is created, if needed
// $profile: name of the group profile (without .prg)
// $account: account object which is saved
function saveGroupProfile($account, $profile) {
if (!$_SESSION['loggedIn'] == true) return false;
// check profile name
if (!eregi("^[0-9a-z\\-_]+$", $profile)) return false;
if (!is_object($account)) {
StatusMessage("ERROR", "", _("saveGroupProfile: account has wrong type!"));
return false;
}
$path = substr(__FILE__, 0, strlen(__FILE__) - 17) . "/config/profiles/groups/" . $profile . ".prg";
$file = @fopen($path, "w");
if ($file) {
// write attributes
if (isset($account->smb_domain)) fputs($file, "smb_domain: " . $account->smb_domain . "\n");
if (isset($account->quota)) {
// convert array to string
for ($i = 0; $i < sizeof($account->quota); $i++) {
$account->quota[$i] = implode(",", $account->quota[$i]);
}
$temp = implode(";", $account->quota);
fputs($file, "quota: " . $temp . "\n");
}
// close file
fclose($file);
}
else {
StatusMessage("ERROR", _("Unable to save profile!"), $path);
return false;
}
return true;
}
// saves an account object to an host profile
// file is created, if needed
// $profile: name of the host profile (without .prh)
// $account: account object which is saved
function saveHostProfile($account, $profile) {
if (!$_SESSION['loggedIn'] == true) return false;
// check profile name
if (!eregi("^[0-9a-z\\-_]+$", $profile)) return false;
if (!is_object($account)) {
StatusMessage ("ERROR", "", _("saveHostProfile: account has wrong type!"));
return false;
}
$path = substr(__FILE__, 0, strlen(__FILE__) - 17) . "/config/profiles/hosts/" . $profile . ".prh";
$file = @fopen($path, "w");
if ($file) {
// write attributes
if (isset($account->general_group)) fputs($file, "general_group: " . $account->general_group . "\n");
if (isset($account->smb_domain)) fputs($file, "smb_domain: " . $account->smb_domain . "\n");
// close file
fclose($file);
}
else {
StatusMessage("ERROR", _("Unable to save profile!"), $path);
return false;
}
return true;
}
// deletes a user profile
function delUserProfile($file) {
if (!$_SESSION['loggedIn'] == true) return false;
if (!eregi("^[0-9a-z\\-_]+$", $file)) return false;
$prof = substr(__FILE__, 0, strlen(__FILE__) - 16) . "config/profiles/users/".$file.".pru";
if (is_file($prof)) {
return @unlink($prof);
}
}
// deletes a group profile
function delGroupProfile($file) {
if (!$_SESSION['loggedIn'] == true) return false;
if (!eregi("^[0-9a-z\\-_]+$", $file)) return false;
$prof = substr(__FILE__, 0, strlen(__FILE__) - 16) . "config/profiles/groups/".$file.".prg";
if (is_file($prof)) {
return @unlink($prof);
}
}
// deletes a host profile
function delHostProfile($file) {
if (!$_SESSION['loggedIn'] == true) return false;
if (!eregi("^[0-9a-z\\-_]+$", $file)) return false;
$prof = substr(__FILE__, 0, strlen(__FILE__) - 16) . "config/profiles/hosts/".$file.".prh";
if (is_file($prof)) {
return @unlink($prof);
}
}
?>

View File

@ -1,95 +0,0 @@
<?php
/*
$Id$
This code is part of LDAP Account Manager (http://www.sourceforge.net/projects/lam)
Copyright (C) 2003 Michael Duergner
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
LDAP Account Manager status messages.
*/
// PHP 5 compatibility
if( phpversion() >= "5" ) ini_set( "zend.ze1_compatibility_mode", 1 );
function StatusMessage($MessageTyp,$MessageHeadline,$MessageText,$MessageVariables = array()) {
/* Setting CSS-StyleSheet class depending on the $MessageTyp and rewriting $MessageTyp with a readable string. */
if($MessageTyp == "INFO") {
$class = "class=\"statusInfo\"";
}
elseif($MessageTyp == "WARN") {
$class = "class=\"statusWarn\"";
}
elseif($MessageTyp == "ERROR") {
$class = "class=\"statusError\"";
}
/* Set output-message, when none or false $MessageTyp is submitted. */
else {
$class = "class=\"statusError\"";
$MessageTyp = _("LAM Internal Error");
$MessageHeadline = _("Invalid/Missing Message type");
$MessageText = _("Please report this error to the Bug-Tracker at {link=http://lam.sf.net}LDAP Account Manager Development Team{endlink}. The error number is {bold}0001:Invalid/Missing Message type.{endbold} Thank you.");
}
$MessageHeadline = parseMessageString($MessageHeadline);
$MessageText = parseMessageString($MessageText);
if (is_file("../graphics/error.png")) {
$MessageTyp = "<img src=\"../graphics/" . strtolower($MessageTyp) . ".png\" alt=\"" . $MessageTyp . "\" width=\"50\" height=\"50\">";
}
else {
$MessageTyp = "<img src=\"../../graphics/" . strtolower($MessageTyp) . ".png\" alt=\"" . $MessageTyp . "\" width=\"50\" height=\"50\">";
}
$MessageHeadline = "<h2 " . $class . ">" . $MessageHeadline . "</h2>"; // Format $MessageHeadline
$MessageText = "<p " . $class . ">" . $MessageText . "</p>"; // Format $MessageText
$format = "<div " . $class . ">\n<br>\n<table>\n<tr>\n<td>" . $MessageTyp . "</td>\n<td>" . $MessageHeadline . $MessageText . "</td>\n</tr>\n</table>\n<br>\n</div>\n";
if (is_array($MessageVariables)) {
array_unshift($MessageVariables, $format);
call_user_func_array('printf',$MessageVariables);
}
else {
printf($format, $MessageVariables);
}
}
/* Use the three replace functions on the submitted Text. */
function parseMessageString($MessageString) {
return linkText(colorText(boldText($MessageString)));
}
/* Replace {bold} and {endbold} with <b> and </b> HTML-Tags. */
function boldText($text) {
$pattern = "/\{bold\}([^{]*)\{endbold\}/"; // Regular expression matching {bold}[Text]{endbold}
$replace = "<b class=\"status\">\\1</b>"; // Replace pattern
return preg_replace($pattern,$replace,$text);
}
/* Replace {color=#[HEX-Value]} or {color=[HEX-Value]} and {endcolor} with <font color="#[HEX-Value]"> and </font> HTML-Tags. */
function colorText($text) {
$pattern = "/\{color=#?([0-9,a-f,A-F]{6})\}([^{]*)\{endcolor\}/"; // Regular expression matching {color=#[HEX-Value]}[Text]{endcolor} or {color=[HEX-Value]}[Text]{endcolor}
$replace = "<font color=\"#\\1\">\\2</font>"; // Replace pattern
return preg_replace($pattern,$replace,$text);
}
/* Replace {link=[Link-Target]} and {endlink} with <a href="[Link-Target]" target="_blank"> and </a> HTML-Tags. */
function linkText($text) {
$pattern = "/\{link=([^}]*)\}([^{]*)\{endlink\}/"; // Regular expression matching {link=[Link-Target]}[Text]{endlink}
$replace = "<a href=\"\\1\" target=\"_blank\">\\2</a>"; //Replace pattern
return preg_replace($pattern,$replace,$text);
}
?>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,10 +0,0 @@
#!/bin/bash
# $Id$
#
# Copyright (C) 2003 Roland Gruber
# This code is part of LDAP Account Manager (http://www.sourceforge.net/projects/lam)
# This script generates a messages.mo file from the translated messages.po file.
rm -f messages.mo
msgfmt -v messages.po -o messages.mo

View File

@ -1,11 +0,0 @@
#!/bin/bash
# $Id$
#
# Copyright (C) 2003 Roland Gruber
# This code is part of LDAP Account Manager (http://www.sourceforge.net/projects/lam)
# This script generates a messages.po file for translation from all .inc and .php files.
cp messages.header messages.po
find ../ -name *.php -exec xgettext --keyword=_ -L PHP -j --omit-header -s {} \;
find ../ -name *.inc -exec xgettext --keyword=_ -L PHP -j --omit-header -s {} \;

View File

@ -1,9 +0,0 @@
#!/bin/bash
# $Id$
#
# Copyright (C) 2003 Roland Gruber
# This code is part of LDAP Account Manager (http://www.sourceforge.net/projects/lam)
# This script is run after make_po to merge the existing German translations to messages.po
msgmerge -v ../locale/de_DE/LC_MESSAGES/messages.po messages.po -o messages.po

View File

@ -1,9 +0,0 @@
#!/bin/bash
# $Id$
#
# Copyright (C) 2003 Roland Gruber
# This code is part of LDAP Account Manager (http://www.sourceforge.net/projects/lam)
# This script is run after make_po to merge the existing German translations to messages.po
msgmerge -v ../locale/fr_FR/LC_MESSAGES/messages.po messages.po -o messages.po

View File

@ -1,9 +0,0 @@
#!/bin/bash
# $Id$
#
# Copyright (C) 2004 Roland Gruber
# This code is part of LDAP Account Manager (http://www.sourceforge.net/projects/lam)
# This script is run after make_po to merge the existing Hungarian translations to messages.po
msgmerge -v ../locale/hu_HU/LC_MESSAGES/messages.po messages.po -o messages.po

View File

@ -1,9 +0,0 @@
#!/bin/bash
# $Id$
#
# Copyright (C) 2004 Roland Gruber
# This code is part of LDAP Account Manager (http://www.sourceforge.net/projects/lam)
# This script is run after make_po to merge the existing Japanese translations to messages.po
msgmerge -v ../locale/ja_JP/LC_MESSAGES/messages.po messages.po -o messages.po

View File

@ -1,16 +0,0 @@
#
# LDAP Account Manager
#
msgid ""
msgstr ""
"Project-Id-Version: LAM 0.4.2\n"
"Report-Msgid-Bugs-To: post@rolandgruber.de \n"
"POT-Creation-Date: 2004-01-14 17:45+0200\n"
"PO-Revision-Date: 2004-01-14 17:45+0200\n"
"Last-Translator: Roland Gruber <post@rolandgruber.de>\n"
"Language-Team: German <post@rolandgruber.de>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=ISO-8859-15\n"
"Content-Transfer-Encoding: 8bit\n"

View File

@ -1,4 +0,0 @@
<Files ~ *>
Order allow,deny
Deny from all
</Files>

View File

@ -1,130 +0,0 @@
Alle:
- config: Config-Objekt für die Einstellungen
- ldap: LDAP-Objekt für Funktionen rund um LDAP
- language: Sprache für LAM
- header: String-Array mit Standard-HTML-Header
- lampath: String mit Pfad zum LAM-Verzeichnis
massdetail:
- mass_accounts: Array aus account-Objekten
- mass_errors: Array aus Fehlermeldungen. Index ist gleich Index von accounts
masscreate:
- mass_accounts: Array aus account-Objekten
- mass_pointer: Zeigt auf den aktuellen Startpunkt, ab dem Benutzer angelegt werden sollen.
Noetig, da mit Meta-Refreshs gearbeitet werden muss
- mass_errors: Array aus Fehlermeldungen. Index ist gleich Index von accounts
- mass_group_suffix: Suffix, unter welchem eine Gruppe bei Bedarf angelegt wird
- mass_group_selectprofile: Profil, mit dem eine Gruppe bei Bedarf angelegt werden soll
main:
- domain_message: Wird auf der "neue Domain" Seite ausgegeben, wenn keine Domäne gefunden wurde
listusers:
- trans_primary_hash: Tabelle mit GID - Gruppenname
- userlist: Useraccounts vom LDAP-Server
- usr_suffix: aktueller Suffix
- usr_units: Suffixliste für Benutzer
listhosts:
- hst_info: Hostaccounts vom LDAP-Server
- hst_suffix: aktueller Suffix
- hst_units: Suffixliste für Hosts
listgroups:
- grp_info: Gruppenaccounts vom LDAP-Server
- grp_suffix: aktueller Suffix
- grp_units: Suffixliste für Gruppen
listdomains:
- dom_info: Domänen vom LDAP-Server
- dom_suffix: aktueller Suffix
- dom_units: Suffixliste für Domänen
domain:
- domain_message: Wird auf der "neue Domain" Seite ausgegeben, wenn keine Domäne gefunden wurde
convsave, confmain, conflogin:
- conf_passwd: Eingabe von confmain
- conf_passwd1: Eingabe von confmain
- conf_passwd2: Eingabe von confmain
- conf_serverurl: Eingabe von confmain
- conf_cachetimeout: Eingabe von confmain
- conf_admins: Eingabe von confmain
- conf_suffusers: Eingabe von confmain
- conf_suffgroups: Eingabe von confmain
- conf_suffhosts: Eingabe von confmain
- conf_suffdomains: Eingabe von confmain
- conf_minUID: Eingabe von confmain
- conf_maxUID: Eingabe von confmain
- conf_minGID: Eingabe von confmain
- conf_maxGID: Eingabe von confmain
- conf_minMach: Eingabe von confmain
- conf_maxMach: Eingabe von confmain
- conf_usrlstattr: Eingabe von confmain
- conf_grplstattr: Eingabe von confmain
- conf_hstlstattr: Eingabe von confmain
- conf_maxlistentries: Eingabe von confmain
- conf_lang: Eingabe von confmain
- conf_scriptpath: Eingabe von confmain
- conf_scriptserver: Eingabe von confmain
- conf_samba3: Eingabe von confmain
- conf_filename: Dateiname des Profils
useredit:
- shellist: Array mit allen shells
- account_old: Object account. Hier wird beim laden eines Accounts alle alten Werte zwischengespeichert
- account: Object account. Hier wird der aktuelle Eintrag gespeichert
- final_changegids: boolean. Wenn gesetzt, werden die gids in ldap angepasst
- hostDN: Array mit allen hosts.
hostedit:
- account: s.o.
- account_old:
- final_changegids:
- shelllist:
groupedit:
- account: s.o.
- account_old:
- final_changeids:
- userDN: Array mit allen Benutzern
- Account: ??? Tipfehler
account.inc:
- userDN: array mit allen Benutzern
- groupDN: array mit allen Gruppen
- hostDN: array mit allen Gruppen
- account: s.o.
- final_changeids: s.o.
delete.php
- delete_dn : Liste der DNs, die gelscht werden sollen.
confwiz/*.php
- confwiz_config: Config-Objekt mit Optionen
- confwiz_ldap: LDAP-Objekt
- conwiz_masterpwd: Hauptpasswort für Einstellungen, zur Überprüfung des Admins

View File

@ -1,511 +0,0 @@
/*
$Id$
This code is part of LDAP Account Manager (http://www.sourceforge.net/projects/lam)
Copyright (C) 2003 Leonhard Walchshäusl
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more detaexils.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
/* CSS layout for LAM */
/**
* global page layout
*
*/
h1,h2,h3,h4,p,ul,ol,li,div,td,th,address,blockquote,b,i {
font-family:Arial,Verdana,sans-serif;
}
body {
background-color:#F5F5F5;
}
/* links */
a {
color:blue;
text-decoration:none;
}
a:visited {
color:blue;
text-decoration:none;
}
a:hover {
color:red;
text-decoration:none;
}
a:active {
color:red;
text-decoration:none;
}
form { }
input {
font-weight:bold;
background-color:#CCCCFF;
}
fieldset {
background-color:#EEEEEE;
}
legend {
color:#007a3b;
}
/**
* style for userlist.php
*
*/
/* table preferences */
table.userlist {
border-width:1px;
border-style:solid;
border-color:#9b8523;
}
/* color of entry rows */
tr.userlist {
background-color:#fffde2;
}
/* color of head row */
tr.userlist-head {
background-color:#fff2a3;
font-weight:bold;
}
/* color of rows on mouseOver */
tr.userlist-over {
background-color:#ccccff;
}
/* color of checked rows */
tr.userlist-checked {
background-color:#f27c71;
}
/* color for active page digit */
td.userlist-activepage {
color:red;
}
/* style of navigation bar */
td.userlist-navbar {
color:#AAAAAA;
}
table.userlist-navbar {
background-color:#fff2a3;
border-width:1px;
border-style:solid;
border-color:#9b8523;
}
td.userlist-navbartext {
color:green;
font-family:Verdana,sans-serif;
font-size:12px;
}
/* style of active column */
th.userlist-activecolumn {
background-color:#fffde2;
}
/**
* table style for grouplist.php
*
*/
/* navigation bar */
table.groupnav {
background-color:#a8c3ff;
border-width:1px;
border-style:solid;
border-color:#7167bf;
}
/* text in navigation bar */
td.groupnav-text {
color:green;
font-family:Verdana,sans-serif;
font-size:12px;
}
/* color for active page digit */
td.groupnav-activepage {
color:red;
}
/* table preferences */
table.grouplist {
border-width:1px;
border-style:solid;
border-color:#7167bf;
}
/* color of entry rows */
tr.grouplist {
background-color:#d6e3ff;
}
/* color of head row */
tr.grouplist-head {
background-color:#a8c3ff;
}
/* color of sorted column in head row */
th.grouplist-sort {
background-color:#d6e3ff;
}
/* color of rows on mouseOver */
tr.grouplist-over {
background-color:#C7E7C7;
}
/* color of checked rows */
tr.grouplist-checked {
background-color:#f27c71;
}
/**
* table style for hostlist.php
*
*/
/* */
table.hostnav {
background-color:#ffc4ba;
border-width:1px;
border-style:solid;
border-color:#911a1a;
}
/* text in navigation bar */
td.hostnav-text {
color:green;
font-family:Verdana,sans-serif;
font-size:12px;
}
/* color for active page digit */
td.hostnav-activepage {
color:red;
}
/* table preferences */
table.hostlist {
border-width:1px;
border-style:solid;
border-color:#911a1a;
}
/* color of entry rows */
tr.hostlist {
background-color:#ffe2dd;
}
/* color of head row */
tr.hostlist-head {
background-color:#ffc4ba;
}
/* color of sorted column in head row */
th.hostlist-sort {
background-color:#ffe2dd;
}
/* color of rows on mouseOver */
tr.hostlist-over {
background-color:#ffe265;
}
/* color of checked rows */
tr.hostlist-checked {
background-color:#f27c71;
}
/**
* table style for domainlist.php
*
*/
/* */
table.domainnav {
background-color:#a8ddbf;
border-width:1px;
border-style:solid;
border-color:#1d993e;
}
/* text in navigation bar */
td.domainnav-text {
color:green;
font-family:Verdana,sans-serif;
font-size:12px;
}
/* color for active page digit */
td.domainnav-activepage {
color:red;
}
/* table preferences */
table.domainlist {
border-width:1px;
border-style:solid;
border-color:#1d993e;
}
/* color of entry rows */
tr.domainlist {
background-color:#c9ddd2;
}
/* color of head row */
tr.domainlist-head {
background-color:#a8ddbf;
}
/* color of sorted column in head row */
th.domainlist-sort {
background-color:#c9ddd2;
}
/* color of rows on mouseOver */
tr.domainlist-over {
background-color:#ffe265;
}
/* color of checked rows */
tr.domainlist-checked {
background-color:#f27c71;
}
/**
* style for domain.php
*
*/
/* fieldset and legend */
fieldset.domedit {
background-color:#c9ddd2;
}
legend.domedit {
color:blue;
}
/**
* table style for delete.php
*
*/
/* table preferences */
table.account {
border-width:0px;
border-style:solid;
border-color:#000000;
}
/* color of entry rows */
tr.account {
background-color:#FFFFEE;
}
/**
* Color and font definitions for templates/status.php
*
*/
/* Background olor for the different Status Messages */
div.statusInfo {
background-color:#5C7EC6;
}
div.statusWarn {
background-color:#CE8037;
}
div.statusError {
background-color:#C65146;
}
/* H1 (MessageTyp) font size, family, color, and some more settings for the different Status Messages */
h1.statusInfo {
font-size:16pt;
font-family:Arial,sans-serif;
color:#FFFFFF;
margin-left:20px;
}
h1.statusWarn {
font-size:16pt;
font-family:Arial,sans-serif;
color:#FFFFFF;
margin-left:20px;
}
h1.statusError {
font-size:16pt;
font-family:Arial,sans-serif;
color:#FFFFFF;
margin-left:20px;
}
/* H2 (MessageHeadline) font size, family, color, and some more settings for the different Status Messages */
h2.statusInfo {
font-size:13pt;
font-family:Arial,sans-serif;
color:#FFFFFF;
margin-left:25px;
margin-right:25px;
}
h2.statusWarn {
font-size:13pt;
font-family:Arial,sans-serif;
color:#FFFFFF;
margin-left:25px;
margin-right:25px;
}
h2.statusError {
font-size:13pt;
font-family:Arial,sans-serif;
color:#FFFFFF;
margin-left:25px;
margin-right:25px;
}
/* P (MessageText) font size, family, color, and some more settings for the different Status Messages */
p.statusInfo {
font-size:11pt;
font-family:Times,serif;
color:#FFFFFF;
margin-left:35px;
margin-right:35px;
}
p.statusWarn {
font-size:11pt;
font-family:Times,serif;
color:#FFFFFF;
margin-left:35px;
margin-right:35px;
}
p.statusError {
font-size:11pt;
font-family:Times,serif;
color:#FFFFFF;
margin-left:35px;
margin-right:35px;
}
/**
* table style for groupedit.php
*
*/
fieldset.groupedit-bright {
background-color:#d6e3ff;
}
fieldset.groupedit-middle {
background-color:#C7E7C7;
}
legend.groupedit-bright {
color:blue;
}
fieldset.groupedit-dark {
background-color:#7167bf;
}
legend.groupedit-dark {
color:blue;
}
select.groupedit-bright {
background-color:#d6e3ff;
}
/**
* table style for hostedit.php
*
*/
fieldset.hostedit-bright {
background-color:#ffe2dd;
}
legend.hostedit-bright {
color:blue;
}
fieldset.hostedit-dark {
background-color:#ffc4ba;
}
legend.hostedit-dark {
color:blue;
}
select.hostedit-bright {
background-color:#ffc4ba;
}
/**
* table style for useredit.php
*
*/
fieldset.useredit-bright {
background-color:#fff2a3;
}
legend.useredit-bright {
color:blue;
}
fieldset.useredit-dark {
background-color:#CCCCFF;
}
legend.useredit-dark {
color:blue;
}
select.useredit-bright {
background-color:#CCCCFF;
}

View File

@ -1,866 +0,0 @@
<?php
/*
$Id$
This code is part of LDAP Account Manager (http://www.sourceforge.net/projects/lam)
Copyright (C) 2003 Tilo Lutz
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
LDAP Account Manager displays table for creating or modifying accounts in LDAP
*/
// include all needed files
include_once('../../lib/account.inc'); // File with all account-funtions
include_once('../../lib/config.inc'); // File with configure-functions
include_once('../../lib/profiles.inc'); // functions to load and save profiles
include_once('../../lib/status.inc'); // Return error-message
include_once('../../lib/pdf.inc'); // Return a pdf-file
include_once('../../lib/ldap.inc'); // LDAP-functions
// Start session
session_save_path('../../sess');
@session_start();
// Redirect to startpage if user is not loged in
if (!isset($_SESSION['loggedIn'])) {
metaRefresh("../login.php");
die;
}
// Set correct language, codepages, ....
setlanguage();
/* groupedit.php is using dynamic session varialenames so
* we can run several copies of groupedit.php at the same
* time
* $varkey is the dynamic part of the variable name
*/
if (!isset($_POST['varkey'])) $varkey = session_id().time();
else $varkey = $_POST['varkey'];
if (!isset($_SESSION['account_'.$varkey.'_account_new'])) $_SESSION['account_'.$varkey.'_account_new'] = new account();
if (!isset($_SESSION['account_'.$varkey.'_final_changegids'])) $_SESSION['account_'.$varkey.'_final_changegids'] = '';
// Register Session-Variables with references so we don't net to change to complete code if names changes
$account_new =& $_SESSION['account_'.$varkey.'_account_new'];
$final_changegids =& $_SESSION['account_'.$varkey.'_final_changegids'];
if (is_object($_SESSION['account_'.$varkey.'_account_old'])) $account_old =& $_SESSION['account_'.$varkey.'_account_old'];
$ldap_intern =& $_SESSION['ldap'];
$config_intern =& $_SESSION['config'];
$header_intern =& $_SESSION['header'];
$userDN_intern =& $_SESSION['userDN'];
// $_GET is only valid if groupedit.php was called from grouplist.php
if (isset($_GET['DN']) && $_GET['DN']!='') {
// groupedit.php should edit an existing account
// reset variables
if (isset($_SESSION['account_'.$varkey.'_account_old'])) {
unset($account_old);
unset($_SESSION['account_'.$varkey.'_account_old']);
}
$_SESSION['account_'.$varkey.'_account_old'] = new account();
$account_old =& $_SESSION['account_'.$varkey.'_account_old'];
// get "real" DN from variable
$DN = str_replace("\'", '',$_GET['DN']);
if ($_GET['DN'] == $DN) $DN = str_replace("'", '',$_GET['DN']);
// Load existing group
$account_new = loadgroup($DN);
// Get a copy of original host
$account_old = $account_new;
// Store only DN without cn=$name
$account_new->general_dn = substr($account_new->general_dn, strpos($account_new->general_dn, ',')+1);
$final_changegids = '';
// Display general-page
$select_local = 'general';
}
// Startcondition. groupedit.php was called from outside to create a new group
else if (count($_POST)==0) {
// Create new account object with settings from default profile
$account_new = loadGroupProfile('default');
$account_new ->type = 'group';
if ($config_intern->scriptServer) {
// load quotas and check if quotas from profile are valid
$quotas = getquotas(array($account_new));
for ($i=0; $i<count($account_new->quota); $i++) $profile_quotas[] = $account_new->quota[$i][0];
for ($i=0; $i<count($quotas[0]->quota); $i++) {
$real_quotas[] = $quotas[0]->quota[$i][0];
if (is_array($profile_quotas)) {
if (!in_array($quotas[0]->quota[$i][0], $profile_quotas)) $account_new->quota[]=$quotas[0]->quota[$i];
}
else $account_new->quota[]=$quotas[0]->quota[$i];
}
$j=0;
// delete not existing quotas
while (isset($account_new->quota[$j][0])) {
// remove invalid quotas
if (!in_array($account_new->quota[$j][0], $real_quotas)) unset($account_new->quota[$j]);
else $j++;
}
// Beautify array, repair index
if (is_array($account_new->quota)) $account_new->quota = array_values($account_new->quota);
// Set used blocks
for ($i=0; $i<count($account_new->quota); $i++) {
$account_new->quota[$i][1] = 0;
$account_new->quota[$i][5] = 0;
}
}
// Display general-page
$select_local = 'general';
}
switch ($_POST['select']) {
/* Select which part of page should be loaded and check values
* groupmembers = page with all users which are additional members of group
* general = startpage, general account paramters
* samba = page with all samba-related parameters e.g. smbpassword
* quota = page with all quota-related parameters e.g. hard file quota
* final = last page shown before account is created/modified
* finish = page shown after account has been created/modified
*/
case 'groupmembers':
do { // X-Or, only one if() can be true
if (isset($_POST['users']) && isset($_POST['add'])) { // Add users to list
// Add new user
if (!is_array($account_new->unix_memberUid)) $account_new->unix_memberUid = array();
$account_new->unix_memberUid = array_merge($account_new->unix_memberUid, $_POST['users']);
// remove doubles
$account_new->unix_memberUid = array_flip($account_new->unix_memberUid);
array_unique($account_new->unix_memberUid);
$account_new->unix_memberUid = array_flip($account_new->unix_memberUid);
// sort users
sort($account_new->unix_memberUid);
break;
}
if (isset($_POST['members']) && isset($_POST['remove'])) { // remove users from list
$account_new->unix_memberUid = array_delete($_POST['members'], $account_new->unix_memberUid);
break;
}
} while(0);
// display groupmembers page
$select_local = 'groupmembers';
break;
case 'general':
if (!$_POST['load']) {
if (($account_new->general_username != $_POST['f_general_username']) && ereg('[A-Z]$', $_POST['f_general_username']))
$errors[] = array('WARN', _('Groupname'), _('You are using a capital letters. This can cause problems because not all programs are case-sensitive.'));
// Write all general attributes into $account_new if no profile should be loaded
$account_new->general_dn = $_POST['f_general_suffix'];
$account_new->general_username = $_POST['f_general_username'];
$account_new->general_uidNumber = $_POST['f_general_uidNumber'];
$account_new->general_gecos = $_POST['f_general_gecos'];
// Check if values are OK and set automatic values. if not error-variable will be set
// Check if Groupname contains only valid characters
if ( !ereg('^([a-z]|[A-Z]|[0-9]|[.]|[-]|[_])*$', $account_new->general_username))
$errors[] = array('ERROR', _('Groupname'), _('Groupname contains invalid characters. Valid characters are: a-z, A-Z, 0-9 and .-_ !'));
if ($account_new->general_gecos=='') {
$account_new->general_gecos = $account_new->general_username ;
$errors[] = array('INFO', _('Gecos'), _('Inserted groupname in gecos-field.'));
}
// Create automatic groupaccount with number if original group already exists
// Reset name to original name if new name is in use
if (ldapexists($account_new, $account_old) && is_object($account_old))
$account_new->general_username = $account_old->general_username;
while ($temp = ldapexists($account_new, $account_old)) {
// get last character of username
$lastchar = substr($account_new->general_username, strlen($account_new->general_username)-1, 1);
// Last character is no number
if ( !ereg('^([0-9])+$', $lastchar))
/* Last character is no number. Therefore we only have to
* add "2" to it.
*/
$account_new->general_username = $account_new->general_username . '2';
else {
/* Last character is a number -> we have to increase the number until we've
* found a groupname with trailing number which is not in use.
*
* $i will show us were we have to split groupname so we get a part
* with the groupname and a part with the trailing number
*/
$i=strlen($account_new->general_username)-1;
$mark = false;
// Set $i to the last character which is a number in $account_new->general_username
while (!$mark) {
if (ereg('^([0-9])+$',substr($account_new->general_username, $i, strlen($account_new->general_username)-$i))) $i--;
else $mark=true;
}
// increase last number with one
$firstchars = substr($account_new->general_username, 0, $i+1);
$lastchars = substr($account_new->general_username, $i+1, strlen($account_new->general_username)-$i);
// Put groupname together
$account_new->general_username = $firstchars . (intval($lastchars)+1);
}
}
// Show warning if lam has changed groupname
if ($account_new->general_username != $_POST['f_general_username']) $errors[] = array('WARN', _('Groupname'), _('Groupname already in use. Selected next free groupname.'));
// Check if UID is valid. If none value was entered, the next useable value will be inserted
$temp = explode(':', checkid($account_new, $account_old));
$account_new->general_uidNumber = $temp[0];
// true if checkid has returned an error
if ($temp[1]!='') $errors[] = explode(';',$temp[1]);
// Check if Name-length is OK. minLength=3, maxLength=20
if ( !ereg('.{3,20}', $account_new->general_username)) $errors[] = array('ERROR', _('Name'), _('Name must contain between 3 and 20 characters.'));
// Check if Name starts with letter
if ( !ereg('^([a-z]|[A-Z]).*$', $account_new->general_username))
$errors[] = array('ERROR', _('Name'), _('Name contains invalid characters. First character must be a letter.'));
}
break;
case 'samba':
// Write all samba attributes into $account_new
// Get all domains
$samba3domains = $ldap_intern->search_domains($config_intern->get_domainSuffix());
// Search the corrct domain in array
unset($account_new->smb_domain);
$i = 0;
while (!is_object($account_new->smb_domain) && isset($samba3domains[$i])) {
if ($_POST['f_smb_domain'] == $samba3domains[$i]->name)
$account_new->smb_domain = $samba3domains[$i];
else $i++;
}
$account_new->smb_displayName = $_POST['f_smb_displayName'];
// Check if group SID should be mapped to a well known SID
switch ($_POST['f_smb_mapgroup']) {
case '*'._('Domain Guests'): $account_new->smb_mapgroup = $account_new->smb_domain->SID . "-" . '514'; break;
case '*'._('Domain Users'): $account_new->smb_mapgroup = $account_new->smb_domain->SID . "-" . '513'; break;
case '*'._('Domain Admins'): $account_new->smb_mapgroup = $account_new->smb_domain->SID . "-" . '512'; break;
case $account_new->general_username:
$account_new->smb_mapgroup = $account_new->smb_domain->SID . "-".
(2 * $account_new->general_uidNumber + $account_new->smb_domain->RIDbase +1);
break;
}
// Check if values are OK and set automatic values. if not error-variable will be set
if (($account_new->smb_displayName=='') && isset($account_new->general_gecos)) {
$account_new->smb_displayName = $account_new->general_gecos;
$errors[] = array('INFO', _('Display name'), _('Inserted gecos-field as display name.'));
}
break;
case 'quota':
// Write all general values into $account_new
$i=0;
// loop for every mointpoint with quotas
while ($account_new->quota[$i][0]) {
$account_new->quota[$i][2] = $_POST['f_quota_'.$i.'_2'];
$account_new->quota[$i][3] = $_POST['f_quota_'.$i.'_3'];
$account_new->quota[$i][6] = $_POST['f_quota_'.$i.'_6'];
$account_new->quota[$i][7] = $_POST['f_quota_'.$i.'_7'];
// Check if values are OK and set automatic values. if not error-variable will be set
if (!ereg('^([0-9])*$', $account_new->quota[$i][2]))
$errors[] = array('ERROR', _('Block soft quota'), _('Block soft quota contains invalid characters. Only natural numbers are allowed'));
if (!ereg('^([0-9])*$', $account_new->quota[$i][3]))
$errors[] = array('ERROR', _('Block hard quota'), _('Block hard quota contains invalid characters. Only natural numbers are allowed'));
if (!ereg('^([0-9])*$', $account_new->quota[$i][6]))
$errors[] = array('ERROR', _('Inode soft quota'), _('Inode soft quota contains invalid characters. Only natural numbers are allowed'));
if (!ereg('^([0-9])*$', $account_new->quota[$i][7]))
$errors[] = array('ERROR', _('Inode hard quota'), _('Inode hard quota contains invalid characters. Only natural numbers are allowed'));
$i++;
}
break;
case 'final':
// Ask if we should change gidNumber of every user which is member of the group
if ($_POST['f_final_changegids']) $final_changegids = $_POST['f_final_changegids'] ;
break;
case 'finish':
// Check if pdf-file should be created
if ($_POST['outputpdf']) {
// Load quotas if not yet done because they are needed for the pdf-file
if ($config_intern->scriptServer && !isset($account_new->quota[0])) { // load quotas
$quotas = getquotas(array($account_old));
$account_new->quota = $quotas[0]->quota;
}
// Create / display PDf-file
createGroupPDF(array($account_new));
// Stop script
die;
}
break;
}
do { // X-Or, only one if() can be true
if ($_POST['next_members']) {
// Go from groupmembers to next page if no error did ocour
if (!is_array($errors)) $select_local='groupmembers';
else $select_local=$_POST['select'];
break;
}
if ($_POST['next_general']) {
// Go from general to next page if no error did ocour
if (!is_array($errors)) $select_local='general';
else $select_local=$_POST['select'];
break;
}
if ($_POST['next_samba']) {
// Go from samba to next page if no error did ocour
if (!is_array($errors)) $select_local='samba';
else $select_local=$_POST['select'];
break;
}
if ($_POST['next_quota']) {
// Go from quota to next page if no error did ocour
if (!is_array($errors)) $select_local='quota';
else $select_local=$_POST['select'];
break;
}
if ($_POST['next_final']) {
// Check if objectclasses are OK
if (is_array($errors)) $stay=true;
else $stay = false;
if ($config_intern->is_samba3() && !isset($account_new->smb_domain)) {
// Samba page not viewed; can not create group because if missing options
$errors[] = array("ERROR", _("Samba Options not set!"), _("Please check settings on samba page."));
$stay = true;
}
if (isset($account_old->general_objectClass)) {
if (($config_intern->is_samba3()) && (!in_array('sambaGroupMapping', $account_old->general_objectClass)))
$errors[] = array('WARN', _('ObjectClass sambaGroupMapping not found.'), _('Have to add objectClass sambaGroupMapping.'));
if (!in_array('posixGroup', $account_old->general_objectClass))
$errors[] = array('WARN', _('ObjectClass posixGroup not found.'), _('Have to add objectClass posixGroup.'));
}
// Show info if gidNumber has changed
if (($account_old) && ($account_new->general_uidNumber != $account_old->general_uidNumber))
$errors[] = array('INFO', _('GID-number has changed. You have to run the following command as root in order to change existing file-permissions:'),
'find / -gid ' . $account_old->general_uidNumber . ' -exec chgrp ' . $account_new->general_uidNumber . ' {} \;');
// Go from final to next page if no error did ocour
if (!$stay) $select_local='final';
else $select_local=$_POST['select'];
break;
}
// Reset account to original settings if undo-button was pressed
if ($_POST['next_reset']) {
$account_new = $account_old;
$account_new->general_dn = substr($account_new->general_dn, strpos($account_new->general_dn, ',')+1);
$select_local = $_POST['select'];
break;
}
// Create-Button was pressed
if ( $_POST['create'] ) {
// Create or modify an account
if ($account_old) $result = modifygroup($account_new,$account_old);
else $result = creategroup($account_new); // account.inc
if ( $result==4 || $result==5 ) $select_local = 'final';
else $select_local = 'finish';
break;
}
// Load Profile and reset all attributes to settings in profile
if ($_POST['createagain']) {
$select_local='general';
unset ($_SESSION['account_'.$varkey.'_account_new']);
unset($account_new);
$_SESSION['account_'.$varkey.'_account_new'] = loadGroupProfile('default');
$account_new =& $_SESSION['account_'.$varkey.'_account_new'];
$account_new ->type = 'group';
break;
}
// Go back to listgroups.php
if ($_POST['backmain']) {
if (isset($_SESSION['account_'.$varkey.'_account_new'])) unset($_SESSION['account_'.$varkey.'_account_new']);
if (isset($_SESSION['account_'.$varkey.'_account_old'])) unset($_SESSION['account_'.$varkey.'_account_old']);
if (isset($_SESSION['account_'.$varkey.'_final_changegids'])) unset($_SESSION['account_'.$varkey.'_final_changegids']);
metaRefresh("../lists/listgroups.php");
die;
break;
}
// Load Profile and reset all attributes to settings in profile
if ($_POST['load']) {
$account_new->general_dn = $_POST['f_general_suffix'];
$account_new->general_username = $_POST['f_general_username'];
$account_new->general_uidNumber = $_POST['f_general_uidNumber'];
$account_new->general_gecos = $_POST['f_general_gecos'];
// load profile
if ($_POST['f_general_selectprofile']!='') $values = loadGroupProfile($_POST['f_general_selectprofile']);
if (is_object($values)) {
while (list($key, $val) = each($values)) // Set only defined values
if (isset($val)) $account_new->$key = $val;
}
if ($config_intern->scriptServer) {
// load quotas and check if quotas from profile are valid
$quotas = getquotas(array($account_new));
for ($i=0; $i<count($account_new->quota); $i++) $profile_quotas[] = $account_new->quota[$i][0];
for ($i=0; $i<count($quotas[0]->quota); $i++) {
$real_quotas[] = $quotas[0]->quota[$i][0];
if (is_array($profile_quotas)) {
if (!in_array($quotas[0]->quota[$i][0], $profile_quotas)) $account_new->quota[]=$quotas[0]->quota[$i];
}
else $account_new->quota[]=$quotas[0]->quota[$i];
}
$j=0;
// delete not existing quotas
while (isset($account_new->quota[$j][0])) {
// remove invalid quotas
if (!in_array($account_new->quota[$j][0], $real_quotas)) unset($account_new->quota[$j]);
else $j++;
}
// Beautify array, repair index
if (is_array($account_new->quota)) $account_new->quota = array_values($account_new->quota);
// Set used blocks
if (isset($account_old)) {
for ($i=0; $i<count($account_new->quota); $i++)
for ($j=0; $j<count($quotas[0]->quota); $j++)
if ($quotas[0]->quota[$j][0] == $account_new->quota[$i][0]) {
$account_new->quota[$i][1] = $quotas[0]->quota[$i][1];
$account_new->quota[$i][4] = $quotas[0]->quota[$i][4];
$account_new->quota[$i][5] = $quotas[0]->quota[$i][5];
$account_new->quota[$i][8] = $quotas[0]->quota[$i][8];
}
}
else for ($i=0; $i<count($account_new->quota); $i++) {
$account_new->quota[$i][1] = 0;
$account_new->quota[$i][5] = 0;
}
}
// select general page after group has been loaded
$select_local='general';
break;
}
// Save Profile
if ($_POST['save']) {
// save profile
if ($_POST['f_finish_safeProfile']=='')
$errors[] = array('ERROR', _('Save profile'), _('No profilename given.'));
else {
if (saveGroupProfile($account_new, $_POST['f_finish_safeProfile']))
$errors[] = array('INFO', _('Save profile'), _('New profile created.'));
else $errors[] = array('ERROR', _('Save profile'), _('Wrong profilename given.'));
}
// select last page displayed before user is created
$select_local='final';
break;
}
if ($_POST['groupmembers']) {
$select_local='groupmembers';
break;
}
} while(0);
// Write HTML-Header
echo $header_intern;
echo "<title>";
echo _("Create new Account");
echo "</title>\n".
"<link rel=\"stylesheet\" type=\"text/css\" href=\"../../style/layout.css\">\n".
"<meta http-equiv=\"pragma\" content=\"no-cache\">\n".
"<meta http-equiv=\"cache-control\" content=\"no-cache\">\n".
"</head><body>\n".
"<form action=\"groupedit.php\" method=\"post\">\n".
"<input name=\"varkey\" type=\"hidden\" value=\"".$varkey."\">\n";
// Display errir-messages
if (is_array($errors))
for ($i=0; $i<sizeof($errors); $i++) StatusMessage($errors[$i][0], $errors[$i][1], $errors[$i][2]);
// print_r($account_new);
switch ($select_local) {
/* Select which part of page should be loaded and check values
* groupmembers = page with all users which are additional members of group
* general = startpage, general account paramters
* samba = page with all samba-related parameters e.g. smbpassword
* quota = page with all quota-related parameters e.g. hard file quota
* personal = page with all personal-related parametergs, e.g. phone number
* final = last page shown before account is created/modified
* finish = page shown after account has been created/modified
*/
case 'groupmembers':
// Validate cache-array
ldapreload('user');
// Get copy of cache-array
$temp2 = $userDN_intern;
// unset timestamp stored in $temp2[0]
unset($temp2[0]);
// load list with all users
foreach ($temp2 as $temp) $users[] = $temp['uid'];
// sort users
if (is_array($users)) sort($users, SORT_STRING);
// remove users which are allready additional members of group
$users = array_delete($account_new->unix_memberUid, $users);
/* Now we have to remove all users from list who are primary member of group
* At the moment lam is doing an extra ldap-search. In future this should be done
* via cache-array **** fixme
*/
// Do a ldap-search
if (isset($account_old->general_uidNumber))
$result = ldap_search($_SESSION['ldap']->server(), $_SESSION['config']->get_UserSuffix(), "(&(objectClass=PosixAccount)(gidNumber=$account_old->general_uidNumber))", array('uid'));
else $result = ldap_search($_SESSION['ldap']->server(), $_SESSION['config']->get_UserSuffix(), "(&(objectClass=PosixAccount)(gidNumber=$account_new->general_uidNumber))", array('uid'));
$entry = ldap_first_entry($_SESSION['ldap']->server(), $result);
// loop for every user which is primary member of group
while ($entry) {
$attr = ldap_get_attributes($_SESSION['ldap']->server(), $entry);
if (isset($attr['uid'][0])) {
// Remove user from user list
$users = @array_flip($users);
unset ($users[$attr['uid'][0]]);
$users = @array_flip($users);
}
// Go to next entry
$entry = ldap_next_entry($_SESSION['ldap']->server(), $entry);
}
echo "<input name=\"select\" type=\"hidden\" value=\"groupmembers\">\n";
echo "<table border=0 width=\"100%\">\n<tr><td valign=\"top\" width=\"15%\" >";
echo "<table border=0><tr><td><fieldset class=\"groupedit-middle\"><legend class=\"groupedit-bright\"><b>";
echo _('Please select page:');
echo "</b></legend>\n";
echo "<input name=\"next_general\" type=\"submit\" value=\""; echo _('General'); echo "\">\n<br>";
echo "<input name=\"next_members\" type=\"submit\" disabled value=\""; echo _('Members'); echo "\">\n<br>";
// samba 2.2 doesn't have any settings for groups
if ($config_intern->is_samba3()) {
echo "<input name=\"next_samba\" type=\"submit\" value=\""; echo _('Samba'); echo "\">\n<br>";
}
echo "<input name=\"next_quota\" type=\"submit\""; if (!isset($config_intern->scriptPath)) echo " disabled ";
echo "value=\""; echo _('Quota'); echo "\">\n<br>";
echo "<input name=\"next_final\" type=\"submit\" value=\""; echo _('Final');
echo "\">";
if (isset($account_old)) {
echo "<br><br>";
echo _("Reset all changes.");
echo "<br>";
echo "<input name=\"next_reset\" type=\"submit\" value=\""; echo _('Undo');
echo "\">\n";
}
echo "</fieldset></td></tr></table></td>\n<td>";
echo "<table border=0 width=\"100%\"><tr><td><fieldset class=\"groupedit-bright\"><legend class=\"groupedit-bright\"><b>". _('Additional group members') . "</b></legend>\n";
echo "<table border=0 width=\"100%\">\n";
echo "<tr><td valign=\"top\"><fieldset class=\"groupedit-middle\"><legend class=\"groupedit-bright\">";
echo _('Group members');
echo "</legend>";
// display all users which are additional members of group
if (count($account_new->unix_memberUid)!=0) {
echo "<select name=\"members[]\" class=\"groupedit-bright\" size=15 multiple>\n";
for ($i=0; $i<count($account_new->unix_memberUid); $i++)
if ($account_new->unix_memberUid[$i]!='') echo " <option>".$account_new->unix_memberUid[$i]."</option>\n";
echo "</select>\n";
}
echo "</fieldset></td>\n";
echo "<td align=\"center\" width=\"10%\"><input type=\"submit\" name=\"add\" value=\"<=\">";
echo " ";
echo "<input type=\"submit\" name=\"remove\" value=\"=>\"><br><br>";
echo "<a href=\"../help.php?HelpNumber=419\" target=\"lamhelp\">"._('Help')."</a></td>\n";
echo "<td valign=\"top\"><fieldset class=\"groupedit-middle\"><legend class=\"groupedit-bright\">";
echo _('Available users');
echo "</legend>\n";
// Display all users which are not member of group in any way
if ((count($users)!=0) && is_array($users)) {
echo "<select name=\"users[]\" size=15 multiple class=\"groupedit-bright\">\n";
foreach ($users as $temp)
echo " <option>$temp</option>\n";
echo "</select>\n";
}
echo "</fieldset></td>\n</tr>\n</table>\n</fieldset></td></tr></table>\n</td></tr>\n</table>\n";
break;
case 'general':
// General Account Settings
// load list of profiles
$profilelist = getGroupProfiles();
// Show page info
echo "<input name=\"select\" type=\"hidden\" value=\"general\">\n";
echo "<table border=0 width=\"100%\">\n<tr><td valign=\"top\" width=\"15%\" >";
echo "<table><tr><td><fieldset class=\"groupedit-middle\"><legend class=\"groupedit-bright\"><b>";
echo _('Please select page:');
echo "</b></legend>\n";
echo "<input name=\"next_general\" type=\"submit\" disabled value=\""; echo _('General'); echo "\">\n<br>";
echo "<input name=\"next_members\" type=\"submit\" value=\""; echo _('Members'); echo "\">\n<br>";
// samba 2.2 doesn't have any settings for groups
if ($config_intern->is_samba3()) {
echo "<input name=\"next_samba\" type=\"submit\" value=\""; echo _('Samba'); echo "\">\n<br>";
}
echo "<input name=\"next_quota\" type=\"submit\""; if (!isset($config_intern->scriptPath)) echo " disabled ";
echo "value=\""; echo _('Quota'); echo "\">\n<br>";
echo "<input name=\"next_final\" type=\"submit\" value=\""; echo _('Final');
echo "\">";
if (isset($account_old)) {
echo "<br><br>";
echo _("Reset all changes.");
echo "<br>";
echo "<input name=\"next_reset\" type=\"submit\" value=\""; echo _('Undo');
echo "\">\n";
}
echo "</fieldset></td></tr></table></td>\n<td valign=\"top\">";
echo "<table border=0 width=\"100%\">\n<tr>\n<td>";
echo "<fieldset class=\"groupedit-bright\"><legend class=\"groupedit-bright\"><b>";
echo _("General properties");
echo "</b></legend>\n<table border=0 width=\"100%\">\n<tr>\n<td>";
echo _("Groupname")."*";
echo "</td>\n<td>".
"<input name=\"f_general_username\" type=\"text\" size=\"30\" maxlength=\"20\" value=\"".$account_new->general_username."\">".
"</td>\n<td><a href=\"../help.php?HelpNumber=407\" target=\"lamhelp\">"._('Help')."</a></td>\n</tr>\n<tr>\n<td>";
echo _('GID number');
echo "</td>\n<td><input name=\"f_general_uidNumber\" type=\"text\" size=\"30\" maxlength=\"6\" value=\"".$account_new->general_uidNumber."\">".
"</td>\n<td><a href=\"../help.php?HelpNumber=408\" target=\"lamhelp\">"._('Help').
"</a></td>\n</tr>\n<tr>\n<td>";
echo _('Description');
echo "</td>\n<td><input name=\"f_general_gecos\" type=\"text\" size=\"30\" value=\"".$account_new->general_gecos."\"></td>\n".
"<td><a href=\"../help.php?HelpNumber=409\" target=\"lamhelp\">"._('Help')."</a></td>\n</tr>\n<tr>\n<td>";
echo _('Suffix'); echo "</td>\n<td><select name=\"f_general_suffix\">";
// Display all allowed group suffixes
foreach ($ldap_intern->search_units($config_intern->get_GroupSuffix()) as $suffix) {
if ($account_new->general_dn) {
if ($account_new->general_dn == $suffix)
echo " <option selected>$suffix</option>\n";
else echo " <option>$suffix</option>\n";
}
else echo " <option>$suffix</option>\n";
}
echo "</select></td>\n<td><a href=\"../help.php?HelpNumber=462\" target=\"lamhelp\">"._('Help').
"</a></td>\n</tr>\n</table>";
echo _('Values with * are required');
echo "</fieldset>\n</td></tr><tr><td>";
// Show fieldset with list of all group profiles
if (count($profilelist)!=0) {
echo "<fieldset class=\"groupedit-middle\"><legend class=\"groupedit-bright\"><b>";
echo _("Load profile");
echo "</b></legend>\n<table border=0>\n<tr>\n<td>";
echo "<select name=\"f_general_selectprofile\" >";
foreach ($profilelist as $profile) echo " <option>$profile</option>\n";
echo "</select>\n".
"<input name=\"load\" type=\"submit\" value=\""; echo _('Load Profile');
echo "\"></td><td><a href=\"../help.php?HelpNumber=421\" target=\"lamhelp\">";
echo _('Help')."</a></td>\n</tr>\n</table>\n</fieldset>\n";
}
echo "</td></tr>\n</table>\n</td></tr></table>\n";
break;
case 'samba':
// Samba Settings
// samba 2.2 doesn't have any settings for groups
$samba3domains = $ldap_intern->search_domains($config_intern->get_domainSuffix());
echo "<input name=\"select\" type=\"hidden\" value=\"samba\">\n";
echo "<table border=0 width=\"100%\">\n<tr><td valign=\"top\" width=\"15%\" >";
echo "<table border=0><tr><td><fieldset class=\"groupedit-middle\"><legend class=\"groupedit-bright\"><b>";
echo _('Please select page:');
echo "</b></legend>\n";
echo "<input name=\"next_general\" type=\"submit\" value=\""; echo _('General'); echo "\">\n<br>";
echo "<input name=\"next_members\" type=\"submit\" value=\""; echo _('Members'); echo "\">\n<br>";
echo "<input name=\"next_samba\" type=\"submit\" disabled value=\""; echo _('Samba'); echo "\">\n<br>";
echo "<input name=\"next_quota\" type=\"submit\""; if (!isset($config_intern->scriptPath)) echo " disabled ";
echo "value=\""; echo _('Quota'); echo "\">\n<br>";
echo "<input name=\"next_final\" type=\"submit\" value=\""; echo _('Final');
echo "\">";
if (isset($account_old)) {
echo "<br><br>";
echo _("Reset all changes.");
echo "<br>";
echo "<input name=\"next_reset\" type=\"submit\" value=\""; echo _('Undo');
echo "\">\n";
}
echo "</fieldset></td></tr></table></td>\n<td valign=\"top\">";
echo "<table border=0 width=\"100%\"><tr><td><fieldset class=\"groupedit-bright\"><legend class=\"groupedit-bright\"><b>"._('Samba properties')."</b></legend>\n";
echo "<table border=0 width=\"100%\"><tr><td>";
echo _("Display name");
echo "</td>\n<td>".
"<input name=\"f_smb_displayName\" type=\"text\" size=\"30\" maxlength=\"50\" value=\"".$account_new->smb_displayName."\">".
"</td>\n<td><a href=\"../help.php?HelpNumber=420\" target=\"lamhelp\">"._('Help')."</a></td>\n</tr>\n<tr>\n<td>";
echo _('Windows groupname');
echo "</td>\n<td><select name=\"f_smb_mapgroup\">";
// Display if group SID should be mapped to a well kown SID
if ( $account_new->smb_mapgroup == $account_new->smb_domain->SID . "-".
(2 * getgid($account_new->general_username) + $values->smb_domain->RIDbase+1)) {
echo '<option selected> ';
echo $account_new->general_username;
echo "</option>\n"; }
else {
echo '<option> ';
echo $account_new->general_username;
echo "</option>\n";
}
if ( $account_new->smb_mapgroup == $account_new->smb_domain->SID . "-" . '514' ) {
echo '<option selected> *';
echo _('Domain Guests');
echo "</option>\n"; }
else {
echo '<option> *';
echo _('Domain Guests');
echo "</option>\n";
}
if ( $account_new->smb_mapgroup == $account_new->smb_domain->SID . "-" . '513' ) {
echo '<option selected> *';
echo _('Domain Users');
echo "</option>\n"; }
else {
echo '<option> *';
echo _('Domain Users');
echo "</option>\n";
}
if ( $account_new->smb_mapgroup == $account_new->smb_domain->SID . "-" . '512' ) {
echo '<option selected> *';
echo _('Domain Admins');
echo "</option>\n"; }
else {
echo '<option> *';
echo _('Domain Admins');
echo "</option>\n";
}
echo "</select></td>\n<td>".
'<a href="../help.php?HelpNumber=464" target="lamhelp">'._('Help').'</a>'.
'</td></tr>'."\n".'<tr><td>';
echo _('Domain');
echo '</td><td>';
// select which domain name should be displayed
if (count($samba3domains)!=0) {
echo '<select name="f_smb_domain">';
for ($i=0; $i<sizeof($samba3domains); $i++) {
if ($account_new->smb_domain->name) {
if ($account_new->smb_domain->name == $samba3domains[$i]->name)
echo '<option selected>' . $samba3domains[$i]->name. '</option>';
else echo '<option>' . $samba3domains[$i]->name. '</option>';
}
else echo '<option>' . $samba3domains[$i]->name. '</option>';
}
echo '</select>';
}
echo "</td>\n<td><a href=\"../help.php?HelpNumber=467\" target=\"lamhelp\">"._('Help')."</a></td></tr>\n";
echo "</table>\n</fieldset>\n</td></tr></table></td></tr>\n</table>\n";
break;
case 'quota':
// Quota Settings
// Load quotas if not yet done
if ($config_intern->scriptServer && !isset($account_new->quota[0]) ) { // load quotas
$quotas = getquotas(array($account_new));
$account_new->quota = $quotas[0]->quota;
}
echo "<input name=\"select\" type=\"hidden\" value=\"samba\">\n";
echo "<table border=0 width=\"100%\">\n<tr><td valign=\"top\" width=\"15%\" >";
echo "<table border=0><tr><td><fieldset class=\"groupedit-middle\"><legend class=\"groupedit-bright\"><b>";
echo _('Please select page:');
echo "</b></legend>\n";
echo "<input name=\"next_general\" type=\"submit\" value=\""; echo _('General'); echo "\">\n<br>";
echo "<input name=\"next_members\" type=\"submit\" value=\""; echo _('Members'); echo "\">\n<br>";
// samba 2.2 doesn't have any settings for groups
if ($config_intern->is_samba3()) {
echo "<input name=\"next_samba\" type=\"submit\" value=\""; echo _('Samba'); echo "\">\n<br>";
}
echo "<input name=\"next_quota\" type=\"submit\" disabled value=\""; echo _('Quota'); echo "\">\n<br>";
echo "<input name=\"next_final\" type=\"submit\" value=\""; echo _('Final');
echo "\">";
if (isset($account_old)) {
echo "<br><br>";
echo _("Reset all changes.");
echo "<br>";
echo "<input name=\"next_reset\" type=\"submit\" value=\""; echo _('Undo');
echo "\">\n";
}
echo "</fieldset></td></tr></table></td>\n<td valign=\"top\">";
echo '<input name="select" type="hidden" value="quota">';
echo "<table border=0><tr><td><fieldset class=\"groupedit-bright\"><legend class=\"groupedit-bright\"><b>"._('Quota properties')."</b></legend>\n";
echo "<table border=0 width=\"100%\"><tr><td>";
echo _('Mountpoint'); echo '</td>'."\n".'<td>'; echo _('Used blocks'); echo '</td>'."\n".'<td>';
echo _('Soft block limit'); echo '</td>'."\n".'<td>'; echo _('Hard block limit'); echo '</td>'."\n".'<td>'; echo _('Grace block period');
echo '</td>'."\n".'<td>'; echo _('Used inodes'); echo '</td>'."\n".'<td>'; echo _('Soft inode limit'); echo '</td>'."\n".'<td>';
echo _('Hard inode limit'); echo '</td>'."\n".'<td>'; echo _('Grace inode period'); echo '</td></tr>'."\n";
echo '<tr><td><a href="../help.php?HelpNumber=439" target="lamhelp">'._('Help').'</a></td>'."\n".'<td><a href="../help.php?HelpNumber=440" target="lamhelp">'._('Help').'</a></td>'."\n".'<td>'.
'<a href="../help.php?HelpNumber=441" target="lamhelp">'._('Help').'</a></td>'."\n".'<td><a href="../help.php?HelpNumber=442" target="lamhelp">'._('Help').'</a></td>'."\n".'<td>'.
'<a href="../help.php?HelpNumber=443" target="lamhelp">'._('Help').'</a></td>'."\n".'<td><a href="../help.php?HelpNumber=444" target="lamhelp">'._('Help').'</a></td>'."\n".'<td>'.
'<a href="../help.php?HelpNumber=445" target="lamhelp">'._('Help').'</a></td>'."\n".'<td><a href="../help.php?HelpNumber=446" target="lamhelp">'._('Help').'</a></td>'."\n".'<td>'.
'<a href="../help.php?HelpNumber=447" target="lamhelp">'._('Help').'</a></td></tr>'."\n";
$i=0;
// loop for every mointpoint with enabled quotas
while ($account_new->quota[$i][0]) {
echo '<tr><td>'.$account_new->quota[$i][0].'</td><td>'.$account_new->quota[$i][1].'</td>'; // used blocks
echo '<td><input name="f_quota_'.$i.'_2" type="text" size="12" maxlength="20" value="'.$account_new->quota[$i][2].'"></td>'; // blocks soft limit
echo '<td><input name="f_quota_'.$i.'_3" type="text" size="12" maxlength="20" value="'.$account_new->quota[$i][3].'"></td>'; // blocks hard limit
echo '<td>'.$account_new->quota[$i][4].'</td>'; // block grace period
echo '<td>'.$account_new->quota[$i][5].'</td>'; // used inodes
echo '<td><input name="f_quota_'.$i.'_6" type="text" size="12" maxlength="20" value="'.$account_new->quota[$i][6].'"></td>'; // inodes soft limit
echo '<td><input name="f_quota_'.$i.'_7" type="text" size="12" maxlength="20" value="'.$account_new->quota[$i][7].'"></td>'; // inodes hard limit
echo '<td>'.$account_new->quota[$i][8].'</td></tr>'; // inodes grace period
$i++;
}
echo "</table>\n</fieldset>\n</td></tr></table></td></tr>\n</table>\n";
break;
case 'final':
// Final Settings
$disabled = "";
if ($config_intern->is_samba3() && !isset($account_new->smb_domain))
// Samba page not viewed; can not create group because if missing options
$disabled = "disabled";
echo '<input name="select" type="hidden" value="final">';
echo "<input name=\"select\" type=\"hidden\" value=\"final\">\n";
echo "<table border=0 width=\"100%\">\n<tr><td valign=\"top\" width=\"15%\" >";
echo "<table><tr><td><fieldset class=\"groupedit-middle\"><legend class=\"groupedit-bright\"><b>";
echo _('Please select page:');
echo "</b></legend>\n";
echo "<input name=\"next_general\" type=\"submit\" value=\""; echo _('General'); echo "\">\n<br>";
echo "<input name=\"next_members\" type=\"submit\" value=\""; echo _('Members'); echo "\">\n<br>";
if ($config_intern->is_samba3()) {
echo "<input name=\"next_samba\" type=\"submit\" value=\""; echo _('Samba'); echo "\">\n<br>";
}
echo "<input name=\"next_quota\" type=\"submit\""; if (!isset($config_intern->scriptPath)) echo " disabled ";
echo "value=\""; echo _('Quota'); echo "\">\n<br>";
echo "<input name=\"next_final\" type=\"submit\" disabled value=\""; echo _('Final');
echo "\">";
if (isset($account_old)) {
echo "<br><br>";
echo _("Reset all changes.");
echo "<br>";
echo "<input name=\"next_reset\" type=\"submit\" value=\""; echo _('Undo');
echo "\">\n";
}
echo "</fieldset></td></tr></table></td>\n<td valign=\"top\">";
echo "<table border=0 width=\"100%\">\n<tr>\n<td>";
echo "<fieldset class=\"groupedit-middle\"><legend class=\"groupedit-bright\"><b>";
echo _("Save profile");
echo "</b></legend>\n";
echo '<input name="f_finish_safeProfile" type="text" size="30" maxlength="50">';
echo "&nbsp;<input name=\"save\" type=\"submit\" $disabled value=\"";
echo _('Save profile');
echo '">&nbsp;<a href="../help.php?HelpNumber=457" target="lamhelp">'._('Help');
echo "</a>\n</fieldset>\n</td></tr>\n<tr><td>\n";
echo "<fieldset class=\"groupedit-bright\"><legend class=\"groupedit-bright\"><b>";
if ($account_old) echo _('Modify');
else echo _('Create');
echo "</b></legend>\n";
echo "<table border=0 width=\"100%\">";
// Ask if gidNumbers of primary group members should be changed
if (($account_old) && ($account_new->general_uidNumber != $account_old->general_uidNumber)) {
echo '<tr><td>';
echo '<input name="f_final_changegids" type="checkbox"';
if ($final_changegids) echo ' checked ';
echo ' >';
echo _('Change GID-Number of all users in group to new value');
echo '</td></tr>'."\n";
}
echo "<tr><td><input name=\"create\" type=\"submit\" $disabled value=\"";
if ($account_old) echo _('Modify Account');
else echo _('Create Account');
echo '">'."\n";
echo "</td></tr></table></fieldset>\n</td></tr></table>\n</tr></table>";
break;
case 'finish':
// Final Settings
echo '<input name="select" type="hidden" value="finish">';
echo "<fieldset class=\"groupedit-bright\"><legend class=\"groupedit-bright\"><b>"._('Note')."</b></legend>\n";
if ($account_old) {
printf(_("Group %s has been modified."), $account_new->general_username);
}
else {
printf(_("Group %s has been created."), $account_new->general_username);
}
echo "<br><br>";
if (!$account_old) {
echo '<input name="createagain" type="submit" value="'; echo _('Create another group'); echo '">';
}
echo '<input name="outputpdf" type="submit" value="'; echo _('Create PDF file'); echo '">'.
'&nbsp;<input name="backmain" type="submit" value="'; echo _('Back to group list'); echo '">'.
'</fieldset'."\n";
break;
}
// Print end of HTML-Page
echo '</form></body></html>';
?>

View File

@ -1,481 +0,0 @@
<?php
/*
$Id$
This code is part of LDAP Account Manager (http://www.sourceforge.net/projects/lam)
Copyright (C) 2003 Tilo Lutz
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
LDAP Account Manager displays table for creating or modifying accounts in LDAP
*/
// include all needed files
include_once('../../lib/account.inc'); // File with all account-funtions
include_once('../../lib/config.inc'); // File with configure-functions
include_once('../../lib/profiles.inc'); // functions to load and save profiles
include_once('../../lib/status.inc'); // Return error-message
include_once('../../lib/pdf.inc'); // Return a pdf-file
include_once('../../lib/ldap.inc'); // LDAP-functions
// Start session
session_save_path('../../sess');
@session_start();
// Redirect to startpage if user is not loged in
if (!isset($_SESSION['loggedIn'])) {
metaRefresh("login.php");
die;
}
// Set correct language, codepages, ....
setlanguage();
/* hostedit.php is using dynamic session varialenames so
* we can run several copies of hostedit.php at the same
* time
* $varkey is the dynamic part of the variable name
*/
if (!isset($_POST['varkey'])) $varkey = session_id().time();
else $varkey = $_POST['varkey'];
if (!isset($_SESSION['account_'.$varkey.'_account_new'])) $_SESSION['account_'.$varkey.'_account_new'] = new account();
// Register Session-Variables with references so we don't net to change to complete code if names changes
$account_new =& $_SESSION['account_'.$varkey.'_account_new'];
if (is_object($_SESSION['account_'.$varkey.'_account_old'])) $account_old =& $_SESSION['account_'.$varkey.'_account_old'];
$ldap_intern =& $_SESSION['ldap'];
$config_intern =& $_SESSION['config'];
$header_intern =& $_SESSION['header'];
// $_GET is only valid if hostedit.php was called from hostlist.php
if (isset($_GET['DN']) && $_GET['DN']!='') {
// hostedit.php should edit an existing account
// reset variables
if (isset($_SESSION['account_'.$varkey.'_account_old'])) {
unset($account_old);
unset($_SESSION['account_'.$varkey.'_account_old']);
}
$_SESSION['account_'.$varkey.'_account_old'] = new account();
$account_old =& $_SESSION['account_'.$varkey.'_account_old'];
// get "real" DN from variable
$DN = str_replace("\'", '',$_GET['DN']);
if ($_GET['DN'] == $DN) $DN = str_replace("'", '',$_GET['DN']);
// Load existing host
$account_new = loadhost($DN);
// Get a copy of original host
$account_old = $account_new;
// Store only DN without uid=$name
$account_new->general_dn = substr($account_new->general_dn, strpos($account_new->general_dn, ',')+1);
}
// Startcondition. hostedit.php was called from outside to create a new host
else if (count($_POST)==0) {
// Create new account object with settings from default profile
// Check if there are valid groups. Can not create user with no primary group
$groups = findgroups();
if (count($groups)==0) {
// Write HTML-Header
echo $header_intern;
echo "<title>";
echo _("Create new Account");
echo "</title>\n".
"<link rel=\"stylesheet\" type=\"text/css\" href=\"../../style/layout.css\">\n".
"<meta http-equiv=\"pragma\" content=\"no-cache\">\n".
"<meta http-equiv=\"cache-control\" content=\"no-cache\">\n".
"</head><body>\n";
// Display errir-messages
StatusMessage("ERROR", _("Can not create any hosts."),_("Please create a group first."));
echo "<a href=../lists/listhosts.php>"._("Back to hostlist")."</a>\n";
echo "</body></html>";
die;
}
$account_new = loadHostProfile('default');
$account_new ->type = 'host';
$account_new->smb_flags['W'] = 1;
$account_new->general_homedir = '/dev/null';
$account_new->general_shell = '/bin/false';
}
switch ($_POST['select']) {
/* Select which page should be displayed. For hosts we have
* only have general and finish
* general = page with all settings for hosts
* final = page which will be displayed if changes were made
*/
case 'general':
if (!$_POST['load']) {
if (($account_new->general_username != $_POST['f_general_username']) && ereg('[A-Z]$', $_POST['f_general_username']))
$errors[] = array('WARN', _('Hostname'), _('You are using a capital letters. This can cause problems because not all programs are case-sensitive.'));
// Write all general values into $account_new if no profile should be loaded
$account_new->general_dn = $_POST['f_general_suffix'];
$account_new->general_username = $_POST['f_general_username'];
$account_new->general_uidNumber = $_POST['f_general_uidNumber'];
$account_new->general_group = $_POST['f_general_group'];
$account_new->general_gecos = $_POST['f_general_gecos'];
// Check if values are OK and set automatic values. if not error-variable will be set
// Add $ to end of hostname if hostname doesn't end with "$"
if ( substr($account_new->general_username, strlen($account_new->general_username)-1, strlen($account_new->general_username)) != '$' ) {
$account_new->general_username = $account_new->general_username . '$';
$errors[] = array('WARN', _('Host name'), _('Added $ to hostname.'));
}
// Get copy of hostname so we can check if changes were made
$tempname = $account_new->general_username;
// Check if Hostname contains only valid characters
if ( !eregi('^([a-z0-9_]|[.]|[-]|[$])*$', $account_new->general_username))
$errors[] = array('ERROR', _('Host name'), _('Hostname contains invalid characters. Valid characters are: a-z, A-Z, 0-9 and .-_ !'));
// Create automatic Hostname with number if original host already exists
// Reset name to original name if new name is in use
if (ldapexists($account_new, $account_old) && is_object($account_old))
$account_new->general_username = $account_old->general_username;
while ($temp = ldapexists($account_new, $account_old)) {
// Remove "$" at end of hostname
$account_new->general_username = substr($account_new->general_username, 0, $account_new->general_username-1);
// get last character of username
$lastchar = substr($account_new->general_username, strlen($account_new->general_username)-1, 1);
if ( !ereg('^([0-9])+$', $lastchar)) {
/* Last character is no number. Therefore we only have to
* add "2" to it.
*/
$account_new->general_username = $account_new->general_username . '2$';
}
else {
/* Last character is a number -> we have to increase the number until we've
* found a hostname with trailing number which is not in use.
*
* $i will show us were we have to split hostname so we get a part
* with the hostname and a part with the trailing number
*/
$i=strlen($account_new->general_username)-3;
$mark = false;
// Set $i to the last character which is a number in $account_new->general_username
while (!$mark) {
if (ereg('^([0-9])+$',substr($account_new->general_username, $i, strlen($account_new->general_username)-1))) $i--;
else $mark=true;
}
// increase last number with one
$firstchars = substr($account_new->general_username, 0, $i+2);
$lastchars = substr($account_new->general_username, $i+2, strlen($account_new->general_username)-$i);
// Put hostname together
$account_new->general_username = $firstchars . (intval($lastchars)+1). '$';
}
}
// Show warning if lam has changed hostname
if ($account_new->general_username != $tempname)
$errors[] = array('WARN', _('Host name'), _('Hostname already in use. Selected next free hostname.'));
// Check if Name-length is OK. minLength=3, maxLength=20
if ( !ereg('.{3,20}', $account_new->general_username)) $errors[] = array('ERROR', _('Name'), _('Name must contain between 3 and 20 characters.'));
// Check if Name starts with letter
if ( !eregi('^([a-z]).*$', $account_new->general_username))
$errors[] = array('ERROR', _('Name'), _('Name contains invalid characters. First character must be a letter.'));
// Set gecos-field to hostname if it's empty
if ($account_new->general_gecos=='') {
$account_new->general_gecos = $account_new->general_username;
$errors[] = array('INFO', _('Gecos'), _('Inserted hostname in gecos-field.'));
}
// Check if UID is valid. If none value was entered, the next useable value will be inserted
$temp = explode(':', checkid($account_new, $account_old));
$account_new->general_uidNumber = $temp[0];
// true if checkid has returned an error
if ($temp[1]!='') $errors[] = explode(';',$temp[1]);
// Set Samba-Domain
if ($config_intern->is_samba3()) {
// Samba 3 used a samba3domain object
// Get all domains
$samba3domains = $ldap_intern->search_domains($config_intern->get_domainSuffix());
// Search the corrct domain in array
unset($account_new->smb_domain);
$i = 0;
while (!is_object($account_new->smb_domain) && isset($samba3domains[$i])) {
if ($_POST['f_smb_domain'] == $samba3domains[$i]->name)
$account_new->smb_domain = $samba3domains[$i];
else $i++;
}
}
// Samba 2.2 uses only a string as domainname
else {
$account_new->smb_domain = $_POST['f_smb_domain'];
// Check if Domain-name is OK
if ((!$account_new->smb_domain=='') && !ereg('^([a-z]|[A-Z]|[0-9]|[-])+$', $account_new->smb_domain))
$errors[] = array('ERROR', _('Domain name'), _('Domain name contains invalid characters. Valid characters are: a-z, A-Z, 0-9 and -.'));
}
// Reset password if reset button was pressed. Button only vissible if account should be modified
if ($_POST['respass']) {
$account_new->unix_password_no=true;
$account_new->smb_flags['N']=true;
}
}
// Check object classes. Display warning if object classes were not found
if (isset($account_old->general_objectClass)) {
if (!in_array('posixAccount', $account_old->general_objectClass)) $errors[] = array('WARN', _('ObjectClass posixAccount not found.'), _('Have to add objectClass posixAccount.'));
if ($config_intern->is_samba3()) {
if (!in_array('sambaSamAccount', $account_old->general_objectClass)) $errors[] = array('WARN', _('ObjectClass sambaSamAccount not found.'), _('Have to add objectClass sambaSamAccount. Host with sambaAccount will be updated.'));
}
else if (!in_array('sambaAccount', $account_old->general_objectClass)) $errors[] = array('WARN', _('ObjectClass sambaAccount not found.'), _('Have to add objectClass sambaAccount. Host with sambaSamAccount will be set back to sambaAccount.'));
}
break;
case 'finish':
// Check if pdf-file should be created
if ($_POST['outputpdf']) {
createHostPDF(array($account_new));
die;
}
break;
}
do { // X-Or, only one if() can be true
// Reset account to original settings if undo-button was pressed
if ($_POST['next_reset']) {
$account_new = $account_old;
$account_new->general_dn = substr($account_new->general_dn, strpos($account_new->general_dn, ',')+1);
break;
}
// Create-Button was pressed
if ( $_POST['create'] && !isset($errors)) {
// Create or modify an account
if ($account_old) $result = modifyhost($account_new,$account_old);
else $result = createhost($account_new); // account.inc
if ($result==5 || $result==4) $select_local = 'general';
else $select_local = 'finish';
}
// Back to main-page
if ($_POST['createagain']) {
$select_local='general';
unset ($_SESSION['account_'.$varkey.'_account_new']);
unset($account_new);
$_SESSION['account_'.$varkey.'_account_new'] = loadHostProfile('default');
$account_new =& $_SESSION['account_'.$varkey.'_account_new'];
$account_new ->type = 'host';
$account_new->smb_flags['W'] = 1;
$account_new->general_homedir = '/dev/null';
$account_new->general_shell = '/bin/false';
break;
}
// Load Profile and reset all attributes to settings in profile
if ($_POST['load']) {
$account_new->general_dn = $_POST['f_general_suffix'];
$account_new->general_username = $_POST['f_general_username'];
$account_new->general_uidNumber = $_POST['f_general_uidNumber'];
$account_new->general_group = $_POST['f_general_group'];
$account_new->general_gecos = $_POST['f_general_gecos'];
// load profile
if ($_POST['f_general_selectprofile']!='') $values = loadHostProfile($_POST['f_general_selectprofile']);
if (is_object($values)) {
while (list($key, $val) = each($values)) // Set only defined values
if (isset($val)) $account_new->$key = $val;
}
$errors[] = array('INFO', _('Load profile'), _('Profile loaded.'));
break;
}
// Save Profile
if ($_POST['save']) {
// save profile
if ($_POST['f_finish_safeProfile']=='')
$errors[] = array('ERROR', _('Save profile'), _('No profilename given.'));
else {
if (saveHostProfile($account_new, $_POST['f_finish_safeProfile']))
$errors[] = array('INFO', _('Save profile'), _('New profile created.'));
else $errors[] = array('ERROR', _('Save profile'), _('Wrong profilename given.'));
}
break;
}
// Go back to listhosts.php
if ($_POST['backmain']) {
if (isset($_SESSION['account_'.$varkey.'_account_new'])) unset($_SESSION['account_'.$varkey.'_account_new']);
if (isset($_SESSION['account_'.$varkey.'_account_old'])) unset($_SESSION['account_'.$varkey.'_account_old']);
metaRefresh("../lists/listhosts.php");
die;
break;
}
} while(0);
// Display main page if nothing else was selected
if (!isset($select_local)) $select_local = 'general';
// Write HTML-Header
echo $header_intern;
echo "<title>";
echo _("Create new Account");
echo "</title>\n".
"<link rel=\"stylesheet\" type=\"text/css\" href=\"../../style/layout.css\">\n".
"<meta http-equiv=\"pragma\" content=\"no-cache\">\n".
"<meta http-equiv=\"cache-control\" content=\"no-cache\">\n".
"</head><body>\n".
"<form action=\"hostedit.php\" method=\"post\">\n".
"<input name=\"varkey\" type=\"hidden\" value=\"".$varkey."\">\n";
// Display errir-messages
if (is_array($errors))
for ($i=0; $i<sizeof($errors); $i++) StatusMessage($errors[$i][0], $errors[$i][1], $errors[$i][2]);
// print_r($account_new);
/* Select which part of page will be loaded
* Because hosts have very less settings all are
* on a single page. Only success-message is on a
* different page
*/
switch ($select_local) {
// general = startpage, all account paramters
// finish = page shown after account has been created/modified
case 'general':
// General Account Settings
// load list of all groups
$groups = findgroups();
// load list of profiles
$profilelist = getHostProfiles();
// Get List of all domains
if ($config_intern->is_samba3()) $samba3domains = $ldap_intern->search_domains($config_intern->get_domainSuffix());
// Why this ?? fixme
if ($account_new->smb_flags['N']) echo '<input name="f_smb_flagsN" type="hidden" value="1">';
// Show page info
echo '<input name="select" type="hidden" value="general">';
// Show fieldset with list of all host profiles
if (count($profilelist)!=0) {
echo "<fieldset class=\"hostedit-dark\"><legend class=\"hostedit-bright\"><b>";
echo _("Load profile");
echo "</b></legend>\n<table border=0 width=\"100%\">\n<tr>\n<td width=\"50%\">";
echo "<select name=\"f_general_selectprofile\" >";
foreach ($profilelist as $profile) echo " <option>$profile</option>\n";
echo "</select>\n".
"<input name=\"load\" type=\"submit\" value=\""; echo _('Load Profile');
echo "\"></td><td width=\"30%\"></td><td width=\"20\"><a href=\"../help.php?HelpNumber=421\" target=\"lamhelp\">";
echo _('Help')."</a></td>\n</tr>\n</table>\n</fieldset>\n";
}
// Show Fieldset with all host settings
echo "<fieldset class=\"hostedit-bright\"><legend class=\"hostedit-bright\"><b>";
echo _("General properties");
echo "</b></legend>\n<table border=0 width=\"100%\">\n<tr>\n<td width=\"50%\">";
echo _('Host name').'*';
echo "</td>\n<td width=\"30%\">".
'<input name="f_general_username" type="text" size="20" maxlength="20" value="' . $account_new->general_username . '">'.
"</td><td width=\"20%\">".
'<a href="../help.php?HelpNumber=410" target="lamhelp">'._('Help').'</a>'.
"</td></tr>\n<tr><td>";
echo _('UID number');
echo "</td>\n<td>".
'<input name="f_general_uidNumber" type="text" size="6" maxlength="6" value="' . $account_new->general_uidNumber . '">'.
"</td>\n<td>".
'<a href="../help.php?HelpNumber=411" target="lamhelp">'._('Help').'</a>'.
"</td></tr>\n<tr><td>";
echo _('Primary group').'*';
echo "</td>\n<td><select name=\"f_general_group\">";
foreach ($groups as $group) {
if ($account_new->general_group == $group) echo '<option selected>' . $group. '</option>';
else echo '<option>' . $group. '</option>';
}
echo '</select></td><td>'.
'<a href="../help.php?HelpNumber=412" target="lamhelp">'._('Help').'</a>'.
"</td></tr>\n<tr><td>";
echo _('Gecos');
echo '</td><td><input name="f_general_gecos" type="text" size="30" value="' . $account_new->general_gecos . '">'.
"</td>\n<td>".
'<a href="../help.php?HelpNumber=413" target="lamhelp">'._('Help').'</a>'.
'</td></tr><tr><td>';
echo _('Password');
echo '</td><td>';
if (isset($account_old)) {
echo '<input name="respass" type="submit" value="';
echo _('Reset password'); echo '">';
}
echo "</td></tr>\n<tr><td>";
echo _('Domain');
if ($config_intern->is_samba3()) {
// Get Domain-name from domainlist when using samba 3
echo '</td><td><select name="f_smb_domain">';
for ($i=0; $i<sizeof($samba3domains); $i++) {
if ($account_new->smb_domain->name) {
if ($account_new->smb_domain->name == $samba3domains[$i]->name)
echo '<option selected>' . $samba3domains[$i]->name. '</option>';
else echo '<option>' . $samba3domains[$i]->name. '</option>';
}
else echo '<option>' . $samba3domains[$i]->name. '</option>';
}
echo '</select>';
}
else {
// Display a textfield for samba 2.2
echo '</td>'."\n".'<td><input name="f_smb_domain" type="text" size="20" maxlength="80" value="' . $account_new->smb_domain . '">';
}
echo '</td>'."\n".'<td><a href="../help.php?HelpNumber=460" target="lamhelp">'._('Help').'</a></td></tr>'."\n<tr><td>";
// Display all allowed host suffixes
echo _('Suffix'); echo '</td><td><select name="f_general_suffix">';
foreach ($ldap_intern->search_units($config_intern->get_HostSuffix()) as $suffix) {
if ($account_new->general_dn) {
if ($account_new->general_dn == $suffix)
echo '<option selected>' . $suffix. '</option>';
else echo '<option>' . $suffix. '</option>';
}
else echo '<option>' . $suffix. '</option>';
}
echo '</select></td><td><a href="../help.php?HelpNumber=463" target="lamhelp">'._('Help').'</a>'.
"</td>\n</tr>\n</table>";
echo _('Values with * are required');
echo "</fieldset>\n";
// Show fieldset with modify, undo and back-button
echo "<fieldset class=\"hostedit-bright\"><legend class=\"hostedit-bright\"><b>";
if ($account_old) echo _('Modify');
else echo _('Create');
echo "</b></legend>\n";
// display undo-button when editing a host
if (isset($account_old)) {
echo "<input name=\"next_reset\" type=\"submit\" value=\""; echo _('Undo changes');
echo "\">\n";
}
echo '&nbsp;<input name="create" type="submit" value="';
if ($account_old) echo _('Modify Account');
else echo _('Create Account');
echo "\">";
echo "</fieldset>\n";
// Show fieldset where to save a new profile
echo "<fieldset class=\"hostedit-dark\"><legend class=\"hostedit-bright\"><b>";
echo _("Save profile");
echo "</b></legend>\n<table border=0 width=\"100%\">\n<tr>\n<td width=\"50%\">";
echo '<input name="f_finish_safeProfile" type="text" size="30" maxlength="50">';
echo '&nbsp;<input name="save" type="submit" value="';
echo _('Save profile');
echo '"></td><td width="30%"></td><td width="20%"><a href="../help.php?HelpNumber=457" target="lamhelp">'._('Help');
echo "</a></td>\n</tr>\n</table>\n</fieldset>";
break;
case 'finish':
// Final Settings
echo '<input name="select" type="hidden" value="finish">';
echo "<fieldset class=\"hostedit-bright\"><legend class=\"hostedit-bright\"><b>"._('Note')."</b></legend>\n";
if ($account_old) {
printf(_("Host %s has been modified."), $account_new->general_username);
}
else {
printf(_("Host %s has been created."), $account_new->general_username);
}
echo '<br><br>';
if (!$account_old) {
echo '<input name="createagain" type="submit" value="'; echo _('Create another host'); echo '">';
}
echo '<input name="outputpdf" type="submit" value="'; echo _('Create PDF file'); echo '">'.
'&nbsp;<input name="backmain" type="submit" value="'; echo _('Back to host list'); echo '">'.
'</fieldset'."\n";
break;
}
// Print end of HTML-Page
echo '</form></body></html>';
?>

File diff suppressed because it is too large Load Diff

View File

@ -1,147 +0,0 @@
<?php
/*
$Id$
This code is part of LDAP Account Manager (http://www.sourceforge.net/projects/lam)
Copyright (C) 2003 Roland Gruber
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Login page to change the preferences.
*/
include_once('../../lib/config.inc');
include_once('../../lib/status.inc');
// start session
session_save_path("../../sess");
@session_start();
setlanguage();
// remove settings from session
unset($_SESSION['conf_passwd']);
unset($_SESSION['conf_passwd1']);
unset($_SESSION['conf_passwd2']);
unset($_SESSION['conf_serverurl']);
unset($_SESSION['conf_admins']);
unset($_SESSION['conf_suffusers']);
unset($_SESSION['conf_suffgroups']);
unset($_SESSION['conf_suffhosts']);
unset($_SESSION['conf_minUID']);
unset($_SESSION['conf_maxUID']);
unset($_SESSION['conf_minGID']);
unset($_SESSION['conf_maxGID']);
unset($_SESSION['conf_minMach']);
unset($_SESSION['conf_maxMach']);
unset($_SESSION['conf_usrlstattr']);
unset($_SESSION['conf_grplstattr']);
unset($_SESSION['conf_hstlstattr']);
unset($_SESSION['conf_maxlistentries']);
unset($_SESSION['conf_lang']);
unset($_SESSION['conf_scriptpath']);
unset($_SESSION['conf_scriptserver']);
unset($_SESSION['conf_samba3']);
unset($_SESSION['conf_pwdhash']);
unset($_SESSION['conf_filename']);
// remove config wizard settings
unset($_SESSION['confwiz_config']);
unset($_SESSION['confwiz_ldap']);
unset($_SESSION['confwiz_masterpwd']);
echo $_SESSION['header'];
?>
<title>
<?php
echo _("Login");
?>
</title>
<link rel="stylesheet" type="text/css" href="../../style/layout.css">
</head>
<body>
<p align="center"><a href="http://lam.sf.net" target="_blank">
<img src="../../graphics/banner.jpg" border=1 alt="LDAP Account Manager"></a>
</p>
<hr><br><br>
<!-- form to change existing profiles -->
<form action="confmain.php" method="post">
<table align="center" border="2" rules="none" bgcolor="white">
<tr>
<td style="border-style:none" rowspan="3" width="20"></td>
<td style="border-style:none" colspan="2" height="20"></td>
<td style="border-style:none" rowspan="3" width="20"></td>
</tr>
<tr>
<td style="border-style:none" colspan=2 align="center"><b> <?php echo _("Please enter password to change preferences:"); ?> </b></td>
</tr>
<tr><td style="border-style:none" colspan=2 >&nbsp;</td></tr>
<?php
// print message if login was incorrect
if ($message) {
echo ("<tr><td style=\"border-style:none\" rowspan=\"2\"></td>" .
"<td style=\"border-style:none\" colspan=2 align=\"center\"><b><font color=red>" . $message . "</font></b></td>" .
"<td style=\"border-style:none\" rowspan=\"2\"></td></tr>");
echo "<tr><td style=\"border-style:none\" colspan=2 >&nbsp;</td></tr>";
}
?>
<tr>
<td style="border-style:none" rowspan="4" width="20"></td>
<td style="border-style:none" colspan=2 align="center">
<select size=1 name="filename">
<?php
$files = getConfigProfiles();
$conf = new CfgMain();
$defaultprofile = $conf->default;
for ($i = 0; $i < sizeof($files); $i++) {
if ($files[$i] == $defaultprofile) echo ("<option selected>" . $files[$i] . "</option>\n");
else echo ("<option>" . $files[$i] . "</option>\n");
}
?>
</select>
<input type="password" name="passwd">
<input type="submit" name="submit" value=" <?php echo _("Ok"); ?> ">
<a href="../help.php?HelpNumber=200" target="lamhelp"><?php echo _("Help") ?></a></td>
<td style="border-style:none" rowspan="4" width="20"></td>
</tr>
<tr>
<td style="border-style:none"colspan=2>&nbsp;</td>
</tr>
<tr>
<td style="border-style:none" align="left">
<b><a href="profmanage.php"><?php echo _("Manage profiles") ?></a></b>
</td>
<td style="border-style:none" align="right">
<b><a href="../confwiz/start.php"><?php echo _("Configuration wizard") ?></a></b>
</td>
</tr>
<tr>
<td style="border-style:none" colspan=2 height="20"></td>
</tr>
</table>
</form>
<p><br><br><br><br><br></p>
<!-- back to login page -->
<p>
<a href="../login.php"> <?php echo _("Back to Login"); ?> </a>
</p>
</body>
</html>

View File

@ -1,391 +0,0 @@
<?php
/*
$Id$
This code is part of LDAP Account Manager (http://www.sourceforge.net/projects/lam)
Copyright (C) 2003 Roland Gruber
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
include_once ("../../lib/config.inc");
// start session
session_save_path("../../sess");
@session_start();
setlanguage();
// check if button was pressed and if we have to save the setting or go back to login
if ($_POST['back'] || $_POST['submitconf']){
// save settings
if ($_POST['submitconf']){
// save HTTP-POST variables in session
$_SESSION['conf_passwd'] = $_POST['passwd'];
$_SESSION['conf_passwd1'] = $_POST['passwd1'];
$_SESSION['conf_passwd2'] = $_POST['passwd2'];
$_SESSION['conf_serverurl'] = $_POST['serverurl'];
$_SESSION['conf_cachetimeout'] = $_POST['cachetimeout'];
$_SESSION['conf_admins'] = $_POST['admins'];
$_SESSION['conf_suffusers'] = $_POST['suffusers'];
$_SESSION['conf_suffgroups'] = $_POST['suffgroups'];
$_SESSION['conf_suffhosts'] = $_POST['suffhosts'];
$_SESSION['conf_suffdomains'] = $_POST['suffdomains'];
$_SESSION['conf_minUID'] = $_POST['minUID'];
$_SESSION['conf_maxUID'] = $_POST['maxUID'];
$_SESSION['conf_minGID'] = $_POST['minGID'];
$_SESSION['conf_maxGID'] = $_POST['maxGID'];
$_SESSION['conf_minMach'] = $_POST['minMach'];
$_SESSION['conf_maxMach'] = $_POST['maxMach'];
$_SESSION['conf_usrlstattr'] = $_POST['usrlstattr'];
$_SESSION['conf_grplstattr'] = $_POST['grplstattr'];
$_SESSION['conf_hstlstattr'] = $_POST['hstlstattr'];
$_SESSION['conf_maxlistentries'] = $_POST['maxlistentries'];
$_SESSION['conf_lang'] = $_POST['lang'];
$_SESSION['conf_samba3'] = $_POST['samba3'];
$_SESSION['conf_pwdhash'] = $_POST['pwdhash'];
$_SESSION['conf_scriptpath'] = $_POST['scriptpath'];
$_SESSION['conf_scriptserver'] = $_POST['scriptserver'];
$_SESSION['conf_pdf_usertext'] = $_POST['pdf_usertext'];
$_SESSION['conf_filename'] = $_POST['filename'];
metaRefresh("confsave.php");
}
// back to login
else if ($_POST['back']){
metaRefresh("../login.php");
}
exit;
}
// get password if register_globals is off
if ($_POST['passwd']) $passwd = $_POST['passwd'];
// check if password was entered
// if not: load login page
if (! $passwd) {
$message = _("No password was entered!");
require('conflogin.php');
exit;
}
// check if password is valid
// if not: load login page
include_once ('../../lib/config.inc');
$conf = new Config($_POST['filename']);
if (!(($conf->get_Passwd()) == $passwd)) {
$message = _("The password is invalid! Please try again.");
require('conflogin.php');
exit;
}
echo $_SESSION['header'];
echo ("<title>" . _("LDAP Account Manager Configuration") . "</title>\n");
echo ("<link rel=\"stylesheet\" type=\"text/css\" href=\"../../style/layout.css\">\n");
echo ("</head>\n");
echo ("<body>\n");
echo ("<p align=\"center\"><a href=\"http://lam.sf.net\" target=\"new_window\">".
"<img src=\"../../graphics/banner.jpg\" border=1 alt=\"LDAP Account Manager\"></a></p>\n<hr>\n<p></p>\n");
// display formular
echo ("<form action=\"confmain.php\" method=\"post\">\n");
echo ("<fieldset><legend><b>" . _("Server settings") . "</b></legend>");
echo ("<table border=0>");
// serverURL
echo ("<tr><td align=\"right\"><b>" . _("Server address") . " *: </b></td>".
"<td align=\"left\">".
"<input size=50 type=\"text\" name=\"serverurl\" value=\"" . $conf->get_ServerURL() . "\">".
"</td>\n");
echo ("<td><a href=\"../help.php?HelpNumber=201\" target=\"lamhelp\">" . _("Help") . "</a></td></tr>\n");
// new line
echo ("<tr><td colspan=3>&nbsp</td></tr>");
// user suffix
echo ("<tr><td align=\"right\"><b>".
_("UserSuffix") . " *: </b></td>".
"<td><input size=50 type=\"text\" name=\"suffusers\" value=\"" . $conf->get_UserSuffix() . "\"></td>\n");
echo ("<td><a href=\"../help.php?HelpNumber=202\" target=\"lamhelp\">" . _("Help") . "</a></td></tr>\n");
// group suffix
echo ("<tr><td align=\"right\"><b>".
_("GroupSuffix") . " *: </b></td>".
"<td><input size=50 type=\"text\" name=\"suffgroups\" value=\"" . $conf->get_GroupSuffix() . "\"></td>\n");
echo ("<td><a href=\"../help.php?HelpNumber=202\" target=\"lamhelp\">" . _("Help") . "</a></td></tr>\n");
// host suffix
echo ("<tr><td align=\"right\"><b>".
_("HostSuffix") . " *: </b></td>".
"<td><input size=50 type=\"text\" name=\"suffhosts\" value=\"" . $conf->get_HostSuffix() . "\"></td>\n");
echo ("<td><a href=\"../help.php?HelpNumber=202\" target=\"lamhelp\">" . _("Help") . "</a></td></tr>\n");
// domain suffix
echo ("<tr><td align=\"right\"><b>".
_("DomainSuffix") . " **: </b></td>".
"<td><input size=50 type=\"text\" name=\"suffdomains\" value=\"" . $conf->get_DomainSuffix() . "\"></td>\n");
echo ("<td><a href=\"../help.php?HelpNumber=202\" target=\"lamhelp\">" . _("Help") . "</a></td></tr>\n");
// new line
echo ("<tr><td colspan=3>&nbsp</td></tr>");
// LDAP password hash type
echo ("<tr><td align=\"right\"><b>".
_("Password hash type") . " *: </b></td>".
"<td><select name=\"pwdhash\">\n<option selected>" . $conf->get_pwdhash() . "</option>\n");
if ($conf->get_pwdhash() != "CRYPT") echo("<option>CRYPT</option>\n");
if ($conf->get_pwdhash() != "SHA") echo("<option>SHA</option>\n");
if ($conf->get_pwdhash() != "SSHA") echo("<option>SSHA</option>\n");
if ($conf->get_pwdhash() != "MD5") echo("<option>MD5</option>\n");
if ($conf->get_pwdhash() != "SMD5") echo("<option>SMD5</option>\n");
if ($conf->get_pwdhash() != "PLAIN") echo("<option>PLAIN</option>\n");
echo ("</select></td>\n");
echo ("<td><a href=\"../help.php?HelpNumber=215\" target=\"lamhelp\">" . _("Help") . "</a></td></tr>\n");
// new line
echo ("<tr><td colspan=3>&nbsp</td></tr>");
// LDAP cache timeout
echo ("<tr><td align=\"right\"><b>".
_("Cache timeout") . " *: </b></td>".
"<td><select name=\"cachetimeout\">\n<option selected>".$conf->get_cacheTimeout()."</option>\n");
if ($conf->get_cacheTimeout() != 0) echo("<option>0</option>\n");
if ($conf->get_cacheTimeout() != 1) echo("<option>1</option>\n");
if ($conf->get_cacheTimeout() != 2) echo("<option>2</option>\n");
if ($conf->get_cacheTimeout() != 5) echo("<option>5</option>\n");
if ($conf->get_cacheTimeout() != 10) echo("<option>10</option>\n");
if ($conf->get_cacheTimeout() != 15) echo("<option>15</option>\n");
echo ("</select></td>\n");
echo ("<td><a href=\"../help.php?HelpNumber=214\" target=\"lamhelp\">" . _("Help") . "</a></td></tr>\n");
echo ("</table>");
echo ("</fieldset>");
echo ("<p></p>");
echo ("<fieldset><legend><b>" . _("Samba settings") . "</b></legend>");
echo ("<table border=0>");
// Samba version
echo ("<tr><td align=\"right\"><b>".
_("Samba 3.x schema") . ": </b></td><td><select name=\"samba3\">\n");
if ($conf->is_samba3()) echo ("<option>yes</option><option>no</option></select></td>");
else echo ("<option>no</option><option>yes</option></select></td>");
echo ("<td><a href=\"../help.php?HelpNumber=213\" target=\"lamhelp\">" . _("Help") . "</a></td></tr>\n");
echo ("</table>");
echo ("</fieldset>");
echo ("<p></p>");
echo ("<fieldset><legend><b>" . _("Ranges") . "</b></legend>");
echo ("<table border=0>");
// minUID
echo ("<tr><td align=\"right\"><b>".
_("Minimum UID number") . " *: </b>".
"<input size=6 type=\"text\" name=\"minUID\" value=\"" . $conf->get_minUID() . "\"></td>\n");
// maxUID
echo ("<td align=\"right\"><b>" . _("Maximum UID number") . " *: </b>".
"<input size=6 type=\"text\" name=\"maxUID\" value=\"" . $conf->get_maxUID() . "\"></td>\n");
// UID text
echo ("<td><a href=\"../help.php?HelpNumber=203\" target=\"lamhelp\">" . _("Help") . "</a></td></tr>\n");
// minGID
echo ("<tr><td align=\"right\"><b>".
_("Minimum GID number") . " *: </b>".
"<input size=6 type=\"text\" name=\"minGID\" value=\"" . $conf->get_minGID() . "\"></td>\n");
// maxGID
echo ("<td align=\"right\"><b>" . _("Maximum GID number")." *: </b>".
"<input size=6 type=\"text\" name=\"maxGID\" value=\"" . $conf->get_maxGID() . "\"></td>\n");
// GID text
echo ("<td><a href=\"../help.php?HelpNumber=204\" target=\"lamhelp\">" . _("Help") . "</a></td></tr>\n");
// minMach
echo ("<tr><td align=\"right\"><b>".
_("Minimum Machine number") . " *: </b>".
"<input size=6 type=\"text\" name=\"minMach\" value=\"" . $conf->get_minMachine() . "\"></td>\n");
// maxMach
echo ("<td align=\"right\"><b>" . _("Maximum Machine number") . " *: </b>".
"<input size=6 type=\"text\" name=\"maxMach\" value=\"" . $conf->get_maxMachine() . "\"></td>\n");
// Machine text
echo ("<td><a href=\"../help.php?HelpNumber=205\" target=\"lamhelp\">" . _("Help") . "</a></td></tr>\n");
echo ("</table>\n");
echo ("</fieldset>\n");
echo ("<p></p>\n");
echo ("<fieldset><legend><b>" . _("LDAP List settings") . "</b></legend>\n");
echo ("<table border=0>\n");
// user list attributes
echo ("<tr><td align=\"right\"><b>".
_("Attributes in User List") . " *:</b></td>".
"<td><input size=50 type=\"text\" name=\"usrlstattr\" value=\"" . $conf->get_userlistAttributes() . "\"></td>");
echo ("<td><a href=\"../help.php?HelpNumber=206\" target=\"lamhelp\">" . _("Help") . "</a></td></tr>\n");
// group list attributes
echo ("<tr><td align=\"right\"><b>".
_("Attributes in Group List") . " *:</b></td>".
"<td><input size=50 type=\"text\" name=\"grplstattr\" value=\"" . $conf->get_grouplistAttributes() . "\"></td>");
echo ("<td><a href=\"../help.php?HelpNumber=206\" target=\"lamhelp\">" . _("Help") . "</a></td></tr>\n");
// host list attributes
echo ("<tr><td align=\"right\"><b>".
_("Attributes in Host List") . " *:</b></td>".
"<td><input size=50 type=\"text\" name=\"hstlstattr\" value=\"" . $conf->get_hostlistAttributes() . "\"></td>");
echo ("<td><a href=\"../help.php?HelpNumber=206\" target=\"lamhelp\">" . _("Help") . "</a></td></tr>\n");
echo ("<tr><td colspan=3>&nbsp</td></tr>\n");
// maximum list entries
echo ("<tr><td align=\"right\"><b>".
_("Maximum list entries") . " *: </b></td>".
"<td><select name=\"maxlistentries\">\n<option selected>".$conf->get_MaxListEntries()."</option>\n");
if ($conf->get_MaxListEntries() != 10) echo("<option>10</option>\n");
if ($conf->get_MaxListEntries() != 20) echo("<option>20</option>\n");
if ($conf->get_MaxListEntries() != 30) echo("<option>30</option>\n");
if ($conf->get_MaxListEntries() != 50) echo("<option>50</option>\n");
if ($conf->get_MaxListEntries() != 75) echo("<option>75</option>\n");
if ($conf->get_MaxListEntries() != 100) echo("<option>100</option>\n");
echo ("</select></td>\n");
echo ("<td><a href=\"../help.php?HelpNumber=208\" target=\"lamhelp\">" . _("Help") . "</a></td></tr>\n");
echo ("</table>\n");
echo ("</fieldset>\n");
echo ("<p></p>\n");
echo ("<fieldset><legend><b>" . _("Language settings") . "</b></legend>\n");
echo ("<table border=0>\n");
// language
echo ("<tr>");
echo ("<td><b>" . _("Default language") . ":</b></td><td>\n");
// read available languages
$languagefile = "../../config/language";
if(is_file($languagefile))
{
$file = fopen($languagefile, "r");
$i = 0;
while(!feof($file))
{
$line = fgets($file, 1024);
if($line == "\n" || $line[0] == "#" || $line == "") continue; // ignore comment and empty lines
$languages[$i] = chop($line);
$i++;
}
fclose($file);
// generate language list
echo ("<select name=\"lang\">");
for ($i = 0; $i < sizeof($languages); $i++) {
$entry = explode(":", $languages[$i]);
if ($conf->get_defaultLanguage() != $languages[$i]) echo("<option value=\"" . $languages[$i] . "\">" . $entry[2] . "</option>\n");
else echo("<option selected value=\"" . $languages[$i] . "\">" . $entry[2] . "</option>\n");
}
echo ("</select>\n");
}
else
{
echo _("Unable to load available languages. Setting English as default language. For further instructions please contact the Admin of this site.");
}
echo ("</td>\n");
echo ("<td><a href=\"../help.php?HelpNumber=209\" target=\"lamhelp\">" . _("Help") . "</a></td></tr>\n");
echo ("</table>\n");
echo ("</fieldset>\n");
echo ("<p></p>\n");
// script settings
echo ("<fieldset><legend><b>" . _("Script settings") . "</b></legend>\n");
echo ("<table border=0>\n");
echo ("<tr><td align=\"right\"><b>".
_("Server of external script") . ": </b></td>".
"<td><input size=50 type=\"text\" name=\"scriptserver\" value=\"" . $conf->get_scriptServer() . "\"></td>\n");
echo ("<td><a href=\"../help.php?HelpNumber=211\" target=\"lamhelp\">" . _("Help") . "</a></td></tr>\n");
echo ("<tr><td align=\"right\"><b>".
_("Path to external script") . ": </b></td>".
"<td><input size=50 type=\"text\" name=\"scriptpath\" value=\"" . $conf->get_scriptPath() . "\"></td>\n");
echo ("<td><a href=\"../help.php?HelpNumber=210\" target=\"lamhelp\">" . _("Help") . "</a></td></tr>\n");
echo ("</table>\n");
echo ("</fieldset>\n");
echo ("<p></p>\n");
// PDF settings
echo ("<fieldset><legend><b>" . _("PDF settings") . "</b></legend>\n");
echo ("<table border=0>\n");
echo ("<tr><td align=\"right\"><b>".
_("Text for user PDF") . ": </b></td>".
"<td><textarea name=\"pdf_usertext\" cols=\"80\" rows=\"5\">" . $conf->get_pdftext() . "</textarea></td>\n");
echo ("<td><a href=\"../help.php?HelpNumber=216\" target=\"lamhelp\">" . _("Help") . "</a></td></tr>\n");
echo ("</table>\n");
echo ("</fieldset>\n");
echo ("<p></p>\n");
// security setings
echo ("<fieldset><legend><b>" . _("Security settings") . "</b></legend>\n");
echo ("<table border=0>\n");
// admin list
echo ("<tr><td align=\"right\"><b>".
_("List of valid users") . " *: </b></td>".
"<td><input size=50 type=\"text\" name=\"admins\" value=\"" . $conf->get_Adminstring() . "\"></td>\n");
echo ("<td><a href=\"../help.php?HelpNumber=207\" target=\"lamhelp\">" . _("Help") . "</a></td></tr>\n");
echo ("<tr><td colspan=3>&nbsp;</td></tr>\n");
// new password
echo ("<tr><td align=\"right\"><font color=\"red\"><b>".
_("New Password") . ": </b></font></td>".
"<td align=\"left\"><input type=\"password\" name=\"passwd1\"></td>\n");
echo ("<td rowspan=2><a href=\"../help.php?HelpNumber=212\" target=\"lamhelp\">" . _("Help") . "</a></td></tr>\n");
// reenter password
echo ("<tr><td align=\"right\"><font color=\"red\"><b>".
_("Reenter Password") . ": </b></font></td>".
"<td align=\"left\"><input type=\"password\" name=\"passwd2\"></td></tr>\n");
echo ("</table>\n");
echo ("</fieldset>\n");
echo ("<p></p>\n");
// buttons
echo ("<table border=0>\n");
echo ("<tr><td align=\"left\"><pre>".
"<input type=\"submit\" name=\"submitconf\" value=\"" . _("Submit") . "\">".
"<input type=\"reset\" name=\"resetconf\" value=\"" . _("Reset") . "\">".
"<input type=\"submit\" name=\"back\" value=\"" . _("Abort") . "\"\n");
echo ("></pre></td></tr>\n");
echo ("</table>\n");
echo ("<p></p>");
echo ("<p>* = ". _("required") . "</p>");
echo ("<p>** = ". _("required for Samba 3 schema") . "</p>");
// password for configuration
echo ("<p><input type=\"hidden\" name=\"passwd\" value=\"" . $passwd . "\"></p>\n");
// config file
echo ("<p><input type=\"hidden\" name=\"filename\" value=\"" . $_POST['filename'] . "\"></p>\n");
echo ("</form>\n");
echo ("</body>\n");
echo ("</html>\n");
?>

View File

@ -1,263 +0,0 @@
<?php
/*
$Id$
This code is part of LDAP Account Manager (http://www.sourceforge.net/projects/lam)
Copyright (C) 2003 Roland Gruber
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
confsave saves the new preferences to lam.conf
*/
include_once ('../../lib/config.inc');
// start session
session_save_path("../../sess");
@session_start();
setlanguage();
$conf = new Config($_SESSION['conf_filename']);
// get data from session
$passwd = $_SESSION['conf_passwd'];
$passwd1 = $_SESSION['conf_passwd1'];
$passwd2 = $_SESSION['conf_passwd2'];
$serverurl = $_SESSION['conf_serverurl'];
$cachetimeout = $_SESSION['conf_cachetimeout'];
$admins = $_SESSION['conf_admins'];
$suffusers = $_SESSION['conf_suffusers'];
$suffgroups = $_SESSION['conf_suffgroups'];
$suffhosts = $_SESSION['conf_suffhosts'];
$suffdomains = $_SESSION['conf_suffdomains'];
$minUID = $_SESSION['conf_minUID'];
$maxUID = $_SESSION['conf_maxUID'];
$minGID = $_SESSION['conf_minGID'];
$maxGID = $_SESSION['conf_maxGID'];
$minMach = $_SESSION['conf_minMach'];
$maxMach = $_SESSION['conf_maxMach'];
$usrlstattr = $_SESSION['conf_usrlstattr'];
$grplstattr = $_SESSION['conf_grplstattr'];
$hstlstattr = $_SESSION['conf_hstlstattr'];
$maxlistentries = $_SESSION['conf_maxlistentries'];
$lang = $_SESSION['conf_lang'];
$scriptpath = $_SESSION['conf_scriptpath'];
$scriptserver = $_SESSION['conf_scriptserver'];
$samba3 = $_SESSION['conf_samba3'];
$pwdhash = $_SESSION['conf_pwdhash'];
$pdftext = $_SESSION['conf_pdf_usertext'];
$filename = $_SESSION['conf_filename'];
// check if password is correct
// if not: load login page
if ($passwd != $conf->get_Passwd()) {
require('conflogin.php');
exit;
}
echo $_SESSION['header'];
echo "<title>" . _("LDAP Account Manager Configuration") . "</title>\n";
echo "<link rel=\"stylesheet\" type=\"text/css\" href=\"../../style/layout.css\">\n";
echo "</head><body>\n";
echo ("<p align=\"center\"><a href=\"http://lam.sf.net\" target=\"new_window\">".
"<img src=\"../../graphics/banner.jpg\" border=1 alt=\"LDAP Account Manager\"></a></p><hr><br><br>");
// remove double slashes if magic quotes are on
if (get_magic_quotes_gpc() == 1) {
$suffusers = stripslashes($suffusers);
$suffgroups = stripslashes($suffgroups);
$suffhosts = stripslashes($suffhosts);
$suffdomains = stripslashes($suffdomains);
}
// check new preferences
if (!$conf->set_samba3($samba3)) {
echo ("<font color=\"red\"><b>" . _("Samba version is not defined!") . "</b></font>");
echo ("\n<br><br><br><a href=\"javascript:history.back()\">" . _("Back to preferences...") . "</a>");
exit;
}
if (!$conf->set_ServerURL($serverurl)) {
echo ("<font color=\"red\"><b>" . _("Server Address is empty!") . "</b></font>");
echo ("\n<br><br><br><a href=\"javascript:history.back()\">" . _("Back to preferences...") . "</a>");
exit;
}
if (!$conf->set_cacheTimeout($cachetimeout)) {
echo ("<font color=\"red\"><b>" . _("Cache timeout is invalid!") . "</b></font>");
echo ("\n<br><br><br><a href=\"javascript:history.back()\">" . _("Back to preferences...") . "</a>");
exit;
}
if (!$conf->set_Adminstring($admins)) {
echo ("<font color=\"red\"><b>" . _("List of admin users is empty or invalid!") . "</b></font>");
echo ("\n<br><br><br><a href=\"javascript:history.back()\">" . _("Back to preferences...") . "</a>");
exit;
}
if (!$conf->set_UserSuffix($suffusers)) {
echo ("<font color=\"red\"><b>" . _("UserSuffix is invalid!") . "</b></font>");
echo ("\n<br><br><br><a href=\"javascript:history.back()\">" . _("Back to preferences...") . "</a>");
exit;
}
if (!$conf->set_GroupSuffix($suffgroups)) {
echo ("<font color=\"red\"><b>" . _("GroupSuffix is invalid!") . "</b></font>");
echo ("\n<br><br><br><a href=\"javascript:history.back()\">" . _("Back to preferences...") . "</a>");
exit;
}
if (!$conf->set_HostSuffix($suffhosts)) {
echo ("<font color=\"red\"><b>" . _("HostSuffix is invalid!") . "</b></font>");
echo ("\n<br><br><br><a href=\"javascript:history.back()\">" . _("Back to preferences...") . "</a>");
exit;
}
if (!$conf->set_DomainSuffix($suffdomains)) {
echo ("<font color=\"red\"><b>" . _("DomainSuffix is invalid!") . "</b></font>");
echo ("\n<br><br><br><a href=\"javascript:history.back()\">" . _("Back to preferences...") . "</a>");
exit;
}
if (!$conf->set_minUID($minUID)) {
echo ("<font color=\"red\"><b>" . _("Minimum UID number is invalid!") . "</b></font>");
echo ("\n<br><br><br><a href=\"javascript:history.back()\">" . _("Back to preferences...") . "</a>");
exit;
}
if (!$conf->set_maxUID($maxUID)) {
echo ("<font color=\"red\"><b>" . _("Maximum UID number is invalid!") . "</b></font>");
echo ("\n<br><br><br><a href=\"javascript:history.back()\">" . _("Back to preferences...") . "</a>");
exit;
}
if (!$conf->set_minGID($minGID)) {
echo ("<font color=\"red\"><b>" . _("Minimum GID number is invalid!") . "</b></font>");
echo ("\n<br><br><br><a href=\"javascript:history.back()\">" . _("Back to preferences...") . "</a>");
exit;
}
if (!$conf->set_maxGID($maxGID)) {
echo ("<font color=\"red\"><b>" . _("Maximum GID number is invalid!") . "</b></font>");
echo ("\n<br><br><br><a href=\"javascript:history.back()\">" . _("Back to preferences...") . "</a>");
exit;
}
if (!$conf->set_minMachine($minMach)) {
echo ("<font color=\"red\"><b>" . _("Minimum Machine number is invalid!") . "</b></font>");
echo ("\n<br><br><br><a href=\"javascript:history.back()\">" . _("Back to preferences...") . "</a>");
exit;
}
if (!$conf->set_maxMachine($maxMach)) {
echo ("<font color=\"red\"><b>" . _("Maximum Machine number is invalid!") . "</b></font>");
echo ("\n<br><br><br><a href=\"javascript:history.back()\">" . _("Back to preferences...") . "</a>");
exit;
}
if (!$conf->set_userlistAttributes($usrlstattr)) {
echo ("<font color=\"red\"><b>" . _("User list attributes are invalid!") . "</b></font>");
echo ("\n<br><br><br><a href=\"javascript:history.back()\">" . _("Back to preferences...") . "</a>");
exit;
}
if (!$conf->set_grouplistAttributes($grplstattr)) {
echo ("<font color=\"red\"><b>" . _("Group list attributes are invalid!") . "</b></font>");
echo ("\n<br><br><br><a href=\"javascript:history.back()\">" . _("Back to preferences...") . "</a>");
exit;
}
if (!$conf->set_hostlistAttributes($hstlstattr)) {
echo ("<font color=\"red\"><b>" . _("Host list attributes are invalid!") . "</b></font>");
echo ("\n<br><br><br><a href=\"javascript:history.back()\">" . _("Back to preferences...") . "</a>");
exit;
}
if (!$conf->set_MaxListEntries($maxlistentries)) {
echo ("<font color=\"red\"><b>" . _("Max list entries is invalid!") . "</b></font>");
echo ("\n<br><br><br><a href=\"javascript:history.back()\">" . _("Back to preferences...") . "</a>");
exit;
}
if (!$conf->set_defaultLanguage($lang)) {
echo ("<font color=\"red\"><b>" . _("Language is not defined!") . "</b></font>");
echo ("\n<br><br><br><a href=\"javascript:history.back()\">" . _("Back to preferences...") . "</a>");
exit;
}
if (!$conf->set_scriptpath($scriptpath)) {
echo ("<font color=\"red\"><b>" . _("Logon script is invalid!") . "</b></font>");
echo ("\n<br><br><br><a href=\"javascript:history.back()\">" . _("Back to preferences...") . "</a>");
exit;
}
if (!$conf->set_scriptserver($scriptserver)) {
echo ("<font color=\"red\"><b>" . _("Script server is invalid!") . "</b></font>");
echo ("\n<br><br><br><a href=\"javascript:history.back()\">" . _("Back to preferences...") . "</a>");
exit;
}
if (!$conf->set_pwdhash($pwdhash)) {
echo ("<font color=\"red\"><b>" . _("Password hash is invalid!") . "</b></font>");
echo ("\n<br><br><br><a href=\"javascript:history.back()\">" . _("Back to preferences...") . "</a>");
exit;
}
if (!$conf->set_pdftext($pdftext)) {
echo ("<font color=\"red\"><b>" . _("Saving PDF text failed!") . "</b></font>");
echo ("\n<br><br><br><a href=\"javascript:history.back()\">" . _("Back to preferences...") . "</a>");
exit;
}
// check if password was changed
if ($passwd1) {
if ($passwd1 != $passwd2) {
echo ("<b>" . _("Passwords are different!") . "</b>");
exit;
}
// set new password
if ($passwd1 != "") {
$conf->set_Passwd($passwd1);
echo ("<b>" . _("Password changed!") . "</b><br><br>");
}
}
// save settings and display new settings
$conf->save();
echo ("<b>" . _("The following settings were saved to profile:") . " </b>" . $filename . "<br><br>");
$conf->printconf();
echo ("<br><br><br><br><br><a href=\"../login.php\" target=\"_top\">" . _("Back to Login") . "</a>");
echo("</body></html>");
// remove settings from session
unset($_SESSION['conf_passwd']);
unset($_SESSION['conf_passwd1']);
unset($_SESSION['conf_passwd2']);
unset($_SESSION['conf_serverurl']);
unset($_SESSION['conf_cachetimeout']);
unset($_SESSION['conf_admins']);
unset($_SESSION['conf_suffusers']);
unset($_SESSION['conf_suffgroups']);
unset($_SESSION['conf_suffhosts']);
unset($_SESSION['conf_suffdomains']);
unset($_SESSION['conf_minUID']);
unset($_SESSION['conf_maxUID']);
unset($_SESSION['conf_minGID']);
unset($_SESSION['conf_maxGID']);
unset($_SESSION['conf_minMach']);
unset($_SESSION['conf_maxMach']);
unset($_SESSION['conf_usrlstattr']);
unset($_SESSION['conf_grplstattr']);
unset($_SESSION['conf_hstlstattr']);
unset($_SESSION['conf_maxlistentries']);
unset($_SESSION['conf_lang']);
unset($_SESSION['conf_scriptpath']);
unset($_SESSION['conf_scriptserver']);
unset($_SESSION['conf_samba3']);
unset($_SESSION['conf_pwdhash']);
unset($_SESSION['conf_pdf_usertext']);
unset($_SESSION['conf_filename']);
?>

View File

@ -1,370 +0,0 @@
<?php
/*
$Id$
This code is part of LDAP Account Manager (http://www.sourceforge.net/projects/lam)
Copyright (C) 2003 Roland Gruber
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Configuration profile management.
*/
include_once('../../lib/config.inc');
include_once('../../lib/status.inc');
// start session
session_save_path("../../sess");
@session_start();
setlanguage();
echo $_SESSION['header'];
?>
<title>
<?php
echo _("Profile management");
?>
</title>
<link rel="stylesheet" type="text/css" href="../../style/layout.css">
</head>
<body>
<p align="center"><a href="http://lam.sf.net" target="_blank">
<img src="../../graphics/banner.jpg" border=1 alt="LDAP Account Manager"></a>
</p>
<hr><br>
<?php
// check if submit button was pressed
if ($_POST['submit']) {
$cfg = new CfgMain();
// check master password
if ($cfg->password != $_POST['passwd']) {
$error = _("Master password is wrong!");
}
// add new profile
elseif ($_POST['action'] == "add") {
if (eregi("^[a-z0-9\-_]+$", $_POST['addprofile']) && !in_array($_POST['addprofile'], getConfigProfiles())) {
// check profile password
if ($_POST['addpassword'] && $_POST['addpassword2'] && ($_POST['addpassword'] == $_POST['addpassword2'])) {
// create new profile file
@copy("../../config/lam.conf_sample", "../../config/" . $_POST['addprofile'] . ".conf");
@chmod ("../../config/" . $_POST['addprofile'] . ".conf", 0600);
$file = is_file("../../config/" . $_POST['addprofile'] . ".conf");
if ($file) {
// load as config and write new password
$conf = new Config($_POST['addprofile']);
$conf->Passwd = $_POST['addpassword'];
$conf->save();
$msg = _("Created new profile.");
}
else $error = _("Unable to create new profile!");
}
else $error = _("Profile passwords are different or empty!");
}
else $error = _("Profile name is invalid!");
}
// rename profile
elseif ($_POST['action'] == "rename") {
if (eregi("^[a-z0-9\-_]+$", $_POST['renfilename']) && !in_array($_POST['renprofile'], getConfigProfiles())) {
if (rename("../../config/" . $_POST['oldfilename'] . ".conf",
"../../config/" . $_POST['renfilename'] . ".conf")) {
$msg = _("Renamed profile.");
}
else $error = _("Could not rename file!");
}
else $error = _("Profile name is invalid!");
}
// delete profile
elseif ($_POST['action'] == "delete") {
if (@unlink("../../config/" . $_POST['delfilename'] . ".conf")) {
$msg = _("Profile deleted.");
}
else $error = _("Unable to delete profile!");
}
// set new profile password
elseif ($_POST['action'] == "setpass") {
if ($_POST['setpassword'] && $_POST['setpassword2'] && ($_POST['setpassword'] == $_POST['setpassword2'])) {
$config = new Config($_POST['setprofile']);
$config->set_Passwd($_POST['setpassword']);
$config->save();
$msg = _("New password set successfully.");
}
else $error = _("Profile passwords are different or empty!");
}
// set master password
elseif ($_POST['action'] == "setmasterpass") {
if ($_POST['masterpassword'] && $_POST['masterpassword2'] && ($_POST['masterpassword'] == $_POST['masterpassword2'])) {
$config = new CfgMain();
$config->password = $_POST['masterpassword'];
$config->save();
$msg = _("New master password set successfully.");
}
else $error = _("Master passwords are different or empty!");
}
// set default profile
elseif ($_POST['action'] == "setdefault") {
$config = new CfgMain();
$config->default = $_POST['defaultfilename'];
$config->save();
$msg = _("New default profile set successfully.");
}
// print messages
if ($error || $msg) {
if ($error) StatusMessage("ERROR", "", $error);
if ($msg) StatusMessage("INFO", "", $msg);
}
else exit;
}
?>
<br>
<!-- form for adding/renaming/deleting profiles -->
<form action="profmanage.php" method="post">
<table>
<tr><td>
<fieldset>
<legend><b> <?php echo _("Profile management"); ?> </b></legend>
<p>
<table cellspacing=0 border=0>
<!-- add profile -->
<tr bgcolor="#dbdbff">
<td>
<input type="radio" name="action" value="add" checked>
</td>
<td>
<b>
<?php echo _("Add profile") . ":"; ?>
</b>
</td>
<td align="right">
<?php echo _("Profile name") . ":"; ?>
<input type="text" name="addprofile">
</td>
<td>&nbsp;
<a href="../help.php?HelpNumber=230" target="lamhelp"><?php echo _("Help"); ?></a>
</td>
</tr>
<tr bgcolor="#dbdbff">
<td>&nbsp;</td>
<td>&nbsp;</td>
<td align="right">
<?php echo _("Profile password") . ":"; ?>
<input type="password" name="addpassword">
</td>
<td></td>
</tr>
<tr bgcolor="#dbdbff">
<td>&nbsp;</td>
<td>&nbsp;</td>
<td align="right">
<?php echo _("Reenter profile password") . ":"; ?>
<input type="password" name="addpassword2">
</td>
<td></td>
</tr>
<tr>
<td colspan=4>&nbsp</td>
</tr>
<!-- rename profile -->
<tr bgcolor="#dbdbff">
<td>
<input type="radio" name="action" value="rename">
</td>
<td>
<select size=1 name="oldfilename">
<?php
$files = getConfigProfiles();
for ($i = 0; $i < sizeof($files); $i++) echo ("<option>" . $files[$i] . "</option>\n");
?>
</select>
<b>
<?php echo _("Rename profile"); ?>
</b>
</td>
<td align="right">
<?php echo _("Profile name") . ":"; ?>
<input type="text" name="renfilename">
</td>
<td>&nbsp;
<a href="../help.php?HelpNumber=231" target="lamhelp"><?php echo _("Help"); ?></a>
</td>
</tr>
<tr>
<td colspan=4>&nbsp</td>
</tr>
<!-- delete profile -->
<tr bgcolor="#dbdbff">
<td>
<input type="radio" name="action" value="delete">
</td>
<td colspan=2>
<select size=1 name="delfilename">
<?php
$files = getConfigProfiles();
for ($i = 0; $i < sizeof($files); $i++) echo ("<option>" . $files[$i] . "</option>\n");
?>
</select>
<b>
<?php echo _("Delete profile"); ?>
</b>
</td>
<td>&nbsp;
<a href="../help.php?HelpNumber=232" target="lamhelp"><?php echo _("Help"); ?></a>
</td>
</tr>
<tr>
<td colspan=4>&nbsp</td>
</tr>
<!-- set profile password -->
<tr bgcolor="#dbdbff">
<td>
<input type="radio" name="action" value="setpass">
</td>
<td>
<select size=1 name="setprofile">
<?php
$files = getConfigProfiles();
for ($i = 0; $i < sizeof($files); $i++) echo ("<option>" . $files[$i] . "</option>\n");
?>
</select>
<b>
<?php echo _("Set profile password"); ?>
</b>
</td>
<td align="right">
<?php echo _("Profile password") . ":"; ?>
<input type="password" name="setpassword">
</td>
<td>&nbsp;
<a href="../help.php?HelpNumber=233" target="lamhelp"><?php echo _("Help"); ?></a>
</td>
</tr>
<tr bgcolor="#dbdbff">
<td>&nbsp;</td>
<td>&nbsp;</td>
<td align="right">
<?php echo _("Reenter profile password") . ":"; ?>
<input type="password" name="setpassword2">
</td>
<td>&nbsp;</td>
</tr>
<tr>
<td colspan=4>&nbsp</td>
</tr>
<tr>
<td colspan=4>&nbsp</td>
</tr>
<!-- change default profile -->
<tr bgcolor="#dbdbff">
<td>
<input type="radio" name="action" value="setdefault">
</td>
<td>
<select size=1 name="defaultfilename">
<?php
$files = getConfigProfiles();
$conf = new CfgMain();
$defaultprofile = $conf->default;
for ($i = 0; $i < sizeof($files); $i++) {
if ($files[$i] == $defaultprofile) echo ("<option selected>" . $files[$i] . "</option>\n");
else echo ("<option>" . $files[$i] . "</option>\n");
}
?>
</select>
<b>
<?php echo _("Change default profile"); ?>
</b>
</td>
<td>&nbsp;</td>
<td>&nbsp;
<a href="../help.php?HelpNumber=234" target="lamhelp"><?php echo _("Help"); ?></a>
</td>
</tr>
<tr>
<td colspan=4>&nbsp</td>
</tr>
<!-- set master password -->
<tr bgcolor="#dbdbff">
<td>
<input type="radio" name="action" value="setmasterpass">
</td>
<td>
<b>
<?php echo _("Change master password"); ?>
</b>
</td>
<td align="right">
<?php echo _("New master password") . ":"; ?>
<input type="password" name="masterpassword">
</td>
<td>&nbsp;
<a href="../help.php?HelpNumber=235" target="lamhelp"><?php echo _("Help"); ?></a>
</td>
</tr>
<tr bgcolor="#dbdbff">
<td>&nbsp;</td>
<td>&nbsp;</td>
<td align="right">
<?php echo _("Reenter new master password") . ":"; ?>
<input type="password" name="masterpassword2">
</td>
<td>&nbsp;</td>
</tr>
</table>
</fieldset>
</td></tr>
</table>
<p>&nbsp</p>
<!-- password field and submit button -->
<b>
<?php echo _("Master Password:"); ?>
</b>
&nbsp
<input type="password" name="passwd">
&nbsp
<input type="submit" name="submit" value=" <?php echo _("Submit"); ?> ">
&nbsp
<a href="../help.php?HelpNumber=236" target="lamhelp"><?php echo _("Help"); ?></a>
</form>
<p><br></p>
<!-- back to login page -->
<p>
<a href="conflogin.php"> <?php echo _("Back to profile login"); ?> </a>
</p>
</body>
</html>

View File

@ -1,65 +0,0 @@
<?php
/*
$Id$
This code is part of LDAP Account Manager (http://www.sourceforge.net/projects/lam)
Copyright (C) 2003 Roland Gruber
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Configuration wizard - shows saved settings
*/
include_once('../../lib/config.inc');
include_once('../../lib/ldap.inc');
include_once('../../lib/status.inc');
// start session
session_save_path("../../sess");
@session_start();
setlanguage();
// check master password
$cfg = new CfgMain();
if ($cfg->password != $_SESSION['confwiz_masterpwd']) {
require("../config/conflogin.php");
exit;
}
echo $_SESSION['header'];
echo "<title>" . _("Configuration wizard") . "</title>\n";
echo "<link rel=\"stylesheet\" type=\"text/css\" href=\"../../style/layout.css\">\n";
echo "</head><body>\n";
echo ("<p align=\"center\"><a href=\"http://lam.sf.net\" target=\"new_window\">".
"<img src=\"../../graphics/banner.jpg\" border=1 alt=\"LDAP Account Manager\"></a></p><hr><br><br>\n");
echo ("<b>" . _("The following settings were saved to profile:") . " </b>" . $_SESSION['confwiz_config']->file . "<br><br>");
$_SESSION['confwiz_config']->printconf();
echo ("<br><br><br><br><br><a href=\"../login.php\" target=\"_top\">" . _("Back to Login") . "</a>");
echo("</body></html>");
// remove config wizard settings
unset($_SESSION['confwiz_config']);
unset($_SESSION['confwiz_ldap']);
unset($_SESSION['confwiz_masterpwd']);
?>

View File

@ -1,580 +0,0 @@
<?php
/*
$Id$
This code is part of LDAP Account Manager (http://www.sourceforge.net/projects/lam)
Copyright (C) 2003 Roland Gruber
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Configuration wizard - server settings second part
*/
include_once('../../lib/config.inc');
include_once('../../lib/ldap.inc');
include_once('../../lib/status.inc');
// start session
session_save_path("../../sess");
@session_start();
setlanguage();
// check master password
$cfg = new CfgMain();
if ($cfg->password != $_SESSION['confwiz_masterpwd']) {
require("../config/conflogin.php");
exit;
}
// check if user clicked cancel button
if ($_POST['cancel']) {
@unlink("../../config/" . $_SESSION['confwiz_config']->file . ".conf");
metarefresh('../config/conflogin.php');
}
// check if all suffixes exist
$conf = $_SESSION['confwiz_config'];
$new_suffs = array();
if ($conf->get_UserSuffix() && ($conf->get_UserSuffix() != "")) {
$info = @ldap_search($_SESSION['confwiz_ldap']->server, $conf->get_UserSuffix(), "", array());
$res = @ldap_get_entries($_SESSION['confwiz_ldap']->server, $info);
if (!$res && !in_array($conf->get_UserSuffix(), $new_suffs)) $new_suffs[] = $conf->get_UserSuffix();
}
if ($conf->get_GroupSuffix() && ($conf->get_GroupSuffix() != "")) {
$info = @ldap_search($_SESSION['confwiz_ldap']->server, $conf->get_GroupSuffix(), "", array());
$res = @ldap_get_entries($_SESSION['confwiz_ldap']->server, $info);
if (!$res && !in_array($conf->get_GroupSuffix(), $new_suffs)) $new_suffs[] = $conf->get_GroupSuffix();
}
if ($conf->get_HostSuffix() && ($conf->get_HostSuffix() != "")) {
$info = @ldap_search($_SESSION['confwiz_ldap']->server, $conf->get_HostSuffix(), "", array());
$res = @ldap_get_entries($_SESSION['confwiz_ldap']->server, $info);
if (!$res && !in_array($conf->get_HostSuffix(), $new_suffs)) $new_suffs[] = $conf->get_HostSuffix();
}
if ($conf->is_samba3() && $conf->get_DomainSuffix() && ($conf->get_DomainSuffix() != "")) {
$info = @ldap_search($_SESSION['confwiz_ldap']->server, $conf->get_DomainSuffix(), "", array());
$res = @ldap_get_entries($_SESSION['confwiz_ldap']->server, $info);
if (!$res && !in_array($conf->get_DomainSuffix(), $new_suffs)) $new_suffs[] = $conf->get_DomainSuffix();
}
if (sizeof($new_suffs) > 0) {
// check if user wanted to create suffixes
if ($_POST['createsuff']) {
$fail = array();
$errors = array();
// add entries
for ($i = 0; $i < sizeof($new_suffs); $i++) {
// check if entry is already present
$info = @ldap_search($_SESSION['confwiz_ldap']->server, $new_suffs[$i], "", array());
$res = @ldap_get_entries($_SESSION['confwiz_ldap']->server, $info);
if ($res) continue;
$suff = $new_suffs[$i];
// generate DN and attributes
$tmp = explode(",", $suff);
$name = explode("=", $tmp[0]);
array_shift($tmp);
$end = implode(",", $tmp);
if ($name[0] != "ou") { // add root entry
$attr = array();
$attr[$name[0]] = $name[1];
$attr['objectClass'] = 'organization';
$dn = $suff;
if (!@ldap_add($_SESSION['confwiz_ldap']->server(), $dn, $attr)) {
$fail[] = $suff;
continue;
}
}
else { // add organizational unit
$name = $name[1];
$attr = array();
$attr['objectClass'] = "organizationalunit";
$attr['ou'] = $name;
$dn = $suff;
if (!@ldap_add($_SESSION['confwiz_ldap']->server(), $dn, $attr)) {
// check if we have to add parent entries
if (ldap_errno($_SESSION['confwiz_ldap']->server()) == 32) {
$temp = explode(",", $suff);
$subsuffs = array();
// make list of subsuffixes
for ($k = 0; $k < sizeof($temp); $k++) {
$part = explode("=", $temp[$k]);
if ($part[0] == "ou") $subsuffs[] = implode(",", array_slice($temp, $k));
else {
$subsuffs[] = implode(",", array_slice($temp, $k));
break;
}
}
// create missing entries
for ($k = sizeof($subsuffs) - 1; $k >= 0; $k--) {
// check if subsuffix is present
$info = @ldap_search($_SESSION['confwiz_ldap']->server, $subsuffs[$k], "", array());
$res = @ldap_get_entries($_SESSION['confwiz_ldap']->server, $info);
if (!$res) {
$suffarray = explode(",", $subsuffs[$k]);
$headarray = explode("=", $suffarray[0]);
if ($headarray[0] == "ou") { // add ou entry
$attr = array();
$attr['objectClass'] = 'organizationalunit';
$attr['ou'] = $headarray[1];
$dn = $subsuffs[$k];
if (!@ldap_add($_SESSION['confwiz_ldap']->server(), $dn, $attr)) {
$fail[] = $suff;
$error[] = ldap_error($_SESSION['confwiz_ldap']->server());
break;
}
}
else { // add root entry
$attr = array();
$attr['objectClass'][] = 'organization';
$attr[$headarray[0]] = $headarray[1];
if ($headarray[0] == "dc") {
$attr['o'] = $headarray[1];
$attr['objectClass'][] = 'dcObject';
}
$dn = $subsuffs[$k];
if (!@ldap_add($_SESSION['confwiz_ldap']->server(), $dn, $attr)) {
$fail[] = $suff;
$error[] = ldap_error($_SESSION['confwiz_ldap']->server());
break;
}
}
}
}
}
else {
$fail[] = $suff;
$error[] = ldap_error($_SESSION['confwiz_ldap']->server());
}
}
}
}
// show errors
if (sizeof($fail) > 0) {
echo $_SESSION['header'];
echo "<title>";
echo _("Configuration wizard");
echo "</title>\n";
echo "<link rel=\"stylesheet\" type=\"text/css\" href=\"../../style/layout.css\">\n";
echo "</head><body>\n";
echo "<p align=\"center\"><a href=\"http://lam.sf.net\" target=\"_blank\">\n";
echo "<img src=\"../../graphics/banner.jpg\" border=1 alt=\"LDAP Account Manager\"></a>\n";
echo "</p>\n";
echo "<hr>\n";
echo "<p>&nbsp;</p>\n";
// print failed suffixes
for ($i = 0; $i < sizeof($fail); $i++) {
StatusMessage("ERROR", _("Failed to create entry!") . "<br>" . $error[$i], $fail[$i]);
}
echo "<p>&nbsp;</p>\n";
echo "<p><br><br><a href=\"server2.php\">" . _("Back to server settings") . "</a></p>\n";
echo "</body></html>\n";
exit;
}
}
// show needed suffixes
else {
echo $_SESSION['header'];
echo "<title>";
echo _("Configuration wizard");
echo "</title>\n";
echo "<link rel=\"stylesheet\" type=\"text/css\" href=\"../../style/layout.css\">\n";
echo "</head><body>\n";
echo "<p align=\"center\"><a href=\"http://lam.sf.net\" target=\"_blank\">\n";
echo "<img src=\"../../graphics/banner.jpg\" border=1 alt=\"LDAP Account Manager\"></a>\n";
echo "</p>\n";
echo "<hr>\n";
echo "<p>&nbsp;</p>\n";
echo "<p><font color=\"red\"><b>" . _("The following suffix(es) are missing in LDAP. LAM will create them for you.") . "</b></font></p>\n";
echo "<p>&nbsp;</p>\n";
// print missing suffixes
for ($i = 0; $i < sizeof($new_suffs); $i++) {
echo "<p><b>" . $new_suffs[$i] . "</b></p>\n";
}
echo "<p>&nbsp;</p>\n";
echo "<form action=\"ldaptest.php\" method=\"post\">\n";
echo "<input type=\"submit\" name=\"createsuff\" value=\"" . _("Create") . "\">";
echo "<input type=\"submit\" name=\"cancel\" value=\"" . _("Cancel") . "\">";
echo "</form>\n";
echo "</body></html>\n";
exit;
}
}
// check if domain object is present
if ($_SESSION['confwiz_config']->is_samba3()) {
// get list of domains
$domlist = $_SESSION['confwiz_ldap']->search_domains($_SESSION['confwiz_config']->get_domainSuffix());
if (sizeof($domlist) < 1) {
if ($_POST['createdom']) {
// check input
$suffix = $_SESSION['confwiz_config']->get_DomainSuffix();
$server = $_SESSION['confwiz_ldap']->server;
$filter = "(|(sambasid=" . $_POST['dom_SID'] . ")(sambadomainname=" . $_POST['dom_name'] . "))";
$sr = @ldap_search($server, $suffix, $filter, array());
$info = @ldap_get_entries($_SESSION["confwiz_ldap"]->server, $sr);
$errors = array();
// check for existing domains
if ($info["count"] > 0) {
$errors[] = _("This Samba 3 domain is already present!");
}
// check domain name
if (!eregi("^[a-z0-9_\\-]+$", $_POST['dom_name'])) {
$errors[] = _("Domain name is invalid!");
}
// check SID
if (!eregi("^S-[0-9]-[0-9]-[0-9]{2,2}-[0-9]*-[0-9]*-[0-9]*$", $_POST['dom_SID'])) {
$errors[] = _("Samba 3 domain SID is invalid!");
}
// check numbers
if ($_POST['dom_nextRID'] && !is_numeric($_POST['dom_nextRID'])) {
$errors[] = _("Next RID is not a number!");
}
if ($_POST['dom_nextUserRID'] && !is_numeric($_POST['dom_nextUserRID'])) {
$errors[] = _("Next user RID is not a number!");
}
if ($_POST['dom_nextGroupRID'] && !is_numeric($_POST['dom_nextGroupRID'])) {
$errors[] = _("Next group RID is not a number!");
}
if (!is_numeric($_POST['dom_RIDbase'])) {
$errors[] = _("Algorithmic RID base is not a number!");
}
// try to create domain if no error occured
if (sizeof($errors) < 1) {
$DN = "sambaDomainName" . "=" . $_POST['dom_name'] . "," . $_POST['dom_suffix'];
$attr = array();
$attr['objectclass'] = "sambaDomain";
$attr['sambaDomainName'] = $_POST['dom_name'];
$attr['sambaSID'] = $_POST['dom_SID'];
if ($_POST['dom_nextRID']) $attr['sambaNextRid'] = $_POST['dom_nextRID'];
if ($_POST['dom_nextGroupRID']) $attr['sambaNextGroupRid'] = $_POST['dom_nextGroupRID'];
if ($_POST['dom_nextUserRID']) $attr['sambaNextUserRid'] = $_POST['dom_nextUserRID'];
$attr['sambaAlgorithmicRidBase'] = $_POST['dom_RIDbase'];
// write to LDAP
if (! @ldap_add($_SESSION['confwiz_ldap']->server(), $DN, $attr)) {
$errors[] = _("Failed to add domain!") . "\n<br>" . ldap_error($_SESSION['confwiz_ldap']->server());
}
else {
// remember domain SID
$_SESSION["confwiz_domainsid"] = $_POST['dom_SID'];
}
}
// show error messages
if (sizeof($errors) > 1) {
echo $_SESSION['header'];
echo "<title>";
echo _("Configuration wizard");
echo "</title>\n";
echo "<link rel=\"stylesheet\" type=\"text/css\" href=\"../../style/layout.css\">\n";
echo "</head><body>\n";
echo "<p align=\"center\"><a href=\"http://lam.sf.net\" target=\"_blank\">\n";
echo "<img src=\"../../graphics/banner.jpg\" border=1 alt=\"LDAP Account Manager\"></a>\n";
echo "</p>\n";
echo "<hr>\n";
echo "<p>&nbsp;</p>\n";
// print errors
for ($i = 0; $i < sizeof($errors); $i++) {
StatusMessage("ERROR", $errors[$i], "");
}
echo "<p>&nbsp;</p>\n";
echo "<p><br><br><a href=\"server2.php\">" . _("Back to server settings") . "</a></p>\n";
echo "</body></html>\n";
exit;
}
}
else {
// get possible suffixes
$domsuff = $_SESSION['confwiz_ldap']->search_units($_SESSION['confwiz_config']->get_domainSuffix());
echo $_SESSION['header'];
echo "<title>";
echo _("Configuration wizard");
echo "</title>\n";
echo "<link rel=\"stylesheet\" type=\"text/css\" href=\"../../style/layout.css\">\n";
echo "</head><body>\n";
echo "<p align=\"center\"><a href=\"http://lam.sf.net\" target=\"_blank\">\n";
echo "<img src=\"../../graphics/banner.jpg\" border=1 alt=\"LDAP Account Manager\"></a>\n";
echo "</p>\n";
echo "<hr>\n";
echo "<p>&nbsp;</p>\n";
echo "<p>". _("No domains found, please create one.") . "</p>\n";
echo "<p>&nbsp;</p>\n";
echo "<form action=\"ldaptest.php\" method=\"post\">\n";
echo "<fieldset class=\"domedit\">\n";
echo "<legend class=\"domedit\"><b>" . _("Domain Settings") . "</b></legend>\n";
echo "<table border=0>\n";
// domain name
echo "<tr>\n";
echo "<td>\n";
echo "<b>" . _("Domain name") . ":</b>\n";
echo "</td>\n";
echo "<td>\n";
echo "<input type=\"text\" name=\"dom_name\">\n";
echo "</td>\n";
echo ("<td><a href=\"../help.php?HelpNumber=651\" target=\"lamhelp\">" . _("Help") . "</a></td>\n");
echo "</tr>\n";
echo "<tr>\n";
echo "<td>&nbsp;</td><td>&nbsp;</td>\n";
echo "</tr>\n";
// domain SID
echo "<tr>\n";
echo "<td>\n";
echo "<b>" . _("Domain SID") . ": </b>\n";
echo "</td>\n";
echo "<td>\n";
echo "<input type=\"text\" size=\"50\" name=\"dom_SID\">\n";
echo "</td>\n";
echo ("<td><a href=\"../help.php?HelpNumber=653\" target=\"lamhelp\">" . _("Help") . "</a></td>\n");
echo "</tr>\n";
echo "<tr>\n";
echo "<td>&nbsp;</td><td>&nbsp;</td>\n";
echo "</tr>\n";
// next RID
echo "<tr>\n";
echo "<td><b>" . _("Next RID") . " " . _("(optional)") . ": </b></td>\n";
echo "<td>\n";
echo "<input type=\"text\" name=\"dom_nextRID\">\n";
echo "</td>\n";
echo ("<td><a href=\"../help.php?HelpNumber=654\" target=\"lamhelp\">" . _("Help") . "</a></td>\n");
echo "</tr>\n";
// next user RID
echo "<tr>\n";
echo "<td><b>" . _("Next User RID") . " " . _("(optional)") . ": </b></td>\n";
echo "<td>\n";
echo "<input type=\"text\" name=\"dom_nextUserRID\">\n";
echo "</td>\n";
echo ("<td><a href=\"../help.php?HelpNumber=655\" target=\"lamhelp\">" . _("Help") . "</a></td>\n");
echo "</tr>\n";
// next group RID
echo "<tr>\n";
echo "<td><b>" . _("Next Group RID") . " " . _("(optional)") . ": </b></td>\n";
echo "<td>\n";
echo "<input type=\"text\" name=\"dom_nextGroupRID\">\n";
echo "</td>\n";
echo ("<td><a href=\"../help.php?HelpNumber=656\" target=\"lamhelp\">" . _("Help") . "</a></td>\n");
echo "</tr>\n";
echo "<tr>\n";
echo "<td>&nbsp;</td><td>&nbsp;</td>\n";
echo "</tr>\n";
// algorithmic RID base
echo "<tr>\n";
echo "<td><b>" . _("Algorithmic RID Base") . ": </b></td>\n";
echo "<td>\n";
echo "<input type=\"text\" name=\"dom_RIDbase\" value=\"1000\">\n";
echo "</td>\n";
echo ("<td><a href=\"../help.php?HelpNumber=657\" target=\"lamhelp\">" . _("Help") . "</a></td>\n");
echo "</tr>\n";
echo "<tr>\n";
echo "<td>&nbsp;</td><td>&nbsp;</td>\n";
echo "</tr>\n";
// domain suffix
echo "<tr>\n";
echo "<td>\n";
echo "<b>" . _("Suffix") . ": </b>\n";
echo "</td>\n";
echo "<td>\n";
echo "<select name=\"dom_suffix\">\n";
for ($i = 0; $i < sizeof($domsuff); $i++) {
echo "<option>" . $domsuff[$i] . "</option>\n";
}
echo "</select>";
echo "</td>\n";
echo ("<td><a href=\"../help.php?HelpNumber=652\" target=\"lamhelp\">" . _("Help") . "</a></td>\n");
echo "</tr>\n";
echo "<tr>\n";
echo "<td>&nbsp;</td><td>&nbsp;</td>\n";
echo "</tr>\n";
echo "</table>\n";
echo "</fieldset>\n";
echo "<p>&nbsp;</p>\n";
echo "<input type=\"submit\" name=\"createdom\" value=\"" . _("Create") . "\">";
echo "<input type=\"submit\" name=\"cancel\" value=\"" . _("Cancel") . "\">";
echo "</form>\n";
echo "</body></html>\n";
exit;
}
}
else {
// remember domain SID
$_SESSION["confwiz_domainsid"] = $domlist[0]->SID;
}
}
// check if essential default Samba groups are present
if ($_SESSION['confwiz_config']->is_samba3() && !$_POST['creategroups'] && !$_POST['ignoregroups']) {
$d512 = $d513 = $d514 = false;
$suffix = $_SESSION['confwiz_config']->get_groupSuffix();
$domSID = $_SESSION['confwiz_domainsid'];
$filter = "(objectclass=sambagroupmapping)";
$server = $_SESSION['confwiz_ldap']->server;
$sr = @ldap_search($server, $suffix, $filter, array("sambaSID"));
if ($sr) {
$info = @ldap_get_entries($_SESSION["confwiz_ldap"]->server, $sr);
if ($info) {
// check SIDs
array_shift($info);
for ($i = 0; $i < sizeof($info); $i++) {
if ($info[$i]['sambasid']['0'] == $domSID . "-512") {
$d512 = true;
}
elseif ($info[$i]['sambasid']['0'] == $domSID . "-513") {
$d513 = true;
}
elseif ($info[$i]['sambasid']['0'] == $domSID . "-514") {
$d514 = true;
}
}
}
}
// make a list of missing groups
$missing_groups = array();
if (!$d512) {
$temp = array();
$temp['sambasid'] = $domSID . "-512";
$temp['displayname'] = "Domain Admins";
$temp['cn'] = "domainadmins";
$missing_groups[] = $temp;
}
if (!$d513) {
$temp = array();
$temp['sambasid'] = $domSID . "-513";
$temp['displayname'] = "Domain Users";
$temp['cn'] = "domainusers";
$missing_groups[] = $temp;
}
if (!$d514) {
$temp = array();
$temp['sambasid'] = $domSID . "-514";
$temp['displayname'] = "Domain Guests";
$temp['cn'] = "domainguests";
$missing_groups[] = $temp;
}
$_SESSION['conwiz_missing_groups'] = $missing_groups;
if (sizeof($missing_groups) > 0) {
// show user a list of missing groups
echo $_SESSION['header'];
echo "<title>";
echo _("Configuration wizard");
echo "</title>\n";
echo "<link rel=\"stylesheet\" type=\"text/css\" href=\"../../style/layout.css\">\n";
echo "</head><body>\n";
echo "<p align=\"center\"><a href=\"http://lam.sf.net\" target=\"_blank\">\n";
echo "<img src=\"../../graphics/banner.jpg\" border=1 alt=\"LDAP Account Manager\"></a>\n";
echo "</p>\n";
echo "<hr>\n";
echo "<p>&nbsp;</p>\n";
echo "<p>" . _("LAM detected that one or more essential Samba groups are missing. They are listed below.") .
" " . _("LAM can create them for you or you have to create them manually later.") . "</p>\n";
echo "<p>&nbsp;</p>\n";
for ($i = 0; $i < sizeof($missing_groups); $i++) {
echo "<p><b>" . _("Windows group name") . ": </b>" . $missing_groups[$i]['displayname'] . "<p>\n";
echo "<p><b>" . _("Unix group name") . ": </b>" . $missing_groups[$i]['cn'] . "<p>\n";
echo "<p><b>" . _("Group SID") . ": </b>" . $missing_groups[$i]['sambasid'] . "<p>\n";
echo "<p>&nbsp;</p>\n";
echo "<p>&nbsp;</p>\n";
}
echo "<form action=\"ldaptest.php\" method=\"post\">\n";
echo "<input type=\"submit\" name=\"creategroups\" value=\"" . _("Create") . "\">";
echo "<input type=\"submit\" name=\"ignoregroups\" value=\"" . _("Ignore") . "\">";
echo "<input type=\"submit\" name=\"cancel\" value=\"" . _("Cancel") . "\">";
echo "</form>\n";
echo "</body></html>\n";
exit;
}
}
// create needed Samab groups
if ($_SESSION['confwiz_config']->is_samba3() && $_POST['creategroups']) {
$suffix = $_SESSION['confwiz_config']->get_groupSuffix();
$domSID = $_SESSION['confwiz_domainsid'];
$filter = "(objectclass=posixgroup)";
$server = $_SESSION['confwiz_ldap']->server;
$sr = @ldap_search($server, $suffix, $filter, array("gidnumber"));
if ($sr) {
$info = @ldap_get_entries($_SESSION["confwiz_ldap"]->server, $sr);
if ($info) {
array_shift($info);
// create list of GID numbers
$gid_numbers = array();
for ($i = 0; $i < sizeof($info); $i++) {
// ignore GIDs that are out of range
if ($info[$i]['gidnumber'][0] <= $_SESSION['confwiz_config']->get_maxGID()) {
if ($info[$i]['gidnumber'][0] >= $_SESSION['confwiz_config']->get_minGID()) {
$gid_numbers[] = $info[$i]['gidnumber'][0];
}
}
}
// if no GIDs are used add (minGID -1)
if (sizeof($gid_numbers) < 1) $gid_numbers[] = $_SESSION['confwiz_config']->get_minGID() - 1;
sort($gid_numbers);
$missing_groups = $_SESSION['conwiz_missing_groups'];
$errors = array();
// check if free GID numbers exist
if ($gid_numbers[sizeof($gid_numbers) - 1] < $_SESSION['confwiz_config']->get_maxGID() - 3) {
$gidnumber = $gid_numbers[sizeof($gid_numbers) - 1];
for ($i = 0; $i < sizeof($missing_groups); $i++) {
$gidnumber++;
$attributes = array();
$attributes['objectclass'][] = 'posixGroup';
$attributes['objectclass'][] = 'sambaGroupMapping';
$attributes['sambaGroupType'] = 2;
$attributes['gidnumber'] = $gidnumber;
$attributes['sambaSID'] = $missing_groups[$i]['sambasid'];
$attributes['description'] = $missing_groups[$i]['displayname'];
$attributes['displayname'] = $missing_groups[$i]['displayname'];
$attributes['cn'] = $missing_groups[$i]['cn'];
$dn = 'cn=' . $attributes['cn'] . ',' . $_SESSION['confwiz_config']->get_groupSuffix();
if (!ldap_add($_SESSION['confwiz_ldap']->server(), $dn, $attributes)) {
$errors[] = 'Unable to create group:' . " " . $missing_groups[$i]['cn'];
}
}
}
// not enough free GIDs
else {
$errors[] = 'There are not enough free GID numbers in the GID range!';
}
if (sizeof($errors) < 1) {
metarefresh('final.php');
}
else {
echo $_SESSION['header'];
echo "<title>";
echo _("Configuration wizard");
echo "</title>\n";
echo "<link rel=\"stylesheet\" type=\"text/css\" href=\"../../style/layout.css\">\n";
echo "</head><body>\n";
echo "<p align=\"center\"><a href=\"http://lam.sf.net\" target=\"_blank\">\n";
echo "<img src=\"../../graphics/banner.jpg\" border=1 alt=\"LDAP Account Manager\"></a>\n";
echo "</p>\n";
echo "<hr>\n";
echo "<p>&nbsp;</p>\n";
// print errors
for ($i = 0; $i < sizeof($errors); $i++) {
StatusMessage("ERROR", $errors[$i], '');
}
echo "<p>&nbsp;</p>\n";
echo "<p><br><br><a href=\"server2.php\">" . _("Back to server settings") . "</a></p>\n";
echo "</body></html>\n";
exit;
}
}
}
exit;
}
// if nothing is missing go to last page
metarefresh('final.php');
?>

View File

@ -1,156 +0,0 @@
<?php
/*
$Id$
This code is part of LDAP Account Manager (http://www.sourceforge.net/projects/lam)
Copyright (C) 2003 Roland Gruber
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Configuration wizard - lamdaemon and PDF text
*/
include_once('../../lib/config.inc');
include_once('../../lib/ldap.inc');
include_once('../../lib/status.inc');
// start session
session_save_path("../../sess");
@session_start();
setlanguage();
// check master password
$cfg = new CfgMain();
if ($cfg->password != $_SESSION['confwiz_masterpwd']) {
require("../config/conflogin.php");
exit;
}
// check if user clicked on cancel button
if ($_POST['cancel']) {
@unlink("../../config/" . $_SESSION['confwiz_config']->file . ".conf");
metarefresh('../config/conflogin.php');
exit;
}
// check if user clicked on next button
if ($_POST['submit']) {
$errors = array();
if (!$_SESSION['confwiz_config']->set_scriptpath($_POST['scriptpath'])) {
$errors[] = _("Script path is invalid!");
}
if (!$_SESSION['confwiz_config']->set_scriptserver($_POST['scriptserver'])) {
$errors[] = _("Script server is invalid!");
}
if (!$_SESSION['confwiz_config']->set_pdftext($_POST['pdf_usertext'])) {
$errors[] = _("Saving PDF text failed!");
}
// if no errors save and go back to optional.php
if (sizeof($errors) < 1) {
$_SESSION['confwiz_config']->save();
$_SESSION['confwiz_optional']['daemon'] = 'done';
metarefresh('optional.php');
}
else {
// errors occured
echo $_SESSION['header'];
echo "<link rel=\"stylesheet\" type=\"text/css\" href=\"../../style/layout.css\">\n";
echo "<title>\n";
echo _("Configuration wizard");
echo "</title>\n";
echo "</head><body>\n";
for ($i = 0; $i < sizeof($errors); $i++) {
StatusMessage("ERROR", $errors[$i], "");
}
echo "<p><br><br><a href=\"o_daemon.php\">" . _("Back to lamdaemon and PDF settings") . "</a></p>\n";
echo "</body></html>\n";
exit;
}
}
echo $_SESSION['header'];
echo "<title>\n";
echo _("Configuration wizard");
echo "</title>\n";
echo "<link rel=\"stylesheet\" type=\"text/css\" href=\"../../style/layout.css\">\n";
echo "</head>\n";
echo "<body>\n";
echo "<p align=\"center\"><a href=\"http://lam.sf.net\" target=\"_blank\">\n";
echo "<img src=\"../../graphics/banner.jpg\" border=1 alt=\"LDAP Account Manager\"></a>\n";
echo "</p>\n";
echo "<hr>\n";
// formular
echo "<form action=\"o_daemon.php\" method=\"post\">\n";
echo "<p>&nbsp;</p>\n";
// lamdaemon
echo "<p><b>Lamdaemon.pl:</b></p>\n";
echo "<p>" . _("If you want to manage quotas and homedirectories with LAM you need to setup lamdaemon.pl.") .
"<br>" .
_("This is the server and path where the lamdaemon.pl script is stored. LDAP Account Manager will make a SSH connection to this server with username and password provided at login.") .
"<br><br><font color=red>" . _("Use it at your own risk and read the documentation for lamdaemon before you use it!") . "</font><br><br></p>\n";
echo ("<table border=0>");
echo ("<tr><td align=\"right\"><b>".
_("Server of external script") . ": </b></td>".
"<td><input size=50 type=\"text\" name=\"scriptserver\" value=\"" . $_SESSION['confwiz_config']->get_scriptServer() . "\"></td>\n");
echo ("</tr>\n");
echo ("<tr><td align=\"right\"><b>".
_("Path to external script") . ": </b></td>".
"<td><input size=50 type=\"text\" name=\"scriptpath\" value=\"" . $_SESSION['confwiz_config']->get_scriptPath() . "\"></td>\n");
echo ("</tr>\n");
echo "</table>\n";
echo "<p><br></p>\n";
// PDF text
echo "<p><b>" . _("PDF text") . ":</b></p>\n";
echo "<p>" . _("This text will appear on top of every user PDF file.") . "</p>\n";
echo ("<table border=0>");
echo "<tr>";
echo "<td><textarea name=\"pdf_usertext\" cols=\"80\" rows=\"5\">" . $_SESSION['confwiz_config']->get_pdftext() . "</textarea></td>\n";
echo ("</tr>\n");
echo "</table>\n";
echo "<p><br></p>\n";
// next/cancel button
echo "<p>\n";
echo "<input type=\"submit\" name=\"submit\" value=\"" . _("Next") . "\">\n";
echo "<input type=\"submit\" name=\"cancel\" value=\"" . _("Cancel") . "\">\n";
echo "</p>\n";
echo "</form>\n";
echo "</body>\n</html>\n";
?>

View File

@ -1,176 +0,0 @@
<?php
/*
$Id$
This code is part of LDAP Account Manager (http://www.sourceforge.net/projects/lam)
Copyright (C) 2003 Roland Gruber
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Configuration wizard - language and admins
*/
include_once('../../lib/config.inc');
include_once('../../lib/ldap.inc');
include_once('../../lib/status.inc');
// start session
session_save_path("../../sess");
@session_start();
setlanguage();
// check master password
$cfg = new CfgMain();
if ($cfg->password != $_SESSION['confwiz_masterpwd']) {
require("../config/conflogin.php");
exit;
}
// check if user clicked on cancel button
if ($_POST['cancel']) {
@unlink("../../config/" . $_SESSION['confwiz_config']->file . ".conf");
metarefresh('../config/conflogin.php');
exit;
}
// check if user clicked on next button
if ($_POST['submit']) {
$errors = array();
if (!$_SESSION['confwiz_config']->set_defaultLanguage($_POST['lang'])) {
$errors[] = _("Language is not defined!");
}
if (!$_SESSION['confwiz_config']->set_Adminstring($_POST['admins'])) {
$errors[] = _("List of admin users is empty or invalid!");
}
// if no errors save and go back to optional.php
if (sizeof($errors) < 1) {
$_SESSION['confwiz_config']->save();
$_SESSION['confwiz_optional']['lang'] = 'done';
metarefresh('optional.php');
}
else {
// errors occured
echo $_SESSION['header'];
echo "<link rel=\"stylesheet\" type=\"text/css\" href=\"../../style/layout.css\">\n";
echo "<title>\n";
echo _("Configuration wizard");
echo "</title>\n";
echo "</head><body>\n";
for ($i = 0; $i < sizeof($errors); $i++) {
StatusMessage("ERROR", $errors[$i], "");
}
echo "<p><br><br><a href=\"o_lang.php\">" . _("Back to language and admin settings.") . "</a></p>\n";
echo "</body></html>\n";
exit;
}
}
echo $_SESSION['header'];
echo "<title>\n";
echo _("Configuration wizard");
echo "</title>\n";
echo "<link rel=\"stylesheet\" type=\"text/css\" href=\"../../style/layout.css\">\n";
echo "</head>\n";
echo "<body>\n";
echo "<p align=\"center\"><a href=\"http://lam.sf.net\" target=\"_blank\">\n";
echo "<img src=\"../../graphics/banner.jpg\" border=1 alt=\"LDAP Account Manager\"></a>\n";
echo "</p>\n";
echo "<hr>\n";
// formular
echo "<form action=\"o_lang.php\" method=\"post\">\n";
echo "<p>&nbsp;</p>\n";
// language
echo "<p><b>" . _("Please select your prefered language.") . "</b></p>\n";
echo "<p>" . _("This defines the language of the login window and sets this language as the default language. Users can change the language at login.") .
"<br><br></p>\n";
echo ("<table border=0>");
echo ("<tr>");
echo ("<td><b>" . _("Default language") . ":</b></td><td>\n");
// read available languages
$languagefile = "../../config/language";
if(is_file($languagefile))
{
$file = fopen($languagefile, "r");
$i = 0;
while(!feof($file))
{
$line = fgets($file, 1024);
if($line == "\n" || $line[0] == "#" || $line == "") continue; // ignore comment and empty lines
$languages[$i] = chop($line);
$i++;
}
fclose($file);
// generate language list
echo ("<select name=\"lang\">");
for ($i = 0; $i < sizeof($languages); $i++) {
$entry = explode(":", $languages[$i]);
if ($_SESSION['confwiz_config']->get_defaultLanguage() != $languages[$i]) echo("<option value=\"" . $languages[$i] . "\">" . $entry[2] . "</option>\n");
else echo("<option selected value=\"" . $languages[$i] . "\">" . $entry[2] . "</option>\n");
}
echo ("</select>\n");
}
else
{
echo _("Unable to load available languages. Setting English as default language. For further instructions please contact the Admin of this site.");
}
echo ("</td>\n");
echo ("</tr>\n");
echo "</table>\n";
echo "<p><br></p>\n";
echo "<p><br></p>\n";
// admin users
echo "<p><b>" . _("Valid users") . ":</b></p>\n";
echo "<p>" . _("If you want more than one user to login to LAM please enter its DN(s) here. Multiple entries are seperated by semicolons.") . "</p>\n";
echo "<p><b>" . _("Example") . ": </b>cn=admin,dc=yourdomain,dc=org;cn=manager,dc=yourdomain,dc=org<br><br></p>\n";
echo ("<table border=0>");
echo ("<tr><td align=\"right\"><b>".
_("List of valid users") . ": </b></td>".
"<td colspan=2><input size=50 type=\"text\" name=\"admins\" value=\"" . $_SESSION['confwiz_config']->get_Adminstring() . "\"></td>\n");
echo ("</tr>\n");
echo "</table>\n";
echo "<p><br></p>\n";
// next/cancel button
echo "<p>\n";
echo "<input type=\"submit\" name=\"submit\" value=\"" . _("Next") . "\">\n";
echo "<input type=\"submit\" name=\"cancel\" value=\"" . _("Cancel") . "\">\n";
echo "</p>\n";
echo "</form>\n";
echo "</body>\n</html>\n";
?>

View File

@ -1,160 +0,0 @@
<?php
/*
$Id$
This code is part of LDAP Account Manager (http://www.sourceforge.net/projects/lam)
Copyright (C) 2003 Roland Gruber
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Configuration wizard - list attributes
*/
include_once('../../lib/config.inc');
include_once('../../lib/ldap.inc');
include_once('../../lib/status.inc');
// start session
session_save_path("../../sess");
@session_start();
setlanguage();
// check master password
$cfg = new CfgMain();
if ($cfg->password != $_SESSION['confwiz_masterpwd']) {
require("../config/conflogin.php");
exit;
}
// check if user clicked on cancel button
if ($_POST['cancel']) {
@unlink("../../config/" . $_SESSION['confwiz_config']->file . ".conf");
metarefresh('../config/conflogin.php');
exit;
}
// check if user clicked on next button
if ($_POST['submit']) {
$errors = array();
if (!$_SESSION['confwiz_config']->set_userlistAttributes($_POST['usrlstattr'])) {
$errors[] = _("User list attributes are invalid!");
}
if (!$_SESSION['confwiz_config']->set_grouplistAttributes($_POST['grplstattr'])) {
$errors[] = _("Group list attributes are invalid!");
}
if (!$_SESSION['confwiz_config']->set_hostlistAttributes($_POST['hstlstattr'])) {
$errors[] = _("Host list attributes are invalid!");
}
// if no errors save and go back to optional.php
if (sizeof($errors) < 1) {
$_SESSION['confwiz_config']->save();
$_SESSION['confwiz_optional']['lists'] = 'done';
metarefresh('optional.php');
}
else {
// errors occured
echo $_SESSION['header'];
echo "<link rel=\"stylesheet\" type=\"text/css\" href=\"../../style/layout.css\">\n";
echo "<title>\n";
echo _("Configuration wizard");
echo "</title>\n";
echo "</head><body>\n";
for ($i = 0; $i < sizeof($errors); $i++) {
StatusMessage("ERROR", $errors[$i], "");
}
echo "<p><br><br><a href=\"o_lists.php\">" . _("Back to list settings") . "</a></p>\n";
echo "</body></html>\n";
exit;
}
}
echo $_SESSION['header'];
echo "<title>\n";
echo _("Configuration wizard");
echo "</title>\n";
echo "<link rel=\"stylesheet\" type=\"text/css\" href=\"../../style/layout.css\">\n";
echo "</head>\n";
echo "<body>\n";
echo "<p align=\"center\"><a href=\"http://lam.sf.net\" target=\"_blank\">\n";
echo "<img src=\"../../graphics/banner.jpg\" border=1 alt=\"LDAP Account Manager\"></a>\n";
echo "</p>\n";
echo "<hr>\n";
// formular
echo "<form action=\"o_lists.php\" method=\"post\">\n";
echo "<p>&nbsp;</p>\n";
echo "<p><b>" . _("Please enter which attributes should be displayed in the list views.") . "</b></p>\n";
echo "<p>" . _("This can be a list of predefined attributes which have a description and are translated or you can write your own description.") .
" " . _("Predefined attributes are of type \"#attribute\".") .
" " . _("If you want to input your own description it would look like this: \"attribute:description\".") .
"<br>" . _("The entries are separated by semicolons.") .
"<br><br><br><b>" .
_("Example") .
": </b>#homeDirectory;#uid;#uidNumber;#gidNumber;mail:Mail address<br><br><br><u><b>" .
_("Predefined values") . ":</b></u><br><br><b>" .
_("Users") .
": </b>#uid, #uidNumber, #gidNumber, #cn, #host, #givenName, #sn, #homeDirectory, #loginShell, #mail, #gecos".
"<br><b>" .
_("Groups") .
": </b>#cn, #gidNumber, #memberUID, #member, #description".
"<br><b>" .
_("Hosts") .
": </b>#uid, #cn, #rid, #description" . "<br><br></p>\n";
echo "<p>&nbsp;</p>\n";
echo ("<table border=0>");
// user list attributes
echo ("<tr><td align=\"right\"><b>".
_("Attributes in User List") . ":</b></td>".
"<td><input size=50 type=\"text\" name=\"usrlstattr\" value=\"" . $_SESSION['confwiz_config']->get_userlistAttributes() . "\"></td>");
echo ("</tr>\n");
// group list attributes
echo ("<tr><td align=\"right\"><b>".
_("Attributes in Group List") . ":</b></td>".
"<td><input size=50 type=\"text\" name=\"grplstattr\" value=\"" . $_SESSION['confwiz_config']->get_grouplistAttributes() . "\"></td>");
echo ("</tr>\n");
// host list attributes
echo ("<tr><td align=\"right\"><b>".
_("Attributes in Host List") . ":</b></td>".
"<td><input size=50 type=\"text\" name=\"hstlstattr\" value=\"" . $_SESSION['confwiz_config']->get_hostlistAttributes() . "\"></td>");
echo ("</tr>\n");
echo "</table>\n";
echo "<p><br></p>\n";
// next/cancel button
echo "<p>\n";
echo "<input type=\"submit\" name=\"submit\" value=\"" . _("Next") . "\">\n";
echo "<input type=\"submit\" name=\"cancel\" value=\"" . _("Cancel") . "\">\n";
echo "</p>\n";
echo "</form>\n";
echo "</body>\n</html>\n";
?>

View File

@ -1,164 +0,0 @@
<?php
/*
$Id$
This code is part of LDAP Account Manager (http://www.sourceforge.net/projects/lam)
Copyright (C) 2003 Roland Gruber
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Configuration wizard - UID/GID ranges
*/
include_once('../../lib/config.inc');
include_once('../../lib/ldap.inc');
include_once('../../lib/status.inc');
// start session
session_save_path("../../sess");
@session_start();
setlanguage();
// check master password
$cfg = new CfgMain();
if ($cfg->password != $_SESSION['confwiz_masterpwd']) {
require("../config/conflogin.php");
exit;
}
// check if user clicked on cancel button
if ($_POST['cancel']) {
@unlink("../../config/" . $_SESSION['confwiz_config']->file . ".conf");
metarefresh('../config/conflogin.php');
exit;
}
// check if user clicked on next button
if ($_POST['submit']) {
$errors = array();
if (!$_SESSION['confwiz_config']->set_minUID($_POST['minUID'])) {
$errors[] = _("Minimum UID number is invalid!");
}
if (!$_SESSION['confwiz_config']->set_maxUID($_POST['maxUID'])) {
$errors[] = _("Maximum UID number is invalid!");
}
if (!$_SESSION['confwiz_config']->set_minGID($_POST['minGID'])) {
$errors[] = _("Minimum GID number is invalid!");
}
if (!$_SESSION['confwiz_config']->set_maxGID($_POST['maxGID'])) {
$errors[] = _("Maximum GID number is invalid!");
}
if (!$_SESSION['confwiz_config']->set_minMachine($_POST['minMach'])) {
$errors[] = _("Minimum Machine number is invalid!");
}
if (!$_SESSION['confwiz_config']->set_maxMachine($_POST['maxMach'])) {
$errors[] = _("Maximum Machine number is invalid!");
}
// if no errors save and go back to optional.php
if (sizeof($errors) < 1) {
$_SESSION['confwiz_config']->save();
$_SESSION['confwiz_optional']['ranges'] = 'done';
metarefresh('optional.php');
}
else {
// errors occured
echo $_SESSION['header'];
echo "<link rel=\"stylesheet\" type=\"text/css\" href=\"../../style/layout.css\">\n";
echo "<title>\n";
echo _("Configuration wizard");
echo "</title>\n";
echo "</head><body>\n";
for ($i = 0; $i < sizeof($errors); $i++) {
StatusMessage("ERROR", $errors[$i], "");
}
echo "<p><br><br><a href=\"o_ranges.php\">" . _("Back to range settings") . "</a></p>\n";
echo "</body></html>\n";
exit;
}
}
echo $_SESSION['header'];
echo "<title>\n";
echo _("Configuration wizard");
echo "</title>\n";
echo "<link rel=\"stylesheet\" type=\"text/css\" href=\"../../style/layout.css\">\n";
echo "</head>\n";
echo "<body>\n";
echo "<p align=\"center\"><a href=\"http://lam.sf.net\" target=\"_blank\">\n";
echo "<img src=\"../../graphics/banner.jpg\" border=1 alt=\"LDAP Account Manager\"></a>\n";
echo "</p>\n";
echo "<hr>\n";
// formular
echo "<form action=\"o_ranges.php\" method=\"post\">\n";
echo "<p>&nbsp;</p>\n";
echo "<p><b>" . _("Please enter the UID/GID ranges for your accounts:") . "</b></p>\n";
echo "<p>&nbsp;</p>\n";
echo ("<table border=0>");
// minUID
echo ("<tr><td align=\"right\"><b>".
_("Minimum UID number") . ": </b>".
"<input size=6 type=\"text\" name=\"minUID\" value=\"" . $_SESSION['confwiz_config']->get_minUID() . "\"></td>\n");
// maxUID
echo ("<td align=\"right\"><b>&nbsp;" . _("Maximum UID number") . ": </b>".
"<input size=6 type=\"text\" name=\"maxUID\" value=\"" . $_SESSION['confwiz_config']->get_maxUID() . "\"></td>\n");
// UID text
echo ("<td><a href=\"../help.php?HelpNumber=203\" target=\"lamhelp\">" . _("Help") . "</a></td></tr>\n");
// minGID
echo ("<tr><td align=\"right\"><b>".
_("Minimum GID number") . ": </b>".
"<input size=6 type=\"text\" name=\"minGID\" value=\"" . $_SESSION['confwiz_config']->get_minGID() . "\"></td>\n");
// maxGID
echo ("<td align=\"right\"><b>&nbsp;" . _("Maximum GID number").": </b>".
"<input size=6 type=\"text\" name=\"maxGID\" value=\"" . $_SESSION['confwiz_config']->get_maxGID() . "\"></td>\n");
// GID text
echo ("<td><a href=\"../help.php?HelpNumber=204\" target=\"lamhelp\">" . _("Help") . "</a></td></tr>\n");
// minMach
echo ("<tr><td align=\"right\"><b>".
_("Minimum Machine number") . ": </b>".
"<input size=6 type=\"text\" name=\"minMach\" value=\"" . $_SESSION['confwiz_config']->get_minMachine() . "\"></td>\n");
// maxMach
echo ("<td align=\"right\"><b>&nbsp;" . _("Maximum Machine number") . ": </b>".
"<input size=6 type=\"text\" name=\"maxMach\" value=\"" . $_SESSION['confwiz_config']->get_maxMachine() . "\"></td>\n");
// Machine text
echo ("<td><a href=\"../help.php?HelpNumber=205\" target=\"lamhelp\">" . _("Help") . "</a></td></tr>\n");
echo "</table>\n";
echo "<p><br></p>\n";
// next/cancel button
echo "<p>\n";
echo "<input type=\"submit\" name=\"submit\" value=\"" . _("Next") . "\">\n";
echo "<input type=\"submit\" name=\"cancel\" value=\"" . _("Cancel") . "\">\n";
echo "</p>\n";
echo "</form>\n";
echo "</body>\n</html>\n";
?>

View File

@ -1,80 +0,0 @@
<?php
/*
$Id$
This code is part of LDAP Account Manager (http://www.sourceforge.net/projects/lam)
Copyright (C) 2003 Roland Gruber
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Configuration wizard - optional pages
*/
include_once('../../lib/config.inc');
include_once('../../lib/ldap.inc');
include_once('../../lib/status.inc');
// start session
session_save_path("../../sess");
@session_start();
setlanguage();
// check master password
$cfg = new CfgMain();
if ($cfg->password != $_SESSION['confwiz_masterpwd']) {
require("../config/conflogin.php");
exit;
}
// if no optional pages should be displayed go to ldaptest
if (sizeof($_SESSION['confwiz_optional']) < 1) {
metarefresh('ldaptest.php');
exit;
}
// UID/GID ranges
if ($_SESSION['confwiz_optional']['ranges'] == 'yes') {
metarefresh('o_ranges.php');
exit;
}
// list attributes
if ($_SESSION['confwiz_optional']['lists'] == 'yes') {
metarefresh('o_lists.php');
exit;
}
// language, admins
if ($_SESSION['confwiz_optional']['lang'] == 'yes') {
metarefresh('o_lang.php');
exit;
}
// lamdaemon and PDF text
if ($_SESSION['confwiz_optional']['daemon'] == 'yes') {
metarefresh('o_daemon.php');
exit;
}
// if all pages were displayed go to ldaptest
metarefresh('ldaptest.php');
?>

Some files were not shown because too many files have changed in this diff Show More