From dedbe93801ecfdc3a0469a49628dc0545f877c40 Mon Sep 17 00:00:00 2001 From: Roland Gruber Date: Thu, 28 Jul 2005 10:58:00 +0000 Subject: [PATCH] This commit was manufactured by cvs2svn to create tag 'lam_0_4_10'. --- CVSROOT/checkoutlist | 13 - CVSROOT/commitinfo | 15 - CVSROOT/config | 14 - CVSROOT/cvswrappers | 23 - CVSROOT/editinfo | 21 - CVSROOT/loginfo | 29 - CVSROOT/modules | 26 - CVSROOT/notify | 12 - CVSROOT/rcsinfo | 13 - CVSROOT/taginfo | 20 - CVSROOT/verifymsg | 21 - lam/COPYING | 340 -- lam/HISTORY | 150 - lam/INSTALL | 65 - lam/README | 81 - lam/TODO | 6 - lam/VERSION | 1 - lam/config/.htaccess | 4 - lam/config/config.cfg_sample | 5 - lam/config/lam.conf_sample | 82 - lam/config/language | 30 - lam/config/pdf/default.group.xml | 8 - lam/config/pdf/default.host.xml | 9 - lam/config/pdf/default.user.xml | 38 - lam/config/pdf/logos/printLogo.jpg | Bin 9791 -> 0 bytes lam/config/profiles/default.group | 1 - lam/config/profiles/default.host | 0 lam/config/profiles/default.user | 18 - lam/config/shells | 17 - lam/copyright | 104 - lam/docs/LGPL-license.txt | 502 -- lam/docs/README.fpdf.htm | 286 - lam/docs/README.hosts.txt | 28 - lam/docs/README.lamdaemon.txt | 132 - lam/docs/README.openldap.txt | 21 - lam/docs/README.schema.txt | 51 - lam/docs/README.security.txt | 36 - lam/docs/devel/FAQ.htm | 104 - lam/docs/devel/account_modules.htm | 49 - lam/docs/devel/base_module.htm | 74 - lam/docs/devel/config.htm | 61 - lam/docs/devel/config_files.htm | 44 - lam/docs/devel/config_pages.htm | 77 - lam/docs/devel/images/lam_baseModule.png | Bin 5477 -> 0 bytes lam/docs/devel/images/lam_config.png | Bin 11554 -> 0 bytes lam/docs/devel/images/lam_lists.png | Bin 7573 -> 0 bytes lam/docs/devel/images/lam_overview.png | Bin 30105 -> 0 bytes lam/docs/devel/images/lam_pdfEditor.png | Bin 6386 -> 0 bytes lam/docs/devel/images/lam_profedit.png | Bin 5604 -> 0 bytes lam/docs/devel/images/lam_upload.png | Bin 6681 -> 0 bytes lam/docs/devel/index.htm | 103 - lam/docs/devel/ldap.htm | 55 - lam/docs/devel/lists.htm | 103 - lam/docs/devel/login.htm | 70 - lam/docs/devel/mod_accountPages.htm | 420 -- lam/docs/devel/mod_basics.htm | 109 - lam/docs/devel/mod_config.htm | 253 - lam/docs/devel/mod_general.htm | 242 - lam/docs/devel/mod_help.htm | 88 - lam/docs/devel/mod_index.htm | 58 - lam/docs/devel/mod_pdf.htm | 106 - lam/docs/devel/mod_profiles.htm | 208 - lam/docs/devel/mod_rdn.htm | 59 - lam/docs/devel/mod_upload.htm | 171 - lam/docs/devel/mod_upload2.htm | 122 - lam/docs/devel/modules-specification.htm | 1348 ----- lam/docs/devel/other_libs.htm | 55 - lam/docs/devel/ou-edit.htm | 31 - lam/docs/devel/pdf_editor.htm | 107 - lam/docs/devel/pdf_profiles.htm | 99 - lam/docs/devel/profile_editor.htm | 84 - lam/docs/devel/profile_files.htm | 36 - lam/docs/devel/profiles.htm | 25 - lam/docs/devel/samba_domains.htm | 35 - lam/docs/devel/style/layout.css | 57 - lam/docs/devel/tree_schema.htm | 21 - lam/docs/devel/upload.htm | 102 - lam/graphics/add.png | Bin 528 -> 0 bytes lam/graphics/banner.jpg | Bin 21424 -> 0 bytes lam/graphics/catalog.png | Bin 1302 -> 0 bytes lam/graphics/dc.png | Bin 1140 -> 0 bytes lam/graphics/delete.gif | Bin 141 -> 0 bytes lam/graphics/device.png | Bin 500 -> 0 bytes lam/graphics/document.png | Bin 856 -> 0 bytes lam/graphics/door.png | Bin 364 -> 0 bytes lam/graphics/down.gif | Bin 380 -> 0 bytes lam/graphics/error.png | Bin 2684 -> 0 bytes lam/graphics/files.png | Bin 1113 -> 0 bytes lam/graphics/find.png | Bin 1428 -> 0 bytes lam/graphics/folder.png | Bin 1217 -> 0 bytes lam/graphics/go.png | Bin 440 -> 0 bytes lam/graphics/hard-drive.png | Bin 1308 -> 0 bytes lam/graphics/help.png | Bin 746 -> 0 bytes lam/graphics/host.png | Bin 844 -> 0 bytes lam/graphics/info.png | Bin 3504 -> 0 bytes lam/graphics/lam.png | Bin 5790 -> 0 bytes lam/graphics/ldap-server.png | Bin 1084 -> 0 bytes lam/graphics/light.png | Bin 733 -> 0 bytes lam/graphics/locality.png | Bin 751 -> 0 bytes lam/graphics/lock.png | Bin 1256 -> 0 bytes lam/graphics/mail.png | Bin 899 -> 0 bytes lam/graphics/minus.png | Bin 98 -> 0 bytes lam/graphics/n.png | Bin 408 -> 0 bytes lam/graphics/network.png | Bin 1107 -> 0 bytes lam/graphics/nt_machine.png | Bin 1060 -> 0 bytes lam/graphics/nt_user.png | Bin 971 -> 0 bytes lam/graphics/o.png | Bin 1305 -> 0 bytes lam/graphics/object.png | Bin 1297 -> 0 bytes lam/graphics/ou.png | Bin 1330 -> 0 bytes lam/graphics/plus.png | Bin 102 -> 0 bytes lam/graphics/printLogo.jpg | Bin 11885 -> 0 bytes lam/graphics/process.png | Bin 438 -> 0 bytes lam/graphics/refresh.png | Bin 785 -> 0 bytes lam/graphics/save.png | Bin 658 -> 0 bytes lam/graphics/select.png | Bin 181 -> 0 bytes lam/graphics/server-settings.png | Bin 1149 -> 0 bytes lam/graphics/server-small.png | Bin 818 -> 0 bytes lam/graphics/star.png | Bin 700 -> 0 bytes lam/graphics/tools-no.png | Bin 798 -> 0 bytes lam/graphics/tools.png | Bin 503 -> 0 bytes lam/graphics/tree_info.png | Bin 510 -> 0 bytes lam/graphics/uid.png | Bin 654 -> 0 bytes lam/graphics/uniquegroup.png | Bin 1356 -> 0 bytes lam/graphics/up.gif | Bin 379 -> 0 bytes lam/graphics/user.png | Bin 773 -> 0 bytes lam/graphics/warn.png | Bin 1968 -> 0 bytes lam/help/help.inc | 190 - lam/index.html | 11 - lam/lib/.htaccess | 8 - lam/lib/account.inc | 554 -- lam/lib/baseModule.inc | 610 -- lam/lib/blowfish.inc | 548 -- lam/lib/cache.inc | 330 -- lam/lib/config.inc | 890 --- lam/lib/createntlm.inc | 519 -- lam/lib/export.inc | 965 ---- lam/lib/font/Vera.ttf | Bin 65881 -> 0 bytes lam/lib/font/VeraBI.ttf | Bin 63169 -> 0 bytes lam/lib/font/VeraBd.ttf | Bin 58675 -> 0 bytes lam/lib/font/VeraIt.ttf | Bin 63630 -> 0 bytes lam/lib/font/vera.ctg.z | Bin 710 -> 0 bytes lam/lib/font/vera.php | 59 - lam/lib/font/vera.z | Bin 39919 -> 0 bytes lam/lib/font/verab.ctg.z | Bin 710 -> 0 bytes lam/lib/font/verab.php | 59 - lam/lib/font/verab.z | Bin 36502 -> 0 bytes lam/lib/font/verabi.ctg.z | Bin 710 -> 0 bytes lam/lib/font/verabi.php | 59 - lam/lib/font/verabi.z | Bin 38239 -> 0 bytes lam/lib/font/verai.ctg.z | Bin 710 -> 0 bytes lam/lib/font/verai.php | 59 - lam/lib/font/verai.z | Bin 38503 -> 0 bytes lam/lib/fpdf.php | 1659 ------ lam/lib/lamdaemon.inc | 97 - lam/lib/lamdaemon.pl | 242 - lam/lib/ldap.inc | 464 -- lam/lib/lists.inc | 434 -- lam/lib/modules.inc | 1632 ------ lam/lib/modules/account.inc | 224 - lam/lib/modules/ieee802device.inc | 265 - lam/lib/modules/inetLocalMailRecipient.inc | 383 -- lam/lib/modules/inetOrgPerson.inc | 837 --- lam/lib/modules/nisMailAlias.inc | 316 -- lam/lib/modules/posixAccount.inc | 1626 ------ lam/lib/modules/posixGroup.inc | 911 --- lam/lib/modules/quota.inc | 635 --- lam/lib/modules/sambaAccount.inc | 1144 ---- lam/lib/modules/sambaGroupMapping.inc | 472 -- lam/lib/modules/sambaSamAccount.inc | 1433 ----- lam/lib/modules/shadowAccount.inc | 457 -- lam/lib/pdf.inc | 472 -- lam/lib/pdfstruct.inc | 190 - lam/lib/profiles.inc | 158 - lam/lib/schema.inc | 2037 ------- lam/lib/status.inc | 154 - lam/lib/tree.inc | 1324 ----- lam/lib/ufpdf.php | 820 --- lam/lib/xml_parser.inc | 71 - lam/locale/ca_ES/LC_MESSAGES/messages.mo | Bin 78760 -> 0 bytes lam/locale/ca_ES/LC_MESSAGES/messages.po | 3815 ------------- lam/locale/de_DE/LC_MESSAGES/messages.mo | Bin 92134 -> 0 bytes lam/locale/de_DE/LC_MESSAGES/messages.po | 4873 ---------------- lam/locale/es_ES/LC_MESSAGES/messages.mo | Bin 79152 -> 0 bytes lam/locale/es_ES/LC_MESSAGES/messages.po | 3805 ------------- lam/locale/fr_FR/LC_MESSAGES/messages.mo | Bin 91600 -> 0 bytes lam/locale/fr_FR/LC_MESSAGES/messages.po | 4720 ---------------- lam/locale/hu_HU/LC_MESSAGES/messages.mo | Bin 95290 -> 0 bytes lam/locale/hu_HU/LC_MESSAGES/messages.po | 4899 ----------------- lam/locale/it_IT/LC_MESSAGES/messages.mo | Bin 83721 -> 0 bytes lam/locale/it_IT/LC_MESSAGES/messages.po | 4038 -------------- lam/locale/ja_JP/LC_MESSAGES/messages.mo | Bin 99419 -> 0 bytes lam/locale/ja_JP/LC_MESSAGES/messages.po | 4724 ---------------- lam/po/make_all | 14 - lam/po/make_mo | 10 - lam/po/make_po | 11 - lam/po/make_po_ca | 10 - lam/po/make_po_de | 10 - lam/po/make_po_es | 10 - lam/po/make_po_fr | 10 - lam/po/make_po_hu | 10 - lam/po/make_po_it | 10 - lam/po/make_po_jp | 10 - lam/po/messages.header | 16 - lam/sess/.htaccess | 4 - lam/session-vars.txt | 119 - lam/style/500_layout.css | 910 --- lam/templates/account/edit.php | 73 - lam/templates/config/conflogin.php | 166 - lam/templates/config/confmain.php | 514 -- lam/templates/config/confmodules.php | 271 - lam/templates/config/confsave.php | 282 - lam/templates/config/profmanage.php | 422 -- lam/templates/delete.php | 244 - lam/templates/domain.php | 357 -- lam/templates/help.php | 183 - lam/templates/initsuff.php | 191 - lam/templates/lists/listdomains.php | 222 - lam/templates/lists/listgroups.php | 261 - lam/templates/lists/listhosts.php | 246 - lam/templates/lists/listusers.php | 309 -- lam/templates/lists/userlink.php | 90 - lam/templates/login.php | 381 -- lam/templates/logout.php | 73 - lam/templates/main.php | 98 - lam/templates/main_header.php | 94 - lam/templates/massBuildAccounts.php | 211 - lam/templates/massDoUpload.php | 129 - lam/templates/masscreate.php | 316 -- lam/templates/ou_edit.php | 491 -- lam/templates/pdfedit/pdfdelete.php | 91 - lam/templates/pdfedit/pdfmain.php | 158 - lam/templates/pdfedit/pdfpage.php | 789 --- lam/templates/profedit/profiledelete.php | 94 - lam/templates/profedit/profilemain.php | 164 - lam/templates/profedit/profilepage.php | 251 - lam/templates/schema/schema.php | 446 -- lam/templates/tools.php | 120 - lam/templates/tree/add_attr.php | 166 - lam/templates/tree/add_attr_form.php | 198 - lam/templates/tree/add_oclass.php | 97 - lam/templates/tree/add_oclass_form.php | 163 - lam/templates/tree/add_value.php | 100 - lam/templates/tree/add_value_form.php | 201 - lam/templates/tree/collapse.php | 75 - lam/templates/tree/create.php | 185 - lam/templates/tree/create_form.php | 145 - lam/templates/tree/creation_template.php | 96 - lam/templates/tree/delete.php | 112 - lam/templates/tree/delete_attr.php | 83 - lam/templates/tree/delete_form.php | 183 - lam/templates/tree/download_binary_attr.php | 87 - lam/templates/tree/edit.php | 537 -- lam/templates/tree/expand.php | 88 - lam/templates/tree/export.php | 132 - lam/templates/tree/export_form.php | 190 - lam/templates/tree/rdelete.php | 154 - lam/templates/tree/refresh.php | 89 - .../tree/templates/creation/custom.php | 311 -- .../templates/creation/new_ou_template.php | 111 - lam/templates/tree/templates/templates.inc | 56 - lam/templates/tree/tree.php | 193 - lam/templates/tree/tree_view.php | 85 - lam/templates/tree/update.php | 109 - lam/templates/tree/update_confirm.php | 259 - lam/tests/conf-main-test.php | 70 - lam/tests/conf-test.php | 125 - lam/tests/lib-pdf-test.php | 73 - lam/tests/module_pdf-test.php | 90 - lam/tests/status-test.php | 39 - lam/tmp/.htaccess | 1 - 270 files changed, 74484 deletions(-) delete mode 100644 CVSROOT/checkoutlist delete mode 100644 CVSROOT/commitinfo delete mode 100644 CVSROOT/config delete mode 100644 CVSROOT/cvswrappers delete mode 100644 CVSROOT/editinfo delete mode 100644 CVSROOT/loginfo delete mode 100644 CVSROOT/modules delete mode 100644 CVSROOT/notify delete mode 100644 CVSROOT/rcsinfo delete mode 100644 CVSROOT/taginfo delete mode 100644 CVSROOT/verifymsg delete mode 100644 lam/COPYING delete mode 100644 lam/HISTORY delete mode 100644 lam/INSTALL delete mode 100644 lam/README delete mode 100644 lam/TODO delete mode 100644 lam/VERSION delete mode 100644 lam/config/.htaccess delete mode 100644 lam/config/config.cfg_sample delete mode 100644 lam/config/lam.conf_sample delete mode 100644 lam/config/language delete mode 100644 lam/config/pdf/default.group.xml delete mode 100644 lam/config/pdf/default.host.xml delete mode 100644 lam/config/pdf/default.user.xml delete mode 100644 lam/config/pdf/logos/printLogo.jpg delete mode 100644 lam/config/profiles/default.group delete mode 100644 lam/config/profiles/default.host delete mode 100644 lam/config/profiles/default.user delete mode 100644 lam/config/shells delete mode 100644 lam/copyright delete mode 100644 lam/docs/LGPL-license.txt delete mode 100755 lam/docs/README.fpdf.htm delete mode 100644 lam/docs/README.hosts.txt delete mode 100644 lam/docs/README.lamdaemon.txt delete mode 100644 lam/docs/README.openldap.txt delete mode 100644 lam/docs/README.schema.txt delete mode 100644 lam/docs/README.security.txt delete mode 100644 lam/docs/devel/FAQ.htm delete mode 100644 lam/docs/devel/account_modules.htm delete mode 100644 lam/docs/devel/base_module.htm delete mode 100644 lam/docs/devel/config.htm delete mode 100644 lam/docs/devel/config_files.htm delete mode 100644 lam/docs/devel/config_pages.htm delete mode 100644 lam/docs/devel/images/lam_baseModule.png delete mode 100644 lam/docs/devel/images/lam_config.png delete mode 100644 lam/docs/devel/images/lam_lists.png delete mode 100644 lam/docs/devel/images/lam_overview.png delete mode 100644 lam/docs/devel/images/lam_pdfEditor.png delete mode 100644 lam/docs/devel/images/lam_profedit.png delete mode 100644 lam/docs/devel/images/lam_upload.png delete mode 100644 lam/docs/devel/index.htm delete mode 100644 lam/docs/devel/ldap.htm delete mode 100644 lam/docs/devel/lists.htm delete mode 100644 lam/docs/devel/login.htm delete mode 100644 lam/docs/devel/mod_accountPages.htm delete mode 100644 lam/docs/devel/mod_basics.htm delete mode 100644 lam/docs/devel/mod_config.htm delete mode 100644 lam/docs/devel/mod_general.htm delete mode 100644 lam/docs/devel/mod_help.htm delete mode 100644 lam/docs/devel/mod_index.htm delete mode 100644 lam/docs/devel/mod_pdf.htm delete mode 100644 lam/docs/devel/mod_profiles.htm delete mode 100644 lam/docs/devel/mod_rdn.htm delete mode 100644 lam/docs/devel/mod_upload.htm delete mode 100644 lam/docs/devel/mod_upload2.htm delete mode 100644 lam/docs/devel/modules-specification.htm delete mode 100644 lam/docs/devel/other_libs.htm delete mode 100644 lam/docs/devel/ou-edit.htm delete mode 100644 lam/docs/devel/pdf_editor.htm delete mode 100644 lam/docs/devel/pdf_profiles.htm delete mode 100644 lam/docs/devel/profile_editor.htm delete mode 100644 lam/docs/devel/profile_files.htm delete mode 100644 lam/docs/devel/profiles.htm delete mode 100644 lam/docs/devel/samba_domains.htm delete mode 100644 lam/docs/devel/style/layout.css delete mode 100644 lam/docs/devel/tree_schema.htm delete mode 100644 lam/docs/devel/upload.htm delete mode 100644 lam/graphics/add.png delete mode 100644 lam/graphics/banner.jpg delete mode 100644 lam/graphics/catalog.png delete mode 100644 lam/graphics/dc.png delete mode 100644 lam/graphics/delete.gif delete mode 100644 lam/graphics/device.png delete mode 100644 lam/graphics/document.png delete mode 100644 lam/graphics/door.png delete mode 100644 lam/graphics/down.gif delete mode 100644 lam/graphics/error.png delete mode 100644 lam/graphics/files.png delete mode 100644 lam/graphics/find.png delete mode 100644 lam/graphics/folder.png delete mode 100644 lam/graphics/go.png delete mode 100644 lam/graphics/hard-drive.png delete mode 100644 lam/graphics/help.png delete mode 100644 lam/graphics/host.png delete mode 100644 lam/graphics/info.png delete mode 100644 lam/graphics/lam.png delete mode 100644 lam/graphics/ldap-server.png delete mode 100644 lam/graphics/light.png delete mode 100644 lam/graphics/locality.png delete mode 100644 lam/graphics/lock.png delete mode 100644 lam/graphics/mail.png delete mode 100644 lam/graphics/minus.png delete mode 100644 lam/graphics/n.png delete mode 100644 lam/graphics/network.png delete mode 100644 lam/graphics/nt_machine.png delete mode 100644 lam/graphics/nt_user.png delete mode 100644 lam/graphics/o.png delete mode 100644 lam/graphics/object.png delete mode 100644 lam/graphics/ou.png delete mode 100644 lam/graphics/plus.png delete mode 100644 lam/graphics/printLogo.jpg delete mode 100644 lam/graphics/process.png delete mode 100644 lam/graphics/refresh.png delete mode 100644 lam/graphics/save.png delete mode 100644 lam/graphics/select.png delete mode 100644 lam/graphics/server-settings.png delete mode 100644 lam/graphics/server-small.png delete mode 100644 lam/graphics/star.png delete mode 100644 lam/graphics/tools-no.png delete mode 100644 lam/graphics/tools.png delete mode 100644 lam/graphics/tree_info.png delete mode 100644 lam/graphics/uid.png delete mode 100644 lam/graphics/uniquegroup.png delete mode 100644 lam/graphics/up.gif delete mode 100644 lam/graphics/user.png delete mode 100644 lam/graphics/warn.png delete mode 100644 lam/help/help.inc delete mode 100644 lam/index.html delete mode 100644 lam/lib/.htaccess delete mode 100644 lam/lib/account.inc delete mode 100644 lam/lib/baseModule.inc delete mode 100644 lam/lib/blowfish.inc delete mode 100644 lam/lib/cache.inc delete mode 100644 lam/lib/config.inc delete mode 100644 lam/lib/createntlm.inc delete mode 100755 lam/lib/export.inc delete mode 100644 lam/lib/font/Vera.ttf delete mode 100644 lam/lib/font/VeraBI.ttf delete mode 100644 lam/lib/font/VeraBd.ttf delete mode 100644 lam/lib/font/VeraIt.ttf delete mode 100644 lam/lib/font/vera.ctg.z delete mode 100644 lam/lib/font/vera.php delete mode 100644 lam/lib/font/vera.z delete mode 100644 lam/lib/font/verab.ctg.z delete mode 100644 lam/lib/font/verab.php delete mode 100644 lam/lib/font/verab.z delete mode 100644 lam/lib/font/verabi.ctg.z delete mode 100644 lam/lib/font/verabi.php delete mode 100644 lam/lib/font/verabi.z delete mode 100644 lam/lib/font/verai.ctg.z delete mode 100644 lam/lib/font/verai.php delete mode 100644 lam/lib/font/verai.z delete mode 100644 lam/lib/fpdf.php delete mode 100644 lam/lib/lamdaemon.inc delete mode 100755 lam/lib/lamdaemon.pl delete mode 100644 lam/lib/ldap.inc delete mode 100644 lam/lib/lists.inc delete mode 100644 lam/lib/modules.inc delete mode 100644 lam/lib/modules/account.inc delete mode 100644 lam/lib/modules/ieee802device.inc delete mode 100644 lam/lib/modules/inetLocalMailRecipient.inc delete mode 100644 lam/lib/modules/inetOrgPerson.inc delete mode 100644 lam/lib/modules/nisMailAlias.inc delete mode 100644 lam/lib/modules/posixAccount.inc delete mode 100644 lam/lib/modules/posixGroup.inc delete mode 100644 lam/lib/modules/quota.inc delete mode 100644 lam/lib/modules/sambaAccount.inc delete mode 100644 lam/lib/modules/sambaGroupMapping.inc delete mode 100644 lam/lib/modules/sambaSamAccount.inc delete mode 100644 lam/lib/modules/shadowAccount.inc delete mode 100644 lam/lib/pdf.inc delete mode 100644 lam/lib/pdfstruct.inc delete mode 100644 lam/lib/profiles.inc delete mode 100644 lam/lib/schema.inc delete mode 100644 lam/lib/status.inc delete mode 100644 lam/lib/tree.inc delete mode 100644 lam/lib/ufpdf.php delete mode 100644 lam/lib/xml_parser.inc delete mode 100644 lam/locale/ca_ES/LC_MESSAGES/messages.mo delete mode 100644 lam/locale/ca_ES/LC_MESSAGES/messages.po delete mode 100644 lam/locale/de_DE/LC_MESSAGES/messages.mo delete mode 100644 lam/locale/de_DE/LC_MESSAGES/messages.po delete mode 100644 lam/locale/es_ES/LC_MESSAGES/messages.mo delete mode 100644 lam/locale/es_ES/LC_MESSAGES/messages.po delete mode 100644 lam/locale/fr_FR/LC_MESSAGES/messages.mo delete mode 100644 lam/locale/fr_FR/LC_MESSAGES/messages.po delete mode 100644 lam/locale/hu_HU/LC_MESSAGES/messages.mo delete mode 100644 lam/locale/hu_HU/LC_MESSAGES/messages.po delete mode 100644 lam/locale/it_IT/LC_MESSAGES/messages.mo delete mode 100644 lam/locale/it_IT/LC_MESSAGES/messages.po delete mode 100644 lam/locale/ja_JP/LC_MESSAGES/messages.mo delete mode 100644 lam/locale/ja_JP/LC_MESSAGES/messages.po delete mode 100755 lam/po/make_all delete mode 100755 lam/po/make_mo delete mode 100755 lam/po/make_po delete mode 100755 lam/po/make_po_ca delete mode 100755 lam/po/make_po_de delete mode 100755 lam/po/make_po_es delete mode 100755 lam/po/make_po_fr delete mode 100755 lam/po/make_po_hu delete mode 100755 lam/po/make_po_it delete mode 100755 lam/po/make_po_jp delete mode 100644 lam/po/messages.header delete mode 100644 lam/sess/.htaccess delete mode 100644 lam/session-vars.txt delete mode 100644 lam/style/500_layout.css delete mode 100644 lam/templates/account/edit.php delete mode 100644 lam/templates/config/conflogin.php delete mode 100644 lam/templates/config/confmain.php delete mode 100644 lam/templates/config/confmodules.php delete mode 100644 lam/templates/config/confsave.php delete mode 100644 lam/templates/config/profmanage.php delete mode 100644 lam/templates/delete.php delete mode 100644 lam/templates/domain.php delete mode 100644 lam/templates/help.php delete mode 100644 lam/templates/initsuff.php delete mode 100644 lam/templates/lists/listdomains.php delete mode 100644 lam/templates/lists/listgroups.php delete mode 100644 lam/templates/lists/listhosts.php delete mode 100644 lam/templates/lists/listusers.php delete mode 100644 lam/templates/lists/userlink.php delete mode 100644 lam/templates/login.php delete mode 100644 lam/templates/logout.php delete mode 100644 lam/templates/main.php delete mode 100644 lam/templates/main_header.php delete mode 100644 lam/templates/massBuildAccounts.php delete mode 100644 lam/templates/massDoUpload.php delete mode 100644 lam/templates/masscreate.php delete mode 100644 lam/templates/ou_edit.php delete mode 100644 lam/templates/pdfedit/pdfdelete.php delete mode 100644 lam/templates/pdfedit/pdfmain.php delete mode 100644 lam/templates/pdfedit/pdfpage.php delete mode 100644 lam/templates/profedit/profiledelete.php delete mode 100644 lam/templates/profedit/profilemain.php delete mode 100644 lam/templates/profedit/profilepage.php delete mode 100644 lam/templates/schema/schema.php delete mode 100644 lam/templates/tools.php delete mode 100644 lam/templates/tree/add_attr.php delete mode 100644 lam/templates/tree/add_attr_form.php delete mode 100644 lam/templates/tree/add_oclass.php delete mode 100644 lam/templates/tree/add_oclass_form.php delete mode 100644 lam/templates/tree/add_value.php delete mode 100644 lam/templates/tree/add_value_form.php delete mode 100644 lam/templates/tree/collapse.php delete mode 100644 lam/templates/tree/create.php delete mode 100644 lam/templates/tree/create_form.php delete mode 100644 lam/templates/tree/creation_template.php delete mode 100644 lam/templates/tree/delete.php delete mode 100644 lam/templates/tree/delete_attr.php delete mode 100644 lam/templates/tree/delete_form.php delete mode 100644 lam/templates/tree/download_binary_attr.php delete mode 100644 lam/templates/tree/edit.php delete mode 100644 lam/templates/tree/expand.php delete mode 100644 lam/templates/tree/export.php delete mode 100644 lam/templates/tree/export_form.php delete mode 100644 lam/templates/tree/rdelete.php delete mode 100644 lam/templates/tree/refresh.php delete mode 100644 lam/templates/tree/templates/creation/custom.php delete mode 100644 lam/templates/tree/templates/creation/new_ou_template.php delete mode 100644 lam/templates/tree/templates/templates.inc delete mode 100644 lam/templates/tree/tree.php delete mode 100644 lam/templates/tree/tree_view.php delete mode 100644 lam/templates/tree/update.php delete mode 100644 lam/templates/tree/update_confirm.php delete mode 100644 lam/tests/conf-main-test.php delete mode 100644 lam/tests/conf-test.php delete mode 100644 lam/tests/lib-pdf-test.php delete mode 100644 lam/tests/module_pdf-test.php delete mode 100644 lam/tests/status-test.php delete mode 100644 lam/tmp/.htaccess diff --git a/CVSROOT/checkoutlist b/CVSROOT/checkoutlist deleted file mode 100644 index b04b3501..00000000 --- a/CVSROOT/checkoutlist +++ /dev/null @@ -1,13 +0,0 @@ -# The "checkoutlist" file is used to support additional version controlled -# administrative files in $CVSROOT/CVSROOT, such as template files. -# -# The first entry on a line is a filename which will be checked out from -# the corresponding RCS file in the $CVSROOT/CVSROOT directory. -# The remainder of the line is an error message to use if the file cannot -# be checked out. -# -# File format: -# -# [] -# -# comment lines begin with '#' diff --git a/CVSROOT/commitinfo b/CVSROOT/commitinfo deleted file mode 100644 index b19e7b7a..00000000 --- a/CVSROOT/commitinfo +++ /dev/null @@ -1,15 +0,0 @@ -# The "commitinfo" file is used to control pre-commit checks. -# The filter on the right is invoked with the repository and a list -# of files to check. A non-zero exit of the filter program will -# cause the commit to be aborted. -# -# The first entry on a line is a regular expression which is tested -# against the directory that the change is being committed to, relative -# to the $CVSROOT. For the first match that is found, then the remainder -# of the line is the name of the filter to run. -# -# If the repository name does not match any of the regular expressions in this -# file, the "DEFAULT" line is used, if it is specified. -# -# If the name "ALL" appears as a regular expression it is always used -# in addition to the first matching regex or "DEFAULT". diff --git a/CVSROOT/config b/CVSROOT/config deleted file mode 100644 index ff43ec00..00000000 --- a/CVSROOT/config +++ /dev/null @@ -1,14 +0,0 @@ -# Set this to "no" if pserver shouldn't check system users/passwords -#SystemAuth=no - -# Put CVS lock files in this directory rather than directly in the repository. -#LockDir=/var/lock/cvs - -# Set `TopLevelAdmin' to `yes' to create a CVS directory at the top -# level of the new working directory when using the `cvs checkout' -# command. -#TopLevelAdmin=no - -# Set `LogHistory' to `all' or `TOFEWGCMAR' to log all transactions to the -# history file, or a subset as needed (ie `TMAR' logs all write operations) -#LogHistory=TOFEWGCMAR diff --git a/CVSROOT/cvswrappers b/CVSROOT/cvswrappers deleted file mode 100644 index 0accaf1b..00000000 --- a/CVSROOT/cvswrappers +++ /dev/null @@ -1,23 +0,0 @@ -# This file affects handling of files based on their names. -# -# The -t/-f options allow one to treat directories of files -# as a single file, or to transform a file in other ways on -# its way in and out of CVS. -# -# The -m option specifies whether CVS attempts to merge files. -# -# The -k option specifies keyword expansion (e.g. -kb for binary). -# -# Format of wrapper file ($CVSROOT/CVSROOT/cvswrappers or .cvswrappers) -# -# wildcard [option value][option value]... -# -# where option is one of -# -f from cvs filter value: path to filter -# -t to cvs filter value: path to filter -# -m update methodology value: MERGE or COPY -# -k expansion mode value: b, o, kkv, &c -# -# and value is a single-quote delimited value. -# For example: -#*.gif -k 'b' diff --git a/CVSROOT/editinfo b/CVSROOT/editinfo deleted file mode 100644 index d78886c1..00000000 --- a/CVSROOT/editinfo +++ /dev/null @@ -1,21 +0,0 @@ -# The "editinfo" file is used to allow verification of logging -# information. It works best when a template (as specified in the -# rcsinfo file) is provided for the logging procedure. Given a -# template with locations for, a bug-id number, a list of people who -# reviewed the code before it can be checked in, and an external -# process to catalog the differences that were code reviewed, the -# following test can be applied to the code: -# -# Making sure that the entered bug-id number is correct. -# Validating that the code that was reviewed is indeed the code being -# checked in (using the bug-id number or a seperate review -# number to identify this particular code set.). -# -# If any of the above test failed, then the commit would be aborted. -# -# Actions such as mailing a copy of the report to each reviewer are -# better handled by an entry in the loginfo file. -# -# One thing that should be noted is the the ALL keyword is not -# supported. There can be only one entry that matches a given -# repository. diff --git a/CVSROOT/loginfo b/CVSROOT/loginfo deleted file mode 100644 index 278ca2c8..00000000 --- a/CVSROOT/loginfo +++ /dev/null @@ -1,29 +0,0 @@ -# The "loginfo" file controls where "cvs commit" log information -# is sent. The first entry on a line is a regular expression which must match -# the directory that the change is being made to, relative to the -# $CVSROOT. If a match is found, then the remainder of the line is a filter -# program that should expect log information on its standard input. -# -# If the repository name does not match any of the regular expressions in this -# file, the "DEFAULT" line is used, if it is specified. -# -# If the name ALL appears as a regular expression it is always used -# in addition to the first matching regex or DEFAULT. -# -# You may specify a format string as part of the -# filter. The string is composed of a `%' followed -# by a single format character, or followed by a set of format -# characters surrounded by `{' and `}' as separators. The format -# characters are: -# -# s = file name -# V = old version number (pre-checkin) -# v = new version number (post-checkin) -# -# For example: -#DEFAULT (echo ""; id; echo %s; date; cat) >> $CVSROOT/CVSROOT/commitlog -# or -#DEFAULT (echo ""; id; echo %{sVv}; date; cat) >> $CVSROOT/CVSROOT/commitlog -# -# commit messages for lam-cvs -DEFAULT /cvsroot/sitedocs/CVSROOT/cvstools/syncmail %{sVv} lam-cvs@lists.sourceforge.net \ No newline at end of file diff --git a/CVSROOT/modules b/CVSROOT/modules deleted file mode 100644 index cb9e9efc..00000000 --- a/CVSROOT/modules +++ /dev/null @@ -1,26 +0,0 @@ -# Three different line formats are valid: -# key -a aliases... -# key [options] directory -# key [options] directory files... -# -# Where "options" are composed of: -# -i prog Run "prog" on "cvs commit" from top-level of module. -# -o prog Run "prog" on "cvs checkout" of module. -# -e prog Run "prog" on "cvs export" of module. -# -t prog Run "prog" on "cvs rtag" of module. -# -u prog Run "prog" on "cvs update" of module. -# -d dir Place module in directory "dir" instead of module name. -# -l Top-level directory only -- do not recurse. -# -# NOTE: If you change any of the "Run" options above, you'll have to -# release and re-checkout any working directories of these modules. -# -# And "directory" is a path to a directory relative to $CVSROOT. -# -# The "-a" option specifies an alias. An alias is interpreted as if -# everything on the right of the "-a" had been typed on the command line. -# -# You can encode a module within a module by using the special '&' -# character to interpose another module into the current module. This -# can be useful for creating a module that consists of many directories -# spread out over the entire source repository. diff --git a/CVSROOT/notify b/CVSROOT/notify deleted file mode 100644 index 34f0bc28..00000000 --- a/CVSROOT/notify +++ /dev/null @@ -1,12 +0,0 @@ -# The "notify" file controls where notifications from watches set by -# "cvs watch add" or "cvs edit" are sent. The first entry on a line is -# a regular expression which is tested against the directory that the -# change is being made to, relative to the $CVSROOT. If it matches, -# then the remainder of the line is a filter program that should contain -# one occurrence of %s for the user to notify, and information on its -# standard input. -# -# "ALL" or "DEFAULT" can be used in place of the regular expression. -# -# For example: -#ALL mail %s -s "CVS notification" diff --git a/CVSROOT/rcsinfo b/CVSROOT/rcsinfo deleted file mode 100644 index 49e59f4d..00000000 --- a/CVSROOT/rcsinfo +++ /dev/null @@ -1,13 +0,0 @@ -# The "rcsinfo" file is used to control templates with which the editor -# is invoked on commit and import. -# -# The first entry on a line is a regular expression which is tested -# against the directory that the change is being made to, relative to the -# $CVSROOT. For the first match that is found, then the remainder of the -# line is the name of the file that contains the template. -# -# If the repository name does not match any of the regular expressions in this -# file, the "DEFAULT" line is used, if it is specified. -# -# If the name "ALL" appears as a regular expression it is always used -# in addition to the first matching regex or "DEFAULT". diff --git a/CVSROOT/taginfo b/CVSROOT/taginfo deleted file mode 100644 index 274a46dd..00000000 --- a/CVSROOT/taginfo +++ /dev/null @@ -1,20 +0,0 @@ -# The "taginfo" file is used to control pre-tag checks. -# The filter on the right is invoked with the following arguments: -# -# $1 -- tagname -# $2 -- operation "add" for tag, "mov" for tag -F, and "del" for tag -d -# $3 -- repository -# $4-> file revision [file revision ...] -# -# A non-zero exit of the filter program will cause the tag to be aborted. -# -# The first entry on a line is a regular expression which is tested -# against the directory that the change is being committed to, relative -# to the $CVSROOT. For the first match that is found, then the remainder -# of the line is the name of the filter to run. -# -# If the repository name does not match any of the regular expressions in this -# file, the "DEFAULT" line is used, if it is specified. -# -# If the name "ALL" appears as a regular expression it is always used -# in addition to the first matching regex or "DEFAULT". diff --git a/CVSROOT/verifymsg b/CVSROOT/verifymsg deleted file mode 100644 index 86f747ce..00000000 --- a/CVSROOT/verifymsg +++ /dev/null @@ -1,21 +0,0 @@ -# The "verifymsg" file is used to allow verification of logging -# information. It works best when a template (as specified in the -# rcsinfo file) is provided for the logging procedure. Given a -# template with locations for, a bug-id number, a list of people who -# reviewed the code before it can be checked in, and an external -# process to catalog the differences that were code reviewed, the -# following test can be applied to the code: -# -# Making sure that the entered bug-id number is correct. -# Validating that the code that was reviewed is indeed the code being -# checked in (using the bug-id number or a seperate review -# number to identify this particular code set.). -# -# If any of the above test failed, then the commit would be aborted. -# -# Actions such as mailing a copy of the report to each reviewer are -# better handled by an entry in the loginfo file. -# -# One thing that should be noted is the the ALL keyword is not -# supported. There can be only one entry that matches a given -# repository. diff --git a/lam/COPYING b/lam/COPYING deleted file mode 100644 index 5b6e7c66..00000000 --- a/lam/COPYING +++ /dev/null @@ -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. - - - Copyright (C) - - 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. - - , 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. diff --git a/lam/HISTORY b/lam/HISTORY deleted file mode 100644 index d37b7860..00000000 --- a/lam/HISTORY +++ /dev/null @@ -1,150 +0,0 @@ -??? 0.5.rc1 - - added manager and post office box for inetOrgPerson - - Samba 3: added support for logon hours - - Samba 3: added sambaSID as possible RDN attribute - - improved error handling in profile editor - - now quotas can be set on CSV upload - - new logo - - fixed bugs: - -> several fixes for PHP5 - -> fixes for PDF editor and output - -> password changing in tree view did not work - - -30.06.2005 0.5.alpha2 - - added documentation about schemas - - PDF now uses UTF-8 fonts - - added possibility to create plain inetOrgPerson accounts - - fixed bugs: - -> set DN suffix and RDN on profile loading - -> several fixes for PDF editor - -> creating Samba hosts now works - - -11.05.2005 0.5.alpha1 - - new modular architecture - -> possibility to create Unix-only accounts - -> plugins for more objectClasses planned - -> enhanced PDF output - -> enhanced file upload - -> enhanced editor for account profiles - -> dynamic configuration options (based on modules) - - all pages in UTF-8 - - added developer documentation - - PHPDoc formated comments - - new plugin for managing MAC addresses (RFE 926017) - - new plugin for managing NIS mail aliases (RFE 1050036) - - new plugin for managing mail routing with inetLocalMailRecipient (RFE 1092137) - - schema browser - - tree view - - -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 diff --git a/lam/INSTALL b/lam/INSTALL deleted file mode 100644 index f1532810..00000000 --- a/lam/INSTALL +++ /dev/null @@ -1,65 +0,0 @@ - -Installation Instructions for LAM ---------------------------------- - - -1. Requirements - - - Apache webserver (SSL optional) with installed PHP-Module (PHP-Module with - ldap, gettext, xml, mcrypt+mhash optional) - - Perl (optional, needed only for lamdaemon) - - OpenLDAP (>2.0) - - 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 - - - See docs/README.schema.txt for information about used LDAP schema files. - - -2. Installation - - * Extract package with: - tar xzf ldap-account-manager_.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: lamdaemon.pl 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. - - -3. Setting up PHP - - LAM runs with PHP4 or PHP5. - - Needed changes in your php.ini: - - * memory_limit = 32M - diff --git a/lam/README b/lam/README deleted file mode 100644 index 05e6bfdc..00000000 --- a/lam/README +++ /dev/null @@ -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 - Roland Gruber - 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 - - 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 - - account 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 diff --git a/lam/TODO b/lam/TODO deleted file mode 100644 index 53f34b44..00000000 --- a/lam/TODO +++ /dev/null @@ -1,6 +0,0 @@ - - - document missing parts - -0.5.rc1 - - change location of PDF profiles - diff --git a/lam/VERSION b/lam/VERSION deleted file mode 100644 index b60d4c2f..00000000 --- a/lam/VERSION +++ /dev/null @@ -1 +0,0 @@ -0.5.rc1 diff --git a/lam/config/.htaccess b/lam/config/.htaccess deleted file mode 100644 index 11c59d17..00000000 --- a/lam/config/.htaccess +++ /dev/null @@ -1,4 +0,0 @@ - - Order allow,deny - Deny from all - diff --git a/lam/config/config.cfg_sample b/lam/config/config.cfg_sample deleted file mode 100644 index 120aed1c..00000000 --- a/lam/config/config.cfg_sample +++ /dev/null @@ -1,5 +0,0 @@ -# password to add/delete/rename configuration profiles -password: lam - -# default profile, without ".conf" -default: lam diff --git a/lam/config/lam.conf_sample b/lam/config/lam.conf_sample deleted file mode 100644 index 434e3504..00000000 --- a/lam/config/lam.conf_sample +++ /dev/null @@ -1,82 +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 - -# 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:UTF-8:English (Britain) - -# Path to external Script -scriptPath: - -# Server of external Script -scriptServer: - -# Number of minutes LAM caches LDAP searches. -cachetimeout: 5 - -# List of used user modules -usermodules: shadowAccount,inetOrgPerson,posixAccount,sambaSamAccount - -# List of used group modules -groupmodules: posixGroup,sambaGroupMapping - -# List of used host modules -hostmodules: account,sambaSamAccount,posixAccount - -# Module settings - -modules: posixAccount_minUID: 10000 -modules: posixAccount_maxUID: 30000 -modules: posixAccount_minMachine: 50000 -modules: posixAccount_maxMachine: 60000 -modules: posixGroup_minGID: 10000 -modules: posixGroup_maxGID: 20000 -modules: posixGroup_pwdHash: SSHA -modules: posixAccount_pwdHash: SSHA - diff --git a/lam/config/language b/lam/config/language deleted file mode 100644 index cf2d367e..00000000 --- a/lam/config/language +++ /dev/null @@ -1,30 +0,0 @@ -# LDAP Account Manager language configuration file -# -# Do not modify! - -# Each line consists of a ":"-seperated entry. The first part is the locale name, -# the second is the character encoding and the third the language name. - -# English -en_GB.utf8:UTF-8:English (Great Britain) - -# Spanish -es_ES.utf8:UTF-8:Español (España) - -# Catalan -ca_ES.utf8:UTF-8:Català (Catalunya) - -# French -fr_FR.utf8:UTF-8:Français (France) - -# German -de_DE.utf8:UTF-8:Deutsch (Deutschland) - -# Hungarian -hu_HU.utf8:UTF-8:Magyar (Magyarország) - -# Italian -it_IT.utf8:UTF-8:Italiano (Italia) - -# Japanese -ja_JP.utf8:UTF-8:日本語 (日本) diff --git a/lam/config/pdf/default.group.xml b/lam/config/pdf/default.group.xml deleted file mode 100644 index 5f2c20d4..00000000 --- a/lam/config/pdf/default.group.xml +++ /dev/null @@ -1,8 +0,0 @@ - -
- - - - -
-
\ No newline at end of file diff --git a/lam/config/pdf/default.host.xml b/lam/config/pdf/default.host.xml deleted file mode 100644 index 5088f2e7..00000000 --- a/lam/config/pdf/default.host.xml +++ /dev/null @@ -1,9 +0,0 @@ - -
- - - - - -
-
\ No newline at end of file diff --git a/lam/config/pdf/default.user.xml b/lam/config/pdf/default.user.xml deleted file mode 100644 index c03415bc..00000000 --- a/lam/config/pdf/default.user.xml +++ /dev/null @@ -1,38 +0,0 @@ - - -
- - - - - - - - - - -
-
- - - - - - - - -
-
- - - - - - - - -
-
- -
-
\ No newline at end of file diff --git a/lam/config/pdf/logos/printLogo.jpg b/lam/config/pdf/logos/printLogo.jpg deleted file mode 100644 index 35ef1e4deff2f4811fde239f8a0b35b0b3509a7b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9791 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 atoehTIJ!~Mx0RS2;=cR$<)!y^^?v|0(qcsb diff --git a/lam/config/profiles/default.group b/lam/config/profiles/default.group deleted file mode 100644 index 8b137891..00000000 --- a/lam/config/profiles/default.group +++ /dev/null @@ -1 +0,0 @@ - diff --git a/lam/config/profiles/default.host b/lam/config/profiles/default.host deleted file mode 100644 index e69de29b..00000000 diff --git a/lam/config/profiles/default.user b/lam/config/profiles/default.user deleted file mode 100644 index 806a119f..00000000 --- a/lam/config/profiles/default.user +++ /dev/null @@ -1,18 +0,0 @@ -shadowAccount_shadowWarning: 10 -shadowAccount_shadowInactive: 10 -shadowAccount_shadowMin: 1 -shadowAccount_shadowMax: 365 -sambaAccount_useunixpwd: true -sambaAccount_acctFlagsN: false -sambaAccount_acctFlagsX: true -sambaAccount_acctFlagsD: false -sambaAccount_homeDrive: U: -sambaSamAccount_useunixpwd: true -sambaSamAccount_sambaAcctFlagsN: false -sambaSamAccount_sambaAcctFlagsX: true -sambaSamAccount_sambaAcctFlagsD: false -sambaSamAccount_sambaHomeDrive: U: -posixAccount_homeDirectory: /home/$user -posixAccount_loginShell: /bin/bash -posixAccount_userPassword_no: false -posixAccount_userPassword_lock: false diff --git a/lam/config/shells b/lam/config/shells deleted file mode 100644 index 7105372f..00000000 --- a/lam/config/shells +++ /dev/null @@ -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 diff --git a/lam/copyright b/lam/copyright deleted file mode 100644 index 1d1e4461..00000000 --- a/lam/copyright +++ /dev/null @@ -1,104 +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. - - -C: - - Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Bitstream - Vera is a trademark of Bitstream, Inc. - - Permission is hereby granted, free of charge, to any person obtaining - a copy of the fonts accompanying this license ("Fonts") and associated - documentation files (the "Font Software"), to reproduce and distribute - the Font Software, including without limitation the rights to use, - copy, merge, publish, distribute, and/or sell copies of the Font - Software, and to permit persons to whom the Font Software is furnished - to do so, subject to the following conditions: - - The above copyright and trademark notices and this permission notice - shall be included in all copies of one or more of the Font Software - typefaces. - - The Font Software may be modified, altered, or added to, and in - particular the designs of glyphs or characters in the Fonts may be - modified and additional glyphs or characters may be added to the - Fonts, only if the fonts are renamed to names not containing either - the words "Bitstream" or the word "Vera". - - This License becomes null and void to the extent applicable to Fonts - or Font Software that has been modified and is distributed under the - "Bitstream Vera" names. - - The Font Software may be sold as part of a larger software package but - no copy of one or more of the Font Software typefaces may be sold by - itself. - - THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT - OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL - BITSTREAM OR THE GNOME FOUNDATION BE LIABLE FOR ANY CLAIM, DAMAGES OR - OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, - OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR - OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT - SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE. - - Except as contained in this notice, the names of Gnome, the Gnome - Foundation, and Bitstream Inc., shall not be used in advertising or - otherwise to promote the sale, use or other dealings in this Font - Software without prior written authorization from the Gnome Foundation - or Bitstream Inc., respectively. For further information, contact: - fonts at gnome dot org. - - - - -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 -lib/font/Vera* C 2003 Bitstream, Inc. diff --git a/lam/docs/LGPL-license.txt b/lam/docs/LGPL-license.txt deleted file mode 100644 index 27fa5a1a..00000000 --- a/lam/docs/LGPL-license.txt +++ /dev/null @@ -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. - - - Copyright (C) - - 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. - - , 1 April 1990 - Ty Coon, President of Vice - -That's all there is to it! \ No newline at end of file diff --git a/lam/docs/README.fpdf.htm b/lam/docs/README.fpdf.htm deleted file mode 100755 index f556c9cd..00000000 --- a/lam/docs/README.fpdf.htm +++ /dev/null @@ -1,286 +0,0 @@ - - - -FAQ - - - -

FAQ

-1. What's exactly the license of FPDF? Are there any usage restrictions?
-2. When I try to create a PDF, a lot of weird characters show on the screen. Why?
-3. I try to generate a PDF and IE displays a blank page. What happens?
-4. I send parameters using the POST method and the values don't appear in the PDF.
-5. When I use a PHP session, IE doesn't display my PDF any more but asks me to download it.
-6. When I'm on SSL, IE can't open the PDF.
-7. When I execute a script I get the message "FPDF error: Don't alter the locale before including class file".
-8. I try to put a PNG and Acrobat says "There was an error processing a page. A drawing error occurred".
-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)
-10. I try to display a variable in the Header method but nothing prints.
-11. I defined the Header and Footer methods in my PDF class but nothing appears.
-12. I can't make line breaks work. I put \n in the string printed by MultiCell but it doesn't work.
-13. I try to put the euro symbol but it doesn't work.
-14. I draw a frame with very precise dimensions, but when printed I notice some differences.
-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?
-16. What's the limit of the file sizes I can generate with FPDF?
-17. Can I modify a PDF with FPDF?
-18. I'd like to make a search engine in PHP and index PDF files. Can I do it with FPDF?
-19. Can I convert an HTML page to PDF with FPDF?
-20. Can I concatenate PDF files with FPDF?
-

-

1. What's exactly the license of FPDF? Are there any usage restrictions?

-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. -

2. When I try to create a PDF, a lot of weird characters show on the screen. Why?

-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. -
-To solve the problem, simply quit and restart IE. You can also go to another URL and come -back. -
-To avoid this kind of inconvenience during the development, you can generate the PDF directly -to a file and open it through the explorer. -

3. I try to generate a PDF and IE displays a blank page. What happens?

-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. -
-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: -
-
-
- -<INPUT TYPE="HIDDEN" NAME="ext" VALUE=".pdf"> - -

-The usage of PHP sessions also often causes trouble (avoid using HTTP headers preventing caching). -See question 5 for a workaround. -
-
-To avoid all these problems in a reliable manner, two main techniques exist: -
-
-- 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. -
-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. -
-
-- 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: -
-
-
- -//Determine a temporary file name in the current directory
-$file=basename(tempnam(getcwd(),'tmp'));
-//Save PDF to file
-$pdf->Output($file);
-//JavaScript redirection
-echo "<HTML><SCRIPT>document.location='getpdf.php?f=$file';</SCRIPT></HTML>"; -
-

-Then create the getpdf.php file with this: -
-
-
- -<?php
-$f=$HTTP_GET_VARS['f'];
-//Check file (don't skip it!)
-if(substr($f,0,3)!='tmp' or strpos($f,'/') or strpos($f,'\\'))
-    die('Incorrect file name');
-if(!file_exists($f))
-    die('File does not exist');
-//Handle special IE request if needed
-if($HTTP_SERVER_VARS['HTTP_USER_AGENT']=='contype')
-{
-    Header('Content-Type: application/pdf');
-    exit;
-}
-//Output PDF
-Header('Content-Type: application/pdf');
-Header('Content-Length: '.filesize($f));
-readfile($f);
-//Remove file
-unlink($f);
-exit;
-?> -
-

-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: -
-
-
- -//Determine a temporary file name in the current directory
-$file=basename(tempnam(getcwd(),'tmp'));
-rename($file,$file.'.pdf');
-$file.='.pdf';
-//Save PDF to file
-$pdf->Output($file);
-//JavaScript redirection
-echo "<HTML><SCRIPT>document.location='$file';</SCRIPT></HTML>"; -
-

-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: -
-
-
- -function CleanFiles($dir)
-{
-    //Delete temporary files
-    $t=time();
-    $h=opendir($dir);
-    while($file=readdir($h))
-    {
-        if(substr($file,0,3)=='tmp' and substr($file,-4)=='.pdf')
-        {
-            $path=$dir.'/'.$file;
-            if($t-filemtime($path)>3600)
-                @unlink($path);
-        }
-    }
-    closedir($h);
-} -
-

-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. -
-
-Remark: it is necessary to open the PDF in a new window, as you can't go backwards due to the -redirection. -

4. I send parameters using the POST method and the values don't appear in the PDF.

-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. -

5. When I use a PHP session, IE doesn't display my PDF any more but asks me to download it.

-It's a problem affecting some versions of IE. To work around it, add the following line before -session_start(): -
-
-
- -session_cache_limiter('private'); - -

-or do a redirection as explained in question 3. -

6. When I'm on SSL, IE can't open the PDF.

-The problem may be fixed by adding this line:
-
-
- -Header('Pragma: public'); - -

- -

7. When I execute a script I get the message "FPDF error: Don't alter the locale before including class file".

-When the decimal separator is configured as a comma before including a file, there is a -bug 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. -

8. I try to put a PNG and Acrobat says "There was an error processing a page. A drawing error occurred".

-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. -

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)

-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. -

10. I try to display a variable in the Header method but nothing prints.

-You have to use the global keyword, for instance: -
-
-
- -function Header()
-{
-    global $title;
-
-    $this->SetFont('Arial','B',15);
-    $this->Cell(0,10,$title,1,1,'C');
-} -
-

- -

11. I defined the Header and Footer methods in my PDF class but nothing appears.

-You have to create an object from the PDF class, not FPDF:
-
-
- -$pdf=new PDF(); - -

- -

12. I can't make line breaks work. I put \n in the string printed by MultiCell but it doesn't work.

-You have to enclose your string with double quotes, not single ones. -

13. I try to put the euro symbol but it doesn't work.

-The standard fonts have the euro character at position 128. You can define a constant like this -for convenience: -
-
-
- -define('EURO',chr(128)); - -

-Note: Acrobat 4 or higher is required to display euro. -

14. I draw a frame with very precise dimensions, but when printed I notice some differences.

-To respect dimensions, you have to uncheck the option "Fit to page" in the print dialog box. -

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?

-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. -

16. What's the limit of the file sizes I can generate with FPDF?

-There is no particular limit. There are some constraints however: -
-
-- 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. -
-
-- 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(). -
-
-- 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. -
-Remark: even when the browser goes in time-out, the script may continue to run on the server. -

17. Can I modify a PDF with FPDF?

-No. -

18. I'd like to make a search engine in PHP and index PDF files. Can I do it with FPDF?

-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:
-
-http://www.foolabs.com/xpdf/ -

19. Can I convert an HTML page to PDF with FPDF?

-No. But a GPL C utility does exist, htmldoc, which allows to do it and gives good results:
-
-http://www.easysw.com/htmldoc/ -

20. Can I concatenate PDF files with FPDF?

-No. But a free C utility exists to perform this task:
-
-http://thierry.schmit.free.fr/dev/mbtPdfAsm/enMbtPdfAsm2.html - - diff --git a/lam/docs/README.hosts.txt b/lam/docs/README.hosts.txt deleted file mode 100644 index 8303992e..00000000 --- a/lam/docs/README.hosts.txt +++ /dev/null @@ -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 ) - ) - diff --git a/lam/docs/README.lamdaemon.txt b/lam/docs/README.lamdaemon.txt deleted file mode 100644 index afec3bfa..00000000 --- a/lam/docs/README.lamdaemon.txt +++ /dev/null @@ -1,132 +0,0 @@ - - Setting up lamdaemon: - - - Lamdaemon.pl is used to modify quota and home directories 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. - - Debian users can install Net::SSH:Perl with dh-make-perl: - - apt-get install dh-make-perl - dh-make-perl --build --cpan Net::SSH::Perl - dpkg -i install libnet-ssh-perl_1.25-1_all.deb - - -4. Set up SSH - Your SSH daemon must offer the password authentication method. - To activate it just use this configuration option in /etc/ssh/sshd_config: - - PasswordAuthentication yes - - -5. 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. - - -6. Debugging lamdaemon - If you set up all things as documented before and still get "Access denied" - then you can try to debug the problem. - - - Check /var/log/auth.log or the equivalent on your system - This file contains messages about all logins. If the ssh login - failed then you will find a description about the reason here. - - - Enable debug output in lamdaemon - In line 230 of lamdaemon.pl change the SSH options like this: - - my $ssh = Net::SSH::Perl->new($hostname, options=>[ - "UserKnownHostsFile /dev/null"], - protocol => "2,1", - debug => "true" ); - - This will produce a lot of output when you do the lamdaemon test. - Check that there is a line like this: - - Authentication methods that can continue: publickey,password,keyboard-interactive. - - The "password" is the one which is important. - - - Set sshd in debug mode - In /etc/ssh/sshd_conf add these lines: - - SyslogFacility AUTH - LogLevel DEBUG3 - - Now check /var/log/syslog for messages from sshd. - - - Update Openssh - A Suse Linux user reported that upgrading Openssh solved the problem. - - -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. diff --git a/lam/docs/README.openldap.txt b/lam/docs/README.openldap.txt deleted file mode 100644 index b66ae625..00000000 --- a/lam/docs/README.openldap.txt +++ /dev/null @@ -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 diff --git a/lam/docs/README.schema.txt b/lam/docs/README.schema.txt deleted file mode 100644 index bba8cbc6..00000000 --- a/lam/docs/README.schema.txt +++ /dev/null @@ -1,51 +0,0 @@ - - Here is a list of needed LDAP schema files for the different LAM modules. - For OpenLDAP we also provide a source where you can get the files. - - - 1. Unix accounts (modules posixAccount/shadowAccount/posixGroup) - - Schema: nis.schema - Source: part of OpenLDAP installation - - Suse Linux: Do not use the rfc2307bis.schema but nis.schema instead. - - - 2. Address book entries (module inetOrgPerson) - - Schema: inetorgperson.schema - Source: part of OpenLDAP installation - - - 3. Samba 2/3 accounts (modules sambaAccount/sambaSamAccount) - - Schema: samba.schema - Source: part of Samba tarball (examples/LDAP/samba.schema) - - - 4. Quota (module quota) - - Schema: none - - - 5. Mail routing (module inetLocalMailRecipient) - - Schema: misc.schema - Source: part of OpenLDAP installation - - - 6. Mail aliases (module nisMailAlias) - - Schema: misc.schema - Source: part of OpenLDAP installation - - - 7. MAC addresses (module ieee802device) - - Schema: nis.schema - Source: part of OpenLDAP installation - - 8. Simple Accounts (module account) - - Schema: cosine.schema - Source: part of OpenLDAP installation diff --git a/lam/docs/README.security.txt b/lam/docs/README.security.txt deleted file mode 100644 index cbae78d8..00000000 --- a/lam/docs/README.security.txt +++ /dev/null @@ -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. - - diff --git a/lam/docs/devel/FAQ.htm b/lam/docs/devel/FAQ.htm deleted file mode 100644 index 82ab6ea1..00000000 --- a/lam/docs/devel/FAQ.htm +++ /dev/null @@ -1,104 +0,0 @@ - - - - Developer FAQ - - - -
-

Developer FAQ
-

-
-
Q: -Where is the ldap/config object?
-
-A: The ldap object -is in $_SESSION['ldap'] -and the config object in $_SESSION['config'].
-
-
-
-

-
-
Q: -How can I make LDAP operations, where is the user name and password?
-
-A: LAM -automatically reconnects to the LDAP server on every page load. You can -use $_SESSION['ldap']->server -which is the LDAP server handle.
-Be sure to include ldap.inc before (automatically included for account -modules).
-
-Example: ldap_search($_SESSION['ldap']->server, $suffix, $filter, $attributes)
-
-
-
-Q: What is the LDAP suffix for -the different account types?
-
-A: Just call $_SESSION['config']->get_Suffix($scope) -where $scope is the account type (user,group, ...).
-Be sure to include ldap.inc before (automatically included for account -modules).
-
-Example: $suffix = $_SESSION['config']->get_Suffix('user')
-
-
-
-Q: How can I check if the user is -really logged in and not calling the scripts by hand?
-
-A: After the user -successfully logged in to LAM the variable $_SESSION['loggedIn'] -is set to true.
-
-
-
-Q: What is the command for these error/warning/info messages?

-
-A: Your script must -include status.inc (automatically included for account -modules) to display these messages.
-The command is StatusMessage(<type>, -<headline>, <text>[, <variables>]).
-
-Parameters:
-
    -
  • <type>: message -type ("ERROR", "WARN", "INFO")
  • -
  • <headline>: -headline for the message (may include format tags)
    -
  • -
  • <type>: text for -the message (may include format tags)
  • -
  • <variables>: -optional, array of variables to include in headline/text
    -The positions in headline/text must be marked with %s before.
  • -
-
-Format of special tags:
-
    -
  • {bold}text{endbold}: "text" is printed bold
  • -
  • {color=#123456}text{endcolor}: "text" is printed in -given color
  • -
  • {link=http://nodomain.org}text{endlink}: This will add a link to -http://nodomain.org which will be labeled "text"
    -
  • -
-
-
-
-
-
- - diff --git a/lam/docs/devel/account_modules.htm b/lam/docs/devel/account_modules.htm deleted file mode 100644 index a466208d..00000000 --- a/lam/docs/devel/account_modules.htm +++ /dev/null @@ -1,49 +0,0 @@ - - - - - Account modules - - - -

Account modules
-

-
base module
-
-

-
The account modules control all the -functionality which is specific for LDAP accounts or parts of them. -E.g. they define the account detail pages where the user can edit -accounts, the profile editor sections and much more. They are the core -of LAM.
-
-All account modules are saved in lib/modules/.
-If your module needs any include files etc. please save it in lib/modules/<name of your module>.
-
-Please take a look at the module HowTo for -an example to write your own modules.
-The complete specification for the module interface can be found here.
-
-

Superclass

-All account modules should be -subclasses of the baseModule.
-This allows them to benefit from the meta data in the baseModule and -reduces very much the code since not the complete module interface has -to be implemented.
-
-
-

Module detection

-New modules can simply be copied to lib/modules. -LAM will check what files are inside the directory and provide the user -new modules automtically.
-There is no extra configuration file.
-
-
-
-
- - diff --git a/lam/docs/devel/base_module.htm b/lam/docs/devel/base_module.htm deleted file mode 100644 index 76b608f7..00000000 --- a/lam/docs/devel/base_module.htm +++ /dev/null @@ -1,74 +0,0 @@ - - - - - Base module - - - -

Base module
-

-
base module
-
-

-
The baseModule -is the parent class of all account modules.
-It implements most functions of the module interface and provides -the possibility to use meta data -for the module functions.
-There are also some class variables which are useful for the child -classes.
-
-
-

Meta data

-The baseModule allows you to -not implement the module -interface directly but to provide meta -data which is interpreted by the baseModule.
-If you do not use certain functions of the interface the baseModule also provides dummy -functions. E.g. if your module needs no configuration option you can -just skip this function in your code and the baseModule will tell the -configuration part that there is no option.
-
-To define meta data you have -to implement the function get_metaData(). -This function must return a hash array with the meta options as array -keys.
-Please refer to the module -interface for details about the format of meta data.
-
-
-

Functions
-

-get_scope(): This function -returns the account type ("user", "group", ...) of the module.
-
-For a list of meta data -functions please refer to the module -interface.
-
-
-

Class variables

-$moduleSettings: This variable -contains the configuration settings of all modules.
-$base: This is the name of the -parent accountContainer -($_SESSION[$base]).
-
-
-
-
-
-
-
-
- - diff --git a/lam/docs/devel/config.htm b/lam/docs/devel/config.htm deleted file mode 100644 index 2fbc23d1..00000000 --- a/lam/docs/devel/config.htm +++ /dev/null @@ -1,61 +0,0 @@ - - - - - config.inc - - - -

config.inc

-
-
-This file includes all functions needed to manage configuration -profiles. It includes classes for the profiles itself and the master -configuration (default profile, master password, etc.).
-
-There are also two global functions for general use: setlanguage and metarefresh
-
-

Meta refresh

-The global function metaRefresh() -takes an URL as argument and prints all HTML code needed for a meta -refresh to this URL.
-
-

Language

-LAM uses gettext to translate -the HTML pages to the different languages. Therefore some preferences -need to be set on every page load. This is done by setlanguage().
-The function should be called directly after starting the session.
-
-The list of possible languages is stored in config/language. It includes the -locale name, the character encoding an the language name.
-All languages use UTF-8 as encoding because LDAP also stores values in -this format.
-
-

Configuration profiles

-Each configuration profile is saved in a single file in config/.
-
-There are two types of configuration options:
-
    -
  • Static options (LDAP server settings, etc.)
    -
  • -
  • Module options (UID/GID ranges)
    -
  • -
-All static options have a describing comment in the configuration file -to make it easier for the user to modify the values. The dynamic -options provided by the modules do not include a comment.
-
-

Master configuration file

-LAM stores the default configuartion profile and a master password in config/config.cfg.
-The master password is verified when the user wants to create/delete -configuration profiles.
- - diff --git a/lam/docs/devel/config_files.htm b/lam/docs/devel/config_files.htm deleted file mode 100644 index 2af11634..00000000 --- a/lam/docs/devel/config_files.htm +++ /dev/null @@ -1,44 +0,0 @@ - - - - - Configuration profiles - - - -

Configuration profiles

-
-LAM allows the user to store the configuration settings in profiles. This makes it easy to -manage different LDAP servers. All profile files ae stored in config/ and are named <name>.conf.
-The master configuration file config/config.cfg only stores the -default profile and master password. It has the same file format as the -profiles.
-
-

File format

-LAM allows to store values and comments in the configuration files. -Only one type per line is allowed, it is not possible to mix comments -and values in the same line.
-
-

Settings
-

-<identifier>: <value>
-
-
The first word in the line is taken as identifier for the -setting. It must be followed by a ":" -and a space.
-The rest of the line is taken as the value for this setting.
-
-

Comments

-# Comment
-
-Comments always start with a "#" -as first character and end at the line end. LAM will ignore all lines -starting with a "#".
- - diff --git a/lam/docs/devel/config_pages.htm b/lam/docs/devel/config_pages.htm deleted file mode 100644 index cd2a5e05..00000000 --- a/lam/docs/devel/config_pages.htm +++ /dev/null @@ -1,77 +0,0 @@ - - - - - LAM - Configuration pages - - - -
-

Configuration pages

-
-
-
configuration
-
-

Configuration - Login (conflogin.php):

-This is the start page of the configuration editor. The user can select -a profile for editing or go to the profile management page.
-Each account profile is protected with a password which is stored in -the profile.
-The list of possible profiles is returned by getConfigProfiles() -in config.inc, the default profile is returned by an object of class CfgMain from -config.inc.
-
-
-

Configuration - Profile management (profmanage.php):

-Here the user can add and modify configuration profiles or change the -configuration master password.
-The configuration master password prevents unauthorised users from -changing the profiles. The password is saved in config/config.cfg and -managed via the CfgMain -class.
-
-
-

Configuration - Main page (confmain.php):

-This page presents all configuration settings for editing.
-Some of the settings are module independent (e.g. server settings, -language, ...) and displayed always.
-The others are set up by the account modules. Only settings of -currently selected modules are displayed.
-Users may also change the profile password on this page.
-
-
-

Configuration - Module selection (confmodules.php):
-

-On this page the user can select which account modules LAM should use.
-The list of possible modules is returned by getAvailableModules() -in modules.inc and checked for dependencies/conflicts with check_module_depends() -and check_module_conflicts().
-
-Each account type needs exactly one base -module -which is the base of a account by providing a structural object class.
-
-
-

Configuration - Save settings (confsave.php):
-

-This script checks the input and displays possible error messages or an -overview of the saved settings.
-The static settings are set and checked with an object of class Config from -config.inc.
-The account modules manage the input validation for their fields and -are also able to return error messages. This is done with checkConfigOptions() -from modules.inc.
-
-
-
- - diff --git a/lam/docs/devel/images/lam_baseModule.png b/lam/docs/devel/images/lam_baseModule.png deleted file mode 100644 index 3ddeee0a6e3bac46d30bcdf99c5149d2df9b6554..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5477 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 diff --git a/lam/docs/devel/images/lam_config.png b/lam/docs/devel/images/lam_config.png deleted file mode 100644 index 3be05b25542f8c84c4d67074cd5b3c7e2adf82b1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11554 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 diff --git a/lam/docs/devel/images/lam_pdfEditor.png b/lam/docs/devel/images/lam_pdfEditor.png deleted file mode 100644 index d5cc3a58c0b8b20126f0146bc8c54eb62d13cb01..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6386 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 b-f@FJ++BE}1yXws0zT@>I!fgVHgEm|O#|=^ diff --git a/lam/docs/devel/images/lam_profedit.png b/lam/docs/devel/images/lam_profedit.png deleted file mode 100644 index d9418c7c5949323ee5899a50f35392fdd471c6f2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5604 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 O0cuLx@FK-$f&T`~+8-zY diff --git a/lam/docs/devel/images/lam_upload.png b/lam/docs/devel/images/lam_upload.png deleted file mode 100644 index 5c65dba52bb85b3882ab8787f02f140a1f533dbd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6681 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 diff --git a/lam/docs/devel/index.htm b/lam/docs/devel/index.htm deleted file mode 100644 index a05a557a..00000000 --- a/lam/docs/devel/index.htm +++ /dev/null @@ -1,103 +0,0 @@ - - - - LAM development documentation - - - -
-

LDAP Account Manager - Code overview

-These documents are supposed to give developers who want to modify LAM -an overview of the codebase. It focuses mainly on what is done to -generate the HTML output and the most important functions provided by -the library files.
-overview
-
-
- - - - - - - - -
-

Web pages:

- -
-

Libraries:

- -
-

Configuration files:

- -
-
-
-

Howtos

- -
-

FAQ

-
-
-
-
- - diff --git a/lam/docs/devel/ldap.htm b/lam/docs/devel/ldap.htm deleted file mode 100644 index 28e1beeb..00000000 --- a/lam/docs/devel/ldap.htm +++ /dev/null @@ -1,55 +0,0 @@ - - - - - ldap.inc - - - -

ldap.inc

-
-
-This library provides the access to the LDAP server and its content.
-The $_SESSION['ldap'] -object reconnects automatically to the LDAP server on every page load.
-
-
-

1. Server handle

-All PHP functions which access LDAP require a server handle as -parameter. This is managed by ldap.inc.
-You can access it with $_SESSION['ldap']->server.
-
-
-

2. Object classes

-Account modules may want to check if the current LDAP server supports -all required object classes.
-$_SESSION['ldap']->objectClasses -contains a list of object classes and their attributes which is -read from the LDAP server.
-
-
-

3. En-/Decryption

-For security reasons sensitive data like user passwords should be -encrypted before storing in session.
-$_SESSION['ldap']->encrypt(<string>) -encrypts a string and returns a binary object. This can be decrypted -with $_SESSION['ldap']->decrypt(<object>)
-
-Ldap.inc will take care for the crypotographic key and if Blowfish or -MCrypt/AES is used.
-
-
-

4. Random values

-Ldap.inc contains a random integer value which is much more secure than -calling mt_rand(). The value -changes on every page load and is accessible in $_SESSION['ldap']->rand.
-If you need multiple values you can get a new value by calling $_SESSION['ldap']->new_rand().
-
- - diff --git a/lam/docs/devel/lists.htm b/lam/docs/devel/lists.htm deleted file mode 100644 index 348b51f0..00000000 --- a/lam/docs/devel/lists.htm +++ /dev/null @@ -1,103 +0,0 @@ - - - - - LAM - Account lists - - - -

Account lists

-
-
Account lists
-
-
-
-
-The account lists are all built after the same schema. They provide a -list of found accounts which can be restricted by LDAP filters and the -LDAP OU (Organizational Unit).
-
-The list of LDAP attributes and thus table columns is taken from the -configuration profile (get_...listAttributes() -in config.inc). Each account list has a separate list of attributes.
-Only these attributes are given the LDAP search as attribute parameter.
-There is also a predefined description list for the attributes in -lists.inc. The user may use other values by setting them in the -configuration profile.
-
-The number of accounts per page is limited in the configuration profile -(get_MaxListEntries() -in config.inc). There will be links at the beginning and end of the -list if more accounts were found.
-
-Several common helper functions for sorting and some page elements -reside in lists.inc.
-
-

1. Getting accounts from LDAP

-Each account list has its own LDAP suffix which is saved in the -configuration profile. This is used as search base.
-The account modules provide an LDAP filter (get_ldap_filter() -in modules.inc) to get only accounts of a special type.
-
-This list can be further reduced if the user provides an additional -LDAP filter with the filter boxes or selects another LDAP OU with the -drop-down-box.
-
-

2. Caching LDAP accounts

-The lists usually do not ask the LDAP server for an account list every -time the user changes the page. The accounts are cached in the session.
-
-A new LDAP search is done if the user:
-
    -
  • changes to another account list or tool
  • -
  • adds/modifies an account
  • -
  • selects the "refresh" button
  • -
  • adds additional LDAP filters or changes the LDAP OU
    -
  • -
-
-It is not done if the user:
-
    -
  • changes the list pages if there are more accounts than what can -be shown
  • -
  • sorts the list
  • -
-
-

3. Adding/Editing accounts

-There are buttons at the end of the page to add/delete accounts. Adding -accounts is done by account/edit.php and deleting by delete.php.
-
-The user can use the link in each account row to modify (in -accounts/edit.php) the account. This can also be done by double -clicking the row if Java Script is enabled.
-
-
-

4. Export to PDF

-The user can generate PDF files for the accounts. This is done by the createModulePDF() -function from pdf.inc.
-
-
-

5. Special abilities of some lists

-

5.1. The user list

-If the attribute gidNumber is -shown as table column then there will be an additional checkbox to -translate the GID to the group name.
-This checkbox is hidden if gidNumber -is not part of the attribute list.
-
-

5.2. The group list

-If the attribute memberUID is shown as table column then all values of -this attribute are shown as links.
-These links redirect to userlink.php which tries to find the given user -and redirects to account/edit.php for account modifying.
-
-
-
- - diff --git a/lam/docs/devel/login.htm b/lam/docs/devel/login.htm deleted file mode 100644 index bbf07168..00000000 --- a/lam/docs/devel/login.htm +++ /dev/null @@ -1,70 +0,0 @@ - - - - - Login - - - -

Login
-

-

-
-

-
The login -page is the first page the user sees when opening LAM. It manages LDAP -authentication and checks the environment of the user.
-
-
-

login.php

-The login page offers authentication, language selection and profile -selection. There are also some environment checks.
-
-

Authentication

-The list of possible users is loaded from the current active profile. -Only the RDN value is offered for selection by the user.
-When the user submits his password then a new Ldap object is created and LAM -tries to connect to the LDAP server.
-If the connection was successful the user is forwarded to the main -frame (main.php). The session variable $_SESSION['loggedIn'] -is set to true. This informs -the other PHP scripts that a valid user is connected (e.g. the user is -allowed to create account profiles).
-
-

Language selection

-The list of possible languages is read from config/language. The current active -profile defines the preselected language and the language of the login -page itself.
-
-

Profile selection
-

-The user can change the active configuration profile at login. A list -of possible profiles is retrieved by getConfigProfiles().
-If the profile is changed then the login replaces the config object in $_SESSION['config'] -by a new one. Then the main login page is loaded and uses the new -values.
-
-

Environment checks

-LAM checks if all needed PHP extensions are installed.
-
    -
  • LDAP: PHP needs LDAP -support
  • -
  • MHash: needed for -password creation
  • -
  • Gettext: needed for -translation
    -
  • -
-
-
-
-
-
- - diff --git a/lam/docs/devel/mod_accountPages.htm b/lam/docs/devel/mod_accountPages.htm deleted file mode 100644 index 5017bce2..00000000 --- a/lam/docs/devel/mod_accountPages.htm +++ /dev/null @@ -1,420 +0,0 @@ - - - - Module HowTo - Account pages - - - -
-

Module HowTo - Account pages
-

-
-
-

-

1. Loading the LDAP attributes
-

-Every time the user selects an existing account to modify LAM will load -the complete LDAP entry of it. Your module then should select the -attributes which are useful for it.
-There are two variables in baseModule -which should be used to store the attributes. The $attributes variable stores the -current attributes including changes the user made. The $orig variable stores the attributes -as they were originally when the account was loaded. This allows you to -see what changes were made.
-
-The load_attributes() function -in your module gets the complete attribute list from LDAP.
-
-Example:
-
-The ieee802Device uses an -object class and the 'macAddress' -attribute. Therefore we will save this two values.
-
- - - - - - -
    /**
-    * This function loads all needed attributes into the -object.
-    *
-    * @param array $attr an array as it is retured from -ldap_get_attributes
-    */
-    function load_attributes($attr) {
-        -$this->attributes['objectClass'] = array();
-        -$this->attributes['macAddress'] = array();
-        $this->orig['objectClass'] = -array();
-        $this->orig['macAddress'] = -array();
-        if (isset($attr['objectClass'])) {
-            -unset($attr['objectClass']['count']);
-            -$this->attributes['objectClass'] = $attr['objectClass'];
-            -$this->orig['objectClass'] = $attr['objectClass'];
-        }
-        if (isset($attr['macAddress'])) {
-            -unset($attr['macAddress']['count']);
-            -$this->attributes['macAddress'] = $attr['macAddress'];
-            -$this->orig['macAddress'] = $attr['macAddress'];
-        }
-        return 0;
-    }
-
-
-
-

2. Defining pages
-

-You can define multiple subpages for your account page. Usually one -page is enough but you may display certain attribute settings on an -extra page (e.g. Unix group memberships are on a second page).
-
-The page names are set by pages() which -returns an array of names.
-
-Example:
-
-The -ieee802Device -module needs only one page which is called 'attributes'.
-
- - - - - - -
    /**
-    * This function returns a list of all account pages -in this module.
-    */
-    function pages() {
-        return array('attributes');
-    }
-
-
-
-

3. Page display

-Now that you have defined your subpages you will need one function for -each page to display it. The function must return meta HTML code as defined in the modules specification.
-This function is called display_html_<page -name>() where <page -name> is the name of your subpage.
-
-Example:
-
-The -ieee802Device -module has only one subpage called 'attributes'.
-
-The first half of the code displays the existing MAC addresses and the -second an input field for new values.
-The variable $this->attributes -contains the LDAP attributes which are useful for this module.
-
- - - - - - -
    /**
-    * This function will create the meta HTML code to -show a page with all attributes.
-    *
-    * @param array $post HTTP-POST values
-    */
-    function display_html_attributes($post) {
-        $return = array();
-        // list current MACs
-        for ($i = 0; $i < -sizeof($this->attributes['macAddress']); $i++) {
-            $return[] = -array(
-            -    0 => array('kind' => 'text', 'text' => -_('MAC address')),
-            -    1 => array('kind' => 'input', 'name' => -'macAddress' . $i, 'type' => 'text', 'size' => '17', 'maxlength' -=> '17', 'value' => $this->attributes['macAddress'][$i]),
-            -    2 => array('kind' => 'input', 'type' => -'submit', 'name' => 'delMAC' . $i, 'value' => _("Remove")),
-            -    3 => array('kind' => 'help', 'value' => -'mac'));
-        }
-        // input box for new MAC
-        $return[] = array(
-            0 => -array('kind' => 'text', 'text' => _('New MAC address')),
-            1 => -array('kind' => 'input', 'name' => 'macAddress', 'type' => -'text', 'size' => '17', 'maxlength' => '17', 'value' => ''),
-            2 => -array('kind' => 'input', 'type' => 'submit', 'name' => -'addMAC', 'value' => _("Add")),
-            3 => -array('kind' => 'help', 'value' => 'mac'),
-            4 => -array('kind' => 'input', 'type' => 'hidden', 'value' => -sizeof($this->attributes['macAddress']), 'name' => 'mac_number'));
-        return $return;
-    }
-
-
-
-

4. Processing input data
-

-Every time the user clicks on a submit button while your page is -displayed LAM will call a function in your module.
-This function is called process_<page -name>() where <page -name> is the name of your subpage.
-
-Example:
-
-The -ieee802Device -module has only one subpage called 'attributes' -and therefore only process_attributes().
-
-The function checks the input fields and fills the LDAP attributes. If -all is ok it will enable the user to move to another module page.
-
- - - - - - -
    /**
-    * Write variables into object and do some regex -checks
-    *
-    * @param array $post HTTP-POST values
-    */
-    function process_attributes($post) {
-        $this->triggered_messages = -array();
-        -$this->attributes['macAddress'] = array();
-        // check old MACs
-        if (isset($post['mac_number'])) {
-            for ($i = 0; -$i < $post['mac_number']; $i++) {
-            -    if (isset($post['delMAC' . $i])) continue;
-            -    if (isset($post['macAddress' . $i]) && -($post['macAddress' . $i] != "")) {
-            -        // check if address has correct -format
-            -        if (!get_preg($post['macAddress' -. $i], 'macAddress')) {
-            -            $message = -$this->messages['mac'][0];
-            -            $message[] = -$post['macAddress' . $i];
-            -            -$this->triggered_messages[] = array($message);
-            -        }
-            -        -$this->attributes['macAddress'][] = $post['macAddress' . $i];
-            -    }
-            }
-        }
-        // check new MAC
-        if (isset($post['macAddress']) -&& ($post['macAddress'] != "")) {
-            // check if -address has correct format
-            if -(get_preg($post['macAddress'], 'macAddress')) {
-            -    $this->attributes['macAddress'][] = -$post['macAddress'];
-            }
-            else {
-            -        $message = -$this->messages['mac'][0];
-            -        $message[] = $post['macAddress'];
-            -        $this->triggered_messages[] = -array($message);
-            }
-        }
-        -$this->attributes['macAddress'] = -array_unique($this->attributes['macAddress']);
-        if -(sizeof($this->triggered_messages) > 0) {
-            -$this->inputCorrect = false;
-            return -$this->triggered_messages;
-        }
-        else {
-            -$this->inputCorrect = true;
-            return 0;
-        }
-    }
-
-
-
-

5. Defining that your module is ready for LDAP add/modify

-Before a new account can be created or modified all modules are asked -if they are ready.
-There are two functions which control the module status. The module_ready() function has to -return true if the user may -move to another module page. If it is false -the user will be redirected to your module page. The second function is -module_complete(). The user -cannot do the LDAP operation if one or modules return false.
-
-Example:
-
-The -ieee802Device -module uses a global variable to store the status: $this->inputCorrect. It is set -in process_attributes(). The -variable can be preset to true -because the MAC address is optional.
-
- - - - - - -
    /** used for -account pages, true if input data is correct */
-    var -$inputCorrect = true;
-
-    /**
-    * This function returns true if all needed settings -are done.
-    */
-    function module_complete() {
-        return $this->inputCorrect;
-    }
-   
-    /**
-    * Returns true if all settings on module page are -correct.
-    */
-    function module_ready() {
-        return $this->inputCorrect;
-    }
-
-
-
-

6. Saving the LDAP attributes
-

-When all modules report that they are ready for LDAP add/modify and the -user clicks on the add/modify button your module will be asked what -changes have to be made.
-This is done in the function save_attributes() -which must be implemented by your module.
-
-Example:
-
-The ieee802Device -module saves the attribute states in $attributes -and $orig and there are no -other DNs which may be modified. Therefore we can use the save_module_attributes() function in -accountContainer. You can -always access the current accountContainer -with $_SESSION[$this->base].
-
- - - - - - -
    /**
-    * Returns a list of modifications which have to be -made to the LDAP account.
-    *
-    * @return array list of modifications
-    * <br>This function returns an array with 3 -entries:
-    * <br>array( DN1 ('add' => array($attr), -'remove' => array($attr), 'modify' => array($attr)), DN2 .... )
-    * <br>DN is the DN to change. It may be -possible to change several DNs (e.g. create a new user and add him to -some groups via attribute memberUid)
-    * <br>"add" are attributes which have to be -added to LDAP entry
-    * <br>"remove" are attributes which have to be -removed from LDAP entry
-    * <br>"modify" are attributes which have to -been modified in LDAP entry
-    */
-    function save_attributes() {
-        return -$_SESSION[$this->base]->save_module_attributes($this->attributes, -$this->orig);
-    }
-
-
-
- -

-
-
- - diff --git a/lam/docs/devel/mod_basics.htm b/lam/docs/devel/mod_basics.htm deleted file mode 100644 index 31103809..00000000 --- a/lam/docs/devel/mod_basics.htm +++ /dev/null @@ -1,109 +0,0 @@ - - - - Module HowTo - Basic concepts - - - -
-

Module HowTo - Basic concepts
-

-
-
-

-

1. Licensing

-LAM is licensed under the GNU -General Public License. This means your plugins need a compatible -license.
-LAM is distributed with a copy of the GPL license.
-
-

2. Naming and position in directory structure

-
-Module names are usually named after the object class they manage. -However, you can use any name you want, it should be short and -containing only a-z and 0-9. The module name is only shown in the -configuration dialog, on all other pages LAM will show a provided alias name.
-All account modules are stored in lib/modules. -The filename must end with .inc -and the file must have the same name as its inside class.
-
-Example: -Our example module will provide the class -ieee802Device, -therefore the file will be called lib/modules/ieee802Device.inc.
-
-
-

3. Defining the class

-All module classes have baeModule -as parent class. This provides common functionality and dummy functions -for all required class functions.
-
-Example:
-
- - - - - - -
/**
-* Provides MAC addresses for hosts.
-*
-* @package modules
-*/
-class
ieee802Device - extends baseModule {
-
-}
-
-
-

4. Meta data

-The module interface inludes a lot of required and optional functions. -Many of these functions do not need to be implemented directly in the -module, you can define meta data -for them and the baseModule -will do the rest.
-Providing meta data is -optional, you can implement the required functions in your class, too.
-
-The baseModule reads the meta data by calling get_metaData() in your class.
-
-Example:
-
- - - - - - -
    /**
-    * Returns meta data that is interpreted by parent -class
-    *
-    * @return array array with meta data
-    */
-    function get_metaData() {
-        $return = array();
-        // manages host accounts
-        $return["account_types"] = -array("host");
-    }
-
-
-You will see this functions several times in the next parts of this -HowTo.
-
-

-
-
- - diff --git a/lam/docs/devel/mod_config.htm b/lam/docs/devel/mod_config.htm deleted file mode 100644 index 9aae47e0..00000000 --- a/lam/docs/devel/mod_config.htm +++ /dev/null @@ -1,253 +0,0 @@ - - - - Module HowTo - Configuration options - - - -
-

Module HowTo - Configuration options
-

-

-There might be situations where you want to give the user the -possibility to make general settings which are not useful to place on -the account detail pages or profile editor.
-Therefore LAM allows the modules to define their own configuration -options. E.g. the posixAccount -module uses this to define the ranges for the UIDs.
-LAM will display your configuration options only if the user also -selected your module.
-
-

-

1. Defining configuration options
-

-First you have to define what options you want to offer the user. LAM -will display all options in one fieldset for each module. Please notice -that there will be no separation on account types if you module is -suitable for different account types.
-
-The configuration options are specified with get_configOptions() -or meta['config_options'].
-
-Example:
-
-The posixGroup module offers -three configuration options. The min/maximum values for GIDs and the -password hash type.
-
- - - - - - -
    /**
-    * Returns meta data that is interpreted by parent -class
-    *
-    * @return array array with meta data
-    */
-    function -get_metaData() {
-        $return = array();
-        // configuration options
-        $return['config_options']['group'] = array(
-            array(
-               - 0 => array('kind' => 'text', 'text' => '<b>' . -_('Minimum GID number') . " *: </b>"),
-               - 1 => array('kind' => 'input', 'name' => -'posixGroup_minGID', 'type' => 'text', 'size' => '10', -'maxlength' => '255'),
-               - 2 => array('kind' => 'text', 'value' => '&nbsp;'),
-               - 3 => array('kind' => 'text', 'text' => '<b>' . -_('Maximum GID number') . " *: </b>"),
-               - 4 => array('kind' => 'input', 'name' => -'posixGroup_maxGID', 'type' => 'text', 'size' => '10', -'maxlength' => '255'),
-               - 5 => array('kind' => 'help', 'value' => 'minMaxGID')),
-            array(
-               - 0 => array('kind' => 'text', 'text' => '<b>' . -_("Password hash type") . ': &nbsp;</b>'),
-               - 1 => array('kind' => 'select', 'name' => -'posixGroup_pwdHash', 'size' => '1',
-               - 'options' => array("CRYPT", "SHA", "SSHA", "MD5", "SMD5", -"PLAIN"), 'options_selected' => array('SSHA')),
-               - 2 => array('kind' => 'text', 'value' => '&nbsp;'),
-               - 3 => array('kind' => 'text', 'value' => '&nbsp;'),
-               - 4 => array('kind' => 'text', 'value' => '&nbsp;'),
-               - 5 => array('kind' => 'help', 'value' => 'pwdHash'))
-        );
-        [...]
-
-
-The min/maximum GID numbers are defined with simple text boxes. The -password hash is selected with a drop down box and SSHA as default -value.
-You should make sure that the column count (here: 6) is the same for -each row. Otherwise the configuration page might be badly rendered by -the browser.
-
-

2. Checking user input

-Probably you also want to check if the input data is syntactically -correct.
-The baseModule already -provides different checks which can be activated with meta data. However you can also do -the checking in the module.
-Implementing the function check_configOptions() -in your module will allow you to do the checks yourself. Basic checks -can be defined with meta['config_checks'].
-
-Example:
-
-The posixGroup module only -needs to check if the GID numbers are correct. The password hash type -needs not to be checked as it is a selection.
-
- - - - - - -
    /**
-    * Returns meta data that is interpreted by parent -class
-    *
-    * @return array array with meta data
-    */
-    function -get_metaData() {
-        $return = array();
-        // configuration checks
-        $return['config_checks']['group']['posixGroup_minGID'] = -array (
-            'type' => -'ext_preg',
-            'regex' => -'digit',
-            'required' -=> true,
-           - 'required_message' => $this->messages['gidNumber'][5],
-           - 'error_message' => $this->messages['gidNumber'][5]);
-        $return['config_checks']['group']['posixGroup_maxGID'] = -array (
-            'type' => -'ext_preg',
-            'regex' => -'digit',
-            'required' -=> true,
-           - 'required_message' => $this->messages['gidNumber'][6],
-           - 'error_message' => $this->messages['gidNumber'][6]);
-        $return['config_checks']['group']['cmpGID'] = array (
-            'type' => -'int_greater',
-            'cmp_name1' -=> 'posixGroup_maxGID',
-            'cmp_name2' -=> 'posixGroup_minGID',
-           - 'error_message' => $this->messages['gidNumber'][7]);
-        [...]
-
-
-The type "ext_preg" means that -the baseModule will use the get_preg() function in lib/account.inc for the syntax -check. This function already contains regular expressions for the most -common cases.
-To check if the minimum GID is smaller than the maximum GID we define a -check for the nonexistant option "cmpGID" and define it as optional. -This will do the comparison check.
-
-
-

3. Descriptions

-What is still missing is a descriptive title for the fieldset in the -configuration editor and a description for each configuration option -which is displayed when the user saves the settings.
-
-These descriptions are defined with get_configDescriptions() -or meta['config_descriptions'].
-
-Example:
-
-The posixGroup module will -set a title for the fieldset and a description for the three -configuration options.
-
- - - - - - -
    /**
-    * Returns meta data that is interpreted by parent -class
-    *
-    * @return array array with meta data
-    */
-    function -get_metaData() {
-        $return = array();
-        // configuration descriptions
-        $return['config_descriptions'] = array(
-            'legend' => -_("GID ranges for Unix groups"),
-            'descriptions' -=> array(
-               - 'posixGroup_minGID' => _("Minimum GID number for Unix groups"),
-               - 'posixGroup_maxGID' => _("Maximum GID number for Unix groups"),
-               - 'posixGroup_pwdHash' => _("Password hash type for Unix -groups"),
-            )
-        );
-        [...]
-
-
-This will set the fieldset title to "GID ranges for Unix groups" and -the descriptions for the settings list.
- -

-
-
- - diff --git a/lam/docs/devel/mod_general.htm b/lam/docs/devel/mod_general.htm deleted file mode 100644 index 3e108b68..00000000 --- a/lam/docs/devel/mod_general.htm +++ /dev/null @@ -1,242 +0,0 @@ - - - - Module HowTo - General module options - - - -
-

Module HowTo - General module options
-

-
-
-

-

1. Account types
-

-LAM currently provides three account types: users, groups, hosts
-
A module can manage one or more account types.
-
-The types are specified with can_manage() -or meta['account_types'].
-
-Example:
-
-Our ieee802Device -module will be used only for host accounts.
-
- - - - - - -
    /**
-    * Returns meta data that is interpreted by parent -class
-    *
-    * @return array array with meta data
-    */
-    function -get_metaData() {
-        $return = array();
-        // manages host accounts
-     -    $return["account_types"] = array("host");
-        return $return;
-    }
-
-
-
-

2. Base modules
-

-In LDAP every entry needs exactly one structural -object class. Therefore all modules which provide a structural object class are marked -as base module.
-
-This is done with is_base_module() -or meta['is_base'].
-
-Example:
-
-The inetOrgPerson -module manages the structural object class "inetOrgPerson" and -therefore is a base module.
-If your module is not a base module you can skip the meta data for -this, default is false.
-
- - - - - - -
    /**
-    * Returns meta data that is interpreted by parent -class
-    *
-    * @return array array with meta data
-    */
-    function -get_metaData() {
-        $return = array();
-        // base module
-     -    $return["is_base"] = true;
-        return $return;
-    }
-
-
-
-

3. Alias name

-The module name is very limited, therefore every module has an alias name. This alias name has no limitations and -can be translated. It may contain special characters but make sure that -it does not contain HTML special characters like "<".
-The alias name can be the -same for all managed account types -or differ for each type.
-
-The alias name is specified -with get_alias() -or meta['alias'].
-
-Example:
-
-Our ieee802Device -module will get the alias MAC address.
-
- - - - - - -
    /**
-    * Returns meta data that is interpreted by parent -class
-    *
-    * @return array array with meta data
-    */
-    function -get_metaData() {
-        $return = array();
-        // manages host accounts
-     -    $return["account_types"] = array("host");
-        // alias name
-     -    $return["alias"] = _("MAC address");
-        return $return;
-    }
-
-
-
-

4. Dependencies

-Modules can depend on eachother. This is useful if you need to access -attributes from other modules or the managed object classes of your -module are not structural.
-
-The dependencies are specified with get_dependencies() -or meta['dependencies'].
-
-Example:
-
-Our ieee802Device -module depends on the account module (because it is the only structural -module at this time).
-
- - - - - - -
    /**
-    * Returns meta data that is interpreted by parent -class
-    *
-    * @return array array with meta data
-    */
-    function -get_metaData() {
-        $return = array();
-        // manages host accounts
-     -    $return["account_types"] = array("host");
-        // alias name
-        $return["alias"] = _("MAC -address");
-        // module dependencies
-     -    $return['dependencies'] = array('depends' => -array('account'), 'conflicts' => array());
-        return $return;
-    }
-
-
-
-

5. Messages

-There are many situations where you will display messages to the user. -The modules should define such messages at a common place to make it -easier to modify them without searching the complete file.
-The baseModule offers the $messages variable for this. It -should be filled by a function called load_Messages().
-The baseModule will -automatically check if you have implemented this function and call it -at construction time.
-
-Example:
-
-Now let our ieee802Device -module define a message.
-
- - - - - - -
    /**
-    * This function fills the error message array with -messages
-    */
-    function load_Messages() {
-        $this->messages['mac'][0] = -array('ERROR', 'MAC address is invalid!');  // third array value -is set dynamically
-    }
-
-
-
-


-

-

-
-
- -

-
-
- - diff --git a/lam/docs/devel/mod_help.htm b/lam/docs/devel/mod_help.htm deleted file mode 100644 index 42efc69f..00000000 --- a/lam/docs/devel/mod_help.htm +++ /dev/null @@ -1,88 +0,0 @@ - - - - Module HowTo - Help entries - - - -
-

Module HowTo - Help entries
-

-
-
-

-

1. Defining help entries
-

-Your module should provide help for all input fields and other -important things.
-The LAM help system defines an extra ID range for each module. So you -are free in defining your own IDs.
-
-The help entries are specified with get_help() -or meta['help'].
-
-Example:
-
-The ieee802Device -module needs help entries for the MAC address.
-
- - - - - - -
    /**
-    * Returns meta data that is interpreted by parent -class
-    *
-    * @return array array with meta data
-    */
-    function -get_metaData() {
-        $return = array();
-    -     // help Entries
-     -    $return['help'] = array(
-     -        'mac' => array(
-     -            "Headline" -=> _("MAC address"),
-     -            "Text" => -_("This is the MAC address of the network card of the device (e.g. -00:01:02:DE:EF:18).")
-     -        ),
-     -        'macList' => array(
-     -            "Headline" -=> _("MAC address list"),
-     -            "Text" => -_("This is a comma separated list of MAC addresses.")
-     -        ));
-        return $return;
-    }
-
-
-
- -

-
-
- - diff --git a/lam/docs/devel/mod_index.htm b/lam/docs/devel/mod_index.htm deleted file mode 100644 index 4d6d0fd4..00000000 --- a/lam/docs/devel/mod_index.htm +++ /dev/null @@ -1,58 +0,0 @@ - - - - LAM module HowTo - - - -
-

Module HowTo

-
-
-
-

Basic functions

-
-
-
LAM can be easily extended to support -additional LDAP object classes and attributes.
-This document provides a step-by-step description to build an account -module. The ieee802Device -module which provides MAC addresses for hosts is used as example.
-
-

1. Basic concepts
-

-
-

2. General module options

-
-

3. Account pages

-
-

4. Help entries
-

-
-

5. PDF output
-

-
-

6. File upload

-
-
-
-

-
-

Advanced functions

-This part covers additional functionality of the modules which are only -needed by a minority of modules. The examples are taken from different -existing modules.
-
-

1. Account profiles

-
-

2. Configuration options

-
-

3. Advanced upload options

-
-

4. Defining the RDN

-
-
-
-
- - diff --git a/lam/docs/devel/mod_pdf.htm b/lam/docs/devel/mod_pdf.htm deleted file mode 100644 index 5f2e5d0a..00000000 --- a/lam/docs/devel/mod_pdf.htm +++ /dev/null @@ -1,106 +0,0 @@ - - - - Module HowTo - PDF output - - - -
-

Module HowTo - PDF output
-

-
-
-

-

1. Defining possible PDF values
-

-The first step to PDF output is defining what values your module -provides. This is needed for the PDF editor, otherwise the user will -not be able to select values from your module.
-
-The PDF values are specified with get_pdfFields() -or meta['PDF_fields'].
-
-Example:
-
-The ieee802Device -module has only one attribute and therefore one PDF value: the MAC -address.
-
- - - - - - -
    /**
-    * Returns meta data that is interpreted by parent -class
-    *
-    * @return array array with meta data
-    */
-    function -get_metaData() {
-        $return = array();
-[...]
-        // available PDF fields
-     -    $return['PDF_fields'] = array(
-     -        'macAddress'
-     -    );
-        return $return;
-    }
-
-
-
-
-

2. Providing data to put into the PDF file
-

-When the user wants to create a PDF file the LDAP account is loaded and -you module is asked for data to put into the PDF file.
-
-This is done with get_pdfEntries().
-
-Example:
-
-The ieee802Device -module will return the MAC address list of the account.
-
- - - - - - -
    /**
-    * Returns a list of PDF entries
-    */
-    function get_pdfEntries() {
-        $return = array();
-        if -(sizeof($this->attributes['macAddress']) > 0) {
-            -$return['ieee802Device_macAddress'] = '<block><key>' . -_('MAC address list') . '</key><value>' . implode(', ', -$this->attributes['macAddress']) . '</value></block>';
-        }
-        return $return;
-    }
-
-
-
-
-
- -

-
-
- - diff --git a/lam/docs/devel/mod_profiles.htm b/lam/docs/devel/mod_profiles.htm deleted file mode 100644 index 7d394fcf..00000000 --- a/lam/docs/devel/mod_profiles.htm +++ /dev/null @@ -1,208 +0,0 @@ - - - - Module HowTo - Account profiles - - - -
-

Module HowTo - Account profiles
-

-

-Account profiles make it easy to set default values for new accounts -and even to reset an existing account to default values.
-Your module should provide the possibility to define default values for -all attributes which do not differ for each account.
-
-

-

1. Defining possible profile options
-

-The first step to account profiles is defining the attributes for which -the user can set default values. You will also have to define the type -(text, checkbox, ...) of the profile options.
-The profile editor then will display a fieldset for each module -containing its profile options.
-
-The profile options are specified with get_profileOptions() -or meta['profile_options'].
-
-Example:
-
-The inetOrgPerson -module has only two attributes which may be set to a default value: job -title and employee type.
-The other attributes are account specific and not useful as profile -options.
-
- - - - - - -
    /**
-    * Returns meta data that is interpreted by parent -class
-    *
-    * @return array array with meta data
-    */
-    function -get_metaData() {
-        $return = array();
-        // profile elements
-        $return['profile_options'] = array(
-            array(
-            -    0 => array('kind' => 'text', 'text' => -_('Job title') . ":"),
-            -    1 => array('kind' => 'input', 'name' => -'inetOrgPerson_title', 'type' => 'text', 'size' => '30', -'maxlength' => '255'),
-            -    2 => array('kind' => 'help', 'value' => -'title')),
-            array(
-            -    0 => array('kind' => 'text', 'text' => -_('Employee type') . ":"),
-            -    1 => array('kind' => 'input', 'name' => -'inetOrgPerson_employeeType', 'type' => 'text', 'size' => '30', -'maxlength' => '255'),
-            -    2 => array('kind' => 'help', 'value' => -'employeeType'))
-        );
-        [...]
-
-
-This defines two text boxes in the profile editor, one for the job -title and one for the employee type.
-Your profile options should also provide a help link if the description -of the input element might be not enough.
-
-
-

2. Checking user input

-Probably you also want to check if the input data is syntactically -correct.
-The baseModule already -provides different checks which can be activated with meta data. However you can also do -the checking in the module.
-Implementing the function check_profileOptions() -in your module will allow you to do the checks yourself. Basic checks -can be defined with meta['profile_checks'].
-
-Example:
-
-The inetOrgPerson module only -needs some regular expression checks on the input. This can be done by -the baseModule.
-
- - - - - - -
    /**
-    * Returns meta data that is interpreted by parent -class
-    *
-    * @return array array with meta data
-    */
-    function -get_metaData() {
-        $return = array();
-        // profile checks
-        $return['profile_checks']['inetOrgPerson_title'] = array(
-            'type' => -'ext_preg',
-            'regex' => -'title',
-           - 'error_message' => $this->messages['title'][0]);
-        $return['profile_checks']['inetOrgPerson_employeeType'] = -array(
-            'type' => -'ext_preg',
-            'regex' => -'employeeType',
-           - 'error_message' => $this->messages['employeeType'][0]);
-        [...]
-
-
-The type "ext_preg" means that -the baseModule will use the get_preg() function in lib/account.inc for the syntax -check. This function already contains regular expressions for the most -common cases.
-
-
-

3. Loading an account profile

-When an account profile is loaded the modules have to check what values -they need for their internal data structures.
-The baseModule already -provides the possibility to store profile values directly as LDAP -attributes in $this->attributes. -This is done by defining profile-attribute mappings in meta['profile_mappings'].
-If you have other values than LDAP attributes or need some post -processing you can implement the function load_profile() in your module.
-
-Example:
-
-The inetLocalMailRecipient -module only -needs a static mapping. This can be done by -the baseModule.
-
- - - - - - -
    /**
-    * Returns meta data that is interpreted by parent -class
-    *
-    * @return array array with meta data
-    */
-    function -get_metaData() {
-        $return = array();
-        // profile mappings
-        $return['profile_mappings'] = array(
-           - 'inetLocalMailRecipient_host' => 'mailHost'
-        );
-        [...]
-
-
-In this example the profile option "inetLocalMailRecipient_host" is -stored as LDAP attribute "mailHost".
-
-
- -

-
-
- - diff --git a/lam/docs/devel/mod_rdn.htm b/lam/docs/devel/mod_rdn.htm deleted file mode 100644 index e5986e8e..00000000 --- a/lam/docs/devel/mod_rdn.htm +++ /dev/null @@ -1,59 +0,0 @@ - - - - Module HowTo - Defining the RDN - - - -
-

Module HowTo - Defining the RDN
-

-

-Every LDAP DN starts with a RDN (relative DN). This is the value of a -LDAP attribute. Users usually use "uid", groups use "cn".
-You can provide a list of suitable RDN attributes for your module and -give them a priority, too.
-
-
-
You will need to implement the function get_RDNAttributes() or use meta['RDN'].
-
-Example:
-
-The posixAccount module -offers to create accounts with DNs uid=foo,dc=.... and cn=foo,dc=...
-The uid attribute has a higher priority as it is the usual attribute -for Unix accounts.
-
- - - - - - -
    /**
-    * Returns meta data that is interpreted by parent -class
-    *
-    * @return array array with meta data
-    */
-    function -get_metaData() {
-        $return = array();
-        // RDN attributes
-        $return["RDN"] = array("uid" -=> "normal", "cn" => "low");
-        [...]
-
-
-
-
- -

-
-
- - diff --git a/lam/docs/devel/mod_upload.htm b/lam/docs/devel/mod_upload.htm deleted file mode 100644 index deb85f36..00000000 --- a/lam/docs/devel/mod_upload.htm +++ /dev/null @@ -1,171 +0,0 @@ - - - - Module HowTo - File upload - - - -
-

Module HowTo - File upload
-

-
-
-

-

1. Defining upload columns
-

-If you want to support account creation via file upload you have to -define columns in the CSV file.
-Each column has an non-translated identifier, a description, help entry -and several other values.
-
-The upload columns are specified with get_uploadColumns() -or meta['upload_columns'].
-
-Example:
-
-The ieee802Device -module has only one attribute and therefore one column: the MAC address.
-
- - - - - - -
    /**
-    * Returns meta data that is interpreted by parent -class
-    *
-    * @return array array with meta data
-    */
-    function -get_metaData() {
-        $return = array();
-        // manages host accounts
-    -    $return["account_types"] = array("host");
-        // upload fields
-     -    $return['upload_columns'] = array(
-     -        array(
-     -            'name' => -'ieee802Device_mac',
-     -            'description' -=> _('MAC address'),
-     -            'help' => -'mac',
-     -            'example' -=> '00:01:02:DE:EF:18'
-     -        )
-      -   );
-        return $return;
-    }
-
-
-
-

2. Building the accounts
-

-When the user has uploaded the CSV file the modules have to transform -the input data to LDAP accounts.
-
-This is done with build_uploadAccounts(). -The function gets the input data and a list of LDAP accounts as -parameter.
-
-Example:
-
-The ieee802Device -module has only one LDAP attribute - 'macAddress' -- and the 'ieee802Device' -objectClass which is added to all accounts.
-
- - - - - - -
    /**
-    * In this function the LDAP account is built up.
-    *
-    * @param array $rawAccounts list of hash arrays -(name => value) from user input
-    * @param array $partialAccounts list of hash arrays -(name => value) which are later added to LDAP
-    * @param array $ids list of IDs for column position -(e.g. "posixAccount_uid" => 5)
-    * @return array list of error messages if any
-    */
-    function build_uploadAccounts($rawAccounts, -$ids, &$partialAccounts) {
-        $messages = array();
-        for ($i = 0; $i < -sizeof($rawAccounts); $i++) {
-            // add object -class
-            if -(!in_array("ieee802Device", $partialAccounts[$i]['objectClass'])) -$partialAccounts[$i]['objectClass'][] = "ieee802Device";
-            // add MACs
-            if -($rawAccounts[$i][$ids['ieee802Device_mac']] != "") {
-            -    $macs = explode(',', -$rawAccounts[$i][$ids['ieee802Device_mac']]);
-            -    // check format
-            -    for ($m = 0; $m < sizeof($macs); $m++) {
-            -        if (get_preg($macs[$m], -'macAddress')) {
-            -            -$partialAccounts[$i]['macAddress'][] = $macs[$m];
-            -        }
-            -        else {
-            -            $errMsg = -$this->messages['mac'][1];
-            -            -array_push($errMsg, array($i));
-            -            $messages[] = -$errMsg;
-            -        }
-            -    }
-            }
-        }
-        return $messages;
-    }
-
-
-
-
-
- -

-
-
- - diff --git a/lam/docs/devel/mod_upload2.htm b/lam/docs/devel/mod_upload2.htm deleted file mode 100644 index 6e253c6a..00000000 --- a/lam/docs/devel/mod_upload2.htm +++ /dev/null @@ -1,122 +0,0 @@ - - - - Module HowTo - Advanced upload options - - - -
-

Module HowTo - Advanced upload options
-

-

-The ieee802Device module only -needs the basic upload functions for its functionality.
-However there are more possibilities for the modules to control the -file upload.
-
-

-

1. Module order
-

-Your module might depend on the input values of another module. In this -case you probably want that your module is called as the second one.
-
-You can define dependencies to other modules with the function get_uploadPreDepends() or meta['upload_preDepends'].
-
-Example:
-
-The sambaGroupMapping module -needs the group name to set the default displayName. Therefore it depends -on the posixGroup module
-
- - - - - - -
    /**
-    * Returns meta data that is interpreted by parent -class
-    *
-    * @return array array with meta data
-    */
-    function -get_metaData() {
-        $return = array();
-        // upload dependencies
-        $return['upload_preDepends'] = -array('posixGroup');
-        [...]
-
-
-
-

2. Upload post actions
-

-If your module does not only create an account but relates the account -with other existing LDAP entries you can do these modifications after -the account was created.
-This is useful for adding users to groups or setting quotas.
-
-You have to implement the function doUploadPostActions() -in your module. Since post actions are very special there is no meta data for this.
-
-Example:
-
-The posixAccount module -offers to put the user account in additional groups. This is done in -the post actions.
-
- - - - - - -
    /**
-    * This function executes one post upload action.
-    *
-    * @param array $data array containing one account in -each element
-    * @param array $ids array(<column_name> => -<column number>)
-    * @param array $failed list of accounts which were -not created successfully
-    * @param array $temp variable to store temporary -data between two post actions
-    * @return array current status
-    * <br> array (
-    * <br>  'status' => 'finished' | -'inProgress'
-    * <br>  'progress' => 0..100
-    * <br>  'errors' => array (<array -of parameters for StatusMessage>)
-    * <br> )
-    */
-    function doUploadPostActions($data, $ids, -$failed, &$temp) {
-         [...]
-    }
-
-
-Please make sure that the actions in one call of doUploadPostActions() are not very -time consuming (only one LDAP operation). Your function will be called -repeatedly until you give back the status "finished".
-This allows LAM to avoid running longer than the maximum execution time -by sending meta refreshes to the browser.
- -

-
-
- - diff --git a/lam/docs/devel/modules-specification.htm b/lam/docs/devel/modules-specification.htm deleted file mode 100644 index 2c5bdc82..00000000 --- a/lam/docs/devel/modules-specification.htm +++ /dev/null @@ -1,1348 +0,0 @@ - - - - - Module specification - - - -

This document describes the module -interface for LDAP Account Manager

-
-
-

1. Location and naming of modules

-All LAM modules are placed in lib/modules/ and are named "<class -name>.inc".
-E.g. if you create a new module and its class name is "qmail" then the -filename would be "qmail.inc".
-
-The class name of a module must contain only a-z, A-Z, 0-9, -, and _.
-All module classes should extend the baseModule class.
-
-

2. Class functions

-

2.1. Functions that have to work without superior accountContainer
-

-


-

-

2.1.1. can_manage*

-
- - - - - - -
function can_manage()
-
-
-Returns true if this module -can manage accounts of the current type, -otherwise false.
-
-
-

2.1.2. get_alias*

-
- - - - - - -
function get_alias()
-
-
-This function returns a more descriptive string than the class name. -Alias names are used for the buttons of the account pages and the -module selection of the configuration wizard.
-Please take care that your alias name is not too long. It may contain -any character but should not include parts that may be interpreted by -the browser (e.g. '<' or '>').
-If you use different aliases dependent on the account type please make -sure that there is a general alias for unknown types.
-
-

2.1.3. is_base_module*

-
- - - - - - -
function is_base_module()
-
-
-Returns true if your module is -a base module and otherwise false.
-
-Every account type needs exactly one base module. A base module manages -a structural object class.
-E.g. the inetOrgPerson module is a base module since its object class -is structural.
-
-

2.1.4. get_ldap_filter*

-
- - - - - - -
function get_ldap_filter()
-
-
-Returns an array('or' => '...', 'and' => '...') that is used to -build the LDAP filter. Usually -used to filter object classes.
-
-All "or" filter parts of the base modules are combined with OR and then -combined with the "and" parts.
-The resulting LDAP filter will look like this: -(&(|(OR1)(OR2)(OR3))(AND1)(AND2)(AND3))
-
-Example: return "('or' => -'(objectClass=posixAccount)', 'and' => '(!(uid=*$))')"
-
-

2.1.5. get_RDNAttributes*

-
- - - - - - -
function get_RDNAttributes()
-
-
-Returns a hash array containing a list of possible LDAP attributes that -can be used to form the RDN (Relative Distinguished Name).
-
-The keys of the array are the LDAP attributes, the values are the -priority ("low"/"normal"/"high").
-Attributes with higher priority are placed higher in the drop down box -for the RDN selection.
-
-Example: return "('uid' => -'normal', 'cn' => 'low')"
-
-
-

2.1.6. get_dependencies*

-
- - - - - - -
function -get_dependencies()
-
-
-This function returns a list of modules it depends on.
-
-The return value is an array with two sub arrays, "depends" and "conficts".
-All values of the conflict array are string values with module names.
-All values of the depends array are either string values with module -names or arrays which include only string values with module names. If -an element of the depends array is itself an array, this means that -your module depends on one of these modules.
-
-Example: return array("depends" -=> array("posixAccount", array("qmail", "sendmail")), "conflicts" -=> array("exim"));
-
-

2.1.7. get_metaData()

-
- - - - - - -
function get_metaData()
-
-
-Returns an hash array including meta data for the baseModule.
-
-Example: return array("is_base" => -true);
-
-

2.1.8. get_configOptions()*

-
- - - - - - -
function get_configOptions($scopes)
-
-
-Returns a list of configuration options.
-$scopes is a list of account types (user, group, host) -which are used.
-
-The return value is an array -that contains meta HTML code.
-
-The type "fieldset" is not allowed here.
-The name attributes are used -as keywords to load and save settings. We recommend to use the module -name as prefix for them (e.g. posixAccount_homeDirectory) to avoid -naming confilcts.
-
-

2.1.9. get_configDescriptions()*

-
- - - - - - -
function get_configDescriptions()
-
-
-Returns the description of every configuration option and the legend of -the module fieldset on the configuration page.
-
-The return value is a hash -array with this format:
-   
-    array( 'legend' -=> 'Some general description for fieldset',
-       -       'descriptions' => array('option1' -=> 'description1', ...))
-
-

2.1.10. check_configOptions*

-
- - - - - - -
function check_configOptions($scopes, -$options)
-
-
-This function checks the input for module configuration settings.
-
-$scopes is a list of used -account types (user, group, host).
-$options -is an hash array -(option name => value) that contains the input. The option values -are all arrays containing one or more elements.
-If the input data is invalid the return value is an array that contains -arrays to build StatusMessages (0 => message type, 1 => message -head, 2 => message text, 3 => additional variables).
-If no errors occured the function returns an empty array.
-
- -

2.1.11. get_scope()

-
- - - - - - -
function get_scope()
-
-
-Returns the account type (user/group/host) of this module object.
-
-This function is provided by the -baseModule and should not be overwritten.
-
-

2.1.12. get_uploadColumns*

-
- - - - - - -
function get_uploadColumns()
-
-
-Returns a list of column entries for the upload .csv-file.
-Each column entry is an array containing these values:
-
    -
  • string -name: fixed non-translated name which is used as column name -(should be of format: <module name>_<column name>)
  • -
  • string -description: short descriptive name
  • -
  • string -help: help ID
  • -
  • string -example: example value
  • -
  • string -values: possible input values (optional)
  • -
  • string default: default value (optional)
    -
  • -
  • boolean -required: true, if user must set a value for this column (optional, default: -"false")
    -
  • -
  • boolean -unique: true if -all values of this column must be different values (optional, default: -"false")
    -
  • -
-
-

2.1.13. get_uploadPreDepends*

-
- - - - - - -
function get_uploadPreDepends()
-
-
-Returns a list of module names which must be processed before this -module at builing accounts.
-The named modules may not be active, LAM will check this automatically.
-
-

2.1.14. build_uploadAccounts

-
- - - - - - -
function get_uploadAccounts($rawAccounts, -$ids, $partialAccounts)
-
-
-This function takes the user input and generates the LDAP accounts.
-
-array -$rawAccounts: The user input data, contains one sub array for -each account.
-array -$ids: Maps the column names to keys for the sub arrays.
-array -$partialAccounts: Containing one sub array for each account, -format is the same as used for ldap_add().
-
-Returns an array which contains sub arrays to generate StatusMessages -if any errors occured.
-
-

2.1.15. do_uploadPostActions

-
- - - - - - -
function do_uploadPostActions($data, $ids, -$failed, &$temp)
-
-
-This function is responsible to do additional tasks after the account -has been created in LDAP.
-E.g. modifying group memberships, adding Quota etc..
-
-This function is called as long as the returned status is 'finished'. Please make sure that -one function call lasts no longer than 3-4 seconds. Otherwise the -upload may fail because the time limit is exceeded. You should not make -more than one LDAP operation in each call.
-
-array -$data: The user input data, contains one sub array for each -account.
-array -$ids: Maps the column names to keys for the sub arrays.
-array -$failed: List of account numbers which could not be successfully -uploaded to LDAP.
-array -&$temp: Pointer to temporary variable which can be used to -save information between two function calls.
-
-return array (
-    'status' => -'finished' | 'inProgress'   // Defines if all -operations are complete
-    'progress' => -0..100   // The progress of the operations in percent
-    'errors' => -array()   // List of arrays which are used to generate -StatusMessages
-    )
-
-

2.1.16. get_profileOptions*

-
- - - - - - -
function get_profileOptions()
-
-
-This function defines what attributes will be used in the account -profiles and their appearance in the profile editor.
-
-The return value is an array -that contains meta HTML code.
-
-The type "fieldset" is not allowed here.
-The name attributes are used -as keywords to load and save profiles. We recommend to use the module -name as prefix for them (e.g. posixAccount_homeDirectory) to avoid -naming confilcts.
-
-

2.1.17. check_profileOptions*

-
- - - - - - -
function check_profileOptions($options)
-
-
-This function checks the input for a new or modified account profile.
-
-$options -is an hash array -(option name => value) that contains the input. The option values -are all arrays containing one or more elements.
-If the input data is invalid the return value is an array that contains -arrays to build StatusMessages (0 => message type, 1 => message -head, 2 => message text, 3 => additional variables).
-If no errors occured the function returns an empty array.
-
-

2.1.18. load_profile*

-
- - - - - - -
function load_profile($profile)
-
-
-This function loads the values from an account profile to the module's -internal data structures.
-
-$profile -is an hash array (identifier => array(values))  with all values -of an account profile.
-
-


-

-
-
-

2.2. Functions which are called inside of an account container
-

-

2.2.1. init

-
- - - - - - -
function init($base)
-
-
-Every module needs a initializing function that has an account -container as argument $base.
-With this account container you can interact with other modules and use -several helper functions.
-
-

2.2.2. module_ready

-
- - - - - - -
function module_ready()
-
-
-Your module might depend on input of other modules. This function -determines if the module button on the account page is active or not.
-The return value is true if -your module accepts input, otherwise false.
-
-

2.2.3. module_complete

-
- - - - - - -
function module_complete()
-
-
-This function is called after your module has processed the POST input -data.
-If there was an input error and you want to display a page again then -return false. If true is returned the next module -page will be displayed.
-
-

2.2.4. get_help

-
- - - - - - -
function get_help($helpID)
-
-
-This function is called when a page requests a help topic from this -module.
-$helpID is the help identifier; -it must only contain a-z, A-Z, 0-9 --, . and _.
-It must return the help entry as array for the submitted help -identifier. The format of the array to be returned is described in -section 4. "Help entry syntax".
-
-

2.2.7. get_pdfEntries

-
- - - - - - -
function get_PDF_Entries()
-
-
-This function is called when a PDF is to be created.
-It returns the fields which are printed in the PDF file for the -specified account type. At the monent there is no (easy) possibility -for the user to decide which fields are to be displayed. Perhaps there -will be a PDF config tool in future releases where you can offer the -user to decide which fields are to be displayed on the PDF file. The -format of the array to be returned is described in section 5. "PDF -syntax".
-
-

2.2.8. dynamic_Message
-

-
- - - - - - -
function dynamic_Message($attribute, $id)
-
-
-This function is only needed when a status message contains strings -with variables.
-$attribute is the attribute the -message is corresponding to.
-$id selects the exact message.
-
-Returnis an array as expected from StatusMessage().
-
-

2.2.9. load_Messages
-

-
- - - - - - -
function load_Messages()
-
-
-This function is fills the array $this->messages. First Index (x) is -the attribute the message is corresponding to.
-Second Index (y) selects the exact message. Third Index (z) contains an -array as expected from StatusMessage().
-$this->messages[x][y][z]
-
-

2.2.10. load_attributes
-

-
- - - - - - -
function load_attributes($attr)
-
-
-This function loads attributes when an account should be loaded.
-$attr is an array like the -array returned by get_ldap_attributes(dn of account) but without count -indicees.
-If all attributes are very simple are part of the dn of account it's -possible to just call $this->load_ldap_attributes($attr)
-which is part of baseModule.
-The function load_ldap_attributes loads all attributes which fit to the -objectClass of the module.
-This function has t be expanded when attributes have to be loaded from -a different DN or handled completly
-separat.
-
-

2.2.11. save_attributes
-

-
- - - - - - -
function save_attributes()
-
-
-This function returns an array with changes which should be saved. If -all attributes are very simple are part of
-the dn of account it's possible to just call -$this->save_ldap_attributes($this->attributes, $this->orig).
-The return array has the following syntax: First index is the ldap dn -which should be changed. Second
-index is the kind of modification. Possible values are: 'add', -'modify', 'notchanged', 'remove'.
-Third index is the attribute which should be changes. Fourth index is -an array with all values of
-an attribute.
-If you want to call lamdaemon -first index is 'lamdaemon'. Second index is 'command'. Third index is -the command
-itself which should be executed by lamdaemon.
-
-

2.2.12. delete_attributes
-

-
- - - - - - -
function delete_attributes($post)
-
-
-This function returns an array with the same syntax as -save_attributes().
-$post is the $_POST array. It -is needed t interact with the user.
-
-
-

2.2.13. process_attributes
-

-
- - - - - - -
function process_attributes($post)
-
-
-This function processes user inputs. It checks user inputs. It also -saves changes in attributes.
-$post is the $_POST -array.  Some attributes ar not part of a profile, e.g. uidNumber. -If $profile
-is true attributes wich are not part of a profile won't be checked.
-LDAP attributes have to be stored in $this->attributes array. First -index is the attribute name. Second
-index is an array of values of an attribute.
-This functions can return three different variables. When 0 is returned -everything is ok. When a string is
-returned the string is the name of a subpage of the module. If it -returns an array the array contains status
-messages. First Index is the attribute which has triggered a message. -Second index is an array containing
-status message arrays.
-This function must reset $this->triggered_messages when it wants to -display -status messages. This can be done with $this->triggered_messages = -array();
-
-
-
-

2.2.14. process_*
-

-
- - - - - - -
function process_*($post)
-
-
-This function has the exact behavoir like process_attributes function. -* is the name of the subpage which
-should be processed.
-$post is the $_POST array. It -is needed t interact with the user.
-
-
-

2.2.15. display_html_attributes($post)
-

-
- - - - - - -
function display_html_attributes($post)
-
-
-This function creates meta HTML code. The code is the page the module -wants to display.
-Return is an array of meta HTML code.
-$post is the $_POST array. It -is needed t interact with the user.
-
-
-

2.2.16. display_html_*($post)
-

-
- - - - - - -
function display_html_*($post)
-
-
-This function has the exact behavoir like display_html_attributes(). * -is the name of the subpage which
-should be displayed.
-$post is the $_POST array. It -is needed t interact with the user.
-
-
-
-

2.2.17. display_html_delete($post)
-

-
- - - - - - -
function display_html_delete($post)
-
-
-This function creates meta HTML code. The code will be displayed when -an account should be deleted.
-This is needed to interact, e.g. should the home directory be deleted?
-The output of all modules is displayed on a single page.
-Return is an array of meta HTML code.
-$post is the $_POST array. It -is needed t interact with the user.
-
-
-
-*: These functions do not need to be -implemented if meta data is supplied. See 6 for a list of meta data -formats.
-


-

-

3. Meta HTML code

-The modules are not allowed to display HTML code directly but return -meta HTML code. This allows to have a common design for all module -pages.
-Meta HTML code is always returned as a three dimensional array[a][b][c] where a is the row number, b is the coumn number and c is is a data elememt.
-
-Format for data elements:
-
-A data element is an array -which contains the data to display.
-All data elements must -contail a value "kind" which -defines what kind of element should be displayed.
-
-These are the possibilies for kind -and what other options are implicated:
-
-
    -
  • fieldset: Inserts a -fieldset.
  • -
      -
    • legend: The legend of -the fieldset.
    • -
    • value: A data element. Can be used -recursively.
    • -
    -
  • help: Adds a help link.
  • -
      -
    • value: The help number -for the help entry.
    • -
    • scope: The account type -for the help entry.
      -
    • -
    -
  • input: Adds a HTML input -element.
  • -
      -
    • name: The name of the -element, will be used later as variable name when user input is -returned.
    • -
    • type: allowed values: -submit, reset, checkbox, text, password, file, hidden
    • -
    • checked: Boolean value, -if true a checkbox will be checked. This value is only needed or -checkboxes.
    • -
    • disabled: Boolean -value, if true the element will be disabled.
    • -
    • size: The length of the -input element, only used for text, password and file.
    • -
    • maxlength: The maximum -size of the input element, only used for text, password and file.
    • -
    • value: The element will -have this value as default. Button elements will have this as caption.
    • -
    -
  • select: This will add a -select field.
  • -
      -
    • name: The name of the -element, will be used later as variable name when user input is -returned.
    • -
    • multiple: Boolean -value, if set to true the user can select more than one entry.
    • -
    • options: Array of -string. This is the list of option values the user can select.
    • -
    • options_selected: Array -of string. This is the list of pre selected elements, must contain -values that are also in options.
    • -
    • size: The size of the -select field, if set to 1 a dropdown box will be displayed.
    • -
    -
  • table: Adds a table. Can -be used recursively.
  • -
      -
    • value: A data element. Can be used -recursively.
    • -
    -
  • text: Inserts a text -element.
  • -
      -
    • text: The text to -display.
    • -
    -
  • image: Displays an image.
  • -
      -
    • path: Path to the image
    • -
    • width: Width of the -image
    • -
    • height: Height of the -image
    • -
    • alt: Alt text of the -image
      -
    • -
    -
-
-Beneath those values a "td" -value may be added. This has to be an array with one or more of these -options:
-
-
    -
  • colspan: Like the HTML -colspan attribute for td elements
  • -
  • rowspan: Like the HTML -rowspan attribute for td elements
  • -
  • align: -left/center/right/justify Like the HTML align attribute
  • -
  • valign: top/middle/bottom -Like the HTML valign attribute
  • -
  • width: Like the HTML -height attribute for td elements
    -
  • -
-
-Example:
-
-
array(
-  array(
-    array("kind" => "text", "text" => "This is an -example", "td" => array("colspan" => 3))
-  ),
-  array(
-    array("kind" => "text", "text" => "Input:"),
-    array("kind" => "input", "name" => "myinput", -"type" => "text"),
-    array("kind" => "help", "value" => "42")
-  )
-)
-

-
-


-

-

4. Help entry syntax

-The array that is returned by the get_help function must follow the -below described syntax. Fields marked REQUIRED are neccessary -under any circumstances. Fields marked OPTIONAL may be left out -when not needed.
-There are basically two different types of help entries that can be -used. Internal help entries, that means the headline, text, etc is -included in the help entry or external help entries, that means the -help entry has only a reference pointing to a HTML/PHP page that offers -the help entry. -
-


-4.1. Internal help entries

-ext (REQUIRED)
-Must be FALSE in this case. -
-
-Headline (REQUIRED)
-The headline of this help entry. Can consist of any alpha-numeric -characters. No HTML/CSS elements are not allowed here. -
-
-Text (REQUIRED)
-The text of this help entry. Can constist if any alpha-numeric -characters and can contain placeholder for variables passed to this -help entry. The placeholder must follow the syntax for placeholder -defined by the PHP printf function. HTML/CSS elements are -allowed here as long as they follow the XHTML1.0 Strict specification.
-
-When placeholders are included you can submit the values that should be -displayed there as arguments when calling the templates/help.php -file. There they are attached as var1, var2 and so on. -The names must follow the following rules:
-
    -
  • 1. They must be named var$i where $i is any positive -number except the '0'.
  • -
  • 2. This number ($i) must either be '1' or $i -1 must be present.
  • -
-
-SeeAlso (OPTIONAL)
-An array of references to anonther related subjects. Each row of the -array must contain a field called "text" with the text that should be -displayed and may contain a field called "link" which is used as value -for the href attribute of a HTML tag when set. -
-
-


-4.2. External help entries

-ext (REQUIRED)
-Must be TRUE in this case. -
-
-Link (REQUIRED)
-The complete filename of the file stored under the help/ directory -which should be displayed when this help entry is called. -

-
-


-

-

5. PDF syntax

-The get_pdfEntries() function uses XML formatted commands to define the -PDF output. Each part in the PDF document is surrounded by "<block>" -and "</block>".
-
-Inside the <block> tags there are different ways to format the -output:
-
    -
  • simple line with attribute name -and value: <block><key>attribute -name</key><value>attribute -value</value></block>
  • -
  • table: <block><key>attribute -name</key><tr><td>value<td><td>value<td></tr></block><block><tr><td>value</td><td>value<td></tr></block>
  • -
-
-Special commands:
-
    -
  • Alignment in <td>: -You can specify the alignment in <td> tags with align=(L|R|C) -(e.g. <td align=\"L\">)
  • -
  • Cell width: <td> -allows an attribute "width" to set the cell width (e.g. <td -width=20%> or <td width=30>).
    -
  • -
  • Line breaks: Line breaks -can be specified by adding a <br /> -tag. The new line will start at the left border of the PDF document.
  • -
-
-Examples:
-
-1. Simple name+value lines:
-
-In most cases you will just want to display a single line per attribute -with its name and value.
-
-    'myAttribute' -=> '<block><key>AttrName</key><value>12345</value></block>'
-
-This will give the following PDF output: AttrName: 12345
-
-
-2. Multiline values:

-
-Sometimes you have multivalued attributes where it is not applicable to -write all values in one line but where you want to list your values one -below the other or show a table.
-This can be done by using the <td> tag. This example only uses -one column but can just use more <td> tags per <block> tag -to display more columns.
-
-    'myAttribute' -=> '<block><key>AttrName</key><tr><td -align=\"L\">123</td></tr></block><block><tr><td -align=\"L\">456</td></tr></block><block><tr><td -align=\"L\">789</td></tr></block>'
-
-This will give the following PDF output:
-
- - - - - - - - - - - - - - - -
AttrName:
-
123
-

-
456
-

-
789
-
-
-
-
-
-

6. Module meta data

-

6.1 can_manage() -

-    "account_types" => array
-
-    Example: -array("user", "host")
-
-

6.2 is_base_module()

-    "is_base" => boolean
-
-

6.3 get_ldap_filter()

-    "ldap_filter" => array
-
-   Example: array('or' => -'objectClass=posixAccount', 'and' => '(!(uid=*$))')
-
-
-

6.4 get_RDNAttributes()

-    "RDN" => array
-
-   Example: array('uid' => -'normal', 'cn' => 'low')
-
-
- -

6.5 get_dependencies()
-

-    "dependencies" => array
-
-   Example: array("depends" -=> array("posixAccount", array("qmail", "sendmail")), "conflicts" -=> array("exim"))
-

-

6.6 get_profileOptions()
-

-    "profile_options" => array
-
-   Syntax for array is the same as for the -return value of get_profileOptions().
-
-
-

6.7 check_profileOptions()
-

-    "profile_checks" => array
-
-   The keys of the array are -the names of the option identifiers.
-   Each array element is an array containing these values:
-
-
-
    -
  • type: -determines how to check input
  • -
      -
    • regex: check with regular expression from regex variable, case sensitive
    • -
    • regex_i: check with regular expression from regex variable, case insensitive
    • -
    • int_greater: integer value of cmp_name1 must be -greater than the integer value from the option cmp_name2
    • -
    • int_greaterOrEqual: integer value of cmp_name1 -must be greater or equal than the integer value from the option cmp_name2
    • -
    -
  • error_message: message that is displayed if input value -was syntactically incorrect
  • -
      -
    • array -to build StatusMessages (0 => message type, 1 => message -head, 2 => message text, 3 => additional variables)
    • -
    -
  • regex: regular expression string (only if type is regex/regex_i)
  • -
  • cmp_name1: -name of first input -variable that is used for comparison (only if type is int_greater/int_greaterOrEqual)
  • -
  • cmp_name2: name of second input -variable that is used for comparison (only if type is int_greater/int_greaterOrEqual)
    -
  • -
  • required: true or false, if this input field must be -filled set to true (optional)
    -
  • -
  • required_message: message that is displayed if no input value was -given (only if required == true)
  • -
      -
    •  array to build StatusMessages (0 => message type, 1 -=> message -head, 2 => message text, 3 => additional variables)
    • -
    -
-
-

6.8 load_profile()
-

-    "profile_mappings" => array('profile_identifier1' -=> 'LDAP_attribute1', 'profile_identifier2' => 'LDAP_attribute2')
-
-    The mapped values are stored directly in -$this->attributes.
-
-
-

6.9 get_configOptions()
-

-    "config_options" => array('user' => array, -'host' => array, 'all' => array)
-
-    The values from 'all' -are always returned, the other values only if they are inside the $scopes array.
-
-   Syntax for sub arrays is the same as for -the -return value of get_configOptions().
-
-
-

6.10 get_configDescriptions()
-

-    "config_descriptions" => array
-
-   Syntax for array is the same as for the -return value of get_configDescriptions().
-
-
-

6.11 check_configOptions()
-

-    "config_checks" => array('user' => array, -'host' => 'array', 'all' => array)
-
-    The values from 'all' are always used for checking, -the other values only if they are inside the $scopes array.
-
-
   Syntax for sub arrays is the same as for -check_profileOptions().
-
-
-

6.12 get_uploadColumns()

-"upload_columns" => array()
-
-Syntax for array is the same as for -the -return value of get_uploadColumns().
-

-

6.13 get_uploadPreDepends()

-"upload_preDepends" => array()
-
-Syntax for array is the same as for -the -return value of get_uploadPreDepends().
-

- - - diff --git a/lam/docs/devel/other_libs.htm b/lam/docs/devel/other_libs.htm deleted file mode 100644 index 4a280374..00000000 --- a/lam/docs/devel/other_libs.htm +++ /dev/null @@ -1,55 +0,0 @@ - - - - - Other libraries - - - -

Other libraries
-

-
-

Lamdaemon (lamdaemon.pl)
-

-

Blowfish (blowfish.inc)

-If MCrypt is not available LAM uses the Blowfish algorithm to store -sensitive data in the session file.
-This file was copied from the Horde -project and modified to fit LAM's needs.
-
-

LDAP cache (cache.inc)

-
-

Account lists (lists.inc)

-This file provides basic functions used by the account lists. They -cover major parts of the HTML output.
-There is also one list of LDAP attribute descriptions per account type. -They allow to have translated descriptions of the most common -attributes.
-
-

Status messages (status.inc)

-Status.inc provides the function StatusMessage() -which can be used to display error, warning and information messages.
-The function uses preg_replace() to convert the special tags to HTML -tags. The message variables are included with printf().
-
-The parameters of StatusMessage() -are described in the developer FAQ.
-
-

Tree view and schema browser

-The files tree.inc and schema.inc contain functions which are needed by -the tree view and the schema browser.
-These functions were copied from phpLDAPadmin -(PLA).
-
-
    -
  • tree.inc: tree functions -(from functions.php and some other files in PLA)
  • -
  • schema.inc: for schema -browser (from schema_functions.php in PLA)
    -
  • -
- - diff --git a/lam/docs/devel/ou-edit.htm b/lam/docs/devel/ou-edit.htm deleted file mode 100644 index 2b07faaf..00000000 --- a/lam/docs/devel/ou-edit.htm +++ /dev/null @@ -1,31 +0,0 @@ - - - - - OU editor - - - -

OU editor
-

-
-
-This is a simple tool for creating and deleting organizational units -(OU) inside the LDAP tree.
-OUs can be managed for the LDAP suffixes of all account types.
-
-

1. Creating OUs
-

-The user -provides the name of the new OU which can include a-z, 0-9, "_", "-" -and " ".
-LAM will then create a new OU object under the selected LDAP suffix.
-
-

2. Deleting OUs

-If the user selects to delete an OU he will be asked if he is really -sure and then the OU is deleted.
-There is no recursive deletion.
-
- - diff --git a/lam/docs/devel/pdf_editor.htm b/lam/docs/devel/pdf_editor.htm deleted file mode 100644 index 85674090..00000000 --- a/lam/docs/devel/pdf_editor.htm +++ /dev/null @@ -1,107 +0,0 @@ - - - - - PDF editor - - - -

PDF editor
-

-

-
-
-

-
-
The PDF -editor allows the user to create templates for the PDF output.
-These templates are saved as files in config/pdf.
-
-

Pdfmain.php
-

-This is the start page of the PDF -editor. The user can select to add/modify/remove selected PDF -profiles.
-
-The list of existing PDF profiles is returned by getPDFStructureDefinitions() in pdfstruct.inc. It includes all -structure names without file extensions for a given account type.
-
-Depending on the selection of the user he is forwarded to pdfpage.php -or pdfdelete.php.
-
-

Pdfpage.php
-

-The user can edit the PDF structures on this page.
-
-The structure is loaded with loadPDFStructureDefinitions() -from pdfstruct.inc. If it -does not yet exist then the default structure is loaded.
-It is stored in $_SESSION['currentPDFStructure'] -(sections) and $_SESSION['currentPageDefinitions'] -(head line and logo).
-
-At the top of the page the head line and logo can be edited. The list -of available logos is retrieved with getAvailableLogos() -from pdfstruct.inc.
-
-The sections on the left side are displayed like they are defined in $_SESSION['currentPDFStructure']. -Each item has links to move or delete it. Section titles may be changed.
-
-The list of available PDF entries on the right side is retrieved from getAvailablePDFFields() in modules.inc.
-
-Near the bottom there the user can add a new section. The list of -available PDF entries is retrieved as above.
-
-When the user pushes one of the buttons or clicks on a link then there -are several actions:
-
    -
  • Abort button: The user is -redirected back to pdfmain.php.
    -
  • -
  • Save button: The -structure name is checked for correctness and the file is saved with savePDFStructureDefinitions() -from pdfstruct.inc.
  • -
  • Add section button: LAM -adds a static text or section to the structure.
  • -
  • Add entry button: Adds a -new entry to the selected section.
  • -
  • Change name button: -Changes the name of the section title or the section attribute.
  • -
  • Remove entry link: If the -entry is a section then all parts of this section are removed. -Otherwise a single entry is removed.
  • -
  • Move up/down links: The -entry or section is moved up or down.
  • -
-
-$_SESSION['currentPDFStructure'] -is an array that contains all XML tags of the PDF structure. If you -want to modify the structure always remember to put the opening and -closing tags at the right place.
-
-

Pdfdelete.php

-When the user selected to delete a structure in pdfmain.php he is redirected to -this page.
-
-LAM will ask once again if the user is sure to delete the structure. If -this is the case the structure will be deleted with deletePDFStructureDefinition() from pdfstruct.inc.
-
-
-
-
-
-
- - diff --git a/lam/docs/devel/pdf_profiles.htm b/lam/docs/devel/pdf_profiles.htm deleted file mode 100644 index 0393d705..00000000 --- a/lam/docs/devel/pdf_profiles.htm +++ /dev/null @@ -1,99 +0,0 @@ - - - - - PDF templates - - - -

PDF templates
-

-
-Every PDF structure is saved as a single file in config/pdf. The -file extension is the account type (user, group, ...) plus ".xml" (e.g. -default.user.xml).
-
-

Format

-The root tag is <pdf> -with the attributes filename for the -logo and headline -for the title.
-
-There are two types of subentries in <pdf>:
-
    -
  • sections
  • -
  • text
    -
  • -
-

Sections:

-Sections are parts of the PDF file where data from the account profiles -(e.g. LDAP attributes) is shown. Each section has a title and a list of -entries.
-
-The title is defined with the name attribute -inside the section tag. If the title begins with a "_" then LAM -interprets it as entry. This means that LAM will insert the value part -of this entry here.
-
-Each section has a list of subentries which are defined with the <entry> tag. The have only one -attribute which is name and -contains the identifier of this entry.
-
-

Text:

-LAM allows to display a fixed text in the PDF which is defined with the -<text> tag. The text is -just written inside the tags.
-
-
-
-Example:
-
-<pdf type="user" filename="printLogo.jpg" headline="LDAP Account -Manager">
-    <text>This document includes your personal -account settings.</text>
-    <section name="Personal User Infos">
-        <entry -name="inetOrgPerson_givenName" />
-        <entry name="inetOrgPerson_sn" -/>
-        <entry -name="inetOrgPerson_street" />
-        <entry -name="inetOrgPerson_postalCode" />
-        <entry -name="inetOrgPerson_postalAddress" />
-        <entry -name="inetOrgPerson_mail" />
-        <entry -name="inetOrgPerson_telephoneNumber" />
-        <entry -name="inetOrgPerson_mobileTelephoneNumber" />
-        <entry -name="inetOrgPerson_facsimileTelephoneNumber" />
-    </section>
-    <section name="Unix User Settings">
-        <entry name="posixAccount_uid" -/>
-        <entry -name="posixAccount_userPassword" />
-        <entry -name="posixAccount_primaryGroup" />
-        <entry -name="posixAccount_additionalGroups" />
-        <entry -name="posixAccount_homeDirectory" />
-        <entry -name="posixAccount_loginShell" />
-    </section>
-</pdf>
-
-
- - diff --git a/lam/docs/devel/profile_editor.htm b/lam/docs/devel/profile_editor.htm deleted file mode 100644 index c75094dd..00000000 --- a/lam/docs/devel/profile_editor.htm +++ /dev/null @@ -1,84 +0,0 @@ - - - - - Profile editor - - - -

Profile editor
-

-

-
-

-
The profile -editor allows the user to set default values for new accounts.
-These defaults are saved as files in config/profiles.
-
-

Profilemain.php
-

-This is the start page of the profile -editor. The user can select to add/modify/remove selected -account profiles.
-
-The list of existing account profiles is returned by getAccountProfiles() in modules.inc. It includes all -profile names without file extensions.
-
-

Profilepage.php
-

-This script is used to display the account profile to the user.
-
-The profile options include the LDAP OU suffix and options provided by -the account modules.
-
-The values for the OU selection are read with search_units().
-
-The account modules provide -all other profile options. The profile editor displays a separate -fieldset for each module containing its options.
-The function print_option() -manages the display of the different option types (checkbox, select, -...). The type of each option is saved in $_SESSION['profile_types'].
-See the modules specification -for a complete list of supported types.
-
-The profiles have unique names under which they are saved. If a profile -with the same name already exists it will be overwritten.
-
-When the user selects to save the profile then -profilepage.php will check the input for correctness.
-First the values are converted to the correct type (checkbox -> -Boolean) by checking $_SESSION['profile_types']. -Then LAM will replace all "\'" with  "'" if magic_quotes_gpc is on. Now the -input data is checked for correctness by calling checkProfileOptions().
-The account modules return a -list of -error messages if one or more options are incorrect. If there are -errors they will be displayed, otherwise the profile is -saved by calling saveAccountProfile().
-
-

Profiledelete.php

-When the user selected to delete a profile in profilemain.php he is redirected to -this page.
-
-LAM will ask once again if the user is sure to delete the profile. If -this is the case the profile will be deleted with delAccountProfile() from profiles.inc.
-
-
-
-
-
-
- - diff --git a/lam/docs/devel/profile_files.htm b/lam/docs/devel/profile_files.htm deleted file mode 100644 index 22804b83..00000000 --- a/lam/docs/devel/profile_files.htm +++ /dev/null @@ -1,36 +0,0 @@ - - - - - Account profiles - - - -

Account profiles

-
-Every account profile is saved as single file in config/profiles. The -file extension is the account type (user, group, ...).
-In contrast to the configuration profiles the account profiles are not -designed to be editable by hand. They do not allow to add comments and -have a simpler format.
-
-

Format

-There is one option per line which is formated: <identifier>: -<value>
-
-Identifier is the option's name, value is the rest of the line after -the first ": ".
-Some options are multi-valued, the sub-values are separated by "+::+".
-
-
-Examples:
-
-posixAccount_primaryGroup: group1
-posixAccount_additionalGroup: group3+::+group4+::+group5+::+group6
-
- - diff --git a/lam/docs/devel/profiles.htm b/lam/docs/devel/profiles.htm deleted file mode 100644 index 03d2e04b..00000000 --- a/lam/docs/devel/profiles.htm +++ /dev/null @@ -1,25 +0,0 @@ - - - - - Account profiles - - - -

profiles.inc

-
-This file includes all functions to manage account -profiles. You can read/store/list/delete profiles.
-
-Profile names may contain letters, numbers, "_" and "-". All functions -which have a profile name as parameter check this.
-Functions which modify the filesystem (saveAccountProfile, -delAccountProfile) also check if the user is logged in to LAM -for security reasons. This is done by reading $_SESSION['logedIn'].
-
-
-
- - diff --git a/lam/docs/devel/samba_domains.htm b/lam/docs/devel/samba_domains.htm deleted file mode 100644 index 54c84c8e..00000000 --- a/lam/docs/devel/samba_domains.htm +++ /dev/null @@ -1,35 +0,0 @@ - - - - - Samba 3 domains - - - -

Samba 3 domains
-

-

-
-

-
The Samba -3 domain list is based on the other account lists. The -difference is that there are no filter boxes and the displayed -attributes are fixed (name, SID, DN).
-
-If the user selects to edit or create a domain he will be redirected to -domain.php which manages the -domain objects in LDAP.
-
-
-

domain.php

-This script manages domain objects. It allows the user to create -domains or to modify values.
-The domain name, SID and RIDbase cannot be changed by the user because -this could cause trouble on the clients.
-
-
-
-
- - diff --git a/lam/docs/devel/style/layout.css b/lam/docs/devel/style/layout.css deleted file mode 100644 index 156b3364..00000000 --- a/lam/docs/devel/style/layout.css +++ /dev/null @@ -1,57 +0,0 @@ - /* -$Id$ - - This code is part of LDAP Account Manager (http://www.sourceforge.net/projects/lam) - Copyright (C) 2004 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 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 development documentation */ - - - -h1,h2,h3,h4 { - color:#0c12b7; -} - -/* 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; -} - - -/* module HowTo */ - -table.mod-code { - background-color:#fffde2; -} diff --git a/lam/docs/devel/tree_schema.htm b/lam/docs/devel/tree_schema.htm deleted file mode 100644 index 16e64b5c..00000000 --- a/lam/docs/devel/tree_schema.htm +++ /dev/null @@ -1,21 +0,0 @@ - - - - - Tree view and schema browser - - - -

Tree view and schema browser
-

-
-
-These parts are based on phpLDAPadmin.
-The two tools are located in templates/schema -and templates/tree.
-
- - diff --git a/lam/docs/devel/upload.htm b/lam/docs/devel/upload.htm deleted file mode 100644 index 4bf2b0b6..00000000 --- a/lam/docs/devel/upload.htm +++ /dev/null @@ -1,102 +0,0 @@ - - - - - File upload - - - -

File upload
-

-
-
upload
-

-

Account selection (masscreate.php)
-

-This is the initial page of the file upload. The user selects the -account type for the new upload.
-
-
-

Attribute overview (masscreate.php)

-After the account selection LAM will display an overview of the -possible and required input columns.
-The DN attributes (DN suffix and RDN) are static and are always -displayed. The default suffix is read from config with getAccountSuffix() and the list of -RDN possibilities is taken from modules.inc - getRDNAttributes().
-The next attributes are read from modules.inc - getUploadColumns(). LAM will display -all attributes of one module in a separate fieldset. The getUploadColumns() function also -returns if an attribute is required and additional information like an -example value.
-
-After clicking the upload button the user will be forwarded to the -account building page.
-
-
-

Account building (massBuildAccounts.php)
-

-This part takes the submitted CSV file -and generates the LDAP accounts.
-
-The scripts separates the head row from the data rows in the CSV file. -The head array is used to find the position of the input values. The -data array contains one subarray for each account.
-
-After the data has been extracted there are some basic checks done, -e.g. checking required and unique columns. The modules provide the -necessary information for this.
-
-Then all data is given to the modules with buildUploadAccounts() in -modules.inc. They return a list of accounts which can be uploaded with ldap-add() and generate possible -error messages.
-
-If the accounts are built the script will give the user the possibility -to check the result with an LDIF-file -or to do the upload.
-
-
-

LDIF export (massBuildAccounts.php)
-

-LAM simply takes the built accounts and generates an LDIF-file from them. This is passed -to the user's browser.
-The LDIF-file will only -contain the accounts itself. If modules do additional tasks after the -upload (e.g. adding users to groups) this will not be covered.
-
-
-

Account creation (massDoUpload.php)
-

-This script finally uploads the LDAP accounts with ldap_add().
-
-The upload can last longer than the maximum execution time of PHP. -Therefore the script will check regulary how much time is left and -pause the upload. This is resumed with a meta refresh which loads the -script again.
-
-After all accounts were created in LDAP the modules may do additional -tasks. LAM will call doUploadPostActions() -and also provide a list of failed accounts which can be ignored. The -function is called as long the returned status is "inProgress". The script uses again -a -meta refresh to handle the maximum execution time.
-Typical post actions are setting quotas or adding an user to groups.
-
-A progress bar is shown for the LDAP adding and the module actions to -give the user a hint how long it will still take.
-
-
- - diff --git a/lam/graphics/add.png b/lam/graphics/add.png deleted file mode 100644 index 7c04bad6a1f88c88918c37781b8d1378a054216b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 528 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 bDwb+xKaAZOmPDaFkJ->&~ryu{>Gr~*& diff --git a/lam/graphics/catalog.png b/lam/graphics/catalog.png deleted file mode 100644 index 907d939ad048efcc4ab31795444bccea409d6ac3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1302 zcmV+x1?l>UP)4pXFCHvZDpV>$L9qlRL?K1g)MO(yP2)ywlQecW|6H^0ZFb-8 zo9UseX#L+?2ZmvIGr#X|zB9k?_rd?YiDz8b1gr$!20j2BAP2k(c+U$eP19W4-rl~u zv9a-}ZQB{sH1m7+?)7_mdIHyV1JCpPiHV76$8pX+_mM)O(81>B=HkA6`-1c5&#Pjw zSW!v^T5Iijp6=`G)9G|t&&hG7^;DM_c( z2qCCcDtMk3D5aiCaVVKgZl9Z*JEfGW357x-fMhaxZ$W*1J?-u796EG}SS-f;{5-i_ z4k@Ju@=v|wEnBuM9yxNv)>+adLYZs?apAPQsHv zZLFGF28V{4J=a~me*JpGaU3x+GSXU8Q}bnOYb)2TUDNjfGMP-pb=}^9fq|*%>FIY8 ziGPLf!9+%C*g9k~c)A)Xw3uk)RSQqE?$PhpbSg6($ z_W>vau%(n|PMkOqcO0kAG)<(G4+K_9aqir?#jdWd8{^~SGaVfru|jrMhBQpf&0rcb zU(q@RgsZGPP=La=?H9x0@K7`wz1h^%l>PqLG51O;rElN9t&7E?zI5qQ(9qD30d`3# zx3smjy}RelZ9O~JC-kQJl{zeqf`GSxRX`)K45$Unf0w!i^hFFa*|DZA5?{H3O|NZM zLjwbgH+~*GDq;9`#rJbTx%A=A-TQw{T}f1wVrX^>L&)!Z6?_9^t8^8Cf_Q{}55Cd7 zZi6j^sPoI7p;VnMq;9h8Akf+?DRpO2E6?gothsvSm#AAVQC0z0=d)T0@rC+_s^5V* zARl^2s}YMEHmn=mzWMdd;X<)~axf(qGFgI3B_x%yOheX1q(I9MrJ#b+no6K(jV@DD zh5XCD4i@e!WokM-=+cs)ZH-ze-OY zD2eCrZdnDZ0qTHAHJ}Fs)$ghbP^ykf{Kp@K`zz6?&Se$oZr1>R126Y5vM0>T^Z)<= M07*qoM6N<$f{EdFd;kCd diff --git a/lam/graphics/dc.png b/lam/graphics/dc.png deleted file mode 100644 index 2769a479b6d79c1054ea45e9cb423e7604806e8c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1140 zcmV-)1dIELP)r2?(cQb|eZ4?@zWNh`LsRH`%@8;$yduis4c z2cwD6`VW|xG?*BFs?k`}A8MnR*iz+DYFmY6rLd*@fbIkKHM=`I_xe2>z{F_cNj`J# z+_~pFcg{U$1pPk~>&xu$TR;VH0iMr-5Qu{uP@wRD{eKw;vdA8A0Bi#iuuvGVC_irm zy!JA<0cA->#3R_kA}MtX_t!xh6c)hq?lv^s7!Ly{_+(>}iYktF z7B?L`t5U@!xw{{El{LSsW_PRA{oLst&Zg$Z#l*C}GUUrwacQwh~ zTMwt~vEG~~I7=oygzz%JI-Fnrk~#3Ij*Ac_jXg!K*0xNMt_i!M@`lT$ju%P>mWzK8 z)xu4EwF5-Di=<{F*?LCL4ye9_@8$>eqa22m1r0vP2Eb|Z0Xx4*sN7PsmDGl#bdZeS zu8QL?X2fjS72z&(Qo!<1D1DdO%6cfPbV^DovbI_Zr^a`f^N~r4t7&L(TKGWO4gsBo z@hS2(nT+1b-CJuYj*r@&dFNSeD*iRCm_Z5~D|D!8i0VrB(5huoET4y#E{dw#$e3Bk z;Uir z6OG`Dg+iw)j~sK?xDE)X<1t#3#WX(qDFyu3Ncy7m;qp%E8XTg0HY-Fj>G1gdey?f1 zh4?&Z2lFg^AG`@h0hf!J^80T`gTdpnqr)E8b+Kk?By25YK8TZX^G_9?PN;6A#f-(o zJ+D`N6$*_lOZh!w+W_ZyjfGbLpXwW+3P_SNnDBU}9*m9cOT}Uj$8OwE;R}~k`n#EY zekwj=WX$m`kx0{`&!>&}e39$9+!yN_OYr;;+3fRDjQ4^{unTa(^MUASpA38iDH5b< zUc7Vy_X(81LC}L%;}qTo3t+R&@odu^81V`7AB&4U1-PsD1slel$}L;cm#rUxP)&2s2(5Z)4dn3#M0000;J*|V85XEruA9zA;W|Ns9xckW!je*Kvv i8nWy^*vIsNvC%n7;N)!yfkur-7w)WCCFRA!U=097rZlGj diff --git a/lam/graphics/device.png b/lam/graphics/device.png deleted file mode 100644 index eb153a33d13bb21e935456d533388f8baaf5bef9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 500 zcmVel8&MR7pNSL6bdnSz31V6q6H69Zw3N83NEXFiz`u}1 z|AL?!v(cT)F6u7`>8fV$CWO)^x>0MuiKJ!B$F!gnbs)y;B0A3a5eRtTa5;zjp7Wmj zo+~lD31=V;3$9cuc92S?kcUCX<8d2!OF+I)X^`oXt7|nPVL`wz7z?Q+64Us6KBpQ&2Ds||=k+TSfcg2ijE+v)kJd3I zB4I%=D43g@v6~o%K{Oiek8pP0Bb!aTSaeK@blOWKEcmkVk7~6_F82|`I0m3tECMhB zti)pzG+Qc~b|;9c_8lM)c!Q>m^R@5|O?yY7P_PTwvjF0+xha0_mqn+Ycb(2V`FvhD zrT5(EDFJxBA+~ppP?Q9_dj^V<;86cPaBE$g*l7Hr-EO1T66nP)vK$IycYfJkR&X5x@)l&pGte{_}3aK2W>8 z^-1ZE@C)D$unHgs1_t!p+}uNjwOWnMUzT|Py;pcdl{oRi3W@A2p66Z5=ksp^-&%u% zgDfm8U>F95VRXb=Yx4O#+sQQ^e>BO`*()Rljxj$!Pdc4GSg+U57K_DKjr#>!YoaJ3 z3_~iF3gxx0$W1*-^VbXHR~?SNJcDIfEG{l0gvh2+sgkuP28g1lbKh9|nR}IW_Pe7L zu2%430qA zl8K24W@e6)$z&b`>^UeD3cU4vliozgm&GfP9%XiR7Kji+6NVCKIsKP|-Q8U-FMrAt zW6$yD#&=v;33=z;lQbG0zVB17*YSNH&+~|)h)xZZk|?EEUjCZVK|wmM`D|sKzJoc2 zhKA5u69f_|n*@QR(eTk)w*Y&um&;|;_9c$J_zcz6bA0og!_ng};W#!sJ3BO+4T3-d z0^e_R0a`}{LBPhD3$eWy7y1|)C2IJ$;QmItf+PaD7d03W3GMU76UE=XLrfGDGC}qI!H*WFcb%V?6 zRdoCS+3YY1)y6oGR zYzu9K&`2pe!v+rknoLbia`^BV{r&y)_4VPp32fWJvP^^!9Z?j8fJTTm0Kl>wPMtbQ z7)F?;XfKxj$DXu@#}FtLbtCwGgKD+fwx;j1_;7$}n$&7Flv0SEo*q3iGJ@}W|M{V` ic-`DWi1yUpKJhmX37afwuiEDT0000IS@C4*({TfjOl$aNYd)qT}6#gN(1PO_$Zg=Ot-Ms_;raJ(2T_;(`D9WPj zrfoJ)n=sW5hXa73C~Rk0c6@&WuwJhv0SJ?+D2o2Decm2Fj#HTDD*)N`C=|~_iNE-m z_%!%pjMs(aS_VM305^C{0BQKcy96Y7dU)rrssiv?RR9(bi@toSPXIy)qINI4p>NZ+ z`6^#7A0r~orfX;Sv##sPvW$ph-(HkNQR+leR9Tku`Mk%6eo|4kNZFQUiq`9X?{TNl z?{O{L=i3ATq$Y+$%ZX{^iSj^^lzh*HkFrVGH%(`KWywIqKlKg!$p=c0nGEv)0000< KMNUMnLSTX}zm|0X diff --git a/lam/graphics/down.gif b/lam/graphics/down.gif deleted file mode 100644 index db961de74b8c0e21d0e947dfda02680cd3ecdf7f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 380 zcmZ?wbhEHbxE+LM=23Avq9X8iyEf61n8=k7jA z&#P@{o4WVxrI5JdiPM(ceerhgs&$thK3lb8Z(@3BWkY{NZ1(YMcXk{<+dgU9`TI}T z?AkwV@$$lo_P!|#W0MQpdS;)xd4K=8E7?VjAyH{F=dGSHYuWmJhj*Pkzvb|Wp6PRr zT)tUR-!muF*BVYtWP$Y2csUzUo0 diff --git a/lam/graphics/error.png b/lam/graphics/error.png deleted file mode 100644 index cc7830e26ef2b67b23587061997543e4eeadeb21..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2684 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 diff --git a/lam/graphics/find.png b/lam/graphics/find.png deleted file mode 100644 index ed5c07eb76dfe1a6e18714081f8775a8f43bbffc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1428 zcmV;F1#9|=P)rArEY0$OWD%xZD%jt-I>{$@u5SwgoqD5`g@vl=J)-6 z=X=ha?}7j81ttB9o>E{vuoQRz6#fh0xxlt)G`jDTk9Xcbbl^v&?aHNGH2Tt6pbQWJ z8CdP}`99ma^_|v=ii*zx2OvC2^k^Uhjlk;7o8R2DVtG@|;zd#a>`0|sEo8Aw6IpiC z(?1;B@cJ8PeLi3Mtu323u35cm#^OcMKsucfc73(GfB%7l&9+PRS%G)=?)hfd;)VqQ zw@Y;7vI>GIAqpa*C?E(T76LidU|dm6pSMIP5Bmg362P)hRh_HXJJk2y|L{{_50C^* zY)b$sL!Xc(R7Xb1PLczr2$%xn$s~#K6rw|?r@L2t`0zfKC9<+v9Q+pBkcu&vQF@`7bq2$Sx)*xE*BVuYcG z8r!yQXF+{Ev**mgDf;N`@1(oCmleyFAv>LT{Q>8JpMMzzt^ql~5`jA4qq_Okuim(I z#}EV&%QP?z165TSPbwTccADnqX8e9HveSX=aIm1hp32Jkq|yTVSV#! zfDdp2I2s$Gd$(-f*f^0*yM~7ba4oDwQ}cjHAzz^HejmBKipNue!yzGwPAt>FFF6SX zr=lnx(y0_7zYlL|32WD^jGR2xvIH0gRPp8?9bJR*0jZGBbNhA&q9kKk7KTxzpsEN6 zl$Vt-7?0b_X5#nzaeLhO{a!LD695YVS$45>Nn>eU?YxbE7my^&qBk)zzG?QXnZb#P z9OdOx2?xFCnnt0Zp=kzVN`juA9z1S86%~~vl@zB=og|%&k;}SS+SEiS97YgD(uzV? zPp`YHtNRF$k$_Apm2r98B};<=uWSN!weu(xvJ{I&^kR|ZxXMI+gxhzn(RS@TfAw}U zo{ZCaxq}&1KKgnSl)4=pKlYpU)BeLs%b81UrfIeTiew*%?$NR2ibz#uRWg|r)~;Je zEz`+^$mm!BP-YeDUSCqeo9%KHS?M|G_lPOF#-3 zmjDaUbiMdMEfhACmxa8MNQ8jTgK4NZBqvU}1li?dO8GQGp%7+KqrLr>arw&i{Dq6x z9@N%Wc^A}Id1A5tPE9k<0uO-%kbZOyEMQnkWdfmqzo9G~a@N$$MU)))!_x=^!kDJU zy{j-5CczuDe(E|t!<=(^bxi}fe#>Sjk88meEpcklj?sv1Y_xX_;zFo3&> zk+G)ovcSw0E0>E!El*-7&hKYh^zXhukoxub`PQDk!6W&Cb_i$(27siln~BcOzTujh zNbS(jU^Jc9zXq~^^<=aPfD32}hl9I!?s$9d-Mg`T>-Em~Kz#TD&<2bGd3${oo5TfF z0keP_``tcZ1Tdb;ZYFcy3#TvjW(F zATR?6*d!^NIBSa*?Z5AlbJ@m}+4Bh-V?Iv+CS%-V0}b1OZa-Vk=@;w|lkKtg54}%; iM4q_$!g7TnZ3{T_&dvjw6Tdj$#2e_`Tgee zyUy70`1+}*r{^PCmOB_@>zy6#E3dxt@_9*$A2UsJn@m%Wn?L=;o=|?&`~iVeILK^(*H*ca+5%8XD$3 z9*-{)iF`|nPyBxWhrPYM%x1Ge*L6grQA8u#(A6}W>p0g+dzhKKhd|(A>b-NPo7F;& z-~Ve}`*SJ0v9J&dyMOfB*ASQ&alr?c2s@pMP3=_Uzlt>8v8Xts)GD zVIm$+AhfXtJtv{nqoKWl!)4dNjS?)Qh}-coNNu6nv4`WWCaP>2fA{h=%skkv zryjA6OBdhYy86u(8?+qbrV4JAP{?Jm5spAs((p7p(Aiakre-%Bj%sp1jvz7;yA$() z5W0-N(d5?n$#Y+(Vu@^vgNhy<8Sy_2VW@C9Oq}d)0?Zm@vROofX{_ZV zfZM{cZYSDWDf)62PH>(_GM%9e6fVixyW|aaamnU#O|SL7^v;Q6ZH!UGmPv3DQ9EuH zMT%&u;pl1v+Nw+>H*=W1ub}%x5EhSPW4(yvmW-jvCHNP&`v~b5-2s*3$AN*LEoL*h zXaWTAh*)$l9Esgd8NJY=qmkasQwD~yhGHQNIho;i?uDpK7!b@dn98yB+t|#!lHBE- zz}zfUgq%>sLc}wabwzTZ(^PQ8VoqqPM*Xl*C}{|8$x)i`-9xar*;6tDzR_usI>G-f zgK#7wJ$MGw5a#fDEJSx)C}fH#<~gKIbv~O41L#c3~P3#6NDlZ>67f& zTbwC!i=dTnwVs-oS7;QO1yg5O3Q9ub6D+X~!JNaG4J=JZCCL(X7ELSfm1t=O51|wU z9MpEE*U^mA!DM_joZ!@}>3wWvDh>{sZaf&DUN|MEmDa{uyTe;gBW0&TuoZKL zSjvf7Zv@MW^|(1QFByjQJ1J{O(&ceG0Mnj`Co|to2Uf4%99vW;=Y#E~l2+f{7+hxqnXqXEu`$<1eLiK^?NiaPtuR@`uPlR^TU-@Q(zg!<ZdP zC2r$$UJqQ=4w_#uJNXD_RNNZeKzJ*5gWlXGc}TMUG;o<-xx|aAF}xIvUm2QS^WU0$ zRJ|Taw>NoQ)tz29ySrM4!QnY8lg)ii_9GL-G+J2%#LmLX*2>aOQshrah+ttEh(>%w zn-qe&D;gh}Wp?&j7~_L%valaaHJo$ronZzhXLic|)JRr|WR*y>b(l#akNpSPs%<1n zoL_B@Tj)@;xUj_L{yKpFU!nlfdO&DHj5UOj#@GmL20Xp`NUR9n0(7J~X&-U0UE?Lt zMIaanZtuFZd#6}2KfQ|(6XPfsSIuC=V6EZ0d&bV%Eh z>K%Zh^QBD9{(*tO1Gws4^4|X#3*-yAL>Pv*Fsb57b(wr2Hx>r)hLWU6QsuOfa;22* iEo6be1)2VXsqiQ56R^dOP)`DgOWf1gS|x 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 P00000NkvXXu0mjf$~;YF diff --git a/lam/graphics/locality.png b/lam/graphics/locality.png deleted file mode 100644 index c80540b027830140c9638ac71fea175e604e4eb7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 751 zcmVrK2$G&+uqi6(eYcU5)I!kZZ9DsC+J8oK-A$43>F0g0bi+4Pa7 z{=I=K=HT*zfq|#&*s+^|8C>38yc;kr$$OpmVuZ+RncIW8Yvn^B1L0-G7uUCBefb`-TS`kK>_gUS(QDTyJ`C{ zLdqP!pBTcC5lKW#jMko@s)!mU%G=RlybrWha`tXr$-=2Ct6n;h#)4Un207s4c~xTAaf3gq-2zzO2{2pB#0oTM=hd3zeodD?>?q?K_|cVOtnHE zJgnl13Wck1>e?g?o18Jkn0WoXimHJoG%D}LYM2;rB`_$;)!VTZx@p5o&fhVruVG?p zl8)}K8N>Tmb$(f~8jA^2;r-YP7IbtXBA5z(;%~NYT*Lj#|AQVo`;m`+KDo<~AozwS z%Q8|*NDx99u$YKRQSpQjFcHj*_PGVy`P)r9 zhw1|+h6gY~6JAIJwDH0C0vHk#eUKNE_5qABH1z?ArlN%y5~2->E>tL8?55joyGzS< z+u7MavvYmu&UUx0z)4PK=HA@%o%5aV-a85v_VD4u8dg~-6v~xem5O0m@~4_`0fllSvL9JV-j7CY4Iz_xp)NBJ}t716%=ET3X`H zojU;E1Kq1Z)&R`S&AkM0`t)h_>eZ`OFc@U}_U-K0v4gE!w-OGA^SgKNrmwHByk>TG zmIn_W01N^xmHn#XZF+iISzKJaI59E7$jAssjvR4q*s$S4uh%>3^ZDZOc)X*hr>8F( zjndTARFzn3Yb(H~tHiLj0syyrrAm*-bHAmfW%TILqZ8-OoxA*hYB_%VIKT`rU8%6D z3dYCB1%PRq@zWnHecZToJ^Z^VG4w6VDoCf~3I>NDI$EdAc$wk+7E?v6B;lqb70=I#G z9GVnogM~sNGZh~tKR=1N_=tSQAe&iW@o@?>lL0`}H1rxb!lk0QYuMG(ODq;6kx0kFNuoZh*a}tCQpeQIp!L}u@pZbB%J~@dHg1WjoR8@7t zYyz}(RRj_#B}j>sMPf54#wKPlGg$=CP+!ZYjd1o#oJb^s5Q0pJzQ)EzhKGmg>gu`- zybAmYpGh^ zZ)Rj{C+>@&z}eQ3utha6qH>iNI_LpRF?~(x@h!y5m^rzw~bv= zcV|}@hGC#63fs1AL)Z1?>J_E@?Ck7xQr=kI1KUCtG8A%)G#V|BJD@=QsvamvRYM3jE=?!6v4L7uVw&zM!8w6Kp%B0qfNXAVJ~cTx ziJ~av^ZEZd?20y$BC=S(DipACxl&IoWYGfPm!Y9D9RP>kXg_)4?VYEb9c@__LqkK( z^g`7=`|~#+Gx6^@*@YxoGfOU)C7;bwu!;y2YCJlFqb{ypyM|#HXqrYa7z7{|i=pc} zV`F3N-@hN=J>bVOz{`I9g};;esb@LO_U_%wz`y{uy>kAA!(pV9ba!_H^a4KtcPlGU z02RGkH`2mS!=0XgL<$v$b`1vCHwpw8jEbm`0k7Qlbjm-bPI SUk9fE0000T0}x3> zK~#90g_PS$BUu!NzpC1asjApY3MVE+8H^GGf*=ax6srE`v7b0fB)-XY;JD;QLR=#d!C1BnrN*_@a_J4 zXsu^#Fc@%mcXxh!d;6P|@#6CX)$q9Ag*;p69W#vBB!ubU=WN&W| zAq11jgj6cU!omWUWf4UY0Jd%8I1cG_no_BR)|ytUMY&v_sd*u#q}goZ`#xJ+Thr`^ zVK@zz$z)JUp|!>|&8gl(2y(d`qtS@d(^H+AG-J(N;Yy+@-F zQp)LF9LG}~lO$P|g=v~Jn@wu9+9Zmi5ugmmaeiN1T>RCx?X=d~{BSgqq$W(iA3jO* zd_16oAfVsxKPaXC1a1uAXW%Db9!ULgQ2aj>Fao{+UyP4{E-(iq6>j{y?+>9rOaen- Z^f!rg&agD@m!kjx002ovPDHLkV1liGn!x}7 diff --git a/lam/graphics/minus.png b/lam/graphics/minus.png deleted file mode 100644 index 6ff906688af9463498977a826b9baa9f7557d86d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 98 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4^3?%3Nf7cA+1o(uwUbyq1uDc(|YY$R;1f)bf rT^vIyZY6W@mL@o~#c2opbf{#=Il{)C>3VS!P@cil)z4*}Q$iB}d>0za diff --git a/lam/graphics/n.png b/lam/graphics/n.png deleted file mode 100644 index a035c343c36c323fe292cead8ab5acd3cddf2f23..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 408 zcmeAS@N?(olHy`uVBq!ia0vp^LO?9S!3HE7rssMADYhhUcNd2LAh=-f^2tCE&H|6f zVg?3oK@euFPl=xh6l5>)^mS#w!on$PCbV|FS$#=GvOEa4?2#5M4 zCL|;@8tynZ=lA&o2M+u=d!%E5+KMPPAULMp<;CN4h>54iVEszV>c92klE;8b4*XD4 zWn8YPR4n#KJZfK8BM>}{O_5M$W@bJ-dkRa)dPmVe;xjilM93dxbd#8vEphFD+Hr$9 z8`ZYdh%z6)n*BeO>$F5&&40&zjyymRGku)_5c~;Wxk@=hBCL7e%a;>!fbFVdQ&MBb@0H1D`bpQYW diff --git a/lam/graphics/network.png b/lam/graphics/network.png deleted file mode 100644 index 008b03fb2953db89433c0835d7ae7d5eb1a1f67c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1107 zcmV-Z1g!gsP)$S zK~xyios(TmTV))^pZ7g)d-~n-A+R+R!WiJjG>8LDVWVTTqSL6D$%REPoH4u5MH81L z3KiYdF`UsDP4of>8eK9+GLy*`-HNhJ5gE9y(Bb4m3basYOIuD4J;w{fj9wV@xqb3~ z^5psFNAN#%*!6lvXem@dDEa)@+wJoJ!2Op1*CCgFPyL>HyQA*pu3fttG+NE$yh6eK zGBh;J0KoN9ix~i0J0OIBQaba>8_h`ocb!$oS3Y!-pLov;b%YfYLilyR}N4?aI~*NMFcD&$$7Z zGopCE;|nrexA$8M3ek0`d%tgd>@Vc$HM+cLG-@Xxh^|CB`z{049R{wO~` z<3Zn?A1aZesCW~`Z%n^KnNeV~q1n9v5DBStKm2&+E=iUkW9d=~tE>NHEi6X#C%*m} zCvzDvG=qk`LTr&`jz>g$i!VW1Sq9MiZ_w&F9?6sfi710QCl@5k1Th$fQlfu>x*n;L z5^Uy7RHvID2?PeC37&8iVFnvnZ^%*Cn>kFwpZDJMmeLd;5e`&ZMN&**^qOb=jbe#J zrNg$Pw4(AJPzmsidU4L(gW9SZjE#<9-HqODe=q-Z_vxNgDpe%QGLm8v;AC(d2fyEc Z>JN%ZjYwq0u5|za002ovPDHLkV1g3I08{_~ diff --git a/lam/graphics/nt_machine.png b/lam/graphics/nt_machine.png deleted file mode 100644 index 4d3737a7f2686ef018861d3833a509720f04e2a7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1060 zcmV+<1l#+GP)Qth1F=a& zK~#90os(N=TvZf?zkMzG_A{HzyDTD;kJO#WF2;@;AMXGrc z!6GR3MGJxwpHvWhC{+xk6eeJ-5=thWU}}=)(pWn=<~EZ#`{F|~Gl>B~f7o#LhV|{W z|MM@wt_B7MI@;UYzfnq6^B)uh!N|pn7heSa+I#MlK5W|_>gwvM9vvN}P$=vx7D9jk zfdB+T00>STf0V6!{tR#q_s#=a5Il_i?aJ@Qks!1dgw6rwS z+}uoabDW>X$I1Vri31&%Bt;dk_4Z&}7FW|#MB+7U3xSe~`7Mx2;kiX#$$vsuB8*%f z;nJ(;z8d`e2l21q&HOgkZ)PzDa%*|C5oo25QlXS0kO95=QzG|o!Li2)e#_GKz~bdM zpD`wEad+xIqu*x50kAfPa3}&P+bF3v$oyQE!Pa{Vvu*eMBQkmhR0HM89X#N^`tL z<5ml_5IneDf6!xN%+3-9VRoP;P0!4s;%^hGOK|Fhz|R$!Uer8!I89{rAvVUri%2$p zPVNVXLLttdega1?BQyj-!1ng`&V|5=OcEhVqEQe8;QzUaC}ud{y3Em34OMkEo@;o2 zG_en?tHM?E_q|@W1+hC4I}^cMAOC_1ENYx}X6M5Axg{QJPt#Ou(NdqM;Sh{XHu2Gw z>y=cDjg4K3L?V}4TU%4MZCBuXbovp1&oJ6>>*g$uY~WbUG7Yr?&jT!&U#SHuIX>Rm z+4;rUvu7Kk(I~cUBZMe}jj1@TwZ<63ndc2!YuKu3c^cbM+%^iLsBybUOQ~4UE|BO339-(i>Y5D#Hn2rP zVu4`C0d7xejjS*Kh@&E z+d$nxZjqZt8g8`VF>-6qAz8U@f0=RSlVEK8^G?9fL2?R zQjk6UjIFO-@<2%Z(D1mS=}k&pOMuaQK2g&%>&>h-B#*1`2jIHIKrgQK9BwZ%YMd4T_SVwsc#Z3u!0glO&30LFlZOiJ>@`&ZnU6Z<9HJ>Zi`!#iJmFP;Rf$1Rp6`a~Fn zXeo&FpGiuB)`rV3jFMQLhEt;i_ZB$0Eg5_3k})yK>iibt-z<MJXh>M8D&9&m4QpQSE`j_wdQ9iWmmb|0Bm%a-k& zHHmcRPi4DN=-T%zBATIQtKQP`g?G7KcBwhn=}qKW-&`T+{f>s5;B;1FCk0vvw(oRe z6)#@70nnYvKP#;`4&)j?dzn=0g7jiAsUJ zNr)#x_I}M{y?pic%K(XvZVnCu9zD!c-z=cRS+=*oOvV?==@Wz~7G9HY9k z&Y7VJx;rG<&I8gt@bhdpAAfdBSO@-L3nwH(2rS3N4+1jz0vC%z+@8KqdUXyr`8BnD z#q!i7R+#2gYJ+r#ARcd>$4a@Q^$(lPpmj2`1r!3LWmB48;{3=krTHbKWn+vc2sGJ| tvt+bpcB&64Y=#H-m|E!JgHKBW;1Au4U;D2T`V;^F002ovPDHLkV1jDC#4P{- diff --git a/lam/graphics/o.png b/lam/graphics/o.png deleted file mode 100644 index dfb89eb506b1b236e7f91e1351368a88278dae5b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1305 zcmV+!1?KvRP)RxWJLW5g}9|p#tJk zpsGZrwu#!bv`u2yj$iwjotd2n2U^r3zW3kf_#^mF8@)~J?d*_Ve~T)W2XV^F=i~Fx z8sjm>lmX!}7wK%i(67!;tPu&|?7w^VHnz6W!%`*mwl_EH8@*n?TCE;9LJv*`<88@B zDe%4NjLV~=XQ%h3seMHJ@C+(T;fRGb?}8s39H7-&4ce=#TbD0g{;a>V^TqP=^7U%1 zQ5!CDFNry!dFt*SK9@&hoT4ay@yp5gjN-RkBqJlahO_^Gg|G}un7`Uxzi{>H`(JNg zyz*tM+uP0I7lu5?Oaqb@u$U+0ctT4tY3|T4ZPl8(uTy^|K0m!>WHtm~7ywjO+O)FT zYd6+*zi995e-(DN`Y|o|QJTYA56wma^9ArIF-SGgs8>mqb!#H>ZoGOasiX54p7;TV zFTB=9AKMrAOS_k^ezJSz;G53o&VFOL9@NSO)XP3rssTF7Aw;ghbAti{0;f>)9hiq; zI!_ydb6718Ve&D%cKsUJ*xGIM_b%OB?X2x5ngz2&p;IqlDP$-x55`&)0w1mAGG4qK z;P}}9DNg~LAt;5_LaBUHr|h-{p0MU>n>L%R&U&}|VY~ZYZIWojsYK{GFcjbw2@cO< z{QBn$m@Gw{X2^4e@n`~@XDAgcDTQHMF#jV>aGPo42p6)&rP`(*qgG2~nZm+p_)6ks zX7JPDIqn|~kd9Ab`8gDiL9_s0Od*_vGcqt*@4>kSgS8|Rvhr${*8Ou1og2VfB;26k z2hheKP6g69!RTy=JRX8Li6R5EuMth>(77QdS9RxXh0W)4_@%Oj)yg@CFkoN-!STx( z0-s`Qt&Y!`kA8#Uju+wKgBc_jU``j zU#!%Nf#+dwy#`7N)*A&BsKX+PFpnZo;?QnZ;HnNm;K6tkETUNor;h+PV}Ct8b}lH5 z8lAN}-CqC3R&{CHXFfgHZKKEl3X4S);qHScc<}f+gh-GrViY|KpLwuW<*?Zk*!(`6 zoq4&GP)ce-J*_P1u%NWrs8xzS1tBotoMSedA&nyFJcAS|M&~n}497S<8=2|g^h_qx zTh53d0Xy&jKnd>RC`r>yD(BJGQmxXe6oW$OQ)0D*$}&)=5ikcr91!@3d8#MF!ALB| zKifR{4laKPAoTzM&OvLLJ8LFN@|jZ7H#)CbtwJs&5lWF%WQcj@=1Jm);}Ji3di-=g zd~w^z=v!EI55N?FA#eX7WdSYMYPD8p?dp1O>(kzP_v2!@e1SOE%7pNvIOXS)$#8IX zb~HLU{ev&2zdNIj05=7Y190zvuOr0si?x+zW4Y1T3`$`S&bIPgl|-gQ#?vuRq8BRT zr_SgJfDC{E-~izNz}G6JEC`s#eBU`6IBPv?t+U4D)*1!pasc)X^rpW7(S*2YTA$q9 P00000NkvXXu0mjfsIg_f diff --git a/lam/graphics/object.png b/lam/graphics/object.png deleted file mode 100644 index a77ff35caa86aad7478b687bce3b450ef8ca9352..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1297 zcmV+s1@8KZP)ZHQ(#!7&q(=@Mp^Y|DO`C7S)%lEvYS znalp|$ChPTNVb{q0~3?Qh%z@B5V zYM7?nBeb2!IjL*9m7-m)hVFcMgraip*1YT;OQBHTjL)ZWzA*#6#;mxw*qoSXInmg7 z@zIF?nlUMn=0VNuLxI7MfQ5t-r+b^5=`p=A^St zO<%oNU;nPfWU{l7i3t9@c^%c28YDe!T~t2Z3B#NMoVaL2hIJP^SYBZ&u-j|hUT=*p zGxNqnzu&*cEXsz|<}+t5H|(s=lQl<44+-f z!Typ1sL0ADp)lsOScDg1v7D=JcPyxBy8M=FA{k^mZuB`>AfTY4LV?k!VeX-f($Xr7 zzxX*09c#jejeo=MVHge7;P}zEVVw)W8jXT4E@JS~WdsNAFvC+dURH&k;_#4+nP~}C z)d~b*1}!aD;J$qqM$1b$)e=Lk(~LLE(vYI4$f~Z!)Wvq(YHfu|*(Xq#PalX4atj1R zbp2*RXZMd7_fEiINQBw!Bu6sx>~`eYY?yVsalf}0_b#--5RSk|q$*`kZAhken5Yhm zdYxAt=^bB@ODx7PKOcoC$`Az!2?=(Hk`X&xt`+%`Ce=Uya)io81Z$D0KmmOoCcHv0 z3&G(1;M7#VMi&BcuaGk$6h#9GQGlkYoJS*?RhHMQs7LbzDfiI#9I!;YZ8WVVREptn zu=}q&?UEpf6`JbW7Hi~zkvNMghlLce~yEvag_%j4;~IXyF6=5!Wh%=jjl$I}tIH~PypMG1D0 z&5S=3YVVntm=gsdKZmZTq49D49r)Dmz&Se9!(uFpYTw?e`g)XfeDL$?n_k4U{CwiUm_U-$T(p!& zNGJ3VW(g||pglB_s2_UY^ff)}1wxpxsi8YvRn4aCHyHg3Jt4T5K1yO300000NkvXX Hu0mjfxy5A^ diff --git a/lam/graphics/ou.png b/lam/graphics/ou.png deleted file mode 100644 index 3e767c7cebd18c77a3e8b98b3c5cded70444d3f5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1330 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 diff --git a/lam/graphics/process.png b/lam/graphics/process.png deleted file mode 100644 index e3495ebe5e51822e63a4b0be5df8106d835ba297..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 438 zcmV;n0ZIOeP)eb9CPl4OP;RS3Qq*fTku|cbLIUzj z0s!*+6wGESMMtG$?TEcr695o$fnX4jrSaCK$84r%f+OSt?p22Xiy;0g|ItsuM#$VV zL8-ZPHb+vA_?W{vJ4d7Zvnw+H5ixR>rG@<)57B)Wv6#WBdnDr=9)LfGn7&OBJ=_87 zQvXN*02bW=vza2Jc!Wl|sBVW``;u34@&57zKN6_67t5_&dZeNO%w|d^31Trrwf&FC gqhScA?xm4`11O4oV#)QVVgLXD07*qoM6N<$f+^Co%K!iX diff --git a/lam/graphics/refresh.png b/lam/graphics/refresh.png deleted file mode 100644 index 05fb5f3bcbd07cfd43958ab5ad0ddc9af28d821a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 785 zcmV+s1Md8ZP)GzA9e2YRW7ghxrDu zu(!FQSRJvP2VNPHQ_H<$YEpM+M>KG9N6sP8NCX$Fk*y;N@%~BN)_xPv48*7-mR!KL z$&gZBcK>nGqx)qw*yyNnFm5YE)3)mFfC!0Fz$(~TZ`M&$qXFyZ$`|e2R^rEDp zZvj4-o%EWWn1=@GtSWVR?1Lph1EBmGB?MRotN_9RZ7@8SjD;m4YK=hvbwDkU39JO> z^V_Y+!A6?kTLQwO))-2|!XpHb7!*d%iuard<7b?g^Pd+g1%J_AcY%qJWzCi P00000NkvXXu0mjfRzhEt diff --git a/lam/graphics/save.png b/lam/graphics/save.png deleted file mode 100644 index a7811a44fec7051d9c4e797fdc6a7cfb806e606f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 658 zcmV;D0&V??P)O(Ei9UoiK zTc;9b3QfR;IZ{gXCioVhzE;PBI~DLl22vETNf~0K)+$hvavo#$`YjVd#x8u=!cQEywyMlD{FPEEuE}Pxbm1GTR^$=*wRW<4lxa zRV^%2i%gLtQ1Q%IG2FApi)tD=NfAaNJkLXYtB-nZ5&a>_@Hlh4lN*({J7K`H4;xr~ zvZ2A8bI@}X(ICRRJqFj7otKVdf&?c;Q=ZF&fL?HA!=%P4R-FP+G@Yy|G(n@;knT^y zu9Pdfki}A(??|eTWLf{nUolwnMHQwlO^vJfR}q6CunhR=@{Ck-bap#B4X5N_QWEfk s0O4188=p)+6w>DmMWSQ+he<>&kwai;RP%G!BQHE)NWj~ zMXAsRDK6X6MK=|)h?}mYDcXe=L5kIwk{A^&n1PH*W+o=@&%LLM%nUJoNzH-7d+)w; zzwdtceD6L*a72M7U|0G1Prw0|*Qwuh3<1CO?B6Hbw>Jy$Bk%zb+bmFMo$;@K`2M^8 z_O|URo!(8dW=r?fy$5r^7%NI%IP8G2FEW`-|HB89a_g_#)YsM1*49cQ5kJ<^kv^78 zCaZ;7Yi4FFeu5L@>tSx-KIl zBk!F(dp7*&(W7^Qu&jWwpGHSVZ;27Ttue*Ie4g8P#z}X+LVbNbg+hTsp+K=%#Bm%B z9y~}Ym3n(KTl5gP^7)rv(cIj$w^S<8($Y#IkzjCekeZsU?AX!5p+ko_dh{q-Ym`#! z;Rh-JI0>BGxpNmMPJGDe)29iC!@SX(<>QY|U@6V;@HgDQf1kz0MT{|TM_+cr<1J|&;e)7aR^nKNf_T^A9lrssKx2-$3w zR4OIL7y-oheepa`+m|n2UKWvY-~sSEumwmwdGcgmXJ_ZPckkZC^E^tW5?x(gLX<5$8l(CYQk}x zN|T-P!k+8+hBk$j6LV>4iRI;GM1)u@MkEqhnQU2WE&3ljZAef#HH|TZLLq$Luaau5 z@qHhybwxqoffPibSosk}Dg+`@-4@q%tBNY`$`L8gdyXiGAOs|UOy$rEqF$YW~utOSM{ST-PNMiBv%y#~~C7k z2HpiaRw-4h5>}e3fvdo;z%#)AKLW~tq4KKiRds8x!ivRRz$@QB=cIoDmJ8@U{kAEW P00000NkvXXu0mjf?X@7& diff --git a/lam/graphics/server-small.png b/lam/graphics/server-small.png deleted file mode 100644 index 3d1e0f6f2d001067cbcea1886ebdbc288166253b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 818 zcmV-21I_%2P)4Q_ zK~#90wU#|g96=bzf46TJJzv-h1Y;XWagBwQkeEmy`Vp-C0M<6aGTk*6rm^)igg`3G zkm|rngMx$@WIb1J?{;@)pA^n6yXSerK?a7~nc4gQ{?9Yd3=99c)t*?lflp)BkAUx! z!tH~DgCniAD5WGx5{ctj`u)B{Q6#-yPxkls1^76T`p(YIky1*OQj(@=0T>Jh6-c|? z7U08UI?iJYmSw#;J3GU5-C{1wG5|z`EX&YZv%0zp@RmnX^(X+q^E|GvuM5E}%Mg)b z97Pdxb93V)#sktcErf@~%g~7cBErqh4O;6$c(^;xSbt9gn$0Fjl2qK6dmP84X*wAI zKq*BK1Y`HW_x;Huh@yyIuUE-?`8kRr=I7@p2l&2^@B4*Y+qNqpfUB#k$p8SIPKS$& z3w+iX#5b7uYVc} z))ubok|ar`n#%Pbh9R4qn*d)H78Wjn-@qyGt5&Q1agL9VyTC1Q!u{>(0M7dQ`fi^4 zQQ}%_9LGUK2!fyud=7#@0UAgF1!xDbjIal|z%yVDKx>WGx^kk+XJC4II*-HyW{hxR zGME9GlatJXZC;u!yG@ehL5U_wLcLzk0XEPFZj7E7fH-DQ-aQ9slp|0|Jva+-92c8x zqMk9S&P*@F@>VlWT)-*Ux^3G4m21MbZ9LB-j^iBA1VWR6!t^k}GS5+`(>dMS+k2Hm zM%_gK=jZ1Dzs&zVV^Wnx^JW?MQ$xLO=3VnnIi+G8_klYT!JXMp83o8Is#Y53bC#JO w-m{GRBFT*Nyl5UokdH@wX$;TFm~mz8AC;p_HNj{qe*gdg07*qoM6N<$f&eym5C8xG diff --git a/lam/graphics/star.png b/lam/graphics/star.png deleted file mode 100644 index 458c7304b98342f88215e5ccd0f30b12fea2b985..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 700 zcmV;t0z>_YP)`C>4?IXf6hSeiXrVT#6+*NTNhgYh zf{ivRYL!OBqYymM7?%X&6%E8S8#eCd-|N5s@3Y9Ek&SOL%{$M`Ff+h^ z=~Li_2d3z#jrSp_cB&-d6$abu!k+IP*TTvkH7Hq<;R8V}6XVVBrVl}SV2sejiYYhu zv{g^+{rNXcV|Ut8OBJiHQ4>cQ2PY^JBmfx_Bmg1^C01eat^J5?xr$_0g&8d)06+kc zx!1lviQMIw;qN9U07;ONKupf1KoS8g0vL%&n0L_s@4mZw2d-r2v2!IsF%%RYFKtMUyGeDJG=m>QPP(u-`qd7pn@`9 zN!5H`Ua5*Od!*-CFlTH&@w)oz)~;)?5k^$!LIAB*c+(6(IR7MdzHWgAZl)W!DEC@{ i?$|PZao_1j^YCwW_X9iEQV`7m0000)%Q5fn%!4!42+UDGb5N)zE?_QiOr03lY&vkw8=i<2%|2x6G zn2u@4#Xl&1EJFn@VhEE_jzx#qk|Of6p#P|of;D@H z&h=~KS>k0@1w}!AP!>Ga#?EHq_mwOEo=ybGn88y)I(YFuqPP3cNC=F-4w6hHI-8o} zGop>1L9SNn(^$QwjL3=R&) zxihE63?3R?bJKF-@WhG7g3p89!JeQo8Q}E;>|C<@FU!qjh9i?1_VZ6ilDF12 zSW#HmR?Xt-{{Ex$Ie`JRqZ$Q*r-#^EkR_fUB}d1O_v7n|ifAF)^7GFJn}hnGFqje;wzwtx6o^wNPsWb)_COSq z%CI`v8@xRZJ&iPOs9h*EuSV011#XyBs9@$?mrtL7+h$i*{&BhYlJ1@!-+uT}S07tT z=)%#Qgx~5nZI+r}>-hN|Wg{bwA3mrfD~8S>r?j}lOZV5=y6|q_@a{z}pe+X~)<5rH zCQp9B1T&j=srvE*UD=eUL^hwg0UBB!Ut!UVJB(CSnMZlTP%h?_%(`dx>EUboE}V7t z*F)Z9e-XE1>1Zn#jAvRMU#)9ze_+q0O9uEM_%XpVSdJ%P7fWBuw(nL9kA9pYbf7cg c`1SSw7dy%o^hCoiNdN!<07*qoM6N<$f=ecQasU7T diff --git a/lam/graphics/tools.png b/lam/graphics/tools.png deleted file mode 100644 index b391a0e8392aef528db3450a6ad70708d75d5d3b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 503 zcmV1`c4jv^a zu)KIs0uh982M-p41cI_d5ez+97Y~(+G@b3&N~ib-oK89ga~VEee(#XE7Dn&!{eIr( zectZ_|GBOJ07{$Zcb85i)w3YEs6X~r2D|T+by^3oD0C2zYQ6za5yYL zvmZa`;e!tAU#vRZ**C1DlU2`9T!0#z0|0W;X+0b0H<5-)PSiU%s-%-ucWhiwM<&(S z9MJKY_w##t()q|lyf%0iP;6v^n>VgAG4-B0? z{vz+5^Bq7*C#&9}xcXmC>u!6OZK*AD>9KU8(WrnPbMX4j+xdIDxg0y67ML81;okY9 tOrQwVTnz;6w9-G^2VNaZpy@PO{{}M@%mpE#!`A=+002ovPDHLkV1kCOpBOJxYwKVqHA9Jzp}L5ZV}}l<=%|P~se_?T z{tb2$f7Vh{+jMYH5C>60HbrR{ClTTza*M$jH8F{QnB<;wn-1Q4xi`0)^n=6s;k@tn ze&>4+{D<%Xb3hExj1e==eC3xtW%~gjG%*uWUN;5sRCv*)PC9$dub(??t$q=}Fz~|! zcRQpDmh7JNTzZmQdu%L_f)^EBhdENn@*@54|lmUVBfC52dEp{`^v%b z8CSVmq?CM}>Ia~AGK7>8DJ6yc1JUoF1mFiwD-43*;P|`)ETpugnP4FVB|Nmg>s5fD zT|sPdZM*qUy|BQtYzQH&wN@;!yE1nOv{V`dffvn@ zlDOhLon>=j!r`#?t}!Efo`dK&tBrOi4!mmchd=ai_@% diff --git a/lam/graphics/uid.png b/lam/graphics/uid.png deleted file mode 100644 index 7be48fb8cd09d6adfc48954e1907f38d3bb0c3b1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 654 zcmV;90&)F`P)jL%;Pn)6~ zp+z7;99L)q8&6i(@;pDhvS!nc7x4PcUW2hXn?r(7S4e~~4wNS)&tLR1=iDr~xz%s_ zpCYEMNeNI9QX-`U1SCOHp6#ty*-X@(cLimD^%ZdQkQYW-ZbURRu<80K^-R;In0T@uAMdL%H@{m-*2~J%XyJ%VN zE@#($GnW&I^uH7h;s`cp6e}0&OCWbNaqnkKr2DFgq@H3 zGts7?ud1dvE>`|~(zIvbA{ONS6{SQaYpg6)B3o60TPim(N oN=PK6hSf)_xH~Spv5tS$Z>|sW3LxX?DF6Tf07*qoM6N<$f^GL0UH||9 diff --git a/lam/graphics/uniquegroup.png b/lam/graphics/uniquegroup.png deleted file mode 100644 index c86d4a133b0357c7fb51d42a9cad7f9641a52246..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1356 zcmV-S1+)5zP)1$yWwj7!DoX?^F;SxkqLD}tjFI?(XxxGe ziF`no7>uX^qftZ9)L?=bC7=*dOo5`5Zg#Py?X)w~cBa#Lv%Hyi{m^MC7>Or2A8zis zXZ!!px$xg218&us@vf`T)jK868CRWZ0JtAW2NXcM!+VrF+~orMa@{%4u3W!DExx;0 zkxjDI)7ifg_&cRylKyXzfQ6;*Jh64d8d1Gsp>P#s3rUj39n}JEAPcahs{EIjZae1y zJApF5S(NYMnGH4c`G$CL&r$qBpxRB$n_*vSmf|0&c3E%k)(^M#=;weqU`(!Ja?f1A z?j@_%Jw1EDQd_{+Pj6>475OsHKlK1j9ld<@-6>w%u?&YJ13eN#Bs7lKUhsTS+qW^K z8J7VaNT!0^be@x)xzl1!+n;7qD40=6OT!fgy&eE;Rx`_&%;Mv{HK?i`fj~k+j|7O1 zcsO+A=ivLb-W^(ulRzXD#2D|Dv~5$3^xm7>`R4HJ6sL#CwBE#M-HJ-KKe>#q_DP`ojosYX3Jx%$yDtuo?FfhZ<3;dGA`D4@%70jw1^u+S-{!)SZp{<6Oft8JPnX1 zD3tGV7FEnFnVRRyV$1r~WU1-ctrjA&I0rvD!P?EcaH{E4SC%t>b}7~O%te-+{QAc* zb!}37M58rDOEY8hBac&2D#&$`ZnMzT)=gQ-R16^qjD%V2ceARkl&~7+t`aw+;RwE= zAZ5h`3b z`K9$Ix_Z4h9T^i~clCJD?a5gw5cNrP6iVljy)HEzIN)q=d}5&CI`u;uag&Jw|1hmr z8fd<9je$iSfr5p*(`E`l#7aqX(_hIfH2w3X#sCI{C!_Ev8K>!GNmgrB|8%UBxRMVeGu3dqh(N_ zL?CSn=mxwsvtYvJvkExg=mCK_)%)l;puU#Ird@{MjD!?P2tnI^g-Co1u#RKX#uf#T z5D?Qr7w~eEXTs*WMlX^~90@Pb55xfEqE`-EL;gGtm*;|&6DS-7{3$Bl`jcE+UQ}qn8bgT3wWO%gow-cO%B1CV z9jB9m*ybpX0)ZhQVSqLY(@QJsx(2U){^>yCq;Y`G$^LHH=X1~Z^w!^7_@#g!Bq&ca z5;gHqaEW1v8A#-KdmfS_2{CBN{I=bi!6n7Q=~yCi%_N&V#(_kP+vFd*mKm&c?b7!E O0000xE+LM=23Avq9X8iyEf61n8=k7jA z&#P@{o4WVxrI5JdiPM(ceerhgs&$thK3lb8Z(@3BWkY{NZ1(YMcXk{<+dgU9`TI}T z?AkwV@$$lo_P!|#W0MQpdS;)xd4K=8E7?VjAyH{F=dGSHYuWmJhj*Pkzvb|Wp6PRr zT)tUR-KP`S__pl z)kT_ETWZ=gScK&j;@S#ZC8Rmo3^IxfH8};vc%&8-OAE@V=y648Ybz;9XbKCeX))*| qW=lv+TCB#-&cK{i)+xMLMoUtXfkReSnOj$1o{dd~;Vy?GgEasXEQ<#K diff --git a/lam/graphics/user.png b/lam/graphics/user.png deleted file mode 100644 index 647e429718b673dbf819c032f24bd313fd55ab90..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 773 zcmV+g1N!`lP)2-8;Lr;ae?SlX0o?d^xWXUM zbK66O5SJ=ZLM5VBDoxs$lGyR$c)c?_!@+iB5Pi~DPkQq{@6EiKfq$CVDJubp}{;aS!@;H zD)60A;^vJjMrN@hjs#N&S2D%rrly@KMrF`G5P*lksh-0tQqZ}zVf?qBWgsM_3;Z?q zTw0ODT0rpp@bk#;zOFhxumZ4v34R|Fyjy^ax^EtLUgxwA@*XtbLWe8AcogqY1V03m>f zc2klX(OArC0T+qprNm!%*5Rd~_Dc^yg7*Q5C(*nFie>nCI0;V&u3@q7>w&MoP?*q@$#8Zc8~1iy}m8Vs^(zec(h+qInSg0l7oSxtZMf9w%9$g zkAai(&e}w`L)uz<(l_Jog|kdkQ#sGuV&+dLHOCXdlm3NqNbQ<-!`seQzlz@7FCPM2 zZ08?H-Ds~4clBEF8~aCR7zMV58yhL7s~=LdK6c(s`zQUw-vRXJ_rCc8AYHx4WNP{I zAg4I$;@uv{Zx3l+&MB^aM7nX4>znWEq+#;2;v@&q&Gr2JZzRgIe)T=L)aI*uU!$rK zb(FF9#}J~FBwa-+Npn2`Ku^l)3>6X~1UiZ-t)-oJx!c>~m!0QqzZw%qF}AJ=&Jn`w z9%WTos>)*ROd)urHf%q8K^-L9&t4$4Aq0P(vta%KGq5k;G0U|e00000NkvXXu0mjf D-(YCl diff --git a/lam/graphics/warn.png b/lam/graphics/warn.png deleted file mode 100644 index d6f2306dba4ece5c3880ef9e0f4ad3eb0c438bff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1968 zcmV;h2T%BkP)szen;P16#BP*Oor zp&$@asf0w7LQ@iuka&rN$_r|QkU$_Icp{c~3{De=t1#HDD6()?*I69)m1}-h5UL z#PqM<^Ma3GD;NqE5=y$;T-ErmIsYm!57@QN^Pvdn&1dEFY4^fNU|)Qv5HJ^j0+c{P zPi))>0UDsoT<00 z+>^j=AVr-itV;sD`K)|4?VcMk_KR;9g2e^hb6PMK28IlcX+eylv0E5&j;EX_W~_SdrdJ|=P$vo=`dpg6Zz{<{ zDFubls1?u4^PYrPXluf(zDb``mQ%ePhTS9YHAUf;Pz^WCpzD!#9FKSHKUVI^FO+gvB{ z$yDs?f1a9qoA3d^vbUZ!ClI;+e%X1a+Wm6!02B8EPM#a%#Mv>1$IS!e%dfXq=sp=9 zwHvi&i{l(}9H)~NT53%KBKJQqcJZv=b4D*&wB>}(|7x0dhYUAv8Giexxn;>mNVG4U zR7L2FyDfWS`UKFzLt1K00!9xW)<)FJL*;9K$MSAQn4At!3gR&#l~BuG8@1PL*TS9v zG-<_lM?dYl?sg!)9JduWi;MZ3JUjWpxiKrB9w_(#?0V59vvv8U6A?PN$K|d6`n>Q= z11~(2M2ReWZ3H)MnYa$F5~fU$`{(rBrBo_4w@ujq0M#TyA!de z`)6kUv48*mvA({(2a0(`0oUezHRzeghdhI!a?Mp2<(ZL^~iDW!Ca7A3%DSE(2Z zE#cD!S4vVcN|C5ON|y;(j=X0r_f5e4z{W+S%XQu6VzD?%)s25G8=3Ju?=J9nrIbHy z>6rF{CJ0i5J-UIgOC*3;N{O>sD{U8gw*oq2TKko&X_0kBG8ICw_XBIkjhOHO6wsiQ zY9dTaRw2L_k$b>(W6a-x+kjt>fTaXQqNM6i6P_Xy4Gj$rAl6!Uety1z`VuG*o`)tD z-dDu%Vf}}u+~w$1Reiq_Y}so-ozG4;uz?MH#PNTLJI@&1HX;ZB0000 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.") . - "

" . - _("Examples") . - ":

" . - _("ldap://localhost:389 connects to localhost using a standard LDAP connection on port 389") . - "
" . - _("ldaps://141.40.146.133 connects to 141.40.146.133 using an encrypted LDAP connection.") . - "


" . - _("Note") . - ":

" . - _("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.") . - "

". - _("Examples"). - ":

". - _("ou=People,dc=yourcompany,dc=com will read and store all accounts in this subtree.")), - "203" => array ("ext" => "FALSE", "Headline" => _("Configuration wizard") . " - " . _("Tree suffix"), - "Text" => _("This is the suffix for the LDAP tree viewer.") . - "

". - _("Example"). - ":

". - _("dc=yourcompany,dc=com")), - "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.") . - "

" . - _("Example") . - ": #homeDirectory;#uid;#uidNumber;#gidNumber;mail:Mail address


" . - _("Predefined values") . - ":

" . - _("Users") . - ": #uid, #uidNumber, #gidNumber, #cn, #host, #givenName, #sn, #homeDirectory, #loginShell, #mail, #gecos". - "
" . - _("Groups") . - ": #cn, #gidNumber, #memberUID, #member, #description". - "
" . - _("Hosts") . - ": #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.") . - "

" . - _("Example") . - ": 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."). - "

". - _("Use it at your own risk and read the documentation for lamdaemon before you use it!"). - ""), - "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 user name and password provided at login."). - "

". - _("Use it at your own risk and read the documentation for lamdaemon before you use it!"). - ""), - "212" => array ("ext" => "FALSE", "Headline" => _("Configuration wizard") . " - " . _("Change password"), - "Text" => _("If you want to change the current preferences password, please enter it here.")), - "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.")), - "216" => array ("ext" => "FALSE", "Headline" => _("Configuration wizard") . " - " . _("Text for user PDF"), - "Text" => _("This text will appear on top of every user PDF file.")), - "217" => array ("ext" => "FALSE", "Headline" => _("Configuration wizard") . " - " . _("Account modules"), - "Text" => _("Here you can select which plugins you want to use for account management.")), - "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\".")), - "237" => array ("ext" => "FALSE", "Headline" => _("Configuration wizard") . " - " . _("Base module"), - "Text" => _("Every account type needs exactly one base module. This module provides a structural object class.")), - "250" => array ("ext" => "FALSE", "Headline" => _("Account lists - Filters"), - "Text" => _("Here you can input small filter expressions (e.g. 'value' or 'v*'). LAM will filter case-insensitive.")), - // 300 - 399 - // Roland Gruber - // profile editor, file upload - "301" => array ("ext" => "FALSE", "Headline" => _("RDN identifier"), - "Text" => _("This is the identifier for the relative DN value. It must be one of the given allowed LDAP attributes (e.g. user accounts usually use \"uid\" while groups use \"cn\").")), - "360" => array ("ext" => "FALSE", "Headline" => _("Profile name"), - "Text" => _("Name under which the profile will be saved. If a profile with the same name exists, it will be overwritten.")), - "361" => array ("ext" => "FALSE", "Headline" => _("DN suffix"), - "Text" => _("The new account will be saved under this LDAP suffix.")), - // 400 - 599 - // unused - - // 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 values between the [] brackets. - - "[HelpNumber]" => array ("ext" => "FALSE", "Headline" => _("[Headline]"), "Text" => _("[Text]"), "SeeAlso" => "[SeeAlso link]"), - "999" => array ("ext" => "FALSE", "Headline" => _("This is a sample entry"), "Text" => _("Sample text"), "SeeAlso" => "http://lam.sf.net"), - - - If help text is located in an extra file then the file must be stored in help directory. - The 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]), - "999" => array ("ext" => "TRUE", "Link" => "extra.htm), - - - Syntax: - ======= - - HelpNumber: numeric value - ext: FALSE if help entry is located in this file, TRUE if external help page - Headline: topic of help entry - Text: help text (ext = FALSE) - SeeAlso: URL to additional information (ext = FALSE, optional) - Link: relative URL to external help page (ext = TRUE) -*/ -?> diff --git a/lam/index.html b/lam/index.html deleted file mode 100644 index 27b83977..00000000 --- a/lam/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - -LDAP Account Manager - - - - - \ No newline at end of file diff --git a/lam/lib/.htaccess b/lam/lib/.htaccess deleted file mode 100644 index 9e4eb6a5..00000000 --- a/lam/lib/.htaccess +++ /dev/null @@ -1,8 +0,0 @@ - - Order allow,deny - Deny from all - - - Order allow,deny - Allow from all - diff --git a/lam/lib/account.inc b/lam/lib/account.inc deleted file mode 100644 index c4730b29..00000000 --- a/lam/lib/account.inc +++ /dev/null @@ -1,554 +0,0 @@ - $i) { - // remove whitespaces - trim($shells[$i]); - // remove lineend - $shells[$i] = substr($shells[$i], 0, strpos($shells[$i], "\n")); - // remove comments - if ($shells[$i]{0}=='#') unset ($shells[$i]); - else $i++; - } - // $shells is array with all valid shells - return $shells; - } - else return array(); -} - - -/* This function will replace umlates with ascci-chars -* fixme *** -* In order to map all non-ascii characters this function should be changed -*/ -/* This function will return all values from $array without values of $values -* $values, $array and $return are arrays -*/ -function array_delete($values, $array) { - // Loop for every entry and check if it should be removed - if (is_array($array)) { - $return = array(); - foreach ($array as $array_value) - if (!@in_array($array_value, $values)) - $return[] = $array_value; - return $return; - } - else return array(); - } - - -// This function will return a password with max. 8 characters -function genpasswd() { - // Allowed Characters to generate passwords - // I'Ve removed characters like l and 1 because they are too similar - $LCase = 'abcdefghjkmnpqrstuvwxyz'; - $UCase = 'ABCDEFGHJKMNPQRSTUVWXYZ'; - $Integer = '23456789'; - // DEFINE CONSTANTS FOR ALGORTTHM - define("LEN", '1'); - $a = RndInt('letter'); - $b = RndInt('letter'); - $c = RndInt('letter'); - $d = RndInt('letter'); - $e = RndInt('number'); - $f = RndInt('number'); - $g = RndInt('letter'); - $h = RndInt('letter'); - // EXTRACT 8 CHARACTERS RANDOMLY FROM TH // E DEFINITION STRINGS - $L1 = substr($LCase, $a, LEN); - $L2 = substr($LCase, $b, LEN); - $L3 = substr($LCase, $h, LEN); - $U1 = substr($UCase, $c, LEN); - $U2 = substr($UCase, $d, LEN); - $U3 = substr($UCase, $g, LEN); - $I1 = substr($Integer, $e, LEN); - $I2 = substr($Integer, $f, LEN); - // COMBINE THE CHARACTERS AND DISPLAY TH // E NEW PASSWORD - $PW = $L1 . $U2 . $I1 . $L2 . $I2 . $U1 . $U3 . $L3; - return $PW; - } - - -/* THIS FUNCTION GENERATES A RANDOM NUMBER THAT WILL BE USED TO -* RANDOMLY SELECT CHARACTERS FROM THE STRINGS ABOVE -*/ -function RndInt($Format){ - switch ($Format){ - case 'letter': - $Rnd = rand(0,23); - if ($Rnd > 23){ - $Rnd = $Rnd - 1; - } - break; - case 'number': - $Rnd = rand(2,9); - if ($Rnd > 8){ - $Rnd = $Rnd - 1; - } - break; - } - return $Rnd; - } // END RndInt() FUNCTION - -// This function will return the days from 1.1.1970 until now -function getdays() { - $days = time() / 86400; - settype($days, 'integer'); - return $days; - } - -/* This function creates all attributes stored in attrFlags. It's the same -* syntax used in smbpasswd -* $values is an array of samba flags as defined in account object -* Return value is a string -*/ -function smbflag($input) { - // Start character - $flag = "["; - // Add Options - if ($input['W']) $flag .= "W"; else $flag .= "U"; - if ($input['D']) $flag .= "D"; - if ($input['X']) $flag .= "X"; - if ($input['N']) $flag .= "N"; - if ($input['S']) $flag .= "S"; - if ($input['H']) $flag .= "H"; - // Expand string to fixed length - $flag = str_pad($flag, 12); - // End character - $flag = $flag. "]"; - return $flag; - } - -/** -* Generates the LM hash of a password. -* -* @param string password original password -* @return string password hash -*/ -function lmPassword($password) { - $hash = new smbHash(); - return $hash->lmhash($password); -} - -/** -* Generates the NT hash of a password. -* -* @param string password original password -* @return string password hash -*/ -function ntPassword($password) { - $hash = new smbHash(); - return $hash->nthash($password); -} - - - - -/** -* Returns the hash value of a plain text password -* the hash algorithm depends on the configuration file -* -* @param string $password the password string -* @param boolean $enabled marks the hash as enabled/disabled (e.g. by prefixing "!") -* @param string $hashType password hash type (CRYPT, SHA, SSHA, MD5, SMD5, PLAIN) -* @return string the password hash -*/ -function pwd_hash($password, $enabled = true, $hashType = 'SSHA') { - // check for empty password - if (! $password || ($password == "")) { - return ""; - } - // calculate new random number - $_SESSION['ldap']->new_rand(); - $hash = ""; - switch ($hashType) { - 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 -* -* @param string $hash hash value to enable -* @return string enabled password hash -*/ -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 -* -* @param string $hash hash value to disable -* @return string disabled hash value -*/ -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 -* -* @param string $hash password hash to check -* @return boolean 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; -} - - /** - * Returns an array with all Samba 3 domain entries under the given suffix - * - * @param string $suffix search suffix - * @return array list of samba3domain objects - */ - function search_domains($suffix) { - $ret = array(); - $attr = array("DN", "sambaDomainName", "sambaSID", "sambaNextRid", "sambaNextGroupRid", - "sambaNextUserRid", "sambaAlgorithmicRidBase"); - $sr = @ldap_search($_SESSION['ldap']->server(), $suffix, "objectClass=sambaDomain", $attr); - if ($sr) { - $units = ldap_get_entries($_SESSION['ldap']->server, $sr); - // delete count entry - unset($units['count']); - // 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]; - if (isset($units[$i]['sambanextrid'][0])) $ret[$i]->nextRID = $units[$i]['sambanextrid'][0]; - if (isset($units[$i]['sambanextgrouprid'][0])) $ret[$i]->nextGroupRID = $units[$i]['sambanextgrouprid'][0]; - if (isset($units[$i]['sambanextuserrid'][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, "cmp_domain"); - } - return $ret; - } - - /** - * Helper function to sort the domains - * - * @param string $a first argument to compare - * @param string $b second argument to compare - * @return integer 0 if equal, 1 if $a is greater, -1 if $b is greater - */ - 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 -* -* @package modules -*/ -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; -} - -/** This functions contains a collection of regular expressions -* It's much easier to handle them here than in every module -* because many of them are used several times. -**/ -function get_preg($argument, $regexp) { - /* Bug in php preg_match doesn't work correct with utf8 - */ - $language = explode(":", $_SESSION['language']); - $language2 = explode ('.', $language[0]); - setlocale(LC_ALL, $language2[0]); - // First we check "positive" cases - $pregexpr = ''; - switch ($regexp) { - case 'password': // fixme where do i get an exact regexp? - $pregexpr = '/^([[:alnum:]\\ \\|\\#\\*\\,\\.\\;\\:\\_\\+\\!\\%\\&\\/\\?\\{\\(\\)\\}-])*$/u'; - break; - case 'cn': // first character must be a letter. All letters, numbers, space and @._- are allowed characters - $pregexpr = '/^[[:alpha:]]([[:alnum:]@\\.\\ \\_-])*$/u'; - break; - case 'groupname': // first character must be a letter. All letters, numbers, space and ._- are allowed characters - case 'username': // first character must be a letter. All letters, numbers, space and ._- are allowed characters - $pregexpr = '/^[[:alpha:]]([[:alnum:]\\.\\ \\_-])*$/u'; - break; - case 'usernameList': // comma separated list of user names - case 'groupnameList': // comma separated list of group names - $pregexpr = '/^[[:alpha:]]([[:alnum:]\\.\\ \\_-])*(,[[:alpha:]]([[:alnum:]\\.\\ \\_-])*)*$/u'; - break; - case 'hostname': // first character must be letter, last must be $. Only normal letters, numbers and ._- are allowed - $pregexpr = '/^[a-zA-Z]([a-zA-Z0-9\\.\\_-])*\\$$/u'; - break; - case 'realname': // Allow all letters, space and .-_ - $pregexpr = '/^[[:alpha:]]([[:alpha:]\\.\\ \\_-])*$/u'; - break; - case "telephone": // Allow numbers, space, brackets, /-+. - $pregexpr = '/^(\\+)*([0-9\\.\\ \\(\\)\\/-])*$/'; - break; - case "email": - $pregexpr = '/^([0-9a-z\\._-])+[@]([0-9a-z-])+([.]([0-9a-z-])+)*$/'; - break; - case "street": // Allow all letters, numbers, space and .-_ - $pregexpr = '/^([[:alnum:]\\.\\ \\_-])*$/u'; - break; - case "postalAddress": // Allow all letters, numbers, space and .-_ - case "postalCode": // Allow all letters, numbers, space and .-_ - case "title": // Allow all letters, numbers, space and .-_ - case "employeeType": // Allow all letters, numbers, space and .-_ - $pregexpr = '/^([[:alnum:]\\.\\ \\_-])*$/u'; - break; - case "homeDirectory": // Homapath, /path/...... - $pregexpr = '/^([\/]([[:alnum:]\\$\\.\\ \\_-])+)+$/u'; - break; - case "digit": // Normal number - $pregexpr = '/^[[:digit:]]*$/'; - break; - case "UNC": // UNC Path, e.g. \\server\share\folder\... - $pregexpr = '/^((([\\\][\\\])|(%))([a-zA-Z0-9%\\.-])+)([\\\]([[:alnum:]%\\.\\$\\ \\_-])+)+$/u'; - break; - case "logonscript": // path to login-script. normal unix file - $pregexpr = '/^(([\/])*([[:alnum:]%\\.\\ \\_-])+([\/]([[:alnum:]%\\.\\ \\_-])+)*((\\.bat)|(\\.cmd)|(\\.exe)))*$/u'; - break; - case "workstations": // comma separated list with windows-hosts - $pregexpr = '/^(([a-zA-Z0-9\\.\\_-])+(,[a-zA-Z0-9\\.\\_-])*)*$/'; - break; - case "domainname": // Windows Domainname - $pregexpr = '/^([a-z0-9\\.\\_-])+$/'; - break; - case "unixhost": // Unix hosts - $pregexpr = '/^([a-z0-9,\\.\\_-])*$/'; - break; - case 'digit2': // Same as digit but also -1 - $pregexpr = '/^(([-][1])|([[:digit:]]*))$/'; - break; - case 'gecos': - $pregexpr = '/^[a-zA-z0-9 \\._-]+([,][a-zA-z0-9 \\._-]+)*$/'; - break; - case 'macAddress': - $pregexpr = '/^[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}$/'; - break; - case 'date': - $pregexpr = '/^((0[1-9])|([1-2][0-9])|30|31)\\-((0[1-9])|(1[0-2]))\\-[1-3][0-9][0-9][0-9]$/'; - break; - case 'sambaLogonHours': - $pregexpr = '/^[0-9a-fA-F]{42}$/'; - break; - case 'DNSname': - $pregexpr = '/^[0-9a-zA-Z_-]+(\\.[0-9a-zA-Z_-]+)*$/'; - break; - case 'nis_alias': - $pregexpr = '/^([[:alnum:]])+$/u'; - break; - case 'nis_recipient': - $pregexpr = '/^([[:alnum:]@\\.\\ \\_-])+$/u'; - break; - case 'country': // Allow all letters and space - $pregexpr = '/^[[:alpha:]]([[:alpha:] ])+$/u'; - break; - case 'dn': // LDAP DN - $pregexpr = '/^([^=,]+=[^=,]+)(,([^=,]+=[^=,]+))*$/'; - break; - } - if ($pregexpr!='') - if (preg_match($pregexpr, $argument)) { - /* Bug in php preg_match doesn't work correct with utf8 - */ - setlocale(LC_ALL, $language[0]); - return true; - } - // Now we check "negative" cases, characters which are not allowed - $pregexpr = ''; - switch ($regexp) { - case "!lower": - $pregexpr = '/[[:lower:]]/'; - break; - case "!upper": - $pregexpr = '/[[:upper:]]/'; - break; - case "!digit": - $pregexpr = '/[[:digit:]]/'; - break; - } - if ($pregexpr!='') - if (!preg_match($pregexpr, $argument)) { - /* Bug in php preg_match doesn't work correct with utf8 - */ - setlocale(LC_ALL, $language[0]); - return true; - } - /* Bug in php preg_match doesn't work correct with utf8 - */ - setlocale(LC_ALL, $language[0]); - return false; -} - - -?> diff --git a/lam/lib/baseModule.inc b/lam/lib/baseModule.inc deleted file mode 100644 index df01944f..00000000 --- a/lam/lib/baseModule.inc +++ /dev/null @@ -1,610 +0,0 @@ -scope = $scope; - $this->load_Messages(); - $this->meta = $this->get_metaData(); - if (isset($_SESSION['config'])) $this->moduleSettings = $_SESSION['config']->get_moduleSettings(); - } - - /** - * This function fills the $messages variable with output messages from this module. - */ - function load_Messages() { - } - - /** - * Initializes the module after it became part of an accountContainer - * - * @param string $base the name of the accountContainer object ($_SESSION[$base]) - */ - function init($base) { - $this->base = $base; - // Create Arrays with ldap attributes - $this->attributes =& $_SESSION[$this->base]->get_module_attributes(get_class($this)); - $this->orig =& $_SESSION[$this->base]->get_module_attributes(get_class($this), true); - $line=-1; - for ($i=0; $iobjectClasses) || $i==-1; $i++) { - if (strpos(strtolower($_SESSION['ldap']->objectClasses[$i]), strtolower("NAME '".get_class($this)."'"))) $line = $i; - } - $objectClassName = substr($_SESSION['ldap']->objectClasses[$line], 6+strpos($_SESSION['ldap']->objectClasses[$line], "NAME '"), strlen(get_class($this)) ); - $this->attributes['objectClass'][0] = $objectClassName; - } - - - /** - * This function loads all standard LDAP attributes. It is used - * by the modules to reduce code - * - * @param array $attr attribute list - */ - function load_attributes($attr) { - // Load attributes which are displayed - $objectClassName = $this->attributes['objectClass']; - $attributes = array_keys($attr); - foreach ($attributes as $attribute) { - if (isset($this->attributes[$attribute])) { - // decode as unicode - $this->attributes[$attribute] = $attr[$attribute]; - $this->orig[$attribute] = $attr[$attribute]; - } - } - $this->attributes['objectClass'] = $objectClassName; - if (in_array($objectClassName[0], $attr['objectClass'])) - $this->orig['objectClass'] = $objectClassName; - else $this->orig['objectClass'] = array(); - return 0; - } - - /** - * Dummy function, meta data is provided by sub classes. - * - * @return array empty array - */ - function get_metaData() { - return array(); - } - - /** - * Returns the account type of this module (user, group, host) - * - * @return string account type - */ - function get_scope() { - return $this->scope; - } - - /** - * Returns true if this module fits for the current scope. - * - * @return boolean true if module fits - */ - function can_manage() { - if (is_array($this->meta["account_types"]) && in_array($this->scope, $this->meta["account_types"])) return true; - else return false; - } - - /** - * Returns true if this module is enough to provide a sensible account. - * - * There is no relation to the name of this class. - * - * @return boolean true if base module - */ - function is_base_module() { - if ($this->meta['is_base'] == true) return true; - else return false; - } - - /** - * returns an LDAP filter for the account lists - * - * @return string LDAP filter - */ - function get_ldap_filter() { - if (isset($this->meta['ldap_filter'])) return $this->meta['ldap_filter']; - else return ""; - } - - /** - * Returns an alias name for the module. - * - * This alias is used in various places instead of the less descriptive class name. - * The alias also has less syntax restrictions and may contain spaces or special characters. - * - * @return string alias name - */ - function get_alias() { - if (isset($this->meta['alias'])) return $this->meta['alias']; - else return get_class($this); - } - - /** - * Returns a list of possible LDAP attributes which can be used to form the RDN. - * - * The returned elements have this form: => - *
is the name of the LDAP attribute - *
defines the priority of the attribute (can be "low", "normal", "high") - * - * @return array list of attributes - */ - function get_RDNAttributes() { - if (isset($this->meta['RDN'])) return $this->meta['RDN']; - else return array(); - } - - /** - * This function returns a list with all depending and conflicting modules. - * - * @return array list of dependencies and conflicts - */ - function get_dependencies() { - if (isset($this->meta['dependencies'])) return $this->meta['dependencies']; - else return array('depends' => array(), 'conflicts' => array()); - } - - /** - * Returns a list of elements for the account profiles. - * - * @return profile elements - */ - function get_profileOptions() { - if (isset($this->meta['profile_options'])) return $this->meta['profile_options']; - else return array(); - } - - /** - * Checks input values of account profiles. - * - * @param array $options a hash array (name => value) containing the options - * @return array list of error messages (array(type, title, text)) to generate StatusMessages, if any - */ - function check_profileOptions($options) { - $messages = array(); - if (is_array($this->meta['profile_checks'])) { - $identifiers = array_keys($this->meta['profile_checks']); - for ($i = 0; $i < sizeof($identifiers); $i++) { - // empty input - if (($options[$identifiers[$i]][0] == '') || !isset($options[$identifiers[$i]][0])) { - // check if option is required - if ($this->meta['profile_checks'][$identifiers[$i]]['required']) { - $messages[] = $this->meta['profile_checks'][$identifiers[$i]]['required_message']; - } - continue; - } - switch ($this->meta['profile_checks'][$identifiers[$i]]['type']) { - // check by regular expression (from account.inc) - case "ext_preg": - // ignore empty fileds - if ($options[$identifiers[$i]][0] == '') continue; - if (! get_preg($options[$identifiers[$i]][0], $this->meta['profile_checks'][$identifiers[$i]]['regex'])) { - $messages[] = $this->meta['profile_checks'][$identifiers[$i]]['error_message']; - } - break; - // check by regular expression (case insensitive) - case 'regex_i': - // ignore empty fileds - if ($options[$identifiers[$i]][0] == '') continue; - if (! eregi($this->meta['profile_checks'][$identifiers[$i]]['regex'], $options[$identifiers[$i]][0])) { - $messages[] = $this->meta['profile_checks'][$identifiers[$i]]['error_message']; - } - break; - // check by regular expression (case sensitive) - case 'regex': - // ignore empty fileds - if ($options[$identifiers[$i]][0] == '') continue; - if (! ereg($this->meta['profile_checks'][$identifiers[$i]]['regex'], $options[$identifiers[$i]][0])) { - $messages[] = $this->meta['profile_checks'][$identifiers[$i]]['error_message']; - } - break; - // check by integer comparison (greater) - case 'int_greater': - // ignore if both fields are empty - if (($options[$this->meta['profile_checks'][$identifiers[$i]]['cmp_name1']][0] == '') && ($options[$this->meta['profile_checks'][$identifiers[$i]]['cmp_name2']][0] == '')) continue; - // print error message if only one field is empty - if (($options[$this->meta['profile_checks'][$identifiers[$i]]['cmp_name1']][0] == '') || ($options[$this->meta['profile_checks'][$identifiers[$i]]['cmp_name2']][0] == '')) { - $messages[] = $this->meta['profile_checks'][$identifiers[$i]]['error_message']; - continue; - } - // compare - if (!(intval($options[$this->meta['profile_checks'][$identifiers[$i]]['cmp_name1']][0]) > intval($options[$this->meta['profile_checks'][$identifiers[$i]]['cmp_name2']][0]))) { - $messages[] = $this->meta['profile_checks'][$identifiers[$i]]['error_message']; - } - break; - // check by integer comparison (greater or equal) - case 'int_greaterOrEqual': - // ignore if both fields are empty - if (($options[$this->meta['profile_checks'][$identifiers[$i]]['cmp_name1']][0] == '') && ($options[$this->meta['profile_checks'][$identifiers[$i]]['cmp_name2']][0] == '')) continue; - // print error message if only one field is empty - if (($options[$this->meta['profile_checks'][$identifiers[$i]]['cmp_name1']][0] == '') || ($options[$this->meta['profile_checks'][$identifiers[$i]]['cmp_name2']][0] == '')) { - $messages[] = $this->meta['profile_checks'][$identifiers[$i]]['error_message']; - continue; - } - // compare - if (!(intval($options[$this->meta['profile_checks'][$identifiers[$i]]['cmp_name1']][0]) >= intval($options[$this->meta['profile_checks'][$identifiers[$i]]['cmp_name2']][0]))) { - $messages[] = $this->meta['profile_checks'][$identifiers[$i]]['error_message']; - } - break; - // print error message for invalid types - default: - StatusMessage("ERROR", "Unsupported type!", $this->meta['profile_checks'][$identifiers[$i]]['type']); - break; - } - } - } - return $messages; - } - - /** - * Loads the values of an account profile into internal variables. - * - * @param array $profile hash array with profile values (identifier => value) - */ - function load_profile($profile) { - if (isset($this->meta['profile_mappings'])) { - $identifiers = array_keys($this->meta['profile_mappings']); - for ($i = 0; $i < sizeof($identifiers); $i++) { - if (isset($profile[$identifiers[$i]])) { - $this->attributes[$this->meta['profile_mappings'][$identifiers[$i]]] = $profile[$identifiers[$i]]; - } - } - } - } - - /** - * Returns a list of elements for the configuration. - * - * @param array $scopes account types (user, group, host) - * @return array configuration elements - */ - function get_configOptions($scopes) { - $return = array(); - for ($i = 0; $i < sizeof($scopes); $i++) { - if (isset($this->meta['config_options'][$scopes[$i]])) $return = array_merge($return, $this->meta['config_options'][$scopes[$i]]); - } - if (isset($this->meta['config_options']['all'])) $return = array_merge($return, $this->meta['config_options']['all']); - return $return; - } - - /** - * Returns an array containing descriptions shown on configuration pages. - * - * The returned array has the format array('legend' => '...', descriptions => array('option1' => '...', ...)). - *
The "legend" value is used as text for the fieldset, the descriptions are used when the configuration is printed. - * - * @return array configuration elements - */ - function get_configDescriptions() { - $return = array('legend' => 'no description', 'descriptions' => array()); - if (isset($this->meta['config_descriptions'])) $return = $this->meta['config_descriptions']; - return $return; - } - - /** - * Checks input values of module settings. - * - * @param array $scopes list of account types which are used - * @param array $options hash array containing the settings (array('option' => array('value'))) - * @return array list of error messages - */ - function check_configOptions($scopes, $options) { - $messages = array(); - $scopes[] = 'all'; // add checks that are independent of scope - for ($s = 0; $s < sizeof($scopes); $s++) { - if (is_array($this->meta['config_checks'][$scopes[$s]])) { - $identifiers = array_keys($this->meta['config_checks'][$scopes[$s]]); - for ($i = 0; $i < sizeof($identifiers); $i++) { - // check if option is required - if ($this->meta['config_checks'][$scopes[$s]][$identifiers[$i]]['required'] && ($options[$identifiers[$i]][0] == '')) { - $messages[] = $this->meta['config_checks'][$scopes[$s]][$identifiers[$i]]['required_message']; - } - switch ($this->meta['config_checks'][$scopes[$s]][$identifiers[$i]]['type']) { - // check by regular expression (from account.inc) - case "ext_preg": - // ignore empty fileds - if ($options[$identifiers[$i]][0] == '') continue; - if (! get_preg($options[$identifiers[$i]][0], $this->meta['config_checks'][$scopes[$s]][$identifiers[$i]]['regex'])) { - $messages[] = $this->meta['config_checks'][$scopes[$s]][$identifiers[$i]]['error_message']; - } - break; - // check by regular expression (case insensitive) - case "regex_i": - // ignore empty fileds - if ($options[$identifiers[$i]][0] == '') continue; - if (! eregi($this->meta['config_checks'][$scopes[$s]][$identifiers[$i]]['regex'], $options[$identifiers[$i]][0])) { - $messages[] = $this->meta['config_checks'][$scopes[$s]][$identifiers[$i]]['error_message']; - } - break; - // check by regular expression (case sensitive) - case "regex": - // ignore empty fileds - if ($options[$identifiers[$i]][0] == '') continue; - if (! ereg($this->meta['config_checks'][$scopes[$s]][$identifiers[$i]]['regex'], $options[$identifiers[$i]][0])) { - $messages[] = $this->meta['config_checks'][$scopes[$s]][$identifiers[$i]]['error_message']; - } - break; - // check by integer comparison (greater) - case "int_greater": - // ignore if both fields are empty - if (($options[$this->meta['config_checks'][$scopes[$s]][$identifiers[$i]]['cmp_name1']][0] == '') && ($options[$this->meta['config_checks'][$scopes[$s]][$identifiers[$i]]['cmp_name2']][0] == '')) continue; - // print error message if only one field is empty - if (($options[$this->meta['config_checks'][$scopes[$s]][$identifiers[$i]]['cmp_name1']][0] == '') || ($options[$this->meta['config_checks'][$scopes[$s]][$identifiers[$i]]['cmp_name2']][0] == '')) { - $messages[] = $this->meta['config_checks'][$scopes[$s]][$identifiers[$i]]['error_message']; - continue; - } - // compare - if (!(intval($options[$this->meta['config_checks'][$scopes[$s]][$identifiers[$i]]['cmp_name1']][0]) > intval($options[$this->meta['config_checks'][$scopes[$s]][$identifiers[$i]]['cmp_name2']][0]))) { - $messages[] = $this->meta['config_checks'][$scopes[$s]][$identifiers[$i]]['error_message']; - } - break; - // check by integer comparison (greater or equal) - case "int_greaterOrEqual": - // ignore if both fields are empty - if (($options[$this->meta['config_checks'][$scopes[$s]][$identifiers[$i]]['cmp_name1']][0] == '') && ($options[$this->meta['config_checks'][$scopes[$s]][$identifiers[$i]]['cmp_name2']][0] == '')) continue; - // print error message if only one field is empty - if (($options[$this->meta['config_checks'][$scopes[$s]][$identifiers[$i]]['cmp_name1']][0] == '') || ($options[$this->meta['config_checks'][$scopes[$s]][$identifiers[$i]]['cmp_name2']][0] == '')) { - $messages[] = $this->meta['config_checks'][$scopes[$s]][$identifiers[$i]]['error_message']; - continue; - } - // compare - if (!(intval($options[$this->meta['config_checks'][$scopes[$s]][$identifiers[$i]]['cmp_name1']][0]) >= intval($options[$this->meta['config_checks'][$scopes[$s]][$identifiers[$i]]['cmp_name2']][0]))) { - $messages[] = $this->meta['config_checks'][$scopes[$s]][$identifiers[$i]]['error_message']; - } - break; - // print error message on undefined type - default: - StatusMessage("ERROR", "Unsupported type!", $this->meta['config_checks'][$scopes[$s]][$identifiers[$i]]['type']); - break; - } - } - } - } - return $messages; - } - - /** - * Returns an array with all fields available for this account type on the PDF - * output. This method may be overwritten by subclasses or it may be used - * by using entries in the $this->meta['PDF_fields'] array of the specific sub- - * class. - * - * @param string $scope account type - * @return array list of available fields for PDF output - */ - function get_pdfFields() { - return ((isset($this->meta['PDF_fields'])) ? $this->meta['PDF_fields'] : array()); - } - - /** - * Returns a hastable with all entries that may be printed out in the PDF. The - * syntax of the hashtable is specified by the module specification and the - * corresponding DTD. This method must be overwritten in case that there - * are non static things to be returned. The $this->meta['PDF_entries'] array - * may be used when there is only static content. - * - * @param string $scope account type - * @return array hastable of entries for the PDF. Each entry is an array where - * each entry is treated as a new line in the PDF. - */ - function get_pdf_entries($scope = 'user') { - return ((isset($this->meta['PDF_entries'])) ? $this->meta['PDF_entries'] : array()); - } - - /** - * Returns an array containing all input columns for the file upload. - * - * Syntax: - *
array( - *
string: name, // fixed non-translated name which is used as column name (should be of format: _) - *
string: description, // short descriptive name - *
string: help, // help ID - *
string: example, // example value - *
boolean: required // true, if user must set a value for this column - *
) - * - * @return array column list - */ - function get_uploadColumns() { - if (isset($this->meta['upload_columns'])) return $this->meta['upload_columns']; - else return array(); - } - - /** - * Returns a list of module names which must be processed in building the account befor this module. - * - * @return array list of module names - */ - function get_uploadPreDepends() { - if (isset($this->meta['upload_preDepends'])) return $this->meta['upload_preDepends']; - else return array(); - } - - /** - * In this function the LDAP account is built up. - * - * @param array $rawAccounts list of hash arrays (name => value) from user input - * @param array $partialAccounts list of hash arrays (name => value) which are later added to LDAP - * @param array $ids list of IDs for column position (e.g. "posixAccount_uid" => 5) - * @return array list of error messages if any - */ - function build_uploadAccounts($rawAccounts, $ids, &$partialAccounts) { - // must be implemented in sub modules - return array(); - } - - /** - * This function return the help entry array for a specific help id. Normally this->meta can be used. - * - * @param string $id The id string for the help entry needed. - * @param string $scope The scope for which the help entry should be retrieved. May be empty when - * there is now difference of the help entry depending on the actual scope. - * - * @return array The desired help entry. - */ - function get_help($id) { - if(isset($this->meta['help'][$id])) { - return $this->meta['help'][$id]; - } - elseif(isset($this->meta['help'][$this->scope][$id])) { - return $this->meta['help'][$this->scope][$id]; - } - else { - return false; - } - } - - function input_check() { - /* We have to some string checks now. Not every ldap attributes allow utf8 - * strings. Therefore we do a syntax check here and change utf8 strings to ascci - * strings. Only "7bit" ascci is allowed - * We check als the max length as defined in ldap. - */ - // Do a check for every ldap attribute - $attributes = array_keys($this->attributes); - for ($i=0; $iattributes[$attributes[$i]]['SYNTAX']=='1.3.6.1.4.1.1466.115.121.1.36') { - // found numeric attribute - for ($j=0; $jattributes[$attributes[$i]]); $j++) - if ($this->attributes[$attributes[$i]][$j]!=intval($this->attributes[$attributes[$i]][$j])) { - $this->attributes[$attributes[$i]][$j] = intval($this->attributes[$attributes[$i]][$j]); - $messages[$attributes[$i]] = array('WARN', _($attributes[$i]), _('Changed value %s because only numeric values are allowed.')); - } - } - else if ($_SESSION['ldap']->attributes[$attributes[$i]]['SYNTAX']=='1.3.6.1.4.1.1466.115.121.1.26' || - $_SESSION['ldap']->attributes[$attributes[$i]]['SYNTAX']=='1.3.6.1.4.1.1466.115.121.1.44' || - $_SESSION['ldap']->attributes[$attributes[$i]]['SYNTAX']=='1.3.6.1.4.1.1466.115.121.1.11') { - // found "7bit" ascii attribute - // convert utf8 in us-ascii - $convert = array ( 'ä' => 'ae', 'Ä' => 'Ae', 'ö' => 'Oe', 'ü' => 'ue', 'Ü' => 'ue', - 'ß' => 'ss', 'é' => 'e', 'è' => 'e', 'ô' => 'o' - ); - $index = array_keys($convert); - for ($j=0; $jattributes[$attributes[$i]]); $j++) - for ($k=0; $kattributes[$attributes[$i]][$j]); - if ($temp!=$this->attributes[$attributes[$i]][$j]) { - $this->attributes[$attributes[$i]][$j] = $temp; - $messages[$attributes[$i]][] = array('WARN', _($attributes[$i]), _('Changed value because only ASCII characters are allowed.')); - } - } - } - // TODO length check - } - if (count($messages)!=0) return $messages; - else return 0; - } - - /** - * This function executes one post upload action. - * - * @param array $data array containing one account in each element - * @param array $ids array( => ) - * @param array $failed list of accounts which were not created successfully - * @param array $temp variable to store temporary data between two post actions - * @return array current status - *
array ( - *
'status' => 'finished' | 'inProgress' - *
'progress' => 0..100 - *
'errors' => array () - *
) - */ - function doUploadPostActions($data, $ids, $failed, &$temp) { - return array( - 'status' => 'finished', - 'progress' => 100, - 'errors' => array() - ); - } - - /** - * Dummy function for modules which use no special options on account deletion. - * - * @param $post The HTTP POST variables of the delete page - * @return List of LDAP operations, same as for save_attributes() - */ - function delete_attributes($post) { - return 0; - } - - /** - * Dummy function for modules which do not print extra HTML code on account deletion. - * - * @param $post HTTP POST values - * @return meta HTML code - */ - function display_html_delete(&$post) { - return 0; - } - -} - - -?> \ No newline at end of file diff --git a/lam/lib/blowfish.inc b/lam/lib/blowfish.inc deleted file mode 100644 index 32c6370e..00000000 --- a/lam/lib/blowfish.inc +++ /dev/null @@ -1,548 +0,0 @@ - - * - * 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 - * - * edited by Roland Gruber for LAM - * - added encrypt/decrypt functions - */ - -/** -* Blowfish encryption/decryption -* -* @package LDAP -* @author Roland Gruber -* @author Mike Cochrane -*/ - -/** -* Encrypts the LDAP username and password before storing in session. -* -* @package LDAP -*/ -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); - /** S Boxes */ - 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); - /** S Boxes */ - 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); - /** S Boxes */ - 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() - { - } - - /** - * 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. - * - * @param String $key key string - * @return array The key. - */ - function _formatKey($key) - { - return array_values(unpack('C*', $key)); - } - -} - -?> diff --git a/lam/lib/cache.inc b/lam/lib/cache.inc deleted file mode 100644 index 0b4ab218..00000000 --- a/lam/lib/cache.inc +++ /dev/null @@ -1,330 +0,0 @@ -time = 0; - $this->attributes = array(); - } - - var $ldapcache; // This variable contains the cache - var $attributes; // This variable contains a list and their scope of attributes which should be cached - var $time; // This is the laste timestamp ldap cache has been refreshed - - /* This function adds attributes to cache - * syntax of $attributes is array( scope1 => array ( attributes ), scope2 => array ( attributes ), ...) - */ - function add_cache($attributes) { - // Check input variable - $allowed_types = array ( 'user', 'group', 'host', 'domain', '*' ); - if (!is_array($attributes)) trigger_error('Argument of add_cache must be : array ( scope => array(attribute1(string), attribute2(string), ..), scope => ... ).', E_USER_ERROR); - foreach ($attributes as $attribute) { - if (!is_array($attribute)) trigger_error('Argument of add_cache must be : array ( scope => array(attribute1(string), attribute2(string), ..), scope => ... ).', E_USER_ERROR); - foreach ($attribute as $singleattribute) { - if (!is_string($singleattribute)) trigger_error('Argument of add_cache must be : array ( scope => array(attribute1(string), attribute2(string), ..), scope => ... ).', E_USER_ERROR); - } - } - $scopes = array_keys($attributes); - foreach ($scopes as $scope) { - if (!@in_array($scope, $allowed_types)) trigger_error(sprintf('Invalid scope. Valid scopes are %s.', implode(" ", $allowed_types)), E_USER_ERROR); - } - // Everything seems to be OK, start processing data - foreach ($scopes as $scope) { - for ($i=0; $iattributes[$scope])) $this->attributes[$scope][] = $attributes[$scope][$i]; - } - } - // Rebuild cache - $this->refresh_cache(true); - } - - /** - * Queries the cache for a list of LDAP entries and their attributes. - * - * @param mixed $attributes One (string) or many (array) attribute names. - * @param string $objectClass The resulting entries need to contain this object class. - * @param string $singlescope The account type or "*" if all. - * @return array The found LDAP entries. - *
Format: array(dn1 => array(uidnumber1), dn2 => array(uidnumber2), ... ) if $attributes is of type string - *
or array(dn1 => array(uid => array(myuid), uidNumber => array(1234)), ... ) if $attributes is an array - * - */ - function get_cache($attributes, $objectClass, $singlescope) { - $this->refresh_cache(); - // Check input variables - $allowed_types = array ( 'user', 'group', 'host', 'domain', '*' ); - if (!in_array($singlescope, $allowed_types)) trigger_error(sprintf('Invalid scope. Valid scopes are %s.', implode(" ", $allowed_types)), E_USER_ERROR); - $this->refresh_cache(); - if ($singlescope == '*') $scopes = $allowed_types; - else $scopes = array ( $singlescope ); - // Add cache entry dynamic - if (!is_array($attributes)) $attributes = array($attributes); - foreach ($scopes as $scope) { - for ($i = 0; $i < sizeof($attributes); $i++) { - if (!@in_array($attributes[$i], $this->attributes[$scope])) $add[$scope][] = $attributes[$i]; - } - } - if (count($add)!=0) $this->add_cache($add); - - foreach ($scopes as $scope) { - if (isset($this->ldapcache[$scope])) { - $DNs = array_keys($this->ldapcache[$scope]); - foreach ($DNs as $dn) { - // skip entries which do not fit to search - if (!in_array($objectClass, $this->ldapcache[$scope][$dn]['objectClass'])) continue; - for ($i = 0; $i < sizeof($attributes); $i++) { - if (isset($this->ldapcache[$scope][$dn][$attributes[$i]])) { - if (sizeof($attributes) > 1) { - $return[$dn][$attributes[$i]] = $this->ldapcache[$scope][$dn][$attributes[$i]]; - } - else { - $return[$dn] = $this->ldapcache[$scope][$dn][$attributes[$i]]; - } - } - } - } - } - } - return $return; - } - - /* This functions returns the dn if a dn with $attribute=$value is found - * $values is the value $attribute is set to - * $scope is the scope where to search - */ - function in_cache($value, $attribute, $singlescope) { - $this->refresh_cache(); - // Check input variables - $allowed_types = array ( 'user', 'group', 'host', 'domain', '*' ); - if (!in_array($singlescope, $allowed_types)) trigger_error(sprintf('Invalid scope. Valid scopes are %s.', implode(" ", $allowed_types)), E_USER_ERROR); - $this->refresh_cache(); - if ($singlescope == '*') $scopes = $allowed_types; - else $scopes = array ( $singlescope ); - // Add cache entry dynamic - foreach ($scopes as $scope) { - if (!@in_array($attribute ,$this->attributes[$scope])) $add[$scope][] = $attribute; - } - if (count($add)!=0) $this->add_cache($add); - - foreach ($scopes as $scope) { - if (isset($this->ldapcache[$scope])) { - $DNs = array_keys($this->ldapcache[$scope]); - foreach ($DNs as $dn) { - if (is_array($this->ldapcache[$scope][$dn][$attribute])) { - if (in_array($value, $this->ldapcache[$scope][$dn][$attribute])) { - // Return value if value was found - return $dn; - } - } - } - } - } - // Return false if value wasn't found - return false; - } - - - /* This functions refreshs the cache - */ - function refresh_cache($rebuild=false) { - if ($this->time + $_SESSION['config']->get_cacheTimeoutSec() < time() || $rebuild) { - // unset old cache - unset ($this->ldapcache); - $scopes = array_keys($this->attributes); - foreach ($scopes as $scope) { - // Get Scope - If ($scope != '*') - $suffix = $_SESSION['config']->get_Suffix($scope); - else $suffix = ''; - // Get Data from ldap - $search = $this->attributes[$scope]; - $search[] = 'objectClass'; - $result = @ldap_search($_SESSION['ldap']->server(), $suffix, 'objectClass=*', $search, 0); - // Write search result in array - $entry = @ldap_first_entry($_SESSION['ldap']->server(), $result); - while ($entry) { - $dn = (ldap_get_dn($_SESSION['ldap']->server(), $entry)); - $attr = ldap_get_attributes($_SESSION['ldap']->server(), $entry); - // unset double entries - for ($i=0; $ildapcache[$scope][$dn] = $attr; - $entry = ldap_next_entry($_SESSION['ldap']->server(), $entry); - } - } - $this->time = time(); - } - } - - /* This function update the cache when changes were - * made without refrehing the complete cache - */ - function update_cache($dn, $mode, $attributes=false) { - $allowed_modes = array ( 'add', 'remove', 'modify', 'delete_dn' ); - $allowed_types = array ( 'user', 'group', 'host', '*' ); - for ($i=0; $iget_Suffix($allowed_types[$i]); - else $suffix = ''; - if (substr($suffix, $dn)) $singlescope = $allowed_types[$i]; - } - } - if (!in_array($singlescope, $allowed_types)) trigger_error(sprintf('Invalid scope. Valid scopes are %s.', implode(" ", $allowed_types)), E_USER_ERROR); - if (!in_array($mode, $allowed_modes)) trigger_error(sprintf('Invalid mode. Valid modes are %s.', implode(" ", $allowed_modes)), E_USER_ERROR); - // Everything seems to be OK, start processing data - // Get Scope - foreach ($allowed_types as $scope) { - if ($scope!='*') { - $suffix = $_SESSION['config']->get_Suffix($scope); - if (strpos($dn, $suffix)) $singlescope = $scope; - } - } - if (!isset($singlescope)) trigger_error(sprintf('Invalid dn: %s. DN not covered by any suffix.', $dn), E_USER_WARN); - // Refresh Cache - $this->refresh_cache(); - if (is_array($attributes)) - switch ($mode) { - case 'add': - $list = array_keys($attributes); - for ($i=0; $ildapcache[$singlescope][$dn][$list[$i]][] = $attributes[$list[$i]]; - break; - case 'remove': - $list = array_keys($attributes); - for ($i=0; $ildapcache[$singlescope][$dn][$list[$i]][$attributes[$list[$i]]])) - unset($this->ldapcache[$singlescope][$dn][$list[$i]][$attributes[$list[$i]]]); - break; - case 'modify': - $list = array_keys($attributes); - for ($i=0; $ildapcache[$singlescope][$dn][$list[$i]])) unset($this->ldapcache[$singlescope][$dn][$list[$i]]); - foreach ($attributes[$list[$i]] as $attribute) - $this->ldapcache[$singlescope][$dn][$list[$i]][] = $attributes[$list[$i]]; - } - } - else { - if ($mode=='delete_dn') - if (isset($this->ldapcache[$singlescope][$dn])) unset($this->ldapcache[$singlescope][$dn]); - } - } - - - /** - * This function will return the GID number to an existing group name (using the cache). - * - * @param string $groupname name of group - * @return string GID number - */ - function getgid($groupname) { - $dn_groups = $_SESSION['cache']->get_cache(array('gidNumber', 'cn'), 'posixGroup', 'group'); - if (is_array($dn_groups)) { - $DNs = array_keys($dn_groups); - foreach ($DNs as $DN) { - if ($dn_groups[$DN]['cn'][0] == $groupname) { - return $dn_groups[$DN]['gidNumber'][0]; - } - } - } - } - - - /* This function will return an array with all groupnames - * found in ldap. Groupnames are taken from cache-array. - */ - function findgroups() { - $dn_groups = $_SESSION['cache']->get_cache('cn', 'posixGroup', 'group'); - if (is_array($dn_groups)) { - $DNs = array_keys($dn_groups); - foreach ($DNs as $DN) - $return[] = $dn_groups[$DN][0]; - return $return; - } - return array(); - } - - - /* This function will return the groupname to an existing gidNumber - * groupnames are taken from cache-array - */ - function getgrnam($gidNumber) { - $dn_groups = $_SESSION['cache']->get_cache('gidNumber', 'posixGroup', 'group'); - if (is_array($dn_groups)) { - $DNs = array_keys($dn_groups); - foreach ($DNs as $DN) { - if ($dn_groups[$DN][0]==$gidNumber) - $return = substr($DN, 3, strpos($DN, ',')-3); - } - return $return; - } - else return -1; - } - - /** - * Encrypts LDAP cache before saving to session file. - * - * @return array list of variables to save - */ - function __sleep() { - $this->ldapcache = $_SESSION['ldap']->encrypt(serialize($this->ldapcache)); - // define which attributes to save - return array("ldapcache", "attributes", "time"); - } - - /** - * Decrypts LDAP cache after loading from session file. - */ - function __wakeup() { - $this->ldapcache = unserialize($_SESSION['ldap']->decrypt($this->ldapcache)); - } - -} - -?> diff --git a/lam/lib/config.inc b/lam/lib/config.inc deleted file mode 100644 index 44a3dfd0..00000000 --- a/lam/lib/config.inc +++ /dev/null @@ -1,890 +0,0 @@ -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; -} - -/** -* Returns the version number of this LAM installation. -* Format: .. -*
Major/minor version are always numbers, patch level may contain letters for inofficial releases only (e.g. 0.5.alpha1). -* -* @return string version number -*/ -function LAMVersion() { - $file = substr(__FILE__, 0, strlen(__FILE__) - 15) . "/VERSION"; - if (is_readable($file)) { - $handle = fopen($file, "r"); - if (!feof($handle)) { - return trim(fgets($handle, 20)); - } - } - // file was not readable - return '0.0.unknown'; -} - - -/** -* Prints a meta refresh page -* -* @param string $page the URL of the target page -*/ -function metaRefresh($page) { - echo $_SESSION['header']; - echo "\n"; - echo "\n"; - echo "\n"; - echo "\n"; - // print link if refresh does not work - echo "
\n"; - echo "\n"; - echo "\n"; -} - - -/** -* This class manages .conf files. -* -* @package configuration -*/ -class Config { - - /** Server address (e.g. ldap://127.0.0.1:389) */ - var $ServerURL; - - /** Array of string: users with admin rights */ - var $Admins; - - /** Password to edit preferences */ - var $Passwd; - - /** LDAP suffix for users */ - var $usersuffix; - - /** LDAP suffix for groups */ - var $groupsuffix; - - /** LDAP suffix for Samba hosts */ - var $hostsuffix; - - /** LDAP suffix for Samba 3 domains */ - var $domainsuffix; - - /** LDAP suffix for tree view */ - var $treesuffix; - - /** Attributes that are shown in the user list */ - var $userlistAttributes; - /** Attributes that are shown in the group list */ - var $grouplistAttributes; - /** Attributes that are shown in the host list */ - var $hostlistAttributes; - - /** Maximum number of rows shown in user/group/host lists */ - var $maxlistentries; - - /** Default language */ - var $defaultLanguage; - - /** module settings */ - var $moduleSettings = array(); - - /** - * Path to external lamdaemon script on server where it is executed - * - * This is used for managing quota and home directories. - * optional setting, may not be defined - */ - var $scriptPath; - - /** - * Server where lamdaemon script is executed - * - * This is used for managing quota and home directories. - * optional setting, may not be defined - */ - var $scriptServer; - - /** LDAP cache timeout */ - var $cachetimeout; - - var $usermodules = "posixAccount,shadowAccount,quota"; - /** Account modules for groups */ - var $groupmodules = "posixGroup,quota"; - /** Account modules for hosts */ - var $hostmodules = "account,sambaSamAccount"; - - /** Name of configuration file */ - var $file; - - /** List of all settings in config file */ - var $settings = array("ServerURL", "Passwd", "Admins", "usersuffix", "groupsuffix", "hostsuffix", "treesuffix", - "domainsuffix", "userlistAttributes", "grouplistAttributes", "hostlistAttributes", "maxlistentries", - "defaultLanguage", "scriptPath", "scriptServer", "cachetimeout", - "usermodules", "groupmodules", "hostmodules", "modules"); - - - /** - * Loads preferences from config file - * - * @param integer $file Index number in config file array - */ - 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 - * - * @return boolean true if file was readable - */ - function reload() { - $conffile = substr(__FILE__, 0, strlen(__FILE__) - 15) . "/config/" . $this->file . ".conf"; - if (is_file($conffile) == True) { - $file = @fopen($conffile, "r"); - if (!$file) return false; // abort if file is not readable - 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 . ": ")) { - // module settings - if (strtolower(substr($line, 0, $keylen + 2)) == "modules: ") { - $option = substr($line, $keylen + 2, strlen($line) - $keylen - 2); - $pos = strpos($option, ":"); - $this->moduleSettings[substr($option, 0, $pos)] = explode("+::+", substr($option, $pos + 2, strlen($option) - $pos - 2)); - } - // general settings - else { - $this->$keyword = substr($line, $keylen + 2, strlen($line) - $keylen - 2); - } - break; - } - } - } - fclose($file); - } - // check modules - $scopes = array('user', 'group', 'host'); - for ($s = 0; $s < sizeof($scopes); $s++) { - $scope = $scopes[$s]; - $moduleVar = $scope . "modules"; - $modules = explode(",", $this->$moduleVar); - $available = getAvailableModules($scope); - // only return available modules - $ret = array(); - for ($i = 0; $i < sizeof($modules); $i++) { - if (in_array($modules[$i], $available)) $ret[] = $modules[$i]; - } - $this->$moduleVar = implode(",", $ret); - } - return true; - } - - /** 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"); - $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 - $mod_saved = array(); // includes all module 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 . ":")) { - // module settings - if (strtolower(substr($line, 0, $keylen + 2)) == "modules: ") { - $option = substr($line, $keylen + 2, strlen($line) - $keylen - 2); - $pos = strpos($option, ":"); - $name = substr($option, 0, $pos); - if (!isset($this->moduleSettings[$name])) continue; - $file_array[$i] = "modules: " . $name . ": " . implode("+::+", $this->moduleSettings[$name]) . "\n"; - $mod_saved[] = $name; // mark keyword as saved - } - // general settings - else { - $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 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("treesuffix", $saved)) array_push($file_array, "\n\n# suffix of tree view\n" . - "# e.g. dc=yourdomain,dc=org\n" . "treesuffix: " . $this->treesuffix . "\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("cachetimeout", $saved)) array_push($file_array, "\n\n# Number of minutes LAM caches LDAP searches.\n" . "cacheTimeout: " . $this->cachetimeout . "\n"); - if (!in_array("usermodules", $saved)) array_push($file_array, "\n\n# List of used user modules\n" . "usermodules: " . $this->usermodules . "\n"); - if (!in_array("groupmodules", $saved)) array_push($file_array, "\n\n# List of used group modules\n" . "groupmodules: " . $this->groupmodules . "\n"); - if (!in_array("hostmodules", $saved)) array_push($file_array, "\n\n# List of used host modules\n" . "hostmodules: " . $this->hostmodules . "\n"); - // check if all module settings were added - $m_settings = array_keys($this->moduleSettings); - for ($i = 0; $i < sizeof($m_settings); $i++) { - if (!in_array($m_settings[$i], $mod_saved)) { - array_push($file_array, "modules: " . $m_settings[$i] . ": " . implode("+::+", $this->moduleSettings[$m_settings[$i]]) . "\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 "" . _("Server address") . ": " . $this->ServerURL . "
\n"; - echo "" . _("Cache timeout") . ": " . $this->cachetimeout . "
\n"; - echo "" . _("UserSuffix") . ": " . $this->usersuffix . "
\n"; - echo "" . _("GroupSuffix") . ": " . $this->groupsuffix . "
\n"; - echo "" . _("HostSuffix") . ": " . $this->hostsuffix . "
\n"; - echo "" . _("DomainSuffix") . ": " . $this->domainsuffix . "
\n"; - echo "" . _("TreeSuffix") . ": " . $this->treesuffix . "
\n"; - echo "" . _("Attributes in User List") . ": " . $this->userlistAttributes . "
\n"; - echo "" . _("Attributes in Group List") . ": " . $this->grouplistAttributes . "
\n"; - echo "" . _("Attributes in Host List") . ": " . $this->hostlistAttributes . "
\n"; - echo "" . _("Maximum list entries") . ": " . $this->maxlistentries . "
\n"; - echo "" . _("Default language") . ": " . $this->defaultLanguage . "
\n"; - echo "" . _("Path to external script") . ": " . $this->scriptPath . "
\n"; - echo "" . _("Server of external script") . ": " . $this->scriptServer . "
\n"; - echo "" . _("List of valid users") . ": " . $this->Admins . "
\n"; - echo "" . _("User modules") . ": " . $this->usermodules . "
\n"; - echo "" . _("Group modules") . ": " . $this->groupmodules . "
\n"; - echo "" . _("Host modules") . ": " . $this->hostmodules . "

\n"; - echo "" . _("Module settings") . ":
\n"; - echo "
    \n"; - $names = array_keys($this->moduleSettings); - $descriptions = getConfigDescriptions(); - $descriptions = $descriptions['descriptions']; - for ($i = 0; $i < sizeof($names); $i++) { - echo "
  • "; - // print description if available - if (isset($descriptions[$names[$i]])) echo $descriptions[$names[$i]]; - else echo $names[$i]; - echo ": " . implode(", ", $this->moduleSettings[$names[$i]]) . "
  • \n"; - } - echo "
\n"; - } - - // functions to read/write preferences - - /** - * Returns the server address as string - * - * @return string server address - */ - function get_ServerURL() { - return $this->ServerURL; - } - - /** - * Sets the server address - * - * @param string $value new server address - * @return boolean 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 - * - * @return array the admin names - */ - function get_Admins() { - return explode(";", $this->Admins); - } - - /** - * Returns all admin users seperated by semicolons - * - * @return string the admin string - */ - function get_Adminstring() { - return $this->Admins; - } - - /** - * Sets the admin string - * - * @param string $value new admin string that contains all admin users seperated by semicolons - * @return boolean 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 - * - * @return string the password - */ - function get_Passwd() { - return $this->Passwd; - } - - /** - * Sets the preferences wizard password - * - * @param string $value new password - * @return boolean 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 for the given account type - * - * @param string $scope account type - * @return string the LDAP suffix - */ - function get_Suffix($scope) { - switch ($scope) { - case 'user': - return $this->usersuffix; - break; - case 'group': - return $this->groupsuffix; - break; - case 'host': - return $this->hostsuffix; - break; - case 'domain': - return $this->domainsuffix; - break; - case 'tree': - return $this->treesuffix; - break; - } - return ""; - } - - /** - * Sets the LDAP suffix where accounts are saved - * - * @param string $scope account type - * @param string $value new LDAP suffix - * @return boolean true if $value has correct format - */ - function set_Suffix($scope, $value) { - if (!$value) $value = ""; - elseif (!is_string($value)) { - return false; - } - switch ($scope) { - case 'user': - $this->usersuffix = $value; - break; - case 'group': - $this->groupsuffix = $value; - break; - case 'host': - $this->hostsuffix = $value; - break; - case 'domain': - $this->domainsuffix = $value; - break; - case 'tree': - $this->treesuffix = $value; - break; - } - return true; - } - - /** - * Returns the list of attributes to show in user list - * - * @param string $scope account type - * @return string the attribute list - */ - function get_listAttributes($scope) { - switch ($scope) { - case 'user': - return $this->userlistAttributes; - break; - case 'group': - return $this->grouplistAttributes; - break; - case 'host': - return $this->hostlistAttributes; - break; - default: - return ''; - break; - } - } - - /** - * Sets the list of attributes to show in user list - * - * @param string $value new attribute string - * @param string $scope account type - * @return boolean true if $value has correct format - */ - function set_listAttributes($value, $scope) { - if (is_string($value) && eregi("^((#[^:;]+)|([^:;]*:[^:;]+))(;((#[^:;]+)|([^:;]*:[^:;]+)))*$", $value)) { - switch ($scope) { - case 'user': - $this->userlistAttributes = $value; - break; - case 'group': - $this->grouplistAttributes = $value; - break; - case 'host': - $this->hostlistAttributes = $value; - break; - default: - return false; - break; - } - return true; - } - else { - return false; - } - } - - /** - * Sets the list of attributes to show in group list - * - * @param string $value new attribute string - * @return boolean 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 maximum number of rows in user/group/host lists - * - * @return integer maximum number - */ - function get_MaxListEntries() { - return $this->maxlistentries; - } - - /** - * Sets the maximum number of rows in user/group/host lists - * - * @param integer $value new maximum value - * @return boolean 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 - * - * @return string default language - */ - function get_defaultLanguage() { - return $this->defaultLanguage; - } - - /** - * Sets the default language string - * - * @param string $value new default language - * @return boolean 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 - * - * @return string script path - */ - function get_scriptPath() { - return $this->scriptPath; - } - - /** - * Sets the path to the external script - * - * @param string $value new script path - * @return boolean 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 - * - * @return string script server - */ - function get_scriptServer() { - return $this->scriptServer; - } - - /** - * Sets the server of the external script - * - * @param string $value new script server - * @return boolean 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 the LDAP cache timeout in minutes - * - * @return integer cache time - */ - function get_cacheTimeout() { - if (isset($this->cachetimeout)) return $this->cachetimeout; - else return 5; - } - - /** - * Returns the LDAP cache timeout in seconds - * - * @return integer cache time - */ - function get_cacheTimeoutSec() { - return $this->cachetimeout * 60; - } - - /** - * Sets the LDAP cache timeout in minutes (0,1,2,5,10,15) - * - * @param integer $value new cache timeout - * @return boolean 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 an array of all selected account modules - * - * @param string $scope account type - * @return array user modules - */ - function get_AccountModules($scope) { - switch ($scope) { - case 'user': - return explode(",", $this->usermodules); - break; - case 'group': - return explode(",", $this->groupmodules); - break; - case 'host': - return explode(",", $this->hostmodules); - break; - default: - return array(); - break; - } - - } - - /** - * Sets the selected account modules - * - * @param array $modules array with module names (not aliases!) - * @param string $scope account type - * @return boolean true if $modules has correct format - */ - function set_AccountModules($modules, $scope) { - if (! is_array($modules)) return false; - // check module names - $available = getAvailableModules($scope); - for ($i = 0; $i < sizeof($modules); $i++) { - if (! in_array($modules[$i], $available)) return false; - } - // check depends/conflicts - if (check_module_conflicts($modules, getModulesDependencies($scope)) != false) return false; - if (check_module_depends($modules, getModulesDependencies($scope)) != false) return false; - switch ($scope) { - case 'user': - $this->usermodules = implode(",", $modules); - break; - case 'group': - $this->groupmodules = implode(",", $modules); - break; - case 'host': - $this->hostmodules = implode(",", $modules); - break; - default: - break; - } - return true; - } - - /** - * Sets the settings for the account modules. - * - * @param array $settings list of module setting array(name => value) - * @return boolean true if $settings has correct format - */ - function set_moduleSettings($settings) { - if (!is_array($settings)) return false; - $this->moduleSettings = $settings; - return true; - } - - /** - * Returns a list of saved module settings - * - * @return array list of settings: array(name => value) - */ - function get_moduleSettings() { - return $this->moduleSettings; - } - -} - - -/** -* This class manages config.cfg. -* -* @package configuration -*/ -class CfgMain { - - /** Default profile */ - var $default; - - /** Password to change config.cfg */ - var $password; - - /** - * Loads preferences from config file - */ - function CfgMain() { - $this->reload(); - } - - /** - * Reloads preferences from config file config.cfg - * - * @return boolean true if file was readable - */ - function reload() { - $conffile = substr(__FILE__, 0, strlen(__FILE__) - 15) . "/config/config.cfg"; - if (is_file($conffile) == True) { - $file = @fopen($conffile, "r"); - if (!$file) return false; // abort if file is not readable - 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); - } - return true; - } - - /** - * 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"); - $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; - } - } - -} - -?> diff --git a/lam/lib/createntlm.inc b/lam/lib/createntlm.inc deleted file mode 100644 index 5f849e07..00000000 --- a/lam/lib/createntlm.inc +++ /dev/null @@ -1,519 +0,0 @@ -permute($key, $this->perm1, 56); - - $c = array(); - $d = array(); - for ($i = 0; $i < 28; $i++) { - $c[$i] = $pk1[$i]; - $d[$i] = $pk1[28 + $i]; - } - - for ($i = 0; $i < 16; $i++) { - $c = $this->lshift($this->sc[$i], $c); - $d = $this->lshift($this->sc[$i], $d); - - $cd = $c; - for ($k = 0; $k < sizeof($d); $k++) $cd[] = $d[$k]; - $ki[$i] = $this->permute($cd, $this->perm2, 48); - } - - $pd1 = $this->permute($in, $this->perm3, 64); - - $l = array(); - $r = array(); - for ($i = 0; $i < 32; $i++) { - $l[$i] = $pd1[$i]; - $r[$i] = $pd1[32 + $i]; - } - - for ($i = 0; $i < 16; $i++) { - $er = $this->permute($r, $this->perm4, 48); - if ($forw) $erk = $this->mxor($er, $ki[$i]); - else $erk = $this->mxor($er, $ki[15 - $i]); - - for ($j = 0; $j < 8; $j++) { - for ($k = 0; $k < 6; $k++) { - $b[$j][$k] = $erk[($j * 6) + $k]; - } - } - for ($j = 0; $j < 8; $j++) { - $m = array(); - $n = array(); - $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; $k < 4; $k++) { - $b[$j][$k]=($this->sbox[$j][$m][$n] & (1 << (3-$k)))?1:0; - } - } - - for ($j = 0; $j < 8; $j++) { - for ($k = 0; $k < 4; $k++) { - $cb[($j * 4) + $k] = $b[$j][$k]; - } - } - $pcb = $this->permute($cb, $this->perm5, 32); - $r2 = $this->mxor($l, $pcb); - for ($k = 0; $k < 32; $k++) $l[$k] = $r[$k]; - for ($k = 0; $k < 32; $k++) $r[$k] = $r2[$k]; - } - $rl = $r; - for ($i = 0; $i < sizeof($l); $i++) $rl[] = $l[$i]; - return $this->permute($rl, $this->perm6, 64); - } - - function str_to_key($str) { - $key[0] = $this->unsigned_shift_r($str[0], 1); - $key[1] = (($str[0]&0x01)<<6) | $this->unsigned_shift_r($str[1], 2); - $key[2] = (($str[1]&0x03)<<5) | $this->unsigned_shift_r($str[2], 3); - $key[3] = (($str[2]&0x07)<<4) | $this->unsigned_shift_r($str[3], 4); - $key[4] = (($str[3]&0x0F)<<3) | $this->unsigned_shift_r($str[4], 5); - $key[5] = (($str[4]&0x1F)<<2) | $this->unsigned_shift_r($str[5], 6); - $key[6] = (($str[5]&0x3F)<<1) | $this->unsigned_shift_r($str[6], 7); - $key[7] = $str[6]&0x7F; - for ($i = 0; $i < 8; $i++) { - $key[$i] = ($key[$i] << 1); - } - return $key; - } - - function smb_hash($in, $key, $forw){ - $key2 = $this->str_to_key($key); - - for ($i = 0; $i < 64; $i++) { - $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 = $this->dohash($inb, $keyb, $forw); - for ($i = 0; $i < 8; $i++) { - $out[$i] = 0; - } - for ($i = 0; $i < 65; $i++) { - if ( $outb[$i] ) { - $out[$i/8] |= (1<<(7-($i%8))); - } - } - return $out; - } - - function E_P16($in) { - $p14 = array_values(unpack("C*",$in)); - $sp8 = array(0x4b, 0x47, 0x53, 0x21, 0x40, 0x23, 0x24, 0x25); - $p14_1 = array(); - $p14_2 = array(); - for ($i = 0; $i < 7; $i++) { - $p14_1[$i] = $p14[$i]; - $p14_2[$i] = $p14[$i + 7]; - } - $p16_1 = $this->smb_hash($sp8, $p14_1, true); - $p16_2 = $this->smb_hash($sp8, $p14_2, true); - $p16 = $p16_1; - for ($i = 0; $i < sizeof($p16_2); $i++) { - $p16[] = $p16_2[$i]; - } - return $p16; - } - - /** - * Calculates the LM hash of a given password. - * - * @param string $password password - * @return string hash value - */ - function lmhash($password = "") { - $password = strtoupper($password); - $password = substr($password,0,14); - $password = str_pad($password, 14, chr(0)); - $p16 = $this->E_P16($password); - for ($i = 0; $i < sizeof($p16); $i++) { - $p16[$i] = sprintf("%02X", $p16[$i]); - } - return join("", $p16); - } - - /** - * Calculates the NT hash of a given password. - * - * @param string $password password - * @return string hash value - */ - function nthash($password = "") { - $password = substr($password,0,128); - $password2 = ""; - for ($i = 0; $i < strlen($password); $i++) $password2 .= $password[$i] . chr(0); - $password = $password2; - $hex = $this->mdfour($password); - for ($i = 0; $i < sizeof($hex); $i++) { - $hex[$i] = sprintf("%02X", $hex[$i]); - } - return join("", $hex); - } - - # Support functions - # Ported from SAMBA/source/lib/md4.c:F,G and H respectfully - function F($X, $Y, $Z) { - return ($X&$Y) | ((~$X)&$Z); - } - - function G($X, $Y, $Z) { - return ($X&$Y) | ($X&$Z) | ($Y&$Z); - } - - function H($X, $Y, $Z) { - return $X^$Y^$Z; - } - - # Ported from SAMBA/source/lib/md4.c:mdfour - function mdfour($in) { - $in = unpack("C*",$in); - $in = array_values($in); - $b = sizeof($in) * 8; - $A = array(0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476); - while (sizeof($in) > 64 ) { - $M = $this->copy64($in); - $this->mdfour64($A[0], $A[1], $A[2], $A[3], $M); - $new_in = array(); - for ($i = 64; $i < sizeof($in); $i++) $new_in[] = $in[$i]; - $in = $new_in; - } - $buf = $in; - $buf[] = 0x80; - for ($i = sizeof($buf) - 1; $i < 127; $i++) $buf[] = 0; - if ( sizeof($in) <= 55 ) { - $temp = $this->copy4($b); - $buf[56] = $temp[0]; - $buf[57] = $temp[1]; - $buf[58] = $temp[2]; - $buf[59] = $temp[3]; - $M = $this->copy64($buf); - $this->mdfour64($A[0], $A[1], $A[2], $A[3], $M); - } - else { - $temp = $this->copy4($b); - $buf[120] = $temp[0]; - $buf[121] = $temp[1]; - $buf[122] = $temp[2]; - $buf[123] = $temp[3]; - $M = $this->copy64($buf); - $this->mdfour64($A[0], $A[1], $A[2], $A[3], $M); - $temp = array(); - for ($i = 64; $i < sizeof($buf); $i++) $temp[] = $buf[$i]; - $M = $this->copy64($temp); - $this->mdfour64($A[0], $A[1], $A[2], $A[3], $M); - } - $out = array(); - $temp = $this->copy4($A[0]); - for ($i = 0; $i < 4; $i++) $out[] = $temp[$i]; - $temp = $this->copy4($A[1]); - for ($i = 0; $i < 4; $i++) $out[] = $temp[$i]; - $temp = $this->copy4($A[2]); - for ($i = 0; $i < 4; $i++) $out[] = $temp[$i]; - $temp = $this->copy4($A[3]); - for ($i = 0; $i < 4; $i++) $out[] = $temp[$i]; - return $out; - } - - # Ported from SAMBA/source/lib/md4.c:copy4 - function copy4($x) { - $out = array(); - $out[0] = $x&0xFF; - $out[1] = $this->unsigned_shift_r($x, 8)&0xFF; - $out[2] = $this->unsigned_shift_r($x, 16)&0xFF; - $out[3] = $this->unsigned_shift_r($x, 24)&0xFF; - return $out; - } - - # Ported from SAMBA/source/lib/md4.c:copy64 - function copy64($in) { - for ($i = 0; $i < 16; $i++) { - $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:mdfour64 - function mdfour64(&$A, &$B, &$C, &$D, $M) { - $X = array(); - for ($i = 0; $i < 16; $i++) $X[] = $M[$i]; - $AA=$A; - $BB=$B; - $CC=$C; - $DD=$D; - $this->ROUND1($A,$B,$C,$D, 0, 3, $X); - $this->ROUND1($D,$A,$B,$C, 1, 7, $X); - $this->ROUND1($C,$D,$A,$B, 2, 11, $X); - $this->ROUND1($B,$C,$D,$A, 3, 19, $X); - $this->ROUND1($A,$B,$C,$D, 4, 3, $X); $this->ROUND1($D,$A,$B,$C, 5, 7, $X); - $this->ROUND1($C,$D,$A,$B, 6, 11, $X); $this->ROUND1($B,$C,$D,$A, 7, 19, $X); - $this->ROUND1($A,$B,$C,$D, 8, 3, $X); $this->ROUND1($D,$A,$B,$C, 9, 7, $X); - $this->ROUND1($C,$D,$A,$B, 10, 11, $X); $this->ROUND1($B,$C,$D,$A, 11, 19, $X); - $this->ROUND1($A,$B,$C,$D, 12, 3, $X); $this->ROUND1($D,$A,$B,$C, 13, 7, $X); - $this->ROUND1($C,$D,$A,$B, 14, 11, $X); $this->ROUND1($B,$C,$D,$A, 15, 19, $X); - $this->ROUND2($A,$B,$C,$D, 0, 3, $X); $this->ROUND2($D,$A,$B,$C, 4, 5, $X); - $this->ROUND2($C,$D,$A,$B, 8, 9, $X); $this->ROUND2($B,$C,$D,$A, 12, 13, $X); - $this->ROUND2($A,$B,$C,$D, 1, 3, $X); $this->ROUND2($D,$A,$B,$C, 5, 5, $X); - $this->ROUND2($C,$D,$A,$B, 9, 9, $X); $this->ROUND2($B,$C,$D,$A, 13, 13, $X); - $this->ROUND2($A,$B,$C,$D, 2, 3, $X); $this->ROUND2($D,$A,$B,$C, 6, 5, $X); - $this->ROUND2($C,$D,$A,$B, 10, 9, $X); $this->ROUND2($B,$C,$D,$A, 14, 13, $X); - $this->ROUND2($A,$B,$C,$D, 3, 3, $X); $this->ROUND2($D,$A,$B,$C, 7, 5, $X); - $this->ROUND2($C,$D,$A,$B, 11, 9, $X); $this->ROUND2($B,$C,$D,$A, 15, 13, $X); - $this->ROUND3($A,$B,$C,$D, 0, 3, $X); $this->ROUND3($D,$A,$B,$C, 8, 9, $X); - $this->ROUND3($C,$D,$A,$B, 4, 11, $X); $this->ROUND3($B,$C,$D,$A, 12, 15, $X); - $this->ROUND3($A,$B,$C,$D, 2, 3, $X); $this->ROUND3($D,$A,$B,$C, 10, 9, $X); - $this->ROUND3($C,$D,$A,$B, 6, 11, $X); $this->ROUND3($B,$C,$D,$A, 14, 15, $X); - $this->ROUND3($A,$B,$C,$D, 1, 3, $X); $this->ROUND3($D,$A,$B,$C, 9, 9, $X); - $this->ROUND3($C,$D,$A,$B, 5, 11, $X); $this->ROUND3($B,$C,$D,$A, 13, 15, $X); - $this->ROUND3($A,$B,$C,$D, 3, 3, $X); $this->ROUND3($D,$A,$B,$C, 11, 9, $X); - $this->ROUND3($C,$D,$A,$B, 7, 11, $X); $this->ROUND3($B,$C,$D,$A, 15, 15, $X); - - $A = $this->add32(array($A, $AA)); $B = $this->add32(array($B, $BB)); - $C = $this->add32(array($C, $CC)); $D = $this->add32(array($D, $DD)); - } - - # Needed? because perl seems to choke on overflowing when doing bitwise - # operations on numbers larger than 32 bits. Well, it did on my machine =) - function add32($v) { - for ($i = 0; $i < sizeof($v); $i++) { - $v[$i] = array($this->unsigned_shift_r(($v[$i]&0xffff0000), 16), ($v[$i]&0xffff)); - } - for ($i = 0; $i < sizeof($v); $i++) { - $sum[0] += $v[$i][0]; - $sum[1] += $v[$i][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:ROUND1 - function ROUND1(&$a,$b,$c,$d,$k,$s,$X) { - $a = $this->md4lshift($this->add32(array($a, $this->F($b,$c,$d), $X[$k])), $s); - return $a; - } - - # Ported from SAMBA/source/lib/md4.c:ROUND2 - function ROUND2(&$a,$b,$c,$d,$k,$s,$X) { - $a = $this->md4lshift($this->add32(array($a, $this->G($b,$c,$d), $X[$k] + 0x5A827999)), $s); - return $a; - } - - # Ported from SAMBA/source/lib/md4.c:ROUND3 - function ROUND3(&$a,$b,$c,$d,$k,$s,$X) { - $a = $this->md4lshift($this->add32(array($a + $this->H($b,$c,$d) + $X[$k] + 0x6ED9EBA1)), $s); - return $a; - } - - # Ported from SAMBA/source/lib/md4.c:lshift - # Renamed to prevent clash with SAMBA/source/libsmb/smbdes.c:lshift - function md4lshift($x, $s) { - $x &= 0xFFFFFFFF; - return ((($x<<$s)&0xFFFFFFFF) | $this->unsigned_shift_r($x, (32-$s))); - } - - /** - * Unsigned shift operation for 32bit values. - * - * PHP 4 only supports signed shifts by default. - */ - function unsigned_shift_r($a, $b) { - $z = 0x80000000; - if ($z & $a) { - $a = ($a >> 1); - $a &= (~$z); - $a |= 0x40000000; - $a = ($a >> ($b - 1)); - } - else { - $a = ($a >> $b); - } - return $a; - } - -} - -?> diff --git a/lam/lib/export.inc b/lam/lib/export.inc deleted file mode 100755 index f2c3ed3c..00000000 --- a/lam/lib/export.inc +++ /dev/null @@ -1,965 +0,0 @@ -'ldif', - 'desc' => 'LDIF', - 'extension' => 'ldif' -); - -$exporters[] = array( - 'output_type'=>'dsml', - 'desc' => 'DSML V.1', - 'extension' => 'xml' -); - -$exporters[] = array( - 'output_type'=>'vcard', - 'desc' => 'VCARD 2.1', - 'extension' => 'vcf' -); - -$exporters[] = array( - 'output_type'=>'csv', - 'desc' => 'CSV', - 'extension' => 'csv' -); - -/** - * This class encapsulate informations about the ldap server - * from which the export is done. - * The following info are provided within this class: - * - * $base_dn: if the source of the export is the ldap server, - * it indicates the base dn of the search. - * $query_filter: if the source of the export is the ldap server, - * it indicates the query filter for the search. - * $scope: if the source of the export is the ldap server, - * it indicates the scope of the search. - * - * @package tools - */ - -class LdapExportInfo { - - var $base_dn; - var $query_filter; - var $scope; - - /** - * Create a new LdapExportInfo object - * - * @param String $base_dn the base_dn for the search in a ldap server - * @param String $query_filter the query filter for the search - * @param String $scope the scope of the search in a ldap server - */ - - function LdapExportInfo($base_dn = NULL, $query_filter = NULL, $scope = NULL){ - $this->base_dn = $base_dn; - $this->query_filter = $query_filter; - $this->scope = $scope; - } -} - - -/** - * This class represents the base class of all exporters - * It can be subclassed directly if your intend is to write - * a source exporter(ie. it will act only as a decoree - * which will be wrapped by an another exporter.) - * If you consider writting an exporter for filtering data - * or directly display entries, please consider subclass - * the PlaExporter - * - * @see PlaExporter - * @package tools - */ - -class PlaAbstractExporter{ - - /** - * Return the number of entries - * @return int the number of entries to be exported - */ - function pla_num_entries(){} - - /** - * Return true if there is some more entries to be processed - * @return bool if there is some more entries to be processed - */ - function pla_has_entry(){} - - /** - * Return the entry as an array - * @return array an entry as an array - */ - function pla_fetch_entry_array(){} - - /** - * Return the entry as an Entry object - * @return Entry an entry as an Entry Object - */ - function pla_fetch_entry_object(){} - - /** - * Return a PlaLdapInfo Object - * @return LdapInfo Object with info from the ldap serveur - */ - function pla_get_ldap_info(){} - -}// end PlaAbstractExporter - - - -/** - * PlaExporter acts a wrapper around another exporter. - * In other words, it will act as a decorator for another decorator - * - * @package tools - */ -class PlaExporter extends PlaAbstractExporter{ - // the default CRLN - var $br="\n"; - // the wrapped $exporter - var $exporter; - - /** - * Constructor - * @param source $source the decoree for this exporter - */ - function PlaExporter( $source ){ - $this->exporter = $source; - } - - /** - * Return the number of entries - * @return int the number of entries to be exported - */ - function pla_num_entries(){ - return $this->exporter->pla_num_entries(); - } - - /** - * Return true if there is some more entries to be processed - * @return bool if there is some more entries to be processed - */ - function pla_has_entry(){ - return $this->exporter->pla_has_entry(); - } - - /** - * Return the entry as an array - * @return array an entry as an array - */ - function pla_fetch_entry_array(){ - return $this->exporter->pla_fetch_entry_array(); - } - - /** - * Return the entry as an Entry object - * @return Entry an entry as an Entry Object - */ - function pla_fetch_entry_object(){ - return $this->exporter->pla_fetch_entry_object(); - } - - /** - * Return a PlaLdapInfo Object - * @return LdapInfo Object with info from the ldap serveur - */ - function pla_get_ldap_info(){ - return $this->exporter->pla_get_ldap_info(); - } - - /** - * Helper method to check if the attribute value should be base 64 encoded. - * @param String $str the string to check. - * @return bool true if the string is safe ascii, false otherwise. - */ - function is_safe_ascii( $str ){ - for( $i=0; $i 127 ) - return false; - return true; - } - - /** - * Abstract method use to export data. - * Must be implemented in a sub-class if you write an exporter - * which export data. - * Leave it empty if you write a sub-class which do only some filtering. - */ - function export(){} - - /** - * Set the carriage return /linefeed for the export - * @param String $br the CRLF to be set - */ - function setOutputFormat( $br ){ - $this->br = $br; - } - -}// end PlaExporter - - -/** - * Export data from a ldap server - * @extends PlaAbstractExporter - * @package tools - */ - -class PlaLdapExporter extends PlaAbstractExporter{ - var $entry_id; - var $results; - var $scope; - var $entry_array; - var $num_entries; - var $ldap_info; - var $queryFilter; - var $hasNext; - var $attributes; - /** - * Create a PlaLdapExporter object. - * @param String $queryFilter the queryFilter for the export - * @param String $base_dn the base_dn for the data to export - * @param String $scope the scope for export - */ - function PlaLdapExporter($queryFilter , $base_dn , $scope, $attributes){ - $this->scope = $scope; - $this->base_dn = $base_dn; - $this->queryFilter = $queryFilter; - // infos for the server - $this->ldap_info = new LdapExportInfo($base_dn,$queryFilter,$scope); - // boolean to check if there is more entries - $this->hasNext = 0; - // boolean to check the state of the connection - - $this->attributes = $attributes; - - $this->ds = $_SESSION['ldap']->server; - - // get the data to be exported - if( $this->scope == 'base' ) - $this->results = @ldap_read($this->ds, $this->base_dn, $this->queryFilter,$this->attributes); - elseif( $this->scope == 'one' ) - $this->results = @ldap_list($this->ds, $this->base_dn, $this->queryFilter, $this->attributes); - else // scope == 'sub' - $this->results = @ldap_search($this->ds, $this->base_dn, $this->queryFilter, $this->attributes); - - // if no result, there is a something wrong - if( ! $this->results ) - StatusMessage("ERROR", 'Encountered an error while performing search.', ldap_error( $this->ds )); - - // get the number of entries to be exported - $this->num_entries = @ldap_count_entries( $this->ds,$this->results ); - - if( $this->entry_id = @ldap_first_entry( $this->ds,$this->results ) ){ - $this->hasNext = 1; - } - }//end constructor - - /** - * Return the entry as an array - * @return array an entry as an array - */ - function pla_fetch_entry_array(){ - return $this->entry_array; - } - - /** - * Return the entry as an Entry object - * @return Entry an entry as an Entry Object - */ - function pla_fetch_entry_object(){ - // to do - } - - /** - * Return a PlaLdapInfo Object - * @return LdapInfo Object with info from the ldap serveur - */ - function pla_get_ldap_info(){ - return $this->ldap_info; - } - - /** - * Return the number of entries - * @return int the number of entries to be exported - */ - function pla_num_entries(){ - return $this->num_entries; - } - - /** - * Return true if there is some more entries to be processed - * @return bool if there is some more entries to be processed - */ - function pla_has_entry(){ - if( $this->hasNext ){ - unset( $this->entry_array ); - $dn = @ldap_get_dn( $this->ds,$this->entry_id ); - $this->entry_array['dn'] = $dn; - - //get the attributes of the entry - $attrs = @ldap_get_attributes($this->ds,$this->entry_id); - if( $attr = @ldap_first_attribute( $this->ds,$this->entry_id,$attrs ) ){ - - //iterate over the attributes - while( $attr ){ - if( is_attr_binary( $this,$attr ) ){ - $this->entry_array[$attr] = @ldap_get_values_len( $this->ds,$this->entry_id,$attr ); - } - else{ - $this->entry_array[$attr] = @ldap_get_values( $this->ds,$this->entry_id,$attr ); - } - unset( $this->entry_array[$attr]['count'] ); - $attr = @ldap_next_attribute( $this->ds,$this->entry_id,$attrs ); - }// end while attr - - if(!$this->entry_id = @ldap_next_entry( $this->ds,$this->entry_id ) ){ - $this->hasNext = 0; - } - }// end if attr - return true; - } - else{ - return false; - } - } - -} // end PlaLdapExporter - -/** - * Export entries to ldif format - * @extends PlaExporter - * @package tools - */ -class PlaLdifExporter extends PlaExporter{ - - // variable to keep the count of the entries - var $counter = 0; - - // the maximum length of the ldif line - var $MAX_LDIF_LINE_LENGTH = 76; - - /** - * Create a PlaLdifExporter object - * @param PlaAbstractExporter $exporter the source exporter - */ - function PlaLdifExporter( $exporter ){ - $this->exporter = $exporter; - } - - /** - * Export entries to ldif format - */ - function export(){ - $pla_ldap_info = $this->pla_get_ldap_info(); - $this->displayExportInfo($pla_ldap_info); - - //While there is an entry, fecth the entry as an array - while($this->pla_has_entry()){ - $entry = $this->pla_fetch_entry_array(); - $this->counter++; - - // display comment before each entry - $title_string = "# " . _("Entry") . " " . $this->counter . ": " . $entry['dn'] ; - if( strlen( $title_string ) > $this->MAX_LDIF_LINE_LENGTH-3 ) - $title_string = substr( $title_string, 0, $this->MAX_LDIF_LINE_LENGTH-3 ) . "..."; - echo "$title_string$this->br"; - - // display dn - if( $this->is_safe_ascii( $entry['dn'] )) - $this->multi_lines_display("dn: ". $entry['dn']); - else - $this->multi_lines_display("dn:: " . base64_encode( $entry['dn'] )); - array_shift($entry); - - // display the attributes - foreach( $entry as $key => $attr ){ - foreach( $attr as $value ){ - if( !$this->is_safe_ascii($value) || is_attr_binary($pla_ldap_info,$key ) ){ - $this->multi_lines_display( $key.":: " . base64_encode( $value ) ); - } - else{ - $this->multi_lines_display( $key.": ".$value ); - } - } - }// end foreach $entry - - echo $this->br; - // flush every 5th entry (sppeds things up a bit) - if( 0 == $this->counter % 5 ) - flush(); - } - } - - // display info related to this export - function displayExportInfo($pla_ldap_info){ - echo "version: 1$this->br$this->br"; - echo "# " . sprintf( _("LDIF Export for: %s"), $pla_ldap_info->base_dn ) . $this->br; - echo "# " . _('Search scope') . ": " . $pla_ldap_info->scope . $this->br; - echo "# " . _('Search filter') . ": " . $pla_ldap_info->query_filter . $this->br; - echo "# " . _('Total entries') . ": " . $this->pla_num_entries() . $this->br; - echo $this->br; - } - - /** - * Helper method to wrap ldif lines - * @param String $str the line to be wrapped if needed. - */ - function multi_lines_display( $str ){ - - $length_string = strlen($str); - $max_length = $this->MAX_LDIF_LINE_LENGTH; - - while ($length_string > $max_length){ - echo substr($str,0,$max_length).$this->br." "; - $str= substr($str,$max_length,$length_string); - $length_string = strlen($str); - - // need to do minus one to align on the right - // the first line with the possible following lines - // as these will have an extra space - $max_length = $this->MAX_LDIF_LINE_LENGTH-1; - } - echo $str."".$this->br; - } - -} - -/** - * Export entries to DSML v.1 - * @extends PlaExporter - * @package tools - */ - -class PlaDsmlExporter extends PlaExporter{ - - //not in use - var $indent_step = 2; - var $counter = 0; - - /** - * Create a PlaDsmlExporter object - * @param PlaAbstractExporter $exporter the decoree exporter - */ - function PlaDsmlExporter( $exporter ){ - $this->exporter = $exporter; - } - - /** - * Export the entries to DSML - */ - function export(){ - $pla_ldap_info = $this->pla_get_ldap_info(); - // not very elegant, but do the job for the moment as we have just 4 level - $directory_entries_indent = " "; - $entry_indent= " "; - $attr_indent = " "; - $attr_value_indent = " "; - - // print declaration - echo "$this->br"; - - // print root element - echo "$this->br"; - - // print info related to this export - echo "" . $this->br; - - - echo $directory_entries_indent."$this->br"; - //While there is an entry, fetch the entry as an array - while($this->pla_has_entry()){ - $entry = $this->pla_fetch_entry_array(); - $this->counter++; - // display dn - echo $entry_indent."".$this->br; - array_shift($entry); - - // echo the objectclass attributes first - if(isset($entry['objectClass'])){ - echo $attr_indent."".$this->br; - foreach($entry['objectClass'] as $ocValue){ - echo $attr_value_indent."$ocValue".$this->br; - } - echo $attr_indent."".$this->br; - unset($entry['objectClass']); - } - - $binary_mode = 0; - // display the attributes - foreach($entry as $key=>$attr){ - echo $attr_indent."".$this->br; - - // if the attribute is binary, set the flag $binary_mode to true - $binary_mode = is_attr_binary($pla_ldap_info,$key)?1:0; - - foreach($attr as $value){ - echo $attr_value_indent."".($binary_mode?base64_encode( $value): htmlspecialchars( $value ) )."".$this->br; - } - echo $attr_indent."".$this->br; - }// end foreach $entry - echo $entry_indent."".$this->br; - - // flush every 5th entry (speeds things up a bit) - if( 0 == $this->counter % 5 ) - flush(); - } - echo $directory_entries_indent."$this->br"; - echo "".$this->br; - } -} - - -/** - * @package tools - */ -class PlaVcardExporter extends PlaExporter{ - - // mappping one to one attribute - var $vcardMapping = array('cn' => 'FN', - 'title' => 'TITLE', - 'homePhone' => 'TEL;HOME', - 'mobile' => 'TEL;CELL', - 'mail' => 'EMAIL;Internet', - 'labeledURI' =>'URL', - 'o' => 'ORG', - 'audio' => 'SOUND', - 'facsmileTelephoneNumber' =>'TEL;WORK;HOME;VOICE;FAX', - 'jpegPhoto' => 'PHOTO;ENCODING=BASE64', - 'businessCategory' => 'ROLE', - 'description' => 'NOTE' - ); - - var $deliveryAddress = array("postOfficeBox", - "street", - "l", - "st", - "postalCode", - "c"); - - function PlaVcardExporter($exporter){ - $this->exporter = $exporter; - } - - /** - * When doing an exporter, the method export need to be overriden. - * A basic implementation is provided here. Customize to your need - **/ - - function export(){ - - // With the method pla->get_ldap_info, - // you have access to some values related - // to you ldap server - $ldap_info = $this->pla_get_ldap_info(); - $base_dn = $ldap_info->base_dn; - $scope = $ldap_info->scope; - $server_name = $ldap_info->name; - $server_host = $ldap_info->host; - - while( $this->pla_has_entry() ){ - $entry = $this->pla_fetch_entry_array(); - - //fetch the dn - $dn = $entry['dn']; - unset( $entry['dn'] ); - - // check the attributes needed for the delivery address - // field - $addr = "ADR:"; - foreach( $this->deliveryAddress as $attr_name ){ - if( isset( $entry[$attr_name] ) ){ - $addr .= $entry[$attr_name][0]; - unset($entry[$attr_name]); - } - $addr .= ';'; - } - echo "BEGIN:VCARD$this->br"; - - // loop for the attributes - foreach( $entry as $attr_name=>$attr_values ){ - - // if an attribute of the ldap entry exist - // in the mapping array for vcard - if( isset( $this->vcardMapping[$attr_name] ) ){ - - // case of organisation. Need to append the - // possible ou attribute - if( 0 == strcasecmp( $attr_name , 'o' )){ - echo $this->vcardMapping[$attr_name].":$attr_values[0]"; - if( isset($entry['ou'] ) ) - foreach( $entry['ou'] as $ou_value ){ - echo ";$ou_value"; - } - } - // the attribute is binary. (to do : need to fold the line) - else if( 0 == strcasecmp( $attr_name,'audio') || 0 == strcasecmp( $attr_name,'jpegPhoto') ){ - echo $this->vcardMapping[$attr_name].":$this->br"; - echo " ".base64_encode( $attr_values[0]); - } - /* else if( $attr_name == "sn"){ - echo $this->vcardMapping[$attr_name].":$attr_values[0]"; - } - elseif( $attr_name == "homePostalAddress"){ - }*/ - // else just print the value with the relevant attribute name - else{ - echo $this->vcardMapping[$attr_name].":$attr_values[0]"; - } - echo $this->br; - } - } - // need to check - echo "UID:$dn"; - echo $this->br; - echo "VERSION:2.1"; - echo $this->br; - echo $addr; - echo $this->br; - echo "END:VCARD"; - echo $this->br; - }// end while - } -} - - - - -/** - * Export to cvs format - * - * @author Glen Ogilvie - * @package tools - */ - -class PlaCSVExporter extends PlaExporter{ - - function PlaCSVExporter($exporter){ - $this->exporter = $exporter; - } - - /** - * When doing an exporter, the method export need to be overriden. - * A basic implementation is provided here. Customize to your need - **/ - - var $separator = ","; - var $qualifier = '"'; - var $multivalue_separator = " | "; - var $escapeCode = '"'; - - function export(){ - - // With the method pla->get_ldap_info, - // you have access to some values related - // to you ldap server - $ldap_info = $this->pla_get_ldap_info(); - $base_dn = $ldap_info->base_dn; - $scope = $ldap_info->scope; - $server_name = $ldap_info->name; - $server_host = $ldap_info->host; - - $entries = array(); - $headers = array(); - - // go thru and find all the attribute names first. This is needed, because, otherwise we have - // no idea as to which search attributes were actually populated with data - while( $this->pla_has_entry() ) { - $entry = $this->pla_fetch_entry_array(); - foreach (array_keys($entry) as $key) { - if (!in_array($key, $headers)) - array_push($headers,$key); - } - array_push($entries, $entry); - } - - $num_headers = count($headers); - - // print out the headers - for ($i = 0; $i < $num_headers; $i++) { - echo $this->qualifier. $headers[$i].$this->qualifier; - if ($i < $num_headers-1) - echo $this->separator; - } - - array_shift($headers); - $num_headers--; - - echo $this->br; - - // loop on every entry - foreach ($entries as $entry) { - - //print the dn - $dn = $entry['dn']; - unset( $entry['dn'] ); - echo $this->qualifier. $this->LdapEscape($dn).$this->qualifier.$this->separator; - - // print the attributes - for($j=0;$j<$num_headers;$j++){ - - $attr_name = $headers[$j]; - - echo $this->qualifier; - if (key_exists($attr_name, $entry)) { - $binary_attribute = is_attr_binary( $ldap_info, $attr_name )?1:0; - - $attr_values = $entry[$attr_name]; - - $num_attr_values = count( $attr_values ); - for( $i=0 ; $i<$num_attr_values; $i++){ - if($binary_attribute) - echo base64_encode($attr_values[$i]); - else - echo $this->LdapEscape($attr_values[$i]); - - if($i < $num_attr_values - 1) - echo $this->multivalue_separator; - - } - }// end if key - echo $this->qualifier; - if( $j < $num_headers - 1 ) - echo $this->separator; - } - echo $this->br; - } - }//end export - - // function to escape data, where the qualifier happens to also - // be in the data. - function LdapEscape ($var) { - return str_replace($this->qualifier, $this->escapeCode.$this->qualifier, $var); - } -} - - - - -/** - * @package tools - */ - -class MyCustomExporter extends PlaExporter{ - - function MyCutsomExporter($exporter){ - $this->exporter = $exporter; - } - - /** - * When doing an exporter, the method export need to be overriden. - * A basic implementation is provided here. Customize to your need - **/ - - - function export(){ - - // With the method pla->get_ldap_info, - // you have access to some values related - // to you ldap server - $ldap_info = $this->pla_get_ldap_info(); - $base_dn = $ldap_info->base_dn; - $scope = $ldap_info->scope; - $server_name = $ldap_info->name; - $server_host = $ldap_info->host; - - - // Just a simple loop. For each entry - // do your custom export - // see PlaLdifExporter or PlaDsmlExporter as an example - while( $this->pla_has_entry() ){ - $entry = $this->pla_fetch_entry_array(); - - //fetch the dn - $dn = $entry['dn']; - unset( $entry['dn'] ); - - // loop for the attributes - foreach( $entry as $attr_name=>$attr_values ){ - foreach( $attr_values as $value ){ - - // simple example - // echo "Attribute Name:".$attr_name; - // echo " - value:".$value; - // echo $this->br; - } - } - - }// end while - } - -} - -/** - * Gets the USER_AGENT string from the $_SERVER array, all in lower case in - * an E_NOTICE safe manner. - * @return String The user agent string as reported by the browser. - */ -function get_user_agent_string() -{ - if( isset( $_SERVER['HTTP_USER_AGENT'] ) ) - return strtolower( $_SERVER['HTTP_USER_AGENT'] ); - else - return false; -} - -/** - * Determines whether the browser's operating system is UNIX (or something like UNIX). - * @return boolean True if the brower's OS is UNIX, false otherwise. - */ -function is_browser_os_unix() -{ - $agent = get_user_agent_string(); - if( ! $agent ) - return false; - $unix_agent_strs = array( - 'sunos', - 'sunos 4', - 'sunos 5', - 'i86', - 'irix', - 'irix 5', - 'irix 6', - 'irix6', - 'hp-ux', - '09.', - '10.', - 'aix', - 'aix 1', - 'aix 2', - 'aix 3', - 'aix 4', - 'inux', - 'sco', - 'unix_sv', - 'unix_system_v', - 'ncr', - 'reliant', - 'dec', - 'osf1', - 'dec_alpha' , - 'alphaserver' , - 'ultrix' , - 'alphastation', - 'sinix', - 'freebsd', - 'bsd', - 'x11', - 'vax', - 'openvms' - ); - foreach( $unix_agent_strs as $agent_str ) - if( strpos( $agent, $agent_str ) !== false ) - return true; - return false; -} - -/** - * Determines whether the browser's operating system is Windows. - * @return boolean True if the brower's OS is Windows, false otherwise. - */ -function is_browser_os_windows() -{ - $agent = get_user_agent_string(); - if( ! $agent ) - return false; - $win_agent_strs = array( - 'win', - 'win95', - 'windows 95', - 'win16', - 'windows 3.1', - 'windows 16-bit', - 'windows', - 'win31', - 'win16', - 'winme', - 'win2k', - 'winxp', - 'win98', - 'windows 98', - 'win9x', - 'winnt', - 'windows nt', - 'win32', - 'win32', - '32bit' - ); - foreach( $win_agent_strs as $agent_str ) - if( strpos( $agent, $agent_str ) !== false ) - return true; - return false; -} - -/** - * Determines whether the browser's operating system is Macintosh. - * @return boolean True if the brower's OS is mac, false otherwise. - */ -function is_browser_os_mac() -{ - $agent = get_user_agent_string(); - if( ! $agent ) - return false; - $mac_agent_strs = array( - 'mac', - '68000', - 'ppc', - 'powerpc' - ); - foreach( $mac_agent_strs as $agent_str ) - if( strpos( $agent, $agent_str ) !== false ) - return true; - return false; -} - - -?> diff --git a/lam/lib/font/Vera.ttf b/lam/lib/font/Vera.ttf deleted file mode 100644 index a4d30c38af69f3688be3db21d760274a34ecb72e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 65881 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 diff --git a/lam/lib/font/VeraBI.ttf b/lam/lib/font/VeraBI.ttf deleted file mode 100644 index f08d51880871c4ff851019d4d1610250d01298c8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 63169 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 diff --git a/lam/lib/font/VeraBd.ttf b/lam/lib/font/VeraBd.ttf deleted file mode 100644 index a2a6b1fa8e28ea37b737ebf17b0d6563d6ac99a6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 58675 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

)8H!(8G@rx-d!Q-;QhA(|LmE(YmhV2rpz7XzY2 z|J($ne^BK1i&1hDMDAg^pQb7OVnn|ca!$5G$%zp;AvxP2`etoa`syMJ@UymxOo!+b zEqeDFr1WkTy}UuC*C5feT=Xax-F4B;D>C9dN=Az4>KDNj(Ip)W=-DMjqNcP8wR86F$h~y-nk{lFCu4pC6CzAGY7P? zwb)kS#XWCO#FUF@kBHKR2iG25xXXph=~i6P!gW}7x`lIvtf53}6^?9S2Wj?LVaGj9 zXd&6A3#%?Hx=1{A2%bknyWj zB(uG$B13|#m*3qi1q;fXLsw1nzdk+CyVuVy{celDnH4u{i~aj9UM!v_Co0pMm8517 zv^LAZ^wYmpc)EA5amCa8`*^p!QDLxorK50j;xx2?Ke~4=S>}=BEq$5$c+2sYtY}Zb6AX9)l`?B<5Q%MP^|cn~kKfm; z-6olK861wDb5n@vi~8)YZGjhM@vmfPD)IO zkBg0t^0-}2&7s+>rjQcU7{B}Y(Ky0;$eHZpL(o?EJBy1zbdCsk1I8ykIw0`L4HzGe zn_^Wdx0Zce#=ZL9Jf5UCmwsHT|5*BIss0Z>CSO0xOGuo-Vp}&G5v=#(6TjcFpbAf53noFRr|F zH!e2T8>3o;M^(KsvC*FX{d43Lnt_~h1^8sp)Jx}g_!}i5z*0e;uN2a2mR=d6M+`d=gLAWC4pYGUc9GF3wpu z-aW&GwYYd-czaft_ zGEN(3AD1~UYX+YoO}5O?X4ofpo7rb(*0k(vvN16s&9jtRsr~4Uc zbsvuJoNTChAD(W=P&m0M@c|;0Ka@K_;R9T?b9qpoHmB;#-|0W;FRa?qqnrNT)vsPV zdt34N$$cLjK4SZ#k&W31@UP6@S+iF^bFF@`I)4=Rp8CV-1-T0bJ$58HS^p}l&*1)P zQ}y>U7maS%(!D#R1bfGu4SVMeY5ZQcQiiP)GDJXT4ptK;jyH$R8|pXf-wPSzNsa6+ zd))Gv)52vdvwLK>6V~xaHaaezH0*6xDYst~QR|I~60-imLw{Jkj(1OVZBe}9g@_VLI3)o=c#4?A^AANg;B+FcqbtI$~w%MW#PYj(|Mk>Lq7 zhgB$l^f;UwqO1;0*i?_;LSio2Zqw8#IF2LPAK^pRhzzm&{E=+@L8G#`qF91pijolw z4p2Nfo}jGid->QxefM^KS0OJlzP9u6@=Jf(xpJSrjZfRRa_65`?&Z_;ZF_;yNyd~@ ziVPc)7IHI-c*4fFDpr|ANt)`QmfMCLfuf%uf?u#7#vZM~$a}=QlGgsix%M92|4Bd);PJ(7hjEl@8h9J)$%|g;AU2=ZX{?Ct<6F(t! zB(XUcKT|Tp)-^p8ZQJ1zJG>iQ>*86gBTkKtiirm~hGL!})0xHHUC~`UZZeJB%>sVr zF}}sls-;U8ELgf^0X*Dc{X_kvewc@N2Jgy4QVWkidshEaKl|mEJYHX^SM$}pfj9Ei zI&k0&dm$7VIBTq1$SZcr(oSWih3&LiOTPT7RKaHL0vps8|u!IWkrtTvGK`@A_tXt=Dg2k z-x0MzW=~7;UIkktV!b@kDSYq~ZO2>4*pc-!Tg266M$hmOOH;(EmPh!cW28@R+4sOwx|%=JXBfy6&;jz8L2A z#ddYaiqx1?zb&P^yX_2^d%VT8{7}L(=g&}lp#KXtAH9#fz8pw1!UEGHrl;qIPYCJ$ z{Y|9B{s$k?cj)^YzPN7TiFpq__QYfBx7>g4T{q1-IJ^FD3*k8fcZp!eOKU#)A{gY| z`wv(!x3cQTt7lD_-J?5C@cR!PzU2vMBzDCpInV|P`YM?5(NX|NgS&^V;;^%;C?i0?RYLVuurfxNDL zmDt%5_VYJYdvdXc35_4($j3Ewk`!@NFEof zr80L4DND-{_c?=YE$+{WY5Ex;K|Rw;tYO|5b~*RJw3Fh+_Un61&*C1Qr9Z2GxcsLj zH=ZiHXY=NJCLUO*oY2pH;n4JN&wsC<>zmCp^Yia)y8e!yy{X482Y%_wIoPr;Y(OYA zn(c^HcO*I1YHQp((l#Wm3p#8GJ`s#g@WrKe2~zJp<32~G<;-~!>bdtxq@AJ`?&)gi z9#G9TP&K=BcC2)^0{<#2D){x+Y%AVz*gazX)n~a+e@*{U|5$&CH}SlAFH5Iy3ICJc z)?0e_JanLMU;X^a@AOakoxF|QJir5Y$`$SV^*g1E_P)xAlNV%pKWyYO z@F&W!Xz57Oj}CQW&oF+#9_;WnEUh*X9si5?nnJyj^Vxi5Vin)iuy13*7*g zj#v~9l)y~Pk@+R zJmKy;);$cv_zBqe!NcFrojGI9oEbCcN*k`PscCAescl-`ef#nkUwif7^6lMwym;Ry zpMCbpeJ}FK(@RUIPrs&=WWNBkIU)OaQ}!0$4h>o6HS!MV;tuzQ*mc3Apd}$Xj-@4N zhU|~DwVg3F^GKvS4?u8_&O1OwM2k=;V#3q9awFI^gQ2%)ZY$Yw*fVPVjI;U|d?2^* zE-2l|>8aAWTWpFv5+}+7dp=JD*ZwF$ff!+eJh+Apxg{! zOHgRc84N{R;cLm^?$(5C3_GJW1C-%GG46z)0yucyFu)(-eFRa3<&^wq zXk}{1tx$-fh-cM3fXHME1wcj=(t-fQCV6=-S5CDJ5l32eMG|l8d-T1n{8$S=M);lN z8OkYfDomxuo{;vcPsmn<%gky7Hju$_C>PN38plaRA~;AvpZfZvZ+?!8svs^>$A>tRx~>_s)s2_{$t;g<#Pu0o7pFS z!pISPP>*hZJ~Zdy=>xAE*ZU(!BVSif=wIG7KR2nT%uoA;rJX^yw8>>_PKJh zZ2NrPtbMNM26WlyeQxBcqMUw(32MBfM*`~+mC`+-TR~K}9^Ly5EuugHo(vk`)`z@? zer&SMxOL>58+JO|9P1hbU(nX6%W~=wG{&Q0L2iyYy3Od?g=jY7>9|-+T&GNi;M_pZ8e@yeC@ zjL{Q*dj0j*;?cLXkBffek@BYtZv6ew!E^LCo?W9~D4#QLcJY?7dABTE#tU9VK)h_} z9ZzkZbM_|vpZamqOAR@Z4A@-@)3`enV#%svNmh|+OtvE1sMzRSN|rGdBnxY@kcF0P z(_~o$HJRmp z5i%pB74cf8Hbtw{mb2x2xpld%QM*gqs2##_49BOMJIb15OLYXTJ#2nQft;_5wvMq) z6Vv4>%2ai}s6sMpo?7Z?WJ~ysa+9*e+Gx8|zD>E!dZ+Cnd9AX>y56?e`n>He_9}l> zddu>%^=;cp_C9}KI%zp!{m_vfVkvN@Y0HL4HgcCf>G>w*Fp99gq61E<5dhQqEZ|#TYREy5wR%_D1;@} zCj#)l*_2enFea>croB7gGB7J-V`=WR%(UV(na?t?rg?p!MgIJdk-P^&`o(XP@CTSE(!M=XP z{i=y`)}GA7YZ4_sD`ejoFqgdfiUImt1*7yIzx+b~aZ~~H6FgN18a$0-eL`M#*tU`%jFvlOTL}A0!lC`VYhk$^4&@6?`9PEiRN2V&cB@Ml+<)fLs zt8UPnaV(H`wO#ksr=NVu)3N(i|M7_@^?z41mXRj_9`b46f&Iv#82PYzP&$kZhatuzG)9E4g16f1){3<{WaJTwn0|}C56G_edTCz!L(=0HP9ccBw11l<+iKYSaiO3uAvPl1 zgy)kki8m=F(bw0J!!o0Lt36ZD76N<<36B_qIvC5apds$8UDu?7y+Ihca3Cm~Ig*H^ zDUeoL@6+G>qap4C{C8`(XYsOsFa7+d?>-(fulv{1wA%c9L*!NbQ4;y+eEs6L-{`u_ zjfrU~%x~ofgWp$%qNT&ugGl&lNG!&}HC;Ma%l(+BjuVjuGu~5YK-M% z!%`t36Sh=)-AYI)R)itv0|cII0^=7~>XimWI|f_Pc8OUID=)K^4#leSSR_!OF-ORu zQeSGLv1Ha|%{Yu^9GK2F4I=a@1dTG9Ax~l`H#PUJ{&vxj8ow}LK zV+9k)njE3={h3H4NT7^fbfF0S$LOLKG8GQ?mr#!AZ?RgW{#>%skC1GdjrZ3yTTrt| zf?2@~yJE9q`bE*yzOvSr!PwCV7giW;fFnmJt#oOaK_1KWT1Z~HjNwM5O>$XXwp7V$ zNk#tHtM!zINn@l5QlX_#n<`DWOxNa1wU%0KjdY*&KHHO0v!z)}khzR8e=PS2x3dQi zia|VAOyD6g+B(HL-B#?J&*zB>>jGP;^H%F!wg;{8a6{3=J6I2lkBNa_!D>z6|Ii=M zx1HCw>8q6!ZKp+QYfpJp+bI#e04rkf!stFWwltJ%0UNl~A2CXhh=0kdsN5p;l`S1q z8>SOfM{*c6G?tO%-sQ4TqPCx=GP_T`f{*57)hT?sT5O-k=c}dm{d}+L^hpVpE2SJu z0f-M-CQCCcl~R?(ZU`P2drZ0Slu~)MUebQrz!=>J7_&A;K?n?#T4@Z(;#hVlTHP7N zb~-jht&6wyb`21{y*+=HVhY)rFD}~c%k&MyB+e|JW?CLfL5fJa2`)%fHoyFG^D{5M z{0yJZ*Xc-s=@04i_(SqZy{+YIy^YIXw{V%q>E-$weXU;3H}D1gTE4+_JBBOQ@QRJT zp;*UGi+v|sX^Yk@-0JQv+pXwAF-8}no@;Q=$U5y}UYN#c!yn7&q#!-)gbql{c{1;d z4BuxuP4b+myYa?47@@DeZf|du59-%cmzOUjUg#$bUbrxoF(;Iu#qMP8ot6!3oioX) zaV^@{TN@DFTke^J)(x{^1hA%=MknrNb+BZg!=0SLGLxq`CTf+AQf-lA5zL`xaZI;Q z*QUozi(g=`(r$2AAt5Df!@)KrZqY@Fml*vSyj+!{uhJ{|Lwp|CvgU&~d2juG{j=tm z5AFd|6Zty6kk|#r-ruG_FjH?)-IAwBLx;CHZnUVaoL!Ly3{ozQws4( z;Cv`GF+S0kkdT;|kksGXKQ_;s7dyo}CAK)F!dnqrn&P??MfoHsra3@Q;c=L=LzZ9q zba7SH;w}1esStU|=vDVkSQdI$uiQJ}y4hmbjCqyQ^qch`+To&Kd;fuhy`z@jtWV<& zb@WP=)o`)Bp}`sKiBJzL#EXgdX!ev;*~?#%y|2XY^vFAd8$9c}rD*olL<>vwIb$ro zv~KQ?FsIT&^KOO?nL*WA_t{IaU{+{SU3We(d0@)G)Per7DPvQ|`lo5Ll4qvOPMz(a z5m=B^n_Qbxn>ycL>#qqk+8Z5>+S1ge{-uGn_6Hpgr>sxi;9nouYTxSEs%=l+p0Yi4 zyMKG28wAfUO>3l@VPpU!7LPH0LCloNY5Jo}AX}E-TJqKWyM8~t>G7ZbOFyN*cd!2U zRjast=}os?eaD)=9pirPT*75#tA1p_6@|q^M#cxSj~@8(lRo;1UKK$^z(vgrf_LYFs|8YxLd2?2d&T{(+}!LSCo8go>;)CIWpGCibpILn8U5nvrU&heu1^s0h+?$`@xbbK4VGe#nXsntH52}C+cu=jsT?0L~{-DO* zAIUkbzfD7WPD&P->TnQcj-ZAhLnX&*bznlrYOZduV_h+ zWLdLq{lJQ0&H|Ayk5Te$W9>9boFUB+ljX@uiCSVQvCgnfw$F0ZVg{#HsuA<$`IZXn zeA~5JjlIfI>sTZfS#PjiZ@qe#kBZ%0)?OJG&6dlaoosk|7To$zxP)OSa;@ zP59Al2m`Fi7K;iE#p|3Hbd&`#bSK06lFW@Wi=A5(%z7R9h@v1f9tsPNhVbFxyYbuk z{L+jEh073`skA>2WJA-e!X;E2v!x2REmL&0`E5f)j_n#zY+EH(*ba$io5v=p2vlua zq7);?SQE9L45MthiyE}{gnV=5TIIxhl5bKEGZ-vOQq<~8iu!U9tk4I zdx%^!#Cy(Rn(PahlE) zykk03!F;CVZ2$ga35l51G@;4a-NuwQwTh)gXz_8h{1|dJXcunisFB^E*oxAcL_t9M zv3)gWHNHUG-=9`Wsnug*n{pQXRatxpDQ3=AVh%z<8uqA>PCN>8&JnKTPn?k4|I{n> zdEZO$QtepgqQ56$ng*Eb$ykj{DPiXx5{HyY1McIPgY^b-DKyqk9XyD7v*mNrYPAye zik{=Iu~%h|k*P6%jBzhB?WE}|e?BxdjOecnS@$GJ2|_|=0fvit!V!IyTB+Z`Z=hIw z8m0(e#S(apVckrqhfQU^R6F~xxMS)@=Q|$%(bTt+Hm1MnS?6HsaUx!`Y4)M1LW>#P z6@oef?~QpjL!ZpKq|dRG2H_fI4MK&P8AJU;1H&@L`^N`n`DX=c5VG9lzbR0cagYC= zz$5-g0)O)VDe$8I#eg?EB`bAgN+@+=N^$Dkl+x5&Q&yy|PPs32OUkCyT`A3}Zi-+c zQ&dBF5Mn~&iE^`D0y&pWl}cOcuDklGin}PiKW5L(J5OSoCGEZ2?rnH&a>JL6*pr~~ z9}CBh8h?Lv_uJcV-dZ{9tu3$aOPV~PPap0{O8yoc*@1XsHnh}^DE5j_qPp4fj*D&f zu5-Pa_*ncqJ~1LH6z{NU32q}?ML=N;QYmlp`MIn;6H-c3C@O^1;H=Aa~fp7*E z5(ETmSiHCa3x1Z2-P3f8Yx)nzn)Zy<*YnCRwr$$9?a7TBpOj9_nWaCcx8rzj)|@Rs z2bw{$%7v_anC44hNBMEtc~m>DZT85U;~=60%Lt9d48A;Ncm5n!b!F|jCUH5X>pG%9 zO3`^bCGX_ig4Gk&KJmobNe_l5{b?%F4BIj4%$)X=JXHTEJL~C39(g*uuYM{u70E>} zjsdjlkIe+HoIuWP@+xjKd&lY7th{4g=X{etCSqi!Nuh)h_QAv}(iZTl1(V4w?lT>{ z;xuM737N3F+|jSl`n{Klv^9qW=3y^__du~Cxd8cf5h^G0M& zQ6kOq>EIkDM)zbU4@)M_c>^gBV`rxMnPN`TD_YwN+J<|s`)1j41gG!lPxEoeYgzeF z{k}z|^MB`-aw>1SY2+xqC95yyY2vUAWsv^z>dIwJH6&GdaCz^I~&tZkDh#hlG^Pm`4O ze8nj*hK##mA!XMjmtfwbvB!NIqmt1%Y;S72(>F(b$leiM9ZYkEy#5jDV5}i9?F03W zGp5Wj6HY@PbdnyWJ;KRjW5&^#UoqluT2o-~IafrwJG!^n3I%vuKhGU+H|-h=g?LIo zP<3SP>^)aEKi*Qi^oEAIrArUanaM}CUf{!L&fVJP(ZAO}^9Oib|J?PD3-$4}>o-2W zX6@tP_6~T;C~!ND<%Z%hsll~VQSW%)bU)_glEy}RG|lCv^n=;2hafL%jQF$ml=@cq zj2;xo^RhqLAzsY^f4wuACs^t2Jb_?Y!WnNE4G!|>TD})m=TC%mUr+< zYC~TymtNSU#^@h0>EZ!B-+*XmE-X{gqq7SY8_3dY_ti;wZqs2X^zxjIR?J7gFVSX+KB^tXY z6l3HaceBSLiARmOFHbz4L0B0o^$8yWaGyHZQXmQ}GsG-)n&lcJ^|)MIFJG@NvD_hU zm2X$>wrmt@u(ySw~5um9f?-(k$yd1WpyoBB@TgURi3rUAjZL+xiFT zLFHj9E%ED=f&~7^^lWO!gt1TNAhhbW`@b~oICJkX}q&&wSld#RmeJK|V z)+nV)ow7m+3&3E$8uJrENY1w7g{^yFWrD0R)IHG~Ws@z;uUg_=r~KHD^JdEKBy`}I zD2G*3$HZt+V^R~fWH(%A+YpL4$WKzVJ>(26I)x|20S3X1yJ!_rSEDC)#Y)d`Pj;nd zWMvd*)Mc#5xG&@B49hI66N2iI7IrKc3P3v}s_8Y#<^7{xsC(&6tO(=zMU}OZzAjWU zuMU^)@|2yUH1n9e+lrf4hdo#QA|hwTqI-?Z(vXsU+Q5lGfx`4+hinv*gX zW>c4lrY;f1LeR!278PDthqTq@x*jK5GG}GpwT3vCw|iMsk8UC}*89vK+uP*QeKi$A zAsn!1MxFy4GT29b+7wyqpPHHyG_!d|j1_a#dpv%lN8T7jj1|e~ zO-w97O0PI=d^hrQ$6L-^p3}pUuYaAxqE$1=(|K7mErzyJ=5n^phDi#$osuUmB|X8B zpd~otUA?S*Y<;vo_CAh2T6h0I>tNepZLociV~{q^HdY&JAL|%nm;QKF(#%1^$uVlRcFm`f=?TG}ATHN1aK<=k;)!+7*T zEahsg{bt#D=9~-=Kk6nVL0a z%O7`PEfx5hh)CvfCe7rLV`2w$4_4Ua zQjp`3a`<)nsw-#i)89V+%&uL^qx#DinI0?}aFIQ8oS#CnJ7Ctk92i7P0=#tI`WiAGL6&SW%oaC5A( ziO-jup4icd5Xh5W^=$RaZ}C0Sj=HP$Z~EN6C^5b3j)$b~7dCA%tR2Uu6{h%rkIKIM zd45q`mS6nzf1h78Is1$J;!-db*)_^BQf^|3R4J{H?vpklLt!3=rNh!YIR0iF-$~y| zK83+y3QhL1Xr3ezomgVw!`e=QTT-w$u)C-#+p)v5b$>4~Cul!lQvY(l+ z>__=ZObSU_zu(MPe)@kaUr9OZ|CFly+>7KScEBrH+Grywd5yMETdo<5RGO7$4a`*D z)!xy-OyyfGE>?=cfGJ9Gs}!(D*v*m0k8tMsJUDnF_G(fXuqt9`ozqEWGK#_<|IBHonW zP)|rF#Ru|-%313_Y@ge|a$IeQEs+QC#{+gA7{g~Cc#-$SXC_uQE`ITVz8E5G6LPyO zwO!aGq&A&;8)>%&S=#yUL;1gzv+SJL?8sk65|}doRI?ZfOr&DCof4SGf04kvv;ZlR zxr}5qJ7u0pl12s--C|sGjA3y(8WcpV~gP{Z0H$d~5sG z_HVp0;NR*+TQ>6RGIm91(NdC}WR2ERH7J1G)7nLY(B;9_en@eTlE%s7tfP=0yp64p zR>^m&tE?-u2iY2Fz5I~6-nv$MLT#1~$%m|@W5?uUShw;4dq?_I{;T?_^&RaC_BZKU z`AhX%>)*7W*bnL;h!9y+2oT?pApf(zkS{s=C0~NyZThWkKk2thL#1?m4=-&0wEZPM zM}HI&^kGyO1qr(N@X$zCGIOEtVHby!7SsPcrRqX0q*Pr&Cn6$+X&bE{3bq?t?(Eob zhq)2>26uQZnK?&8Nu*z$BB7}R>@l*^jx2NDsFTp#M#St!SQd_$@#2h#L8DY_h14kB z29x%HVbu0?GHS=eMlBvGaiJ)%s20T<%e{(M^;)_pUDPfX>Umd){%U{AK<7YL9?Ron z#aK+ZWPe_J z-ub%pmiCtO4cGh9S!v)U!{_AYuxl7zxKYV_!!cFr-ABLp@Ugn9C&r<(v|FVgFZ6$5 z&DVp*q5BwFUpXHVu(3x&2}Z)#Nc{%kad(T&l=VfX(#ZNAB?n8n7o-sX7g^s?)1@hv zDyh=4Si0Wwd&_Ez6`jE9=5P@LLnOs*?}~JArk&EkW3AWN@3lT^eMY=!g_2vL;MUJX zi`8e47fB8`iFey~Nkwh3Qc?R`a%pS(`irbpssuF%w0Ft7Fp})TW@EFa%WGGIwgk5~ z*{=AJF|!@9pJqq+-@Hen9}8l}+oma9Vxy%P=J$CtmlDL1)uV_jvT0_OVlf(78J^mh z@S}Zek>z$-3bG(wb17?RZd#x$NDgI2ytK~(D>rFIT;6r^!`BzyJ9Oy13t#{6WZufj zGiqw5PhMGly7{HUYnwi8T>JJ*PoJK8@771|^(EfBVe6`?pg`7>`4@PF2e#$x#r_@I zuZlT?aFQ3H2>;?UHTg$OI$TC=X(&52m>BDDSrhGEpG#K!f+ZgDf!g%HxsG@q3nuvz ztX>ySkCItJsuw9TyKIn~-8ST?8Fm`vT}CgFi^IsoDirX6$N^ZT9--PK@)FgE=UDzd zlV{Y{&X{~perL+7r>@$%;od~wy^n0Yck1b*r`6(mc=og%bFSTmE0=|?raUQ1&KKtmQiV{5j-PnxbR4^Qk>;4y49m4r2K0vh zS&#~3*i(hw@kU8CMhht{z?Xz33QT=r`irwba%uqR`{`Uswx}{bsmYiq3ncpkm?{ef zELaV>Gd1b&TI{M+g$JVj%;!$EL}PTI!dm$zyLt3vjjLEFjo9CP9Qy+dr85~0zSF4w zwa?#21`#D;I~I08|9M?(nqk4PIVfVm4l^%a;1ZV^$P5e$)CQJ|<^H|4y`KHi z&&4!*n`4{fo{Qh_+n;bK@levC3hE4#~bYwBJ8HEg|wELyX@*>T8u$aTnl$kQC%9CIlCknd2!bIHvqyHgMN zN14tAyP^Ze8Uq?|pqm9dEwe_MY?V^=WwXsSx2bWlPh8))EmmJNzJLGmMY;XQkHzX+ zWnb$UV+HQMv~fL~wry+5EL_rmJk=O~VWU(+x=^Xt(vnu_0_|moF5vY&cu5XQut-Wi zZD>h1vjp=mSe9y*C_h-L@l4-viGmz0l^Cm(jAydLC4v{3&(MkkqXfwS{3D&qFiMQs z6txo2Mwum8fWP0s;Fl#Mf3xI+%S!rof_Cp^B?CK^{Izq5C9zY$p@E}5Y`cB_l8T5MG`)vo%bW{TwFx$T*NDv zkbxr%A|)fkB?uO!?=CC(z${@yP_j#G%%QU2?G3(+t%|X;9-&yPd{$CF!-`tzj6+OS_!Qezyf_Ii^Gw^2GqBRMECzE4m;uG; zl?Kq51;y+SUI2#G%6qYMD}V(zx1781uAE8P>s@#iNuivwX~$ zIdeykDc_QlnRUack&An0x`#5$7B1|wREK|ogw^#A(O#M`fUq8eB-Czo(^Bi6`RX;5d7<0TD zi^*SLMOh*Xg#xh%v}hMs6ar;=hi`-1u_MOnWJniT5?s+5MJbLD{%6|Rt8C{p% zvi(~udBQv!&;NEicm0Tjj>Mc7hl(G8Sq>Y3`mIg1*Nq!~_Kit<^!1}gF4;Rg|1M?k zXBioNGe=IaE7Sk9tZ8Fb_v;GoeP;QtQ~?W#{Df&+d0~!Pr}Ja`0r%Eu9%SQ+Crwd+bXFd4h!K0sG{oaY6Dpku*KZzpW zsa*%Z1Z(ebwvnb90mS^^i+Zdm?F{bB6@mS2d%(S>byyzCxoGGeS z7VOilOuZ&W^YlSljNTV<9K#Fu$Hp8V?bxR%=!}kiS0^YHN;5wi*b|?bJt4a;dtI+zbF5^{qOg*c-4dnc+AKq~~Cv-*c9z8P>&Sk})3w+H!&;7>nd3MjQhiCNY zCAwtw#*Us8U(YU4ft0?!c{wSSUFJqj8(g7I%b7cRJY)dlXUxnRnQP-+D#n_smh5x- zxi;EtYXrlzh0L%q=H5#~W1$fu-D{?2%~y;-<>TVgao;dLoHmvjZ(P7$j7}TQWVZO7 zsq}BkyNj3n#WuC6WSlL&@z~U9Q}mO^a{KkmzH8CqDRrLM;z1vuC>pMB5Tp2j z8UScrzfQkUU0s87uB=hiAbDB)*2Cp*@WQ zxB;{aUZe{$5?;epyhAUUR4H*!FY!zO^eT@CBy%e z*>_fCnRpa!o5edA4AQV>80(-eVB*iUoX;`5{_Jig}}-uPTnl$Tx`3 zt6zW3@BaF0weJr<(AyzSUi<-X1;H>DQ|JLLM#H9Chs>UcQujKwC*0PUD7+#HFSe2} zPvl}Tp#j*68I3np$k9mK zSYM{x-`*fqwy&psJ9^Y=eWiS&{r{`%OW>m@vj3}ly65Pb&rHvqYce^>fgvFwgdBtc z5xMa|1Vk>m?^EOqsCX>P&s)(&0cDkSO~8nv1W{Hn8%4Qyb;W}PS2wumu8Im|^8dcq zGa-Qc`~3b5{if4hUG?hKt5;R8-+T3pJRYpn<_IT^jy{W;7PP)*e%u^}D$6T6;)6$Z zD4e8qyvnQDgknld((-(!{0^x}rn(MVUDEmv>#pi}RlYB%r=@0c5_4Wq51GT}g3L0# zAlUIL3`Q5ed7Eb$sDHajT;Hevr^ta@9`p2k&-BzH zo@;=vG{_UNt60lJq=v9Td=O(0!=SCkCUJBp7@zjjOo-=0#(d7StK;qcM$Vl)uI?{C3~g-`?`L-1+L>6Ne0%I5Fw!t0&-h z>bN^seE-U>=D82tz2ZOH-#m@s2fp|Cv|z;calwZ)LH!ZoeZ-Fl5%L1G&odC?$6=kJ znW1lv^;#NiaE&@(>P&NHBhrsVo%dq2pO&-ip|3=r`6l{|H2xcD{P|{D3~_177SK@> zIT0Tl!mFA^yr7+x@I6sjWq3(LP!#iY=)!)o@W_V6Cqft*Aq2?n|3Zyv75$z$b4Gsm z(4p_8>rP99+v;*LcLYu{E2?T0FQ^DWWR?)Ih;k>rCr!5Sxg5EdQ5{NQqgR@JF{;3- zGiOZOe~8wfj&A!N;e#kTjZhau$|Q*GkzRVp?QxS1-$OsT%b_`(Ax(2+yEMBZehQj> zwx2w9U0W;L9IDIY_Xzhaub3H-lC)WxI@5v>IYdpOVKF&5lJ=f4!WeX+iXPF7zD@H? zs<8O?mwJ2}fXmrcs#DW_&SX8y*-`K6tkC;7`{|mFFT82^SLBMgR^s1-u5I{7u4abF zDNQfUp|vX8NTb>of4Vw2S{}VCS|PpLIXYd+ioPs8fPp4WdN8^Tp}VGaMxg4A(XrCT zKlK{+ww#RkgCDef`S!40ph#VGsQN6X@M)qVlJ0Ri@F76*CWcMsPf`NwG>E*<(i3f( z#~!B7!0gA3B@OZaDXgEX5EX)mkMF(SJ&6bg0?UvT(uNxeMeqE#7OpX^wNjzN-&93PgX)ctc8#7XYoeJ;adMt{}2s8Z6L*?Hn8<< zS4bbjFcm?<&?_xuI~4N>lcWAXWlrXwZY+xItU3H+w4wF2=5Jq_xW?PB_t;ha`ixs4 zzchDe`OQmqUR`|6+~{sZbJ`NU_Mbc6m$aL{pSLXf?coJ?An-HjnipN9KBDe{d>KL} zcMe%SZ;{W7a~6lD!cA2H8AlJ00e)w{RkS+5Wf_8;r~i0|!ecLPzq68LI^nQ0YX?AjP!JQCI)56p3|ZFox7*68rr9-r>y@h z|88QbY?t;=8yXohsDFn*%fzZMY?Dq*eE#_&@Moljrhh`002_EP z@rH<=m6N6^q0D5DuDOyG`E|)!FO=k-PRSy43DHB@J6weh9G3MW4S)G1B@)b847iGpEje7}q)&{eZecB-BIcp;p2SvC@i| zgU-reWkO|QkE9;SJyI$|PI75TZ!>}-qw~zT(RtU(czmwXYO=uFW-7RFL^`s1O0S9$ z^CZWQWxpN$(B{K`zkkF{H$OjQ)E@?X@sZs9&+^_b)g=}4ZVn8MMrsE3y=TGNyM5g% zGc&iRq-+I279uXc6Qm&n&SX*EQxi_=7m|wI;AMD|;R~rGN1S4PioM>>D^)u?1_*~!T6&(gVZ=y>l!9dcBhc*~+$(}S{ zP!m{{z*&4zNWVi{6hz=u4!QESF#(JFoX4ErX_83M1Hp4x|9XP>GaZpr4BtDSth_H} zwrp5&_xtrPzkm0NmJL$oiY3w=u)Qmn?pPuT%qug8NtWNg|IdHEzd8ETP0>#!u~-Uh z#^c4&d!vn;qs^ct6xxUuyA&!yx2P8TBfYv+ch$qG!g9E)_$ZvSzr)c?Z9~@s1^J%+ z)$doDHiZA0knDf2D1TiKthLOdAR(=*u5}PvYMBlj4$V_i*@KMIj$$Zd8*vP7EKNzg zLiF#28Woz4z5j?-ka|TBOq-J4>#(k4 z$E$*=X_-2v_Qte6l&R+h&0)P)=0J0=U}bDxZ*<{y6MK?xFc+lt4QBSnV`FNMHi%S+ zQmqnm`O@@mn9KJQeY64oYeT)$`{v!^9~K&#epBvLG2K5YG%Lr*&y-G2^CSP5}<&Dqa>aMrK11Rf1r<(n6hA^3+1YzjzZm7*PTJ(%Q(an#Z<%=9#ebHjCAXQa87Sd zT=f2^A6kuYP8>vQs_B!?*RPmRQ8KEq&vm_fMc+j@r`@;xZg@rafd%hK6JQ@kz9Q`+ zM9YW}ZCNX@j#gmErjcJmF;5qNfc#2#WA%){=~z{U;mlP+cFJ;h>DlP$mUoo7(gcbR zMW3F-`1HJ1P|yfXc>w~_gkv6$3GnIj|1_;_d01LS?+tAIt2)wL zkGcA+NIu-;Xu1x^L)bMS)DcHIg0m^CKj1A2U&?G_P`6_n5jU!#N1O_*HF=nakDxUk z{)i?l;6`J98&|Np%wOLn3Ip$by1 z;w9-(#q*N)(LfTu90WGFlnv?6xjsv=W|2mi*Rwo%BOg0P?Z01W06O3m{W}7tv3=;-lQ;D#>=I#TcukdYfclUuqV=2_? z0jM<&o(qFvMOr;{rLSWcwVTcvQO99-RQMrli_c&TDUz^o!9Tevx>H^o&6En{l5;ba zVHaLh_MGcMtHWo+{mL{Y2YG3t^c9nR0^Aa^%-YESm>P4}iMAN0yQ9lYkuH;15 z?uRq*?m3he530{C<2udaevry6zh@NIp#=i`6rs3Rx4}I&W!kOXk zh_atHb)+(-O%Jz9D|AHrL_0`-lXlvRl={D)`tp=ge^DPNOREv3bBc5q%&U1GMQ#pe zn97&H#ickSYzpWOi}=W@?{^(_Z0NMfo4d*SSJQ^<@Oz2gbzRINkkJ`T=dyIxY#n>0 zRCb{{U4T5Me#(r;Yh_YJ8V+{2kN*g=Ran}ibO`>9DV>dfHKo=*8K~v0Qf$7{HnE{k zA03Ra-B`Jjnv7>Y+3^VxW|rnN>~?4B8F$ND(JEH_{x5xRICiJu-XUe&^WpV3G~Npv z<6h@(i@AUp)0;(YbD8UJ9y&Dc^Krwlo3D?)TM>5(AvrCiZ3+w!Kqc=R7#sZC1qE#` zd>0}LMt0O5vJsja_~djG}LR`GKzwJeU9hAXQv)~n$1jypkqAq673&9v5G zQiNNw!Su*&Azt5qbiW=w`XS{4b|-Gf&IATj(xWe(JT@U}<{#5=DVgjx5i2+(jg4-k ze!L5%%)VHP4bljum=Uwerdix(xE*8ELn#Petsg&gNhye=iBcF!Lr)!>D4pXUSP7hr zZj{DiP&g5NRvJxoLS5uFTuSmATn|(Ofw55yGj-M&1q__!oH()ulKA9_w<*YzD)2Vp zhp-+LR@;rSo)9zWhp`^Gd?^h@h2uDoy!coQ!x&SCE0PyQw97>h)Rd)Q#4TVYYkl5f zTcS!!txFU(hamkGKjnf9L+SH zF_Y1m1>bUd!T`PPYYrk=VLAZ`h3N#Sfv6fL83v{Z3@%yVEC%(5B^#3V9M-W~*& zr_e=km=FZOMei_%==Rf!E3Zdn*eudHiZet3$)q2mj;KRjb>YB;Mp)oypa10i5v2f9 zj7@ggWM-5htHl3cM=>(Mfj67_Ih!<98Beg>{s2-;icV=gDN_t-6Qb04VFHV)l%i7E zVx7DmaUx@`>8DOz)b7#e1PgXWc>N30^IwGE(*p|i7u~VT+&;`|3dPz;0$k$YG2luS zDY61BmfsXgm%R2YQ%_Aw6q1wxgFOWDq%RII5KoA7a22KayrE>jlHiexv{Z-3j%_Uz zh$YW*-?D@i1!B3j%v=PHz;_s&r1UW62CV)d9UYdW{OFS90ZrO4B{R$i%5usKr8Mc? z4TFQAC5PufW$hf2rTPO;9!N<^O+EDFfub4RyUr*-u-wpNG`A8 zF%^5UAlfX3aSYxuAB$HYxH4!|04_+Ed0S&o!A2l`1|HW4Fu@+z@xV)lABwdFA zm&5v{)2zXY%OjuiX+F2bbTc%M!`wH!?EEc~jJbfXG10;(OY^Sc_EueS%dYm;T`>!< zPw^YK@`_fSiQXkGKO^mh(b8@P6J`4^8F#CLdG>BDdHxYsr!ZTasb5;%<2wQVC( zELUSdif7(7AX#Yl82d2Rvjtfiky+CKgw4CU#E$R;o$c^*%Z^|RnbfEApG34PK^ki%yLtDvQZS9_J&FOCIXZ4pQTXSp$1NGylFeVux!g*Jj z_`H`UJ!l(hkF(GZ6<;bW+pFj<*;=OEoaU1I5U!?nYQFYc&e$4hPnl~64!m~fvA?{r z^P|81yf3!N3~unIGt#}Z2aP+nBhAj(4mH2B1&!P-zVFPI_)avxd~eoT(&Bs6Y>Dq$ z^XqeGOKgU`>k8vrOU(H8%K0{?P=<-^74MiX8th(X%4@#(M6TyC?5fxprnF9=+*(hA zxjwz*iN$yVCA5$?T=K*edlJBt?w33<$DUki7_7t$gRgvI`L9pRu_wE(FeX-F#>7`X zvHaI3W_p7D2h&%XoO19bXovXx|KiF{F$AdR-V1w<#jxivi>?v7qLN7mHfb@p#kj!; zbZPXN%e@C_E0G+G`}h6_Und$H>&d3$#0liQSxq*LGMB>)zbWDix^m4upf@gm7XwDJeDAZ|7A>Ov@0GGTH8sY}cSV>n@eBfubyzDdxh& ztPX1?-OIvQw8yNFReIz+gK!dqGw>e1Fjb*6`0amk}=T_imTtm3r&i+i!n? zPBlt5$Q!}<`vp*3LNGGkB zsO+3GD7S2M-u$IqukM$W)7ho3x7$YzE9LNAm&hfPcvq43S@2=LO)gE2crORd;=M7rbTN#KrextlT0(C$bYg6|Y#V=4#y@$HE4WukD7Sf*t||B7W9 z!Z}j>Z`xeK?i3D-Dg|ufZfrG!+3wy>h7NgqCKjz@-`ErV4y*M~WyiGL`+(XfSiy!N5$s|`q`(dxwFZ;Gc9=mg z%$Pk#>tUM%-3GgY!ti7$B28mb1Y0x%FYp=dSaAtbgd8DNuWJ;GAZekpK)p*bQN(Gu z0ci`AIS3%TQdy~yPd#I9VZ6&4r75dse-~Z1eD*h(a@&VLwfRD$ylU7}&(RcsqoVSV z*%kaisxT`yxF+=(M_gd9hhfGO@r4-Aeix&#)R@cfbZ>j-0KbDLN*{jb*0y(s;!1{} z-LukH@BknVPl-5S_69Q>h(xmt-bU3SIACe6zgr~X6Mz>d9Pdt^RM)j=^4SZ5AoY`U zSp5z}(>pL+JQfM3N^hi?#M|0h_3b2wImwC0a<&3rC&X+EBx`p=H;0VLFu@4miD}$l zsxXg>3>WFwrH@TF6-tG2p{Yt; z%9zlY)G^@=(gt~hX@jyMWkYB~>W1)J(p&OdCOGZFh3l=6b*c zrw8(Nr%&I{vF*=Fk4ZO41MiqJdGeIS9NT_+T^-bVZ$&ReU%N8Gy*v}2lR5UAngb4V zid^wyWJHIY+??#J?A+X(jLeL1S~xu|EsPHirf_MlD>o%1rj4lgn?wq%9nfBbmX>E~W3M6Z%!CAYbYqF)1UDDXu(jA%6eezey$*UJX zy5*0X3Pwqf-WP3sG#)?ZE9mZ=pDbE6?!5)`R*n62#fw6Umo{Y$`9z^7;2^K8_4wsY z5;$7519lO=jU+hhgjT1T)=GYt!z?@n_>3h2G8DBJpaCbs8_Hxh5RQvVgjZ#0PjOX@ z1v%yrmoH@_SBW6z<0uhosv@aKE;1D<*GU|4L)j>8lsB3-D%&JPG%#&be59;p@y2_9 zDcI#T#<_BLQcOkL!eMhLYzeD(NWBX!r<+^kozYuo-Zqhq_c*c+crq4Qhl9y+c%60D z_Yhgx&A*R>sWSEkgi_~tpiGYjBhHR$UlP~SPZ`)p1(Lx zgU*+xTx@VB|NITcMIrLk?aC*R--VGB4d3u+KOuO#+imns4|}MXB&!U?ANgVJFOJy} z(*-scvXDawBJD})_UK@#ehUIu4c;QvGmz?)68wGL7HJy;ek|1kyQT7alT-a1gIU>j z8T;>w-BKF9yqoa-Rlz(cHR4d8vRhZ1?=gwhw1plvc_Z(yAINQlx4|j$mbfjYFbaq5 z^4bF@zWn?CmKsyJZ0oYIbIZu5QNm0vfws@PHR6HTrOoqblyrIQYJyX|E~V8Yn$Aus z15z5%Ha+VTjeYd)^Gn7ydiXvIexx}8ioJl{cjzzZ{|(c?Ci)7=mgyj6X`88<@hy*C zfDp-RUdtG%ynB~^mDT?<^ycRVJhT1UiKgCLo|LrG>vD^$3kr88C$E~_cQFPUNsN@& znrQ2zQ@^s#U>2T~>CaGSdD2!jgi5q~zz_o;g#m8H=G% zOu)9cTTmC;#K(=;PQQyJx$U~{a@n0u%($>89&L%|3;0E{iqDGSdP|~bH<~^f)8H`F zQ^`{5_TYN#n)W(s8*;AG*V|kPUdaI+KXkPBC`qdm?(wYlLq!(C$KsnTx!W&lhG zIH)iWU%|!~$&vkE+4(Zc%#{|j+$vR8m-MfyUUSp%P5n2#((ktOFJ3~VEnA+F9HoPE zihC3kH6$n1%-h`3mxPNm;@tk@I}!tL2^7m#stpPK{(?Es@nNC&OW@ zp#5_*oLy3F*oN^QDd)Z}srR`HGJ>j9$qd9@2Yj;kU8AoMB$gpo+FJ~pys9&2u%!_7 zCPVzh6I`6DUcyuD7|K-gf9`i)kl37Ku$y%6x8GjKzI9S#TR)sOAN}x_Awx=+T-$Tq zF!aL$qP3~F!Gls+beAdff9sg%=bAN))lmGX=Xe&Ij}e+?zBZ||F^i?xndUwi#rqpi z#NPxANb$}t4CR+9n6#LJ=@Iy`V|M|(6Pril4db0@@Zm<}GCYaTqd$$!qX~mij6uxz zT~ZK3gys?CdA^Y6(Q&`;wc-e4aOFGJcJBRGiv&$(C#2eQT_%M>u%Uem?PQp+Q`;H?jL|X{hPiYEWKcoZJ zAecHpQl$GKGjK%;gI^5>8{LVJ-cz1>>c519l@dRgH}8Y<9sf&MSd0k&pBwG||0us( zKL%~AkWih)yhvq2ieGdx<(q%XwT9h4xjJ{MGbN_f`LVTDx~n)pH^Y>jo|opf7Q1YY zj^R9y*^!o)9ndWa!a!}0vpM<=k2gF?fFaKhGzihwbwog;a}{OdOI4c4 z$t)`&XV0!>xai80*w}8K>6UcE;Sd*w&!K7^b6^fUmY*E(@$m5yj-A6-4U#5G<~aw( zT>tuQHLn!N$-|;vnI6@Sh#o86y5hE1htlp{>W}X@!zrOO*E?q=nKpD9JY?zZ@90@s zTG;*0k|jfi5U1>eM6FcM##U*Vll~j)v&($BXtjn($0g2KDtxivjKvOSgZce#uL{|S zf(_;YacC0DN~p_~UQqNv2}KI1LQyE0@f8UkW+m`2JGoaq8~vGP1e>898KwRV)&DyY zyU!ccNfn7WGYt|(5lnYeBG`T>%ZD##Nt!h|X=N(3knkGEB!HIFXbsjx0&gI&O3;|j=2RgcMm zdAulyE4V8V)CAb~HN!PJCjzRcfz>G(4bVn#fWpA`R`4EO#?m3R2Q?*T~av z&hDR6>Ce%#bLfu_ebjKKtRz(xn^m7W?asu69H*Gm00g$Sm0+GiX0OEwgkpEvA zz=Q@cp#e;207zfygLn5vPZIs14v6WQkt^-|im*>A;_I`PnfJ4Vqs&EeUarWAcv;1$ zQ2T}zYT-f!#+k6FC$;k=smtf2cBXQPQ4(Bc+W6>-k`i5# zOQ!wBP?8*m-6hJBvA9Ws>#TXTe)gv4XX(LwTCG5h_+#99*Gd z-CNAs++SCqhPZa^6sTN7OQE&UR;a-m{W4{$f9$}4WBm{4FFpF`OX}I~RaMNn1`ZlLl>^L$0wh0p_ zO`bA!+VmMSXU(27ci#L33vXX^$KoYRmn~mWvvSp)cip}Eo_p`R|2J!XyY_z`c<`Zz zA9?h#$DdgDWzyE^|4;(xs4j(ys>@R=)=;ObAa{SZJKK}wiovKmc3Xz6M zR+3mDTCo)_OjR-5_mXau#=%y7h4ir8D1U1DgX!(G4rxVc6=^S}XJnW&QZqVc^v#%< z{oZ*Q!?HjQ8zs21L%Ulf^^|UqM&sS(c=uiTBYxM5cgy)*Im5;8j>WqYzGt1p@ckps zk8o~m9SwMO>y%c+h!^6**$Yq{e)0GhtG^ib`82xo+1$^@2=TXX)wj6uy5ZIjl#rf@ za}4R1|Hjwd*de7!94bfZ6}$10cuw3cR*N^q6;Fu!;8Xai_zqSLFN*I`+K;f@s})V6QPg3&a+`QiOc3vjiQ>=VJ#j$n7axcZ z#n)nzI4llgZ~LucviMd!B#vRqaa2qZ&EgyE7d=hDN?XhnGsG;hQOp)|#T+qD%ohvA z0&%-oB>pMx5KF{ju@s>+mLagsCQ*adSt(YD)8bzUfzu+Qv6{5P(&{hb7u5NrIEAn* zUtmi1i8wAk7axhw;8^oYEZu8jhuDkj?c!Cj55IScKZ$!|&;BUZ#jdu9r*QS8z{heN znAFjM)&K8}EAg;^yEGqP)i(glX04!ha~GL-Z5_%Yt)CtMrbj6na^P%KVQ6K z+9I~$+zd&Vhvy$-fj851gP4uqLo(UxJS4{B{0ir@IPb?f3g_&iGve91bX;0nX9tBr#mw zDPB@`^Y18irWkHQU|!rCrPhm=Q3 zwGK+_4@80aMdq2d_Cy|u>Pb-#WOhfV5jnqI8i52LVS$#5xoD1eKq)=+Jo96_Dk0> z{yUA|Je&c-q3tAIi=EUC$n##Dn{n>L3F}O05q?kN7jC%tEGDF3_`O%nY~3vX-1-Ue zEb$HTC-DgJ2WXJa?M8e{b@&SW0RAM}n73o5xJoR=ITPndYhN)Tc21%GLcB=$w&e@n zVxEcr60gSkuli8y$G`=6a@!Kl^@LmOWZdJUYb$mY1F5e#B&^^e(OEf*sVg=dMw7ty z779mf!vLke3rbYC@ZiIo&j=!iMO&gsfdx(5k ze_bUCL?>A46^YKUYAz97L@Ab{WuluX$H-SHszi5DEqaKE=qY-Ms}bz%8Uz))76HHd zVVOGsAyfv5!D5KG4gt7s5I2gU;wCXn+>9VqBg9B?3l!S7iqT?>7%MQKV?3CEv0xIU z{uIdgX^`?WAm?X6#?OJ2CmE0Mb1dWUfP7y93BL?7eg)(^N%uQ3^3b?+4`lOw7$<&% zap|`hh5iR}_d$#z4`W<{*5WuQ#3%zzbST$x5V49xcd{vy1f`5-o@zlXN+<0 zVPrE#v;#bv(HM3NTVnf^}yX3IVpR{1g;yF_$ z&T`I~IB)9g3DB%Bm^g3Z1m&8A^Jc5Jb?s7GPOxhc!_Ewg8I~~Y%CL+f%@zc>!}vEC z?QsOlj^mi4d}gwnx|(V*Q)x7PX8J*KD1()y%74_G)W_5>%{|Nu%_l8Y*w*1UmaUe9 zmhY`Ytmkc;pm!ReJ)rH;{$;<`zS8~&``3t7J8oWyy5u(fiKp2|K`i|&GGH?2mH(YZ~4CtWCiXCJQoZGM+P?p|CLac zup%)(@&3d^Nh6aZDd{PH5A_SZ7{CW7B z@GoiRG;dm3S^?&1*QO0k8<#dKZE4zlX^*8no3=G=S6WlrU(!ydeV3k^erx)lGyEA_ zGX9on&Acb8Q`VmB^y~rIYqCG=&^O1NGb`u!IY)D)+~4H>Ew5|d(!6K#KFY7kf3Ksz z}=}XwewA# z7j)jz`9iU+I8a<(+*JHciC%Jh$>A=6E(Ki%c3DxHUs_h$yY%|f(WTQ%?f49i-_;ZC>KJ%Ht{3jrygEK${31vsL02jD1%Q#j45 zt-Wz)2g99wzkyTkh2+RWza)5sQyyh_jA1jUIgRw$D5Vy#qV++*DuxXVn*loj_d>v~ zI6FWJ3;^80@Fd^)1uzF`2v(uiIii8#-qz!|-p8;Rck+ZQx&u&0>3PBp3gn3p^3M~g z46|DOxbEG0A7EeLlP7LqcvI_gTn}%33UCys9M37Ia>{88r!$8USe2C#zhT9mv8ujDpj%Xg>PEOyz?;hl*hZr7ac!c3mhQ}B-bIQ|r zt5~?u7RAiZ*pY;uFKF)WuiCqMrEQ;^gF=53~yj~ zQ)?J^hVk`qz8=YNR4YF1f=ZObRDO3F!|4oXFr3M77Q@+`!yJZl8O~!kpW$MLOBgO? zxQyX)hAX(l8ip$wu41?mlCuo`f^ev1SjX^XhC3OpiCPZY(sc+lhixgtEbwqS`qXj2-k^CoqzA!) zeCGzf9uA%?M=6wYGT)!d_op$O&Tt09nG9z!oWpP~!+8wnGhEDY3B#ofmoZ$FZ0vApnN$-liq-hoTiE4K~8gs;bFiE^xqMH zI;c^B{!7;((5(XWA(+MYdjp3GP=??Q3~%Ch$Me&vd}kWN=?rHuoXKz&!#ND+GMvY7 zKEuTfmoQw)a2dnp3^y{|#ITmjs$=*v-)ZFQCcsMIKLW4=?pLyetOT}AxSqgwND@|x zIecd>!+8wnGbGtqDM&U}3X+YLn4Nb3Bq?19DNT1s9##sHhn3y0~o8Q#EfI5@Kk+(jt~+bWjZRgh_vavHhjjfaR)GC5cUp^;A+_dU@E$>GN31ItQacV7)Q*G2Vuni?E@ilk;c|wXFg6Va z=1o{xx`6XdXs_ddGz#2=QifrrNqu1i_kxkQUXGQg8*mh^#{s%g>+vk}$Fs~I&$H0+ zSQmG|eVT=i=UM1@o`sI*S?G9-2xwiNg^ow9ci@_4q2mS3LdWwgbUf%l_h}Y79=taX zkY=Idc@{ce&@6Pkpjqg6j3bnWW}y>!o;iW%nG<-PIf3Vy6RsoH>T5juFZtGfZ>soH>T5juFZfo>@v`#IzbuIARfop2(T5juFZtGfLPWP#; zYq_m!xvgutt!ufhYq_m!xvgta#~sit(AuYtF{xur>KKzc#-xrhsbfs)7?V22q>eGE zV@&E8lRCzvjxniYOzIeuI>w}qF{xur>KKzc#-xrhsbfsGGM%?FowqWbw=zdYAbWpR_3U!%u!pJqqZ_fZDo$y${e*_WMN$1j);z%0U<8|$Mc;B(NDLFTE4Dh z*uYO4`MQZ=Gw!?w9Q=Tk!)qAv=uQ>ZT(1EKy8j?jz6MO_n${q%K_f#?X|3@ZFd^8C zJ3G0j@8q7|z_Pu8WqSk5_6C;i4J_LmP+}Ewp%JHnWqSk5_6C;i4Ukm5ai3&+18|^} zB-<^fhkp8{-P*bKOj)9m9k z`#8-$PP32G>=Trxk-5E*xxJCOy^*=Sk-5E*xxJCOy^*=Sk-5E*xxJCOy^*=Sk-5E* zxxJCOy^*=S5g5%wDI{YXncEwg+Z&nN8=2c1ncJHflP1Qbi7{znOfW--v~OZeni!KN z#-xccX<|&87?UQ(q=_+UVoaJClP1Qbi7{znOqv*zCdQ9G4|AS}InTqK=V8wCFz0!g z^E}LX9_Bm`bDoDePw0LiMUNmoK^k$6AU#1EagHG69%xJ{%~4Ksl+zsLG)FnjQBHG= z(;VY8$2iR~PIHXY9OE=6xG$gJ_4Ns~?+$2OiJwoPea8XP`uYS~b|E0mDo>z&3DO+$ z1oxv8Jcm3XUPTW&f%SDQAg!-YfWzrsnjM|s9(00x&w(s1+5mpx3bej%|MzhmqmSD{+!J1iu zHM0b31~sbilq6U)*SeV{STjqoW|m;hEWw&VF-l1iteI=w%o41bC0H{{ux6HE%`Cy1 zS%NjQ1Z!pq*31&DnI%{=OR#2^V9hMSnpuK1vjl5q3D(RKteGWPGfS{$mSD{+!J1iu zHKPRyE0SQ%O!;P(V9hMSnpuK1vjl5K`%)T`V9iYbW~P5L)4!P|STjqo(=7i_v;04c zK7JfpbkaMW1%(Nc-su-^kzcq)e&H55kG3d;o}Dy)=XoY}o@Zj`c_wzAXJRd!riIhA zaGDlQ)52+5I1PQ95%@+k7~f^C!N*P+??iAdU?cki{vyMAVVM~X31MH2(7jXa!{|=? z18+;pWAZM1-BHwQmHk3Qdl|p-jgl-+vdXgEicOIeSyomGu~ipohLIsM={0r1e0<+Y zJ1@ge$0t2ynJK|)psfUy)Jue3k(-pULS)_sHyAN&;=FM;j+-^V*94@)0Xu`%uC1-n zuEpJY6%|>4JRh(!kaX<61#4pk+e(v55`N*AWHPrMiej}|RRqeSsA3kNXfa!H$$wci zi^T%}Dl38=A@-J8G1IP5r4kV;>?F)&$Z^k~Vh={9MP^8st zf%S$lhe6tD*z zFeePGRz*=zkj1!*QWQLn9UzP5G=m;M!=mx_ag-cI#1E#28AksWLW${Nvs!^MZrJRA zDo6;Vsls>-^nyh#4%&v!g11!MwNmM*qLC+63F(ls?V$HTCe%~|B6cDNx@Cm4+jk-Hsr|79fVVV)OvU*pHW~1Um6?2|a)vXv*a=Jy4L0|10N_uH-3D7xJcgSaAm{-+m_#a-Wl^|3v?-s3C}UNS z5dX1*u8}3TJ`p`u0)FUykO^Dt+Q9?xz~s^p?2UNJ>OkN(8;FYfP}Zo685si;5KKl@ z@GgqgIXlW13GhDHGk#b=3abT7LG4H^sG=aa#ZJ5v!xKMDOKKB4 zFtLO9sF%ceAV^u+H7B|Y(86DCoDh24k5CdS zg-R+qy$v=5IlvNjpg|30kdQK?$Cr|WID=XaSmKi3*X&l52x_1ZWJL$UquVu)$BIS( zRu;`+!mr&9R>$VO)WwMBkq+c&*WEQVpu?t8@x-R6wyx_A2p~`h|L{g!GJqBc>kQi* z5W%iH4Proi0sGj&+1qq(ERAWQgBngy-+?#>palj5RDddMp{`_Cbb1rKX$SV81*pd_ zgM`LGkBJuaYaD2Qyg;1*@=$X#Z`mEx#lVgT#bhBW;4d9zI=x;iN}xIrHNZ-cv}Svd zX-(7se_cTh%>hm&jz%V+hTH81PaExHw_u!z9iWCgfv91%IUR0nFpgguo{?Yduvn12 z<_5u0h|>uy>~55YFq-(w3urZCn{@O8Tv{BEI(F3!q!IoHRdf?en30%M8xnzu;~?oo z$(X6B52Etu18z5Zg9jy|2n{0)HKvBhR_LnS0&bAh>GRr=-9;D!qX(Vafj6oZ!w^#SUj0l3v+_MjN*sz^Zs0HP3YJ6tYeF(Lo~!W-!0 zpn^!6KrA_drp@N^p+ppcnp0~!i5%$XE+qFrwz&L08`u(fp->_RUIk5(h-Gn?@dcaF zq%L+iz+IY!b|gS|LtnIdz1WMLZqh$w5Kjndc$4jdH)vzrF!c&htq_S3$KG3$!H-XTf7Wn zwyS~zE$Fl(N;L@Pr0!_-`FuL?!d?8s{4;id8orQ&so{2Fi#$-njnvdXVu#fV26j+$ zp^NBlAc3G#ZkL>Biemw_7)|L_+4*c7@RU zz{m+KHO(DBiEg(O9*dv=$l-T7P=u2tiq8o=f&py0193&gn(zxgg1`v@7b9Q142rbX zk!VjbT`Z^o*p#}X&F}XUIdIqIaDt%i=;2RApmH#d$L04xDBC?Wmq7($ht&!OcA&+G z9&QhqMe}<+E)Uqltq0K#kZ2ye9WCi{+R!K#C$`!F)?iDg7gTatkrs)ug~ny%0QNYj z7}VJXo^b(7yWJB+fhfUcM~UDFJpeJ{ak@N6?|13CCoyREJ5dRA92W*k8<-b0N(IN# zUB(v_fmn|p=xXTbR^)*uq~2%?1Ojd#hP(KOxK;6#V2?nWCTL{vxB^~~)NvU(Y&PJg zp~ZAyh#}7Eb_P6N-Rnlq?gX@hK@Jyf(t!>EN?JiAphyFi4-KMQbr0TldA!Jg4lq1- zU@P%7m>&nz1N;UwL5~D4(?fUYOb>Suq6=k%908Zx?M+Is2bdgSADZwPPntJ7Wl(>0z&a7u7TLMD;J4v~=H2RSq!&2*{v z8V5S8&*!8D^Xa_95%ZT)j`g>=7!|at%+_OC_3$KJ%9#r+uT6U zgLf|{2X%2BNs$;sERh3fIvlQ1{)cl(e&!R__>Qj!qe2Q~Mh zR0X{fof$lm36}le=;1^>9QLe zrhyzu**aPLK_nyv!D7w;4TXfGacCNPv$$y~%A$_IiLJMq~&Vx67*`F;XKAr;#H>5DPRL^>Gi9QguKQk_$;mC@%#i1|XrF z=#}UqzGUp+6L5P1AYYQl=L@8!Xh|TS76AV!n32)@?rdUN5)6bdDAJA`Zge(GG>{{R zN#Y6K=E;a1KzH#E)BbkkNX{|H5%eY}5IKTG4#Lqm>~{2M9S!CKIRZhni90zM^aa5l z0e>pm0ptjRrNOI+O-91SmO^hrNJOiOhpQ_X{#$A>wv9laU!%mK?9^uWs?3C8{S z0ea{@T|<^0xJ^PnIZ{$m0zeFReLCm?1dIdhk&^2cAP+=jN&;x=3S#AX1wB$g@t_xZ zf%=}5V1hpZ{1FU<(eS_v)q!|Lpf>#B)xa~r(5?AANgfCd4V%IS{N7*!-lqdiMC}Pa zqYETOVj>5`6R-q1QWH?2px5t03!sApLSCwhH;C3xLF*=@hn*?tr1l_slZvUH-;epf zCl@Shmm_j!V6RMG>Mj*$a9)Dk&Dp-_k22Z!v#EHk05C6`G){vSDNmXH7d diff --git a/lam/lib/font/VeraIt.ttf b/lam/lib/font/VeraIt.ttf deleted file mode 100644 index 31dc3fdde0d016d5069627d58f121e2ee6c385a1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 63630 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%0A8ZZQdqy{b_v14QJIAl!H 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 diff --git a/lam/lib/font/vera.ctg.z b/lam/lib/font/vera.ctg.z deleted file mode 100644 index fb308d299ea58cb4fcc47abd18cc8d7d19d2567c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 710 zcmb=J^Y#M!mlw&h$3K48ofP=ZqifR4z3xtzoXk?!uW@l(@g`8yBxQ2sl(j+M!cJV% zQ&rYBN!_jfznK5|z3PAO{?B`T?{ekdb3f<4|88^s`_I32=hq**Bt3gYXLa!8FVEC+ zH>u@!-MbV$d(+BUyE12OdpT>LapakbkFK zyQP1t*XnIi^7&t{Wt_d1_4Zok-D}x@?Jla{UchyGMepq;zPHz$J^t;};kkD+Wv?8J zy%+d*tA1%k{Ocq8?!P?zYW3f3%+`zcfA8me{bJvxt$#PF|Ms(gG5_!C`tq#jCCT=$ z?`+FBz3*b!-8;*FRhpMZ?|(5Z@9n~E@6P4D?>m=0d)|xLe>d&kwL78-dg{+ddvROldIo- z$~oWrV*dNq#&<_A-ur8BYx?5<&;0#TDUa^`GdgkPXRN`gugj~K{oYl7foFZm%Z_)A zay7l_`^??q8y5a7t(Pl#R{nRN{g>r+mu(;02{;#AlJJ$c?+ao;0sr6Yy=iB@>-u-e z>$dCiUmvfNkK=zaYoE=A@@pD?_Y5wb5{8 diff --git a/lam/lib/font/vera.php b/lam/lib/font/vera.php deleted file mode 100644 index 19798b20..00000000 --- a/lam/lib/font/vera.php +++ /dev/null @@ -1,59 +0,0 @@ -928,'Descent'=>-236,'CapHeight'=>928,'Flags'=>32,'FontBBox'=>'[-183 -236 1287 928]','ItalicAngle'=>0,'StemV'=>70,'MissingWidth'=>600); -$up=-104; -$ut=70; -$cw=array( - 270=>600, 32=>318, 33=>401, 34=>460, 35=>838, 36=>636, 37=>950, 38=>780, 39=>275, 40=>390, 41=>390, 42=>500, 43=>838, 44=>318, 45=>361, 46=>318, - 47=>337, 48=>636, 49=>636, 50=>636, 51=>636, 52=>636, 53=>636, 54=>636, 55=>636, 56=>636, 57=>636, 58=>337, 59=>337, 60=>838, 61=>838, 62=>838, - 63=>531, 64=>1000, 65=>684, 66=>686, 67=>698, 68=>770, 69=>632, 70=>575, 71=>775, 72=>752, 73=>295, 74=>295, 75=>656, 76=>557, 77=>863, 78=>748, - 79=>787, 80=>603, 81=>787, 82=>695, 83=>635, 84=>611, 85=>732, 86=>684, 87=>989, 88=>685, 89=>611, 90=>685, 91=>390, 92=>337, 93=>390, 94=>838, - 95=>500, 96=>500, 97=>613, 98=>635, 99=>550, 100=>635, 101=>615, 102=>352, 103=>635, 104=>634, 105=>278, 106=>278, 107=>579, 108=>278, 109=>974, 110=>634, - 111=>612, 112=>635, 113=>635, 114=>411, 115=>521, 116=>392, 117=>634, 118=>592, 119=>818, 120=>592, 121=>592, 122=>525, 123=>636, 124=>337, 125=>636, 126=>838, - 8364=>636, 8218=>318, 402=>636, 8222=>518, 8230=>1000, 8224=>500, 8225=>500, 710=>500, 8240=>1342, 352=>635, 8249=>400, 338=>1070, 381=>685, 8216=>318, 8217=>318, 8220=>518, - 8221=>518, 8226=>590, 8211=>500, 8212=>1000, 732=>500, 8482=>1000, 353=>521, 8250=>400, 339=>1023, 382=>525, 376=>611, 160=>636, 161=>401, 162=>636, 163=>636, 164=>636, - 165=>636, 166=>337, 167=>500, 168=>500, 169=>1000, 170=>471, 171=>612, 172=>838, 173=>361, 174=>1000, 175=>500, 176=>500, 177=>838, 178=>401, 179=>401, 180=>500, - 181=>636, 182=>636, 183=>318, 184=>500, 185=>401, 186=>471, 187=>612, 188=>969, 189=>969, 190=>969, 191=>531, 192=>684, 193=>684, 194=>684, 195=>684, 196=>684, - 197=>684, 198=>974, 199=>698, 200=>632, 201=>632, 202=>632, 203=>632, 204=>295, 205=>295, 206=>295, 207=>295, 208=>775, 209=>748, 210=>787, 211=>787, 212=>787, - 213=>787, 214=>787, 215=>838, 216=>787, 217=>732, 218=>732, 219=>732, 220=>732, 221=>611, 222=>605, 223=>630, 224=>613, 225=>613, 226=>613, 227=>613, 228=>613, - 229=>613, 230=>982, 231=>550, 232=>615, 233=>615, 234=>615, 235=>615, 236=>278, 237=>278, 238=>278, 239=>278, 240=>612, 241=>634, 242=>612, 243=>612, 244=>612, - 245=>612, 246=>612, 247=>838, 248=>612, 249=>634, 250=>634, 251=>634, 252=>634, 253=>592, 254=>635, 255=>592, 8800=>838, 8734=>833, 8804=>838, 8805=>838, 8706=>517, - 8721=>674, 8719=>757, 960=>589, 8747=>521, 937=>764, 8730=>637, 8776=>838, 8710=>669, 9674=>494, 8725=>167, 64257=>630, 64258=>630, 305=>278, 728=>500, 729=>500, 730=>500, - 733=>500, 731=>500, 711=>500, 321=>562, 322=>284, 8722=>838, 286=>775, 287=>635, 304=>295, 350=>635, 351=>521, 262=>698, 263=>550, 268=>698, 269=>550, 273=>635, - 8729=>318); -$enc=''; -$diff=''; -$file='vera.z'; -$ctg='vera.ctg.z'; -$originalsize=65932; -?> diff --git a/lam/lib/font/vera.z b/lam/lib/font/vera.z deleted file mode 100644 index 3a5ece5c95d032557bca3495acba0bc549a812a3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 39919 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 diff --git a/lam/lib/font/verab.ctg.z b/lam/lib/font/verab.ctg.z deleted file mode 100644 index fb308d299ea58cb4fcc47abd18cc8d7d19d2567c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 710 zcmb=J^Y#M!mlw&h$3K48ofP=ZqifR4z3xtzoXk?!uW@l(@g`8yBxQ2sl(j+M!cJV% zQ&rYBN!_jfznK5|z3PAO{?B`T?{ekdb3f<4|88^s`_I32=hq**Bt3gYXLa!8FVEC+ zH>u@!-MbV$d(+BUyE12OdpT>LapakbkFK zyQP1t*XnIi^7&t{Wt_d1_4Zok-D}x@?Jla{UchyGMepq;zPHz$J^t;};kkD+Wv?8J zy%+d*tA1%k{Ocq8?!P?zYW3f3%+`zcfA8me{bJvxt$#PF|Ms(gG5_!C`tq#jCCT=$ z?`+FBz3*b!-8;*FRhpMZ?|(5Z@9n~E@6P4D?>m=0d)|xLe>d&kwL78-dg{+ddvROldIo- z$~oWrV*dNq#&<_A-ur8BYx?5<&;0#TDUa^`GdgkPXRN`gugj~K{oYl7foFZm%Z_)A zay7l_`^??q8y5a7t(Pl#R{nRN{g>r+mu(;02{;#AlJJ$c?+ao;0sr6Yy=iB@>-u-e z>$dCiUmvfNkK=zaYoE=A@@pD?_Y5wb5{8 diff --git a/lam/lib/font/verab.php b/lam/lib/font/verab.php deleted file mode 100644 index d6b31223..00000000 --- a/lam/lib/font/verab.php +++ /dev/null @@ -1,59 +0,0 @@ -928,'Descent'=>-236,'CapHeight'=>928,'Flags'=>32,'FontBBox'=>'[-199 -236 1417 928]','ItalicAngle'=>0,'StemV'=>120,'MissingWidth'=>600); -$up=-111; -$ut=126; -$cw=array( - 270=>600, 32=>348, 33=>456, 34=>521, 35=>838, 36=>696, 37=>1002, 38=>872, 39=>306, 40=>457, 41=>457, 42=>523, 43=>838, 44=>380, 45=>415, 46=>380, - 47=>365, 48=>696, 49=>696, 50=>696, 51=>696, 52=>696, 53=>696, 54=>696, 55=>696, 56=>696, 57=>696, 58=>400, 59=>400, 60=>838, 61=>838, 62=>838, - 63=>580, 64=>1000, 65=>774, 66=>762, 67=>734, 68=>830, 69=>683, 70=>683, 71=>821, 72=>837, 73=>372, 74=>372, 75=>775, 76=>637, 77=>995, 78=>837, - 79=>850, 80=>733, 81=>850, 82=>770, 83=>720, 84=>682, 85=>812, 86=>774, 87=>1103, 88=>771, 89=>724, 90=>725, 91=>457, 92=>365, 93=>457, 94=>838, - 95=>500, 96=>500, 97=>675, 98=>716, 99=>593, 100=>716, 101=>678, 102=>435, 103=>716, 104=>712, 105=>343, 106=>343, 107=>665, 108=>343, 109=>1042, 110=>712, - 111=>687, 112=>716, 113=>716, 114=>493, 115=>595, 116=>478, 117=>712, 118=>652, 119=>924, 120=>645, 121=>652, 122=>582, 123=>712, 124=>365, 125=>712, 126=>838, - 8364=>696, 8218=>380, 402=>696, 8222=>657, 8230=>1000, 8224=>500, 8225=>500, 710=>500, 8240=>1440, 352=>720, 8249=>412, 338=>1167, 381=>725, 8216=>380, 8217=>380, 8220=>657, - 8221=>657, 8226=>639, 8211=>500, 8212=>1000, 732=>500, 8482=>1000, 353=>595, 8250=>412, 339=>1094, 382=>582, 376=>724, 160=>696, 161=>456, 162=>696, 163=>696, 164=>636, - 165=>696, 166=>365, 167=>500, 168=>500, 169=>1000, 170=>564, 171=>646, 172=>838, 173=>415, 174=>1000, 175=>500, 176=>500, 177=>838, 178=>438, 179=>438, 180=>500, - 181=>736, 182=>636, 183=>380, 184=>500, 185=>438, 186=>564, 187=>646, 188=>1035, 189=>1035, 190=>1035, 191=>580, 192=>774, 193=>774, 194=>774, 195=>774, 196=>774, - 197=>774, 198=>1085, 199=>734, 200=>683, 201=>683, 202=>683, 203=>683, 204=>372, 205=>372, 206=>372, 207=>372, 208=>838, 209=>837, 210=>850, 211=>850, 212=>850, - 213=>850, 214=>850, 215=>838, 216=>850, 217=>812, 218=>812, 219=>812, 220=>812, 221=>724, 222=>738, 223=>719, 224=>675, 225=>675, 226=>675, 227=>675, 228=>675, - 229=>675, 230=>1048, 231=>593, 232=>678, 233=>678, 234=>678, 235=>678, 236=>343, 237=>343, 238=>343, 239=>343, 240=>687, 241=>712, 242=>687, 243=>687, 244=>687, - 245=>687, 246=>687, 247=>838, 248=>687, 249=>712, 250=>712, 251=>712, 252=>712, 253=>652, 254=>716, 255=>652, 8800=>838, 8734=>833, 8804=>838, 8805=>838, 8706=>544, - 8721=>718, 8719=>787, 960=>644, 8747=>610, 937=>769, 8730=>667, 8776=>838, 8710=>697, 9674=>494, 8725=>167, 64257=>741, 64258=>741, 305=>343, 728=>500, 729=>500, 730=>500, - 733=>500, 731=>500, 711=>500, 321=>642, 322=>371, 8722=>838, 286=>821, 287=>716, 304=>372, 350=>720, 351=>595, 262=>734, 263=>593, 268=>734, 269=>593, 273=>716, - 8729=>380); -$enc=''; -$diff=''; -$file='verab.z'; -$ctg='verab.ctg.z'; -$originalsize=58716; -?> diff --git a/lam/lib/font/verab.z b/lam/lib/font/verab.z deleted file mode 100644 index 0d033c9135a5bb5950b7e5d326aadd99be055bdd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 36502 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 diff --git a/lam/lib/font/verabi.ctg.z b/lam/lib/font/verabi.ctg.z deleted file mode 100644 index fb308d299ea58cb4fcc47abd18cc8d7d19d2567c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 710 zcmb=J^Y#M!mlw&h$3K48ofP=ZqifR4z3xtzoXk?!uW@l(@g`8yBxQ2sl(j+M!cJV% zQ&rYBN!_jfznK5|z3PAO{?B`T?{ekdb3f<4|88^s`_I32=hq**Bt3gYXLa!8FVEC+ zH>u@!-MbV$d(+BUyE12OdpT>LapakbkFK zyQP1t*XnIi^7&t{Wt_d1_4Zok-D}x@?Jla{UchyGMepq;zPHz$J^t;};kkD+Wv?8J zy%+d*tA1%k{Ocq8?!P?zYW3f3%+`zcfA8me{bJvxt$#PF|Ms(gG5_!C`tq#jCCT=$ z?`+FBz3*b!-8;*FRhpMZ?|(5Z@9n~E@6P4D?>m=0d)|xLe>d&kwL78-dg{+ddvROldIo- z$~oWrV*dNq#&<_A-ur8BYx?5<&;0#TDUa^`GdgkPXRN`gugj~K{oYl7foFZm%Z_)A zay7l_`^??q8y5a7t(Pl#R{nRN{g>r+mu(;02{;#AlJJ$c?+ao;0sr6Yy=iB@>-u-e z>$dCiUmvfNkK=zaYoE=A@@pD?_Y5wb5{8 diff --git a/lam/lib/font/verabi.php b/lam/lib/font/verabi.php deleted file mode 100644 index 0bd841d8..00000000 --- a/lam/lib/font/verabi.php +++ /dev/null @@ -1,59 +0,0 @@ -928,'Descent'=>-236,'CapHeight'=>928,'Flags'=>96,'FontBBox'=>'[-278 -236 1401 928]','ItalicAngle'=>-11,'StemV'=>120,'MissingWidth'=>600); -$up=-111; -$ut=126; -$cw=array( - 270=>600, 32=>348, 33=>456, 34=>521, 35=>696, 36=>696, 37=>1002, 38=>872, 39=>306, 40=>457, 41=>457, 42=>523, 43=>838, 44=>380, 45=>415, 46=>380, - 47=>365, 48=>696, 49=>696, 50=>696, 51=>696, 52=>696, 53=>696, 54=>696, 55=>696, 56=>696, 57=>696, 58=>400, 59=>400, 60=>838, 61=>838, 62=>838, - 63=>580, 64=>1000, 65=>774, 66=>762, 67=>734, 68=>830, 69=>683, 70=>683, 71=>821, 72=>837, 73=>372, 74=>372, 75=>775, 76=>637, 77=>995, 78=>837, - 79=>850, 80=>733, 81=>850, 82=>770, 83=>720, 84=>682, 85=>812, 86=>774, 87=>1103, 88=>771, 89=>724, 90=>725, 91=>457, 92=>365, 93=>457, 94=>838, - 95=>500, 96=>500, 97=>675, 98=>716, 99=>593, 100=>716, 101=>678, 102=>435, 103=>716, 104=>712, 105=>343, 106=>343, 107=>665, 108=>343, 109=>1042, 110=>712, - 111=>687, 112=>716, 113=>716, 114=>493, 115=>595, 116=>478, 117=>712, 118=>652, 119=>924, 120=>645, 121=>652, 122=>582, 123=>712, 124=>365, 125=>712, 126=>838, - 8364=>696, 8218=>380, 402=>696, 8222=>644, 8230=>1000, 8224=>500, 8225=>500, 710=>500, 8240=>1454, 352=>720, 8249=>412, 338=>1167, 381=>725, 8216=>380, 8217=>380, 8220=>644, - 8221=>644, 8226=>639, 8211=>500, 8212=>1000, 732=>500, 8482=>1000, 353=>595, 8250=>412, 339=>1094, 382=>582, 376=>724, 160=>696, 161=>456, 162=>696, 163=>696, 164=>636, - 165=>696, 166=>365, 167=>500, 168=>500, 169=>1000, 170=>564, 171=>650, 172=>838, 173=>415, 174=>1000, 175=>500, 176=>500, 177=>838, 178=>438, 179=>438, 180=>500, - 181=>736, 182=>636, 183=>380, 184=>500, 185=>438, 186=>564, 187=>650, 188=>1065, 189=>1065, 190=>1065, 191=>580, 192=>774, 193=>774, 194=>774, 195=>774, 196=>774, - 197=>774, 198=>1085, 199=>734, 200=>683, 201=>683, 202=>683, 203=>683, 204=>372, 205=>372, 206=>372, 207=>372, 208=>845, 209=>837, 210=>850, 211=>850, 212=>850, - 213=>850, 214=>850, 215=>838, 216=>850, 217=>812, 218=>812, 219=>812, 220=>812, 221=>724, 222=>742, 223=>719, 224=>675, 225=>675, 226=>675, 227=>675, 228=>675, - 229=>675, 230=>1048, 231=>593, 232=>678, 233=>678, 234=>678, 235=>678, 236=>343, 237=>343, 238=>343, 239=>343, 240=>687, 241=>712, 242=>687, 243=>687, 244=>687, - 245=>687, 246=>687, 247=>838, 248=>687, 249=>712, 250=>712, 251=>712, 252=>712, 253=>652, 254=>716, 255=>652, 8800=>838, 8734=>833, 8804=>838, 8805=>838, 8706=>544, - 8721=>718, 8719=>787, 960=>644, 8747=>610, 937=>769, 8730=>667, 8776=>838, 8710=>697, 9674=>494, 8725=>167, 64257=>787, 64258=>787, 305=>343, 728=>500, 729=>500, 730=>500, - 733=>500, 731=>500, 711=>500, 321=>660, 322=>375, 8722=>838, 286=>821, 287=>716, 304=>372, 350=>720, 351=>595, 262=>734, 263=>593, 268=>734, 269=>593, 273=>716, - 8729=>380); -$enc=''; -$diff=''; -$file='verabi.z'; -$ctg='verabi.ctg.z'; -$originalsize=63208; -?> diff --git a/lam/lib/font/verabi.z b/lam/lib/font/verabi.z deleted file mode 100644 index a9390b1fd972b076d69e6122a61b0f1453504c0b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 38239 zcmV(vKEC)hypt9*I^h}F0SK>V_X>ZdcDFph>qic*HI(mIOu3d4*z>jbtj#GGd|z{ z{m)OOx~uAJ@4lRKszDebWQ7kASr%1K&VK5;f6hbb&u_!iC6&cxH9_f5o=51@c(~7N z=&bL4@YTQGhtP{~OKKa|_c{vRGuI*%GX)|1yXNke&d(40eE^}vMyPOOOTD)nY2ZNL zKM41RmX7}BrS0>chw^U_+HY!Y?A(}C__rwNertp~zwg?pv!fl*GZuAl*QvpUDB8TvdS`D>ePdH+eNVg7 z(|l<^My0Z;r?buLZS!=o`mIepO)y?dPkmQ!Q)8O5xu>a#HEd|D?`dgDbM|_i^uP~<8US!sv$wU$+3e{8!0H6#)Y{hc^)_)B#x+QDwskdh^ffX_HnjD&dir_+n9ereK&*a`N=@jt z&kOY#I%&?%CXRJ?A27$;nieod8XI%6r^o4S0#-onHUQO!{)C|!aL{cxBXqBibbO!+ zt)9+H8!$FB_w{tafK9w%qsQs>q&dBPYt}Y3^s*-^jXOF#8yG?gp036=hKIM1F|-B> z>(_YJH*p+PS>hm!3PP8s7Z~AHpEAC5kI8^q=JdAK16pgEd~^dq+Pa+e<1qDffn@YJ zJ3T#3mqpy!+uz;PTn__f_`w=q-dW$zM(Ff3wl%jgVXN=x1@VIm=(fJGkz=ot4+ih9 z?*YjAI_i7)P>oIAww5jq2-w{2RxfMBq_n;PI`Og=eu%siM^dG(Q6*Y^$K^ZlweiC- z)*FD=)zR;48z<_3PEQjvzPv8G@G?>|-uP9d3FNLx1%894r_t+-9o5EIHnzXO8OxM6 z)<-npPMJ?@)--`Wv3~o24-AF%p0-iYnl|==-Z<;KyFtn7*K{wBH8 z^l@nZ zTL3lC$1cyP3iHEt*{TmWQKN3#mn{1WHfMHMy9>P2&FmKIf&I7_RYl~s$Dl+G!c z?OR9?J!)?**(z4Q; zWogd2r8O0-&$-ZPk+ZU>s;0DfaamE7vvP4&<)Z2m=wl9aTTxmuw+conDK7yeprhhN zmCLG1=gqH4gGM#*FwI$0RWzrhyr^nn8iQ~Vpj_qTRWbld=)+mEgf*_7UsP7+oLyQ| zT~k$3RL<%$>ddQHRL*F$xMEIGP3fWv=j;+drD%3pi3%H_Qe0M4TAt>dQ&e6wucUfx z5LV5H&KNmZgLx$tB~?XbY0m1(lHyW!0dy>_Dk-kvHG%d(i82mu@uG_Ak}DR&1E}X8 z0vIyCgbx7-6v1CHhm50N0qC-RY8F-1jDoVXw7MkCSyWY8%|Mu2wFtmv{Dc+^$HhQT z#=Ht2yo^We*`?9}wODH(f^$lW%Amt)2F4|IxqOvuY-sB4W%BJ)a@9z3gQ{B5G%mTS zF#s{1*9GdUKI4}l)1Y761F2SSOvRXUPV*UIW=255!7HgoxN&_GSVAu|DWD@BW>hw` zdAYuWJM8rM{GYeJ0|tXuqqV?h)^|WN?gdmax;@OVaY)*_nms+8KGZq+8hQ);wzSvT!aHvS z#63MN8Lhp&-G!4UZ`iOQV~u}=3^0YL7PJ1O3bmkC)C=)wGHO66@SO^AXC}&l zt2I!=iDpBcUgU+d2Q{I3)QQsIX({T0`WbLlggW4GqN>rpy!@^SzMG)UdiZRFnwR$D zL`!&$dbp~F&o16_Ho(>aEu3f(K+plL)}cPA$9nAGEm^-#lm&fe0i>7q>+jXyXZmQL z<9qzSM+GBNel{Ig-G5DsHr|q5_3|f;P|^wCJ*XX?c_2ghIqLCN}R=A})eBQ`(_215%xOXIM4IFwzyeK+sT>l?uXz4k&`8{Dz8 z#fMLWkK+D5dpQ(rEDs-B#k+ym>x7zW@BSWGZ54LL!v<*C<&%YE6pQAL_7TfD$l5mY zZ!d?d0ov62@N>e+p7g;eO}rH=@zbXnt~xm1SkHbK$3|e%%HZ!s8#qOp_=saPVNbf@ z(*vXQaX81IY2+C6a+zBLrMWcPQ$bS?y&1l&QCwDyP=k;p^diQ90DW$8O{hxA`C~9M#YoU(0&v)x&MX7#{-d(ijykwFq5Mzt^V`-f?yP z`Z7kfKsylF&dKqv_i<~Dk1}KOrc$Jhx2yjbJY_wrHlv42k;g~npUZJpr=P>y%q;=y zJL3{+{j2tjF8!l8baE|h<2voPYz+QhpY>CpsL(RHHU{uMQ2JENyZI<8&HA91dfv{D zRU?O%@vJL=A}vslVbtn-))Qb$>$w!EGVC8?B8|NN7NN%f&J_O^(nMjYz z!ItLZc?WOT_Ajh@kIw=%akx6i_3MA)9hFMI-c0l&O+I_qG>-BcI983kee7j?W9%s2 z6I-zQe$N{_LDE#+DVyMH)^OeT1i;(p(+58n)CW*7QtN#S_%E+|7Zfb2xvBcnK?y<(jz^u33+Z z&|=<~+D8?9vc8ugC-2+I@7di#s9ynnv9=|smXA>ay;bv?RlM(Vcv=SECBAyBMKL^C z4EOAM9%9j{I$i~|s^L1s+A&yENNeEv*r?;7D&-^kAuETwD(HW{ue1pIF6I3(_|rJ0 z*mcDyoO6AU7I7M}o>`y808tsgV^0^ucO}%T=JYJ$IIGZBa2)1Bxr$2(hd||o3Q;k9 zSHjq=#yo(lhC{(ds`1rK;}|l0=J57x)P?-13fUqbm)Z4LFBv{ss&Fv+FBu)Vn&V#v zhm+%915au=Z;GIQf4_d&na6u5AC;rU9KRw?hedpZ*}RNVk9Gt`Dsmupq z^(Zy|eZOP&s|0*p1J8eYNA34`PaYUajzy?}v1nR=%?gYRRBJqs*X^88Z|tdRr&a$o zmIDRGa+mXB{>)j8@y8-ze>9@na5Yy7jD#C`%&x|S-q9#U^&_6qNM!>r9rN#McG$^l z1m=HUKCX&cpRdKlzSKCgo<|OBH1B1o`L8_H#Eh|<`+jwl3jDg)7o{-#`h0cS^Gy@7 zYSpExYOgHEA+=vnbjaZr2~ zmqEKSbf<79o`b{i9N`^&C!Qv~CB21CqLa81Jp#uDL4mfl_$ZD;-=ptw4BX`kxk3c~ z9Os~e=si*^Hp6J&BCm*~lXwT(Bcw_v(W~fF^Z`6aXe}1tGm4~3C*k-89fmx25PgaT z>7*Q_af!{s4`@(0B>Vsv3UJtP42eOj$va}5_=dO(@B)0WKypY7nF^mPSqgL~`c!Vl z{ZNM;n_+}O;Z@;T;T`lbKo6q|D}~L%o#vz9D6}PCSfWfw~FOD;QyyW`S%&`|$$J4w4T~H>2a|FhH#&haunJR5DLN; zKQ+)hxL+thcab&dF0>Cni=G93q9ADgtgy{}@lTX|Y$YFskkcO)N~bCLu#lW;B!7IK zd_c(`qRGiHa)OfgDfu5t-lOEdDS7w5OwzlQ{FjNm_4_T-Ta^5M3pxJgP112njvo`> zd}EpP=1t_yZQ>iRCrWQDBX79H*AvNWlne}!S1I}35P8KwUfCudqvYiw^3oRa;!N@a zCC~jfO?r-!-=>jgDS77UdD1gm$kX%4Q$yrQN}izPC?)^-JUK$in+y#~I8X~{EGf4Vn2)XkPi*#oYxx+#Z9?(k%o#cR? z?7uxh+CM~Yhl;l+klXeJNw+1EeYe`AeL>__8`%rb_ePOhg2KKSYzBE3+*H-dQK%e#g2P_izObW`G?q>GYHg}5(vP}08EB(+nr)Oa3Rg#yRnTyildLq574TriLb4pbmQ%6}&|elpYAs}G0$D=IVoGW#sivfg zk}D{wT$CVH?k9^9NQH%zQ&L9BLP{14k9@RFF-kQj(ud@^Td^&wY`ST!rMi z#VI+8G{r!26p~FzmS~l-wvf!p5mII&nGAQ6BS;1%=|dzfHB3rdNK)ZhY8aUWUy~M+ zlw^~X5=xSj6e-z6k`$6?Aqnv&DIuH0n@C)&MT!d|u@>SoCrGX#;>3#N%qB6RB*ra9 zM=4UYnM5fhQb!`)VuYqSpE5 zGFN)qgj=UY<2-^Yj~M%%&tAM(St~|J%Z^BqM@WM9h?o%f=}#4Ynx3|>vetRz&n0tw zy_VF?foIjVaLMlAF+4Aslg{>QHPiiKv-BV$NQ1)N2Jufw{u913Tol68e-u?%^fR+J^Jh7c$eWTaCpC(fQ9IOZs@+6uDJ$rnErh|5k~#D$OGwskuwjqJd!CG>!Fa^zLI8b2`dHoXg=d6hgwS^*k{QMB7E;UyxB ziZp_#k!7uAc=#iR)%odz*_qfH#}Cr_^;=&jD4n!C zLXRAF^YSpGpb?h_TVtZ5A|t}X93jC$cAM2=HW>faXn7Sr5}{wlstN>?&CW8L)|BJ z^h_=en@c~-#Zh&nm7arhE8b4Go}}kKpxg0Qc7A|uC-HW+4=)1}lzEa%SM>ufd%7k^|q zmx*H;PC3~OrKD`Y6UD^>`YdS9aRuBv0_w?8OFT1XF72A-y!%D^&p+J#BGwB3=Xc`! z-(6_G>m~Xfd!T=2N!N@SP(^4xeC^Vuhj%Vsdidd+{!G7oboZZd@bLSx@sXQ8p1k@}Ftu*@VSNuQdOnmH|LT4t$G zN=lXa`uRx$x3CVer4#&xZ0#v?7>|^J84te^c|V;tI#SPo{95avY^4PBomH{ zjnAEum!E+_TywHR93%rCF*a#TSY=i|>BK2Bmq+6K)O$B#L>JVoAKd&M{lm-0!^3gL z-&VZbl)LnvMN1l||D&?{V9)gR)5t!0!>l9T$LU|X=}T+p6o3E5fsvlH<(Ws$Mn%yt zGc)GTNbLJ(&b4Lj`zB37nAtLXgxj)Uw}O|TY7y+1ELw)S2^-`F3?K2CE~tMG{g%80 znSl{G-DcFGX*VHYpGK>%nE}~#%u`5x?wb-yr5UfEqVI}>zqMSnF5c|bv zdGy;uc-B2QNhrrD^!Fq8(|7k%NL}#7Edp`bY}P3PPQ?l3Wh0cH{^Ec0WZQ%EmHX%)MxLM_;yj@aXYa=;0DFp10IuO1 zWJPn`$rhtt(P>05q>4dHq)w~B)M(QhAZU@T1QP+7MZL}_+bk!h4`hD?C$lrm`he7B z!yl6>EJ>OKAdr-lkdQA~bF2xXOrORJ%IFgh(W7O!f`2@O%f(k7eQfu$^f0b{cK2hC z?tU8A(!);!M5n+&oR&ne3bAer(h!dhcS%|iSp`Klu#tzS4}d_QpAO%^3RkcTMswx5 ztmHjG8TtO)$oGOGi6iF+N6rg|LBYT%_#FLMFhDLUp-OWI8X{u-iEx<25(YhbloJKJv2Dj?wVxzXz)DKfV1FZ z&SfTm9_Fz>FrA>E;N>;kk>DUfBa6(HO|j+Yfd(U?v3x^vWJZwHR#{WAJ}ElOX0=t3 zsa*<9^e;!gqZc~YwBX32|G=6rRxX=$f7i18x!rBcRummtv;59nPrGpL3VQv`x89CJ zurz@CZ`!w?egQOOyYKG!x8bg@aaGQRuONJXZ9bOgU&y83Ln8~wa}3Zm6#c@Tf<#FSaR|Yo zk|Y*Np~zHg)_ZM@Xgz=yY?2T$hZ3zVn1lh8gVurqX1zI#3`Dr}L3vy?)5im$TzJID zK?>ubhQXnN`lKXDvapIpKXx#*K6cp|YsBCnS;9lYuKWuFQ-#f~o!w1We!0(mJ(jnf z#qxdh8yrDD!%_H?$_LAzP-DDQT*f{mM?Kpe>EDKxcci^7DelTSG zxTJ7gQs7W=!O`FXkSi8KnrN)L?NpqvUT~~t!c%bXGI?X&RdfSAeDznY1mIrIpClpt9`6tI(}V<^GNoW^`?6&}^wgJCrcJ`(PUqo6 zx4!{udXWP6fLF*omhy7UehOGQmxY~pvsa- ztC7HX>IBgMruxL$V@&F}(49R2F{!O!RO-|}i%be5VIL{o9kdCv)k(ypg&harelb`~bt$OxLdVrq2NdNka?u~ff+pCWXpT2P0vWDO8 zu4@+Fp@V5@Z$6ci_2F;mAiWp6u=Z{2y>8DfPR8x~K%#d8w`G*$b`S_0;Sh*WC;?}Q zgs=>u3%IWV)$p93;DN9UqBJ;?#OCzjSLjv}GBRB{dHRAZJ_kN19VBTkkL%+g=jnCF zhZ-h%k?f5|8{)ytMb~A9rbie^lHIJcMWow3U{^8qaE$I948K9 z@u|a`dg&eXjepXw-xqS4H!mxNQ@HEi-s<|h`>NM$O~0k-t-l_*@8;j9Prj%Bf9d(x zj@gJiMXW}7=k6RDupc$FCGRYY%?66>`zhSeo&5@PK3 z1iMj{E2|Ij0fzXPROv4#Rq))*pCh;W{NgcH+Uy>^$KWw~Odhi*-jm=-^d#w4<*OQ# z&qC|OT#&77Wc4}eMC{ijphr#aQYKxY(VRM z-Cpa$LFuWgY~dhWPd}kQyhV5K1lbb4eqrB=HP78t*UWUQ20r$Sb$mXc!ks)8<;apo z)PVOBHHAV7+9cM z56Stw(J%`+gZXhv5?DV&l$`$Rqpv5zB1;g_OX4r^W{oTW@mUw6u-J1k1BUlNUL)@e z(X2t5H3SYrVCyNO2eh0Z7f5&M7;i;MmLejfqGOzLxC;m_6}qBzvZzFfLCfr`ENu>P zF{*Ji3Q^&9MJIDw=ty*Ukc${i;Uv~Fz+)V1fz_9^GWyf==WHwv^0R@lV4^f&7Yjwl zVo`fuo*D*dSXhc9aO+%p5WhtaXe~>3ELb%Ein7Y%-kDqfr~Y>zt=(2uS)j#@^e+5E zR^^uF!WnDx3T70~#)XrTAHIFV3(eDKmZt*FE9rfjwbFfH*~-u=cW!BUdd4JkDB2np z93gKtl+86?HEC;B@Kvs@GnSS|goo+G(DaNlgA`3dZPAY6B!?{|zZ{q|_>r2Mt4Y%! z=>70?HgjVcI5)sjbEfnG#>pO=)gg!6Mqo(isAu_7>xISEi|2Up`H$SQsALUe?v z4urK#5|y)Hcv(P!w71N8CrE9>w=EUy2&wewc` zmz#GEt+{FM#-3a8FTXy7!#!<1w1qw?*+fYLS>^xit*JeJ>yp(YCl^+~`0J1H?3$8m zM;3UDy!O@zDNEEY95kY6oBEjswP!Um|R;-o<2>3Os z_~>N<5&he~Ik2-Vundf;ctGV7m(eH7Vvkz1Y;q&oq{Jwx%4B7hvPXFt4y~lsDlxiL zU5av@R)&B|l`eJ=a&F|2+h`vt!_Q(Zy_MSV-sRXrzmZN3r3x{^EH>wt3YZ-P%(ReC zJ5j5<&}s`0v)IDI!?bXrv4w|+7241?^R@D}@M_(*P^-nvCNE_a8X<-oY{U>AOv0nX zg|IM}<^0+4aWXTA=Lg4Q$G<=aR4X1w?EVYPCijpF;CAwGIH#rein0%8HeGY`nx->l z!XsY77s4WM@A^CayL9rd|Jd~|SPqsQ zz6ClTi59pc&2|GKkzswrV(&9FlDeo!iy4_iLLy{i6iBt@7-XEPI~yLb&;fNS(rq$W z3|2w5$kvpIlt^(EUX=hY$vGD2s8c=QocJVLUdAuMJG7ILOHQ{x)tDfMlB4qIK z8U~3jOc{gZ-vcrZjLmebABK^gNR=(Q0A!14OkR}DiJajPLL?0CER2i_v&1lQ3nNk6 zVnE_lfs1jmbpR2CI4x!-b)YSS;7P5jT^-=Dxy3g(%!5ilc>dYV1TdRpk|#PyVj{a& zCC?sbcS+t`>FZC>-_hH8*4=RnfMq)^$7^#U9Qb?khETw9awYfr` zI76PUnW~*9%oE*Wku*$ob;?~DkEUDfmafuVBiz8c6Ax;WR0oJ%I-sX2 zK5fEg{NC_k;aWPKD*ar1J{Q79Qb&;B8QH5+Q{2f{B}?5Af{n%6HWq6$3nGHY27)0$ z3X{jI$Jq%P=24BvNCCmRBwC0?6jx!N3c=gI^jWYA6{EIG^A?O|z}W338m&eED<$X@ z9R|y(F$3FVGcZkW2GLN=2pI|$C>McgdWlVS%L3LQ34&k25N2e2J9|04jX#eEo}-+* z3VebV(hLxtFu|^*2=Pj(uuxN~)C#LLtCY1s-nEKH*`(R3xk}lp+#nnjeyKUEd0Z1o zuvU-(cCAiULU5=Mq6<+Hak7x4%okSR#iUkKtF+@L(xz!sw%}gUujyBI2|LL_;db&H z{44Ss&0!^$bIQ(i&yM5tTmw%X!$06bP{VyEM~2@0uak72baMD}5;l}7Rt&#KCSN#; z0_>9xZE?>80Xw^-9f-qHD(6yV!vk)2k$-bCjI+8yS-1$nqEZlB;4* zh2}oR)CX2D#9}rX^fFeEJp#ni80Hukn~a;O9%ts&Ne;*t;(&z2H$#Rigsop;U2WB} z@1LWMbgSU0I(hvqE%nmL4_@wjf6?Odksw}W;(SPgL*;|S zXC{)^WD57kKz<97Kpe*NNBBV>61MKms;-HWFLGAaV&nKQ1q zu;&?Evi;s)GM3QSX;KG$PP{9STRy&Q=5b;qy2U*|G9sLWnL`{Qp=O68L~AoZWM(kv z6}SK=ZO|8ng(!B^r<3~()ea@Z5g8WB12m*F*d0a#u{kUTaMMwYWdlHvu}pS4qY%*K zGU0pRoaj+)7#Nc$Wt}ceScQG_+j;>MLrrI+u>%}AM9IQ8J9e&WytgdJL$|_R!T0pd zhbvl>w$kn0vGps-tWE0|l+f+;`w_5?&pz?gmsZQx9kdpEJ=H+@7>MPofX_)-c26@J z1e4wz6Rpweh^&~SW19y*$By`kzxbp zLkmV%;m;4Bhmilf*KOk$m`&=M%27zWz*yc?pes-c^aX|jV}Yq4svx=`rodU?D%F)L zrTS7ssj<{l8dVxy8dK^lbuH5_*DY6;>z5mr8<(4wM=g(D9<$uJ+|{Y;R66yYhE8Lr zsomZl)EU_s)fwFx)9LJV_3QeTeto~8-`H>JkL-`?kM57@clNucD@cdUDG@kAsI%7v z)dkmu=$PpoU1N^%uQ0@q%`;ENOfn(c4w0&6uKTF%miy;4#B`Y%d{=)lzc<&`-F5lPuE?*9kr9OAt7dR|| z+1@oEeZxEtu5(9;EF2^(I4qP^XGy?2Aqs}zPir}Ge&ED_<#pAvet#}|!lbM^m9DT^ zQ8N#Sv^*fvBCRhVvU3+|cikn`6;R8UbnBPY!h-M%72;8-cq3TU8i2$B5n7?aW;7Xf zilDcdOhz8_OIpDOwt#tZN1?-{2ZyQMX{|G$>QDz*D+qp&))*8NY8g;{I@^pfXdUlC zeO6%97PyG)o9D;};2>Ia@@0SK!93IkrHkbEIeV!~rr{q9}3>ltA!-aY&j z%>{?`ptzF7zUVZ#%mf~xXxs}FQLg}OI+4XBY|>p3ArJ-#&ER<@0GmZG05L=>SdCU7 z!jxIGq6I6Y)2h3i^crOJ0}oDiT%-~hVvY|rxs;fg`89Ic0H@=hHD0S%%=`$EVia~v z=2IfGltpkX6P8KKl$(@2ie1zibb3XCY$c3XwV}Fj#iCCX5~Mh7lHRG$6LPfq`b_<7 z?QH#GVL4eMRcb5s+r(|sHhG(7oAx^8YQ4)(FHSOuEKlRc415xIW#QNG){!l=ESpBr z*+9Qn#To1br|-D{aplE>z`(6Mhj`gtNeB zWF!G1GmX*#5k*B)En;S_*-kMas3aMfz+MvZT_!{i_-1mUFu9nbhcMfsODFNV=_FfM zMv8ShB5D-}L{1?P4keLzF-bQ`$tMN6Lj4>vUpr4{QP=3ykQ!(}e!yL{{~vTAtrza4 z_uyUsi|@b>2 zTCgG_5Jaacr)`|bPegT8^bwF~m0Qt4A_95H909zMPtd`NY=?vjzkpvHiGd6NfExKg zNEyC!WUt_1I}+Xkt2W3Z$^v&3VUn#iv-Kq{7&WpJIs_p`vVvu0blz_8va3wQl@H^I z;$Jg|r;>!ip}}dw>!oUBd})| z>Hsh~h!8|;Aa}z6;J}IVY(LL<@W!CaXLH>yA!p>aR2+(p^z&4qlYaZDRL7uummHQp z<5m!$BcK=68iFNe=v3H%>lnweKXOvA{GB$_mTv`c10(O_bo#!KjyOf5#Gs2YfT86n zzzlQ@nzMBUz|88hia{6t_$j6A6%LFF;yK|5xf$wayLI?Rbc5*M`l9Z9L8@C)Q*@CB zeIoloKsETb$6+Dqz1Qd|xtU&%H$pTPckzsPM%;`Ph|B)rZs0pTrI;|upm*SqQ1}9s z7Zmu`K*pq#ARx1t1*-`j7$pePK+92BEI1@tkM=umlUuBDdt+~jX-V7zt|~0l$V@2G znjDcNC62@rQ%X=8TY3a)`)62L^um^`&lULBu><2Zp9fPHASQf*%1n!8R$*$6D>Js( z<&Ld(RmL{B>SAwm-4gqt>%Q10T}NU~xv_?BJGRg}qiYAe_dbso;;HY8 z1aH~w`S1F??ys);@mn4Kq56s$bFb}B**UWPP~(-qy6F#RB25Nqc5y}qwnj!h{CMmY zET@_UG2vQ}Qay@6H@O#rU6F}oHi3Z^;L8YSbc_&XkW6Ni-6jNC;ekamn@xq*AY?Gg zs4Ylti>eFSV{SKEjD%PUW}VAncAAXN@pG#@Ir!J49Z%PBtK>{M$>`z^UmPK`Zg{+* zcIS~RX@-m50ijxJU)7WCFMd=$f5m4zy!Vp|7vEmlc445oeI)e(IcVhYnpNMtyZwCQ zRadV9aV!IgI|LFJiE`YLroG04N}Cn!#RtWWvNWe zW(xh_<%6S%V=;_xGFv=UF#o3F$NzN0RW%Qk<}Z741^t1ZXyKQC-|xk3^gVjO708Lt z={u`h86$*~LhX-(4+Jp6hjk2aA_}s?`R-&CeHS+D)gRQhnDH;;TSE7k>yiErVGwP$y% zzdt`3x4l?Muc42%zOp)Z@k7gwzU->G=JD0bcN|&$(wdduomh9Kv488zhC{S5+jo@dor8l$`0bq8D_2QyXY$ z3J~?`?&U@nBZtLkfKV269w#{Bn5hb9GjM~}0{@)D;CXJdtbvwxoS_PwdB}`lllLG1 zqrQf%d=kIEky5UucdRoQ=M{PGjp^_i+J-kfe|cCZJT$UIm|w8S;hy{G9V4fhk*#0- zz&>XM_bc#m5^!aE7HZweW4k~6y9P+1d_USGwhIua5=nzZCn82Iu=@OjeIOIJfgFv| z0mMf=I_z7eg)pNipa;ad3-`%E^dlsIKF{S)=#d%S?k+S*W`mi<3}%Q$APB$hdIwX!@+CRpC(L!|2Jc&V04v zdKm#)K1pKnuYz837imRx$wFjH7A!#kI_o5)XeEtSL5cvEY?p>_-C`4J4_vr#Dn>n@ zw(_MzgJ&I=EToT{{`MzBW-ZGUrW*wIK7b zHoaibPSTbL)j}gY?vuRQTi~&N6&|vs#;ivF{k)e@8 z_zaEmVeXSFwoVnWhq|4wQ#pxoY@KT20z=H`Iu#5BehRw(aZv43^9lH%RCLk3(dm2B zNb3rffDTI^_5eoov*z(%=xtyc3X|pv1>0b4!9KPhgz+!l<$3kKIk>s;m(;tDlJk6+O^+8x872y|1v`G3*(`b=ItK{q~G zzY0$G5RP8Hq?vyC@IUF9l}j3NFxfo(>RQjpKwB3^^z_!hHLTxAPha)-#$L$6AOlp=85jJ;51e;y3A}}I?Mi#UZJP=t)AquxjK_tA*8q}tR z@EJcqHaQ(4San3ATzcXZoR*KqaskWPvp**pu#C^LGF^ap0yFocB-ijnXJE(Y0Z71-&{3zA8zm=lVyDRok)Rv7vD@S}yDe^O z9je21raE(-rOpaQN!=nnrfv=~Dq;DQT~9fixt=A>J9)J|(?uo+ha5RHGAz~|Tf0sa zS=0+z-e$lm2|eyE;OiY?Ote-fXcRGExnpne!O#{p`)f%6@lB3aV)T5qBh93lG;Xyc zFc0K!TV7_V!xxd;SqQGrVL4`q*KA5yQ@Fsm5GCD%S!$O0D*xR^leh(v)V6}$(ryQ9y3=FEy>ylR< zE_vO?N3@{PG)5&~I455?3ipxkXi6|Q#DqmoK%r@Httth}VeG=EGjLZ9y>+EXX3YOB zMB@)UB+Dz0WF4I;-9vwO5z$0Th?0?f5naD6((S^hF~T#U|IJ{Dy<#0;|B<_VLb9zo z9Rs^jJ(6zBB?UO1IwRg>9&|eX4%~7IviOz1@4n-(7C$LGGVvU>PD`CYH5p_kk-t+Qi0bULsII?=zV(+)5}SP&f6nsD z*ajaTVwO?t{7N-O55QBy@zfxVU%i613EKo=uCzpIM$LGwyo>CTHDe1l+wp?E_z-R% z>7v()b;I8h(}nvOE=M5>Tno4u(0{wUO;wp^pG)`)DDT~t?VM0K@B3|Ot% z^nbQm6R@vDtG@kXt{G#bUkff-yh$dKMJknuBI#wF&TNX16SN8XdD47&u70VZS!^|I zB)!^xy=CIk%Tc@_30L9B6kLhxD5BRS(1+-5padnt2*lMF?jyo5Wpl!h0C!gdMf4CC zmjGM!7nTJa7 zJaMi(Pd87Qr*D@Uw5_@}WskT`3HQBU#q$)PAAXH~fO`+&ID9P?@Kk!^5&9C{EX)w% z=##i?L$NEw#ZsA&b?a3Z!rTiqWu|~6re;Cvs1T??MKs?h(gSI#iW?$ zo25||@+Yjb@J?KHC*F;>j!fI|`}UA_|wXEGGsA9KPJn>YrN}=5Iz>)yvrQ>k-rY>9M5ukWc`pw&5b@)f1p_k!dZSf-n|o6#iU}0y|=Tnl1Zi*h12vx{$=*pa1-f9Q6azGW}RikBX-_ zwO?>|sPT1bS}MW<5i><8EiKiTd21YIDJEK{fbvLMlN1B7TWVHPj5%1FWQtA*hN=W5 z?MgtqCI|0wv}YwHMxe}?=uk(n3e-m{=_4lNOffY!O$s(aT->#DZ)%BfMQ`v{mg%%EEs(c3_4E@@Xf#Q( zysCFr`V8PhLc*7)PjxQaedw3Bgxi-_gw9DnG%4FQC+E{mnW~0#%W476CF0<2R2bP=d zHVeBiblD2T+!vz@BTHkfMvFCu#D*9mWqXLrX*P*63Xvm?wph!F6DI~v4EQN^w{4Zh=)M&z_7+J*d0t+5MQ&a>ZUrT|HC277q#!)(*X#R! z9X@g+-n(3`%qwTL%KtD_$=@(JnoyqBcldB$X8CZLFzez)$WcA)Z497sqVIok`xx&> zKz(&LKc{}OkNP4+|9xtS4Ah5`EMJL)`*;c8Ps!V4k8dC7rw^4&r1{ zZibRMJ_vTBCpiRs6?a@o@lTd~Fs>vkpycLpB?SQ`e+(?qSOQ8u@|BcP4_noPlDU5B zpwD>;n`g=45X>Ki`pjra%(#-`pDg)cTuD|y$<4kJ_A=0`yv-l{<6QLmON8y?N{Yuy zNaeVa4+2W6_&ENOo5xC|X`DJ&j8f;+C~UdBx2jQ0U-^lW;-4(}U|dO7K*`PHN(ur> z{^%>=nH2A>b`*kBKT%TrlO-RFE6EBdxtW!K&8xULP1N$8K`Y#uGTUDvad*Q+pX~+F zioX)%|3KA>@Ss7b7&LnI#X|~#@ZI2BW%I8cX0!R2>`OCL^*ss--$Iw~!k^;>3$QDl ze)1lD=3V+pI*yZ0(jDh6yeCdR2X^BqX(VM5<+FM0JI=I?0w zU)7xOOGS>5v6XEw8v>f&*ibsZv1#7yO_`IkveGkuF=zM7uShE!=g(i$FmHb2138m3 zH_j>UPtVMGdH3#D*!IkyR79-MYqnw((+Jk!QUdusaTX0ac zzRkHOC@v)28512GWVNu&T}DQYBT7SvJv2p0=||a_BdtPKCOsV%Ez!T=*pM%th8X+SSR6+`6`~RU?F07y;5R4& zZE=?vY}OE~-WFoj!YRpusIi5FSPMfmTK>wl3LvOHX|eL%%67Cye&6{ zyKrAR-Q^adaxUCH<@u>A3DckV05 zqyIZt^W>G8&G*eHug_exb3^yO-BYr0@W<7UP*>&R`v0h`?U9~7lbkpsJ32c&rQ(2R z^Gk*CwRsP`5f$}yYU-@an8^t<^7b`vetBBT%G|q-M~&a5_iOksWVoA|4zbt z$@h?HIFRib+i&DhLpBQag`c2uqwBr_$_CKmq}-g`t4m9FWKYS3P2GjnC^|vU7vK2X>>|OC3Kxo6R4oe-KTkaGjyd`MqvoGP)7wP*i zJb3tNTp*qNv02vq_#>$ZdiJ&ta4?_E1)Es|adkd=$i13H&|D8Dc_Ezzn-wgep#vm;s}V_HJ9TS$9o9Sdj^QethBb-^;qjffQUQxt1( z+T@fpW2`B7a+*=jH%_&jKcW8am`|7-qi^2%-sGm|EcE0#zR_wz`Z96eG%wy25HLG@ zB6oRV%Ntvo!j4He7hC`Gl_Z%D9BtOgGioa6muD*uEXbPbnNro5Q9h%1`ZJGWT(zjV zFZcs`hq(ODA0BxqC^Mo|S~Wj^zAUCryK%)Ue+vse9}!tLBe^I)b#l|J8(zddOPLqt`K&#$Fv@TeXC1_v&d!dG&QAK{!GrWi^%`rW9BB3K zrv7)AE?Ke|uKG8!*J@szxlquOaZ0KLoZ3?L@{P<)=5xtAd!TDX#!O)!t>4nbD zF1W_h!8@@G*AUc<(lZQV(o(kX$7EHILo_OnTe0}KZRNhwT%6Pdq19@_nK!pApzLQFWK- z&)FoZ&RiMPLO#7CvP$aojxhzN2-ER&p$wM^GF#D)BdPfRY3)nkqpGg|@7w1sGw;ot zE!$+Dgb*Mh0YX9o!wvx<0wN*`M7FRmQUwG=>yP46#fp0sE&9Wj1WHjXu~tejO;Opa zRIKHP{;ZLrt(Kn)dHJ7nW|9nx{q_I<{3m&5-n@6;UB36+bI!f*-g6^Pbqh`@1zU(K zlLiPM%Drj!$;zmWZZ2G4B1$|?7l6);%Q|uT#9Q$hLT#FMbaQPh#Mphl3X~k0s8w9IJi0Id!OTe^I7lD z}GqepyamuuxA4p^IBKf9BlWz}H-Cz4++E=eX^=+O`Yt zbG_H@`Rw%HoWtvP|LrvTVwl00>nAj$*~gxVUSrs%VCuGDy5LZ3K`=Q}^f6NueKwpx zhg|ekFj;hM)U1`9yivPHoM>$1Y){M+s}>*P_4p;9&z~^6zUkaoA9bwB{{BVFT}wb| z<%JvaCfF>|FBB-RwNig!ZlNyOlz@kZI6Q?#KC~!@8CAE6|wOBRS+3@^bVZDSjb8 zC&}MqWsb1YKPzWOSxQM#I61$})2{%h)RgERIaCtP^T^5JZY8NTBX&@SmhN4N)^{2a&W*%OyfKK;p0&P}^GhhLMwdK|9T8>(=eIIq0F^OW;Nu#X@(=c|8OgG(o$ zeQMmech{U8`}}pdr1F`kCrmiGh8r*5Z0^`mw>f_=ymidfWpl0>x%#DH&(6H>&7Jp8ed3mp&rHAn z;LiJRe3b7!blB|i*UX-sGIZ!H_^z9I*Sar%^;+w)2YgFLC|?{2WcB4FDdwsO-3wh@ zFKoc?^XJd=Zyr7RC0FwqH;!EyJFd4DCCSB>NPBoq=AiyC_R6Ms>^N>$T!v*J-$Riu z??oHVpBMIgh@yjw@ZkI=LyIs5_xIoOi zTtbEE);DOS&dY$%d+ceeQ+u$uX~)q1d$I_-o1& zl@}`!^~+q@UFF4Pe3+mtABYfp-v(VoB}?)+6%(AhCpd%ix!-ug&XNe1^Deja0JnkL z;*8=V5og{2n|qVn>dfG_{%-8pH~3V?;J#}6_>Hk+V}4*KNzQvezRvS_KPyIsGMt{XUKA%!m~(s5dT!okQA|zq z=KD*^YkN+)#Xs<|Db+UxXE>8&qitoNn|JiMr7QXS+I)c=PdH82zX}D%P8dJFsMx{x zQv=#R5i=wl^)6ujqbV#uOHGyY1G1TwY6kXpH*%8%mTu=JbqAy4^jqZ}OI6|AddGUF z!)EO0OLVky+iS(VMBC8T6}-h$No?K;1PA2j{BB}#bl>`8|8yGLUupgPSF`W)jUF~* z!{`w+*YP`+?JK{2^}eAc!o9 zeqr0g!VBL%%I|BNF70>zr)^E!IOoC+LF93L=cAC)Zb*rIv&(#=xR1T+5(aT#s<=oR zk{~=+Lh<6?qf(l)z3mZayR`r7SLA|k-bMcV0NQi4IE;B&Q8dNl7E}p`(cGOrYB=5Y zGLMZ5fZ}TZ#9Jja<%3huBPAU;UIOA%s?Oi_q;ux+^N#^ZF00T^hF?1+4*Sc+r-fN~ z3>?NaKaKu%o%_UH(1-28Dx#U)Sudh0*?oDPdu#rr==f`@^MY-&D>IzE&Y9USzBupt!Q(~> zH4L6h@`2==!mSj`$XA*Ntiut}CD~b-8R=3^c!*^tr=$u=X>fw*DIPe{3SM&$F)h>Y z;{!Ha@D8yovm(EHUN|S!E!vi5imCho_B-u5YkKPbz#BPD-DedGtT-v0Ml(}Ip405q zOra;}<(|rrB-C|Hv0<&wQO>WWZr4_3_4d_ju3vwDIBb>EkoTXO7RRk!s``rN&jGPS>X!)7{h4riZ7ePtTa1IXx>~ zk7#)*k(9jdk?whDDi87uN*R&ea*E=(XSYtQK0t0poYUCix1hiOotgjWpHcP97%shN)@P#L5%! z$C2M?kEk8>Mg8NG#wU+Ysj+K(HU8;I)03yC7}a*Qui8I6X?XJRlqvQU-xR-!U5P|T z_K66f7t6zY|LC0h@|8bv-JO?&vb>AG=cn9q*NCCF+%;1A;^imacfQ>F*eTAuc+KyH zqrZM&Y|X1b9&;_Ut}cMG3Mrz8iP+31sWs=atTagjT8y4zY5!FkCjEZ5Nkl-m9LvAuj2IvEfG5Q$eM*T)(fxf`_ss2-=UavQdl0n7M zA%mjP34>~)wS#6vA0G5jblae<(LIB9MLjohiAw-ubFf1(*SCILpL5AtCQzbRTOcTP zo^`DdY&*H~!+Bep%BP>a>qAb{G|$D?_`C03`ptcP?{>c1SbuKF%Ky3d=WlRhxXQO> zfxF}O<%e&UUK50w*Vb)`bS@v{tJA`xueoOQS1moK6~)#;3LS>)pytl2oAdkw@0|*} zW2*``(qgDvmp~h7|DgRz=}Gc8nac{N12n z>%oi}J%WY)T*`rF}@^yHuwPEQG{=`71sJwbOi0(0V{7$A0ehyP`oq53y(r~k}L zR|muwJj|)=u49w#pt{8n+nkw%G88k0CKyfM9Ws-3a4*gY~g&pve~OVwa2<*@sr<1#b&taQmx!f>QWilKy(_+YYR7)nL5;nS3K7rTL* zCfYanrUg^9xvt<`Q=FT%z)W-H#umQ#VlT+txdyXyJ8e3vsf4W1*t@aV>#?iMN$On2 z3)xo^-jca5f(u1_!L(8lg(U%&3bLB-vwbEe*sw$iy! z#A&^|fBgFJhompQ3i($&u>E}7^uvct>)T*p=|lWA=P$l<$d2_m&p?ke2U^$wHZ+>m zE2F$S&Vn)1dy5@2VX~K$cVE)mSDDUwnw1@1bDL;Z%=y#jV>4qqj{jwbjPL(y{!HDk zW-k7TCb>K~e`ap%o+@85w(`C zU&}U$`^9{S$Ibdg(+o|O1YXufg?WG*1Op=#6b9^sJCDR>+Ss9vfm7W5Ly;tfEAz#^ z#Qi1CiyU9*OpT1~-Ek)7U;OybA9Bm~aVz2{SaU1cM)8%-lv5!w9#YlC#B?QQKt?R` zgkxWxa#>j}zFjZb~~VSUAii{T>4dgR=Y$tNh1fe@h%TjT{!y0(5Zt#?yGU{jsz~Em0P&~)YaX|UE;<# zb_fyL;-l>-eMv*e!8LC9(Q#aLmX(aNtUB*3O1LA%?!@Q$EJ~Q?BjG$BKz}l0>HwNU zfgYXv`)#KC&?}_{CnkBNv^LuJc-Tf`qF>wCwGvL(IOcXIWw{k4HI_KM!gz0&!%p$5y8DleUAF1( z?F$|h=asju?9b1of#08%f48d4xyPAt?#P|ofVainMZK%P-MF`2+?_B0+>7)6gL`WA z=n+`|fQf4f*pw>0Yo8yjDC{Pu1#OKztp_&;9=GRK)Ftar$#eVE_3HLuM)HiPruQ~f zCJ1STRc0XATQI8xPw%p6ec;D3Wr8WruPlx64pL zxq>!eqQ$Ssv?~2E=={VMuP?obi`Osy=&9dVO#S1g@0>F?UN@Ud+HwD(=*=H(`jFF& zZ+{wJ5XS$UOth7Ywl|9;EL+pdMrS1sLc;)Zmr69esXfZHWp;CBON zsZoPJ%$A7^+Gy-mPTW-|)HYU>CbH6tjNk3h>~VNb`8S_)vC^;O&++UNVTx2no+NcP zC)(#y-|eyY?YgX^Uw6GiW=B+EqQU8!Vvrm6QJT)sjp#>B=#sEwZUb#UcXfB}@t5pA zu2hIoaf-8}jLSc{y={lHqXJHTE==LV+ze-{b2j!0d3;ouB7PjtV{NqLU*=I2j>zcd zR1#^op@bYZee}k^n?Lk8AEUx%Zc>?Z>g0AO%uVX=ynEs$>7;Yk*~-n}!m)3#RscgG zO!+I1re5a#o*fY;%ADM}^HE1lT(J)h!NCu>3b>7CqNy1@d?mp)b)as!M=TK8RIl_5)C8h9#=-`;o%h+30kopo@**w~& z9PZcy$_J!BSgD`}a8{^N!OQp}5&luhqAlBD&z*j&b3%TiId|o8L$<1L-{J;>xP>6P zdvXkE!^OiFn}u>Q^49)esaVPZKwiUb?ZPtdWK+$m#KYo2+OK1Mbd=vVG%;YNvov1J zQd0v$IE(Y?xx#VoSk{T|f#doyvpCJ~3#SIeB%3eR(h6HwA%2lCJ5=#%g2a zV(aud92&sU@=#|VEwo^0h^j<$xK3-O!$yI+n*;S*8~2=$%1%db z>FOuN`cK$*vL#>0=aoV}4;-3q2&!8Og?trBZr*Rz@z06sTo+pq^oXl%+3yPqfz+hf z684yLX=a9Go!x zrN!T*zs$nipfDHrvQLvMujYv4TXcQ!cq)2!c=Dd_b4uczeh8gCT<)8M>qIfY_C&{u zod~)mkL@ue+oQrE$%-JlB-{2>_*|l?*Qw%Mw!o{dcJm&uDOkSPn{Dj6={A?ikF)cv zAVHOg)4%l4a&>TgafASzAb}HP!49_&EHo&@la~Tt*5#lGgM=LCsPm-b{NyTdpf>}l z;Bq9|o8$9jePH2@02QsPaLBk)3tu<#aNvAdy~1!!@yOcGm?geo^V`@&zsK#h{f4Rg z;sgC4@pQp*TRQrv>D4iBvOMms8+DlF{IT+C(`Xf`%PF~%FroI6NwptL;c|+c538M* zM>~Hh;@5PE*0PWy0kkhgxV>TNxyJBW^c1gNDJD1HY?k>;hQ!;C8 z@1a$t`B?#70H#n=^`1tSuI7){%Z&V?dezwY-mC{{C)Ue0Xob83chH@ZV(xo3V$J%0 z*t}JJ|LNDA3-5O9(K_(@MFTJ9{`>p63f3>~|IqoAwsGCwxwY%Ry~XQQ`(sMH*LCHJ z3?;TA<0{XH-}{WvwTk1iJ95_@VGG^q(GgqwE1h@lx#W(LaA(sccZ9Ax{NYRP$niT@ zt`-sFt3|H7qkQij`FmHGi18IBSKd*+_l}Hr;$C4k(5_R(mwJU+O z{~&Z6L}P^FdEoY4&ppsaN5?pacP=>#@~Ca@{E7&*QXfiEXt$>Fm& z`IX&I|NS6NOgnRiahxTkf;=e)b$D+y+cJFy$5NzF&}V?2@tsWhqjb`^HypIkyN(=E z!yQ%wzB@`7prS#lOEM6q420n?z5!h~m8qP{tAeI$hUV5x&C?x%e3jCVhf|8e>-AB7W_3oQT(r zi?nT${jWhhlccclwLF4(*^;QqGs$oYLv;4=6OSB9G5HE!Zc<9+kej(3dQ^*^3mbM3se$Ftvl z`u+zvd4xK6#K_SPK6%Hg0M5JSK9vRtJ!#hAn5Y^rG?W^BgeDfdW6kXq^BQfOS%|X= zMVwKHvk66Vk)&ktshr*0`J3Du{or$}#CL_=ibaw;8Z`sQgm=wjYLYRA*<<9Sj`#Ys z%p}eu9sU9!)g*!-3I5`o>hF3JuJq}e_ay9o;kMgfc;WWjUf4Kk@Q_K@3LZR3`U)@H zzHQs>gC|WIJovgv5K&KO32#GN^s$_%si|(6F-y=?pDI{>+)c14zP7Rm>#8^_7=II= zFr}M26v=*UQ}3Cj;cnOF3K^T4(Pv8cc`MxRr{TGxl;LGq;)r-&+(0u)6?RWl$N8N1 zy1FKEQWyHIlHx9B2{?h13hKg%oE<#S)m$#W8SP1Hig+ei%;L~hQcw!YG&zsY6p9(m z^%Q9G9Um2fIKLCs5|_hU-#RS{eC@Z+_J){4Q=EZ{GcT6#BM29$Ax&32jCna|ilXR^ zx%hh{wmEbRmuT{6HkupFkM`ZbZs2aJ#pJIwt(Ogf8ws#W-4*H9SKQf94q+|?n!RLY;IDW zV~nG%LTb0p0}*tx?c!s{PCIqZ2i%3~cX6Ma_J4p{c#%B9Jr(T=ohgRnyU;!3aZ@}6 zwT6N(ZzzWgWYvhxYZXPNu}m80P0ZZ6@5vfEG3m1M<3_*P>9ZqY*VD^=7wpM!7rDtR zTp1RQiuO1+Z_f5v&Kp~t$5!4qgUgitZ5PKK+I-RBCl5Qc5%ePY^(Vd9FRm9|aoYer z;5L$lW5&nYS=fMUcZ_V^fRp&EVWS!7zeR}4m&SxeuY=xrpJokz8czhp1&|J`g za6vCw=3O)|kzS}YS#Q!pZ(nS&_t~@3<82y$;UYtdcJW2%nJuDO?HO!ov_i7osiK|g z1_|d*WwzU$T9MA(nI_!BHo7ND8&lFVGtyFx*q}Rec~abAHP!FtQ{xV1d(lhIj^!q} zH&&vZoH+K(vdDoKZjzh0uUE&E)&dSYS^TTz7fLUT*unm`+WU%bBpu%nnlz2yRkPF^X#<<_{;=5YG?G8?u9)H3%V8b z=uwE8Ha91do12p_THW%*NS@U#N6gLXW_8QV;Q>RCuzNvXBsa&EpDkGVLS2Sh zmpmgQe?d=(roa+>MkF^1qG4jTAr~51J~=DR-IIo)v9k~#c!`g?oWq4(=k3_b;l%B* zVhoE2i3tN#9(?hbF#WY}pZq?)uD9j6w2x>olrQB+^0RPCu<&}HIeqT`*{qxI-y{Ar zI{3!xXFH$%;_uFf+(ItW`}*9+ob@@}q)pt63EYMpX9xdDYU*pxELzd_rn{TM&7XGS z*1Nu(b?fclzRe|ZH+kIeF5GbQo43wifAdwxxkMc2>Kq%JlQ1^+0FI5t_w{%Xc*_L! zHXnE41NCl!)G<9^G`R5>kJbZTsqn5etd%^Q=)sW@kDKRQg24i*GULtUBB{N!=YDdCJW z?XJ}mCbJGNY~)84y^xKKc_HJ!-wIoo7dG-j=8btFo8fwpdtO)o+AAc+y|AGZwx;;> zXFKM;^6GBbzGsGK%z>(Kr6cAm9k6Y<%olT_12*OLL|4p-9@xO{<_hV3{%epg_FjGo zTP%Wg6mwqiRcvolni3q zd%~_4hAOY%LP4&KMp_?BlE-YyK={sgC0+|s>UuU^eKsm+6l$z38^f-sRin-xb&u+!Zo!BA;t9Gxe(5&3BfJe{#&Y z*7s^Q56r5#t#Z+tTjq^TojiZp*y?`kugMto$mpkDTqe$N-!yj9BT1nhxskC$`;~60 z=$Dt5lKP_8o^{i;OL6n#P3>oux1p@K)4Z3ZadLEV!fx~9W4q0dS4ABTZM>?AsVRK& zc%R>wG~Vy`RrrGemMU@YDarPGse$)`si#7-JTrt-x?;^z(}Drhmco8tYD#jF7-G0P zy<~Wyo#34OkWV#4Ul^4(Xl>}F#D+CVbHv`|{&!Q!`HwE(cIW3yIu6>&(F$C2}|8F(os(f%ppEwn8u41h+yw{>2I?J({K znQb>iW4-p8A?3p!9T}PU$cQal7vA<=)fE_T-~J>t-{6^n zHWfJhIJM?Nuuv;FUvzo*em(jX6oNg}uV8%lf}SNk3&)rA>;p&X_>z*I70~1hx>KX~ z_3Hj!@uf|_JZDy);vT2UW|VX<=u=uK^{wdDTPP_m>e(M9g47`qgrc5tp-|Gdr#c|U z<$pYX;(Yx5Q+#H0=TQDf=bK6{RGvTY#H2+`ICo5xzI;sk5?0Ubh7+SJ3JSaT=+>*e zu%btKuNw+(D6A`}E7YzKHA$KIHx?``NEA3W%FcgRCAyiw3 zLTJgDQT;cJ$wVRa!ZP7S=kVt>U(ec?)@(8$79k$%vvBA5qM3mf(J5UHuk#;tW0G zcb1^%&V+u;2eE!jY?lOzEw9rmJWR2Tg*ydg6^`h%3cGxwyno3vu7qdoOP=`)c^8T8 zHMoiTiTP}AbXIIPhLBCWF@!?47tSp>+;HUO^ASU`LpBO#_??6SDvXGn9AZB6gMeGE zi?F)18IcFQ3qrnNDB!n~=v|zkBpV^sAIh}Vtc=*61~l3qXUy`h?HWF)?BK>kL#^b} z*G*SA&An{n24EMkQ*lMc_ix}(?yQV(_XWAS(8QIXj>}*Mp=fWb2|s0?9V( zCgjR5y9&Fl5Q51o>@?5I*{*cMo+ZraksC?R342^U5zH1DPX=4t&CSaU1Mw$KJ8>K=!D@1GlZc{#xj(7XpUIr3=(ouZh|s zgHHNoE1*xDXu4ztbW=%jG&}RM#m%mNxwv`ixuSF2zVp4$Nf&T&b8OAG@FAr;^ko*G z?nCa!nu6K*Z5l9EHV1WwI!_9KM-La`qpVE;wI9{5-_}h4eK` zWw%9Bpj)SNObO^GMf+s3k`^#M3diK2E3IQ%#)(R>21^n~%qa(Hl!G*UGo3J4u4}rk z8@gNf=%#MzUfni*W_+;RN)8o(!VqY%Jm!!1s$=EzdnaYtxqb9aDR)ng49@9m1~zTwJ6PaWTdM z>P_*N8r=Kbw8wwG?UP?&TF*U)WhfQTiw3223Zw;0)-lo;PphfqU!;|6;vNE$DQEB* zLWYzf7x6_xkyIobH^m1Ug=FVvn|3_%$!_sH=X(BmOmQ5P?o&w7!%CyNM}eM}skk`k z?c;bVCV4tBO_S1uGIb1WmL}F(UvAuk+O^|H%?~}1|K=kML{?{BQq;Ihul>bbT91DvsY1Z?~>9!efyR5FRvI- zSv7D_bnuX&!-kI-IcjwEn6cN48((wngo%@`n|%G08>Zek?WUWj&zQ+-Z<#fF&fIx* z^A{{!w0OzVWy@FGy7C9N-M(t|nmg96TYu+gk_8^X%5=p8wgl7he3&?JxcO7dz@3cJBJ+?qBVB`IWt|{(4{IYrlE@ zw{PtK-GQcqZ#MtF%$4{L6db}c;nCjTBi>w{;@=~+J8q-STqvs`<7J9>2cCmip= zv9exZ1#Kh2X>gf#olJ` zu)nf7>=--3jF8iEqW+&Nkc7n}gt?V4z#OAX)wty{S3)y0}l`Ub**iyEftzawJ zt?UQvHufpIovmi8*c!H$-N9aE&$0DTJ9n}Q>@)T^wvV+jCti|v_BHz>`v%HcsM)cQn(J`lnZbV zuFG#j+8@NeeXKy*%?9zW^;7&gPK58NgaMWt4lFm7 zH(n;pKjrBv2jy{5ERP*WEPq``XWlM9FkcCW$k;eIc0>Jag2MxNye5UYd?~~pm-a(B z8J8MA@&Tu#aFk)bT?*|p42=_jvFuSPzx@O83@a7y zW>es}S4|tIUx1tfsCIIQhp)G`NbgPmx7c>8GkECd6ef{{Y$iBhVA~f?m2Gw9t=1?mh%sZ8Qo&A=*!S;hr zH~?DWAbS(E+wVcg{Q)#vOrsqpZH7ARBUywfi613-6>;mX4)L7qvo<>d9&Vi1>nWLP@Nnl0bxPi)PoX#2Q ziaEE=TeWoF?8Tm?vzON`nRUzT#kbC0K6{opeC6^b(k=b^^eso)ub60Wq9sI2iS{E} zMl?2?DLejG2gv?|yOaBxKg@q3goNS3kA+u-kA-$IB36sfi5H|=>7+bTKA;R#7Ajx3 zmbrGiE~u$$r8-?brLEV_={M-R^mb!}vC;Ua`x^Ic?l(P)Jlo9S=CkJ4))=eFJIEI7 zQTBHGpS~yj$^OOuZT{2#3xUGGHGx|K_XS4>n?jz@rqJJ#<|ef#uS|Y5B{$`{ltZbT z(_Cre(%uP=3hzxHm;QFfyo`4;uh0CStTkCjvX^CV%;}M{IA=|6W^T{iirkU8lX7R~ zF3w$(`=i_~xzFeB%zZ7lCHIfHXLG;EZHs7;P$W0fJ2EgbCNd>5JF+~oK5~ELiO7qQ z&+~faJ)3Xk@5=wLZl&E$7yPh$sQYc*_Z0Gl!wdKKc%i4e=dhkDdT#BN+Uq}|i_pL5 z#-c4n|1AEm-otu7RdQ>|ccr(N?l1kIPhp=Oee?T{?YpV(!G2lr*Q?)vexv#wESp;P zgR+OqKI-46|1JF=>c77{P@Y|0R6e}?o$|j|*cC4is2K3G0WAYARF0_pwDLlgP-Rtx ztGZW}RSK)Rw(91p1y#3K-Ba~&)w5MQs*Vrj2Cf|V#K6x7>BDF`ryzPhW>e2|6z{|*M=V)v1a6qk&8yI9=UPk zBO{+1*)XzkVDM=t6!-8(-68c5OEgS0ooHVBexM~p%i1e}_J??K zAnP-Wq6>&FB)W*`Vxmha zhGj&T6J0@c717m1*ATsf=vt!dD6REG?InfnFR}o!JbPCZsh^{5Nj_7)#cM{z|bTg&?9G&l^ zRCcwG1Nuw4vXAo61hwA__z>w43Uid`F`~yQS0{*`B>EXW^&Q=916l;--3zn~T3->A z`XQj@&VK`~fV7IBh3*GB3h*g{l48ht6lOD>?*GBD$F9Qi@?2(d9%} z5M4*{tS5RW(F#Pj(o^*me*@8%p)93fCzJzia%KWONVJ*mwh;Y@p8XbRA1Zral7xLp z67~hY-3GK0LiU9cJqdIIQRK$HP&;dZE~P8Wh%P6(g6JxutBI~5dI!<9MAuOa>xte; zbOX`n=A0sJ(yt?0wGfIsct~ z&hvbq_xY^%v)=E!p7mYpyT1Rt>n-J#*qS4z4w&qGb*Q3?>Op<302v0M^)RHF7zOWh!ZS%| z`Sp7sx|bMPCgPNE&kA&=Sru4U^&pBIy=Oq!R$j`-mTWRmwffeyqA#Ofjg=X2^v}r7 zFFkkh>5^{U4@dk$o(7QtuU~I{A5*4iN9<4}0s^G`HvwyyW-8UgOZ8>#18r{HAOfoIfVV;!Jnx43upU;u_7bb$*3w^u@PWSwe`Ed^gcCVWi}zWE$-TMNLO9j0 zU9!9IZT1fo7icuD9N9Bn@poZNGHv+B=)bPN@}@VQ)j+K` zVCakUdU31FFAER5xcZW`9&^RpU(TaD) zM_c7|GpUo?CvZ&J5bM*9|F;9I&c%qL5g=$X<{yN+Gj5-iI=-ycKH*RosB?PwAW>y^ zP1M`U(Yt9Ixp7Ba?1SJ$IHQp~uTJ-lyYap$ZG#kdM04t7^@?0YUBtX>`m8uZp;LeB zUxWv=mBGw{`n^Kx$Inyvt>;7j)CyAVX*;L&Ny%YoS8jEfmh+f>aeWTjM>CYQe~_GA z`R4x#A@mi?&EZOOM%{sL%&;yI-%kp482I6$B$?N0DHitr65nC68~-R_n2Zru=i)?}2+%(Wx2Y?hNhWkl=BnG-r~X~2;@jzN9)kXy z*P;3sc#YqM+BAXwe4#`2FHi@Xa236NdT^%8AxZUjK@1w1*m0F%tb^+R9ab9a==M86 zBXc{h{(y?PIwwNN^RR5)lJbH4ovsgeo}c6ODk}L{*nD^e%hoI@H%myJ`0)Kkr*CRg zeCo0`i`HR2c+ZaaZmT4vBXwebKcq<6c|Ohk8d>nR>>lB_cqg;v<6>O8YkTvo)G>Wln1AP8>MQ%&!d5cNp-)P#Bp-&b`}nukhK`pCSdB>i3?E4dTVu zSHn(4Z{)AuHZpqBSiCCe>?~L;D54If5JpmtN`NJWT2?eOjS3wP%ciWQMr9;|W{+ix zC+KC0cM40K4!|Dcl)bh)EA zEgS?_s6F7)P2G)e>5J%LGm@`g98gHT6$sO_%uT7ld{gtvGL`KD?+K9q;_ty&=ZqN< zusy~wS=0S3XC*&9-a}2BU1oQ3xsy`E^gOz|18%y*07MH>suY<;yC=cIYLyj_aV9hh za`3NI2eOYyo>-)V-8pQ8cUB{~-_77f;Vcl2H4E~J3|oJskWqyw4{(^UFTM?I{5MPjcMlvte|Tly5V$LRQcB$ZtrcaHcFd<-Bfl z;(}c+z1cX6Eyu2*?`*CQv&@r>hNiJ{?ljSZ@R!%^R%ar)&w&=U`xB{DHCySdfqji* zUNk)uiERj(1~IFd0l_sQ)C0(rq%G!}oJQ3vXI{I4e4I_;l~4ee?#JUDieh4qxrD6f zZM=o@s2j@}?-u&c0@EAa{`y>otlOj$YvUrfY75hXx#sOZAz!0iHm3bbE*RF2>?Cd2W) zWN!{XzGKA}=e$MBU5~;as!L9Ac8MrZ>p^5x8BzG!xx7-fvcUwJ?r1Otm z3XDp3K79A&WFXgl-HmWfQ)|ZmIxjhG^5jv}OXqOAcTZ^*0O>ILK67-KG%1!mX?v=L z)VaD|UdhV_2~ zrTKiEcEDjGj0TV$;98NCuUwuJbPOSHk7YhiH|(;ZkQ4YZR1SE27=4PHrAn)bi?|sw z1*5=5mev?Y1aWGr<&4)|nICY5qIiEb_>_OQqk%6)LCt~FIS;I=qU7{g|Ee{DQKM4W z?n6|KSSh|J;XV+aw+vL4sU}_X3Ot)|%*ZbQTniKMC+Mu*ev{Qu*jyvdRg$3)?vqxF zw$^LZ5k6!(pjyxcsWSILDBvcWKABoMZDeF%%ANg`r5kFN&UQb6A2T_PeG)$fY{2pu2xzu2?>^FSj zxa5{`!7Rl^$067T!0n}}6<)R?+9uzNZbN@-bXzCni$R%uz}ohhyCejB=*-dT)YcFd zKszLW#Pv+LA=wv%T~lK|yZD%Q@e!6Afg1HnA$g>A5zHzyfVRPRJ5TW2CSTz}^K3Q>-AFYclH-OIp zSw^oQPEggN7^9mj*J=@M%C-IC0bs2M#4GA$FP56y3Z5NoGTC9t43^RL*hbURtFUXv zv=^mA2yon&b9WW27o`fe>NK$;>+tE|-OMGylkBERqa-xm4wHTAI^WY zS=YM#Y{A9RBo_hSTd9|r@p45SX~AZ`NV2>2N{<7)wfG6FT3K1St{%vkI7#z#YZIer zEfmA>=$V{tLdZx6H`$2;R%*Nq(}q&o&I4xrwIQIhY>3I1LBMvl=FF2?W}9V`^X=k* zxbj}7PLa=`W!n@s!VWK2|Pwy}qsYH)e%T2#gA@bECz*>l## zW<_reXm$950UKP`o`>*T6bmqCzuOE^LKCHH`{kL-7{uXE)j~<_4Ap?Ov~mqLLk#5h z#i^_=Fz!Qb%^u}q1zr$+hwsq!t+J^C6A3UWHoL4yHTcSD0zLzqQwjDCrynGRVmE)? z17|vhXnw;_q7!|0i>_Dwn((u+^)Drfva&)VQjbhEty*KcnJ8uBPJn|3lKVWqTI3Mu z>XxBQCX-65?aK!OjuEwcpBN=uJkRmoDlM5MnElBRTzhWV( zJ0y>>0)_7B6CH0y%oHw)3*j!mDaCU%Up0N@T5!QYZsByi--H5E{kggIjk7h8M_0TO z9FtHdAHw(LNlK(8?O`o81K`KEimGNEyAQMP%AVuiQhvl#hH`{3GL%Z`hMWd&ob^WO z(uH7B&|smvq~}yf=8>}VuajKB^}w8$QD2s2P;JLoUN*gJcRh@fyEbMQEFYot)z%A3 zp(ZC1!B&HpaOrmJWId{x6zq$E`F4qsGLexhdHJ&rNoQ-*7+43t55h@Y={w@o&_F?= zOyWYLkQKSRq)Hoz1n!;9DJ?}NUcf5DC|^@c(;-HhfkvreVxcM9>*WtMxV$SSd3?JR lbRWfTKR0?}_3Hzc@iLU!27>JBBO2~{sX6f^-}-< diff --git a/lam/lib/font/verai.ctg.z b/lam/lib/font/verai.ctg.z deleted file mode 100644 index fb308d299ea58cb4fcc47abd18cc8d7d19d2567c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 710 zcmb=J^Y#M!mlw&h$3K48ofP=ZqifR4z3xtzoXk?!uW@l(@g`8yBxQ2sl(j+M!cJV% zQ&rYBN!_jfznK5|z3PAO{?B`T?{ekdb3f<4|88^s`_I32=hq**Bt3gYXLa!8FVEC+ zH>u@!-MbV$d(+BUyE12OdpT>LapakbkFK zyQP1t*XnIi^7&t{Wt_d1_4Zok-D}x@?Jla{UchyGMepq;zPHz$J^t;};kkD+Wv?8J zy%+d*tA1%k{Ocq8?!P?zYW3f3%+`zcfA8me{bJvxt$#PF|Ms(gG5_!C`tq#jCCT=$ z?`+FBz3*b!-8;*FRhpMZ?|(5Z@9n~E@6P4D?>m=0d)|xLe>d&kwL78-dg{+ddvROldIo- z$~oWrV*dNq#&<_A-ur8BYx?5<&;0#TDUa^`GdgkPXRN`gugj~K{oYl7foFZm%Z_)A zay7l_`^??q8y5a7t(Pl#R{nRN{g>r+mu(;02{;#AlJJ$c?+ao;0sr6Yy=iB@>-u-e z>$dCiUmvfNkK=zaYoE=A@@pD?_Y5wb5{8 diff --git a/lam/lib/font/verai.php b/lam/lib/font/verai.php deleted file mode 100644 index 3544b112..00000000 --- a/lam/lib/font/verai.php +++ /dev/null @@ -1,59 +0,0 @@ -928,'Descent'=>-236,'CapHeight'=>928,'Flags'=>96,'FontBBox'=>'[-262 -236 1259 928]','ItalicAngle'=>-11,'StemV'=>70,'MissingWidth'=>600); -$up=-104; -$ut=70; -$cw=array( - 270=>600, 32=>318, 33=>401, 34=>460, 35=>838, 36=>636, 37=>950, 38=>780, 39=>275, 40=>390, 41=>390, 42=>500, 43=>838, 44=>318, 45=>361, 46=>318, - 47=>337, 48=>636, 49=>636, 50=>636, 51=>636, 52=>636, 53=>636, 54=>636, 55=>636, 56=>636, 57=>636, 58=>337, 59=>337, 60=>838, 61=>838, 62=>838, - 63=>531, 64=>1000, 65=>684, 66=>686, 67=>698, 68=>770, 69=>632, 70=>575, 71=>775, 72=>752, 73=>295, 74=>295, 75=>656, 76=>557, 77=>863, 78=>748, - 79=>787, 80=>603, 81=>787, 82=>695, 83=>635, 84=>611, 85=>732, 86=>684, 87=>989, 88=>685, 89=>611, 90=>685, 91=>390, 92=>337, 93=>390, 94=>838, - 95=>500, 96=>500, 97=>613, 98=>635, 99=>550, 100=>635, 101=>615, 102=>352, 103=>635, 104=>634, 105=>278, 106=>278, 107=>579, 108=>278, 109=>974, 110=>634, - 111=>612, 112=>635, 113=>635, 114=>411, 115=>521, 116=>392, 117=>634, 118=>592, 119=>818, 120=>592, 121=>592, 122=>525, 123=>636, 124=>337, 125=>636, 126=>838, - 8364=>636, 8218=>318, 402=>636, 8222=>518, 8230=>1000, 8224=>500, 8225=>500, 710=>500, 8240=>1350, 352=>635, 8249=>400, 338=>1070, 381=>685, 8216=>318, 8217=>318, 8220=>518, - 8221=>518, 8226=>590, 8211=>500, 8212=>1000, 732=>500, 8482=>1000, 353=>521, 8250=>400, 339=>1028, 382=>525, 376=>611, 160=>636, 161=>401, 162=>636, 163=>636, 164=>636, - 165=>636, 166=>337, 167=>500, 168=>500, 169=>1000, 170=>471, 171=>617, 172=>838, 173=>361, 174=>1000, 175=>500, 176=>500, 177=>838, 178=>401, 179=>401, 180=>500, - 181=>636, 182=>636, 183=>318, 184=>500, 185=>401, 186=>471, 187=>617, 188=>969, 189=>969, 190=>969, 191=>531, 192=>684, 193=>684, 194=>684, 195=>684, 196=>684, - 197=>684, 198=>974, 199=>698, 200=>632, 201=>632, 202=>632, 203=>632, 204=>295, 205=>295, 206=>295, 207=>295, 208=>775, 209=>748, 210=>787, 211=>787, 212=>787, - 213=>787, 214=>787, 215=>838, 216=>787, 217=>732, 218=>732, 219=>732, 220=>732, 221=>611, 222=>608, 223=>630, 224=>613, 225=>613, 226=>613, 227=>613, 228=>613, - 229=>613, 230=>995, 231=>550, 232=>615, 233=>615, 234=>615, 235=>615, 236=>278, 237=>278, 238=>278, 239=>278, 240=>612, 241=>634, 242=>612, 243=>612, 244=>612, - 245=>612, 246=>612, 247=>838, 248=>612, 249=>634, 250=>634, 251=>634, 252=>634, 253=>592, 254=>635, 255=>592, 8800=>838, 8734=>833, 8804=>838, 8805=>838, 8706=>517, - 8721=>674, 8719=>757, 960=>589, 8747=>521, 937=>764, 8730=>637, 8776=>838, 8710=>669, 9674=>494, 8725=>167, 64257=>646, 64258=>646, 305=>278, 728=>500, 729=>500, 730=>500, - 733=>500, 731=>500, 711=>500, 321=>562, 322=>287, 8722=>838, 286=>775, 287=>635, 304=>295, 350=>635, 351=>521, 262=>698, 263=>550, 268=>698, 269=>550, 273=>635, - 8729=>318); -$enc=''; -$diff=''; -$file='verai.z'; -$ctg='verai.ctg.z'; -$originalsize=63684; -?> diff --git a/lam/lib/font/verai.z b/lam/lib/font/verai.z deleted file mode 100644 index 323d9c484246e43e961b9d496406a2c506ab2114..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 38503 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 bu`A>gpIVt(lX<6tcPB_~`~kYqf$0ANsQrOi diff --git a/lam/lib/fpdf.php b/lam/lib/fpdf.php deleted file mode 100644 index 0f846bc5..00000000 --- a/lam/lib/fpdf.php +++ /dev/null @@ -1,1659 +0,0 @@ -_dochecks(); - //Initialization of properties - $this->page=0; - $this->n=2; - $this->buffer=''; - $this->pages=array(); - $this->OrientationChanges=array(); - $this->state=0; - $this->fonts=array(); - $this->FontFiles=array(); - $this->diffs=array(); - $this->images=array(); - $this->links=array(); - $this->InFooter=false; - $this->lasth=0; - $this->FontFamily=''; - $this->FontStyle=''; - $this->FontSizePt=12; - $this->underline=false; - $this->DrawColor='0 G'; - $this->FillColor='0 g'; - $this->TextColor='0 g'; - $this->ColorFlag=false; - $this->ws=0; - //Standard fonts - $this->CoreFonts=array('courier'=>'Courier','courierB'=>'Courier-Bold','courierI'=>'Courier-Oblique','courierBI'=>'Courier-BoldOblique', - 'helvetica'=>'Helvetica','helveticaB'=>'Helvetica-Bold','helveticaI'=>'Helvetica-Oblique','helveticaBI'=>'Helvetica-BoldOblique', - 'times'=>'Times-Roman','timesB'=>'Times-Bold','timesI'=>'Times-Italic','timesBI'=>'Times-BoldItalic', - 'symbol'=>'Symbol','zapfdingbats'=>'ZapfDingbats'); - //Scale factor - if($unit=='pt') - $this->k=1; - elseif($unit=='mm') - $this->k=72/25.4; - elseif($unit=='cm') - $this->k=72/2.54; - elseif($unit=='in') - $this->k=72; - else - $this->Error('Incorrect unit: '.$unit); - //Page format - if(is_string($format)) - { - $format=strtolower($format); - if($format=='a3') - $format=array(841.89,1190.55); - elseif($format=='a4') - $format=array(595.28,841.89); - elseif($format=='a5') - $format=array(420.94,595.28); - elseif($format=='letter') - $format=array(612,792); - elseif($format=='legal') - $format=array(612,1008); - else - $this->Error('Unknown page format: '.$format); - $this->fwPt=$format[0]; - $this->fhPt=$format[1]; - } - else - { - $this->fwPt=$format[0]*$this->k; - $this->fhPt=$format[1]*$this->k; - } - $this->fw=$this->fwPt/$this->k; - $this->fh=$this->fhPt/$this->k; - //Page orientation - $orientation=strtolower($orientation); - if($orientation=='p' || $orientation=='portrait') - { - $this->DefOrientation='P'; - $this->wPt=$this->fwPt; - $this->hPt=$this->fhPt; - } - elseif($orientation=='l' || $orientation=='landscape') - { - $this->DefOrientation='L'; - $this->wPt=$this->fhPt; - $this->hPt=$this->fwPt; - } - else - $this->Error('Incorrect orientation: '.$orientation); - $this->CurOrientation=$this->DefOrientation; - $this->w=$this->wPt/$this->k; - $this->h=$this->hPt/$this->k; - //Page margins (1 cm) - $margin=28.35/$this->k; - $this->SetMargins($margin,$margin); - //Interior cell margin (1 mm) - $this->cMargin=$margin/10; - //Line width (0.2 mm) - $this->LineWidth=.567/$this->k; - //Automatic page break - $this->SetAutoPageBreak(true,2*$margin); - //Full width display mode - $this->SetDisplayMode('fullwidth'); - //Enable compression - $this->SetCompression(true); - //Set default PDF version number - $this->PDFVersion='1.3'; -} - -function SetMargins($left,$top,$right=-1) -{ - //Set left, top and right margins - $this->lMargin=$left; - $this->tMargin=$top; - if($right==-1) - $right=$left; - $this->rMargin=$right; -} - -function SetLeftMargin($margin) -{ - //Set left margin - $this->lMargin=$margin; - if($this->page>0 && $this->x<$margin) - $this->x=$margin; -} - -function SetTopMargin($margin) -{ - //Set top margin - $this->tMargin=$margin; -} - -function SetRightMargin($margin) -{ - //Set right margin - $this->rMargin=$margin; -} - -function SetAutoPageBreak($auto,$margin=0) -{ - //Set auto page break mode and triggering margin - $this->AutoPageBreak=$auto; - $this->bMargin=$margin; - $this->PageBreakTrigger=$this->h-$margin; -} - -function SetDisplayMode($zoom,$layout='continuous') -{ - //Set display mode in viewer - if($zoom=='fullpage' || $zoom=='fullwidth' || $zoom=='real' || $zoom=='default' || !is_string($zoom)) - $this->ZoomMode=$zoom; - else - $this->Error('Incorrect zoom display mode: '.$zoom); - if($layout=='single' || $layout=='continuous' || $layout=='two' || $layout=='default') - $this->LayoutMode=$layout; - else - $this->Error('Incorrect layout display mode: '.$layout); -} - -function SetCompression($compress) -{ - //Set page compression - if(function_exists('gzcompress')) - $this->compress=$compress; - else - $this->compress=false; -} - -function SetTitle($title) -{ - //Title of document - $this->title=$title; -} - -function SetSubject($subject) -{ - //Subject of document - $this->subject=$subject; -} - -function SetAuthor($author) -{ - //Author of document - $this->author=$author; -} - -function SetKeywords($keywords) -{ - //Keywords of document - $this->keywords=$keywords; -} - -function SetCreator($creator) -{ - //Creator of document - $this->creator=$creator; -} - -function AliasNbPages($alias='{nb}') -{ - //Define an alias for total number of pages - $this->AliasNbPages=$alias; -} - -function Error($msg) -{ - //Fatal error - die('FPDF error: '.$msg); -} - -function Open() -{ - //Begin document - $this->state=1; -} - -function Close() -{ - //Terminate document - if($this->state==3) - return; - if($this->page==0) - $this->AddPage(); - //Page footer - $this->InFooter=true; - $this->Footer(); - $this->InFooter=false; - //Close page - $this->_endpage(); - //Close document - $this->_enddoc(); -} - -function AddPage($orientation='') -{ - //Start a new page - if($this->state==0) - $this->Open(); - $family=$this->FontFamily; - $style=$this->FontStyle.($this->underline ? 'U' : ''); - $size=$this->FontSizePt; - $lw=$this->LineWidth; - $dc=$this->DrawColor; - $fc=$this->FillColor; - $tc=$this->TextColor; - $cf=$this->ColorFlag; - if($this->page>0) - { - //Page footer - $this->InFooter=true; - $this->Footer(); - $this->InFooter=false; - //Close page - $this->_endpage(); - } - //Start new page - $this->_beginpage($orientation); - //Set line cap style to square - $this->_out('2 J'); - //Set line width - $this->LineWidth=$lw; - $this->_out(sprintf('%.2f w',$lw*$this->k)); - //Set font - if($family) - $this->SetFont($family,$style,$size); - //Set colors - $this->DrawColor=$dc; - if($dc!='0 G') - $this->_out($dc); - $this->FillColor=$fc; - if($fc!='0 g') - $this->_out($fc); - $this->TextColor=$tc; - $this->ColorFlag=$cf; - //Page header - $this->Header(); - //Restore line width - if($this->LineWidth!=$lw) - { - $this->LineWidth=$lw; - $this->_out(sprintf('%.2f w',$lw*$this->k)); - } - //Restore font - if($family) - $this->SetFont($family,$style,$size); - //Restore colors - if($this->DrawColor!=$dc) - { - $this->DrawColor=$dc; - $this->_out($dc); - } - if($this->FillColor!=$fc) - { - $this->FillColor=$fc; - $this->_out($fc); - } - $this->TextColor=$tc; - $this->ColorFlag=$cf; -} - -function Header() -{ - //To be implemented in your own inherited class -} - -function Footer() -{ - //To be implemented in your own inherited class -} - -function PageNo() -{ - //Get current page number - return $this->page; -} - -function SetDrawColor($r,$g=-1,$b=-1) -{ - //Set color for all stroking operations - if(($r==0 && $g==0 && $b==0) || $g==-1) - $this->DrawColor=sprintf('%.3f G',$r/255); - else - $this->DrawColor=sprintf('%.3f %.3f %.3f RG',$r/255,$g/255,$b/255); - if($this->page>0) - $this->_out($this->DrawColor); -} - -function SetFillColor($r,$g=-1,$b=-1) -{ - //Set color for all filling operations - if(($r==0 && $g==0 && $b==0) || $g==-1) - $this->FillColor=sprintf('%.3f g',$r/255); - else - $this->FillColor=sprintf('%.3f %.3f %.3f rg',$r/255,$g/255,$b/255); - $this->ColorFlag=($this->FillColor!=$this->TextColor); - if($this->page>0) - $this->_out($this->FillColor); -} - -function SetTextColor($r,$g=-1,$b=-1) -{ - //Set color for text - if(($r==0 && $g==0 && $b==0) || $g==-1) - $this->TextColor=sprintf('%.3f g',$r/255); - else - $this->TextColor=sprintf('%.3f %.3f %.3f rg',$r/255,$g/255,$b/255); - $this->ColorFlag=($this->FillColor!=$this->TextColor); -} - -function GetStringWidth($s) -{ - //Get width of a string in the current font - $s=(string)$s; - $cw=&$this->CurrentFont['cw']; - $w=0; - $l=strlen($s); - for($i=0;$i<$l;$i++) - $w+=$cw[$s{$i}]; - return $w*$this->FontSize/1000; -} - -function SetLineWidth($width) -{ - //Set line width - $this->LineWidth=$width; - if($this->page>0) - $this->_out(sprintf('%.2f w',$width*$this->k)); -} - -function Line($x1,$y1,$x2,$y2) -{ - //Draw a line - $this->_out(sprintf('%.2f %.2f m %.2f %.2f l S',$x1*$this->k,($this->h-$y1)*$this->k,$x2*$this->k,($this->h-$y2)*$this->k)); -} - -function Rect($x,$y,$w,$h,$style='') -{ - //Draw a rectangle - if($style=='F') - $op='f'; - elseif($style=='FD' || $style=='DF') - $op='B'; - else - $op='S'; - $this->_out(sprintf('%.2f %.2f %.2f %.2f re %s',$x*$this->k,($this->h-$y)*$this->k,$w*$this->k,-$h*$this->k,$op)); -} - -function AddFont($family,$style='',$file='') -{ - //Add a TrueType or Type1 font - $family=strtolower($family); - if($file=='') - $file=str_replace(' ','',$family).strtolower($style).'.php'; - if($family=='arial') - $family='helvetica'; - $style=strtoupper($style); - if($style=='IB') - $style='BI'; - $fontkey=$family.$style; - if(isset($this->fonts[$fontkey])) - $this->Error('Font already added: '.$family.' '.$style); - include($this->_getfontpath().$file); - if(!isset($name)) - $this->Error('Could not include font definition file'); - $i=count($this->fonts)+1; - $this->fonts[$fontkey]=array('i'=>$i,'type'=>$type,'name'=>$name,'desc'=>$desc,'up'=>$up,'ut'=>$ut,'cw'=>$cw,'enc'=>$enc,'file'=>$file); - if($diff) - { - //Search existing encodings - $d=0; - $nb=count($this->diffs); - for($i=1;$i<=$nb;$i++) - { - if($this->diffs[$i]==$diff) - { - $d=$i; - break; - } - } - if($d==0) - { - $d=$nb+1; - $this->diffs[$d]=$diff; - } - $this->fonts[$fontkey]['diff']=$d; - } - if($file) - { - if($type=='TrueType') - $this->FontFiles[$file]=array('length1'=>$originalsize); - else - $this->FontFiles[$file]=array('length1'=>$size1,'length2'=>$size2); - } -} - -function SetFont($family,$style='',$size=0) -{ - //Select a font; size given in points - global $fpdf_charwidths; - - $family=strtolower($family); - if($family=='') - $family=$this->FontFamily; - if($family=='arial') - $family='helvetica'; - elseif($family=='symbol' || $family=='zapfdingbats') - $style=''; - $style=strtoupper($style); - if(strpos($style,'U')!==false) - { - $this->underline=true; - $style=str_replace('U','',$style); - } - else - $this->underline=false; - if($style=='IB') - $style='BI'; - if($size==0) - $size=$this->FontSizePt; - //Test if font is already selected - if($this->FontFamily==$family && $this->FontStyle==$style && $this->FontSizePt==$size) - return; - //Test if used for the first time - $fontkey=$family.$style; - if(!isset($this->fonts[$fontkey])) - { - //Check if one of the standard fonts - if(isset($this->CoreFonts[$fontkey])) - { - if(!isset($fpdf_charwidths[$fontkey])) - { - //Load metric file - $file=$family; - if($family=='times' || $family=='helvetica') - $file.=strtolower($style); - include($this->_getfontpath().$file.'.php'); - if(!isset($fpdf_charwidths[$fontkey])) - $this->Error('Could not include font metric file'); - } - $i=count($this->fonts)+1; - $this->fonts[$fontkey]=array('i'=>$i,'type'=>'core','name'=>$this->CoreFonts[$fontkey],'up'=>-100,'ut'=>50,'cw'=>$fpdf_charwidths[$fontkey]); - } - else - $this->Error('Undefined font: '.$family.' '.$style); - } - //Select it - $this->FontFamily=$family; - $this->FontStyle=$style; - $this->FontSizePt=$size; - $this->FontSize=$size/$this->k; - $this->CurrentFont=&$this->fonts[$fontkey]; - if($this->page>0) - $this->_out(sprintf('BT /F%d %.2f Tf ET',$this->CurrentFont['i'],$this->FontSizePt)); -} - -function SetFontSize($size) -{ - //Set font size in points - if($this->FontSizePt==$size) - return; - $this->FontSizePt=$size; - $this->FontSize=$size/$this->k; - if($this->page>0) - $this->_out(sprintf('BT /F%d %.2f Tf ET',$this->CurrentFont['i'],$this->FontSizePt)); -} - -function AddLink() -{ - //Create a new internal link - $n=count($this->links)+1; - $this->links[$n]=array(0,0); - return $n; -} - -function SetLink($link,$y=0,$page=-1) -{ - //Set destination of internal link - if($y==-1) - $y=$this->y; - if($page==-1) - $page=$this->page; - $this->links[$link]=array($page,$y); -} - -function Link($x,$y,$w,$h,$link) -{ - //Put a link on the page - $this->PageLinks[$this->page][]=array($x*$this->k,$this->hPt-$y*$this->k,$w*$this->k,$h*$this->k,$link); -} - -function Text($x,$y,$txt) -{ - //Output a string - $s=sprintf('BT %.2f %.2f Td (%s) Tj ET',$x*$this->k,($this->h-$y)*$this->k,$this->_escape($txt)); - if($this->underline && $txt!='') - $s.=' '.$this->_dounderline($x,$y,$txt); - if($this->ColorFlag) - $s='q '.$this->TextColor.' '.$s.' Q'; - $this->_out($s); -} - -function AcceptPageBreak() -{ - //Accept automatic page break or not - return $this->AutoPageBreak; -} - -function Cell($w,$h=0,$txt='',$border=0,$ln=0,$align='',$fill=0,$link='') -{ - //Output a cell - $k=$this->k; - if($this->y+$h>$this->PageBreakTrigger && !$this->InFooter && $this->AcceptPageBreak()) - { - //Automatic page break - $x=$this->x; - $ws=$this->ws; - if($ws>0) - { - $this->ws=0; - $this->_out('0 Tw'); - } - $this->AddPage($this->CurOrientation); - $this->x=$x; - if($ws>0) - { - $this->ws=$ws; - $this->_out(sprintf('%.3f Tw',$ws*$k)); - } - } - if($w==0) - $w=$this->w-$this->rMargin-$this->x; - $s=''; - if($fill==1 || $border==1) - { - if($fill==1) - $op=($border==1) ? 'B' : 'f'; - else - $op='S'; - $s=sprintf('%.2f %.2f %.2f %.2f re %s ',$this->x*$k,($this->h-$this->y)*$k,$w*$k,-$h*$k,$op); - } - if(is_string($border)) - { - $x=$this->x; - $y=$this->y; - if(strpos($border,'L')!==false) - $s.=sprintf('%.2f %.2f m %.2f %.2f l S ',$x*$k,($this->h-$y)*$k,$x*$k,($this->h-($y+$h))*$k); - if(strpos($border,'T')!==false) - $s.=sprintf('%.2f %.2f m %.2f %.2f l S ',$x*$k,($this->h-$y)*$k,($x+$w)*$k,($this->h-$y)*$k); - if(strpos($border,'R')!==false) - $s.=sprintf('%.2f %.2f m %.2f %.2f l S ',($x+$w)*$k,($this->h-$y)*$k,($x+$w)*$k,($this->h-($y+$h))*$k); - if(strpos($border,'B')!==false) - $s.=sprintf('%.2f %.2f m %.2f %.2f l S ',$x*$k,($this->h-($y+$h))*$k,($x+$w)*$k,($this->h-($y+$h))*$k); - } - if($txt!=='') - { - if($align=='R') - $dx=$w-$this->cMargin-$this->GetStringWidth($txt); - elseif($align=='C') - $dx=($w-$this->GetStringWidth($txt))/2; - else - $dx=$this->cMargin; - if($this->ColorFlag) - $s.='q '.$this->TextColor.' '; - $txt2=str_replace(')','\\)',str_replace('(','\\(',str_replace('\\','\\\\',$txt))); - $s.=sprintf('BT %.2f %.2f Td (%s) Tj ET',($this->x+$dx)*$k,($this->h-($this->y+.5*$h+.3*$this->FontSize))*$k,$txt2); - if($this->underline) - $s.=' '.$this->_dounderline($this->x+$dx,$this->y+.5*$h+.3*$this->FontSize,$txt); - if($this->ColorFlag) - $s.=' Q'; - if($link) - $this->Link($this->x+$dx,$this->y+.5*$h-.5*$this->FontSize,$this->GetStringWidth($txt),$this->FontSize,$link); - } - if($s) - $this->_out($s); - $this->lasth=$h; - if($ln>0) - { - //Go to next line - $this->y+=$h; - if($ln==1) - $this->x=$this->lMargin; - } - else - $this->x+=$w; -} - -function MultiCell($w,$h,$txt,$border=0,$align='J',$fill=0) -{ - //Output text with automatic or explicit line breaks - $cw=&$this->CurrentFont['cw']; - if($w==0) - $w=$this->w-$this->rMargin-$this->x; - $wmax=($w-2*$this->cMargin)*1000/$this->FontSize; - $s=str_replace("\r",'',$txt); - $nb=strlen($s); - if($nb>0 && $s[$nb-1]=="\n") - $nb--; - $b=0; - if($border) - { - if($border==1) - { - $border='LTRB'; - $b='LRT'; - $b2='LR'; - } - else - { - $b2=''; - if(strpos($border,'L')!==false) - $b2.='L'; - if(strpos($border,'R')!==false) - $b2.='R'; - $b=(strpos($border,'T')!==false) ? $b2.'T' : $b2; - } - } - $sep=-1; - $i=0; - $j=0; - $l=0; - $ns=0; - $nl=1; - while($i<$nb) - { - //Get next character - $c=$s{$i}; - if($c=="\n") - { - //Explicit line break - if($this->ws>0) - { - $this->ws=0; - $this->_out('0 Tw'); - } - $this->Cell($w,$h,substr($s,$j,$i-$j),$b,2,$align,$fill); - $i++; - $sep=-1; - $j=$i; - $l=0; - $ns=0; - $nl++; - if($border && $nl==2) - $b=$b2; - continue; - } - if($c==' ') - { - $sep=$i; - $ls=$l; - $ns++; - } - $l+=$cw[$c]; - if($l>$wmax) - { - //Automatic line break - if($sep==-1) - { - if($i==$j) - $i++; - if($this->ws>0) - { - $this->ws=0; - $this->_out('0 Tw'); - } - $this->Cell($w,$h,substr($s,$j,$i-$j),$b,2,$align,$fill); - } - else - { - if($align=='J') - { - $this->ws=($ns>1) ? ($wmax-$ls)/1000*$this->FontSize/($ns-1) : 0; - $this->_out(sprintf('%.3f Tw',$this->ws*$this->k)); - } - $this->Cell($w,$h,substr($s,$j,$sep-$j),$b,2,$align,$fill); - $i=$sep+1; - } - $sep=-1; - $j=$i; - $l=0; - $ns=0; - $nl++; - if($border && $nl==2) - $b=$b2; - } - else - $i++; - } - //Last chunk - if($this->ws>0) - { - $this->ws=0; - $this->_out('0 Tw'); - } - if($border && strpos($border,'B')!==false) - $b.='B'; - $this->Cell($w,$h,substr($s,$j,$i-$j),$b,2,$align,$fill); - $this->x=$this->lMargin; -} - -function Write($h,$txt,$link='') -{ - //Output text in flowing mode - $cw=&$this->CurrentFont['cw']; - $w=$this->w-$this->rMargin-$this->x; - $wmax=($w-2*$this->cMargin)*1000/$this->FontSize; - $s=str_replace("\r",'',$txt); - $nb=strlen($s); - $sep=-1; - $i=0; - $j=0; - $l=0; - $nl=1; - while($i<$nb) - { - //Get next character - $c=$s{$i}; - if($c=="\n") - { - //Explicit line break - $this->Cell($w,$h,substr($s,$j,$i-$j),0,2,'',0,$link); - $i++; - $sep=-1; - $j=$i; - $l=0; - if($nl==1) - { - $this->x=$this->lMargin; - $w=$this->w-$this->rMargin-$this->x; - $wmax=($w-2*$this->cMargin)*1000/$this->FontSize; - } - $nl++; - continue; - } - if($c==' ') - $sep=$i; - $l+=$cw[$c]; - if($l>$wmax) - { - //Automatic line break - if($sep==-1) - { - if($this->x>$this->lMargin) - { - //Move to next line - $this->x=$this->lMargin; - $this->y+=$h; - $w=$this->w-$this->rMargin-$this->x; - $wmax=($w-2*$this->cMargin)*1000/$this->FontSize; - $i++; - $nl++; - continue; - } - if($i==$j) - $i++; - $this->Cell($w,$h,substr($s,$j,$i-$j),0,2,'',0,$link); - } - else - { - $this->Cell($w,$h,substr($s,$j,$sep-$j),0,2,'',0,$link); - $i=$sep+1; - } - $sep=-1; - $j=$i; - $l=0; - if($nl==1) - { - $this->x=$this->lMargin; - $w=$this->w-$this->rMargin-$this->x; - $wmax=($w-2*$this->cMargin)*1000/$this->FontSize; - } - $nl++; - } - else - $i++; - } - //Last chunk - if($i!=$j) - $this->Cell($l/1000*$this->FontSize,$h,substr($s,$j),0,0,'',0,$link); -} - -function Image($file,$x,$y,$w=0,$h=0,$type='',$link='') -{ - //Put an image on the page - if(!isset($this->images[$file])) - { - //First use of image, get info - if($type=='') - { - $pos=strrpos($file,'.'); - if(!$pos) - $this->Error('Image file has no extension and no type was specified: '.$file); - $type=substr($file,$pos+1); - } - $type=strtolower($type); - $mqr=get_magic_quotes_runtime(); - set_magic_quotes_runtime(0); - if($type=='jpg' || $type=='jpeg') - $info=$this->_parsejpg($file); - elseif($type=='png') - $info=$this->_parsepng($file); - else - { - //Allow for additional formats - $mtd='_parse'.$type; - if(!method_exists($this,$mtd)) - $this->Error('Unsupported image type: '.$type); - $info=$this->$mtd($file); - } - set_magic_quotes_runtime($mqr); - $info['i']=count($this->images)+1; - $this->images[$file]=$info; - } - else - $info=$this->images[$file]; - //Automatic width and height calculation if needed - if($w==0 && $h==0) - { - //Put image at 72 dpi - $w=$info['w']/$this->k; - $h=$info['h']/$this->k; - } - if($w==0) - $w=$h*$info['w']/$info['h']; - if($h==0) - $h=$w*$info['h']/$info['w']; - $this->_out(sprintf('q %.2f 0 0 %.2f %.2f %.2f cm /I%d Do Q',$w*$this->k,$h*$this->k,$x*$this->k,($this->h-($y+$h))*$this->k,$info['i'])); - if($link) - $this->Link($x,$y,$w,$h,$link); -} - -function Ln($h='') -{ - //Line feed; default value is last cell height - $this->x=$this->lMargin; - if(is_string($h)) - $this->y+=$this->lasth; - else - $this->y+=$h; -} - -function GetX() -{ - //Get x position - return $this->x; -} - -function SetX($x) -{ - //Set x position - if($x>=0) - $this->x=$x; - else - $this->x=$this->w+$x; -} - -function GetY() -{ - //Get y position - return $this->y; -} - -function SetY($y) -{ - //Set y position and reset x - $this->x=$this->lMargin; - if($y>=0) - $this->y=$y; - else - $this->y=$this->h+$y; -} - -function SetXY($x,$y) -{ - //Set x and y positions - $this->SetY($y); - $this->SetX($x); -} - -function Output($name='',$dest='') -{ - //Output PDF to some destination - //Finish document if necessary - if($this->state<3) - $this->Close(); - //Normalize parameters - if(is_bool($dest)) - $dest=$dest ? 'D' : 'F'; - $dest=strtoupper($dest); - if($dest=='') - { - if($name=='') - { - $name='doc.pdf'; - $dest='I'; - } - else - $dest='F'; - } - switch($dest) - { - case 'I': - //Send to standard output - if(ob_get_contents()) - $this->Error('Some data has already been output, can\'t send PDF file'); - if(php_sapi_name()!='cli') - { - //We send to a browser - header('Content-Type: application/pdf'); - if(headers_sent()) - $this->Error('Some data has already been output to browser, can\'t send PDF file'); - header('Content-Length: '.strlen($this->buffer)); - header('Content-disposition: inline; filename="'.$name.'"'); - } - echo $this->buffer; - break; - case 'D': - //Download file - if(ob_get_contents()) - $this->Error('Some data has already been output, can\'t send PDF file'); - if(isset($_SERVER['HTTP_USER_AGENT']) && strpos($_SERVER['HTTP_USER_AGENT'],'MSIE')) - header('Content-Type: application/force-download'); - else - header('Content-Type: application/octet-stream'); - if(headers_sent()) - $this->Error('Some data has already been output to browser, can\'t send PDF file'); - header('Content-Length: '.strlen($this->buffer)); - header('Content-disposition: attachment; filename="'.$name.'"'); - echo $this->buffer; - break; - case 'F': - //Save to local file - $f=fopen($name,'wb'); - if(!$f) - $this->Error('Unable to create output file: '.$name); - fwrite($f,$this->buffer,strlen($this->buffer)); - fclose($f); - break; - case 'S': - //Return as a string - return $this->buffer; - default: - $this->Error('Incorrect output destination: '.$dest); - } - return ''; -} - -/******************************************************************************* -* * -* Protected methods * -* * -*******************************************************************************/ -function _dochecks() -{ - //Check for locale-related bug - if(1.1==1) - $this->Error('Don\'t alter the locale before including class file'); - //Check for decimal separator - if(sprintf('%.1f',1.0)!='1.0') - setlocale(LC_NUMERIC,'C'); -} - -function _getfontpath() -{ - if(!defined('FPDF_FONTPATH') && is_dir(dirname(__FILE__).'/font')) - define('FPDF_FONTPATH',dirname(__FILE__).'/font/'); - return defined('FPDF_FONTPATH') ? FPDF_FONTPATH : ''; -} - -function _putpages() -{ - $nb=$this->page; - if(!empty($this->AliasNbPages)) - { - //Replace number of pages - for($n=1;$n<=$nb;$n++) - $this->pages[$n]=str_replace($this->AliasNbPages,$nb,$this->pages[$n]); - } - if($this->DefOrientation=='P') - { - $wPt=$this->fwPt; - $hPt=$this->fhPt; - } - else - { - $wPt=$this->fhPt; - $hPt=$this->fwPt; - } - $filter=($this->compress) ? '/Filter /FlateDecode ' : ''; - for($n=1;$n<=$nb;$n++) - { - //Page - $this->_newobj(); - $this->_out('<_out('/Parent 1 0 R'); - if(isset($this->OrientationChanges[$n])) - $this->_out(sprintf('/MediaBox [0 0 %.2f %.2f]',$hPt,$wPt)); - $this->_out('/Resources 2 0 R'); - if(isset($this->PageLinks[$n])) - { - //Links - $annots='/Annots ['; - foreach($this->PageLinks[$n] as $pl) - { - $rect=sprintf('%.2f %.2f %.2f %.2f',$pl[0],$pl[1],$pl[0]+$pl[2],$pl[1]-$pl[3]); - $annots.='<_textstring($pl[4]).'>>>>'; - else - { - $l=$this->links[$pl[4]]; - $h=isset($this->OrientationChanges[$l[0]]) ? $wPt : $hPt; - $annots.=sprintf('/Dest [%d 0 R /XYZ 0 %.2f null]>>',1+2*$l[0],$h-$l[1]*$this->k); - } - } - $this->_out($annots.']'); - } - $this->_out('/Contents '.($this->n+1).' 0 R>>'); - $this->_out('endobj'); - //Page content - $p=($this->compress) ? gzcompress($this->pages[$n]) : $this->pages[$n]; - $this->_newobj(); - $this->_out('<<'.$filter.'/Length '.strlen($p).'>>'); - $this->_putstream($p); - $this->_out('endobj'); - } - //Pages root - $this->offsets[1]=strlen($this->buffer); - $this->_out('1 0 obj'); - $this->_out('<_out($kids.']'); - $this->_out('/Count '.$nb); - $this->_out(sprintf('/MediaBox [0 0 %.2f %.2f]',$wPt,$hPt)); - $this->_out('>>'); - $this->_out('endobj'); -} - -function _putfonts() -{ - $nf=$this->n; - foreach($this->diffs as $diff) - { - //Encodings - $this->_newobj(); - $this->_out('<>'); - $this->_out('endobj'); - } - $mqr=get_magic_quotes_runtime(); - set_magic_quotes_runtime(0); - foreach($this->FontFiles as $file=>$info) - { - //Font file embedding - $this->_newobj(); - $this->FontFiles[$file]['n']=$this->n; - $font=''; - $f=fopen($this->_getfontpath().$file,'rb',1); - if(!$f) - $this->Error('Font file not found'); - while(!feof($f)) - $font.=fread($f,8192); - fclose($f); - $compressed=(substr($file,-2)=='.z'); - if(!$compressed && isset($info['length2'])) - { - $header=(ord($font{0})==128); - if($header) - { - //Strip first binary header - $font=substr($font,6); - } - if($header && ord($font{$info['length1']})==128) - { - //Strip second binary header - $font=substr($font,0,$info['length1']).substr($font,$info['length1']+6); - } - } - $this->_out('<_out('/Filter /FlateDecode'); - $this->_out('/Length1 '.$info['length1']); - if(isset($info['length2'])) - $this->_out('/Length2 '.$info['length2'].' /Length3 0'); - $this->_out('>>'); - $this->_putstream($font); - $this->_out('endobj'); - } - set_magic_quotes_runtime($mqr); - foreach($this->fonts as $k=>$font) - { - //Font objects - $this->fonts[$k]['n']=$this->n+1; - $type=$font['type']; - $name=$font['name']; - if($type=='core') - { - //Standard font - $this->_newobj(); - $this->_out('<_out('/BaseFont /'.$name); - $this->_out('/Subtype /Type1'); - if($name!='Symbol' && $name!='ZapfDingbats') - $this->_out('/Encoding /WinAnsiEncoding'); - $this->_out('>>'); - $this->_out('endobj'); - } - elseif($type=='Type1' || $type=='TrueType') - { - //Additional Type1 or TrueType font - $this->_newobj(); - $this->_out('<_out('/BaseFont /'.$name); - $this->_out('/Subtype /'.$type); - $this->_out('/FirstChar 32 /LastChar 255'); - $this->_out('/Widths '.($this->n+1).' 0 R'); - $this->_out('/FontDescriptor '.($this->n+2).' 0 R'); - if($font['enc']) - { - if(isset($font['diff'])) - $this->_out('/Encoding '.($nf+$font['diff']).' 0 R'); - else - $this->_out('/Encoding /WinAnsiEncoding'); - } - $this->_out('>>'); - $this->_out('endobj'); - //Widths - $this->_newobj(); - $cw=&$font['cw']; - $s='['; - for($i=32;$i<=255;$i++) - $s.=$cw[chr($i)].' '; - $this->_out($s.']'); - $this->_out('endobj'); - //Descriptor - $this->_newobj(); - $s='<$v) - $s.=' /'.$k.' '.$v; - $file=$font['file']; - if($file) - $s.=' /FontFile'.($type=='Type1' ? '' : '2').' '.$this->FontFiles[$file]['n'].' 0 R'; - $this->_out($s.'>>'); - $this->_out('endobj'); - } - else - { - //Allow for additional types - $mtd='_put'.strtolower($type); - if(!method_exists($this,$mtd)) - $this->Error('Unsupported font type: '.$type); - $this->$mtd($font); - } - } -} - -function _putimages() -{ - $filter=($this->compress) ? '/Filter /FlateDecode ' : ''; - reset($this->images); - while(list($file,$info)=each($this->images)) - { - $this->_newobj(); - $this->images[$file]['n']=$this->n; - $this->_out('<_out('/Subtype /Image'); - $this->_out('/Width '.$info['w']); - $this->_out('/Height '.$info['h']); - if($info['cs']=='Indexed') - $this->_out('/ColorSpace [/Indexed /DeviceRGB '.(strlen($info['pal'])/3-1).' '.($this->n+1).' 0 R]'); - else - { - $this->_out('/ColorSpace /'.$info['cs']); - if($info['cs']=='DeviceCMYK') - $this->_out('/Decode [1 0 1 0 1 0 1 0]'); - } - $this->_out('/BitsPerComponent '.$info['bpc']); - if(isset($info['f'])) - $this->_out('/Filter /'.$info['f']); - if(isset($info['parms'])) - $this->_out($info['parms']); - if(isset($info['trns']) && is_array($info['trns'])) - { - $trns=''; - for($i=0;$i_out('/Mask ['.$trns.']'); - } - $this->_out('/Length '.strlen($info['data']).'>>'); - $this->_putstream($info['data']); - unset($this->images[$file]['data']); - $this->_out('endobj'); - //Palette - if($info['cs']=='Indexed') - { - $this->_newobj(); - $pal=($this->compress) ? gzcompress($info['pal']) : $info['pal']; - $this->_out('<<'.$filter.'/Length '.strlen($pal).'>>'); - $this->_putstream($pal); - $this->_out('endobj'); - } - } -} - -function _putxobjectdict() -{ - foreach($this->images as $image) - $this->_out('/I'.$image['i'].' '.$image['n'].' 0 R'); -} - -function _putresourcedict() -{ - $this->_out('/ProcSet [/PDF /Text /ImageB /ImageC /ImageI]'); - $this->_out('/Font <<'); - foreach($this->fonts as $font) - $this->_out('/F'.$font['i'].' '.$font['n'].' 0 R'); - $this->_out('>>'); - $this->_out('/XObject <<'); - $this->_putxobjectdict(); - $this->_out('>>'); -} - -function _putresources() -{ - $this->_putfonts(); - $this->_putimages(); - //Resource dictionary - $this->offsets[2]=strlen($this->buffer); - $this->_out('2 0 obj'); - $this->_out('<<'); - $this->_putresourcedict(); - $this->_out('>>'); - $this->_out('endobj'); -} - -function _putinfo() -{ - $this->_out('/Producer '.$this->_textstring('FPDF '.FPDF_VERSION)); - if(!empty($this->title)) - $this->_out('/Title '.$this->_textstring($this->title)); - if(!empty($this->subject)) - $this->_out('/Subject '.$this->_textstring($this->subject)); - if(!empty($this->author)) - $this->_out('/Author '.$this->_textstring($this->author)); - if(!empty($this->keywords)) - $this->_out('/Keywords '.$this->_textstring($this->keywords)); - if(!empty($this->creator)) - $this->_out('/Creator '.$this->_textstring($this->creator)); - $this->_out('/CreationDate '.$this->_textstring('D:'.date('YmdHis'))); -} - -function _putcatalog() -{ - $this->_out('/Type /Catalog'); - $this->_out('/Pages 1 0 R'); - if($this->ZoomMode=='fullpage') - $this->_out('/OpenAction [3 0 R /Fit]'); - elseif($this->ZoomMode=='fullwidth') - $this->_out('/OpenAction [3 0 R /FitH null]'); - elseif($this->ZoomMode=='real') - $this->_out('/OpenAction [3 0 R /XYZ null null 1]'); - elseif(!is_string($this->ZoomMode)) - $this->_out('/OpenAction [3 0 R /XYZ null null '.($this->ZoomMode/100).']'); - if($this->LayoutMode=='single') - $this->_out('/PageLayout /SinglePage'); - elseif($this->LayoutMode=='continuous') - $this->_out('/PageLayout /OneColumn'); - elseif($this->LayoutMode=='two') - $this->_out('/PageLayout /TwoColumnLeft'); -} - -function _putheader() -{ - $this->_out('%PDF-'.$this->PDFVersion); -} - -function _puttrailer() -{ - $this->_out('/Size '.($this->n+1)); - $this->_out('/Root '.$this->n.' 0 R'); - $this->_out('/Info '.($this->n-1).' 0 R'); -} - -function _enddoc() -{ - $this->_putheader(); - $this->_putpages(); - $this->_putresources(); - //Info - $this->_newobj(); - $this->_out('<<'); - $this->_putinfo(); - $this->_out('>>'); - $this->_out('endobj'); - //Catalog - $this->_newobj(); - $this->_out('<<'); - $this->_putcatalog(); - $this->_out('>>'); - $this->_out('endobj'); - //Cross-ref - $o=strlen($this->buffer); - $this->_out('xref'); - $this->_out('0 '.($this->n+1)); - $this->_out('0000000000 65535 f '); - for($i=1;$i<=$this->n;$i++) - $this->_out(sprintf('%010d 00000 n ',$this->offsets[$i])); - //Trailer - $this->_out('trailer'); - $this->_out('<<'); - $this->_puttrailer(); - $this->_out('>>'); - $this->_out('startxref'); - $this->_out($o); - $this->_out('%%EOF'); - $this->state=3; -} - -function _beginpage($orientation) -{ - $this->page++; - $this->pages[$this->page]=''; - $this->state=2; - $this->x=$this->lMargin; - $this->y=$this->tMargin; - $this->FontFamily=''; - //Page orientation - if(!$orientation) - $orientation=$this->DefOrientation; - else - { - $orientation=strtoupper($orientation{0}); - if($orientation!=$this->DefOrientation) - $this->OrientationChanges[$this->page]=true; - } - if($orientation!=$this->CurOrientation) - { - //Change orientation - if($orientation=='P') - { - $this->wPt=$this->fwPt; - $this->hPt=$this->fhPt; - $this->w=$this->fw; - $this->h=$this->fh; - } - else - { - $this->wPt=$this->fhPt; - $this->hPt=$this->fwPt; - $this->w=$this->fh; - $this->h=$this->fw; - } - $this->PageBreakTrigger=$this->h-$this->bMargin; - $this->CurOrientation=$orientation; - } -} - -function _endpage() -{ - //End of page contents - $this->state=1; -} - -function _newobj() -{ - //Begin a new object - $this->n++; - $this->offsets[$this->n]=strlen($this->buffer); - $this->_out($this->n.' 0 obj'); -} - -function _dounderline($x,$y,$txt) -{ - //Underline text - $up=$this->CurrentFont['up']; - $ut=$this->CurrentFont['ut']; - $w=$this->GetStringWidth($txt)+$this->ws*substr_count($txt,' '); - return sprintf('%.2f %.2f %.2f %.2f re f',$x*$this->k,($this->h-($y-$up/1000*$this->FontSize))*$this->k,$w*$this->k,-$ut/1000*$this->FontSizePt); -} - -function _parsejpg($file) -{ - //Extract info from a JPEG file - $a=GetImageSize($file); - if(!$a) - $this->Error('Missing or incorrect image file: '.$file); - if($a[2]!=2) - $this->Error('Not a JPEG file: '.$file); - if(!isset($a['channels']) || $a['channels']==3) - $colspace='DeviceRGB'; - elseif($a['channels']==4) - $colspace='DeviceCMYK'; - else - $colspace='DeviceGray'; - $bpc=isset($a['bits']) ? $a['bits'] : 8; - //Read whole file - $f=fopen($file,'rb'); - $data=''; - while(!feof($f)) - $data.=fread($f,4096); - fclose($f); - return array('w'=>$a[0],'h'=>$a[1],'cs'=>$colspace,'bpc'=>$bpc,'f'=>'DCTDecode','data'=>$data); -} - -function _parsepng($file) -{ - //Extract info from a PNG file - $f=fopen($file,'rb'); - if(!$f) - $this->Error('Can\'t open image file: '.$file); - //Check signature - if(fread($f,8)!=chr(137).'PNG'.chr(13).chr(10).chr(26).chr(10)) - $this->Error('Not a PNG file: '.$file); - //Read header chunk - fread($f,4); - if(fread($f,4)!='IHDR') - $this->Error('Incorrect PNG file: '.$file); - $w=$this->_freadint($f); - $h=$this->_freadint($f); - $bpc=ord(fread($f,1)); - if($bpc>8) - $this->Error('16-bit depth not supported: '.$file); - $ct=ord(fread($f,1)); - if($ct==0) - $colspace='DeviceGray'; - elseif($ct==2) - $colspace='DeviceRGB'; - elseif($ct==3) - $colspace='Indexed'; - else - $this->Error('Alpha channel not supported: '.$file); - if(ord(fread($f,1))!=0) - $this->Error('Unknown compression method: '.$file); - if(ord(fread($f,1))!=0) - $this->Error('Unknown filter method: '.$file); - if(ord(fread($f,1))!=0) - $this->Error('Interlacing not supported: '.$file); - fread($f,4); - $parms='/DecodeParms <>'; - //Scan chunks looking for palette, transparency and image data - $pal=''; - $trns=''; - $data=''; - do - { - $n=$this->_freadint($f); - $type=fread($f,4); - if($type=='PLTE') - { - //Read palette - $pal=fread($f,$n); - fread($f,4); - } - elseif($type=='tRNS') - { - //Read transparency info - $t=fread($f,$n); - if($ct==0) - $trns=array(ord(substr($t,1,1))); - elseif($ct==2) - $trns=array(ord(substr($t,1,1)),ord(substr($t,3,1)),ord(substr($t,5,1))); - else - { - $pos=strpos($t,chr(0)); - if($pos!==false) - $trns=array($pos); - } - fread($f,4); - } - elseif($type=='IDAT') - { - //Read image data block - $data.=fread($f,$n); - fread($f,4); - } - elseif($type=='IEND') - break; - else - fread($f,$n+4); - } - while($n); - if($colspace=='Indexed' && empty($pal)) - $this->Error('Missing palette in '.$file); - fclose($f); - return array('w'=>$w,'h'=>$h,'cs'=>$colspace,'bpc'=>$bpc,'f'=>'FlateDecode','parms'=>$parms,'pal'=>$pal,'trns'=>$trns,'data'=>$data); -} - -function _freadint($f) -{ - //Read a 4-byte integer from file - $a=unpack('Ni',fread($f,4)); - return $a['i']; -} - -function _textstring($s) -{ - //Format a text string - return '('.$this->_escape($s).')'; -} - -function _escape($s) -{ - //Add \ before \, ( and ) - return str_replace(')','\\)',str_replace('(','\\(',str_replace('\\','\\\\',$s))); -} - -function _putstream($s) -{ - $this->_out('stream'); - $this->_out($s); - $this->_out('endstream'); -} - -function _out($s) -{ - //Add a line to the document - if($this->state==2) - $this->pages[$this->page].=$s."\n"; - else - $this->buffer.=$s."\n"; -} -//End of class -} - -//Handle special IE contype request -if(isset($_SERVER['HTTP_USER_AGENT']) && $_SERVER['HTTP_USER_AGENT']=='contype') -{ - header('Content-Type: application/pdf'); - exit; -} - -} -?> diff --git a/lam/lib/lamdaemon.inc b/lam/lib/lamdaemon.inc deleted file mode 100644 index 3dda3fbb..00000000 --- a/lam/lib/lamdaemon.inc +++ /dev/null @@ -1,97 +0,0 @@ -decrypt_login(); - - $userstring = implode ("\n", $commands); - $output_array = array(); - if (function_exists('proc_open')) { - // New Code, requires PHP 4.3 - $towrite = escapeshellarg($_SESSION['config']->scriptServer)." ".escapeshellarg($_SESSION['config']->scriptPath)." - -"; - $descriptorspec = array( - 0 => array("pipe", "r"), // stdin - 1 => array("pipe", "w"), // stout - 2 => array("file", "/dev/null", "a") // sterr - ); - $process = proc_open(escapeshellarg($_SESSION['lampath']."lib/lamdaemon.pl")." ".$towrite, - $descriptorspec, - $pipes); - if (is_resource($process)) { - /* perl-script is running - * $pipes[0] is writeable handle to child stdin - * $pipes[1] is readable handle to child stdout - * any error is send to /dev/null - */ - // user+passwd - fwrite($pipes[0], $ldap_q[0] . "\n"); - fwrite($pipes[0], $ldap_q[1] . "\n"); - // Write to stdin - fwrite($pipes[0], $userstring); - } - fclose($pipes[0]); - while (!feof($pipes[1])) { - $output = fgets($pipes[1], 1024); - if ($output!='') $output_array[] = $output; - } - fclose($pipes[1]); - proc_close($process); - } - else { // PHP 4.3> - $towrite = escapeshellarg($_SESSION['config']->scriptServer)." ".escapeshellarg($_SESSION['config']->scriptPath)." ". - escapeshellarg($ldap_q[0]).' '.escapeshellarg($ldap_q[1]); - $command = escapeshellarg($_SESSION['lampath']."lib/lamdaemon.pl")." ".$towrite; - $pipe = popen("echo \"$userstring\"|$command" , 'r'); - while(!feof($pipe)) { - //$output .= fread($pipe, 1024); - $output = fgets($pipe, 1024); - if ($output!='') $output_array[] = $output; - } - pclose($pipe); - } - if (sizeof($output_array) > 0) { - return $output_array; - } - else { - return false; - } -} - -?> diff --git a/lam/lib/lamdaemon.pl b/lam/lib/lamdaemon.pl deleted file mode 100755 index 3273707c..00000000 --- a/lam/lib/lamdaemon.pl +++ /dev/null @@ -1,242 +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 $/;}; - @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 - } - } - else { - $return = "ERROR,Lamdaemon,Homedirectory already exists.:$return"; - } - ($<, $>) = ($>, $<); # Give up root previleges - last switch2; - }; - $vals[2] eq 'rem' && do { - ($<, $>) = ($>, $<); # Get root previliges - if (-d $user[7]) { - # Fixme, only delete files owned by user. - system 'rm', '-R', $user[7]; # Delete Homedirectory - if (-e '/usr/sbin/userdel.local') { - system '/usr/sbin/userdel.local', $user[0]; - } - } - else { - $return = "ERROR,Lamdaemon,Homedirectory doesn't exists.:$return"; - } - ($<, $>) = ($>, $<); # Give up root previleges - last switch2; - }; - } - # Show error if undfined command is used - $return = "ERROR,Lamdaemon,Unknown command $vals[2].:$return"; - 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; - }; - $return = "ERROR,Lamdaemon,Unknown command $vals[2].:$return"; - } - }; - last switch; - $return = "ERROR,Lamdaemon,Unknown command $vals[1].:$return"; - }; - 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 = ; - chop($username); - @username = split (',', $username); - $username[0] =~ s/uid=//; - $username[0] =~ s/cn=//; - $username = $username[0]; - $password = ; - chop($password); - } - else { - @username = split (',', $ARGV[0]); - $username[0] =~ s/uid=//; - $username[0] =~ s/cn=//; - $username = $username[0]; - $password = $ARGV[1]; - } - # Put all transfered lines in one string - if ($ARGV[2] ne "*test") { - $string = do {local $/;}; - } - else { $argv = "*test\n"; } - my $ssh = Net::SSH::Perl->new($hostname, options=>[ - "UserKnownHostsFile /dev/null"], - protocol => "2,1" ); - $ssh->login($username, $password); - # Change needed to prevent buffer overrun - @string2 = split ("\n", $string); - for ($i=0; $i<=$#string2; $i++) { - ($stdout2, $stderr, $exit) = $ssh->cmd("sudo $remotepath $argv", $string2[$i]); - $stdout .= $stdout2; - } - #($stdout, $stderr, $exit) = $ssh->cmd("sudo $remotepath $argv", $string); - print $stdout; - } diff --git a/lam/lib/ldap.inc b/lam/lib/ldap.inc deleted file mode 100644 index 7dde59e0..00000000 --- a/lam/lib/ldap.inc +++ /dev/null @@ -1,464 +0,0 @@ -conf = $config; - else return false; - mt_srand((double)microtime()*1000000); - $this->rand = mt_rand(); - return true; - } - - /** - * Connects to the server using the given username and password - * - * @param string $user user name - * @param string $passwd password - * @return mixed if connect succeeds the server handle is returned, else false - */ - 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(); - // update schema - get_schema_objectclasses(); - get_schema_attributes(); - get_schema_matching_rules(); - get_schema_syntaxes(); - } - // 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); - } - - /** - * Returns an array with all organizational units under the given suffix - * - * @param string $suffix search suffix - * @return array DNs of organizational units - */ - 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); - unset($units['count']); - // 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; - } - - /** 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); - } - } - // if search failed save empty result - else $this->objectClasses = array(); - - // read from default cn - $sr = @ldap_read($this->server, 'cn=subschema', '(objectClass=*)', array('attributetypes')); - // if default was not correct check different cn - if (!$sr) $sr = @ldap_read($this->server, 'cn=schema', '(objectClass=*)', array('attributetypes')); - if ($sr) { - // get search result and save it - $info = @ldap_get_entries($this->server,$sr); - if ($info) { - $attributes = $info[0]['attributetypes']; - array_shift($attributes); - } - } - // build Attribute list - for ($i=0; $iattributes[$name] = $values; - $start = $end + 3; - } - } - else { - $end = $start; - while ($attributes[$i][$end]!='\'') $end++; - $name = substr($attributes[$i], $start, $end-$start); - $this->attributes[$name] = $values; - } - } - } - - /** 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 - * - * @return object 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", "objectClasses", "attributes", - "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') || (substr($file, -4) == '.jpg')) { - $path = $relpath . $file; - if ($time - filemtime($path) > 600) { - @unlink($path); - } - } - } - @closedir($dir); - } - } - - /** - * Calculates a new value for rand - * - * @return int New random value - */ - function new_rand() { - // change random number - mt_srand($this->rand + (microtime() * 1000000)); - $r = mt_rand(); - $this->rand = $r; - return $r; - } - - /** - * Encrypts a string - * - * @param string $data string to encrypt - * @return object 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 - * - * @param object $data string to decrypt - * @return string 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 - * - * @param string $username LDAP user name - * @param string $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 - * - * @return array array(user name, 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"; - } - - - /** - * Helper function to sort the unit DNs - * - * @param string $a first argument to compare - * @param string $b second argument to compare - * @return integer 0 if equal, 1 if $a is greater, -1 if $b is greater - */ - 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; - } - return -1; - } - - -} - -?> diff --git a/lam/lib/lists.inc b/lam/lib/lists.inc deleted file mode 100644 index 70af6af1..00000000 --- a/lam/lib/lists.inc +++ /dev/null @@ -1,434 +0,0 @@ - array('regex' => $reg, 'original' => $orig)) -* $reg is the regular expression to use, $orig the user's unmodified input string -*/ -function listBuildFilter($attributes) { - $filter = array(); - for ($i = 0; $i < sizeof($attributes); $i++) { - if (isset($_POST["filter" . strtolower($attributes[$i])]) && eregi('^([0-9a-z_\\*\\$])+$', $_POST["filter" . strtolower($attributes[$i])])) { - $filter[$attributes[$i]]['original'] = $_POST["filter" . strtolower($attributes[$i])]; - $filter[$attributes[$i]]['regex'] = $_POST["filter" . strtolower($attributes[$i])]; - // replace special characters - $filter[$attributes[$i]]['regex'] = str_replace("*", "(.)*", $filter[$attributes[$i]]['regex']); - $filter[$attributes[$i]]['regex'] = str_replace('$', '[$]', $filter[$attributes[$i]]['regex']); - // add string begin and end - $filter[$attributes[$i]]['regex'] = "^" . $filter[$attributes[$i]]['regex'] . "$"; - } - } - return $filter; -} - - -/** -* Removes all entries which do not fit to the filter. -* -* @param array $entries list of accounts -* @param array $filter attribute filter -* @return array filtered list of accounts -*/ -function listFilterAccounts($entries, $filter) { - $attributes = array_keys($filter); - for ($r = 0; $r < sizeof($entries); $r++) { - for ($a = 0; $a < sizeof($attributes); $a++) { - // check if filter fits - $found = false; - for ($i = 0; $i < sizeof($entries[$r][$attributes[$a]]); $i++) { - if (eregi($filter[$attributes[$a]]['regex'], $entries[$r][$attributes[$a]][$i])) { - $found = true; - break; - } - } - if (!$found) { - // remove account and reindex array - unset($entries[$r]); - $entries = array_values($entries); - $r--; - break; - } - } - } - return $entries; -} - - -/** -* Sorts an account list by a given attribute -* -* @param string $sort the attribute by which to sort -* @param array $attr_array array of displayed attributes -* @param array $info the account list -* @return array sorted account list -*/ -function listSort($sort, $attr_array, $info) { - - /** - * Compare function used for usort-method - * - * Rows are sorted with the first attribute entry of the sort column. - * If objects have attributes with multiple values only the first is used for sorting. - * - * @param array $a first row which is compared - * @param array $b second row which is compared - * @return integer 0 if both are equal, 1 if $a is greater, -1 if $b is greater - */ - function cmp_array($a, $b) { - // sort specifies the sort column - global $sort; - global $attr_array; - // sort by first column if no attribute is given - if (!$sort) $sort = strtolower($attr_array[0]); - if ($sort != "dn") { - // sort by first attribute with name $sort - if ($a[$sort][0] == $b[$sort][0]) return 0; - elseif ($a[$sort][0] == max($a[$sort][0], $b[$sort][0])) return 1; - else return -1; - } - else { - if ($a[$sort] == $b[$sort]) return 0; - elseif ($a[$sort] == max($a[$sort], $b[$sort])) return 1; - else return -1; - } - } - - if (!is_array($attr_array)) return $info; - if (!is_string($sort)) return $info; - // sort and return account list - usort($info, "cmp_array"); - return $info; -} - - -/** -* Draws a navigation bar to switch between pages -* -* @param integer $count number of account entries -* @param integer $max_page_entries maximum number of account per page -* @param integer $page current page number -* @param string $sort sort attribute -* @param string $searchFilter LDAP search filter -* @param string $scope account type (user/group/host/domain) -* @param string $text string including the number of accounts -*/ -function listDrawNavigationBar($count, $max_page_entries, $page, $sort, $searchFilter, $scope, $text) { - - echo("\n"); - echo("\n"); - echo(""); - } - - echo(""); - - echo("
  "); - if ($page != 1) { - echo("<=\n"); - } - else { - echo("<="); - } - echo(" "); - - if ($page < ($count / $max_page_entries)) { - echo("=>\n"); - } - else { - echo("=>"); - echo" "; - printf($text, $count); - echo(""); - for ($i = 0; $i < ($count / $max_page_entries); $i++) { - if ($i == $page - 1) { - echo(" " . ($i + 1)); - } - else { - echo(" " . ($i + 1) . "\n"); - } - } - echo("
\n"); -} - -/** -* Prints the attribute and filter row at the account table head -* -* @param string $scope account type (user, group, host) -* @param string $searchFilter search filter for hyperlinks -* @param array $desc_array list of attribute descriptions -* @param array $attr_array list of attribute names -* @param array $_POST HTTP-POST values -* @param string $sort sort attribute -*/ -function listPrintTableHeader($scope, $searchFilter, $desc_array, $attr_array, $_POST, $sort) { - // print table header - echo "\n"; - echo "\n\n\n"; - // table header - for ($k = 0; $k < sizeof($desc_array); $k++) { - if (strtolower($attr_array[$k]) == $sort) { - echo "\n"; - } - else echo "\n"; - } - echo "\n"; - - // print filter row - echo "\n"; - echo "\n"; - echo "\n"; - // print input boxes for filters - for ($k = 0; $k < sizeof ($desc_array); $k++) { - $value = ""; - if (isset($_POST["filter" . strtolower($attr_array[$k])])) { - $value = " value=\"" . $_POST["filter" . strtolower($attr_array[$k])] . "\""; - } - echo "\n"; - } - echo "\n"; -} - -/** -* Manages all POST actions (e.g. button pressed) for the account lists. -* -* @param string $scope account type -*/ -function listDoPost($scope) { - // check if button was pressed and if we have to add/delete an account - if (isset($_POST['new']) || isset($_POST['del']) || isset($_POST['pdf']) || isset($_POST['pdf_all'])){ - // add new account - if (isset($_POST['new'])){ - metaRefresh("../account/edit.php?type=" . $scope); - exit; - } - // delete account(s) - elseif (isset($_POST['del'])){ - // search for checkboxes - $accounts = array_keys($_POST, "on"); - $_SESSION['delete_dn'] = array(); - for ($i = 0; $i < sizeof($accounts); $i++) { - $_SESSION['delete_dn'][] = $_SESSION[$scope . 'info'][$accounts[$i]]['dn']; - } - if (sizeof($accounts) > 0) { - metaRefresh("../delete.php?type=" . $scope); - exit; - } - } - // PDF for selected accounts - elseif (isset($_POST['pdf'])){ - $pdf_structure = $_POST['pdf_structure']; - // search for checkboxes - $accounts = array_keys($_POST, "on"); - $list = array(); - // load accounts from LDAP - for ($i = 0; $i < sizeof($accounts); $i++) { - $_SESSION["accountPDF-$i"] = new accountContainer($scope, "accountPDF-$i"); - $_SESSION["accountPDF-$i"]->load_account($_SESSION[$scope . 'info'][$accounts[$i]]['dn']); - $list[$i] = $_SESSION["accountPDF-$i"]; - } - if (sizeof($list) > 0) { - createModulePDF($list,$pdf_structure); - exit; - } - } - // PDF for all accounts - elseif (isset($_POST['pdf_all'])){ - $list = array(); - for ($i = 0; $i < sizeof($_SESSION[$scope . 'info']); $i++) { - $_SESSION["accountPDF-$i"] = new accountContainer($scope, "accountPDF-$i"); - $_SESSION["accountPDF-$i"]->load_account($_SESSION[$scope . 'info'][$i]['dn']); - $list[$i] = $_SESSION["accountPDF-$i"]; - } - if (sizeof($list) > 0) { - createModulePDF($list,$_POST['pdf_structure']); - exit; - } - } - } -} - - -/** -* Returns the LDAP attribute names and their description for the user list -* -* @param string $scope account type -* @return array list of LDAP attributes and descriptions -*/ -function listGetAttributeArray($scope) { - switch ($scope) { - case 'user': - return array ( - "uid" => _("User ID"), - "uidnumber" => _("UID number"), - "gidnumber" => _("GID number"), - "cn" => _("User name"), - "host" => _("Allowed hosts"), - "givenname" => _("First name"), - "sn" => _("Last name"), - "homedirectory" => _("Home directory"), - "loginshell" => _("Login shell"), - "mail" => _("E-Mail"), - "gecos" => _("Description") - ); - break; - case 'group': - return array ( - "cn" => _("Group name"), - "gidnumber" => _("GID number"), - "memberuid" => _("Group members"), - "member" => _("Group member DNs"), - "description" => _("Group description") - ); - break; - case 'host': - return array ( - "uid" => _("Host name"), - "cn" => _("Host name"), - "rid" => _("RID (Windows UID)"), - "description" => _("Host description"), - "uidnumber" => _("UID number"), - "gidnumber" => _("GID number") - ); - break; - default: - return array(); - break; - } -} - -/** -* Prints a combobox with possible sub-DNs. -* -* @param array $units list of OUs -* @param string $suffix current LDAP suffix -*/ -function listShowOUSelection($units, $suffix) { - if (sizeof($units) > 1) { - echo ("

\n"); - echo ("" . _("Suffix") . ": "); - echo ("\n"); - echo (""); - echo ("

\n"); - } -} - -/** -* Prints JavaScript code needed for mouse-over effects. -*/ -function listPrintJavaScript() { - echo "\n"; -} - -/** -* Returns an hash array containing with all attributes to be shown and their descriptions. -* Format: array(attribute => description) -* -* @param string $scope account type -* @return array attribute list -*/ -function listGetAttributeDescriptionList($scope) { - $ret = array(); - $attr_string = $_SESSION["config"]->get_listAttributes($scope); - $temp_array = explode(";", $attr_string); - $hash_table = listGetAttributeArray($scope); - // generate column attributes and descriptions - for ($i = 0; $i < sizeof($temp_array); $i++) { - // if value is predifined, look up description in hash_table - if (substr($temp_array[$i],0,1) == "#") { - $attr = strtolower(substr($temp_array[$i],1)); - if (isset($hash_table[$attr])) { - $ret[$attr] = $hash_table[$attr]; - } - else { - $ret[$attr] = $attr; - } - } - // if not predefined, the attribute is seperated by a ":" from description - else { - $attr = explode(":", $temp_array[$i]); - if (isset($attr[1])) { - $ret[$attr[0]] = $attr[1]; - } - else { - $ret[$attr[0]] = $attr[0]; - } - } - } - return $ret; -} - - -?> \ No newline at end of file diff --git a/lam/lib/modules.inc b/lam/lib/modules.inc deleted file mode 100644 index 2f78c9a0..00000000 --- a/lam/lib/modules.inc +++ /dev/null @@ -1,1632 +0,0 @@ -read()) -if ((substr($entry, strlen($entry) - 4, 4) == '.inc') && is_file($modulesINC_dirname . '/'.$entry)) { - include_once($modulesINC_dirname . '/'.$entry); -} - -/** -* Returns the alias name of a module -* -* @param string $name the module name -* @param string $scope the account type ("user", "group", "host") -* @return string alias name -*/ -function getModuleAlias($name, $scope) { - $module = new $name($scope); - return $module->get_alias(); -} - -/** -* Returns true if the module is a base module -* -* @param string $name the module name -* @param string $scope the account type ("user", "group", "host") -* @return boolean true if base module -*/ -function is_base_module($name, $scope) { - $module = new $name($scope); - return $module->is_base_module(); -} - -/** -* Returns the LDAP filter used by the account lists -* -* @param string $scope the account type ("user", "group", "host") -* @return string LDAP filter -*/ -function get_ldap_filter($scope) { - $mods = $_SESSION['config']->get_AccountModules($scope); - $filters = array(); - $orFilter = ''; - for ($i = 0; $i < sizeof($mods); $i++) { - $module = new $mods[$i]($scope); - $modinfo = $module->get_ldap_filter(); - if (isset($modinfo['or'])) $filters['or'][] = $modinfo['or']; - if (isset($modinfo['and'])) $filters['and'][] = $modinfo['and']; - } - // build OR filter - if (sizeof($filters['or']) == 1) { - $orFilter = $filters['or'][0]; - } - elseif (sizeof($filters['or']) > 1) { - $orFilter = "(|" . implode("", $filters['or']) . ")"; - } - // add built OR filter to AND filters - if ($orFilter != '') $filters['and'][] = $orFilter; - // collapse AND filters - if (sizeof($filters['and']) < 2) return $filters['and'][0]; - else return "(&" . implode("", $filters['and']) . ")"; -} - -/** -* Returns a list of LDAP attributes which can be used to form the RDN. -* -* The list is already sorted by the priority given by the nodules. -* -* @param string $scope account type (user, group, host) -* @return array list of LDAP attributes -*/ -function getRDNAttributes($scope) { - $mods = $_SESSION['config']->get_AccountModules($scope); - $return = array(); - $attrs_low = array(); - $attrs_normal = array(); - $attrs_high = array(); - for ($i = 0; $i < sizeof($mods); $i++) { - // get list of attributes - $module = new $mods[$i]($scope); - $attrs = $module->get_RDNAttributes(); - $keys = array_keys($attrs); - // sort attributes - for ($k = 0; $k < sizeof($keys); $k++) { - switch ($attrs[$keys[$k]]) { - case "low": - $attrs_low[] = $keys[$k]; - break; - case "normal": - $attrs_normal[] = $keys[$k]; - break; - case "high": - $attrs_high[] = $keys[$k]; - break; - default: - $attrs_low[] = $keys[$k]; - break; - } - } - } - // merge arrays - $return = $attrs_high; - for ($i = 0; $i < sizeof($attrs_normal); $i++) $return[] = $attrs_normal[$i]; - for ($i = 0; $i < sizeof($attrs_low); $i++) $return[] = $attrs_low[$i]; - $return = array_values(array_unique($return)); - return $return; -} - -/** -* Returns a hash array (module name => dependencies) of all module dependencies -* -* "dependencies" contains an array with two sub arrays: depends, conflicts -*
The elements of "depends" are either module names or an array of module names (OR-case). -*
The elements of conflicts are module names. -* -* @param string $scope the account type (user, group, host) -* @return array dependencies -*/ -function getModulesDependencies($scope) { - $mods = getAvailableModules($scope); - for ($i = 0; $i < sizeof($mods); $i++) { - $module = new $mods[$i]($scope); - $return[$mods[$i]] = $module->get_dependencies(); - } - return $return; -} - - -/** -* Checks if there are missing dependencies between modules. -* -* @param array $selected selected module names -* @param array $deps module dependencies -* @return mixed false if no misssing dependency was found, -* otherwise an array of array(selected module, depending module) if missing dependencies were found -*/ -function check_module_depends($selected, $deps) { - $ret = array(); - for ($m = 0; $m < sizeof($selected); $m++) { // check selected modules - for ($i = 0; $i < sizeof($deps[$selected[$m]]['depends']); $i++) { // check dependencies of module - // check if we have OR-combined modules - if (is_array($deps[$selected[$m]]['depends'][$i])) { - // one of the elements is needed - $found = false; - $depends = $deps[$selected[$m]]['depends'][$i]; - for ($d = 0; $d < sizeof($depends); $d++) { - if (in_array($depends[$d], $selected)) { - $found = true; - break; - } - } - if (! $found) { - // missing dependency, add to return value - $ret[] = array($selected[$m], implode(" || ", $depends)); - } - } - else { - // single dependency - if (! in_array($deps[$selected[$m]]['depends'][$i], $selected)) { - // missing dependency, add to return value - $ret[] = array($selected[$m], $deps[$selected[$m]]['depends'][$i]); - } - } - } - } - if (sizeof($ret) > 0) return $ret; - else return false; -} - -/** -* Checks if there are conflicts between modules -* -* @param array $selected selected module names -* @param array $deps module dependencies -* @return boolean false if no conflict was found, -* otherwise an array of array(selected module, conflicting module) if conflicts were found -*/ -function check_module_conflicts($selected, $deps) { - $ret = array(); - for ($m = 0; $m < sizeof($selected); $m++) { - for ($i = 0; $i < sizeof($deps[$selected[$m]]['conflicts']); $i++) { - if (in_array($deps[$selected[$m]]['conflicts'][$i], $selected)) { - $ret[] = array($selected[$m], $deps[$selected[$m]]['conflicts'][$i]); - } - } - } - if (sizeof($ret) > 0) return $ret; - else return false; -} - -/** -* Returns an array with all available user module names -* -* @param string $scope account type (user, group, host) -* @return array list of possible modules -*/ -function getAvailableModules($scope) { - $dirname = substr(__FILE__, 0, strlen(__FILE__) - 12) . "/modules"; - $dir = dir($dirname); - $return = array(); - // get module names. - while ($entry = $dir->read()) - if ((substr($entry, strlen($entry) - 4, 4) == '.inc') && is_file($dirname . '/'.$entry)) { - $entry = substr($entry, 0, strpos($entry, '.')); - $temp = new $entry($scope); - if ($temp->can_manage()) $return[] = $entry; - } - return $return; -} - -/** -* Returns the elements for the profile page. -* -* @param string $scope account type (user, group, host) -* @return array profile elements -*/ -function getProfileOptions($scope) { - $mods = $_SESSION['config']->get_AccountModules($scope); - $return = array(); - for ($i = 0; $i < sizeof($mods); $i++) { - $module = new $mods[$i]($scope); - $return[$mods[$i]] = $module->get_profileOptions(); - } - return $return; -} - -/** -* Checks if the profile options are valid -* -* @param string $scope account type (user, group, host) -* @param array $options hash array containing all options (name => array(...)) -* @return array list of error messages -*/ -function checkProfileOptions($scope, $options) { - $mods = $_SESSION['config']->get_AccountModules($scope); - $return = array(); - for ($i = 0; $i < sizeof($mods); $i++) { - $module = new $mods[$i]($scope); - $temp = $module->check_profileOptions($options); - $return = array_merge($return, $temp); - } - return $return; -} - -/** -* Returns a hash array (module name => elements) of all module options for the configuration page. -* -* @param array $scopes hash array (module name => array(account types)) -* @return array configuration options -*/ -function getConfigOptions($scopes) { - $return = array(); - $modules = array_keys($scopes); - for ($i = 0; $i < sizeof($modules); $i++) { - $m = new $modules[$i]('none'); - $return[$modules[$i]] = $m->get_configOptions($scopes[$modules[$i]]); - } - return $return; -} - -/** -* Returns a hash array (module name => descriptions) containing descriptions shown on configuration pages. -* -* The returned array has the format array('legend' => array('posixAccount' => '...', ...), descriptions => array('option1' => '...', ...)). -*
The "legend" value is used as text for the fieldset, the descriptions are used when the configuration is printed. -* -* @return array configuration descriptions -*/ -function getConfigDescriptions() { - $return = array('legend' => array(), 'descriptions' => array()); - $modules = array_merge(getAvailableModules('user'), getAvailableModules('group'), getAvailableModules('host')); - $modules = array_values(array_unique($modules)); - for ($i = 0; $i < sizeof($modules); $i++) { - $m = new $modules[$i]('none'); - $desc = $m->get_configDescriptions(); - $return['legend'][$modules[$i]] = $desc['legend']; - $return['descriptions'] = array_merge($return['descriptions'], $desc['descriptions']); - } - return $return; -} - -/** -* Checks if the configuration options are valid -* -* @param array $scopes hash array (module name => array(account types)) -* @param array $options hash array containing all options (name => array(...)) -* @return array list of error messages -*/ -function checkConfigOptions($scopes, $options) { - $return = array(); - $modules = array_keys($scopes); - for ($i = 0; $i < sizeof($modules); $i++) { - $m = new $modules[$i]('none'); - $errors = $m->check_configOptions($scopes[$modules[$i]], $options); - $return = array_merge($return, $errors); - } - return $return; -} - -/** -* Returns a help entry from an account module. -* -* @param string $helpID help identifier -* @param string $module module name -* @return array help entry -*/ -function getHelp($module,$helpID,$scope='') { - $moduleObject = new $module((($scope != '') ? $scope : 'none')); - return $moduleObject->get_help($helpID); -} - -/** -* Returns a list of available PDF entries. -* -* @param string $scope account type (user, group, host) -* @return array PDF entries -*/ -function getAvailablePDFFields($scope) { - $mods = $_SESSION['config']->get_AccountModules($scope); - $return = array(); - for ($i = 0; $i < sizeof($mods); $i++) { - $module = new $mods[$i]($scope); - $return[$mods[$i]] = $module->get_pdfFields(); - } - $return['main'] = array('dn'); - return $return; -} - -/** - * Return a list of current available scopes - * - * @return array Available scopes - */ -function getAvailableScopes() { - return array('user','group','host', 'domain'); -} - -/** -* Returns an array containing all input columns for the file upload. -* -* Syntax: -*
array( -*
string: name, // fixed non-translated name which is used as column name (should be of format: _) -*
string: description, // short descriptive name -*
string: help, // help ID -*
string: example, // example value -*
boolean: required // true, if user must set a value for this column -*
) -* -* @param string $scope account type -* @return array column list -*/ -function getUploadColumns($scope) { - $mods = $_SESSION['config']->get_AccountModules($scope); - $return = array(); - for ($i = 0; $i < sizeof($mods); $i++) { - $module = new $mods[$i]($scope); - $return[$mods[$i]] = $module->get_uploadColumns(); - } - return $return; -} - -/** -* This function builds the LDAP accounts for the file upload. -* -* If there are problems status messages will be printed automatically. -* -* @param string $scope account type -* @param array $data array containing one account in each element -* @param array $ids array( => ) -* @return mixed array including accounts or false if there were errors -*/ -function buildUploadAccounts($scope, $data, $ids) { - // build module order - $unOrdered = $_SESSION['config']->get_AccountModules($scope); - $ordered = array(); - $predepends = array(); - // get dependencies - for ($i = 0; $i < sizeof($unOrdered); $i++) { - $mod = new $unOrdered[$i]($scope); - $predepends[$unOrdered[$i]] = $mod->get_uploadPreDepends(); - } - // first all modules without predepends can be ordered - for ($i = 0; $i < sizeof($unOrdered); $i++) { - if (sizeof($predepends[$unOrdered[$i]]) == 0) { - $ordered[] = $unOrdered[$i]; - unset($unOrdered[$i]); - $unOrdered = array_values($unOrdered); - $i--; - } - } - $unOrdered = array_values($unOrdered); // fix indexes - // now add all modules with fulfilled dependencies until all are in order - while (sizeof($unOrdered) > 0) { - $newRound = false; - for ($i = 0; $i < sizeof($unOrdered); $i++) { - $deps = $predepends[$unOrdered[$i]]; - $depends = false; - for ($d = 0; $d < sizeof($deps); $d++) { - if (in_array($deps[$d], $unOrdered)) { - $depends = true; - break; - } - } - if (!$depends) { // add to order if dependencies are fulfilled - $ordered[] = $unOrdered[$i]; - unset($unOrdered[$i]); - $unOrdered = array_values($unOrdered); - $newRound = true; - break; - } - } - if ($newRound) continue; - // this point should never be reached, LAM was unable to find a correct module order - StatusMessage("ERROR", "Internal Error: Unable to find correct module order.", ""); - return false; - } - // give raw data to modules - $errors = array(); - $partialAccounts = array(); - for ($i = 0; $i < sizeof($data); $i++) $partialAccounts[$i]['objectClass'] = array(); - for ($i = 0; $i < sizeof($ordered); $i++) { - $module = new $ordered[$i]($scope); - $errors = $module->build_uploadAccounts($data, $ids, $partialAccounts); - if (sizeof($errors) > 0) { - array_unshift($errors, array("INFO", _("Displayed account numbers start at \"0\". Add 2 to get the row in your spreadsheet."), "")); - $errors[] = array("ERROR", _("Upload was stopped after errors in %s module!"), "", array($module->get_alias())); - break; - } - } - if (sizeof($errors) > 0) { - for ($i = 0; (($i < sizeof($errors)) || ($i > 49)); $i++) call_user_func_array("StatusMessage", $errors[$i]); - return false; - } - else return $partialAccounts; -} - -/** -* This function executes one post upload action. -* -* @param string $scope account type -* @param array $data array containing one account in each element -* @param array $ids array( => ) -* @param array $failed list of accounts which were not created successfully -* @return array current status -*
array ( -*
'status' => 'finished' | 'inProgress' -*
'module' => -*
'progress' => 0..100 -*
'errors' => array () -*
) -*/ -function doUploadPostActions($scope, $data, $ids, $failed) { - // check if function is called the first time - if (! isset($_SESSION['mass_postActions']['remainingModules'])) { - // make list of remaining modules - $moduleList = $_SESSION['config']->get_AccountModules($scope); - $_SESSION['mass_postActions']['remainingModules'] = $moduleList; - } - $activeModule = $_SESSION['mass_postActions']['remainingModules'][0]; - // initialize temporary variable - if (!isset($_SESSION['mass_postActions'][$activeModule])) { - $_SESSION['mass_postActions'][$activeModule] = array(); - } - // let first module do one post action - $module = new $activeModule($scope); - $return = $module->doUploadPostActions($data, $ids, $failed, $_SESSION['mass_postActions'][$activeModule]); - // remove active module from list if already finished - if ($return['status'] == 'finished') { - unset($_SESSION['mass_postActions']['remainingModules'][0]); - $_SESSION['mass_postActions']['remainingModules'] = array_values($_SESSION['mass_postActions']['remainingModules']); - } - // update status and return back to upload page - $return['module'] = $activeModule; - if (sizeof($_SESSION['mass_postActions']['remainingModules']) > 0) { - $return['status'] = 'inProgress'; - } - else { - $return['status'] = 'finished'; - } - return $return; -} - -/** -* Takes a list of meta-HTML elements and prints the equivalent HTML output. -* -* @param string $module Name of account module -* @param array $input List of meta-HTML elements -* @param array $values List of values which override the defaults in $input (name => value) -* @param boolean $restricted If true then no buttons will be displayed -* @param integer $tabindex Start value of tabulator index for input fields -* @param integer $tabindexLink Start value of tabulator index for links -* @param string $scope Account type -* @return array List of input field names and their type (name => type) -*/ -function parseHtml($module, $input, $values, $restricted, &$tabindex, &$tabindexLink, $scope) { - $ret = array(); - if (is_array($input)) { - echo "
" . $desc_array[$k] . "" . $desc_array[$k] . "
"; - // help link - echo ""; - echo "\"""; - echo "\n"; - echo ""; - echo ""; - echo ""; - echo (""); - echo "
\n"; - for ($i=0; $i\n"; - for ($j=0; $j\n"; - switch ($input[$i][$j]['kind']) { - // plain text - case 'text': - echo $input[$i][$j]['text']; - break; - // input fields - case 'input': - $type = $input[$i][$j]['type']; - if ($restricted && (($type == "submit") || ($type == "reset") || ($type == "file"))) break; // no buttons in restricted mode - $output = "\n"; - if ($input[$i][$j]['legend']!='') echo "" . $input[$i][$j]['legend'] . "\n"; - parseHtml($module, $input[$i][$j]['value'], $values, $restricted, $tabindex, $tabindexLink, $scope); - echo "\n"; - break; - // selection - case 'select': - if (! is_numeric($input[$i][$j]['size'])) $input[$i][$j]['size'] = 1; // correct size if needed - if (isset($input[$i][$j]['multiple'])) { - echo "\n"; - break; - // sub table - case 'table': - $retTemp = parseHtml($module, $input[$i][$j]['value'], $values, $restricted, $tabindex, $tabindexLink, $scope); - $ret = array_merge($ret, $retTemp); - break; - // help link - case 'help': - $helpPath = "../"; - if (is_file("./help.php")) $helpPath = ""; - echo ""; - echo "\"""; - echo "\n"; - $tabindexLink++; - break; - // status message - case 'message': - StatusMessage($input[$i][$j]['type'], $input[$i][$j]['headline'], $input[$i][$j]['text']); - break; - // image - case 'image': - echo "\n"; - break; - // error, unknown type - default: - echo "Unrecognized type: " . $input[$i][$j]['kind'] . "\n"; - break; - } - } - echo "\n"; - echo "\n"; - } - } - echo "
\n"; - return $ret; -} - -/** -* This class includes all modules and attributes of an account. -* -* @package modules -*/ -class accountContainer { - /** - * Constructor - * - * @param string $type account type - * @param string $base key in $_SESSION where this object is saved - */ - function accountContainer($type, $base) { - /* Set the type of account. Valid - * types are: user, group, host - */ - // Check input variable - - if (!is_string($type)) trigger_error('Argument of accountContainer must be string.', E_USER_ERROR); - if (!is_string($base)) trigger_error('Argument of accountContainer must be string.', E_USER_ERROR); - // *** fixme use global variable to determine allowed types - if (!in_array($type, getAvailableScopes())) trigger_error('Account type not recognized.', E_USER_ERROR); - $this->type = $type; - $this->base = $base; - // Set startpage - $this->current_page=0; - $this->subpage='attributes'; - $this->isNewAccount = false; - return 0; - } - - /** - * Array of all used attributes - * Syntax is attribute => array ( objectClass => MUST or MAY, ...) - */ - var $attributes; - - /** - * This variale stores the account type. - * Currently "user", "group" and "host" are supported. - */ - var $type; - - /** This is an array with all module objects */ - var $module; - - /** DN suffix of the account */ - var $dn; - - /** DN suffix of account when it was loaded */ - var $dn_orig; - - /** RDN attribute of this account */ - var $rdn; - - /** original LDAP attributes when account was loaded from LDAP */ - var $attributes_orig; - - /** Module order */ - var $order; - - /** Name of accountContainer variable in session */ - var $base; - - /** This variable stores the name of the currently displayed page */ - var $current_page; - - /** This variable is set to the pagename of a subpage if it should be displayed */ - var $subpage; - - /** True if this is a newly created account */ - var $isNewAccount; - - - /** - * Returns the accout type of this object (e.g. user, group, host). - * - * @return string account type - */ - function get_type() { - return $this->type; - } - - /** - * This function is called when the user clicks on any button on the account pages. - * It prints the HTML code of each account page. - * - * @param array $post HTTP POST variables - */ - function continue_main($post) { - if ($this->subpage=='') $this->subpage='attributes'; - if ($post['form_main_reset']) { - $this->load_account($this->dn_orig); - } - else { - if ($this->current_page==0) { - if ($this->subpage=='attributes') { - $result = 0; - // change dn - if ($post['suffix']!='') $this->dn = $post['suffix']; - // change RDN - if (isset($post['rdn'])) $this->rdn = $post['rdn']; - - // load profile - if ($post['selectLoadProfile'] && $post['loadProfile']) { - $profile = loadAccountProfile($post['selectLoadProfile'], $this->type); - // pass profile to each module - $modules = array_keys($this->module); - foreach ($modules as $module) $this->module[$module]->load_profile($profile); - if (isset($profile['ldap_rdn'][0])) { - $this->rdn = $profile['ldap_rdn'][0]; - } - if (isset($profile['ldap_suffix'][0])) { - $this->dn = $profile['ldap_suffix'][0]; - } - $result = 0; - } - // save account - if ($post['create']) { - $errors = $this->save_account(); - if (is_array($errors)) { - $result = array($errors); - $stopProcessing = true; - } - else $result = 'finish'; - } - } - if ($this->subpage=='finish') { - if ($post['createagain']) { - // Reset objects - $modules = array_keys($this->module); - foreach ($modules as $module) unset($this->module[$module]); - // Reset accountContainer - $this->dn = ''; - $this->dn_orig = ''; - $this->attributes = array(); - $this->order = array(); - $this->current_page = 0; - $this->subpage = ''; - // Add all required objects etc. - $this->new_account(); - $result = 0; - } - if ($post['backmain']) { - // Return to *-list - // *** fixme unset accountContainer in session - metaRefresh("../lists/list".$this->type."s.php"); - exit; - } - if ($post['outputpdf']) { - // Create / display PDf-file - // TODO: add selection for PDF structure in final page - createModulePDF(array($_SESSION[$this->base]), $post['pdfStructure']); - exit; - } - } - } - else $result = call_user_func(array(&$this->module[$this->order[$this->current_page]], 'process_'.$this->subpage), $post); - } - // change to next page - if (is_string($result)) $this->subpage = $result; // go to subpage of current module - $errorsOccured = false; - if (is_array($result)) { // messages were returned, check for errors - $errorKeys = array_keys($result); - for ($i = 0; $i < sizeof($errorKeys); $i++) { - for ($m = 0; $m < sizeof($result[$errorKeys[$i]]); $m++) { - if (($result[$errorKeys[$i]][$m][0] == 'ERROR') || ($result[$errorKeys[$i]][$m][0] == 'WARN')) { - $errorsOccured = true; - break; - } - } - } - } - if (is_int($result) || !$errorsOccured) { // numeric return value means to change to another module - if ($post['form_main_main']) { - $this->current_page = 0; - $this->subpage='attributes'; - } - else for ($i=1; $iorder); $i++ ) - if (isset($post['form_main_'.$this->order[$i]]) && ($this->module[$this->order[$i]]->module_ready())) { - $this->current_page = $i; - $this->subpage='attributes'; - } - } - // Write HTML-Code - echo $_SESSION['header']; - echo ""; - if ($this->dn_orig!='') echo _("Modify Account"); - else echo _("Create new Account"); - echo "\n"; - echo "\n"; - echo "\n"; - echo "
\n"; - // Display error-messages - if (is_array($result)) { - foreach ($result as $result2) { - if (is_array($result2)) { - for ($i=0; $i\n"; - echo "\n"; - return 0; - } - } - if ($this->current_page==0) { - if ($this->subpage=='attributes') { - $modules = array_keys($this->module); - $table = array(); - $disabled = false; - $incompleteModules = array(); - foreach ($modules as $module) { - if (!$this->module[$module]->module_complete()) { - $disabled = true; - $incompleteModules[] = $this->module[$module]->get_alias(); - } - } - if (sizeof($incompleteModules) > 0) { - StatusMessage('INFO', _('Some required information is missing'), - sprintf(_('Please set up all required attributes on page: %s'), implode(", ", $incompleteModules))); - } - } - } - // Create left module-menu - echo "\n\n
"; - echo ""; - - echo "\n"; - echo "
type."edit\">"; - echo _('Please select page:'); - echo "\n"; - $x=0; - // print normal button - echo "subpage == 'finish') echo " disabled"; - echo ">\n
"; - $x++; - // Loop for module - // $x is used to count up tabindex - for ($i=1; $iorder); $i++ ) { - // print normal button - echo "order[$i]."\" type=\"submit\" value=\""; - echo $this->module[$this->order[$i]]->get_alias(); - echo "\" tabindex=$x"; - if ($this->subpage == 'finish') echo " disabled"; - echo ">\n
"; - $x++; - } - if ($this->dn_orig!='') { - echo "subpage == 'finish') echo " disabled"; - echo ">
\n"; - } - echo "
"; - if ($this->current_page==0) { - echo "
type."edit\">"; - echo _('Main'); - echo "\n"; - } - else { - echo "
type."edit\">"; - echo $this->module[$this->order[$this->current_page]]->get_alias($type); - echo "\n"; - } - // display html-code from mdule - $return = array(); - if ($this->current_page == 0) { - if ($this->subpage == 'finish') { - // Show success message - if ($this->dn_orig == '') { - $text = _("Account was created successfully."); - } - else { - $text = _("Account was modified successfully."); - } - $return[] = array( - 0 => array('kind' => 'message', 'type' => 'INFO', 'headline' => _('LDAP operation successful.'), 'text' => $text, - 'td' => array('colspan' => 3))); - $return[] = array( - 0 => array('kind' => 'text', 'text' => '', 'td' => array('colspan' => 3))); - $return[] = array( - 0 => array('kind' => 'input', 'type' => 'submit', 'name' => 'createagain', 'value' => _('Create another account')), - 1 => array('kind' => 'input', 'type' => 'submit', 'name' => 'backmain', 'value' => _('Back to account list'))); - $return[] = array( - 0 => array('kind' => 'text', 'text' => ' ') - ); - $pdfStructures = getPDFStructureDefinitions($type); - $return[] = array( - 0 => array('kind' => 'fieldset', 'legend' => 'PDF', 'td' => array('colspan' => 2), 'value' => array(array( - 0 => array('kind' => 'select', 'name' => 'pdfStructure', 'options' => $pdfStructures), - 1 => array('kind' => 'input', 'type' => 'submit', 'name' => 'outputpdf', 'value' => _('Create PDF file'))) - ))); - } - else { - // loop through all suffixes - $rootsuffix = $_SESSION['config']->get_Suffix($this->type); - foreach ($_SESSION['ldap']->search_units($rootsuffix) as $suffix) { - if ($this->dn == $suffix) $options_selected = $suffix; - $suffixes[] = $suffix; - } - $return[] = array( - 0 => array('kind' => 'text', 'text' => _('Suffix')), - 1 => array('kind' => 'select', 'name' => 'suffix', 'options' => $suffixes, 'options_selected' => array($options_selected)), - 2 => array ('kind' => 'help', 'value' => 'suffix')); - // RDN selection - $rdnlist = getRDNAttributes($this->type); - $rdnSelected = array(); - if ($this->rdn != '') { - $rdnSelected[] = $this->rdn; - } - else { - $rdnSelected[] = $rdnlist[0]; - } - $return[] = array( - 0 => array('kind' => 'text', 'text' => _('RDN identifier')), - 1 => array('kind' => 'select', 'name' => 'rdn', 'options' => $rdnlist, 'options_selected' => $rdnSelected), - 2 => array ('kind' => 'help', 'value' => '301')); - - // Get list of profiles - $profilelist = getAccountProfiles($this->type); - if (count($profilelist)!=0) { - $return[] = array( - 0 => array('kind' => 'text', 'text' => _("Load profile")), - 1 => array('kind' => 'table', 'value' => array(0 => array( - 0 => array('kind' => 'select', 'name' => 'selectLoadProfile', 'options' => $profilelist), - 1 => array('kind' => 'input', 'type' => 'submit', 'name' => 'loadProfile', 'value' => _('Load profile')) - )), - 2 => array('kind' => 'help', 'value' => 'selectLoadProfile')) - ); - } - if ($this->dn_orig!='') $text = _('Modify Account'); - else $text = _('Create Account'); - $return[] = array ( 0 => array ( 'kind' => 'text', 'text' => $text ), - 1 => array ( 'kind' => 'input', 'type' => 'submit', 'name' => 'create', 'value' => $text, 'disabled' => $disabled), - 2 => array ('kind' => 'help', 'value' => 'create')); - } - } - else $return = call_user_func(array($this->module[$this->order[$this->current_page]], 'display_html_'.$this->subpage), $post); - $y = 5000; - $z = 10000; - parseHtml($this->order[$this->current_page], $return, array(), false, $y, $z, $this->type); - // Display rest of html-page - echo "
\n"; - echo "
\n"; - echo "\n"; - echo "\n"; - echo "\n"; - return 0; - } - - /** - * Add attributes to variable. Syntax is array( attribute = array ( objectClass1 => MUST|MAX, objectClass2 => MUST|MAY ), ... ) - * @todo document this function - */ - function add_attributes($objectClass) { - // loop through every existing objectlass and select current objectClass - $line=-1; - for ($i=0; $iobjectClasses) || $i==-1; $i++) { - if (strpos(strtolower($_SESSION['ldap']->objectClasses[$i]), strtolower("NAME '$objectClass'"))) $line = $i; - } - // Return error if objectClass isn't found - if ($line==-1) trigger_error (sprintf(_("ObjectClass %s required but not defined in LDAP."), $objectClass), E_USER_WARNING); - // create array with must-attributes - // Get startposition in string - if (strpos($_SESSION['ldap']->objectClasses[$line], 'MUST (')) { - $string_withtail = substr($_SESSION['ldap']->objectClasses[$line], strpos($_SESSION['ldap']->objectClasses[$line], 'MUST (')+6); - // Now we have a string with all must-attributes - $string = substr($string_withtail, 0, strpos($string_withtail, ')')); - $string = trim($string); - $must = explode(" $ ", $string); - // Ad must - foreach ($must as $attribute) { - if (!isset($this->attributes[$attribute])) $this->attributes[$attribute][$objectClass] = 'MUST'; - else $this->attributes[$attribute][$objectClass] = 'MUST'; - } - } - // create array with may-attributes - // Get startposition in string - if (strpos($_SESSION['ldap']->objectClasses[$line], 'MAY (')) { - $string_withtail = substr($_SESSION['ldap']->objectClasses[$line], strpos($_SESSION['ldap']->objectClasses[$line], 'MAY (')+5); - // Now we have a string with all must-attributes - $string = substr($string_withtail, 0, strpos($string_withtail, ')')); - $string = trim($string); - $may = explode(" $ ", $string); - // Ad may - foreach ($may as $attribute) { - if (!isset($this->attributes[$attribute])) $this->attributes[$attribute][$objectClass] = 'MAY'; - else $this->attributes[$attribute][$objectClass] = 'MAY'; - } - } - // Get attributes of subclasses - while (strpos($_SESSION['ldap']->objectClasses[$line], "SUP ")) { - $string_withtail = substr($_SESSION['ldap']->objectClasses[$line], strpos($_SESSION['ldap']->objectClasses[$line], 'SUP ')+4); - $subclass = substr($string_withtail, 0, strpos($string_withtail, ' ')); - // Add account type to object - for ($i=0; $iobjectClasses) || $i==-1; $i++) { - if (strpos($_SESSION['ldap']->objectClasses[$i], "NAME '$subclass'")) $line = $i; - } - // Return error if objectClass isn't found - if ($line==-1) trigger_error (sprintf(_("ObjectClass %s required but not defined in LDAP."), $objectClass), E_USER_WARNING); - // create array with must-attributes - // Get startposition in string - if (strpos($_SESSION['ldap']->objectClasses[$line], 'MUST (')) { - $string_withtail = substr($_SESSION['ldap']->objectClasses[$line], strpos($_SESSION['ldap']->objectClasses[$line], 'MUST (')+6); - // Now we have a string with all must-attributes - $string = substr($string_withtail, 0, strpos($string_withtail, ')')); - $string = trim($string); - $must = explode(" $ ", $string); - // Ad must - foreach ($must as $attribute) { - if (!isset($this->attributes[$attribute])) $this->attributes[$attribute][$objectClass] = 'MUST'; - else $this->attributes[$attribute][$objectClass] = 'MUST'; - } - } - // create array with may-attributes - // Get startposition in string - if (strpos($_SESSION['ldap']->objectClasses[$line], 'MAY (')) { - $string_withtail = substr($_SESSION['ldap']->objectClasses[$line], strpos($_SESSION['ldap']->objectClasses[$line], 'MAY (')+5); - // Now we have a string with all must-attributes - $string = substr($string_withtail, 0, strpos($string_withtail, ')')); - $string = trim($string); - $may = explode(" $ ", $string); - // Ad may - foreach ($may as $attribute) { - if (!isset($this->attributes[$attribute])) $this->attributes[$attribute][$objectClass] = 'MAY'; - else $this->attributes[$attribute][$objectClass] = 'MAY'; - } - } - } - } - - /** - * This function return ldap attributes - * Syntax is get_attributes($value, $scope) - * $scope = 'objectClass', $value = objectClass return value are all attributes of objectClass - * $scope = 'attribute', $value = attribute returns alle objectClasses which are using the attribute - * - * @todo Obsolete function??? - */ - function get_attributes($value, $scope) { - if ($scope=='attribute' && isset($this->attributes[$value])) return $this->attributes[$value]; - if ($scope=='objectClass') { - $keys = array_keys($this->attributes); - foreach ($keys as $attribute) { - if (isset($this->attributes[$attribute][$value])) $return[$attribute] = $this->attributes[$attribute][$value]; - } - return $return; - } - return 0; - } - - - /** - * This function returns all LDAP attributes which are used by the given object class. - * LDAP attributs which are already in use by another object class are passed as reference. - *
Therefore this function must be called as reference: $result =& ..get_module_attributes - * - * @param string $objectClass object class name - * @param boolean $original If original is true references will be set to original attributes. This are the original attributes - * when an LDAP entry is loaded. - * @return array list of attributes - */ - function get_module_attributes($objectClass, $original=false) { - // Add account type to object - $line=-1; - for ($i=0; $iobjectClasses) || $i==-1; $i++) { - if (strpos(strtolower($_SESSION['ldap']->objectClasses[$i]), strtolower("NAME '$objectClass'"))) $line = $i; - } - // Return empty array if no objectClass wasn't found - if ($line==-1) return array(); - //if ($line==-1) trigger_error (sprintf(_("ObjectClass %s required but not defined in ldap."), $objectClass), E_USER_WARNING); - // get casesensitive objectClass name - $objectClassName = substr($_SESSION['ldap']->objectClasses[$line], 6+strpos($_SESSION['ldap']->objectClasses[$line], "NAME '"), strlen($objectClass) ); - if (strpos($_SESSION['ldap']->objectClasses[$line], 'MUST (')) { - $string_withtail = substr($_SESSION['ldap']->objectClasses[$line], strpos($_SESSION['ldap']->objectClasses[$line], 'MUST (')+6); - // Now we have a string with all must-attributes - $string = substr($string_withtail, 0, strpos($string_withtail, ')')); - $string = trim($string); - // Add must - foreach (explode(" $ ", $string) as $attribute) { - $return[$attribute] = array(''); - } - } - elseif (strpos($_SESSION['ldap']->objectClasses[$line], 'MUST ')) { - $string_withtail = substr($_SESSION['ldap']->objectClasses[$line], strpos($_SESSION['ldap']->objectClasses[$line], 'MUST ')+5); - // Now we have a string with the must-attribute - $string = substr($string_withtail, 0, strpos($string_withtail, ' ')); - $string = trim($string); - // Add must - $return[$string] = array(''); - } - // create array with may-attributes - // Get startposition in string - if (strpos($_SESSION['ldap']->objectClasses[$line], 'MAY (')) { - $string_withtail = substr($_SESSION['ldap']->objectClasses[$line], strpos($_SESSION['ldap']->objectClasses[$line], 'MAY (')+5); - // Now we have a string with all must-attributes - $string = substr($string_withtail, 0, strpos($string_withtail, ')')); - $string = trim($string); - // Add may - foreach (explode(" $ ", $string) as $attribute) { - $return[$attribute] = array(''); - } - } - elseif (strpos($_SESSION['ldap']->objectClasses[$line], 'MAY ')) { - $string_withtail = substr($_SESSION['ldap']->objectClasses[$line], strpos($_SESSION['ldap']->objectClasses[$line], 'MAY ')+4); - // Now we have a string with the may-attribute - $string = substr($string_withtail, 0, strpos($string_withtail, ' ')); - $string = trim($string); - // Add must - $return[$string] = array(''); - } - // Get attributes of subclasses - while (strpos($_SESSION['ldap']->objectClasses[$line], "SUP ")) { - $string_withtail = substr($_SESSION['ldap']->objectClasses[$line], strpos($_SESSION['ldap']->objectClasses[$line], 'SUP ')+4); - $subclass = substr($string_withtail, 0, strpos($string_withtail, ' ')); - // Add account type to object - for ($i=0; $iobjectClasses) || $i==-1; $i++) { - if (strpos($_SESSION['ldap']->objectClasses[$i], "NAME '$subclass'")) $line = $i; - } - // Return error if objectClass isn't found - if ($line==-1) trigger_error (sprintf(_("ObjectClass %s required but not defined in LDAP."), $subclass), E_USER_WARNING); - // create array with must-attributes - // Get startposition in string - if (strpos($_SESSION['ldap']->objectClasses[$line], 'MUST (')) { - $string_withtail = substr($_SESSION['ldap']->objectClasses[$line], strpos($_SESSION['ldap']->objectClasses[$line], 'MUST (')+6); - // Now we have a string with all must-attributes - $string = substr($string_withtail, 0, strpos($string_withtail, ')')); - $string = trim($string); - // Add must - foreach (explode(" $ ", $string) as $attribute) { - $return[$attribute] = array(''); - } - } - elseif (strpos($_SESSION['ldap']->objectClasses[$line], 'MUST ')) { - $string_withtail = substr($_SESSION['ldap']->objectClasses[$line], strpos($_SESSION['ldap']->objectClasses[$line], 'MUST ')+5); - // Now we have a string with the must-attribute - $string = substr($string_withtail, 0, strpos($string_withtail, ' ')); - $string = trim($string); - // Add must - $return[$string] = array(''); - } - // create array with may-attributes - // Get startposition in string - if (strpos($_SESSION['ldap']->objectClasses[$line], 'MAY (')) { - $string_withtail = substr($_SESSION['ldap']->objectClasses[$line], strpos($_SESSION['ldap']->objectClasses[$line], 'MAY (')+5); - // Now we have a string with all must-attributes - $string = substr($string_withtail, 0, strpos($string_withtail, ')')); - $string = trim($string); - // Add may - foreach (explode(" $ ", $string) as $attribute) { - $return[$attribute] = array(''); - } - } - elseif (strpos($_SESSION['ldap']->objectClasses[$line], 'MAY ')) { - $string_withtail = substr($_SESSION['ldap']->objectClasses[$line], strpos($_SESSION['ldap']->objectClasses[$line], 'MAY ')+4); - // Now we have a string with the may-attribute - $string = substr($string_withtail, 0, strpos($string_withtail, ' ')); - $string = trim($string); - // Add must - $return[$string] = array(''); - } - } - - // make references with attibutes which are used by more than one module - $newattributes = array_keys($return); - $module = array_keys($this->module); - if (!$original) { - // Only add attributes when original is false. We don't want to add them twice - $this->add_attributes($objectClass); - for ($i=0; $imodule[$module[$i]]->attributes[$attribute]) && ($attribute!='objectClass')) - $return[$attribute] =& $this->module[$module[$i]]->attributes[$attribute]; - } - } - else { - for ($i=0; $imodule[$module[$i]]->orig[$attribute]) && ($attribute!='objectClass')) - $return[$attribute] =& $this->module[$module[$i]]->orig[$attribute]; - } - } - $return['objectClass'] = array(); - return $return; - } - - /** - * This function checks which LDAP attributes have changed while the account was edited. - * - * @param array $attributes list of current LDAP attributes - * @param array $orig list of old attributes when account was loaded - * @return array an array which can be passed to $this->saveAccount() - */ - function save_module_attributes($attributes, $orig) { - // Get list of all "easy" attributes - $attr_names = array_keys($attributes); - // Get attributes which should be added - for ($i=0; $idn]['add'] = $toadd; - if (count($torem)!=0) $return[$this->dn]['remove'] = $torem; - if (count($tomodify)!=0) $return[$this->dn]['modify'] = $tomodify; - if (count($notchanged)!=0) $return[$this->dn]['notchanged'] = $notchanged; - return $return; - } - - /** - * Loads an LDAP account with the given DN. - * - * @param string $dn the DN of the account - */ - function load_account($dn) { - $modules = $_SESSION['config']->get_AccountModules($this->type); - $search = substr($dn, 0, strpos($dn, ',')); - $result = ldap_search($_SESSION['ldap']->server(), $dn, $search); - $entry = ldap_first_entry($_SESSION['ldap']->server(), $result); - $this->dn = substr($dn, strpos($dn, ',')+1); - $this->dn_orig = $dn; - // extract RDN - $this->rdn = split("=", substr($dn, 0, strpos($dn, ','))); - $this->rdn = $this->rdn[0]; - $attr = ldap_get_attributes($_SESSION['ldap']->server(), $entry); - $attrNames = array_keys($attr); - // remove 'count' entries and numerical entries - for ($i = 0; $i < count($attr); $i++) { - if (isset($attr[$i])) unset($attr[$i]); - } - for ($i = 0; $i < sizeof($attrNames); $i++) unset($attr[$attrNames[$i]]['count']); - unset($attr['count']); - // save original attributes - $this->attributes_orig = $attr; - - foreach ($modules as $module) { - if (!isset($this->module[$module])) { - $this->module[$module] = new $module($this->type); - $this->module[$module]->init($this->base); - } - $this->module[$module]->load_attributes($attr); - } - - // sortm modules and make all active because all required attributes should be set - $module = array_keys ($this->module); - $modulelist = array(); - // loop until all modules are in order. - // We don't want to loop forever - $remain = count($module) * count($module); - $order = array(); - while ( (count($module) != count($modulelist)) && ($remain!=0) ) { - $remain--; - foreach ($module as $moduleitem) { - $required = $this->module[$moduleitem]->get_dependencies($this->type); - $everything_found = true; - if (is_array($required['depends'])) { - foreach ($required['depends'] as $requireditem) - if (!in_array($requireditem, $modulelist)) $everthing_found = false; - } - if ($everything_found && !in_array($moduleitem, $order) ) $order[] = $moduleitem; - } - } - // Write Module-Order in variable - array_unshift($order, 'main'); - $this->order = $order; - return 0; - } - - /** - * This function will prepare the object for a new account. - */ - function new_account() { - $this->isNewAccount = true; - $modules = $_SESSION['config']->get_AccountModules($this->type); - foreach ($modules as $module) { - $this->module[$module] = new $module($this->type); - $this->module[$module]->init($this->base); - } - - $module = array_keys ($this->module); - $modulelist = array(); - // loop until all modules are in order. - // We don't want to loop forever - $remain = count($module) * count($module); - $order = array(); - while ( (count($module) != count($modulelist)) && ($remain!=0) ) { - $remain--; - foreach ($module as $moduleitem) { - $required = $this->module[$moduleitem]->get_dependencies($this->type); - $everything_found = true; - if (is_array($required['require'])) { - foreach ($required['require'] as $requireditem) - if (!in_array($reuquireditem, $modulelist)) $everthing_found = false; - } - if ($everything_found && !in_array($moduleitem, $order) ) $order[] = $moduleitem; - } - } - // Write Module-Order in variable - array_unshift($order, 'main'); - $this->order = $order; - $profile = loadAccountProfile('default', $this->type); - // pass profile to each module - $modules = array_keys($this->module); - foreach ($modules as $module) $this->module[$module]->load_profile($profile); - if (isset($profile['ldap_rdn'][0])) { - $this->rdn = $profile['ldap_rdn'][0]; - } - if (isset($profile['ldap_suffix'][0])) { - $this->dn = $profile['ldap_suffix'][0]; - } - return 0; - } - - /** - * This function will save an account to the LDAP database. - * - * @return array list of status messages if any errors occured - */ - function save_account() { - $module = array_keys ($this->module); - $attributes = array(); - // load attributes - foreach ($module as $singlemodule) { - // load changes - $temp = $this->module[$singlemodule]->save_attributes(); - // merge changes - $DNs = array_keys($temp); - // *** fixme don't include references - if (is_array($temp)) $attributes = array_merge_recursive($temp, $attributes); - for ($i=0; $irdn; - $added = false; - foreach ($attributes as $DN) { - if (isset($DN['modify'][$search][0]) && !$added) { - $attributes[$search.'='.$DN['modify'][$search][0].','.$this->dn] = $attributes[$this->dn]; - unset ($attributes[$this->dn]); - $this->dn = $search.'='.$DN['modify'][$search][0].','.$this->dn; - $added = true; - } - if (isset($DN['add'][$search][0]) && !$added) { - $attributes[$search.'='.$DN['add'][$search][0].','.$this->dn] = $attributes[$this->dn]; - unset ($attributes[$this->dn]); - $this->dn = $search.'='.$DN['add'][$search][0].','.$this->dn; - $added = true; - } - if (isset($DN['notchanged'][$search][0]) && !$added) { - $attributes[$search.'='.$DN['notchanged'][$search][0].','.$this->dn] = $attributes[$this->dn]; - unset ($attributes[$this->dn]); - $this->dn = $search.'='.$DN['notchanged'][$search][0].','.$this->dn; - $added = true; - } - } - // Add old dn if dn hasn't changed - if (!$added) { - $attributes[$this->dn_orig] = $attributes[$this->dn]; - unset ($attributes[$this->dn]); - $this->dn = $this->dn_orig; - } - // Set to true if an real error has happened - $stopprocessing = false; - // Add new DN - if (isset($attributes[$DNs[$i]]['errors'])) { - foreach ($attributes[$DNs[$i]]['errors'] as $singleerror) { - $errors[] = $singleerror; - if ($singleerror[0] = 'ERROR') $stopprocessing = true; - } - } - // fixme *** ad update_cache after every ldap-change - if (!$stopprocessing) { - if ($this->dn != $this->dn_orig) { - // move existing DN - if ($this->dn_orig!='') { - // merge attributes together - $attr = array(); - if (is_array($attributes[$this->dn]['add'])) $attr = array_merge_recursive($attr, $attributes[$this->dn]['add']); - if (is_array($attributes[$this->dn]['notchanged'])) $attr = array_merge_recursive($attr, $attributes[$this->dn]['notchanged']); - if (is_array($attributes[$this->dn]['modify'])) $attr = array_merge_recursive($attr, $attributes[$this->dn]['modify']); - // add attributes which are not controlled by modules from original account - $attrNames = array_keys($this->attributes_orig); - for ($i = 0; $i < sizeof($attrNames); $i++) { - if (!isset($attr[$attrNames[$i]])) $attr[$attrNames[$i]] = $this->attributes_orig[$attrNames[$i]]; - } - $success = ldap_add($_SESSION['ldap']->server(), $this->dn, $attr); - if ($success) { - $_SESSION['cache']->update_cache($this->$dn, 'add', $attr); - $success = ldap_delete($_SESSION['ldap']->server(), $this->dn_orig); - if (!$success) { - $errors[] = array('ERROR', sprintf(_('Was unable to delete DN: %s.'), $this->dn_orig), ldap_error($_SESSION['ldap']->server())); - $stopprocessing = true; - } - if ($success) - $_SESSION['cache']->update_cache($this->$dn, 'delete_dn'); - } - if (!$success) { - $errors[] = array('ERROR', sprintf(_('Was unable to create DN: %s.'), $this->dn), ldap_error($_SESSION['ldap']->server())); - $stopprocessing = true; - } - } - // create complete new dn - else { - $attr = array(); - if (is_array($attributes[$this->dn]['add'])) $attr = array_merge_recursive($attr, $attributes[$this->dn]['add']); - if (is_array($attributes[$this->dn]['notchanged'])) $attr = array_merge_recursive($attr, $attributes[$this->dn]['notchanged']); - if (is_array($attributes[$this->dn]['modify'])) $attr = array_merge_recursive($attr, $attributes[$this->dn]['modify']); - $success = ldap_add($_SESSION['ldap']->server(), $this->dn, $attr); - if (!$success) { - $errors[] = array('ERROR', sprintf(_('Was unable to create DN: %s.'), $this->dn), ldap_error($_SESSION['ldap']->server())); - $stopprocessing = true; - } - else - $_SESSION['cache']->update_cache($this->$dn, 'add', $attr); - } - unset($attributes[$this->dn]); - } - } - $DNs = array_keys($attributes); - for ($i=0; $iserver(), $DNs[$i], $attributes[$DNs[$i]]['modify']); - if (!$success) { - $errors[] = array('ERROR', sprintf(_('Was unable to modify attribtues from DN: %s.'), $DNs[$i]), ldap_error($_SESSION['ldap']->server())); - $stopprocessing = true; - } - else - $_SESSION['cache']->update_cache($this->$dn, 'modify', $attributes[$this->dn]['modify']); - } - // add attributes - if (isset($attributes[$DNs[$i]]['add']) && !$stopprocessing) { - $success = @ldap_mod_add($_SESSION['ldap']->server(), $DNs[$i], $attributes[$DNs[$i]]['add']); - if (!$success) { - $errors[] = array('ERROR', sprintf(_('Was unable to add attribtues to DN: %s.'), $DNs[$i]), ldap_error($_SESSION['ldap']->server())); - $stopprocessing = true; - } - else - $_SESSION['cache']->update_cache($this->$dn, 'add', $attributes[$this->dn]['add']); - } - // removce attributes - if (isset($attributes[$DNs[$i]]['remove']) && !$stopprocessing) { - $success = @ldap_mod_del($_SESSION['ldap']->server(), $DNs[$i], $attributes[$DNs[$i]]['remove']); - if (!$success) { - $errors[] = array('ERROR', sprintf(_('Was unable to remove attribtues from DN: %s.'), $DNs[$i]), ldap_error($_SESSION['ldap']->server())); - $stopprocessing = true; - } - else - $_SESSION['cache']->update_cache($this->$dn, 'remove', $attributes[$this->dn]['remove']); - } - } - } - - if (!$stopprocessing) { - foreach ($attributes as $DN) { - if (is_array($DN['lamdaemon']['command'])) $result = lamdaemon($DN['lamdaemon']['command']); - // Error somewhere in lamdaemon - if (is_array($result)) - foreach ($result as $singleresult) { - if (is_array($singleresult)) { - if ($singleresult[0] = 'ERROR') $stopprocessing = true; - $temparray[0] = $singleresult[0]; - $temparray[1] = _($singleresult[1]); - $temparray[2] = _($singleresult[2]); - $errors[] = $temparray; - } - } - } - } - if (count($errors)!=0) return $errors; - return 0; - } - - /** - * Returns a list of possible PDF entries for this account. - * - * @param string $account_type account type - * - * @return list of PDF entries (array( => )) - */ - function get_pdfEntries($acount_type) { - $return = array(); - while(($current = current($this->module)) != null) { - $return = array_merge($return,$current->get_pdfEntries($account_type)); - next($this->module); - } - $return = array_merge($return,array('main_dn' => array('' . _('DN') . '' . $this->dn . ''))); - return $return; - } - - } -?> diff --git a/lam/lib/modules/account.inc b/lam/lib/modules/account.inc deleted file mode 100644 index a7991613..00000000 --- a/lam/lib/modules/account.inc +++ /dev/null @@ -1,224 +0,0 @@ - array(), 'conflicts' => array()); - // available PDF fields - $return['PDF_fields'] = array( - 'description' - ); - // help Entries - $return['help'] = array ( - 'host' => array( - 'description' => array ( - "Headline" => _("Gecos"), - "Text" => _("Host description. If left empty host name will be used.") - ) - ) - ); - // upload columns - if ($_SESSION['loggedIn']) { - if ($this->get_scope() == 'user') { - $return['upload_columns'][] = array( - 'name' => 'account_hosts', - 'description' => _('Host list'), - 'help' => 'host' - ); - } - $modules = $_SESSION['config']->get_AccountModules($this->get_scope()); - if (!in_array('posixAccount', $modules)) { - $return['upload_columns'][] = array( - 'name' => 'account_uid', - 'description' => _('User name'), - 'help' => 'uid', - 'required' => true - ); - $return['upload_columns'] = array( - array( - 'name' => 'account_description', - 'description' => _('Description'), - 'help' => 'description' - ) - ); - } - } - return $return; - } - - // Constructor - function init($base) { - // call parent init - parent::init($base); - } - - /** this functin fills the error message array with messages - **/ - function load_Messages() { - } - - /* This function returns true if all required attributes from other - * modules are set. This is required to prevent undefined states - */ - function module_ready() { - return true; - } - - /* This functions return true - * if all needed settings are done - */ - function module_complete() { - if (!$this->module_ready()) return false; - return true; - } - - /* This function returns a list of all html-pages in module - * This is usefull for mass upload and pdf-files - * because lam can walk trough all pages itself and do some - * error checkings - */ - function pages() { - return array('attributes'); - } - - /* This function returns an array with 4 entries: - * array( DN1 ('add' => array($attr), 'remove' => array($attr), 'modify' => array($attr), 'lamdaemon' => array(cmds)), DN2 .... ) - * DN is the DN to change. It may be possible to change several DNs, - * e.g. create a new user and add him to some groups via attribute memberUid - * add are attributes which have to be added to ldap entry - * remove are attributes which have to be removed from ldap entry - * lamdaemon are lamdaemon commands to modify homedir, quotas, ... - */ - function save_attributes() { - // Get easy attributes - $return = $_SESSION[$this->base]->save_module_attributes($this->attributes, $this->orig); - // Return attributes - return $return; - } - - function delete_attributes($post) { - return 0; - } - - /* Write variables into object and do some regexp checks - */ - function process_attributes(&$post) { - // Load attributes - $this->attributes['description'][0] = $post['description']; - return 0; - } - - /* This function will create the html-page - * to show a page with all attributes. - * It will output a complete html-table - */ - function display_html_attributes(&$post) { - $return[] = array ( 0 => array ( 'kind' => 'text', 'text' => _('Description') ), - 1 => array ( 'kind' => 'input', 'name' => 'description', 'type' => 'text', 'size' => '30', - 'maxlength' => '255', 'value' => $this->attributes['description'][0] ), - 2 => array ('kind' => 'help', 'value' => 'description')); - - return $return; - } - - function display_html_delete(&$post) { - return 0; - } - - /* - * (non-PHPDoc) - * @see baseModule#get_pdfEntries - */ - function get_pdfEntries($account_type = "user") { - return array('account_description' => array('' . _('Description') . '' . $this->attributes['description'][0] . '')); - } - - /** - * In this function the LDAP account is built up. - * - * @param array $rawAccounts list of hash arrays (name => value) from user input - * @param array $partialAccounts list of hash arrays (name => value) which are later added to LDAP - * @param array $ids list of IDs for column position (e.g. "posixAccount_uid" => 5) - * @return array list of error messages if any - */ - function build_uploadAccounts($rawAccounts, $ids, &$partialAccounts) { - $messages = array(); - for ($i = 0; $i < sizeof($rawAccounts); $i++) { - // add object class - if (!in_array("account", $partialAccounts[$i]['objectClass'])) $partialAccounts[$i]['objectClass'][] = "account"; - $modules = $_SESSION['config']->get_AccountModules($this->get_scope()); - if (!in_array('posixAccount', $modules)) { - // description - if ($rawAccounts[$i][$ids['account_description']] && ($rawAccounts[$i][$ids['account_description']] != '')) { - $partialAccounts[$i]['description'] = $rawAccounts[$i][$ids['account_description']]; - } - else { - $partialAccounts[$i]['description'] = $rawAccounts[$i][$ids['account_uid']]; - } - // user name - if (get_preg($rawAccounts[$i][$ids['account_uid']], 'username')) { - $partialAccounts[$i]['uid'] = $rawAccounts[$i][$ids['account_uid']]; - } - else { - $errMsg = $this->messages['uid'][7]; - array_push($errMsg, array($i)); - $triggered_messages[] = $errMsg; - } - } - if ($this->get_scope() == 'user') { - } - } - return $messages; - } - -} - -?> diff --git a/lam/lib/modules/ieee802device.inc b/lam/lib/modules/ieee802device.inc deleted file mode 100644 index 84225b4f..00000000 --- a/lam/lib/modules/ieee802device.inc +++ /dev/null @@ -1,265 +0,0 @@ - array(), 'conflicts' => array()); - // help Entries - $return['help'] = array( - 'mac' => array( - "Headline" => _("MAC address"), - "Text" => _("This is the MAC address of the network card of the device (e.g. 00:01:02:DE:EF:18).") - ), - 'macList' => array( - "Headline" => _("MAC address list"), - "Text" => _("This is a comma separated list of MAC addresses.") - )); - // upload fields - $return['upload_columns'] = array( - array( - 'name' => 'ieee802Device_mac', - 'description' => _('MAC address'), - 'help' => 'macList', - 'example' => '00:01:02:DE:EF:18' - ) - ); - // available PDF fields - $return['PDF_fields'] = array( - 'macAddress' - ); - return $return; - } - - /** - * This function fills the error message array with messages - */ - function load_Messages() { - $this->messages['mac'][0] = array('ERROR', 'MAC address is invalid!'); // third array value is set dynamically - $this->messages['mac'][1] = array('ERROR', _('Account %s:') . ' ieee802Device_mac', 'MAC address is invalid!'); - } - - /** - * This function loads all needed attributes into the object. - * - * @param array $attr an array as it is retured from ldap_get_attributes - */ - function load_attributes($attr) { - $this->attributes['objectClass'] = array(); - $this->attributes['macAddress'] = array(); - $this->orig['objectClass'] = array(); - $this->orig['macAddress'] = array(); - if (isset($attr['objectClass'])) { - $this->attributes['objectClass'] = $attr['objectClass']; - $this->orig['objectClass'] = $attr['objectClass']; - } - if (isset($attr['macAddress'])) { - $this->attributes['macAddress'] = $attr['macAddress']; - $this->orig['macAddress'] = $attr['macAddress']; - } - // add object class if needed - if (! in_array('ieee802Device', $this->orig['objectClass'])) { - $this->attributes['objectClass'][] = 'ieee802Device'; - } - return 0; - } - - /** - * Returns a list of modifications which have to be made to the LDAP account. - * - * @return array list of modifications - *
This function returns an array with 3 entries: - *
array( DN1 ('add' => array($attr), 'remove' => array($attr), 'modify' => array($attr)), DN2 .... ) - *
DN is the DN to change. It may be possible to change several DNs (e.g. create a new user and add him to some groups via attribute memberUid) - *
"add" are attributes which have to be added to LDAP entry - *
"remove" are attributes which have to be removed from LDAP entry - *
"modify" are attributes which have to been modified in LDAP entry - */ - function save_attributes() { - return $_SESSION[$this->base]->save_module_attributes($this->attributes, $this->orig); - } - - /** - * This function returns a list of all account pages in this module. - */ - function pages() { - return array('attributes'); - } - - /** - * This function will create the meta HTML code to show a page with all attributes. - * - * @param array $post HTTP-POST values - */ - function display_html_attributes(&$post) { - $return = array(); - // list current MACs - for ($i = 0; $i < sizeof($this->attributes['macAddress']); $i++) { - $return[] = array( - 0 => array('kind' => 'text', 'text' => _('MAC address')), - 1 => array('kind' => 'input', 'name' => 'macAddress' . $i, 'type' => 'text', 'size' => '17', 'maxlength' => '17', 'value' => $this->attributes['macAddress'][$i]), - 2 => array('kind' => 'input', 'type' => 'submit', 'name' => 'delMAC' . $i, 'value' => _("Remove")), - 3 => array('kind' => 'help', 'value' => 'mac')); - } - // input box for new MAC - $return[] = array( - 0 => array('kind' => 'text', 'text' => _('New MAC address')), - 1 => array('kind' => 'input', 'name' => 'macAddress', 'type' => 'text', 'size' => '17', 'maxlength' => '17', 'value' => ''), - 2 => array('kind' => 'input', 'type' => 'submit', 'name' => 'addMAC', 'value' => _("Add")), - 3 => array('kind' => 'help', 'value' => 'mac'), - 4 => array('kind' => 'input', 'type' => 'hidden', 'value' => sizeof($this->attributes['macAddress']), 'name' => 'mac_number')); - return $return; - } - - /** - * Write variables into object and do some regex checks - * - * @param array $post HTTP-POST values - */ - function process_attributes(&$post) { - $this->triggered_messages = array(); - $this->attributes['macAddress'] = array(); - // check old MACs - if (isset($post['mac_number'])) { - for ($i = 0; $i < $post['mac_number']; $i++) { - if (isset($post['delMAC' . $i])) continue; - if (isset($post['macAddress' . $i]) && ($post['macAddress' . $i] != "")) { - // check if address has correct format - if (!get_preg($post['macAddress' . $i], 'macAddress')) { - $message = $this->messages['mac'][0]; - $message[] = $post['macAddress' . $i]; - $this->triggered_messages[] = array($message); - } - $this->attributes['macAddress'][] = $post['macAddress' . $i]; - } - } - } - // check new MAC - if (isset($post['macAddress']) && ($post['macAddress'] != "")) { - // check if address has correct format - if (get_preg($post['macAddress'], 'macAddress')) { - $this->attributes['macAddress'][] = $post['macAddress']; - } - else { - $message = $this->messages['mac'][0]; - $message[] = $post['macAddress']; - $this->triggered_messages[] = array($message); - } - } - $this->attributes['macAddress'] = array_unique($this->attributes['macAddress']); - if (sizeof($this->triggered_messages) > 0) { - $this->inputCorrect = false; - return $this->triggered_messages; - } - else { - $this->inputCorrect = true; - return 0; - } - } - - /** - * This function returns true if all needed settings are done. - */ - function module_complete() { - return $this->inputCorrect; - } - - /** - * Returns true if all settings on module page are correct. - */ - function module_ready() { - return $this->inputCorrect; - } - - /** - * In this function the LDAP account is built up. - * - * @param array $rawAccounts list of hash arrays (name => value) from user input - * @param array $partialAccounts list of hash arrays (name => value) which are later added to LDAP - * @param array $ids list of IDs for column position (e.g. "posixAccount_uid" => 5) - * @return array list of error messages if any - */ - function build_uploadAccounts($rawAccounts, $ids, &$partialAccounts) { - $messages = array(); - for ($i = 0; $i < sizeof($rawAccounts); $i++) { - // add object class - if (!in_array("ieee802Device", $partialAccounts[$i]['objectClass'])) $partialAccounts[$i]['objectClass'][] = "ieee802Device"; - // add MACs - if ($rawAccounts[$i][$ids['ieee802Device_mac']] != "") { - $macs = explode(',', $rawAccounts[$i][$ids['ieee802Device_mac']]); - // check format - for ($m = 0; $m < sizeof($macs); $m++) { - if (get_preg($macs[$m], 'macAddress')) { - $partialAccounts[$i]['macAddress'][] = $macs[$m]; - } - else { - $errMsg = $this->messages['mac'][1]; - array_push($errMsg, array($i)); - $messages[] = $errMsg; - } - } - } - } - return $messages; - } - - /** - * Returns a list of PDF entries - */ - function get_pdfEntries() { - $return = array(); - if (sizeof($this->attributes['macAddress']) > 0) { - $return['ieee802Device_macAddress'][0] = '' . _('MAC address(es)') . '' . implode(', ', $this->attributes['macAddress']) . ''; - } - return $return; - } - -} - - -?> diff --git a/lam/lib/modules/inetLocalMailRecipient.inc b/lam/lib/modules/inetLocalMailRecipient.inc deleted file mode 100644 index d7be2626..00000000 --- a/lam/lib/modules/inetLocalMailRecipient.inc +++ /dev/null @@ -1,383 +0,0 @@ - array(), 'conflicts' => array()); - // help Entries - $return['help'] = array( - 'routingAdr' => array( - "Headline" => _("Routing address"), - "Text" => _("This is the target email address for the user's mails.") - ), - 'localAdr' => array( - "Headline" => _("Local address"), - "Text" => _("This is one of the users public email addresses.") - ), - 'localAdrList' => array( - "Headline" => _("Local address list"), - "Text" => _("This is a comma separated list of the users public email addresses.") - ), - 'host' => array( - "Headline" => _("Mail server"), - "Text" => _("This is the mail server for the user.") - )); - // profile options - $return['profile_options'] = array( - array( - 0 => array('kind' => 'text', 'text' => _('Mail server') . ":"), - 1 => array('kind' => 'input', 'name' => 'inetLocalMailRecipient_host', 'type' => 'text', 'size' => '30', 'maxlength' => '255'), - 2 => array('kind' => 'help', 'value' => 'host')) - ); - // profile checks - $return['profile_checks']['inetLocalMailRecipient_host'] = array( - 'type' => 'ext_preg', - 'regex' => 'DNSname', - 'error_message' => $this->messages['host'][0]); - // profile mappings - $return['profile_mappings'] = array( - 'inetLocalMailRecipient_host' => 'mailHost' - ); - // upload fields - $return['upload_columns'] = array( - array( - 'name' => 'inetLocalMailRecipient_routingAdr', - 'description' => _('Routing address'), - 'help' => 'routingAdr', - 'example' => 'smiller@otherdomain.org' - ), - array( - 'name' => 'inetLocalMailRecipient_localAdr', - 'description' => _('Local address list'), - 'help' => 'localAdrList', - 'example' => 'smiller@yourdomain.org' - ), - array( - 'name' => 'inetLocalMailRecipient_server', - 'description' => _('Mail server'), - 'help' => 'host', - 'example' => 'mail.yourdomain.org' - ) - ); - // available PDF fields - $return['PDF_fields'] = array( - 'routingAdr', 'localAdr', 'host' - ); - return $return; - } - - /** - * This function fills the error message array with messages - */ - function load_Messages() { - $this->messages['routingAdr'][0] = array('ERROR', 'Routing address is invalid!'); // third array value is set dynamically - $this->messages['routingAdr'][1] = array('ERROR', _('Account %s:') . ' inetLocalMailRecipient_routingAdr', 'Routing address is invalid!'); - $this->messages['localAdr'][0] = array('ERROR', 'Local address is invalid!'); // third array value is set dynamically - $this->messages['localAdr'][1] = array('ERROR', _('Account %s:') . ' inetLocalMailRecipient_localAdr', 'Local address is invalid!'); - $this->messages['host'][0] = array('ERROR', 'Mail server is invalid!'); // third array value is set dynamically - $this->messages['host'][1] = array('ERROR', _('Account %s:') . ' inetLocalMailRecipient_server', 'Mail server is invalid!'); - } - - /** - * This function loads all needed attributes into the object. - * - * @param array $attr an array as it is retured from ldap_get_attributes - */ - function load_attributes($attr) { - $this->attributes['objectClass'] = array(); - $this->attributes['mailLocalAddress'] = array(); - $this->attributes['mailRoutingAddress'] = array(); - $this->attributes['mailHost'] = array(); - $this->orig['objectClass'] = array(); - $this->orig['mailLocalAddress'] = array(); - $this->orig['mailRoutingAddress'] = array(); - $this->orig['mailHost'] = array(); - if (isset($attr['objectClass'])) { - $this->attributes['objectClass'] = $attr['objectClass']; - $this->orig['objectClass'] = $attr['objectClass']; - } - if (isset($attr['mailLocalAddress'])) { - $this->attributes['mailLocalAddress'] = $attr['mailLocalAddress']; - $this->orig['mailLocalAddress'] = $attr['mailLocalAddress']; - } - if (isset($attr['mailRoutingAddress'])) { - $this->attributes['mailRoutingAddress'] = $attr['mailRoutingAddress']; - $this->orig['mailRoutingAddress'] = $attr['mailRoutingAddress']; - } - if (isset($attr['mailHost'])) { - $this->attributes['mailHost'] = $attr['mailHost']; - $this->orig['mailHost'] = $attr['mailHost']; - } - // add object class if needed - if (! in_array('inetLocalMailRecipient', $this->orig['objectClass'])) { - $this->attributes['objectClass'][] = 'inetLocalMailRecipient'; - } - return 0; - } - - /** - * Returns a list of modifications which have to be made to the LDAP account. - * - * @return array list of modifications - *
This function returns an array with 3 entries: - *
array( DN1 ('add' => array($attr), 'remove' => array($attr), 'modify' => array($attr)), DN2 .... ) - *
DN is the DN to change. It may be possible to change several DNs (e.g. create a new user and add him to some groups via attribute memberUid) - *
"add" are attributes which have to be added to LDAP entry - *
"remove" are attributes which have to be removed from LDAP entry - *
"modify" are attributes which have to been modified in LDAP entry - */ - function save_attributes() { - return $_SESSION[$this->base]->save_module_attributes($this->attributes, $this->orig); - } - - /** - * This function returns a list of all account pages in this module. - */ - function pages() { - return array('attributes'); - } - - /** - * This function will create the meta HTML code to show a page with all attributes. - * - * @param array $post HTTP-POST values - */ - function display_html_attributes(&$post) { - $return = array(); - // mail routing address - $return[] = array( - 0 => array('kind' => 'text', 'text' => _('Routing address')), - 1 => array('kind' => 'input', 'name' => 'routingAdr', 'type' => 'text', 'size' => '20', 'value' => $this->attributes['mailRoutingAddress'][0]), - 2 => array('kind' => 'help', 'value' => 'routingAdr')); - // mail server - $return[] = array( - 0 => array('kind' => 'text', 'text' => _('Mail server')), - 1 => array('kind' => 'input', 'name' => 'host', 'type' => 'text', 'size' => '20', 'value' => $this->attributes['mailHost'][0]), - 2 => array('kind' => 'help', 'value' => 'host')); - // list current local addresses - for ($i = 0; $i < sizeof($this->attributes['mailLocalAddress']); $i++) { - $return[] = array( - 0 => array('kind' => 'text', 'text' => _('Local address')), - 1 => array('kind' => 'input', 'name' => 'localAdr' . $i, 'type' => 'text', 'size' => '20', 'value' => $this->attributes['mailLocalAddress'][$i]), - 2 => array('kind' => 'input', 'type' => 'submit', 'name' => 'delAdr' . $i, 'value' => _("Remove")), - 3 => array('kind' => 'help', 'value' => 'localAdr')); - } - // input box for new local addresses - $return[] = array( - 0 => array('kind' => 'text', 'text' => _('New local address')), - 1 => array('kind' => 'input', 'name' => 'localAdr', 'type' => 'text', 'size' => '20', 'value' => ''), - 2 => array('kind' => 'input', 'type' => 'submit', 'name' => 'addAdr', 'value' => _("Add")), - 3 => array('kind' => 'help', 'value' => 'localAdr'), - 4 => array('kind' => 'input', 'type' => 'hidden', 'value' => sizeof($this->attributes['mailLocalAddress']), 'name' => 'adr_number')); - return $return; - } - - /** - * Write variables into object and do some regex checks - * - * @param array $post HTTP-POST values - */ - function process_attributes(&$post) { - $this->triggered_messages = array(); - $this->attributes['mailRoutingAddress'] = array(); - $this->attributes['mailLocalAddress'] = array(); - $this->attributes['mailHost'] = array(); - // check routing address - if (isset($post['routingAdr']) && ($post['routingAdr'] != "")) { - // check if address has correct format - if (get_preg($post['routingAdr'], 'email')) { - $this->attributes['mailRoutingAddress'][0] = $post['routingAdr']; - } - else { - $message = $this->messages['routingAdr'][0]; - $message[] = $post['routingAdr']; - $this->triggered_messages[] = array($message); - } - } - // check mail server - if (isset($post['host']) && ($post['host'] != "")) { - // check if address has correct format - if (get_preg($post['host'], 'DNSname')) { - $this->attributes['mailHost'][0] = $post['host']; - } - else { - $message = $this->messages['host'][0]; - $message[] = $post['host']; - $this->triggered_messages[] = array($message); - } - } - // check old local addresses - if (isset($post['adr_number'])) { - for ($i = 0; $i < $post['adr_number']; $i++) { - if (isset($post['delAdr' . $i])) continue; - if (isset($post['localAdr' . $i]) && ($post['localAdr' . $i] != "")) { - // check if address has correct format - if (!get_preg($post['localAdr' . $i], 'email')) { - $message = $this->messages['localAdr'][0]; - $message[] = $post['localAdr' . $i]; - $this->triggered_messages[] = array($message); - } - $this->attributes['mailLocalAddress'][] = $post['localAdr' . $i]; - } - } - } - // check new local address - if (isset($post['localAdr']) && ($post['localAdr'] != "")) { - // check if address has correct format - if (get_preg($post['localAdr'], 'email')) { - $this->attributes['mailLocalAddress'][] = $post['localAdr']; - } - else { - $message = $this->messages['localAdr'][0]; - $message[] = $post['localAdr']; - $this->triggered_messages[] = array($message); - } - } - $this->attributes['mailLocalAddress'] = array_unique($this->attributes['mailLocalAddress']); - if (sizeof($this->triggered_messages) > 0) { - $this->inputCorrect = false; - return $this->triggered_messages; - } - else { - $this->inputCorrect = true; - return 0; - } - } - - /** - * This function returns true if all needed settings are done. - */ - function module_complete() { - return $this->inputCorrect; - } - - /** - * Returns true if all settings on module page are correct. - */ - function module_ready() { - return $this->inputCorrect; - } - - /** - * In this function the LDAP account is built up. - * - * @param array $rawAccounts list of hash arrays (name => value) from user input - * @param array $partialAccounts list of hash arrays (name => value) which are later added to LDAP - * @param array $ids list of IDs for column position (e.g. "posixAccount_uid" => 5) - * @return array list of error messages if any - */ - function build_uploadAccounts($rawAccounts, $ids, &$partialAccounts) { - $messages = array(); - for ($i = 0; $i < sizeof($rawAccounts); $i++) { - // add object class - if (!in_array("inetLocalMailRecipient", $partialAccounts[$i]['objectClass'])) $partialAccounts[$i]['objectClass'][] = "inetLocalMailRecipient"; - // add local addresses - if ($rawAccounts[$i][$ids['inetLocalMailRecipient_localAdr']] != "") { - $adrs = explode(',', $rawAccounts[$i][$ids['inetLocalMailRecipient_localAdr']]); - // check format - for ($a = 0; $a < sizeof($adrs); $a++) { - if (get_preg($adrs[$a], 'email')) { - $partialAccounts[$i]['mailLocalAddress'][] = $adrs[$a]; - } - else { - $errMsg = $this->messages['localAdr'][1]; - array_push($errMsg, array($i)); - $messages[] = $errMsg; - } - } - } - // add routing address - if ($rawAccounts[$i][$ids['inetLocalMailRecipient_routingAdr']] != "") { - // check format - if (get_preg($rawAccounts[$i][$ids['inetLocalMailRecipient_routingAdr']], 'email')) { - $partialAccounts[$i]['mailRoutingAddress'][] = $rawAccounts[$i][$ids['inetLocalMailRecipient_routingAdr']]; - } - else { - $errMsg = $this->messages['routingAdr'][1]; - array_push($errMsg, array($i)); - $messages[] = $errMsg; - } - } - // add mail server - if ($rawAccounts[$i][$ids['inetLocalMailRecipient_server']] != "") { - // check format - if (get_preg($rawAccounts[$i][$ids['inetLocalMailRecipient_server']], 'DNSname')) { - $partialAccounts[$i]['mailHost'][] = $rawAccounts[$i][$ids['inetLocalMailRecipient_server']]; - } - else { - $errMsg = $this->messages['host'][1]; - array_push($errMsg, array($i)); - $messages[] = $errMsg; - } - } - } - return $messages; - } - - /** - * Returns a list of PDF entries - */ - function get_pdfEntries() { - $return = array(); - if (isset($this->attributes['mailRoutingAddress'][0])) { - $return['inetLocalMailRecipient_routingAdr'][0] = '' . _('Routing address') . '' . $this->attributes['mailRoutingAddress'][0] . ''; - } - if (sizeof($this->attributes['mailLocalAddress']) > 0) { - $return['inetLocalMailRecipient_localAdr'][0] = '' . _('Local address list') . '' . implode(', ', $this->attributes['mailLocalAddress']) . ''; - } - if (isset($this->attributes['mailHost'][0])) { - $return['inetLocalMailRecipient_host'][0] = '' . _('Mail server') . '' . $this->attributes['mailHost'][0] . ''; - } - return $return; - } - -} - - -?> diff --git a/lam/lib/modules/inetOrgPerson.inc b/lam/lib/modules/inetOrgPerson.inc deleted file mode 100644 index ab446f15..00000000 --- a/lam/lib/modules/inetOrgPerson.inc +++ /dev/null @@ -1,837 +0,0 @@ -messages['host'][0] = array('ERROR', _('Unix workstations'), _('Unix workstations are invalid!')); - $this->messages['host'][1] = array('ERROR', _('Account %s:') . ' inetOrgPerson_hosts', _('Unix workstations are invalid!')); - $this->messages['givenName'][0] = array('ERROR', _('First name'), _('First name contains invalid characters!')); - $this->messages['givenName'][1] = array('ERROR', _('Account %s:') . ' inetOrgPerson_lastName', _('First name contains invalid characters!')); - $this->messages['lastname'][0] = array('ERROR', _('Last name'), _('Last name contains invalid characters!')); - $this->messages['lastname'][1] = array('ERROR', _('Account %s:') . ' inetOrgPerson_firstName', _('Last name contains invalid characters!')); - $this->messages['telephoneNumber'][0] = array('ERROR', _('Telephone number'), _('Please enter a valid telephone number!')); - $this->messages['telephoneNumber'][1] = array('ERROR', _('Account %s:') . ' inetOrgPerson_telephone', _('Please enter a valid telephone number!')); - $this->messages['mobileTelephone'][0] = array('ERROR', _('Mobile number'), _('Please enter a valid mobile number!')); - $this->messages['mobileTelephone'][1] = array('ERROR', _('Account %s:') . " inetOrgPerson_mobile", _('Please enter a valid mobile number!')); - $this->messages['facsimileNumber'][0] = array('ERROR', _('Fax number'), _('Please enter a valid fax number!')); - $this->messages['facsimileNumber'][1] = array('ERROR', _('Account %s:') . ' inetOrgPerson_fax', _('Please enter a valid fax number!')); - $this->messages['email'][0] = array('ERROR', _('eMail address'), _('Please enter a valid eMail address!')); - $this->messages['email'][1] = array('ERROR', _('Account %s:') . ' inetOrgPerson_email', _('Please enter a valid eMail address!')); - $this->messages['street'][0] = array('ERROR', _('Street'), _('Please enter a valid street name!')); - $this->messages['street'][1] = array('ERROR', _('Account %s:') . ' inetOrgPerson_street', _('Please enter a valid street name!')); - $this->messages['postalAddress'][0] = array('ERROR', _('Postal address'), _('Please enter a valid postal address!')); - $this->messages['postalAddress'][1] = array('ERROR', _('Account %s:') . ' inetOrgPerson_address', _('Please enter a valid postal address!')); - $this->messages['postalCode'][0] = array('ERROR', _('Postal code'), _('Please enter a valid postal code!')); - $this->messages['postalCode'][1] = array('ERROR', _('Account %s:') . ' inetOrgPerson_postalCode', _('Please enter a valid postal code!')); - $this->messages['title'][0] = array('ERROR', _('Job title'), _('Please enter a valid job title!')); - $this->messages['title'][1] = array('ERROR', _('Account %s:') . ' inetOrgPerson_title', _('Please enter a valid job title!')); - $this->messages['employeeType'][0] = array('ERROR', _('Employee type'), _('Please enter a valid employee type!')); - $this->messages['employeeType'][1] = array('ERROR', _('Account %s:') . ' inetOrgPerson_type', _('Please enter a valid employee type!')); - $this->messages['cn'][0] = array('ERROR', _('Common name'), _('Please enter a valid common name!')); - $this->messages['cn'][1] = array('ERROR', _('Account %s:') . ' inetOrgPerson_cn', _('Please enter a valid common name!')); - $this->messages['uid'][0] = array('ERROR', _('User name'), _('User name contains invalid characters. Valid characters are: a-z, A-Z, 0-9 and .-_ !')); - $this->messages['uid'][1] = array('ERROR', _('Account %s:') . ' inetOrgPerson_userName', _('User name contains invalid characters. Valid characters are: a-z, A-Z, 0-9 and .-_ !')); - $this->messages['uid'][3] = array('ERROR', _('Account %s:') . ' inetOrgPerson_userName', _('User name already exists!')); - $this->messages['manager'][0] = array('ERROR', _('Account %s:') . ' inetOrgPerson_manager', _('This is not a valid DN!')); - } - - /** - * Returns meta data that is interpreted by parent class - * - * @return array array with meta data - */ - function get_metaData() { - $return = array(); - // manages user accounts - $return["account_types"] = array("user"); - // alias name - $return["alias"] = _('Personal'); - // this is a base module - $return["is_base"] = true; - // RDN attribute - $return["RDN"] = array("cn" => "low"); - // LDAP filter - $return["ldap_filter"] = array('or' => "(objectClass=inetOrgPerson)"); - // module dependencies - $return['dependencies'] = array('depends' => array(), 'conflicts' => array()); - // profile elements - $return['profile_options'] = array( - array( - 0 => array('kind' => 'text', 'text' => _('Job title') . ":"), - 1 => array('kind' => 'input', 'name' => 'inetOrgPerson_title', 'type' => 'text', 'size' => '30', 'maxlength' => '255'), - 2 => array('kind' => 'help', 'value' => 'title')), - array( - 0 => array('kind' => 'text', 'text' => _('Employee type') . ":"), - 1 => array('kind' => 'input', 'name' => 'inetOrgPerson_employeeType', 'type' => 'text', 'size' => '30', 'maxlength' => '255'), - 2 => array('kind' => 'help', 'value' => 'employeeType')) - ); - // profile checks - $return['profile_checks']['inetOrgPerson_title'] = array( - 'type' => 'ext_preg', - 'regex' => 'title', - 'error_message' => $this->messages['title'][0]); - $return['profile_checks']['inetOrgPerson_employeeType'] = array( - 'type' => 'ext_preg', - 'regex' => 'employeeType', - 'error_message' => $this->messages['employeeType'][0]); - // profile mappings - $return['profile_mappings'] = array( - 'inetOrgPerson_title' => 'title', - 'inetOrgPerson_employeeType' => 'employeeType' - ); - // upload fields - $return['upload_columns'] = array( - array( - 'name' => 'inetOrgPerson_firstName', - 'description' => _('First name'), - 'help' => 'givenName', - 'example' => _('Steve') - ), - array( - 'name' => 'inetOrgPerson_lastName', - 'description' => _('Last name'), - 'help' => 'sn', - 'example' => _('Miller'), - 'required' => true - ), - array( - 'name' => 'inetOrgPerson_description', - 'description' => _('Description'), - 'help' => 'description', - 'example' => _('Temp, contract until december') - ), - array( - 'name' => 'inetOrgPerson_title', - 'description' => _('Job title'), - 'help' => 'title', - 'example' => _('President') - ), - array( - 'name' => 'inetOrgPerson_type', - 'description' => _('Employee type'), - 'help' => 'employeeType', - 'example' => _('Temp') - ), - array( - 'name' => 'inetOrgPerson_manager', - 'description' => _('Manager'), - 'help' => 'manager', - 'example' => 'uid=smiller,ou=People,dc=company,dc=com' - ), - array( - 'name' => 'inetOrgPerson_street', - 'description' => _('Street'), - 'help' => 'street', - 'example' => _('Mystreetname 42') - ), - array( - 'name' => 'inetOrgPerson_postalCode', - 'description' => _('Postal code'), - 'help' => 'postalCode', - 'example' => '12345' - ), - array( - 'name' => 'inetOrgPerson_address', - 'description' => _('Postal address'), - 'help' => 'postalAddress', - 'example' => _('Mycity') - ), - array( - 'name' => 'inetOrgPerson_postOfficeBox', - 'description' => _('Post office box'), - 'help' => 'postOfficeBox', - 'example' => '12345' - ), - array( - 'name' => 'inetOrgPerson_telephone', - 'description' => _('Telephone number'), - 'help' => 'telephoneNumber', - 'example' => '123-123-1234' - ), - array( - 'name' => 'inetOrgPerson_mobile', - 'description' => _('Mobile number'), - 'help' => 'mobileTelephoneNumber', - 'example' => '123-123-1234' - ), - array( - 'name' => 'inetOrgPerson_fax', - 'description' => _('Fax number'), - 'help' => 'facsimileTelephoneNumber', - 'example' => '123-123-1234' - ), - array( - 'name' => 'inetOrgPerson_email', - 'description' => _('eMail address'), - 'help' => 'mail', - 'example' => _('user@company.com') - ) - ); - // cn and uid for upload (only if posixAccount is not loaded) - if ($_SESSION['loggedIn']) { - $modules = $_SESSION['config']->get_AccountModules($this->get_scope()); - if (!in_array('posixAccount', $modules)) { - $return['upload_columns'][] = array( - 'name' => 'inetOrgPerson_cn', - 'description' => _('Common name'), - 'help' => 'cn', - 'example' => _('Steve Miller'), - 'default' => '<inetOrgPerson_firstName> <inetOrgPerson_lastName>' - ); - $return['upload_columns'][] = array( - 'name' => 'inetOrgPerson_userName', - 'description' => _('User name'), - 'help' => 'uid', - 'example' => _('smiller'), - 'unique' => true, - 'required' => true - ); - } - } - // Unix workstations for upload - if ($_SESSION['loggedIn'] && $_SESSION['ldap']->supports_unix_hosts) { - $return['upload_columns'][] = array( - 'name' => 'inetOrgPerson_hosts', - 'description' => _('Unix workstations'), - 'help' => 'workstations', - 'example' => _('pc01,pc02') - ); - } - // available PDF fields - $return['PDF_fields'] = array( - 'description', - 'host', - 'givenName', - 'sn', - 'title', - 'employeeType', - 'manager', - 'street', - 'postOfficeBox', - 'postalCode', - 'postalAddress', - 'telephoneNumber', - 'mobileTelephoneNumber', - 'facimilieTelephoneNumber', - 'mail' - ); - if ($_SESSION['loggedIn']) { - $modules = $_SESSION['config']->get_AccountModules($this->get_scope()); - if (!in_array('posixAccount', $modules)) { - $return['PDF_fields'][] = 'uid'; - $return['PDF_fields'][] = 'cn'; - } - } - // help Entries - $return['help'] = array ( - 'user' => array ( - 'description' => array ( - "Headline" => _("Description"), - "Text" => _("User description. If left empty sur- and give name will be used.") - ), - 'title' => array ( - "Headline" => _("Job title"), - "Text" => _("Job title of user: President, department manager, ...") - ), - 'givenName' => array ( - "Headline" => _("First name"), - "Text" => _("First name of user. Only letters, - and spaces are allowed.") - ), - 'sn' => array ( - "Headline" => _("Last name"), - "Text" => _("Last name of user. Only letters, - and spaces are allowed.") - ), - 'employeeType' => array ( - "Headline" => _("Employee type"), - "Text" => _("Employee type: Contractor, Employee, Intern, Temp, External, ...") - ), - 'manager' => array ( - "Headline" => _("Manager"), - "Text" => _("This is the LDAP DN of the user's manager. Use this property to represent hierarchies in your company.") - ), - 'street' => array ( - "Headline" => _("Street"), - "Text" => _("Street") - ), - 'postOfficeBox' => array ( - "Headline" => _("Post office box"), - "Text" => _("Post office box") - ), - 'postalCode' => array ( - "Headline" => _("Postal code"), - "Text" => _("Postal code") - ), - 'postalAddress' => array ( - "Headline" => _("Postal address"), - "Text" => _("Postal address, city") - ), - 'telephoneNumber' => array ( - "Headline" => _("Telephone number"), - "Text" => _("Telephone number") - ), - 'mobileTelephoneNumber' => array ( - "Headline" => _("Mobile number"), - "Text" => _("Mobile number") - ), - 'facsimileTelephoneNumber' => array ( - "Headline" => _("Fax number"), - "Text" => _("Fax number") - ), - 'mail' => array ( - "Headline" => _("eMail address"), - "Text" => _("eMail address") - ), - 'cn' => array ( - "Headline" => _("Common name"), - "Text" => _("This is the natural name of the user. If empty, the first and last name is used.") - ), - 'uid' => array( - "Headline" => _("User name"), - "Text" => _("User name 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 user name is already used user name will be expanded with a number. The next free number will be used. Warning: Older systems have problems with user names longer than 8 characters. You can not log in to Windows if user name is longer than 16 characters.") - ), - 'workstations' => array ( - "Headline" => _("Unix workstations"), - "Text" => _("Please enter a comma separated list of host names where this user is allowed to log in. Can be left empty.") - ) - ) - ); - - return $return; - } - - /** - * Initializes the module in its accountContainer - * - * @param string $base the name of account_container in session - */ - function init($base) { - // call parent init - parent::init($base); - } - - /* This function returns true if all required attributes from other - * modules are set. This is required to prevent undefined states - */ - function module_ready() { - return true; - } - - /* This functions return true - * if all needed settings are done - */ - function module_complete() { - if (!$this->module_ready()) return false; - if ($this->attributes['sn'][0] == '') return false; - return true; - } - - /* This function returns a list of all html-pages in module - * This is usefull for mass upload and pdf-files - * because lam can walk trough all pages itself and do some - * error checkings - */ - function pages() { - return array('attributes'); - } - - /* This function returns an array with 4 entries: - * array( DN1 ('add' => array($attr), 'remove' => array($attr), 'modify' => array($attr), 'lamdaemon' => array(cmds)), DN2 .... ) - * DN is the DN to change. It may be possible to change several DNs, - * e.g. create a new user and add him to some groups via attribute memberUid - * add are attributes which have to be added to ldap entry - * remove are attributes which have to be removed from ldap entry - * lamdaemon are lamdaemon commands to modify homedir, quotas, ... - */ - function save_attributes() { - // Get easy attributes - $return = $_SESSION[$this->base]->save_module_attributes($this->attributes, $this->orig); - // unset password. First we hanlde userPassword with posixAccount, second we hanlde it completly separat - // because it en/decrypted in session - if (isset($return[$_SESSION[$this->base]->dn]['modify']['userPassword'])) - unset($return[$_SESSION[$this->base]->dn]['modify']['userPassword']); - if (isset($return[$_SESSION[$this->base]->dn]['add']['userPassword'])) - unset($return[$_SESSION[$this->base]->dn]['add']['userPassword']); - // Return attributes - return $return; - } - /* Write variables into object and do some regexp checks - */ - - function delete_attributes($post) { - return 0; - } - - function process_attributes(&$post) { - // Load attributes - $this->attributes['description'][0] = $post['description']; - $this->attributes['sn'][0] = $post['sn']; - $this->attributes['givenName'][0] = $post['givenName']; - $this->attributes['title'][0] = $post['title']; - $this->attributes['mail'][0] = $post['mail']; - $this->attributes['telephoneNumber'][0] = $post['telephoneNumber']; - $this->attributes['mobileTelephoneNumber'][0] = $post['mobileTelephoneNumber']; - $this->attributes['facsimileTelephoneNumber'][0] = $post['facsimileTelephoneNumber']; - $this->attributes['street'][0] = $post['street']; - $this->attributes['postOfficeBox'][0] = $post['postOfficeBox']; - $this->attributes['postalCode'][0] = $post['postalCode']; - $this->attributes['postalAddress'][0] = $post['postalAddress']; - $this->attributes['employeeType'][0] = $post['employeeType']; - if ($post['manager'] != '-') { - $this->attributes['manager'][0] = $post['manager']; - } - else { - unset($this->attributes['manager'][0]); - } - - $modules = $_SESSION['config']->get_AccountModules($this->get_scope()); - if (!in_array('posixAccount', $modules)) { - // uid - if (!get_preg($post['userName'], 'username')) { - $triggered_messages['uid'][] = $this->messages['uid'][0]; - } - else { - $this->attributes['uid'][0] = $post['userName']; - } - // cn - if ($post['cn'] == '') { - if ($post['givenName'] != '') { - $this->attributes['cn'][0] = $post['givenName'] . " " . $post['sn']; - } - else { - $this->attributes['cn'][0] = $post['sn']; - } - } - else { - $this->attributes['cn'][0] = $post['cn']; - } - if (!get_preg($this->attributes['cn'][0], 'cn')) { - $triggered_messages['cn'][] = $this->messages['cn'][0]; - } - } - - // handle host-attribute in on epice because it's not set by default - if (isset($this->attributes['host'])) { - $host = $post['host']; - if (!get_preg($host,'unixhost')) - $triggered_messages['host'][] = $this->messages['host'][0]; - $hosts = explode(",", $host); - $this->attributes['host'] = array(); - foreach ($hosts as $host) - if ($host!="") $this->attributes['host'][] = $host; - } - // Do some regex-checks and return error if attributes are set to wrong values - if (($this->attributes['givenName'][0] != '') && !get_preg($this->attributes['givenName'][0], 'realname')) $triggered_messages['givenName'][] = $this->messages['givenName'][0]; - if ( !get_preg($this->attributes['sn'][0], 'realname')) $triggered_messages['sn'][] = $this->messages['lastname'][0]; - if ( !get_preg($this->attributes['telephoneNumber'][0], 'telephone')) $triggered_messages['telephoneNumber'][] = $this->messages['telephoneNumber'][0]; - if ( !get_preg($this->attributes['mobileTelephoneNumber'][0], 'telephone')) $triggered_messages['mobileTelephoneNumber'][] = $this->messages['mobileTelephone'][0]; - if ( !get_preg($this->attributes['facsimileTelephoneNumber'][0], 'telephone')) $triggered_messages['facsimileTelephoneNumber'][] = $this->messages['facsimileNumber'][0]; - if (($this->attributes['mail'][0] != '') && !get_preg($this->attributes['mail'][0], 'email')) $triggered_messages['mail'][] = $this->messages['email'][0]; - if ( !get_preg($this->attributes['street'][0], 'street')) $triggered_messages['street'][] = $this->messages['street'][0]; - if ( !get_preg($this->attributes['postalAddress'][0], 'postalAddress')) $triggered_messages['postalAdress'][] = $this->messages['postalAddress'][0]; - if ( !get_preg($this->attributes['personal_postalCode'][0], 'postalCode')) $triggered_messages['personal_postalCode'][] = $this->messages['postalCode'][0]; - if ( !get_preg($this->attributes['title'][0], 'title')) $triggered_messages['title'][] = $this->messages['title'][0]; - if ( !get_preg($this->attributes['employeeType'][0], 'employeeType')) $triggered_messages['employeeType'][] = $this->messages['employeeType'][0]; - // Return error-messages - if (is_array($triggered_messages)) return $triggered_messages; - return 0; - } - - /* This function will create the html-page - * to show a page with all attributes. - * It will output a complete html-table - */ - function display_html_attributes(&$post) { - $modules = $_SESSION['config']->get_AccountModules($this->get_scope()); - if (!in_array('posixAccount', $modules)) { - $return[] = array ( 0 => array ( 'kind' => 'text', 'text' => _('User name') . '*' ), - 1 => array ( 'kind' => 'input', 'name' => 'userName', 'type' => 'text', 'size' => '30', - 'maxlength' => '255', 'value' => $this->attributes['uid'][0] ), - 2 => array ('kind' => 'help', 'value' => 'uid')); - } - $return[] = array ( 0 => array ( 'kind' => 'text', 'text' => _('First name') ), - 1 => array ( 'kind' => 'input', 'name' => 'givenName', 'type' => 'text', 'size' => '30', - 'maxlength' => '255', 'value' => $this->attributes['givenName'][0] ), - 2 => array ('kind' => 'help', 'value' => 'givenName')); - $return[] = array ( 0 => array ( 'kind' => 'text', 'text' => _('Last name').'*' ), - 1 => array ( 'kind' => 'input', 'name' => 'sn', 'type' => 'text', 'size' => '30', - 'maxlength' => '255', 'value' => $this->attributes['sn'][0] ), - 2 => array ('kind' => 'help', 'value' => 'sn')); - if (!in_array('posixAccount', $modules)) { - $return[] = array ( 0 => array ( 'kind' => 'text', 'text' => _('Common name') . '*' ), - 1 => array ( 'kind' => 'input', 'name' => 'cn', 'type' => 'text', 'size' => '30', - 'maxlength' => '255', 'value' => $this->attributes['cn'][0] ), - 2 => array ('kind' => 'help', 'value' => 'cn')); - } - $return[] = array ( 0 => array ( 'kind' => 'text', 'text' => _('Description') ), - 1 => array ( 'kind' => 'input', 'name' => 'description', 'type' => 'text', 'size' => '30', - 'maxlength' => '255', 'value' => $this->attributes['description'][0] ), - 2 => array ('kind' => 'help', 'value' => 'description')); - - $return[] = array(0 => array('kind' => 'text', 'td' => array('colspan' => 3))); - - $return[] = array ( 0 => array ( 'kind' => 'text', 'text' => _('Street') ), - 1 => array ( 'kind' => 'input', 'name' => 'street', 'type' => 'text', 'size' => '30', - 'maxlength' => '255', 'value' => $this->attributes['street'][0] ), - 2 => array ('kind' => 'help', 'value' => 'street')); - $return[] = array ( 0 => array ( 'kind' => 'text', 'text' => _('Post office box') ), - 1 => array ( 'kind' => 'input', 'name' => 'postOfficeBox', 'type' => 'text', 'size' => '30', - 'maxlength' => '255', 'value' => $this->attributes['postOfficeBox'][0] ), - 2 => array ('kind' => 'help', 'value' => 'postOfficeBox')); - $return[] = array ( 0 => array ( 'kind' => 'text', 'text' => _('Postal code') ), - 1 => array ( 'kind' => 'input', 'name' => 'postalCode', 'type' => 'text', 'size' => '30', - 'maxlength' => '255', 'value' => $this->attributes['postalCode'][0] ), - 2 => array ('kind' => 'help', 'value' => 'postalCode')); - $return[] = array ( 0 => array ( 'kind' => 'text', 'text' => _('Postal address') ), - 1 => array ( 'kind' => 'input', 'name' => 'postalAddress', 'type' => 'text', 'size' => '30', - 'maxlength' => '255', 'value' => $this->attributes['postalAddress'][0] ), - 2 => array ('kind' => 'help', 'value' => 'postalAddress')); - $return[] = array ( 0 => array ( 'kind' => 'text', 'text' => _('Telephone number') ), - 1 => array ( 'kind' => 'input', 'name' => 'telephoneNumber', 'type' => 'text', 'size' => '30', - 'maxlength' => '255', 'value' => $this->attributes['telephoneNumber'][0] ), - 2 => array ('kind' => 'help', 'value' => 'telephoneNumber')); - $return[] = array ( 0 => array ( 'kind' => 'text', 'text' => _('Mobile number') ), - 1 => array ( 'kind' => 'input', 'name' => 'mobileTelephoneNumber', 'type' => 'text', 'size' => '30', - 'maxlength' => '255', 'value' => $this->attributes['mobileTelephoneNumber'][0] ), - 2 => array ('kind' => 'help', 'value' => 'mobileTelephoneNumber')); - $return[] = array ( 0 => array ( 'kind' => 'text', 'text' => _('Fax number') ), - 1 => array ( 'kind' => 'input', 'name' => 'facsimileTelephoneNumber', 'type' => 'text', 'size' => '30', - 'maxlength' => '255', 'value' => $this->attributes['facsimileTelephoneNumber'][0] ), - 2 => array ('kind' => 'help', 'value' => 'facsimileTelephoneNumber')); - $return[] = array ( 0 => array ( 'kind' => 'text', 'text' => _('eMail address') ), - 1 => array ( 'kind' => 'input', 'name' => 'mail', 'type' => 'text', 'size' => '30', - 'maxlength' => '255', 'value' => $this->attributes['mail'][0] ), - 2 => array ('kind' => 'help', 'value' => 'mail')); - - $return[] = array(0 => array('kind' => 'text', 'td' => array('colspan' => 3))); - - $return[] = array ( 0 => array ( 'kind' => 'text', 'text' => _('Job title') ), - 1 => array ( 'kind' => 'input', 'name' => 'title', 'type' => 'text', 'size' => '30', - 'value' => $this->attributes['title'][0] ), - 2 => array ('kind' => 'help', 'value' => 'title')); - $return[] = array ( 0 => array ( 'kind' => 'text', 'text' => _('Employee type') ), - 1 => array ( 'kind' => 'input', 'name' => 'employeeType', 'type' => 'text', 'size' => '30', - 'maxlength' => '255', 'value' => $this->attributes['employeeType'][0] ), - 2 => array ('kind' => 'help', 'value' => 'employeeType')); - if (isset($this->attributes['host'])) { - if (is_array($this->attributes['host'])) { - $hostvalue .= implode(",", $this->attributes['host']); - } - $return[] = array ( 0 => array ( 'kind' => 'text', 'text' => _('Unix workstations') ), - 1 => array ( 'kind' => 'input', 'name' => 'host', 'type' => 'text', 'size' => '30', - 'maxlength' => '255', 'value' => $hostvalue ), - 2 => array ('kind' => 'help', 'value' => 'workstations')); - } - // get list of existing users for manager attribute - $dnUsers = $_SESSION['cache']->get_cache('uid', 'inetOrgPerson', 'user'); - if (!is_array($dnUsers)) $dnUsers = array(); - $dnUsers = array_keys($dnUsers); - usort($dnUsers, array($_SESSION['ldap'], 'cmp_array')); - array_unshift($dnUsers, '-'); - $optionsSelected = array(); - if ($this->attributes['manager'][0]) { - $optionsSelected[] = $this->attributes['manager'][0]; - } - else { - $optionsSelected[] = '-'; - } - $return[] = array( - 0 => array('kind' => 'text', 'text' => _('Manager')), - 1 => array('kind' => 'select', 'name' => 'manager', 'size' => '1', - 'options' => $dnUsers, 'options_selected' => $optionsSelected), - 2 => array('kind' => 'help', 'value' => 'manager')); - return $return; - } - - function display_html_delete(&$post) { - return 0; - } - - /* - * (non-PHPDoc) - * @see baseModule#get_pdfEntries - */ - function get_pdfEntries($account_type = "user") { - return array( - 'inetOrgPerson_description' => array('' . _('Description') . '' . $this->attributes['description'][0] . ''), - 'inetOrgPerson_host' => array('' . _('Unix workstations') . '' . $this->attributes['host'][0] . ''), - 'inetOrgPerson_title' => array('' . _('Job title') . '' . $this->attributes['title'][0] . ''), - 'inetOrgPerson_givenName' => array('' . _('First name') . '' . $this->attributes['givenName'][0] . ''), - 'inetOrgPerson_sn' => array('' . _('Last name') . '' . $this->attributes['sn'][0] . ''), - 'inetOrgPerson_employeeType' => array('' . _('Employee type') . '' . $this->attributes['employeeType'][0] . ''), - 'inetOrgPerson_manager' => array('' . _('Manager') . '' . $this->attributes['manager'][0] . ''), - 'inetOrgPerson_street' => array('' . _('Street') . '' . $this->attributes['street'][0] . ''), - 'inetOrgPerson_postOfficeBox' => array('' . _('Post office box') . '' . $this->attributes['postOfficeBox'][0] . ''), - 'inetOrgPerson_postalCode' => array('' . _('Postal code') . '' . $this->attributes['postalCode'][0] . ''), - 'inetOrgPerson_postalAddress' => array('' . _('Postal address') . '' . $this->attributes['postalAddress'][0] . ''), - 'inetOrgPerson_telephoneNumber' => array('' . _('Telephone number') . '' . $this->attributes['telephoneNumber'][0] . ''), - 'inetOrgPerson_mobileTelephoneNumber' => array('' . _('Mobile number') . '' . $this->attributes['mobileTelephoneNumber'][0] . ''), - 'inetOrgPerson_facimileTelephoneNumber' => array('' . _('Fax number') . '' . $this->attributes['facsimileTelephoneNumber'][0] . ''), - 'inetOrgPerson_mail' => array('' . _('eMail address') . '' . $this->attributes['mail'][0] . ''), - 'inetOrgPerson_cn' => array('' . _('Common name') . '' . $this->attributes['cn'][0] . ''), - 'inetOrgPerson_uid' => array('' . _('User name') . '' . $this->attributes['uid'][0] . '')); - } - - /** - * In this function the LDAP account is built up. - * - * @param array $rawAccounts list of hash arrays (name => value) from user input - * @param array $partialAccounts list of hash arrays (name => value) which are later added to LDAP - * @param array $ids list of IDs for column position (e.g. "posixAccount_uid" => 5) - * @return array list of error messages if any - */ - function build_uploadAccounts($rawAccounts, $ids, &$partialAccounts) { - $triggered_messages = array(); - for ($i = 0; $i < sizeof($rawAccounts); $i++) { - if (!in_array("inetOrgPerson", $partialAccounts[$i]['objectClass'])) $partialAccounts[$i]['objectClass'][] = "inetOrgPerson"; - // last name - if (get_preg($rawAccounts[$i][$ids['inetOrgPerson_lastName']], 'realname')) { - $partialAccounts[$i]['sn'] = $rawAccounts[$i][$ids['inetOrgPerson_lastName']]; - } - else { - $errMsg = $this->messages['lastname'][1]; - array_push($errMsg, array($i)); - $triggered_messages[] = $errMsg; - } - // first name - if ($rawAccounts[$i][$ids['inetOrgPerson_firstName']] != "") { - if (get_preg($rawAccounts[$i][$ids['inetOrgPerson_firstName']], 'realname')) { - $partialAccounts[$i]['givenName'] = $rawAccounts[$i][$ids['inetOrgPerson_firstName']]; - } - else { - $errMsg = $this->messages['givenName'][1]; - array_push($errMsg, array($i)); - $triggered_messages[] = $errMsg; - } - } - // description - if ($rawAccounts[$i][$ids['inetOrgPerson_description']] != "") { - $partialAccounts[$i]['description'] = $rawAccounts[$i][$ids['inetOrgPerson_description']]; - } - else { - if ($partialAccounts[$i]['givenName'] != "") { - $partialAccounts[$i]['description'] = $partialAccounts[$i]['givenName'] . " " . $partialAccounts[$i]['sn']; - } - else { - $partialAccounts[$i]['description'] = $partialAccounts[$i]['sn']; - } - } - // title - if ($rawAccounts[$i][$ids['inetOrgPerson_title']] != "") { - if (get_preg($rawAccounts[$i][$ids['inetOrgPerson_title']], 'title')) { - $partialAccounts[$i]['title'] = $rawAccounts[$i][$ids['inetOrgPerson_title']]; - } - else { - $errMsg = $this->messages['title'][1]; - array_push($errMsg, array($i)); - $triggered_messages[] = $errMsg; - } - } - // employee type - if ($rawAccounts[$i][$ids['inetOrgPerson_type']] != "") { - if (get_preg($rawAccounts[$i][$ids['inetOrgPerson_type']], 'employeeType')) { - $partialAccounts[$i]['employeeType'] = $rawAccounts[$i][$ids['inetOrgPerson_type']]; - } - else { - $errMsg = $this->messages['employeeType'][1]; - array_push($errMsg, array($i)); - $triggered_messages[] = $errMsg; - } - } - // manager - if ($rawAccounts[$i][$ids['inetOrgPerson_manager']] != "") { - if (get_preg($rawAccounts[$i][$ids['inetOrgPerson_manager']], 'dn')) { - $partialAccounts[$i]['manager'] = $rawAccounts[$i][$ids['inetOrgPerson_manager']]; - } - else { - $errMsg = $this->messages['manager'][0]; - array_push($errMsg, array($i)); - $triggered_messages[] = $errMsg; - } - } - // street - if ($rawAccounts[$i][$ids['inetOrgPerson_street']] != "") { - if (get_preg($rawAccounts[$i][$ids['inetOrgPerson_street']], 'street')) { - $partialAccounts[$i]['street'] = $rawAccounts[$i][$ids['inetOrgPerson_street']]; - } - else { - $errMsg = $this->messages['street'][1]; - array_push($errMsg, array($i)); - $triggered_messages[] = $errMsg; - } - } - // post office box - if ($rawAccounts[$i][$ids['inetOrgPerson_postOfficeBox']] != "") { - $partialAccounts[$i]['postOfficeBox'] = $rawAccounts[$i][$ids['inetOrgPerson_postOfficeBox']]; - } - // postal code - if ($rawAccounts[$i][$ids['inetOrgPerson_postalCode']] != "") { - if (get_preg($rawAccounts[$i][$ids['inetOrgPerson_postalCode']], 'postalCode')) { - $partialAccounts[$i]['postalCode'] = $rawAccounts[$i][$ids['inetOrgPerson_postalCode']]; - } - else { - $errMsg = $this->messages['postalCode'][1]; - array_push($errMsg, array($i)); - $triggered_messages[] = $errMsg; - } - } - // postal address - if ($rawAccounts[$i][$ids['inetOrgPerson_address']] != "") { - if (get_preg($rawAccounts[$i][$ids['inetOrgPerson_address']], 'postalAddress')) { - $partialAccounts[$i]['postalAddress'] = $rawAccounts[$i][$ids['inetOrgPerson_address']]; - } - else { - $errMsg = $this->messages['postalAddress'][1]; - array_push($errMsg, array($i)); - $triggered_messages[] = $errMsg; - } - } - // telephone - if ($rawAccounts[$i][$ids['inetOrgPerson_telephone']] != "") { - if (get_preg($rawAccounts[$i][$ids['inetOrgPerson_telephone']], 'telephone')) { - $partialAccounts[$i]['telephoneNumber'] = $rawAccounts[$i][$ids['inetOrgPerson_telephone']]; - } - else { - $errMsg = $this->messages['telephoneNumber'][1]; - array_push($errMsg, array($i)); - $triggered_messages[] = $errMsg; - } - } - // mobile - if ($rawAccounts[$i][$ids['inetOrgPerson_mobile']] != "") { - if (get_preg($rawAccounts[$i][$ids['inetOrgPerson_mobile']], 'telephone')) { - $partialAccounts[$i]['mobiletelephoneNumber'] = $rawAccounts[$i][$ids['inetOrgPerson_mobile']]; - } - else { - $errMsg = $this->messages['mobileTelephone'][1]; - array_push($errMsg, array($i)); - $triggered_messages[] = $errMsg; - } - } - // facsimile - if ($rawAccounts[$i][$ids['inetOrgPerson_fax']] != "") { - if (get_preg($rawAccounts[$i][$ids['inetOrgPerson_fax']], 'telephone')) { - $partialAccounts[$i]['facsimileTelephoneNumber'] = $rawAccounts[$i][$ids['inetOrgPerson_fax']]; - } - else { - $errMsg = $this->messages['facsimileNumber'][1]; - array_push($errMsg, array($i)); - $triggered_messages[] = $errMsg; - } - } - // eMail - if ($rawAccounts[$i][$ids['inetOrgPerson_email']] != "") { - if (get_preg($rawAccounts[$i][$ids['inetOrgPerson_email']], 'email')) { - $partialAccounts[$i]['mail'] = $rawAccounts[$i][$ids['inetOrgPerson_email']]; - } - else { - $errMsg = $this->messages['email'][1]; - array_push($errMsg, array($i)); - $triggered_messages[] = $errMsg; - } - } - // Unix workstations - if ($rawAccounts[$i][$ids['inetOrgPerson_hosts']] != "") { - if (get_preg($rawAccounts[$i][$ids['inetOrgPerson_hosts']], 'unixhost')) { - $partialAccounts[$i]['host'] = explode(",", $rawAccounts[$i][$ids['inetOrgPerson_hosts']]); - } - else { - $errMsg = $this->messages['host'][1]; - array_push($errMsg, array($i)); - $triggered_messages[] = $errMsg; - } - } - $modules = $_SESSION['config']->get_AccountModules($this->get_scope()); - if (!in_array('posixAccount', $modules)) { - // cn - if ($rawAccounts[$i][$ids['inetOrgPerson_cn']] != "") { - if (get_preg($rawAccounts[$i][$ids['inetOrgPerson_cn']], 'cn')) { - $partialAccounts[$i]['cn'] = $rawAccounts[$i][$ids['inetOrgPerson_cn']]; - } - else { - $errMsg = $this->messages['cn'][1]; - array_push($errMsg, array($i)); - $triggered_messages[] = $errMsg; - } - } - else { - if ($partialAccounts[$i]['givenName'] != "") { - $partialAccounts[$i]['cn'] = $partialAccounts[$i]['givenName'] . " " . $partialAccounts[$i]['sn']; - } - else { - $partialAccounts[$i]['cn'] = $partialAccounts[$i]['sn']; - } - } - // uid - // get list of existing users - $dnUsers = $_SESSION['cache']->get_cache('uid', 'inetOrgPerson', '*'); - $existingUsers = array(); - foreach ($dnUsers as $dn) { - $existingUsers[] = $dn[0]; - } - if (in_array($rawAccounts[$i][$ids['inetOrgPerson_userName']], $existingUsers)) { - $errMsg = $this->messages['uid'][3]; - array_push($errMsg, array($i)); - $triggered_messages[] = $errMsg; - } - elseif (get_preg($rawAccounts[$i][$ids['inetOrgPerson_userName']], 'username')) { - $partialAccounts[$i]['uid'] = $rawAccounts[$i][$ids['inetOrgPerson_userName']]; - } - else { - $errMsg = $this->messages['uid'][1]; - array_push($errMsg, array($i)); - $triggered_messages[] = $errMsg; - } - } - } - return $triggered_messages; - } - - -} - -?> diff --git a/lam/lib/modules/nisMailAlias.inc b/lam/lib/modules/nisMailAlias.inc deleted file mode 100644 index c596103e..00000000 --- a/lam/lib/modules/nisMailAlias.inc +++ /dev/null @@ -1,316 +0,0 @@ - "(objectClass=nisMailAlias)"); - // alias name - $return["alias"] = _("Mail aliases"); - // module dependencies - $return['dependencies'] = array('depends' => array(), 'conflicts' => array()); - // help Entries - $return['help'] = array( - 'alias' => array( - "Headline" => _("Alias name"), - "Text" => _("Mails to this name are forwarded to the recipients.") - ), - 'recipient' => array( - "Headline" => _("Recipient"), - "Text" => _("This is one recipient for this alias.") - ), - 'recipientList' => array( - "Headline" => _("Recipient list"), - "Text" => _("This is a comma separated list of recipients.") - )); - // upload fields - $return['upload_columns'] = array( - array( - 'name' => 'nisMailAlias_alias', - 'description' => _('Alias name'), - 'help' => 'alias', - 'example' => 'root', - 'required' => true - ), - array( - 'name' => 'nisMailAlias_recipients', - 'description' => _('Recipient list'), - 'help' => 'recipientList', - 'example' => _('smiller') - ) - ); - // available PDF fields - $return['PDF_fields'] = array( - 'alias', 'recipients' - ); - return $return; - } - - /** - * This function fills the error message array with messages - */ - function load_Messages() { - $this->messages['alias'][0] = array('ERROR', 'Alias is empty or invalid!'); // third array value is set dynamically - $this->messages['alias'][1] = array('ERROR', _('Account %s:') . ' nisMailAlias_alias', 'Alias is empty or invalid!'); - $this->messages['recipient'][0] = array('ERROR', 'Recipient is invalid!'); // third array value is set dynamically - $this->messages['recipient'][1] = array('ERROR', _('Account %s:') . ' nisMailAlias_recipient', 'Recipient is invalid!'); - } - - /** - * This function loads all needed attributes into the object. - * - * @param array $attr an array as it is retured from ldap_get_attributes - */ - function load_attributes($attr) { - $this->attributes['objectClass'] = array(); - $this->attributes['rfc822MailMember'] = array(); - $this->attributes['cn'] = array(); - $this->orig['objectClass'] = array(); - $this->orig['rfc822MailMember'] = array(); - $this->orig['cn'] = array(); - if (isset($attr['objectClass'])) { - $this->attributes['objectClass'] = $attr['objectClass']; - $this->orig['objectClass'] = $attr['objectClass']; - } - if (isset($attr['cn'])) { - $this->attributes['cn'] = $attr['cn']; - $this->orig['cn'] = $attr['cn']; - } - if (isset($attr['rfc822MailMember'])) { - $this->attributes['rfc822MailMember'] = $attr['rfc822MailMember']; - $this->orig['rfc822MailMember'] = $attr['rfc822MailMember']; - } - // add object class if needed - if (! in_array('nisMailAlias', $this->orig['objectClass'])) { - $this->attributes['objectClass'][] = 'nisMailAlias'; - } - return 0; - } - - /** - * Returns a list of modifications which have to be made to the LDAP account. - * - * @return array list of modifications - *
This function returns an array with 3 entries: - *
array( DN1 ('add' => array($attr), 'remove' => array($attr), 'modify' => array($attr)), DN2 .... ) - *
DN is the DN to change. It may be possible to change several DNs (e.g. create a new user and add him to some groups via attribute memberUid) - *
"add" are attributes which have to be added to LDAP entry - *
"remove" are attributes which have to be removed from LDAP entry - *
"modify" are attributes which have to been modified in LDAP entry - */ - function save_attributes() { - return $_SESSION[$this->base]->save_module_attributes($this->attributes, $this->orig); - } - - /** - * This function returns a list of all account pages in this module. - */ - function pages() { - return array('attributes'); - } - - /** - * This function will create the meta HTML code to show a page with all attributes. - * - * @param array $post HTTP-POST values - */ - function display_html_attributes(&$post) { - $return = array(); - // alias name - $return[] = array( - 0 => array('kind' => 'text', 'text' => _('Alias name')), - 1 => array('kind' => 'input', 'name' => 'cn', 'type' => 'text', 'size' => '20', 'value' => $this->attributes['cn'][0]), - 2 => array('kind' => 'help', 'value' => 'alias')); - // list current recipients - for ($i = 0; $i < sizeof($this->attributes['rfc822MailMember']); $i++) { - $return[] = array( - 0 => array('kind' => 'text', 'text' => _('Recipient')), - 1 => array('kind' => 'input', 'name' => 'rfc822MailMember' . $i, 'type' => 'text', 'size' => '17', 'value' => $this->attributes['rfc822MailMember'][$i]), - 2 => array('kind' => 'input', 'type' => 'submit', 'name' => 'delRec' . $i, 'value' => _("Remove")), - 3 => array('kind' => 'help', 'value' => 'recipient')); - } - // input box for new recipient - $return[] = array( - 0 => array('kind' => 'text', 'text' => _('New recipient')), - 1 => array('kind' => 'input', 'name' => 'rfc822MailMember', 'type' => 'text', 'size' => '17', 'value' => ''), - 2 => array('kind' => 'input', 'type' => 'submit', 'name' => 'addRec', 'value' => _("Add")), - 3 => array('kind' => 'help', 'value' => 'recipient'), - 4 => array('kind' => 'input', 'type' => 'hidden', 'value' => sizeof($this->attributes['rfc822MailMember']), 'name' => 'rec_number')); - return $return; - } - - /** - * Write variables into object and do some regex checks - * - * @param array $post HTTP-POST values - */ - function process_attributes(&$post) { - $this->triggered_messages = array(); - $this->attributes['cn'] = array(); - $this->attributes['rfc822MailMember'] = array(); - // check alias name - if (isset($post['cn']) && ($post['cn'] != "") && get_preg($post['cn'], 'nis_alias')) { - $this->attributes['cn'][] = $post['cn']; - } - else { - $message = $this->messages['alias'][0]; - $message[] = $post['cn']; - $this->triggered_messages[] = array($message); - } - // check old recipients - if (isset($post['rec_number'])) { - for ($i = 0; $i < $post['rec_number']; $i++) { - if (isset($post['delRec' . $i])) continue; - if (isset($post['rfc822MailMember' . $i]) && ($post['rfc822MailMember' . $i] != "")) { - // check if address has correct format - if (!get_preg($post['rfc822MailMember' . $i], 'nis_recipient')) { - $message = $this->messages['recipient'][0]; - $message[] = $post['rfc822MailMember' . $i]; - $this->triggered_messages[] = array($message); - } - $this->attributes['rfc822MailMember'][] = $post['rfc822MailMember' . $i]; - } - } - } - // check new recipient - if (isset($post['rfc822MailMember']) && ($post['rfc822MailMember'] != "")) { - // check if address has correct format - if (get_preg($post['rfc822MailMember'], 'nis_recipient')) { - $this->attributes['rfc822MailMember'][] = $post['rfc822MailMember']; - } - else { - $message = $this->messages['recipient'][0]; - $message[] = $post['rfc822MailMember']; - $this->triggered_messages[] = array($message); - } - } - $this->attributes['rfc822MailMember'] = array_unique($this->attributes['rfc822MailMember']); - if (sizeof($this->triggered_messages) > 0) { - $this->inputCorrect = false; - return $this->triggered_messages; - } - else { - $this->inputCorrect = true; - return 0; - } - } - - /** - * This function returns true if all needed settings are done. - */ - function module_complete() { - return $this->inputCorrect; - } - - /** - * Returns true if all settings on module page are correct. - */ - function module_ready() { - return $this->inputCorrect; - } - - /** - * In this function the LDAP account is built up. - * - * @param array $rawAccounts list of hash arrays (name => value) from user input - * @param array $partialAccounts list of hash arrays (name => value) which are later added to LDAP - * @param array $ids list of IDs for column position (e.g. "posixAccount_uid" => 5) - * @return array list of error messages if any - */ - function build_uploadAccounts($rawAccounts, $ids, &$partialAccounts) { - $messages = array(); - for ($i = 0; $i < sizeof($rawAccounts); $i++) { - // add object class - if (!in_array("nisMailAlias", $partialAccounts[$i]['objectClass'])) $partialAccounts[$i]['objectClass'][] = "nisMailAlias"; - // add alias name - // check format - if (get_preg($rawAccounts[$i][$ids['nisMailAlias_alias']], 'nis_alias')) { - $partialAccounts[$i]['cn'][] = $rawAccounts[$i][$ids['nisMailAlias_alias']]; - } - else { - $errMsg = $this->messages['alias'][1]; - array_push($errMsg, array($i)); - $messages[] = $errMsg; - } - // add recipients - if ($rawAccounts[$i][$ids['nisMailAlias_recipients']] != "") { - $aliases = explode(',', $rawAccounts[$i][$ids['nisMailAlias_recipients']]); - // check format - for ($a = 0; $a < sizeof($aliases); $a++) { - if (get_preg($aliases[$a], 'nis_recipient')) { - $partialAccounts[$i]['rfc822MailMember'][] = $aliases[$a]; - } - else { - $errMsg = $this->messages['recipient'][1]; - array_push($errMsg, array($i)); - $messages[] = $errMsg; - } - } - } - } - return $messages; - } - - /** - * Returns a list of PDF entries - */ - function get_pdfEntries() { - $return = array(); - if (isset($this->attributes['cn'][0])) { - $return['nisMailAlias_alias'][0] = '' . _('Alias name') . '' . $this->attributes['cn'][0] . ''; - } - if (sizeof($this->attributes['rfc822MailMember']) > 0) { - $return['nisMailAlias_recipients'][0] = '' . _('Recipient list') . '' . implode(', ', $this->attributes['rfc822MailMember']) . ''; - } - return $return; - } - -} - - -?> diff --git a/lam/lib/modules/posixAccount.inc b/lam/lib/modules/posixAccount.inc deleted file mode 100644 index 7ed9ceda..00000000 --- a/lam/lib/modules/posixAccount.inc +++ /dev/null @@ -1,1626 +0,0 @@ -orig['homeDirectory'][0], $this->attributes['homeDirectory'][0])); - break; - } - break; - case 'gidNumber': switch ($id) { - case 0: return array('INFO', _('GID number'), sprintf(_('GID number has changed. To keep file ownership you have to run the following command as root: \'find / -gid %s -uid %s -exec chgrp %s {} \;\''), $this->orig['gidNumber'][0], $this->orig['uidNumber'][0], $_SESSION['cache']->getgid($this->attribtues['gidNumber'][0]))); - break; - } - break; - case 'uidNumber': switch ($id) { - case 0: return array('INFO', _('UID number'), sprintf(_('UID number has changed. To keep file ownership you have to run the following command as root: \'find / -uid %s -exec chown %s {} \;\''), $this->orig['uidNumber'][0], $this->attributes['uidNumber'][0])); - break; - } - break; - } - } - - /** this functin fills the error message array with messages - **/ - function load_Messages() { - // error messages for input checks - $this->messages['minUID'][0] = array('ERROR', _('Users') . ':  ' . _('Minimum UID number'), _("Minimum UID number is invalid!")); - $this->messages['maxUID'][0] = array('ERROR', _('Users') . ':  ' . _('Maximum UID number'), _("Maximum UID number is invalid!")); - $this->messages['minMachine'][0] = array('ERROR', _('Hosts') . ':  ' . _('Minimum UID number'), _("Minimum UID number is invalid!")); - $this->messages['maxMachine'][0] = array('ERROR', _('Hosts') . ':  ' . _('Maximum UID number'), _("Maximum UID number is invalid!")); - $this->messages['cmp_UID'][0] = array('ERROR', _('Users') . ':  ' . _('Maximum UID number'), _("Maximum UID number must be greater than minimum UID number!")); - $this->messages['cmp_Machine'][0] = array('ERROR', _('Hosts') . ':  ' . _('Maximum UID number'), _("Maximum UID number must be greater than minimum UID number!")); - $this->messages['cmp_both'][0] = array('ERROR', _('UID ranges for Unix accounts'), _("The UID ranges for users and hosts overlap! This is a problem because LAM uses the highest UID in use + 1 for new accounts. Please set the minimum UID to equal values or use independent ranges.")); - $this->messages['homeDirectory'][0] = array('ERROR', _('Home directory'), _('Homedirectory contains invalid characters.')); - $this->messages['homeDirectory'][1] = array('INFO', _('Home directory'), _('Replaced $user or $group in homedir.')); - $this->messages['homeDirectory'][2] = array('ERROR', _('Account %s:') . ' posixAccount_homedir', _('Homedirectory contains invalid characters.')); - $this->messages['uidNumber'][1] = array('ERROR', _('ID-Number'), _('No free ID-Number!')); - $this->messages['uidNumber'][2] = array('WARN', _('ID-Number'), _('It is possible that this ID-number is reused. This can cause several problems because files with old permissions might still exist. To avoid this warning set maxUID to a higher value.')); - $this->messages['uidNumber'][3] = array('ERROR', _('ID-Number'), _('ID is already in use')); - $this->messages['uidNumber'][4] = array('ERROR', _('Account %s:') . ' posixAccount_uid', _('UID must be a number. It has to be inside the UID range which is defined in your configuration profile.')); - $this->messages['userPassword'][0] = array('ERROR', _('Password'), _('Please enter the same password in both password-fields.')); - $this->messages['userPassword'][1] = array('ERROR', _('Password'), _('Password contains invalid characters. Valid characters are: a-z, A-Z, 0-9 and #*,.;:_-+!$%&/|?{[()]}= !')); - $this->messages['userPassword'][3] = array('ERROR', _('Password'), _('You cannot use this password options at the same time.')); - $this->messages['userPassword'][4] = array('ERROR', _('Account %s:') . ' posixAccount_password', _('Password contains invalid characters. Valid characters are: a-z, A-Z, 0-9 and #*,.;:_-+!$%&/|?{[()]}= !')); - $this->messages['uid'][0] = array('INFO', _('UID'), _('UID has changed. Do you want to change home directory?')); - $this->messages['uid'][1] = array('WARN', _('User name'), _('You are using a capital letters. This can cause problems because windows isn\'t case-sensitive.')); - $this->messages['uid'][2] = array('ERROR', _('User name'), _('User name contains invalid characters. Valid characters are: a-z, A-Z, 0-9 and .-_ !')); - $this->messages['uid'][3] = array('WARN', _('Host name'), _('You are using a capital letters. This can cause problems because windows isn\'t case-sensitive.')); - $this->messages['uid'][4] = array('ERROR', _('Host name'), _('Host name contains invalid characters. Valid characters are: a-z, A-Z, 0-9 and .-_ ! Host name must end with $ !')); - $this->messages['uid'][5] = array('WARN', _('User name'), _('User name in use. Selected next free user name.')); - $this->messages['uid'][6] = array('WARN', _('Host name'), _('Host name in use. Selected next free host name.')); - $this->messages['uid'][7] = array('ERROR', _('Account %s:') . ' posixAccount_userName', _('User name contains invalid characters. Valid characters are: a-z, A-Z, 0-9 and .-_ !')); - $this->messages['uid'][8] = array('ERROR', _('Account %s:') . ' posixAccount_hostName', _('Host name contains invalid characters. Valid characters are: a-z, A-Z, 0-9 and .-_ !')); - $this->messages['uid'][9] = array('ERROR', _('Account %s:') . ' posixAccount_userName', _('User name already exists!')); - $this->messages['uid'][10] = array('ERROR', _('Account %s:') . ' posixAccount_hostName', _('Host name already exists!')); - $this->messages['gidNumber'][0] = array('ERROR', _('Account %s:') . ' posixAccount_group', _('LAM was unable to find a group with this name!')); - $this->messages['gidNumber'][1] = array('ERROR', _('Account %s:') . ' posixAccount_group', _('This GID number is invalid! Please provide either a number or a group name.')); - $this->messages['gecos'][0] = array('ERROR', _('Account %s:') . ' posixAccount_gecos', _('This gecos value is invalid!')); - $this->messages['shell'][0] = array('ERROR', _('Account %s:') . ' posixAccount_shell', _('This login shell is invalid!')); - $this->messages['passwordDisabled'][0] = array('ERROR', _('Account %s:') . ' posixAccount_passwordDisabled', _('This value can only be \"true\" or \"false\".')); - $this->messages['cn'][0] = array('ERROR', _('Common name'), _('Please enter a valid common name!')); - $this->messages['cn'][1] = array('ERROR', _('Account %s:') . ' inetOrgPerson_cn', _('Please enter a valid common name!')); - } - - /** - * Returns meta data that is interpreted by parent class - * - * @return array array with meta data - */ - function get_metaData() { - $return = array(); - // manages user and host accounts - $return["account_types"] = array("user", "host"); - // user specific data - if ($this->get_scope() == "user") { - // LDAP filter - $return["ldap_filter"] = array('or' => "(objectClass=posixAccount)", 'and' => "(!(uid=*$))"); - // module dependencies - $return['dependencies'] = array('depends' => array(), 'conflicts' => array()); - } - elseif ($this->get_scope() == "host") { - // module dependencies - $return['dependencies'] = array('depends' => array(), 'conflicts' => array()); - } - // alias name - $return["alias"] = _("Unix"); - // RDN attributes - $return["RDN"] = array("uid" => "normal", "cn" => "low"); - // profile checks - $return['profile_checks']['posixAccount_homeDirectory'] = array('type' => 'ext_preg', 'regex' => 'homeDirectory', - 'error_message' => $this->messages['homeDirectory'][0]); - // profile mappings - $return['profile_mappings'] = array( - 'posixAccount_homeDirectory' => 'homeDirectory', - 'posixAccount_loginShell' => 'loginShell' - ); - // configuration options - $return['config_options']['user'] = array( - array( - 0 => array('kind' => 'text', 'text' => '' . _("Users") . ':  ' . _('Minimum UID number') . ": "), - 1 => array('kind' => 'input', 'name' => 'posixAccount_minUID', 'type' => 'text', 'size' => '10', 'maxlength' => '255'), - 2 => array('kind' => 'text', 'value' => ' '), - 3 => array('kind' => 'text', 'text' => _('Maximum UID number') . ": "), - 4 => array('kind' => 'input', 'name' => 'posixAccount_maxUID', 'type' => 'text', 'size' => '10', 'maxlength' => '255'), - 5 => array('kind' => 'help', 'value' => 'minMaxUser')) - ); - $return['config_options']['host'] = array( - array( - 0 => array('kind' => 'text', 'text' => '' . _("Hosts") . ':  ' . _('Minimum UID number') . ": "), - 1 => array('kind' => 'input', 'name' => 'posixAccount_minMachine', 'type' => 'text', 'size' => '10', 'maxlength' => '255'), - 2 => array('kind' => 'text', 'value' => ' '), - 3 => array('kind' => 'text', 'text' => _('Maximum UID number') . ": "), - 4 => array('kind' => 'input', 'name' => 'posixAccount_maxMachine', 'type' => 'text', 'size' => '10', 'maxlength' => '255'), - 5 => array('kind' => 'help', 'value' => 'minMaxHost')) - ); - $return['config_options']['all'] = array( - array( - 0 => array('kind' => 'text', 'text' => '' . _("Password hash type") . ':  '), - 1 => array('kind' => 'select', 'name' => 'posixAccount_pwdHash', 'size' => '1', - 'options' => array("CRYPT", "SHA", "SSHA", "MD5", "SMD5", "PLAIN"), 'options_selected' => array('SSHA')), - 2 => array('kind' => 'text', 'value' => ' '), - 3 => array('kind' => 'text', 'value' => ' '), - 4 => array('kind' => 'text', 'value' => ' '), - 5 => array('kind' => 'help', 'value' => 'pwdHash')) - ); - // configuration descriptions - $return['config_descriptions'] = array( - 'legend' => _("UID ranges for Unix accounts"), - 'descriptions' => array( - 'posixAccount_minUID' => _("Minimum UID number for Unix accounts (users)"), - 'posixAccount_maxUID' => _("Maximum UID number for Unix accounts (users)"), - 'posixAccount_minMachine' => _("Minimum UID number for Unix accounts (hosts)"), - 'posixAccount_maxMachine' => _("Maximum UID number for Unix accounts (hosts)"), - 'posixAccount_pwdHash' => _("Password hash type for Unix accounts"), - ) - ); - // upload - $return['upload_preDepends'] = array('inetOrgPerson'); - // user specific upload options - if ($this->scope == 'user') { - $return['upload_columns'] = array( - array( - 'name' => 'posixAccount_userName', - 'description' => _('User name'), - 'help' => 'uid', - 'example' => _('smiller'), - 'required' => true, - 'unique' => true - ), - array( - 'name' => 'posixAccount_cn', - 'description' => _('Common name'), - 'help' => 'cn', - 'example' => _('Steve Miller') - ), - array( - 'name' => 'posixAccount_uid', - 'description' => _('UID number'), - 'help' => 'uidNumber', - 'example' => '1234' - ), - array( - 'name' => 'posixAccount_group', - 'description' => _('Primary group'), - 'help' => 'group_upload', - 'example' => _('users'), - 'required' => true - ), - array( - 'name' => 'posixAccount_additionalGroups', - 'description' => _('Additional groups'), - 'help' => 'addgroup_upload', - 'example' => _('group01,group02') - ), - array( - 'name' => 'posixAccount_homedir', - 'description' => _('Home directory'), - 'help' => 'homeDirectory_upload', - 'example' => _('/home/smiller'), - 'default' => '/home/<posixAccount_userName>' - ), - array( - 'name' => 'posixAccount_shell', - 'description' => _('Login shell'), - 'help' => 'loginShell', - 'example' => '/bin/bash', - 'values' => implode(", ", getshells()), - 'default' => '/bin/bash' - ), - array( - 'name' => 'posixAccount_password', - 'description' => _('Password'), - 'help' => 'userPassword', - 'example' => _('secret') - ), - array( - 'name' => 'posixAccount_passwordDisabled', - 'description' => _('Lock password'), - 'help' => 'userPassword_lock', - 'example' => 'false', - 'values' => 'true, false', - 'default' => 'false' - ), - array( - 'name' => 'posixAccount_gecos', - 'description' => _('Gecos'), - 'help' => 'gecos', - 'example' => _('Steve Miller,Room 2.14,123-123-1234,123-123-1234') - ) - ); - } - // host specific upload options - elseif ($this->scope == 'host') { - $return['upload_columns'] = array( - array( - 'name' => 'posixAccount_hostName', - 'description' => _('Host name'), - 'help' => 'uid', - 'example' => _('pc01$'), - 'required' => true, - 'unique' => true - ), - array( - 'name' => 'posixAccount_uid', - 'description' => _('UID number'), - 'help' => 'uidNumber', - 'example' => '1234' - ), - array( - 'name' => 'posixAccount_group', - 'description' => _('Primary group'), - 'help' => 'group_upload', - 'example' => _('machines'), - 'required' => true - ), - array( - 'name' => 'posixAccount_gecos', - 'description' => _('Gecos'), - 'help' => 'gecos', - 'example' => _('pc01,Room 2.34') - ) - ); - } - if ($_SESSION['loggedIn']) { - $modules = $_SESSION['config']->get_AccountModules($this->get_scope()); - if (!in_array('inetOrgPerson', $modules)) { - $return['upload_columns'][] = - array( - 'name' => 'posixAccount_description', - 'description' => _('Description'), - 'help' => 'description' - ); - } - } - // available PDF fields - $return['PDF_fields'] = array( - 'uid', - 'uidNumber', - 'gidNumber', - 'gecos', - 'primaryGroup', - 'additionalGroups', - 'homeDirectory', - 'userPassword', - 'loginShell', - 'cn' - ); - // help Entries - $return['help'] = array( - 'minMaxUser' => array( - 'Headline' => _('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.') - ), - 'minMaxHost' => array( - 'Headline' => _('UID 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.') - ), - 'pwdHash' => array( - "Headline" => _("Password hash type"), - "Text" => _("LAM supports CRYPT, SHA, SSHA, MD5 and SMD5 to generate the hash value of passwords. 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.") - ), - 'uidNumber' => array( - "Headline" => _("UID number"), - "Text" => _("If empty UID number will be generated automaticly.") - ), - 'group_upload' => array( - "Headline" => _("Primary group"), - "Text" => _("The primary group for this account. You can insert a GID number or a group name.") - ), - 'addgroup_upload' => array( - "Headline" => _("Additional groups"), - "Text" => _("Here you can enter a list of additional group memberships. The group names are separated by commas.") - ), - 'homeDirectory_upload' => array( - "Headline" => _("Home directory"), - "Text" => _("Please enter the path to the user's home directory.") - ), - 'user' => array( - 'uid' => array( - "Headline" => _("User name"), - "Text" => _("User name 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 user name is already used user name will be expanded with a number. The next free number will be used. Warning: Older systems have problems with user names longer than 8 characters. You can not log in to Windows if user name is longer than 16 characters.") - ), - 'gecos' => array( - "Headline" => _("Gecos"), - "Text" => _("User description. If left empty first and last name will be used.") - ), - 'gidNumber' => array( - "Headline" => _("Primary group"), - "Text" => _("The primary group the user should be member of.") - ), - 'homeDirectory' => array( - "Headline" => _("Home directory"), - "Text" => _('$user and $group are replaced with user name or primary group name.') - ), - 'userPassword' => array( - "Headline" => _("Password"), - "Text" => _("Please enter the password which you want to set for this account.") - ), - 'userPassword_no' => array( - "Headline" => _("Use no password"), - "Text" => _("If checked no password will be used.") - ), - 'userPassword_lock' => array( - "Headline" => _("Account deactivated"), - "Text" => _("If checked account will be deactivated by putting a \"!\" before the encrypted password.") - ), - 'loginShell' => array( - "Headline" => _("Login shell"), - "Text" => _("To disable login use /bin/false. The list of shells is read from lam/config/shells") - ), - 'addgroup' => array( - "Headline" => _("Additional groups"), - "Text" => _("Hold the CTRL-key to (de)select multiple groups."). ' '. _("Can be left empty.") - ), - 'cn' => array ( - "Headline" => _("Common name"), - "Text" => _("This is the natural name of the user. If empty, the first and last name or user name is used.") - ) - ), - 'host' => array( - 'uid' => array( - "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. Host names are always ending with $. If last character is not $ it will be added. If host name is already used host name will be expanded with a number. The next free number will be used.") - ), - 'gecos' => array( - "Headline" => _("Gecos"), - "Text" => _("Host description. If left empty host name will be used.") - ), - 'gidNumber' => array( - "Headline" => _("Primary group"), - "Text" => _("The primary group the host should be member of.") - ), - 'description' => array ( - "Headline" => _("Description"), - "Text" => _("Host description. If left empty host name will be used.") - ) - ) - ); - - return $return; - } - - // Constructor - function init($base) { - // call parent init - parent::init($base); - $groups = $_SESSION['cache']->findgroups(); // list of all groupnames - $this->createhomedir=false; - if (count($groups)==0) { - StatusMessage("ERROR", _('No Unix groups found in LDAP! Please create one first.'), ''); - return; - } - } - - // Variables - // Use a unix password? - var $userPassword_nopassword; - // Use invalid password, '*', e.g. * for services - var $userPassword_invalid; - // Lock password - var $userPassword_lock; - /* These two variables keep an array of groups the - * user is also member of. - */ - var $groups; - var $groups_orig; - var $createhomedir; - - /* $attribute['userPassword'] can't accessed directly because it's enrcypted - * To read / write password function userPassword is needed - * This function will return the unencrypted password when - * called without a variable - * If it's called with a new password, the - * new password will be stored encrypted - */ - function userPassword($newpassword=false) { - if (is_string($newpassword)) { - // Write new password - if ($newpassword=='') - $this->attributes['userPassword'][0] = ''; - else $this->attributes['userPassword'][0] = base64_encode($_SESSION['ldap']->encrypt($newpassword)); - return 0; - } - else { - if ($this->attributes['userPassword'][0]!='') // Read existing password if set - return $_SESSION['ldap']->decrypt(base64_decode($this->attributes['userPassword'][0])); - else return ''; - } - } - - function module_ready() { - return true; - } - - /* This functions return true - * if all needed settings are done - */ - function module_complete() { - if (!$this->module_ready()) return false; - if ($this->attributes['uid'][0] == '') return false; - if ($this->attributes['uidNumber'][0] == '') return false; - if ($this->attributes['gidNumber'][0] == '') return false; - if ($this->attributes['homeDirectory'][0] == '') return false; - if ($this->attributes['loginShell'][0] == '') return false; - return true; - } - - /* This function returns a list of all html-pages in module - * This is usefull for mass upload and pdf-files - * because lam can walk trough all pages itself and do some - * error checkings - */ - function pages() { - return array('attributes', 'group'); - } - - /* This function loads all attributes into the object - * $attr is an array as it's retured from ldap_get_attributes - */ - function load_attributes($attr) { - parent::load_attributes($attr); - - // get all additional groupmemberships - $dn_groups = $_SESSION['cache']->get_cache('memberUid', 'posixGroup', 'group'); - if (is_array($dn_groups)) { - if (!is_array($this->groups)) $this->groups = array(); - $DNs = array_keys($dn_groups); - foreach ($DNs as $DN) { - if (in_array($attr['uid'][0], $dn_groups[$DN])) { - $this->groups[] = substr($DN, 3, strpos($DN, ',')-3); - } - } - sort($this->groups); - $this->groups_orig = $this->groups; - } - // Delete password. We don't want to show an encrypted password because it makes no sense - $this->userPassword(''); - return 0; - } - - /* This function returns an array with 3 entries: - * array( DN1 ('add' => array($attr), 'remove' => array($attr), 'modify' => array($attr)), DN2 .... ) - * DN is the DN to change. It may be possible to change several DNs, - * e.g. create a new user and add him to some groups via attribute memberUid - * add are attributes which have to be added to ldap entry - * remove are attributes which have to be removed from ldap entry - * modify are attributes which have to been modified in ldap entry - */ - function save_attributes() { - $return = $_SESSION[$this->base]->save_module_attributes($this->attributes, $this->orig); - // fill gecos with correct attributes frm inetOrgPerson when they are set - // TODO do we have t use 7bit ascci only? - // TODO change gecos evertime something in inetOrgPerson has changes - if (isset($_SESSION[$this->base]->modules['inetOrgPerson'])) { - if (isset($return[$_SESSION[$this->base]->dn]['add']['gecos'])) - $return[$_SESSION[$this->base]->dn]['add']['gecos'] = $_SESSION[$this->base]->modules['inetOrgPerson']->attributes['givenName'][0] . - " " . $_SESSION[$this->base]->modules['inetOrgPerson']->attributes['sn'][0] . "," . - $_SESSION[$this->base]->modules['inetOrgPerson']->attributes['roomNumber'][0] . "," . - $_SESSION[$this->base]->modules['inetOrgPerson']->attributes['telephoneNumber'][0] . "," . - $_SESSION[$this->base]->modules['inetOrgPerson']->attributes['homePhone'][0] ; - if (isset($return[$_SESSION[$this->base]->dn]['modify']['gecos'])) - $return[$_SESSION[$this->base]->dn]['modify']['gecos'] = $_SESSION[$this->base]->modules['inetOrgPerson']->attributes['givenName'][0] . - " " . $_SESSION[$this->base]->modules['inetOrgPerson']->attributes['sn'][0] . "," . - $_SESSION[$this->base]->modules['inetOrgPerson']->attributes['roomNumber'][0] . "," . - $_SESSION[$this->base]->modules['inetOrgPerson']->attributes['telephoneNumber'][0] . "," . - $_SESSION[$this->base]->modules['inetOrgPerson']->attributes['homePhone'][0] ; - } - // unset password when needed - if (isset($return[$_SESSION[$this->base]->dn]['add']['userPassword'])) - unset($return[$_SESSION[$this->base]->dn]['add']['userPassword']); - if (isset($return[$_SESSION[$this->base]->dn]['modify']['userPassword'])) - unset($return[$_SESSION[$this->base]->dn]['modify']['userPassword']); - if (isset($return[$_SESSION[$this->base]->dn]['notchanged']['userPassword'])) - unset($return[$_SESSION[$this->base]->dn]['notchanged']['userPassword']); - // Set unix password - if (isset($this->orig['userPassword'][0])) { - if ($this->userPassword_nopassword) // use no password - $return[$_SESSION[$this->base]->dn]['modify']['userPassword'][0] = pwd_hash('', !$this->userPassword_lock, $this->moduleSettings['posixAccount_pwdHash'][0]); - else if ($this->userPassword_invalid) // use '*' as password - $return[$_SESSION[$this->base]->dn]['modify']['userPassword'][0] = '*'; - else if (($this->attributes['userPassword'][0] != $this->orig['userPassword'][0]) && $this->userPassword()!='') // set password if set - $return[$_SESSION[$this->base]->dn]['modify']['userPassword'][0] = pwd_hash($this->userPassword(), !$this->userPassword_lock, $this->moduleSettings['posixAccount_pwdHash'][0]); - else if ($this->userPassword_lock && (pwd_disable($this->orig['userPassword'][0]) != $this->orig['userPassword'][0])) // lock account if required - $return[$_SESSION[$this->base]->dn]['modify']['userPassword'][0] = pwd_disable($this->orig['userPassword'][0]); - else // password hasn't changed - $return[$_SESSION[$this->base]->dn]['notchanged']['userPassword'][0] = $this->orig['userPassword'][0]; - } - else { - // New user or no old password set - if ($this->userPassword_nopassword) // use no password - $return[$_SESSION[$this->base]->dn]['add']['userPassword'][0] = pwd_hash('', !$this->userPassword_lock, $this->moduleSettings['posixAccount_pwdHash'][0]); - else if ($this->userPassword_invalid) // use '*' as password - $return[$_SESSION[$this->base]->dn]['add']['userPassword'][0] = '*'; - else if ($this->userPassword()!='') // set password if set - $return[$_SESSION[$this->base]->dn]['add']['userPassword'][0] = pwd_hash($this->userPassword(), !$this->userPassword_lock, $this->moduleSettings['posixAccount_pwdHash'][0]); - } - - // Remove primary group from additional groups - for ($i=0; $igroups); $i++) { - if ($this->groups[$i]==$_SESSION['cache']->getgrnam($this->attributes['gidNumber'][0])) unset($this->groups[$i]); - } - - // Set additional group memberships - if ($this->orig['uid'][0]!='' && $this->attributes['uid'][0]!=$this->orig['uid'][0]) { - // remove old memberships - $dn_groups = $_SESSION['cache']->get_cache('memberUid', 'posixGroup', 'group'); - $DNs = array_keys($dn_groups); - foreach ($DNs as $DN) - if (in_array($this->orig['uid'][0], $dn_groups[$DN])) - $return[$DN]['remove']['memberUid'][0] = $this->orig['uid'][0]; - // Add new memberships - if (is_array($this->groups)) - foreach ($this->groups as $group) { - $dn = $_SESSION['ldap']->in_cache ($group, 'cn', 'group'); - $return[$dn]['add']['memberUid'][0] = $this->attributes['uid'][0]; - } - } - else { - if (is_array($this->groups)) { - // There are some additional groups defined - if (is_array($this->groups_orig)) { - //There are some old groups. - $add = array_delete($this->groups_orig, $this->groups); - $remove = array_delete($this->groups, $this->groups_orig); - $dn_cns = $_SESSION['cache']->get_cache('cn', 'posixGroup', 'group'); - // get_cache will return an array ( dn1 => array(cn1), dn2 => array(cn2), ... ) - $DNs = array_keys($dn_cns); - foreach ($DNs as $DN) { - if (is_array($add)) - if (in_array($dn_cns[$DN][0], $add)) $return[$DN]['add']['memberUid'] = $this->attributes['uid'][0]; - if (is_array($remove)) - if (in_array($dn_cns[$DN][0], $remove)) $return[$DN]['remove']['memberUid'] = $this->attributes['uid'][0]; - } - // primary group mut also be removed if it has changed after setting additional groups - if (in_array($_SESSION['cache']->getgrnam($this->attributes['gidNumber'][0]), $this->groups_orig)) $return[$DN]['remove']['memberUid'] = $this->attributes['uid']; - } - else { - // Add user to every group - $dn_cns = $_SESSION['cache']->get_cache('cn', 'posixGroup', 'group'); - // get_cache will return an array ( dn1 => array(cn1), dn2 => array(cn2), ... ) - $DNs = array_keys($dn_cns); - foreach ($DNs as $DN) { - if (in_array($dn_cns[$DN][0], $this->groups)) $return[$DN]['add']['memberUid'] = $this->attributes['uid'][0]; - } - } - } - else { - if (is_array($this->groups_orig)) { - //There are some old groups which have to be removed - $dn_cns = $_SESSION['cache']->get_cache('cn', 'posixGroup', 'group'); - // get_cache will return an array ( dn1 => array(cn1), dn2 => array(cn2), ... ) - $DNs = array_keys($dn_cns); - foreach ($DNs as $DN) { - if (in_array($dn_cns[$DN][0], $this->orig['groups'])) $return[$DN]['remove']['memberUid'] = $this->attributes['uid'][0]; - } - } - } - } - // fixme TODO lamdeamon without DN - if ($this->createhomedir) $return[$_SESSION[$this->base]->dn]['lamdaemon']['command'][] = $this->attributes['uid'][0] . " home add"; - return $return; - } - - function delete_attributes($post) { - $return = array(); - // remove memberUids if set - $groups = $_SESSION['cache']->get_cache('memberUid', 'posixGroup', 'group'); - if (!is_array($groups)) return $return; - $DNs = array_keys($groups); - for ($i=0; $iattributes['uid'][0], $groups[$DNs[$i]])) $return[$DNs[$i]]['remove']['memberUid'][] = $this->attributes['uid'][0]; - } - if ($post['deletehomedir']) $return[$_SESSION[$this->base]->dn_orig]['lamdaemon']['command'][] = $this->attributes['uid'][0] . " home rem"; - return $return; - } - - /* Write variables into object and do some regexp checks - */ - function process_attributes(&$post) { - $groups = $_SESSION['cache']->findgroups(); // list of all groupnames - if (count($groups)==0) { - return array("ERROR", _('No Unix groups found in LDAP! Please create one first.'), ''); - } - $this->attributes['homeDirectory'][0] = $post['homeDirectory']; - $this->attributes['loginShell'][0] = $post['loginShell']; - if (isset($post['gecos'])) $this->attributes['gecos'][0] = $post['gecos']; - if ($post['createhomedir']) $this->createhomedir = true; - else $this->createhomedir = false; - if ($this->orig['uid'][0]!='' && $post['uid']!=$this->attributes['uid'][0]) - $triggered_messages['uid'][] = $this->messages['uid'][0]; - if ($this->orig['gidNumber'][0]!='' && $_SESSION['cache']->getgid($post['gidNumber'])!=$this->attributes['gidNumber'][0]) - $triggered_messages['gidNumber'][] = $this->dynamic_Message('gidNumber',0); - if ($this->orig['uidNumber'][0]!='' && $post['uidNumber']!=$this->attributes['uidNumber'][0]) - $triggered_messages['uidNumber'][] = $this->dynamic_Message('uidNumber',0); - if (isset($post['homeDirectory']) && $this->orig['homeDirectory'][0]!='' && $post['homeDirectory']!=$this->attributes['homeDirectory'][0]) - $triggered_messages['homeDirectory'][] = $this->dynamic_Message('homeDirectory',0); - // Load attributes - $this->attributes['uid'][0] = $post['uid']; - $this->attributes['cn'][0] = $post['cn']; - if ($this->attributes['cn'][0] == '') { - if (($this->scope == 'host') && (substr($post['uid'], -1, 1) == '$')) { - $this->attributes['cn'][0] = substr($post['uid'], 0, strlen($post['uid']) - 1); - } - elseif (isset($_SESSION[$this->base]->module['inetOrgPerson'])) { - if ($_SESSION[$this->base]->module['inetOrgPerson']->attributes['givenName'][0]) { - $this->attributes['cn'][0] = $_SESSION[$this->base]->module['inetOrgPerson']->attributes['givenName'][0] . " " . $_SESSION[$this->base]->module['inetOrgPerson']->attributes['sn'][0]; - } - elseif ($_SESSION[$this->base]->module['inetOrgPerson']->attributes['sn'][0]) { - $this->attributes['cn'][0] = $_SESSION[$this->base]->module['inetOrgPerson']->attributes['sn'][0]; - } - else { - $this->attributes['cn'][0] = $post['uid']; - } - } - else { - $this->attributes['cn'][0] = $post['uid']; - } - } - if (!get_preg($this->attributes['cn'][0], 'cn')) { - $triggered_messages['cn'][] = $this->messages['cn'][0]; - } - $this->attributes['uidNumber'][0] = $post['uidNumber']; - $this->attributes['gidNumber'][0] = $_SESSION['cache']->getgid($post['gidNumber']); - // Check if UID is valid. If none value was entered, the next useable value will be inserted - // load min and may uidNumber - if ($_SESSION[$this->base]->type=='user') { - $minID = intval($this->moduleSettings['posixAccount_minUID'][0]); - $maxID = intval($this->moduleSettings['posixAccount_maxUID'][0]); - } - if ($_SESSION[$this->base]->type=='host') { - $minID = intval($this->moduleSettings['posixAccount_minMachine'][0]); - $maxID = intval($this->moduleSettings['posixAccount_maxMachine'][0]); - } - $dn_uids = $_SESSION['cache']->get_cache('uidNumber', 'posixAccount', '*'); - // get_cache will return an array ( dn1 => array(uidnumber1), dn2 => array(uidnumber2), ... ) - if(is_array($dn_uids)) { - foreach ($dn_uids as $uid) $uids[] = $uid[0]; - sort ($uids, SORT_NUMERIC); - } - if ($this->attributes['uidNumber'][0]=='') { - // No id-number given - if ($this->orig['uidNumber'][0]=='') { - // new account -> we have to find a free id-number - $newUID = $this->getNextUIDs(1, $triggered_messages); - if (is_array($newUID)) { - $this->attributes['uidNumber'][0] = $newUID[0]; - } - else { - $triggered_messages['uidNumber'][] = $this->messages['uidNumber'][3]; - } - } - else $this->attributes['uidNumber'][0] = $this->orig['uidNumber'][0]; - // old account -> return id-number which has been used - } - else { - // Check manual ID - // id-number is out of valid range - if ( ($this->attributes['uidNumber'][0]!=$post['uidNumber']) && ($this->attributes['uidNumber'][0] < $minID || $this->attributes['uidNumber'][0] > $maxID)) $triggered_messages['uidNumber'][] = array('ERROR', _('ID-Number'), sprintf(_('Please enter a value between %s and %s!'), $minID, $maxID)); - // $uids is allways an array but not if no entries were found - if (is_array($uids)) { - // id-number is in use and account is a new account - if ((in_array($this->attributes['uidNumber'][0], $uids)) && $this->orig['uidNumber'][0]=='') $triggered_messages['uidNumber'][] = array('ERROR', _('ID-Number'), _('ID is already in use')); - // id-number is in use, account is existing account and id-number is not used by itself - if ((in_array($this->attributes['uidNumber'][0], $uids)) && $this->orig['uidNumber'][0]!='' && ($this->orig['uidNumber'][0] != $this->attributes['uidNumber'][0]) ) { - $triggered_messages['uidNumber'][] = $this->messages['uidNumber'][3]; - $this->attributes['uidNumber'][0] = $this->orig['uidNumber'][0]; - } - } - } - if ($_SESSION[$this->base]->type=='user') { - if (($this->attributes['uid'][0] != $post['uid']) && !get_preg($post['uid'], '!upper')) - $triggered_messages['uid'][] = $this->messages['uid'][1]; - if ( !get_preg($this->attributes['homeDirectory'][0], 'homeDirectory' )) - $triggered_messages['homeDirecotry'][] = $this->messages['homeDirectory'][0]; - } - if (($post['userPassword_lock'] && $post['userPassword_invalid']) || ($post['userPassword_nopassword'] && $post['userPassword_invalid'])) { - // found invalid password parameter combination - $triggered_messages['userPassword'][] = $this->messages['userPassword'][3]; - } - else { - if ($post['userPassword_nopassword']) { - $this->userPassword_nopassword=true; - $this->userPassword_invalid=false; - $this->userPassword(''); - $post['userPassword2'] = ''; - if ($post['userPassword_lock']) - $this->userPassword_lock=true; - else $this->userPassword_lock=false; - } - else { - $this->userPassword_nopassword=false; - if ($post['userPassword_invalid']) { - $this->userPassword_invalid=true; - $this->userPassword_lock=false; - $this->userPassword(''); - $post['userPassword2'] = ''; - } - else { - $this->userPassword_invalid=false; - if ($post['genpass']) $this->userPassword(genpasswd()); - elseif ($_SESSION[$this->base]->isNewAccount) { - if ($post['userPassword'] != $post['userPassword2']) - $triggered_messages['userPassword'][] = $this->messages['userPassword'][0]; - else $this->userPassword($post['userPassword']); - if (!get_preg($this->userPassword(), 'password')) - $triggered_messages['userPassword'][] = $this->messages['userPassword'][1]; - } - if ($post['userPassword_lock']) $this->userPassword_lock=true; - else $this->userPassword_lock=false; - } - } - if ($_SESSION[$this->base]->type=='user') { - $this->attributes['homeDirectory'][0] = str_replace('$group', $_SESSION['cache']->getgrnam($this->attributes['gidNumber'][0]), $this->attributes['homeDirectory'][0]); - if ($this->attributes['uid'][0] != '') - $this->attributes['homeDirectory'][0] = str_replace('$user', $this->attributes['uid'][0], $this->attributes['homeDirectory'][0]); - if ($this->attributes['homeDirectory'][0] != $post['homeDirectory']) $triggered_messages['homeDirecotry'][] = array('INFO', _('Home directory'), _('Replaced $user or $group in homedir.')); - // Check if Username contains only valid characters - if ( !get_preg($this->attributes['uid'][0], 'username') && !$profile) - $triggered_messages['uid'][] = $this->messages['uid'][2]; - } - if ($_SESSION[$this->base]->type=='host') { - // Check if Hostname contains only valid characters - if ( !get_preg($this->attributes['uid'][0], 'hostname')) - $triggered_messages['uid'][] = $this->messages['uid'][4]; - if (!$this->attributes['homeDirectory'][0]) { - $this->attributes['homeDirectory'][0] = '/dev/null'; - } - if (!$this->attributes['loginShell'][0]) { - $this->attributes['loginShell'][0] = '/bin/false'; - } - } - // Create automatic useraccount with number if original user already exists - // Reset name to original name if new name is in use - // Set username back to original name if new username is in use - if ($_SESSION['cache']->in_cache($this->attributes['uid'][0],'uid', '*') && ($this->orig['uid'][0]!='')) - $this->attributes['uid'][0] = $this->orig['uid'][0]; - // Change uid to a new uid until a free uid is found - else - while ($_SESSION['cache']->in_cache($this->attributes['uid'][0], 'uid', '*')) { - if ($_SESSION[$this->base]->type=='host') $this->attributes['uid'][0] = substr($this->attributes['uid'][0], 0, -1); - // get last character of username - $lastchar = substr($this->attributes['uid'][0], strlen($this->attributes['uid'][0])-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. - */ - if ($_SESSION[$this->base]->type=='host') $this->attributes['uid'][0] = $this->attributes['uid'][0] . '2$'; - else $this->attributes['uid'][0] = $this->attributes['uid'][0] . '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($this->attributes['uid'][0])-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($this->attributes['uid'][0], $i, strlen($this->attributes['uid'][0])-$i))) $i--; - else $mark=true; - // increase last number with one - $firstchars = substr($this->attributes['uid'][0], 0, $i+1); - $lastchars = substr($this->attributes['uid'][0], $i+1, strlen($this->attributes['uid'][0])-$i); - // Put username together - if ($_SESSION[$this->base]->type=='host') $this->attributes['uid'][0] = $firstchars . (intval($lastchars)+1)."$"; - else $this->attributes['uid'][0] = $firstchars . (intval($lastchars)+1); - } - } - // Show warning if lam has changed username - if ($this->attributes['uid'][0] != $post['uid']) { - if ($_SESSION[$this->base]->type=='user') - $triggered_messages['uid'][] = $this->messages['uid'][5]; - if ($_SESSION[$this->base]->type=='host') - $triggered_messages['uid'][] = $this->messages['uid'][6]; - } - if ($_SESSION[$this->base]->isNewAccount && !get_preg($this->userPassword(), 'password')) - $triggered_messages['userPassword'][] = $this->messages['userPassword'][1]; - } - - $temp = $this->input_check(); - // TODO is this really OK? - if (is_array($temp)) $triggered_messages = array_merge_recursive($triggered_messages, $temp); - // Return error-messages - if (count($triggered_messages)!=0) { - $this->triggered_messages = $triggered_messages; - return $triggered_messages; - } - else $this->triggered_messages = array(); - // Go to additional group page when no error did ocour and button was pressed - if ($post['addgroup']) return 'group'; - if ($post['changepass']) return 'password'; - return 0; - } - - /* Write variables into object and do some regexp checks - */ - function process_group(&$post) { - do { // X-Or, only one if() can be true - if (isset($post['addgroups']) && isset($post['addgroups_button'])) { // Add groups to list - // Add new group - $this->groups = @array_merge($this->groups, $post['addgroups']); - // sort groups - sort($this->groups); - break; - } - if (isset($post['removegroups']) && isset($post['removegroups_button'])) { // remove groups from list - $this->groups = array_delete($post['removegroups'], $this->groups); - break; - } - } while(0); - if (isset($post['addgroups_button']) || isset($post['removegroups_button'])) return 'group'; - if ($post['back']) return 'attributes'; - return 0; - } - - /** - * Sets a new password. - * - * @param $post HTTP POST - */ - function process_password(&$post) { - if ($post['back']) return 'attributes'; - $messages = array(); - if ($post['userPassword'] != $post['userPassword2']) { - $messages['userPassword'][] = $this->messages['userPassword'][0]; - if (!get_preg($post['userPassword'], 'password')) - $messages['userPassword'][] = $this->messages['userPassword'][1]; - } - else $this->userPassword($post['userPassword']); - if (sizeof($messages) > 0) return $messages; - else return 'attributes'; - } - - /* This function will create the html-page - * to show a page with all attributes. - * It will output a complete html-table - */ - function display_html_attributes(&$post) { - $groups = $_SESSION['cache']->findgroups(); // list of all groupnames - if (count($groups)==0) { - StatusMessage("ERROR", _('No Unix groups found in LDAP! Please create one first.'), ''); - return; - } - $shelllist = getshells(); // list of all valid shells - - $return[] = array ( - 0 => array('kind' => 'text', 'text' => _("User name").'*'), - 1 => array('kind' => 'input', 'name' => 'uid', 'type' => 'text', 'size' => '30', 'maxlength' => '20', 'value' => $this->attributes['uid'][0]), - 2 => array('kind' => 'help', 'value' => 'uid')); - $return[] = array ( - 0 => array('kind' => 'text', 'text' => _("Common name").'*'), - 1 => array('kind' => 'input', 'name' => 'cn', 'type' => 'text', 'size' => '30', 'value' => $this->attributes['cn'][0]), - 2 => array('kind' => 'help', 'value' => 'cn')); - $return[] = array( - 0 => array('kind' => 'text', 'text' => _('UID number').'*'), - 1 => array('kind' => 'input', 'name' => 'uidNumber', 'type' => 'text', 'size' => '6', 'maxlength' => '6', 'value' => $this->attributes['uidNumber'][0]), - 2 => array('kind' => 'help', 'value' => 'uidNumber')); - if (!isset($_SESSION[$this->base]->modules['inetOrgPerson'])) { - $return[] = array( - 0 => array('kind' => 'text', 'text' => _('Gecos')), - 1 => array('kind' => 'input', 'name' => 'gecos', 'type' => 'text', 'size' => '30', 'maxlength' => '255', 'value' => $this->attributes['gecos'][0]), - 2 => array('kind' => 'help', 'value' => 'gecos')); - } - $return[] = array( - 0 => array('kind' => 'text', 'text' => _('Primary group').'*' ), - 1 => array('kind' => 'select', 'name' => 'gidNumber', 'options' => $groups, 'options_selected' => array($_SESSION['cache']->getgrnam($this->attributes['gidNumber'][0]))), - 2 => array('kind' => 'help', 'value' => 'gidNumber')); - - if ($_SESSION[$this->base]->type=='user') { - $return[] = array( - 0 => array('kind' => 'text', 'text' => _('Additional groups')), - 1 => array('kind' => 'input', 'name' => 'addgroup', 'type' => 'submit', 'value' => _('Edit groups')), - 2 => array('kind' => 'help', 'value' => 'addgroup')); - $return[] = array( - 0 => array('kind' => 'text', 'text' => _('Home directory').'*'), - 1 => array('kind' => 'input', 'name' => 'homeDirectory', 'type' => 'text', 'size' => '30', 'maxlength' => '255', 'value' => $this->attributes['homeDirectory'][0]), - 2 => array('kind' => 'help', 'value' => 'homeDirectory')); - if ($this->orig['homeDirectory']=='' && isset($_SESSION['config']->scriptPath)) { - $return[] = array( - 0 => array('kind' => 'text', 'text' => _('Create home directory')), - 1 => array('kind' => 'input', 'name' => 'createhomedir', 'type' => 'checkbox', 'checked' => $this->createhomedir), - 2 => array('kind' => 'help', 'value' => 'createhomedir')); - } - if ($_SESSION[$this->base]->isNewAccount) { - $return[] = array( - 0 => array('kind' => 'text', 'text' => _('Password') ), - 1 => array('kind' => 'input', 'name' => 'userPassword', 'type' => 'password', 'size' => '30', 'maxlength' => '255', 'value' => $this->userPassword()), - 2 => array('kind' => 'input', 'name' => 'genpass', 'type' => 'submit', 'value' => _('Generate password'))); - if ($post['userPassword2']!='') $password2 = $post['userPassword2']; - else $password2 = $this->userPassword(); - $return[] = array( - 0 => array('kind' => 'text', 'text' => _('Repeat password')), - 1 => array('kind' => 'input', 'name' => 'userPassword2', 'type' => 'password', 'size' => '30', 'maxlength' => '255', 'value' => $password2), - 2 => array('kind' => 'help', 'value' => 'userPassword')); - } - else { - $return[] = array( - 0 => array('kind' => 'text', 'text' => _('Password') ), - 1 => array('kind' => 'input', 'name' => 'changepass', 'type' => 'submit', 'value' => _('Change password'))); - } - $return[] = array( - 0 => array('kind' => 'text', 'text' => _('Set no password')), - 1 => array('kind' => 'input', 'name' => 'userPassword_nopassword', 'type' => 'checkbox', 'checked' => $this->userPassword_nopassword), - 2 => array('kind' => 'help', 'value' => 'userPassword_nopassword')); - $return[] = array( - 0 => array('kind' => 'text', 'text' => _('Invalid password')), - 1 => array('kind' => 'input', 'name' => 'userPassword_invalid', 'type' => 'checkbox', 'checked' => $this->userPassword_invalid), - 2 => array('kind' => 'help', 'value' => 'userPassword_invalid')); - if ($_SESSION[$this->base]->isNewAccount || isset($this->attributes['userPassword'][0])) { - $return[] = array( - 0 => array('kind' => 'text', 'text' => _('Lock password')), - 1 => array('kind' => 'input', 'name' => 'userPassword_lock', 'type' => 'checkbox', 'checked' => $this->userPassword_lock), - 2 => array('kind' => 'help', 'value' => 'userPassword_lock')); - } - if (count($shelllist)!=0) { - $return[] = array( - 0 => array('kind' => 'text', 'text' => _('Login shell').'*'), - 1 => array('kind' => 'select', 'name' => 'loginShell', 'options' => $shelllist, 'options_selected' => array ($this->attributes['loginShell'][0])), - 2 => array('kind' => 'help', 'value' => 'loginShell')); - } - } - return $return; - } - - function display_html_delete(&$post) { - if ($this->scope == 'user' && isset($_SESSION['config']->scriptPath)) { - $return[] = array ( - 0 => array('kind' => 'text', 'text' => _('Delete home directory')), - 1 => array('kind' => 'input', 'name' => 'deletehomedir', 'type' => 'checkbox'), - 2 => array('kind' => 'help', 'value' => 'deletehomedir')); - } - return $return; - } - - /** - * Displays the group selection. - * - * @param array $post HTTP-POST - * @return array meta HTML code - */ - function display_html_group(&$post) { - // load list with all groups - $dn_groups = $_SESSION['cache']->get_cache('cn', 'posixGroup', 'group'); - $DNs = array_keys($dn_groups); - foreach ($DNs as $DN) { - $groups[] = $dn_groups[$DN][0]; - } - // remove groups the user is member of from grouplist - $groups = array_delete($this->groups, $groups); - // Remove primary group from grouplist - $group = $_SESSION['cache']->getgrnam($this->attributes['gidNumber'][0]); - $groups = array_flip($groups); - unset ($groups[$group]); - $groups = array_flip($groups); - // sort groups - sort($groups, SORT_STRING); - - $return[] = array( - 0 => array('kind' => 'fieldset', 'legend' => _("Additional groups"), 'value' => array( - 0 => array( - 0 => array('kind' => 'fieldset', 'td' => array('valign' => 'top'), 'legend' => _("Selected groups"), 'value' => array( - 0 => array ( - 0 => array('kind' => 'select', 'name' => 'removegroups', 'size' => '15', 'multiple' => true, 'options' => $this->groups)))), - 1 => array('kind' => 'table', 'value' => array( - 0 => array( - 0 => array('kind' => 'input', 'type' => 'submit', 'name' => 'addgroups_button', 'value' => '<=', 'td' => array('align' => 'center'))), - 1 => array( - 0 => array ( 'kind' => 'input', 'type' => 'submit', 'name' => 'removegroups_button', 'value' => '=>', 'td' => array('align' => 'center'))), - 2 => array( - 0 => array ( 'kind' => 'help', 'value' => 'addgroup', 'td' => array('align' => 'center'))))), - 2 => array('kind' => 'fieldset', 'td' => array('valign' => 'top'), 'legend' => _("Available groups"), 'value' => array( - 0 => array( - 0 => array('kind' => 'select', 'name' => 'addgroups', 'size' => '15', 'multiple' => true, 'options' => $groups)))) - )))); - - $return[] = array( - 0 => array('kind' => 'input', 'type' => 'submit', 'value' => _('Back'), 'name' => 'back'), - 1 => array('kind' => 'text'), - 2 => array('kind' => 'text')); - return $return; - } - - /** - * Displays the password changing dialog. - * - * @param array $post HTTP-POST - * @return array meta HTML code - */ - function display_html_password(&$post) { - $return[] = array( - 0 => array('kind' => 'text', 'text' => _('Password') ), - 1 => array('kind' => 'input', 'name' => 'userPassword', 'type' => 'password', 'size' => '20', 'maxlength' => '255', 'value' => ""), - 2 => array('kind' => 'help', 'value' => 'userPassword')); - if ($post['userPassword2']!='') $password2 = $post['userPassword2']; - else $password2 = $this->userPassword(); - $return[] = array( - 0 => array('kind' => 'text', 'text' => _('Repeat password')), - 1 => array('kind' => 'input', 'name' => 'userPassword2', 'type' => 'password', 'size' => '20', 'maxlength' => '255', 'value' => "")); - $return[] = array( - 0 => array('kind' => 'table', 'value' => array( - 0 => array( - 0 => array('kind' => 'input', 'type' => 'submit', 'value' => _('Submit'), 'name' => 'submit'), - 1 => array('kind' => 'input', 'type' => 'submit', 'value' => _('Back'), 'name' => 'back'), - 2 => array('kind' => 'text'))))); - return $return; - } - - /** - * Returns a list of elements for the account profiles. - * - * @return profile elements - */ - function get_profileOptions() { - $return = array(); - if ($this->scope == 'user') { - $groups = $_SESSION['cache']->findgroups(); // list of all groupnames - $shelllist = getshells(); // list of all valid shells - // primary Unix group - $return[] = array(0 => array('kind' => 'text', 'text' => _('Primary group') . ": "), - 1 => array('kind' => 'select', 'name' => 'posixAccount_primaryGroup', 'options' => $groups, 'options_selected' => array(), 'size' => 1), - 2 => array('kind' => 'help', 'value' => 'gidNumber', 'scope' => 'user')); - // additional group memberships - $return[] = array(0 => array('kind' => 'text', 'text' => _('Additional groups') . ": "), - 1 => array('kind' => 'select', 'name' => 'posixAccount_additionalGroup', 'options' => $groups, - 'options_selected' => array(), 'size' => 10, 'multiple' => true), - 2 => array('kind' => 'help', 'value' => 'addgroup', 'scope' => 'user')); - // home directory - $return[] = array(0 => array('kind' => 'text', 'text' => _('Home directory') . ": "), - 1 => array('kind' => 'input', 'name' => 'posixAccount_homeDirectory', 'type' => 'text', 'size' => '30', 'maxlength' => '255', 'value' => '/home/$user'), - 2 => array('kind' => 'help', 'value' => 'homeDirectory', 'scope' => 'user')); - // login shell - $return[] = array(0 => array('kind' => 'text', 'text' => _('Login shell') . ": "), - 1 => array('kind' => 'select', 'name' => 'posixAccount_loginShell', 'options' => $shelllist, 'options_selected' => array("/bin/bash")), - 2 => array('kind' => 'help', 'value' => 'loginShell', 'scope' => 'user')); - // do not set password - $return[] = array(0 => array('kind' => 'text', 'text' => _('Set no password') . ": "), - 1 => array('kind' => 'input', 'name' => 'posixAccount_userPassword_no', 'type' => 'checkbox', 'checked' => false), - 2 => array('kind' => 'help', 'value' => 'posixAccount_userPassword_no', 'scope' => 'user')); - // disable account - $return[] = array(0 => array('kind' => 'text', 'text' => _('Lock password') . ": "), - 1 => array('kind' => 'input', 'name' => 'posixAccount_userPassword_lock', 'type' => 'checkbox', 'checked' => false), - 2 => array('kind' => 'help', 'value' => 'posixAccount_userPassword_lock', 'scope' => 'user')); - } - elseif ($this->scope == 'host') { - $groups = $_SESSION['cache']->findgroups(); // list of all groupnames - // primary Unix group - $return[] = array(0 => array('kind' => 'text', 'text' => _('Primary group') . ": "), - 1 => array('kind' => 'select', 'name' => 'posixAccount_primaryGroup', 'options' => $groups, 'options_selected' => array(), 'size' => 1), - 2 => array('kind' => 'help', 'value' => 'gidNumber', 'scope' => 'host')); - } - return $return; - } - - /** - * Loads the values of an account profile into internal variables. - * - * @param array $profile hash array with profile values (identifier => value) - */ - function load_profile($profile) { - // profile mappings in meta data - parent::load_profile($profile); - // special profile options - // GID - if (isset($profile['posixAccount_primaryGroup'][0])) { - $gid = $_SESSION['cache']->getgid($profile['posixAccount_primaryGroup'][0]); - if (isset($gid)) { - $this->attributes['gidNumber'][0] = $gid; - } - } - // other group memberships - if (isset($profile['posixAccount_additionalGroup'][0])) { - $this->groups = $profile['posixAccount_additionalGroup']; - } - // no password - if ($profile['posixAccount_userPassword_no'][0] == "true") { - $this->userPassword_nopassword = true; - } - elseif ($profile['posixAccount_userPassword_no'][0] == "false") { - $this->userPassword_nopassword = false; - } - // locked password - if ($profile['posixAccount_userPassword_lock'][0] == "true") { - $this->userPassword_lock = true; - } - elseif ($profile['posixAccount_userPassword_lock'][0] == "false") { - $this->userPassword_lock = false; - } - } - - /* - * (non-PHPDoc) - * @see baseModule#get_pdfEntries - */ - function get_pdfEntries($account_type = "user") { - return array( - 'posixAccount_uid' => array('' . _('User name') . '' . $this->attributes['uid'][0] . ''), - 'posixAccount_cn' => array('' . _('Common name') . '' . $this->attributes['cn'][0] . ''), - 'posixAccount_uidNumber' => array('' . _('UID number') . '' . $this->attributes['uidNumber'][0] . ''), - 'posixAccount_gidNumber' => array('' . _('GID number') . '' . $this->attributes['gidNumber'][0] . ''), - 'posixAccount_gecos' => array('' . _('Gecos') . '' . $this->attributes['gecos'][0] . ''), - 'posixAccount_primaryGroup' => array('' . _('Primary group') . '' . $_SESSION['cache']->getgrnam($this->attributes['gidNumber'][0]) . ''), - 'posixAccount_additionalGroups' => array('' . _('Additional groups') . '' . ''), - 'posixAccount_homeDirectory' => array('' . _('Home directory') . '' . $this->attributes['homeDirectory'][0] . ''), - 'posixAccount_userPassword' => array('' . _('Password') . '' . $this->attributes['userPassword'][0] . ''), - 'posixAccount_loginShell' => array('' . _('Login shell') . '' . $this->attributes['loginShell'][0] . ''), - ); - } - - /** - * Checks input values of module settings. - * - * @param array $scopes list of account types which are used - * @param array $options hash array containing the settings (array('option' => array('value'))) - * @return array list of error messages - */ - function check_configOptions($scopes, $options) { - $return = array(); - // user settings - if (in_array('user', $scopes)) { - // min/maxUID are required, check if they are numeric - if (!isset($options['posixAccount_minUID'][0]) || !ereg('^[0-9]+$', $options['posixAccount_minUID'][0])) { - $return[] = $this->messages['minUID'][0]; - } - if (!isset($options['posixAccount_maxUID'][0]) || !ereg('^[0-9]+$', $options['posixAccount_maxUID'][0])) { - $return[] = $this->messages['maxUID'][0]; - } - // minUID < maxUID - if (isset($options['posixAccount_minUID'][0]) && isset($options['posixAccount_maxUID'][0])) { - if ($options['posixAccount_minUID'][0] > $options['posixAccount_maxUID'][0]) { - $return[] = $this->messages['cmp_UID'][0]; - } - } - } - // host settings - if (in_array('host', $scopes)) { - // min/maxUID are required, check if they are numeric - if (!isset($options['posixAccount_minMachine'][0]) || !ereg('^[0-9]+$', $options['posixAccount_minMachine'][0])) { - $return[] = $this->messages['minMachine'][0]; - } - if (!isset($options['posixAccount_maxMachine'][0]) || !ereg('^[0-9]+$', $options['posixAccount_maxMachine'][0])) { - $return[] = $this->messages['maxMachine'][0]; - } - // minUID < maxUID - if (isset($options['posixAccount_minMachine'][0]) && isset($options['posixAccount_maxMachine'][0])) { - if ($options['posixAccount_minMachine'][0] > $options['posixAccount_maxMachine'][0]) { - $return[] = $this->messages['cmp_Machine'][0]; - } - } - } - // check if user and host ranges overlap - if (in_array('user', $scopes) && in_array('host', $scopes)) { - if (isset($options['posixAccount_minUID'][0]) && isset($options['posixAccount_maxUID'][0]) && - isset($options['posixAccount_minMachine'][0]) && isset($options['posixAccount_maxMachine'][0])) { - if (($options['posixAccount_minMachine'][0] > $options['posixAccount_minUID'][0]) && - ($options['posixAccount_minMachine'][0] < $options['posixAccount_maxUID'][0])) { - $return[] = $this->messages['cmp_both'][0]; - } - if (($options['posixAccount_minUID'][0] > $options['posixAccount_minMachine'][0]) && - ($options['posixAccount_minUID'][0] < $options['posixAccount_maxMachine'][0])) { - $return[] = $this->messages['cmp_both'][0]; - } - } - } - return $return; - } - - /** - * In this function the LDAP account is built up. - * - * @param array $rawAccounts list of hash arrays (name => value) from user input - * @param array $partialAccounts list of hash arrays (name => value) which are later added to LDAP - * @param array $ids list of IDs for column position (e.g. "posixAccount_uid" => 5) - * @return array list of error messages if any - */ - function build_uploadAccounts($rawAccounts, $ids, &$partialAccounts) { - $triggered_messages = array(); - $needAutoUID = array(); - // get list of existing users - $dnUsers = $_SESSION['cache']->get_cache('uid', 'posixAccount', '*'); - $existingUsers = array(); - foreach ($dnUsers as $dn) { - $existingUsers[] = $dn[0]; - } - // get list of existing groups - $existingGroups = $_SESSION['cache']->findgroups(); - // check input - for ($i = 0; $i < sizeof($rawAccounts); $i++) { - if (!in_array("posixAccount", $partialAccounts[$i]['objectClass'])) $partialAccounts[$i]['objectClass'][] = "posixAccount"; - // UID - if ($rawAccounts[$i][$ids['posixAccount_uid']] == "") { - // autoUID - $needAutoUID[] = $i; - } - elseif (get_preg($rawAccounts[$i][$ids['posixAccount_uid']], 'digit')) { - if (($this->get_scope() == 'user') && - ($rawAccounts[$i][$ids['posixAccount_uid']] > $this->moduleSettings['posixAccount_minUID'][0]) && - ($rawAccounts[$i][$ids['posixAccount_uid']] < $this->moduleSettings['posixAccount_maxUID'][0])) { - $partialAccounts[$i]['uidNumber'] = $rawAccounts[$i][$ids['posixAccount_uid']]; - } - elseif (($this->get_scope() == 'host') && - ($rawAccounts[$i][$ids['posixAccount_uid']] > $this->moduleSettings['posixAccount_minMachine'][0]) && - ($rawAccounts[$i][$ids['posixAccount_uid']] < $this->moduleSettings['posixAccount_maxMachine'][0])) { - $partialAccounts[$i]['uidNumber'] = $rawAccounts[$i][$ids['posixAccount_uid']]; - } - } - else { - $errMsg = $this->messages['uidNumber'][4]; - array_push($errMsg, array($i)); - $triggered_messages[] = $errMsg; - } - // GID number - if (get_preg($rawAccounts[$i][$ids['posixAccount_group']], 'digit')) { - $partialAccounts[$i]['gidNumber'] = $rawAccounts[$i][$ids['posixAccount_group']]; - } - if (get_preg($rawAccounts[$i][$ids['posixAccount_group']], 'groupname')) { - $gid = $_SESSION['cache']->getgid($rawAccounts[$i][$ids['posixAccount_group']]); - if (is_numeric($gid)) { - $partialAccounts[$i]['gidNumber'] = $gid; - } - else { - $errMsg = $this->messages['gidNumber'][0]; - array_push($errMsg, array($i)); - $triggered_messages[] = $errMsg; - } - } - else { - $errMsg = $this->messages['gidNumber'][1]; - array_push($errMsg, array($i)); - $triggered_messages[] = $errMsg; - } - // GECOS - if ($rawAccounts[$i][$ids['posixAccount_gecos']] != "") { - if (get_preg($rawAccounts[$i][$ids['posixAccount_gecos']], 'gecos')) { - $partialAccounts[$i]['gecos'] = $rawAccounts[$i][$ids['posixAccount_gecos']]; - } - else { - $errMsg = $this->messages['gecos'][0]; - array_push($errMsg, array($i)); - $triggered_messages[] = $errMsg; - } - } - else { - $gecos = ""; - if (($rawAccounts[$i][$ids['inetOrgPerson_firstName']] != "") && ($rawAccounts[$i][$ids['inetOrgPerson_lastName']] != "")) { - $gecos = $rawAccounts[$i][$ids['inetOrgPerson_firstName']] . " " . $rawAccounts[$i][$ids['inetOrgPerson_lastName']]; - if ($rawAccounts[$i][$ids['inetOrgPerson_telephone']] != "") { - $gecos = $gecos . ",," . $rawAccounts[$i][$ids['inetOrgPerson_telephone']]; // double "," because room is unknown - if ($rawAccounts[$i][$ids['inetOrgPerson_fax']] != "") { - $gecos = $gecos . "," . $rawAccounts[$i][$ids['inetOrgPerson_fax']]; - } - } - } - if ($gecos != "") $partialAccounts[$i]['gecos'] = $gecos; - } - // user specific attributes - if ($this->scope == 'user') { - // additional groups - if ($rawAccounts[$i][$ids['posixAccount_additionalGroups']] != "") { - $groups = explode(",", $rawAccounts[$i][$ids['posixAccount_additionalGroups']]); - for ($g = 0; $g < sizeof($groups); $g++) { - if (!in_array($groups[$g], $existingGroups)) { - $triggered_messages[] = array('ERROR', _('Unable to find group in LDAP.'), $groups[$g]); - } - } - } - // user name - if (in_array($rawAccounts[$i][$ids['posixAccount_userName']], $existingUsers)) { - $errMsg = $this->messages['uid'][9]; - array_push($errMsg, array($i)); - $triggered_messages[] = $errMsg; - } - elseif (get_preg($rawAccounts[$i][$ids['posixAccount_userName']], 'username')) { - $partialAccounts[$i]['uid'] = $rawAccounts[$i][$ids['posixAccount_userName']]; - } - else { - $errMsg = $this->messages['uid'][7]; - array_push($errMsg, array($i)); - $triggered_messages[] = $errMsg; - } - // home directory - if ($rawAccounts[$i][$ids['posixAccount_homedir']] == "") { - $partialAccounts[$i]['homeDirectory'] = '/home/' . $partialAccounts[$i]['uid']; - } - elseif (get_preg($rawAccounts[$i][$ids['posixAccount_homedir']], 'homeDirectory')) { - $partialAccounts[$i]['homeDirectory'] = $rawAccounts[$i][$ids['posixAccount_homedir']]; - } - else { - $errMsg = $this->messages['homeDirectory'][2]; - array_push($errMsg, array($i)); - $triggered_messages[] = $errMsg; - } - // login shell - if ($rawAccounts[$i][$ids['posixAccount_shell']] == "") { - $partialAccounts[$i]['loginShell'] = '/bin/bash'; - } - elseif (in_array($rawAccounts[$i][$ids['posixAccount_shell']], getshells())) { - $partialAccounts[$i]['loginShell'] = $rawAccounts[$i][$ids['posixAccount_shell']]; - } - else { - $errMsg = $this->messages['shell'][0]; - array_push($errMsg, array($i)); - $triggered_messages[] = $errMsg; - } - $pwd_enabled = true; - // password enabled/disabled - if ($rawAccounts[$i][$ids['posixAccount_passwordDisabled']] == "") { - $pwd_enabled = true; - } - elseif (in_array($rawAccounts[$i][$ids['posixAccount_passwordDisabled']], array('true', 'false'))) { - if ($rawAccounts[$i][$ids['posixAccount_passwordDisabled']] == 'true') $pwd_enabled = false; - else $pwd_enabled = true; - } - else { - $errMsg = $this->messages['passwordDisabled'][0]; - array_push($errMsg, array($i)); - $triggered_messages[] = $errMsg; - } - // password - if (($rawAccounts[$i][$ids['posixAccount_password']] != "") && (get_preg($rawAccounts[$i][$ids['posixAccount_password']], 'password'))) { - $partialAccounts[$i]['userPassword'] = pwd_hash($rawAccounts[$i][$ids['posixAccount_password']], $pwd_enabled, $this->moduleSettings['posixAccount_pwdHash'][0]); - } - elseif ($rawAccounts[$i][$ids['posixAccount_password']] != "") { - $errMsg = $this->messages['userPassword'][4]; - array_push($errMsg, array($i)); - $triggered_messages[] = $errMsg; - } - // description - $modules = $_SESSION['config']->get_AccountModules($this->get_scope()); - if (!in_array('inetOrgPerson', $modules)) { - if ($rawAccounts[$i][$ids['posixAccount_description']] && ($rawAccounts[$i][$ids['posixAccount_description']] != '')) { - $partialAccounts[$i]['description'] = $rawAccounts[$i][$ids['posixAccount_description']]; - } - else { - $partialAccounts[$i]['description'] = $rawAccounts[$i][$ids['posixAccount_hostName']]; - } - } - // cn - if ($rawAccounts[$i][$ids['posixAccount_cn']] != "") { - if (get_preg($rawAccounts[$i][$ids['posixAccount_cn']], 'cn')) { - $partialAccounts[$i]['cn'] = $rawAccounts[$i][$ids['posixAccount_cn']]; - } - else { - $errMsg = $this->messages['cn'][1]; - array_push($errMsg, array($i)); - $triggered_messages[] = $errMsg; - } - } - else { - if ($partialAccounts[$i]['givenName']) { - $partialAccounts[$i]['cn'] = $partialAccounts[$i]['givenName'] . " " . $partialAccounts[$i]['sn']; - } - elseif ($partialAccounts[$i]['sn']) { - $partialAccounts[$i]['cn'] = $partialAccounts[$i]['sn']; - } - else { - $partialAccounts[$i]['cn'] = $partialAccounts[$i]['uid']; - } - } - } - // host specific attributes - elseif ($this->scope == 'host') { - // host name - if (in_array($rawAccounts[$i][$ids['posixAccount_hostName']], $existingUsers)) { - $errMsg = $this->messages['uid'][10]; - array_push($errMsg, array($i)); - $triggered_messages[] = $errMsg; - } - elseif (get_preg($rawAccounts[$i][$ids['posixAccount_hostName']], 'hostname')) { - $partialAccounts[$i]['uid'] = $rawAccounts[$i][$ids['posixAccount_hostName']]; - $partialAccounts[$i]['cn'] = $rawAccounts[$i][$ids['posixAccount_hostName']]; - } - else { - $errMsg = $this->messages['uid'][8]; - array_push($errMsg, array($i)); - $triggered_messages[] = $errMsg; - } - // description - if ($rawAccounts[$i][$ids['posixAccount_description']] && ($rawAccounts[$i][$ids['posixAccount_description']] != '')) { - $partialAccounts[$i]['description'] = $rawAccounts[$i][$ids['posixAccount_description']]; - } - else { - $partialAccounts[$i]['description'] = $rawAccounts[$i][$ids['posixAccount_hostName']]; - } - $partialAccounts[$i]['homeDirectory'] = '/dev/null'; - $partialAccounts[$i]['loginShell'] = '/bin/false'; - } - } - // fill in autoUIDs - if (sizeof($needAutoUID) > 0) { - $errorsTemp = array(); - $uids = $this->getNextUIDs(sizeof($needAutoUID), $errorsTemp); - if (is_array($uids)) { - for ($i = 0; $i < sizeof($needAutoUID); $i++) { - $partialAccounts[$i]['uidNumber'] = $uids[$i]; - } - } - else { - $triggered_messages[] = $this->messages['uidNumber'][2]; - } - } - return $triggered_messages; - } - - /** - * This function executes one post upload action. - * - * @param array $data array containing one account in each element - * @param array $ids array( => ) - * @param array $failed list of accounts which were not created successfully - * @param array $temp variable to store temporary data between two post actions - * @return array current status - *
array ( - *
'status' => 'finished' | 'inProgress' - *
'progress' => 0..100 - *
'errors' => array () - *
) - */ - function doUploadPostActions($data, $ids, $failed, &$temp) { - // on first call generate list of ldap operations - if (!isset($temp['counter'])) { - $temp['groups'] = array(); - $temp['counter'] = 0; - $col = $ids['posixAccount_additionalGroups']; - for ($i = 0; $i < sizeof($data); $i++) { - if (in_array($i, $failed)) continue; // ignore failed accounts - if ($data[$i][$col] != "") { - $groups = explode(",", $data[$i][$col]); - for ($g = 0; $g < sizeof($groups); $g++) { - if (!in_array($groups[$g], $temp['groups'])) $temp['groups'][] = $groups[$g]; - $temp['members'][$groups[$g]][] = $data[$i][$ids['posixAccount_userName']]; - } - } - } - return array( - 'status' => 'inProgress', - 'progress' => 0, - 'errors' => array() - ); - } - // get DNs of groups - elseif (!isset($temp['dn'])) { - $temp['dn'] = array(); - $result = $_SESSION['cache']->get_cache('cn', 'posixGroup', 'group'); - $keys = array_keys($result); - for ($i = 0; $i < sizeof($result); $i++) { - $temp['dn'][$result[$keys[$i]][0]] = $keys[$i]; - } - return array( - 'status' => 'inProgress', - 'progress' => 0, - 'errors' => array() - ); - } - // add users to groups - elseif ($temp['counter'] < sizeof($temp['groups'])) { - if (isset($temp['dn'][$temp['groups'][$temp['counter']]])) { - $success = @ldap_mod_add($_SESSION['ldap']->server, $temp['dn'][$temp['groups'][$temp['counter']]], array('memberUID' => $temp['members'][$temp['groups'][$temp['counter']]])); - $errors = array(); - if (!$success) { - $errors[] = array( - "ERROR", - _("LAM was unable to modify group memberships for group: %s"), - ldap_errno($_SESSION[ldap]->server) . ": " . ldap_error($_SESSION[ldap]->server), - array($temp['groups'][$temp['counter']]) - ); - } - $temp['counter']++; - return array ( - 'status' => 'inProgress', - 'progress' => ($temp['counter'] * 100) / sizeof($temp['groups']), - 'errors' => $errors - ); - } - else { - $temp['counter']++; - return array ( - 'status' => 'inProgress', - 'progress' => ($temp['counter'] * 100) / sizeof($temp['groups']), - 'errors' => array(array('ERROR', _('Unable to find group in LDAP.'), $temp['groups'][$temp['counter']])) - ); - } - } - // all groups are modified - else { - return array ( - 'status' => 'finished', - 'progress' => 100, - 'errors' => array() - ); - } - } - - /** - * Returns one or more free UID numbers. - * - * @param integer $count Number of needed free UIDs. - * @param array $triggered_messages list of error messages where errors can be added - * @return mixed Null if no UIDs are free else an array of free UIDs. - */ - function getNextUIDs($count, &$triggered_messages) { - $ret = array(); - if ($this->scope == "user") { - $minID = intval($this->moduleSettings['posixAccount_minUID'][0]); - $maxID = intval($this->moduleSettings['posixAccount_maxUID'][0]); - } - else { - $minID = intval($this->moduleSettings['posixAccount_minMachine'][0]); - $maxID = intval($this->moduleSettings['posixAccount_maxMachine'][0]); - } - $dn_uids = $_SESSION['cache']->get_cache('uidNumber', 'posixAccount', '*'); - // get_cache will return an array ( dn1 => array(uidnumber1), dn2 => array(uidnumber2), ... ) - $uids = array(); - if(is_array($dn_uids)) { - foreach ($dn_uids as $uid) { - if (($uid[0] < $maxID) && ($uid[0] > $minID)) $uids[] = $uid[0]; // ignore UIDs > maxID and UIDs < minID - } - sort ($uids, SORT_NUMERIC); - } - for ($i = 0; $i < $count; $i++) { - if (count($uids) != 0) { - // there already are some uids - // store highest id-number - $id = $uids[count($uids)-1]; - // Return minimum allowed id-number if all found id-numbers are too low - if ($id < $minID) { - $ret[] = $minID; - $uids[] = $minID; - } - // return highest used id-number + 1 if it's still in valid range - elseif ($id < $maxID) { - $ret[] = $id + 1; - $uids[] = $id + 1; - } - // find free numbers between existing ones - else { - $k = intval($minID); - while (in_array($k, $uids)) $k++; - if ($k > $maxID) return null; - else { - $ret[] = $k; - $uids[] = $k; - sort ($uids, SORT_NUMERIC); - } - // show warning message - $triggered_messages['uidNumber'][] = $this->messages['uidNumber'][2]; - } - } - else { - // return minimum allowed id-number if no id-numbers are found - $ret[] = $minID; - $uids[] = $minID; - } - } - return $ret; - } - -} - -?> diff --git a/lam/lib/modules/posixGroup.inc b/lam/lib/modules/posixGroup.inc deleted file mode 100644 index a227e3fc..00000000 --- a/lam/lib/modules/posixGroup.inc +++ /dev/null @@ -1,911 +0,0 @@ - value) from user input - * @param array $partialAccounts list of hash arrays (name => value) which are later added to LDAP - * @param array $ids list of IDs for column position (e.g. "posixAccount_uid" => 5) - * @return array list of error messages if any - */ - function build_uploadAccounts($rawAccounts, $ids, &$partialAccounts) { - $error_messages = array(); - $needAutoGID = array(); - for ($i = 0; $i < sizeof($rawAccounts); $i++) { - if (!in_array("posixGroup", $partialAccounts[$i]['objectClass'])) $partialAccounts[$i]['objectClass'][] = "posixGroup"; - // group name - if (get_preg($rawAccounts[$i][$ids['posixGroup_cn']], 'groupname')) { - $partialAccounts[$i]['cn'] = $rawAccounts[$i][$ids['posixGroup_cn']]; - } - else { - $errMsg = $this->messages['cn'][3]; - array_push($errMsg, array($i)); - $error_messages[] = $errMsg; - } - // GID - if ($rawAccounts[$i][$ids['posixGroup_gid']] == "") { - // autoGID - $needAutoGID[] = $i; - } - elseif (get_preg($rawAccounts[$i][$ids['posixGroup_gid']], 'digit')) { - $partialAccounts[$i]['gidNumber'] = $rawAccounts[$i][$ids['posixGroup_gid']]; - } - else { - $errMsg = $this->messages['gidNumber'][8]; - array_push($errMsg, array($i)); - $error_messages[] = $errMsg; - } - // description (UTF-8, no regex check needed) - if ($rawAccounts[$i][$ids['posixGroup_description']] == "") { - $partialAccounts[$i]['description'] = $partialAccounts[$i]['cn']; - } - else { - $partialAccounts[$i]['description'] = $rawAccounts[$i][$ids['posixGroup_description']]; - } - // group members - if ($rawAccounts[$i][$ids['posixGroup_members']] != "") { - if (get_preg($rawAccounts[$i][$ids['posixGroup_members']], 'usernameList')) { - $partialAccounts[$i]['memberUid'] = explode(",", $rawAccounts[$i][$ids['posixGroup_members']]); - } - else { - $errMsg = $this->messages['memberUID'][0]; - array_push($errMsg, $i); - $error_messages[] =$errMsg; - } - } - // password - if ($rawAccounts[$i][$ids['posixGroup_password']] != "") { - if (get_preg($rawAccounts[$i][$ids['posixGroup_password']], 'password')) { - $partialAccounts[$i]['userPassword'] = pwd_hash($rawAccounts[$i][$ids['posixGroup_password']], true, $this->moduleSettings['posixAccount_pwdHash'][0]); - } - else { - $error_messages[] = $this->messages['userPassword'][1]; - } - } - } - // fill in autoGIDs - if (sizeof($needAutoGID) > 0) { - $errorsTemp = array(); - $gids = $this->getNextGIDs(sizeof($needAutoGID), $errorsTemp); - if (is_array($gids)) { - for ($i = 0; $i < sizeof($needAutoGID); $i++) { - $partialAccounts[$i]['gidNumber'] = $gids[$i]; - } - } - else { - $error_messages[] = $this->messages['gidNumber'][2]; - } - } - return $error_messages; - } - - - function delete_attributes($post) { - if ($_SESSION['cache']->in_cache($this->attributes['gidNumber'][0], 'gidNumber', 'user')) - $return[$_SESSION[$this->base]->dn]['errors'][] = array ('ERROR', _('Primary group'), _('There are still users who have this group as their primary group.')); - return $return; - } - - - /* This function will create the html-page - * to show a page with all attributes. - * It will output a complete html-table - */ - function display_html_attributes(&$post) { - $return[] = array( - 0 => array('kind' => 'text', 'text' => _("Group name").'*'), - 1 => array('kind' => 'input', 'name' => 'cn', 'type' => 'text', 'size' => '20', 'maxlength' => '20', 'value' => $this->attributes['cn'][0]), - 2 => array('kind' => 'help', 'value' => 'cn')); - $return[] = array( - 0 => array('kind' => 'text', 'text' => _('GID number').'*'), - 1 => array('kind' => 'input', 'name' => 'gidNumber', 'type' => 'text', 'size' => '6', 'maxlength' => '6', 'value' => $this->attributes['gidNumber'][0]), - 2 => array('kind' => 'help', 'value' => 'gidNumber')); - $return[] = array( - 0 => array('kind' => 'text', 'text' => _('Description')), - 1 => array('kind' => 'input', 'name' => 'description', 'type' => 'text', 'size' => '30', 'maxlength' => '255', 'value' => $this->attributes['description'][0]), - 2 => array ('kind' => 'help', 'value' => 'description')); - $return[] = array( - 0 => array('kind' => 'text', 'text' => _("Group members").'*'), - 1 => array('kind' => 'input', 'name' => 'adduser', 'type' => 'submit', 'value' => _('Edit members')), - 2 => array ('kind' => 'help', 'value' => 'adduser')); - if ($_SESSION[$this->base]->isNewAccount) { - $return[] = array( - 0 => array('kind' => 'text', 'text' => _('Password')), - 1 => array('kind' => 'input', 'name' => 'userPassword', 'type' => 'password', 'size' => '20', 'maxlength' => '255', 'value' => $this->userPassword()), - 2 => array('kind' => 'input', 'name' => 'genpass', 'type' => 'submit', 'value' => _('Generate password'))); - if ($post['userPassword2']!='') $password2 = $post['userPassword2']; - else $password2 = $this->userPassword(); - $return[] = array( - 0 => array('kind' => 'text', 'text' => _('Repeat password')), - 1 => array('kind' => 'input', 'name' => 'userPassword2', 'type' => 'password', 'size' => '20', 'maxlength' => '255', 'value' => $password2), - 2 => array('kind' => 'help', 'value' => 'userPassword')); - } - else { - $return[] = array( - 0 => array('kind' => 'text', 'text' => _('Password') ), - 1 => array('kind' => 'input', 'name' => 'changepass', 'type' => 'submit', 'value' => _('Change password'))); - } - $return[] = array( - 0 => array('kind' => 'text', 'text' => _('Set no password')), - 1 => array('kind' => 'input', 'name' => 'userPassword_nopassword', 'type' => 'checkbox', 'checked' => $this->userPassword_nopassword), - 2 => array('kind' => 'help', 'value' => 'userPassword_nopassword')); - $return[] = array( - 0 => array('kind' => 'text', 'text' => _('Invalid password')), - 1 => array('kind' => 'input', 'name' => 'userPassword_invalid', 'type' => 'checkbox', 'checked' => $this->userPassword_invalid), - 2 => array('kind' => 'help', 'value' => 'userPassword_invalid')); - if ($_SESSION[$this->base]->isNewAccount || isset($this->attributes['userPassword'][0])) { - $return[] = array( - 0 => array('kind' => 'text', 'text' => _('Lock password')), - 1 => array('kind' => 'input', 'name' => 'userPassword_lock', 'type' => 'checkbox', 'checked' => $this->userPassword_lock), - 2 => array('kind' => 'help', 'value' => 'userPassword_lock')); - } - if ($this->attributes['gidNumber'][0]!=$this->orig['gidNumber'][0] && $this->orig['gidNumber'][0]!='') - $return[] = array( - 0 => array('kind' => 'text', 'text' => _('Change GID number of users and hosts')), - 1 => array('kind' => 'input', 'name' => 'changegids', 'type' => 'checkbox', 'checked' => $this->changegids, 'value' => true), - 2 => array('kind' => 'help', 'value' => 'changegids')); - return $return; - } - - - function display_html_delete(&$post) { - // Get list of primary groupmembers. - return 0; - } - - /** - * Displays selections to add or remove users from current group. - * - * @param array $post HTTP-POST - * @return array meta HTML output - */ - function display_html_user(&$post) { - // load list with all users - $dn_users = $_SESSION['cache']->get_cache(array('uid', 'gidNumber'), 'posixAccount', 'user'); - $users = array(); - if (is_array($dn_users)) { - $DNs = array_keys($dn_users); - for ($i = 0; $i < sizeof($DNs); $i++) { - // users who can be added have a uid and gidNumber - if (isset($dn_users[$DNs[$i]]['uid'][0]) && isset($dn_users[$DNs[$i]]['gidNumber'][0]) && - // are not already member - !in_array($dn_users[$DNs[$i]]['uid'][0], $this->attributes['memberUid']) && - // and do not have this group as their primary group - !($this->attributes['gidNumber'][0] == $dn_users[$DNs[$i]]['gidNumber'][0])) { - $users[] = $dn_users[$DNs[$i]]['uid'][0]; - } - } - // sort users - sort($users); - } - $return[] = array( - 0 => array('kind' => 'fieldset', 'legend' => _("Group members"), 'value' => array ( - 0 => array( - 0 => array('kind' => 'fieldset', 'td' => array ('valign' => 'top'), 'legend' => _("Selected users"), 'value' => array ( - 0 => array( - 0 => array ( 'kind' => 'select', 'name' => 'removeusers', 'size' => '15', 'multiple' => true, 'options' => $this->attributes['memberUid'])))), - 1 => array('kind' => 'table', 'value' => array( - 0 => array( - 0 => array('kind' => 'input', 'type' => 'submit', 'name' => 'addusers_button', 'value' => '<=', 'td' => array('align' => 'center'))), - 1 => array( - 0 => array('kind' => 'input', 'type' => 'submit', 'name' => 'removeusers_button', 'value' => '=>', 'td' => array('align' => 'center'))), - 2 => array( - 0 => array('kind' => 'help', 'value' => 'adduser', 'td' => array('align' => 'center'))))), - 2 => array('kind' => 'fieldset', 'td' => array('valign' => 'top'), 'legend' => _("Available users"), 'value' => array( - 0 => array( - 0 => array('kind' => 'select', 'name' => 'addusers', 'size' => '15', 'multiple' => true, 'options' => $users)))) - )))); - - $return[] = array( - 0 => array('kind' => 'input', 'name' => 'toattributes' ,'type' => 'submit', 'value' => _('Back') ), - 1 => array('kind' => 'text'), - 2 => array('kind' => 'text')); - return $return; - } - - /** - * Displays the password changing dialog. - * - * @param array $post HTTP-POST - * @return array meta HTML code - */ - function display_html_password(&$post) { - $return[] = array( - 0 => array('kind' => 'text', 'text' => _('Password') ), - 1 => array('kind' => 'input', 'name' => 'userPassword', 'type' => 'password', 'size' => '20', 'maxlength' => '255', 'value' => ""), - 2 => array('kind' => 'help', 'value' => 'password')); - $return[] = array( - 0 => array('kind' => 'text', 'text' => _('Repeat password')), - 1 => array('kind' => 'input', 'name' => 'userPassword2', 'type' => 'password', 'size' => '20', 'maxlength' => '255', 'value' => "")); - $return[] = array( - 0 => array('kind' => 'table', 'value' => array( - 0 => array( - 0 => array('kind' => 'input', 'type' => 'submit', 'value' => _('Submit'), 'name' => 'submit'), - 1 => array('kind' => 'input', 'type' => 'submit', 'value' => _('Back'), 'name' => 'back'), - 2 => array('kind' => 'text'))))); - return $return; - } - - /** - * Returns meta data that is interpreted by parent class - * - * @return array array with meta data - */ - function get_metaData() { - $return = array(); - // manages group accounts - $return["account_types"] = array("group"); - if ($this->get_scope() == "group") { - // this is a base module - $return["is_base"] = true; - // LDAP filter - $return["ldap_filter"] = array('or' => "(objectClass=posixGroup)"); - } - // alias name - $return["alias"] = _('Unix'); - // RDN attribute - $return["RDN"] = array("cn" => "normal"); - // module dependencies - $return['dependencies'] = array('depends' => array(), 'conflicts' => array()); - // configuration options - $return['config_options']['group'] = array( - array( - 0 => array('kind' => 'text', 'text' => '' . _('Minimum GID number') . " *: "), - 1 => array('kind' => 'input', 'name' => 'posixGroup_minGID', 'type' => 'text', 'size' => '10', 'maxlength' => '255'), - 2 => array('kind' => 'text', 'value' => ' '), - 3 => array('kind' => 'text', 'text' => '' . _('Maximum GID number') . " *: "), - 4 => array('kind' => 'input', 'name' => 'posixGroup_maxGID', 'type' => 'text', 'size' => '10', 'maxlength' => '255'), - 5 => array('kind' => 'help', 'value' => 'minMaxGID')), - array( - 0 => array('kind' => 'text', 'text' => '' . _("Password hash type") . ':  '), - 1 => array('kind' => 'select', 'name' => 'posixGroup_pwdHash', 'size' => '1', - 'options' => array("CRYPT", "SHA", "SSHA", "MD5", "SMD5", "PLAIN"), 'options_selected' => array('SSHA')), - 2 => array('kind' => 'text', 'value' => ' '), - 3 => array('kind' => 'text', 'value' => ' '), - 4 => array('kind' => 'text', 'value' => ' '), - 5 => array('kind' => 'help', 'value' => 'pwdHash')) - ); - // configuration descriptions - $return['config_descriptions'] = array( - 'legend' => _("GID ranges for Unix groups"), - 'descriptions' => array( - 'posixGroup_minGID' => _("Minimum GID number for Unix groups"), - 'posixGroup_maxGID' => _("Maximum GID number for Unix groups"), - 'posixGroup_pwdHash' => _("Password hash type for Unix groups"), - ) - ); - // configuration checks - $return['config_checks']['group']['posixGroup_minGID'] = array ( - 'type' => 'ext_preg', - 'regex' => 'digit', - 'required' => true, - 'required_message' => $this->messages['gidNumber'][5], - 'error_message' => $this->messages['gidNumber'][5]); - $return['config_checks']['group']['posixGroup_maxGID'] = array ( - 'type' => 'ext_preg', - 'regex' => 'digit', - 'required' => true, - 'required_message' => $this->messages['gidNumber'][6], - 'error_message' => $this->messages['gidNumber'][6]); - $return['config_checks']['group']['cmpGID'] = array ( - 'type' => 'int_greater', - 'cmp_name1' => 'posixGroup_maxGID', - 'cmp_name2' => 'posixGroup_minGID', - 'error_message' => $this->messages['gidNumber'][7]); - // available PDF fields - $return['PDF_fields'] = array( - 'cn', - 'gidNumber', - 'memberUid', - 'description' - ); - // upload fields - $return['upload_columns'] = array( - array( - 'name' => 'posixGroup_cn', - 'description' => _('Group name'), - 'help' => 'cn', - 'example' => _('adminstrators'), - 'required' => true, - 'unique' => true - ), - array( - 'name' => 'posixGroup_gid', - 'description' => _('GID number'), - 'help' => 'gidNumber', - 'example' => '2034' - ), - array( - 'name' => 'posixGroup_description', - 'description' => _('Group description'), - 'help' => 'description', - 'example' => _('Administrators group') - ), - array( - 'name' => 'posixGroup_members', - 'description' => _('Group members'), - 'help' => 'upload_members', - 'example' => _('user01,user02,user03') - ), - array( - 'name' => 'posixGroup_password', - 'description' => _('Group password'), - 'help' => 'password', - 'example' => _('secret') - ) - ); - // help Entries - $return['help'] = array( - 'cn' => array( - "Headline" => _("Group name"), - "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 group name is already used group name will be expanded with a number. The next free number will be used.") - ), - 'gidNumber' => array( - "Headline" => _("GID number"), - "Text" => _("If empty GID number will be generated automaticly depending on your configuration settings.") - ), - 'description' => array( - "Headline" => _("Description"), - "Text" => _("Group description. If left empty group name will be used.") - ), - 'members' => array( - "Headline" => _("Group members"), - "Text" => _("Users who are member of the current group."). ' '. _("Can be left empty.") - ), - 'upload_members' => array( - "Headline" => _("Group members"), - "Text" => _("Users who will become member of the current group. User names are separated by semicolons.") - ), - 'password' => array( - "Headline" => _("Group password"), - "Text" => _("Sets the group password.") - ), - 'userPassword_no' => array( - "Headline" => _("Use no password"), - "Text" => _("If checked no password will be used.") - ), - /*'userPassword_lock' => */ - 'minMaxGID' => array( - "Headline" => _("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.") - ), - 'pwdHash' => array( - "Headline" => _("Password hash type"), - "Text" => _("LAM supports CRYPT, SHA, SSHA, MD5 and SMD5 to generate the hash value of passwords. 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.") - ) - ); - - return $return; - } - - - /* - * (non-PHPDoc) - * @see baseModule#get_pdfEntries - */ - function get_pdfEntries($account_type = "group") { - return array( - 'posixGroup_cn' => array('' . _('Group name') . '' . $this->attributes['cn'][0] . ''), - 'posixGroup_gidNumber' => array('' . _('GID number') . '' . $this->attributes['gidNumber'][0] . ''), - 'posixGroup_memberUid' => array('' . _('Group members') . '' . implode(', ', $this->attributes['memberUid']) . ''), - 'posixGroup_description' => array('' . _('Description') . '' . $this->attributes['description'][0] . '')); - } - - - /** This functin will be called when the module will be loaded **/ - function init($base) { - // call parent init - parent::init($base); - $this->changegids=false; - } - - - /* This function loads all attributes into the object - * $attr is an array as it's retured from ldap_get_attributes - */ - function load_attributes($attr) { - parent::load_attributes($attr); - // Delete password. We don't want to show an encrypted password because it makes no sense - $this->userPassword(''); - return 0; - } - - - /** this functin fills the error message array with messages - **/ - function load_Messages() { - $this->messages['userPassword'][0] = array('ERROR', _('Password'), _('Please enter the same password in both password-fields.')); - $this->messages['userPassword'][1] = array('ERROR', _('Password'), _('Password contains invalid characters. Valid characters are: a-z, A-Z, 0-9 and #*,.;:_-+!$%&/|?{[()]}= !')); - $this->messages['userPassword'][3] = array('ERROR', _('Password'), _('You cannot use this password options at the same time.')); - $this->messages['gidNumber'][0] = array('INFO', _('GID number'), _('GID number has changed. Please select checkbox to change GID number of users and hosts.')); - $this->messages['gidNumber'][2] = array('WARN', _('ID-Number'), _('It is possible that this ID-number is reused. This can cause several problems because files with old permissions might still exist. To avoid this warning set maxUID to a higher value.')); - $this->messages['gidNumber'][3] = array('ERROR', _('ID-Number'), _('No free ID-Number!')); - $this->messages['gidNumber'][4] = array('ERROR', _('ID-Number'), _('ID is already in use')); - $this->messages['gidNumber'][5] = array('ERROR', _('Minimum GID number'), _('Minimum GID number is invalid or empty!')); - $this->messages['gidNumber'][6] = array('ERROR', _('Maximum GID number'), _('Maximum GID number is invalid or empty!')); - $this->messages['gidNumber'][7] = array('ERROR', _('Maximum GID number'), _('Maximum GID number must be greater than minimum GID number!')); - $this->messages['gidNumber'][8] = array('ERROR', _('Account %s:') . ' posixGroup_gid', _('GID number has to be a numeric value!')); - $this->messages['cn'][0] = array('WARN', _('Group name'), _('You are using a capital letters. This can cause problems because Windows isn\'t case-sensitive.')); - $this->messages['cn'][1] = array('WARN', _('Group name'), _('Group name in use. Selected next free group name.')); - $this->messages['cn'][2] = array('ERROR', _('Group name'), _('Group name contains invalid characters. Valid characters are: a-z, A-Z, 0-9 and .-_ !')); - $this->messages['cn'][3] = array('ERROR', _('Account %s:') . ' posixGroup_cn', _('Group name contains invalid characters. Valid characters are: a-z, A-Z, 0-9 and .-_ !')); - $this->messages['memberUID'][0] = array('ERROR', _('Account %s:') . ' posixGroup_members', _("This value must be a list of user names separated by semicolons.")); - } - - - /* This functions return true - * if all needed settings are done - */ - function module_complete() { - if (!$this->module_ready()) return false; - if ($this->attributes['cn'][0] == '') return false; - if ($this->attributes['gidNumber'][0] == '') return false; - return true; - } - - - function module_ready() { - return true; - } - - - /* This function returns a list of all html-pages in module - * This is usefull for mass upload and pdf-files - * because lam can walk trough all pages itself and do some - * error checkings - */ - function pages() { - return array('attributes', 'user'); - } - - - /* Write variables into object and do some regexp checks - */ - function process_attributes(&$post) { - $this->attributes['description'][0] = $post['description']; - - if (($post['userPassword_lock'] && $post['userPassword_invalid']) || ($post['userPassword_nopassword'] && $post['userPassword_invalid'])) { - // found invalid password parameter combination - $triggered_messages['userPassword'][] = $this->messages['userPassword'][3]; - } - else { - if ($post['userPassword_nopassword']) { - $this->userPassword_nopassword=true; - $this->userPassword_invalid=false; - $this->userPassword(''); - $post['userPassword2'] = ''; - if ($post['userPassword_lock']) - $this->userPassword_lock=true; - else $this->userPassword_lock=false; - } - else { - $this->userPassword_nopassword=false; - if ($post['userPassword_invalid']) { - $this->userPassword_invalid=true; - $this->userPassword_lock=false; - $this->userPassword(''); - $post['userPassword2'] = ''; - } - else { - $this->userPassword_invalid=false; - if ($post['genpass']) $this->userPassword(genpasswd()); - elseif ($_SESSION[$this->base]->isNewAccount) { - if ($post['userPassword'] != $post['userPassword2']) - $triggered_messages['userPassword'][] = $this->messages['userPassword'][0]; - else $this->userPassword($post['userPassword']); - if (!get_preg($this->userPassword(), 'password')) - $triggered_messages['userPassword'][] = $this->messages['userPassword'][1]; - } - if ($post['userPassword_lock']) $this->userPassword_lock=true; - else $this->userPassword_lock=false; - } - } - if ($post['changegids']) $this->changegids=true; - else $this->changegids=false; - if ($this->attributes['gidNumber'][0]!=$post['gidNumber'] || ($this->triggered_messages['gidNumber'][0]='ERROR')) { - // Check if GID is valid. If none value was entered, the next useable value will be inserted - // load min and may uidNumber - $minID = intval($this->moduleSettings['posixGroup_minGID'][0]); - $maxID = intval($this->moduleSettings['posixGroup_maxGID'][0]); - $dn_gids = $_SESSION['cache']->get_cache('gidNumber', 'posixGroup', '*'); - // get_cache will return an array ( dn1 => array(uidnumber1), dn2 => array(uidnumber2), ... ) - if(is_array($dn_gids)) { - foreach ($dn_gids as $gid) $gids[] = $gid[0]; - sort ($gids, SORT_NUMERIC); - } - $this->attributes['gidNumber'][0]=$post['gidNumber']; - if ($this->attributes['gidNumber'][0]=='') { - // No id-number given, find free GID - if ($this->orig['gidNumber'][0]=='') { - $newGID = $this->getNextGIDs(1, $triggered_messages); - if (is_array($newGID)) { - $this->attributes['gidNumber'][0] = $newGID[0]; - } - else { - $triggered_messages['gidNumber'][] = $this->messages['gidNumber'][3]; - } - } - else $this->attributes['gidNumber'][0] = $this->orig['gidNumber'][0]; - // old account -> return id-number which has been used - } - else { - // Check manual ID - // id-number is out of valid range - if ( ($this->attributes['gidNumber'][0]!=$post['gidNumber']) && ($this->attributes['gidNumber'][0] < $minID || $this->attributes['gidNumber'][0] > $maxID)) $triggered_messages['gidNumber'][] = array('ERROR', _('ID-Number'), sprintf(_('Please enter a value between %s and %s!'), $minID, $maxID)); - // $uids is allways an array but not if no entries were found - if (is_array($gids)) { - // id-number is in use and account is a new account - if ((in_array($this->attributes['gidNumber'][0], $gids)) && $this->orig['gidNumber'][0]=='') $triggered_messages['gidNumber'][] = array('ERROR', _('ID-Number'), _('ID is already in use')); - // id-number is in use, account is existing account and id-number is not used by itself - if ((in_array($this->attributes['gidNumber'][0], $gids)) && $this->orig['gidNumber'][0]!='' && ($this->orig['gidNumber'][0] != $this->attributes['gidNumber'][0]) ) { - $triggered_messages['gidNumber'][] = $this->messages['gidNumber'][4]; - $this->attributes['gidNumber'][0] = $this->orig['gidNumber'][0]; - } - } - } - } - if ($this->attributes['cn'][0]!=$post['cn'] || ($this->triggered_messages['cn'][0]='ERROR')) { - $this->attributes['cn'][0] = $post['cn']; - if (($this->attributes['cn'][0] != $post['cn']) && ereg('[A-Z]$', $post['cn'])) - $triggered_messages['cn'][] = $this->messages['cn'][0]; - // Check if Groupname contains only valid characters - if ( !get_preg($this->attributes['cn'][0],'groupname')) - $triggered_messages['cn'][] = $this->messages['cn'][2]; - // Create automatic useraccount with number if original user already exists - // Reset name to original name if new name is in use - // Set username back to original name if new username is in use - if ($_SESSION['cache']->in_cache($this->attributes['cn'][0],'cn', '*')!=false && ($this->orig['cn'][0]!='')) { - $this->attributes['cn'][0] = $this->orig['cn'][0]; - } - // Change gid to a new gid until a free gid is found - else while ($_SESSION['cache']->in_cache($this->attributes['cn'][0], 'cn', '*')) { - // get last character of username - $lastchar = substr($this->attributes['cn'][0], strlen($this->attributes['cn'][0])-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. - */ - $this->attributes['cn'][0] = $this->attributes['cn'][0] . '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($this->attributes['cn'][0])-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($this->attributes['cn'][0], $i, strlen($this->attributes['cn'][0])-$i))) $i--; - else $mark=true; - } - // increase last number with one - $firstchars = substr($this->attributes['cn'][0], 0, $i+1); - $lastchars = substr($this->attributes['cn'][0], $i+1, strlen($this->attributes['cn'][0])-$i); - // Put username together - $this->attributes['cn'][0] = $firstchars . (intval($lastchars)+1); - } - } - // Show warning if lam has changed username - if ($this->attributes['cn'][0] != $post['cn']) { - $triggered_messages['cn'][] = $this->messages['cn'][0]; - } - // show info when gidnumber has changed - if (($this->orig['gidNumber'][0]!=$this->attributes['gidNumber'][0]) && $this->orig['gidNumber'][0]!='' && $post['gidNumber']!=$this->attributes['gidNumber'][0]) - $triggered_messages['gidNumber'][] = $this->messages['gidNumber'][0]; - } - } - // Return error-messages - if (count($triggered_messages)!=0) { - $this->triggered_messages = $triggered_messages; - return $triggered_messages; - } - else $this->triggered_messages = array(); - // Go to additional group page when no error did ocour and button was pressed - if ($post['adduser']) return 'user'; - if ($post['changepass']) return 'password'; - return 0; - } - - - /** - * Processes input data and adds or removes users from current group. - * - * @param array $post HTTP-POST - * @return string name of next page - */ - function process_user(&$post) { - if (isset($post['addusers']) && isset($post['addusers_button'])) { // Add users to list - // Add new user - $this->attributes['memberUid'] = @array_merge($this->attributes['memberUid'], $post['addusers']); - // remove duplicates - $this->attributes['memberUid'] = @array_flip($this->attributes['memberUid']); - array_unique($this->attributes['memberUid']); - $this->attributes['memberUid'] = @array_flip($this->attributes['memberUid']); - // sort users - sort($this->attributes['memberUid']); - } - elseif (isset($post['removeusers']) && isset($post['removeusers_button'])) { // remove users from list - $this->attributes['memberUid'] = array_delete($post['removeusers'], $this->attributes['memberUid']); - } - if (isset($post['adduser_button']) || isset($post['removeuser_button'])) return 'user'; - elseif ($post['toattributes']) return 'attributes'; - return 0; - } - - - /** - * Sets a new password. - * - * @param $post HTTP POST - */ - function process_password(&$post) { - if ($post['back']) return 'attributes'; - $messages = array(); - if ($post['userPassword'] != $post['userPassword2']) { - $messages['userPassword'][] = $this->messages['userPassword'][0]; - if (!get_preg($post['userPassword'], 'password')) - $messages['userPassword'][] = $this->messages['userPassword'][1]; - } - else $this->userPassword($post['userPassword']); - if (sizeof($messages) > 0) return $messages; - else return 'attributes'; - } - - /* This function returns an array with 3 entries: - * array( DN1 ('add' => array($attr), 'remove' => array($attr), 'modify' => array($attr)), DN2 .... ) - * DN is the DN to change. It may be possible to change several DNs, - * e.g. create a new user and add him to some groups via attribute memberUid - * add are attributes which have to be added to ldap entry - * remove are attributes which have to be removed from ldap entry - * modify are attributes which have to been modified in ldap entry - */ - function save_attributes() { - $return = $_SESSION[$this->base]->save_module_attributes($this->attributes, $this->orig); - - // unset password when needed - if (isset($return[$_SESSION[$this->base]->dn]['add']['userPassword'])) - unset($return[$_SESSION[$this->base]->dn]['add']['userPassword']); - if (isset($return[$_SESSION[$this->base]->dn]['modify']['userPassword'])) - unset($return[$_SESSION[$this->base]->dn]['modify']['userPassword']); - if (isset($return[$_SESSION[$this->base]->dn]['notchanged']['userPassword'])) - unset($return[$_SESSION[$this->base]->dn]['notchanged']['userPassword']); - // Set unix password - if (isset($this->orig['userPassword'][0])) { - if ($this->userPassword_nopassword) // use no password - $return[$_SESSION[$this->base]->dn]['modify']['userPassword'][0] = pwd_hash('', !$this->userPassword_lock, $this->moduleSettings['posixAccount_pwdHash'][0]); - else if ($this->userPassword_invalid) // use '*' as password - $return[$_SESSION[$this->base]->dn]['modify']['userPassword'][0] = '*'; - else if (($this->attributes['userPassword'][0] != $this->orig['userPassword'][0]) && $this->userPassword()!='') // set password if set - $return[$_SESSION[$this->base]->dn]['modify']['userPassword'][0] = pwd_hash($this->userPassword(), !$this->userPassword_lock, $this->moduleSettings['posixAccount_pwdHash'][0]); - else if ($this->userPassword_lock && (pwd_disable($this->orig['userPassword'][0]) != $this->orig['userPassword'][0])) // lock account if required - $return[$_SESSION[$this->base]->dn]['modify']['userPassword'][0] = pwd_disable($this->orig['userPassword'][0]); - else // password hasn't changed - $return[$_SESSION[$this->base]->dn]['notchanged']['userPassword'][0] = $this->orig['userPassword'][0]; - } - else { - // New user or no old password set - if ($this->userPassword_nopassword) // use no password - $return[$_SESSION[$this->base]->dn]['add']['userPassword'][0] = pwd_hash('', !$this->userPassword_lock, $this->moduleSettings['posixAccount_pwdHash'][0]); - else if ($this->userPassword_invalid) // use '*' as password - $return[$_SESSION[$this->base]->dn]['add']['userPassword'][0] = '*'; - else if ($this->userPassword()!='') // set password if set - $return[$_SESSION[$this->base]->dn]['add']['userPassword'][0] = pwd_hash($this->userPassword(), !$this->userPassword_lock, $this->moduleSettings['posixAccount_pwdHash'][0]); - } - - // Remove primary group from users from memberUid - $users_dn = $_SESSION['cache']->get_cache('gidNumber', 'posixAccount', 'user'); - if (is_array($users_dn)) { - $DNs = array_keys($users_dn); - for ($i=0; $iattributes['gidNumber'][0]) { - $thisuser = substr($DNs[$i], 4, strpos($DNs[$i], ",")-4); - if (@in_array($thisuser, $this->attribtues['memberUid'])) { - $this->attribtues['memberUid'] = @array_flip($this->attribtues['memberUid']); - unset($this->attribtues['memberUid'][$thisuser]); - $this->attribtues['memberUid'] = @array_flip($this->attribtues['memberUid']); - } - } - } - } - - - // Change gids of users and hosts? - if ($this->changegids) { - // get gidNumber - $line=-1; - for ($i=0; $iobjectClasses) || $i==-1; $i++) { - if (strpos($_SESSION['ldap']->objectClasses[$i], "NAME 'posixAccount'")) $line = $i; - } - if ($line!=-1) { - $result = $_SESSION['cache']->get_cache('gidNumber', 'posixAccount', '*'); - if (is_array($result)) { - $DNs = array_keys($result); - for ($i=0; $iorig['gidNumber'][0]) $return[$DNs[$i]]['modify']['gidNumber'][0] = $this->attributes['gidNumber'][0]; - } - } - // change primaryGroupID - $line=-1; - for ($i=0; $iobjectClasses) || $i==-1; $i++) { - if (strpos($_SESSION['ldap']->objectClasses[$i], "NAME 'sambaAccount'")) $line = $i; - } - if ($line!=-1) { - $result = $_SESSION['cache']->get_cache('primaryGroupID', 'sambaAccount', '*'); - if (is_array($result)) { - $DNs = array_keys($result); - for ($i=0; $iorig['gidNumber'][0]*2+1001 ) $return[$DNs[$i]]['modify']['PrimaryGroupID'][0] = $this->attributes['gidNumber'][0]*2+1001; - } - } - } - // change sambaPrimaryGroupSID - $line=-1; - for ($i=0; $iobjectClasses) || $i==-1; $i++) { - if (strpos($_SESSION['ldap']->objectClasses[$i], "NAME 'sambaSamAccount'")) $line = $i; - } - if ($line!=-1) { - $result = $_SESSION['cache']->get_cache('sambaPrimaryGroupSID', 'sambaSamAccount', '*'); - if (is_array($result)) { - $DNs = array_keys($result); - for ($i=0; $iget_Suffix('domain')); - // Get Domain-SID from group SID - $domainSID = substr($result[$DNs[$i]], 0, strrpos($result[$DNs[$i]], "-")); - for ($i=0; $iSID) - $RIDbase = $sambaDomains[$i]->RIDbase; - if ($result[$DNs[$i]][0] == $SID . "-" . $this->orig['gidNumber'][0]*2+1+$RIDbase ) $return[$DNs[$i]]['modify']['sambaPrimaryGroupSID'][0] = $SID . "-" . $this->attributes['gidNumber'][0]*2+1+$RIDbase; - } - } - } - } - return $return; - } - - - /** $attribute['userPassword'] can't accessed directly because it's enrcypted - * To read / write password function userPassword is needed - * This function will return the unencrypted password when - * called without a variable - * If it's called with a new password, the - * new password will be stored encrypted - */ - function userPassword($newpassword=false) { - if (is_string($newpassword)) { - // Write new password - if ($newpassword=='') - $this->attributes['userPassword'][0] = ''; - else $this->attributes['userPassword'][0] = base64_encode($_SESSION['ldap']->encrypt($newpassword)); - return 0; - } - else { - if ($this->attributes['userPassword'][0]!='') // Read existing password if set - return $_SESSION['ldap']->decrypt(base64_decode($this->attributes['userPassword'][0])); - else return ''; - } - } - - /** - * Returns one or more free GID numbers. - * - * @param integer $count Number of needed free GIDs. - * @param array $triggered_messages list of error messages where errors can be added - * @return mixed Null if no GIDs are free else an array of free GIDs. - */ - function getNextGIDs($count, &$triggered_messages) { - $ret = array(); - $minID = intval($this->moduleSettings['posixGroup_minGID'][0]); - $maxID = intval($this->moduleSettings['posixGroup_maxGID'][0]); - $dn_gids = $_SESSION['cache']->get_cache('gidNumber', 'posixGroup', '*'); - // get_cache will return an array ( dn1 => array(gidnumber1), dn2 => array(gidnumber2), ... ) - $gids = array(); - if(is_array($dn_gids)) { - foreach ($dn_gids as $gid) { - if (($gid[0] < $maxID) && ($gid[0] > $minID)) $gids[] = $gid[0]; // ignore GIDs > maxID and GIDs < minID - } - sort ($gids, SORT_NUMERIC); - } - for ($i = 0; $i < $count; $i++) { - if (count($gids) != 0) { - // there already are some GIDs - // store highest id-number - $id = $gids[count($gids)-1]; - // Return minimum allowed id-number if all found id-numbers are too low - if ($id < $minID) { - $ret[] = $minID; - $gids[] = $minID; - } - // return highest used id-number + 1 if it's still in valid range - elseif ($id < $maxID) { - $ret[] = $id + 1; - $gids[] = $id + 1; - } - // find free numbers between existing ones - else { - $k = intval($minID); - while (in_array($k, $gids)) $k++; - if ($k > $maxID) return null; - else { - $ret[] = $k; - $gids[] = $k; - sort ($gids, SORT_NUMERIC); - } - // show warning message - $triggered_messages['gidNumber'][] = $this->messages['gidNumber'][2]; - } - } - else { - // return minimum allowed id-number if no id-numbers are found - $ret[] = $minID; - $gids[] = $minID; - } - } - return $ret; - } - -} - -?> diff --git a/lam/lib/modules/quota.inc b/lam/lib/modules/quota.inc deleted file mode 100644 index c0a12cfe..00000000 --- a/lam/lib/modules/quota.inc +++ /dev/null @@ -1,635 +0,0 @@ -messages['softblock'][0] = array('ERROR', _('Block soft quota'), _('Block soft quota contains invalid characters. Only natural numbers are allowed.')); - $this->messages['softblock'][1] = array('ERROR', _('Account %s:') . ' %s', _('Block soft quota contains invalid characters. Only natural numbers are allowed.')); - $this->messages['hardblock'][0] = array('ERROR', _('Block hard quota'), _('Block hard quota contains invalid characters. Only natural numbers are allowed.')); - $this->messages['hardblock'][1] = array('ERROR', _('Account %s:') . ' %s', _('Block hard quota contains invalid characters. Only natural numbers are allowed.')); - $this->messages['softinode'][0] = array('ERROR', _('Inode soft quota'), _('Inode soft quota contains invalid characters. Only natural numbers are allowed.')); - $this->messages['softinode'][1] = array('ERROR', _('Account %s:') . ' %s', _('Inode soft quota contains invalid characters. Only natural numbers are allowed.')); - $this->messages['hardinode'][0] = array('ERROR', _('Inode hard quota'), _('Inode hard quota contains invalid characters. Only natural numbers are allowed.')); - $this->messages['hardinode'][1] = array('ERROR', _('Account %s:') . ' %s', _('Inode hard quota contains invalid characters. Only natural numbers are allowed.')); - $this->messages['block_cmp'][0] = array('ERROR', _('Block quota'), _('Block soft quota must be smaller than block hard quota.')); - $this->messages['block_cmp'][1] = array('ERROR', _('Account %s:') . ' %s', _('Block soft quota must be smaller than block hard quota.')); - $this->messages['inode_cmp'][0] = array('ERROR', _('Inode quota'), _('Inode soft quota must be smaller than inode hard quota.')); - $this->messages['inode_cmp'][1] = array('ERROR', _('Account %s:') . ' %s', _('Inode soft quota must be smaller than inode hard quota.')); - $this->messages['upload'][0] = array('ERROR', _('Account %s:') . ' %s', _('Quota has wrong format!')); - } - - /** - * Returns meta data that is interpreted by parent class - * - * @return array array with meta data - */ - function get_metaData() { - $return = array(); - // manages user and group accounts - $return["account_types"] = array("user", "group"); - // alias name - $return["alias"] = _('Quota'); - if ($this->get_scope() == 'group') { - // module dependencies - $return['dependencies'] = array('depends' => array('posixGroup'), 'conflicts' => array()); - } - if ($this->get_scope() == 'user') { - // module dependencies - $return['dependencies'] = array('depends' => array('posixAccount'), 'conflicts' => array()); - } - // available PDF fields - $return['PDF_fields'] = array( - 'quotas' - ); - // help entries - $return['help'] = array( - "Mountpoint" => array( - "Headline" => _("Mountpoint"), - "Text" => _("Mountpoint of device with enabled quotas.") - ), - "UsedBlocks" => array( - "Headline" => _("Used blocks"), - "Text" => _("Used blocks. 1000 blocks are usually 1MB") - ), - "SoftBlockLimit" => array( - "Headline" => _("Soft block limit"), - "Text" => _("Soft block limit."), "SeeAlso" => ''.'Quota How-To' - ), - "HardBlockLimit" => array( - "Headline" => _("Hard block limit"), - "Text" => _("Hard block limit").'.', "SeeAlso" => ''.'Quota How-To' - ), - "GraceBlockPeriod" => array( - "Headline" => _("Grace block period"), - "Text" => _("Grace block period. Most filesystems use a fixed maximum value of 7 days."), "SeeAlso" => ''.'Quota How-To' - ), - "UsedInodes" => array( - "Headline" => _("Used inodes"), - "Text" => _("Used inodes (files)").'.' - ), - "SoftInodeLimit" => array( - "Headline" => _("Soft inode limit"), - "Text" => _("Soft inode (files) limit."), "SeeAlso" => ''.'Quota How-To' - ), - "HardInodeLimit" => array( - "Headline" => _("Hard inode limit"), - "Text" => _("Hard inode (files) limit").'.', "SeeAlso" => ''.'Quota How-To' - ), - "GraceInodePeriod" => array( - "Headline" => _("Grace inode period"), - "Text" => _("Grace inode (files) period. Most filesystems use a fixed maximum value of 7 days."), "SeeAlso" => ''.'Quota How-To' - ), - "upload" => array( - "Headline" => _("Quota"), - "Text" => _("Please enter the quota settings for this mount point. The syntax is: {soft block limit},{hard block limit},{soft inode limit},{hard inode limit}") - ) - ); - return $return; - } - - // Constructor - function init($base) { - // call parent init - parent::init($base); - // Get basic quotas for new account - $output_array = lamdaemon(array("+ quota get " . $_SESSION[$this->base]->type)); - // process quotas - if (is_array($output_array)) { - $all_quota = explode(':', $output_array[0]); - for ($j=0; $jquota[$j][$k] = $single_quota[$k]; - if ($this->quota[$j][4]quota[$j][4] = ''; - else $this->quota[$j][4] = strval(intval(($this->quota[$j][4]-time())/3600)) .' '. _('hours'); - if ($this->quota[$j][8]quota[$j][8] = ''; - else $this->quota[$j][8] = strval(intval(($this->quota[$j][8]-time())/3600)) .' '. _('hours'); - } - $j=0; - while (isset($this->quota[$j][0])) - // remove invalid quotas - if (!in_array($this->quota[$j][0], $real_quotas)) unset($this->quota[$j]); - else $j++; - // Beautify array, repair index - if (is_array($this->quota)) $this->quota = array_values($this->quota); - } - } - - // Variables - var $quota; - - function module_ready() { - if (!isset($_SESSION['config']->scriptPath)) return $false; - if ($_SESSION[$this->base]->type=='user' && $_SESSION[$this->base]->module['posixAccount']->attributes['uid'][0]=='') return false; - if ($_SESSION[$this->base]->type=='group' && $_SESSION[$this->base]->module['posixGroup']->attributes['cn'][0]=='') return false; - return true; - } - - /* This functions return true - * if all needed settings are done - */ - function module_complete() { - if (!$this->module_ready()) return false; - return true; - } - - /* This function returns a list of all html-pages in module - * This is usefull for mass upload and pdf-files - * because lam can walk trough all pages itself and do some - * error checkings - */ - function pages() { - return array('attributes'); - } - - /* This function returns all ldap attributes - * which are part of quota and returns - * also their values. - */ - function get_attributes() { - return $this->quota; - } - - /* This function loads all attributes into the object - * $attr is an array as it's retured from ldap_get_attributes - */ - function load_attributes($attr) { - // Load name - if ($_SESSION[$this->base]->type=='user') $id = $attr['uid'][0]; - if ($_SESSION[$this->base]->type=='group') $id = $attr['cn'][0]; - // Get quotas - $output_array = lamdaemon(array("$id quota get " . $_SESSION[$this->base]->type)); - // process quotas - if (is_array($output_array)) { - $all_quota = explode(':', $output_array[0]); - for ($j=0; $jquota[$j][$k] = $single_quota[$k]; - if ($this->quota[$j][4]quota[$j][4] = ''; - else $this->quota[$j][4] = strval(intval(($this->quota[$j][4]-time())/3600)) .' '. _('hours'); - if ($this->quota[$j][8]quota[$j][8] = ''; - else $this->quota[$j][8] = strval(intval(($this->quota[$j][8]-time())/3600)) .' '. _('hours'); - } - $j=0; - while (isset($this->quota[$j][0])) - // remove invalid quotas - if (!in_array($this->quota[$j][0], $real_quotas)) unset($this->quota[$j]); - else $j++; - // Beautify array, repair index - if (is_array($this->quota)) $this->quota = array_values($this->quota); - } - return 0; - } - - /* This function returns an array with 3 entries: - * array( DN1 ('add' => array($attr), 'remove' => array($attr), 'modify' => array($attr)), DN2 .... ) - * DN is the DN to change. It may be possible to change several DNs, - * e.g. create a new user and add him to some groups via attribute memberUid - * add are attributes which have to be added to ldap entry - * remove are attributes which have to be removed from ldap entry - * modify are attributes which have to been modified in ldap entry - */ - function save_attributes() { - /* Check wich quotas have changed - * Because we can not send an array to lamdaemon.pl we have to put all - * values in a string. ':' sepraeates the first array, ',' the second - * - * $values->quota[][] First array is an index for every chare with active quotas - * second array Contains values for every share: - * mountpoint, used blocks, soft block limit, hard block limit, grace block period, used inodes, - * soft inode limit, hard inode limit, grace inode period - */ - - $i=0; - while ($this->quota[$i][0]) { - $quotastring = $quotastring . $this->quota[$i][0] . ',' . $this->quota[$i][2] . ',' . $this->quota[$i][3] - . ',' . $this->quota[$i][6] . ',' . $this->quota[$i][7] . ':'; - $i++; - } - - if ($_SESSION[$this->base]->type=='user') $id = $_SESSION[$this->base]->module['posixAccount']->attributes['uid'][0]; - if ($_SESSION[$this->base]->type=='group') $id = $_SESSION[$this->base]->module['posixGroup']->attributes['cn'][0]; - $return[$_SESSION[$this->base]->dn]['lamdaemon']['command'][] = $id . " quota set " . $_SESSION[$this->base]->type . " $quotastring\n"; - - return $return; - } - - function delete_attributes($post) { - $i=0; - while ($this->quota[$i][0]) { - $quotastring = $quotastring . $this->quota[$i][0] . ',0,0,0,0:'; - $i++; - } - if ($_SESSION[$this->base]->type=='user') $id = $_SESSION[$this->base]->module['posixAccount']->attributes['uid'][0]; - if ($_SESSION[$this->base]->type=='group') $id = $_SESSION[$this->base]->module['posixGroup']->attributes['cn'][0]; - $return[$_SESSION[$this->base]->dn_orig]['lamdaemon']['command'][] = $id . " quota set " . $_SESSION[$this->base]->type . " $quotastring\n"; - return $return; - } - - /* Write variables into object and do some regexp checks - */ - function process_attributes(&$post) { - // Write all general values into $account_new - $i=0; - // loop for every mointpoint with quotas - while ($this->quota[$i][0]) { - $this->quota[$i][2] = $post[$i . '_2']; - $this->quota[$i][3] = $post[$i . '_3']; - $this->quota[$i][6] = $post[$i . '_6']; - $this->quota[$i][7] = $post[$i . '_7']; - // Check if values are OK and set automatic values. if not error-variable will be set - if (!get_preg($this->quota[$i][2], 'digit')) - $triggered_messages[$this->quota[$i][2]][] = $this->messages['softblock'][0]; - if (!get_preg($this->quota[$i][3], 'digit')) - $triggered_messages[$this->quota[$i][3]][] = $this->messages['hardblock'][0]; - if (!get_preg($this->quota[$i][6], 'digit')) - $triggered_messages[$this->quota[$i][6]][] = $this->messages['softinode'][0]; - if (!get_preg($this->quota[$i][7], 'digit')) - $triggered_messages[$this->quota[$i][7]][] = $this->messages['hardinode'][0]; - if (intval($this->quota[$i][2]) > intval($this->quota[$i][3])) - $triggered_messages[$this->quota[$i][2]][] = $this->messages['block_cmp'][0]; - if (intval($this->quota[$i][6]) > intval($this->quota[$i][7])) - $triggered_messages[$this->quota[$i][6]][] = $this->messages['inode_cmp'][0]; - $i++; - } - - if (count($triggered_messages)!=0) { - $this->triggered_messages = $triggered_messages; - return $triggered_messages; - } - else $this->triggered_messages = array(); - // Go to additional group page when no error did ocour and button was pressed - return 0; - } - - /* This function will create the html-page - * to show a page with all attributes. - * It will output a complete html-table - */ - function display_html_attributes(&$post) { - - $return[] = array ( 0 => array ( 'kind' => 'text', 'text' => _('Mountpoint') ), - 1 => array ( 'kind' => 'text', 'text' => _('Used blocks') ), - 2 => array ( 'kind' => 'text', 'text' => _('Soft block limit') ), - 3 => array ( 'kind' => 'text', 'text' => _('Hard block limit') ), - 4 => array ( 'kind' => 'text', 'text' => _('Grace block period') ), - 5 => array ( 'kind' => 'text', 'text' => _('Used inodes') ), - 6 => array ( 'kind' => 'text', 'text' => _('Soft inode limit') ), - 7 => array ( 'kind' => 'text', 'text' => _('Hard inode limit') ), - 8 => array ( 'kind' => 'text', 'text' => _('Grace inode period') )); - - $return[] = array ( 0 => array ( 'kind' => 'help', 'value' => 'Mountpoint' ), - 1 => array ( 'kind' => 'help', 'value' => 'UsedBlocks' ), - 2 => array ( 'kind' => 'help', 'value' => 'SoftBlockLimit' ), - 3 => array ( 'kind' => 'help', 'value' => 'HardBlockLimit' ), - 4 => array ( 'kind' => 'help', 'value' => 'GraceBlockPeriod' ), - 5 => array ( 'kind' => 'help', 'value' => 'UsedInodes' ), - 6 => array ( 'kind' => 'help', 'value' => 'SoftInodeLimit' ), - 7 => array ( 'kind' => 'help', 'value' => 'HardInodeLimit' ), - 8 => array ( 'kind' => 'help', 'value' => 'GraceInodePeriod' )); - - $i=0; - // loop for every mointpoint with enabled quotas - while ($this->quota[$i][0]) { - $return[] = array ( 0 => array ( 'kind' => 'text', 'text' => $this->quota[$i][0] ), - 1 => array ( 'kind' => 'text', 'text' => $this->quota[$i][1] ), - 2 => array ( 'kind' => 'input', 'name' => $i . '_2', 'type' => 'text', 'size' => '12', 'maxlength' => '20', 'value' => $this->quota[$i][2]), - 3 => array ( 'kind' => 'input', 'name' => $i . '_3', 'type' => 'text', 'size' => '12', 'maxlength' => '20', 'value' => $this->quota[$i][3]), - 4 => array ( 'kind' => 'text', 'text' => $this->quota[$i][4] ), - 5 => array ( 'kind' => 'text', 'text' => $this->quota[$i][5] ), - 6 => array ( 'kind' => 'input', 'name' => $i . '_6', 'type' => 'text', 'size' => '12', 'maxlength' => '20', 'value' => $this->quota[$i][6]), - 7 => array ( 'kind' => 'input', 'name' => $i . '_7', 'type' => 'text', 'size' => '12', 'maxlength' => '20', 'value' => $this->quota[$i][7]), - 8 => array ( 'kind' => 'text', 'text' => $this->quota[$i][8] )); - $i++; - } - return $return; - } - - function display_html_delete(&$post) { - return 0; - } - - /** - * Returns a list of elements for the account profiles. - * - * @return profile elements - */ - function get_profileOptions() { - // Get quotas - $quotas = lamdaemon(array("+ quota get " . $this->get_scope())); - $dirs = split(":", $quotas[0]); - array_pop($dirs); // remove empty element at the end - for ($i = 0; $i < sizeof($dirs); $i++) { - $dirs[$i] = split(",", $dirs[$i]); - $dirs[$i] = $dirs[$i][0]; - } - $return = array(); - if (sizeof($dirs) < 1) return $return; // stop if no quota directories were found - $return[] = array ( - 0 => array('kind' => 'text', 'text' => '' . _('Mountpoint') . '  ', 'align' => 'center'), - 1 => array('kind' => 'text', 'text' => '' . _('Soft block limit') . '  ', 'align' => 'center'), - 2 => array('kind' => 'text', 'text' => '' . _('Hard block limit') . '  ', 'align' => 'center'), - 3 => array('kind' => 'text', 'text' => '' . _('Soft inode limit') . '  ', 'align' => 'center'), - 4 => array('kind' => 'text', 'text' => '' . _('Hard inode limit') . '  ', 'align' => 'center'), - ); - $return[] = array ( - 0 => array('kind' => 'help', 'value' => 'Mountpoint', 'align' => 'center'), - 1 => array('kind' => 'help', 'value' => 'SoftBlockLimit', 'align' => 'center'), - 2 => array('kind' => 'help', 'value' => 'HardBlockLimit', 'align' => 'center'), - 3 => array('kind' => 'help', 'value' => 'SoftInodeLimit', 'align' => 'center'), - 4 => array('kind' => 'help', 'value' => 'HardInodeLimit', 'align' => 'center'), - ); - for ($i = 0; $i < sizeof($dirs); $i++) { - $return[] = array( - 0 => array('kind' => 'text', 'text' => $dirs[$i], 'align' => 'left'), - 1 => array('kind' => 'input', 'type' => 'text', 'align' => 'center', 'size' => '12', 'name' => "quota_softblock_" . $dirs[$i]), - 2 => array('kind' => 'input', 'type' => 'text', 'align' => 'center', 'size' => '12', 'name' => "quota_hardblock_" . $dirs[$i]), - 3 => array('kind' => 'input', 'type' => 'text', 'align' => 'center', 'size' => '12', 'name' => "quota_softinode_" . $dirs[$i]), - 4 => array('kind' => 'input', 'type' => 'text', 'align' => 'center', 'size' => '12', 'name' => "quota_hardinode_" . $dirs[$i]), - ); - } - return $return; - } - - /** - * Checks input values of account profiles. - * - * @param array $options a hash array (name => value) containing the options - * @return array list of error messages (array(type, title, text)) to generate StatusMessages, if any - */ - function check_profileOptions($options) { - $return = array(); - // Get quotas - $quotas = lamdaemon(array("+ quota get " . $this->get_scope())); - $dirs = split(":", $quotas[0]); - array_pop($dirs); // remove empty element at the end - for ($i = 0; $i < sizeof($dirs); $i++) { - $dirs[$i] = split(",", $dirs[$i]); - $dirs[$i] = $dirs[$i][0]; - } - for ($i = 0; $i < sizeof($dirs); $i++) { - if (!get_preg($options["quota_softblock_" . $dirs[$i]][0], 'digit')) $return[] = $this->messages['softblock'][0]; - if (!get_preg($options["quota_hardblock_" . $dirs[$i]][0], 'digit')) $return[] = $this->messages['hardblock'][0]; - if (!get_preg($options["quota_softinode_" . $dirs[$i]][0], 'digit')) $return[] = $this->messages['softinode'][0]; - if (!get_preg($options["quota_hardinode_" . $dirs[$i]][0], 'digit')) $return[] = $this->messages['hardinode'][0]; - if (intval($options["quota_softblock_" . $dirs[$i]][0]) >= $options["quota_hardblock_$i"][0]) $return[] = $this->messages['block_cmp'][0]; - if (intval($options["quota_softinode_" . $dirs[$i]][0]) >= $options["quota_hardinode_$i"][0]) $return[] = $this->messages['inode_cmp'][0]; - $i++; - } - return $return; - } - - /** - * Loads the values of an account profile into internal variables. - * - * @param array $profile hash array with profile values (identifier => value) - */ - function load_profile($profile) { - for ($i = 0; $i < sizeof($this->quota); $i++) { - $dir = $this->quota[$i][0]; - if (isset($profile["quota_softblock_" . $dir])) $this->quota[$i][2] = $profile["quota_softblock_" . $dir][0]; - if (isset($profile["quota_hardblock_" . $dir])) $this->quota[$i][3] = $profile["quota_hardblock_" . $dir][0]; - if (isset($profile["quota_softinode_" . $dir])) $this->quota[$i][6] = $profile["quota_softinode_" . $dir][0]; - if (isset($profile["quota_hardinode_" . $dir])) $this->quota[$i][7] = $profile["quota_hardinode_" . $dir][0]; - } - } - - /** Returns the PDF entries for this module. - * - * @see baseModule#get_pdfEntries - * - * @return array list of possible PDF entries - */ - function get_pdfEntries($account_type = "user") { - if (sizeof($this->quota) > 0) { - $quotas = array(); - $quotas[] = '' . - '' . _('Mountpoint') . '' . - '' . _('Soft block') . '' . - '' . _('Hard block') . '' . - '' . _('Soft inode') . '' . - '' . _('Hard inode') . ''; - for ($i = 0; $i < sizeof($this->quota); $i++) { - $quotas[] = '' . - '' . $this->quota[$i][0] . '' . - '' . $this->quota[$i][2] . '' . - '' . $this->quota[$i][3] . '' . - '' . $this->quota[$i][6] . '' . - '' . $this->quota[$i][7] . ''; - } - return array( - 'quota_quotas' => $quotas); - } - } - - /** - * Returns an array containing all input columns for the file upload. - * - * Syntax: - *
array( - *
string: name, // fixed non-translated name which is used as column name (should be of format: _) - *
string: description, // short descriptive name - *
string: help, // help ID - *
string: example, // example value - *
boolean: required // true, if user must set a value for this column - *
) - * - * @return array column list - */ - function get_uploadColumns() { - $return = array(); - // Get quotas - $quotas = lamdaemon(array("+ quota get " . $this->get_scope())); - $dirs = split(":", $quotas[0]); - array_pop($dirs); // remove empty element at the end - for ($i = 0; $i < sizeof($dirs); $i++) { - $dirs[$i] = split(",", $dirs[$i]); - $dirs[$i] = $dirs[$i][0]; - } - for ($i = 0; $i < sizeof($dirs); $i++) { - $return[] = array( - 'name' => 'quota_' . $dirs[$i], - 'description' => _('Quota for:') . ' ' . $dirs[$i], - 'help' => 'upload', - 'example' => '2000,2500,3000,3500'); - } - return $return; - } - - /** - * In this function the LDAP account is built up. - * - * @param array $rawAccounts list of hash arrays (name => value) from user input - * @param array $partialAccounts list of hash arrays (name => value) which are later added to LDAP - * @param array $ids list of IDs for column position (e.g. "posixAccount_uid" => 5) - * @return array list of error messages if any - */ - function build_uploadAccounts($rawAccounts, $ids, &$partialAccounts) { - // Quota changes no LDAP attributes, all actions are done in doUploadPostActions() - return array(); - } - - /** - * This function executes one post upload action. - * - * @param array $data array containing one account in each element - * @param array $ids array( => ) - * @param array $failed list of accounts which were not created successfully - * @param array $temp variable to store temporary data between two post actions - * @return array current status - *
array ( - *
'status' => 'finished' | 'inProgress' - *
'progress' => 0..100 - *
'errors' => array () - *
) - */ - function doUploadPostActions($data, $ids, $failed, &$temp) { - $errors = array(); - // first call, get list of user names and quota values - if (!isset($temp['counter'])) { - $temp['counter'] = 0; - // create list of quota columns - $temp['quotas'] = array(); - $columns = array_keys($ids); - for ($i = 0; $i < sizeof($columns); $i++) { - if (strpos($columns[$i], 'quota_') === 0) { - $temp['quotas'][] = substr($columns[$i], 6); - } - } - // select user/group name depending on current scope - $temp['accounts'] = array(); - $col = 'invalid'; - if ($this->get_scope() == 'user') $col = $ids['posixAccount_userName']; - elseif ($this->get_scope() == 'group') $col = $ids['posixGroup_cn']; - // create list of account names and their quota values - for ($i = 0; $i < sizeof($data); $i++) { - if (in_array($i, $failed)) continue; // ignore failed accounts - $name = $data[$i][$col]; - for ($m = 0; $m < sizeof($temp['quotas']); $m++) { - if ($data[$i][$ids['quota_' . $temp['quotas'][$m]]] != '') { - $parts = explode(',', $data[$i][$ids['quota_' . $temp['quotas'][$m]]]); - // check syntax - if (sizeof($parts) != 4) { - $errMsg = $this->messages['upload'][0]; - array_push($errMsg, array($i, 'quota_' . $temp['quotas'][$m])); - $errors[] = $errMsg; - continue; - } - if (!get_preg($parts[0], 'digit')) { - $errMsg = $this->messages['softblock'][1]; - array_push($errMsg, array($i, 'quota_' . $temp['quotas'][$m])); - $errors[] = $errMsg; - continue; - } - if (!get_preg($parts[1], 'digit')) { - $errMsg = $this->messages['hardblock'][1]; - array_push($errMsg, array($i, 'quota_' . $temp['quotas'][$m])); - $errors[] = $errMsg; - continue; - } - if (!get_preg($parts[2], 'digit')) { - $errMsg = $this->messages['softinode'][1]; - array_push($errMsg, array($i, 'quota_' . $temp['quotas'][$m])); - $errors[] = $errMsg; - continue; - } - if (!get_preg($parts[3], 'digit')) { - $errMsg = $this->messages['hardinode'][1]; - array_push($errMsg, array($i, 'quota_' . $temp['quotas'][$m])); - $errors[] = $errMsg; - continue; - } - if ($parts[0] >= $parts[1]) { - $errMsg = $this->messages['block_cmp'][1]; - array_push($errMsg, array($i, 'quota_' . $temp['quotas'][$m])); - $errors[] = $errMsg; - continue; - } - if ($parts[2] >= $parts[3]) { - $errMsg = $this->messages['inode_cmp'][1]; - array_push($errMsg, array($i, 'quota_' . $temp['quotas'][$m])); - $errors[] = $errMsg; - continue; - } - // save quota settings - $temp['accounts'][$name][$temp['quotas'][$m]] = $parts; - } - } - } - return array('status' => 'inProgress', 'progress' => 5, 'errors' => $errors); - } - // quotas are ready to set - elseif ($temp['counter'] < sizeof($temp['accounts'])) { - $names = array_keys($temp['accounts']); - $name = $names[$temp['counter']]; - $mountPoints = array_keys($temp['accounts'][$name]); - // set quota - $quotaString = $name . " quota set " . $this->scope . " "; - for ($m = 0; $m < sizeof($mountPoints); $m++) { - $partString = $mountPoints[$m] . ',' . implode(',', $temp['accounts'][$name][$mountPoints[$m]]) . ':'; - $quotaString .= $partString; - } - $quotaString .= "\n"; - $result = lamdaemon(array($quotaString)); - if (is_array($result)) { - $errors[] = array('ERROR', implode('
', $result), ''); - } - // set counters to next account/mount point - $temp['counter']++; - return array( - 'status' => 'inProgress', - 'progress' => 5 + (95 * ($temp['counter'] / sizeof($temp['accounts']))), - 'errors' => $errors); - } - return array('status' => 'finished'); - } - -} - -?> diff --git a/lam/lib/modules/sambaAccount.inc b/lam/lib/modules/sambaAccount.inc deleted file mode 100644 index c300cf53..00000000 --- a/lam/lib/modules/sambaAccount.inc +++ /dev/null @@ -1,1144 +0,0 @@ -rids = array( - _('Domain Admins') => 512, _('Domain Users') => 513, - _('Domain Guests') => 514, _('Domain Computers') => 515, - _('Domain Controllers') => 516, _('Domain Certificate Admins') => 517, - _('Domain Schema Admins') => 518, _('Domain Enterprise Admins') => 519, - _('Domain Policy Admins') => 520 ); - // call parent constructor - parent::baseModule($scope); - } - - /** this functin fills the error message array with messages - **/ - function load_Messages() { - // error messages for input checks - $this->messages['homePath'][0] = array('ERROR', _('Home path'), _('Home path is invalid.')); - $this->messages['homePath'][1] = array('INFO', _('Home path'), _('Inserted user or group name in home path.')); - $this->messages['homePath'][2] = array('INFO', _('Account %s:') . ' sambaAccount_homePath', _('Inserted user or group name in home path.')); - $this->messages['profilePath'][0] = array('ERROR', _('Profile path'), _('Profile path is invalid!')); - $this->messages['profilePath'][1] = array('INFO', _('Profile path'), _('Inserted user or group name in profile path.')); - $this->messages['profilePath'][2] = array('INFO', _('Account %s:') . ' sambaAccount_profilePath', _('Inserted user or group name in profile path.')); - $this->messages['logonScript'][0] = array('ERROR', _('Logon script'), _('Logon script is invalid!')); - $this->messages['logonScript'][1] = array('INFO', _('Logon script'), _('Inserted user or group name in logon script.')); - $this->messages['logonScript'][2] = array('ERROR', _('Account %s:') . ' sambaAccount_logonScript', _('Logon script is invalid!')); - $this->messages['workstations'][0] = array('ERROR', _('Samba workstations'), _('Please enter a comma separated list of host names!')); - $this->messages['workstations'][1] = array('ERROR', _('Account %s:') . ' sambaAccount_workstations', _('Please enter a comma separated list of host names!')); - $this->messages['domain'][0] = array('ERROR', _('Domain name'), _('Domain name contains invalid characters. Valid characters are: a-z, A-Z, 0-9 and -.')); - $this->messages['domain'][1] = array('ERROR', _('Account %s:') . ' sambaAccount_domain', _('Domain name contains invalid characters. Valid characters are: a-z, A-Z, 0-9 and -.')); - $this->messages['lmPassword'][0] = array('ERROR', _('Password'), _('Please enter the same password in both password-fields.')); - $this->messages['lmPassword'][1] = array('ERROR', _('Password'), _('Password contains invalid characters. Valid characters are: a-z, A-Z, 0-9 and #*,.;:_-+!$%&/|?{[()]}= !')); - $this->messages['lmPassword'][2] = array('ERROR', _('Account %s:') . ' sambaAccount_password', _('Password contains invalid characters. Valid characters are: a-z, A-Z, 0-9 and #*,.;:_-+!$%&/|?{[()]}= !')); - $this->messages['rid'][0] = array('ERROR', _('Special user'), _('There can be only one administrator per domain.')); - $this->messages['rid'][1] = array('ERROR', _('Special user'), _('There can be only one guest per domain.')); - $this->messages['displayName'][0] = array('ERROR', _('Account %s:') . ' sambaAccount_displayName', _('Please enter a valid display name!')); - $this->messages['pwdUnix'][0] = array('ERROR', _('Account %s:') . ' sambaAccount_pwdUnix', _('This value can only be \"true\" or \"false\"!')); - $this->messages['noPassword'][0] = array('ERROR', _('Account %s:') . ' sambaAccount_noPassword', _('This value can only be \"true\" or \"false\"!')); - $this->messages['noExpire'][0] = array('ERROR', _('Account %s:') . ' sambaAccount_noExpire', _('This value can only be \"true\" or \"false\"!')); - $this->messages['deactivated'][0] = array('ERROR', _('Account %s:') . ' sambaAccount_deactivated', _('This value can only be \"true\" or \"false\"!')); - $this->messages['pwdCanChange'][0] = array('ERROR', _('Account %s:') . ' sambaAccount_pwdCanChange', _('Please enter a valid date in format DD-MM-YYYY.')); - $this->messages['pwdMustChange'][0] = array('ERROR', _('Account %s:') . ' sambaAccount_pwdMustChange', _('Please enter a valid date in format DD-MM-YYYY.')); - $this->messages['homeDrive'][0] = array('ERROR', _('Account %s:') . ' sambaAccount_homeDrive', _('Please enter a valid drive letter.')); - $this->messages['group'][0] = array('ERROR', _('Account %s:') . ' sambaAccount_group', _('Please enter a valid group RID.')); - $this->messages['specialUser'][0] = array('ERROR', _('Account %s:') . ' sambaAccount_specialUser', _('Please enter a valid special user name.')); - - } - - /** - * Returns meta data that is interpreted by parent class - * - * @return array array with meta data - */ - function get_metaData() { - $return = array(); - // manages user and host accounts - $return["account_types"] = array("user", "host"); - if ($this->get_scope() == "host") { - // LDAP filter - $return["ldap_filter"] = array('and' => '(uid=*$)', 'or' => "(objectClass=posixAccount)"); - } - // alias name - $return["alias"] = _('Samba 2'); - // module dependencies - $return['dependencies'] = array('depends' => array('posixAccount'), 'conflicts' => array()); - // profile options - if ($this->get_scope() == 'user') { - // set Unix password for Samba - $return['profile_options'][] = array( - 0 => array('kind' => 'text', 'text' => _('Use Unix password') . ': '), - 1 => array('kind' => 'input', 'name' => 'sambaAccount_useunixpwd', 'type' => 'checkbox', 'checked' => true), - 2 => array('kind' => 'help', 'value' => 'pwdUnix') - ); - // set no password - $return['profile_options'][] = array( - 0 => array('kind' => 'text', 'text' => _('Use no password') . ': '), - 1 => array('kind' => 'input', 'name' => 'sambaAccount_acctFlagsN', 'type' => 'checkbox', 'checked' => false), - 2 => array('kind' => 'help', 'value' => 'noPassword') - ); - // password expiry - $return['profile_options'][] = array( - 0 => array('kind' => 'text', 'text' => _('Password does not expire') . ': '), - 1 => array('kind' => 'input', 'name' => 'sambaAccount_acctFlagsX', 'type' => 'checkbox', 'checked' => true), - 2 => array('kind' => 'help', 'value' => 'noExpire') - ); - // account deactivation - $return['profile_options'][] = array( - 0 => array('kind' => 'text', 'text' => _('Account is deactivated') . ': '), - 1 => array('kind' => 'input', 'name' => 'sambaAccount_acctFlagsD', 'type' => 'checkbox', 'checked' => false), - 2 => array('kind' => 'help', 'value' => 'deactivated') - ); - // drive letter - $drives = array(); - for ($i = 90; $i > 67; $i--) $drives[] = chr($i) . ':'; - $return['profile_options'][] = array( - 0 => array('kind' => 'text', 'text' => _('Home drive') . ': '), - 1 => array('kind' => 'select', 'name' => 'sambaAccount_homeDrive', 'options' => $drives, 'options_selected' => array ('Z:')), - 2 => array('kind' => 'help', 'value' => 'homeDrive') - ); - // path to home directory - $return['profile_options'][] = array( - 0 => array('kind' => 'text', 'text' => _('Home path') . ': '), - 1 => array('kind' => 'input', 'type' => 'text', 'name' => 'sambaAccount_smbhome', 'size' => '20', 'maxlength' => '255', 'value' => ''), - 2 => array('kind' => 'help', 'value' => 'homePath') - ); - // path to profile - $return['profile_options'][] = array( - 0 => array('kind' => 'text', 'text' => _('Profile path') . ': '), - 1 => array('kind' => 'input', 'type' => 'text', 'name' => 'sambaAccount_profilePath', 'size' => '20', 'maxlength' => '255', 'value' => ''), - 2 => array('kind' => 'help', 'value' => 'profilePath') - ); - // logon script - $return['profile_options'][] = array( - 0 => array('kind' => 'text', 'text' => _('Logon script') . ': '), - 1 => array('kind' => 'input', 'type' => 'text', 'name' => 'sambaAccount_scriptPath', 'size' => '20', 'maxlength' => '255', 'value' => ''), - 2 => array('kind' => 'help', 'value' => 'scriptPath') - ); - // allowed workstations - $return['profile_options'][] = array( - 0 => array('kind' => 'text', 'text' => _('Samba workstations') . ': '), - 1 => array('kind' => 'input', 'type' => 'text', 'name' => 'sambaAccount_userWorkstations', 'value' => ''), - 2 => array('kind' => 'help', 'value' => 'workstations') - ); - } - // Samba domain - $return['profile_options'][] = array( - 0 => array('kind' => 'text', 'text' => _('Domain') . ': '), - 1 => array('kind' => 'input', 'type' => 'text', 'name' => 'sambaAccount_domain', 'size' => '20', 'maxlength' => '255', 'value' => ''), - 2 => array('kind' => 'help', 'value' => 'domain') - ); - // profile checks - $return['profile_checks']['sambaAccount_smbhome'] = array('type' => 'ext_preg', 'regex' => 'UNC', - 'error_message' => $this->messages['homePath'][0]); - $return['profile_checks']['sambaAccount_profilePath'] = array('type' => 'ext_preg', 'regex' => 'UNC', - 'error_message' => $this->messages['profilePath'][0]); - $return['profile_checks']['sambaAccount_scriptPath'] = array('type' => 'ext_preg', 'regex' => 'logonscript', - 'error_message' => $this->messages['logonScript'][0]); - $return['profile_checks']['sambaAccount_userWorkstations'] = array('type' => 'ext_preg', 'regex' => 'unixhost', - 'error_message' => $this->messages['workstations'][0]); - $return['profile_checks']['sambaAccount_domain'] = array('type' => 'ext_preg', 'regex' => 'domainname', - 'error_message' => $this->messages['domain'][0]); - // profile mappings - $return['profile_mappings'] = array( - 'sambaAccount_homeDrive' => 'homeDrive', - 'sambaAccount_smbhome' => 'smbHome', - 'sambaAccount_profilePath' => 'profilePath', - 'sambaAccount_scriptPath' => 'scriptPath', - 'sambaAccount_userWorkstations' => 'userWorkstations', - 'sambaAccount_domain' => 'domain' - ); - // available PDF fields - $return['PDF_fields'] = array( - 'displayName', - 'smbHome', - 'homeDrive', - 'scriptPath', - 'profilePath', - 'userWorkstations', - 'domain', - 'description' - ); - // upload dependencies - $return['upload_preDepends'] = array('posixAccount', 'inetOrgPerson'); - // upload options - if ($this->get_scope() == "user") { - $return['upload_columns'] = array( - array( - 'name' => 'sambaAccount_displayName', - 'description' => _('Display name'), - 'help' => 'displayName', - 'example' => _('Steve Miller') - ), - array( - 'name' => 'sambaAccount_password', - 'description' => _('Password'), - 'help' => 'password', - 'example' => _('secret') - ), - array( - 'name' => 'sambaAccount_pwdUnix', - 'description' => _('Use Unix password'), - 'help' => 'pwdUnixUpload', - 'default' => 'true', - 'values' => 'true, false', - 'example' => 'true' - ), - array( - 'name' => 'sambaAccount_noPassword', - 'description' => _('Use no password'), - 'help' => 'noPasswordUpload', - 'default' => 'false', - 'values' => 'true, false', - 'example' => 'false' - ), - array( - 'name' => 'sambaAccount_noExpire', - 'description' => _('Password does not expire'), - 'help' => 'noExpireUpload', - 'default' => 'true', - 'values' => 'true, false', - 'example' => 'true' - ), - array( - 'name' => 'sambaAccount_deactivated', - 'description' => _('Account is deactivated'), - 'help' => 'deactivatedUpload', - 'default' => 'false', - 'values' => 'true, false', - 'example' => 'false' - ), - array( - 'name' => 'sambaAccount_pwdCanChange', - 'description' => _('User can change password'), - 'help' => 'pwdCanChange', - 'default' => '31-12-2030', - 'example' => '15-11-2006' - ), - array( - 'name' => 'sambaAccount_pwdMustChange', - 'description' => _('User must change password'), - 'help' => 'pwdMustChange', - 'default' => '31-12-2030', - 'example' => '15-10-2006' - ), - array( - 'name' => 'sambaAccount_homeDrive', - 'description' => _('Home drive'), - 'help' => 'homeDrive', - 'example' => 'k:' - ), - array( - 'name' => 'sambaAccount_homePath', - 'description' => _('Home path'), - 'help' => 'homePath', - 'example' => _('\\\\server\\homes\\smiller') - ), - array( - 'name' => 'sambaAccount_profilePath', - 'description' => _('Profile path'), - 'help' => 'profilePath', - 'example' => _('\\\\server\\profiles\\smiller') - ), - array( - 'name' => 'sambaAccount_logonScript', - 'description' => _('Logon script'), - 'help' => 'scriptPath', - 'example' => 'logon.bat' - ), - array( - 'name' => 'sambaAccount_workstations', - 'description' => _('Samba workstations'), - 'help' => 'workstations', - 'example' => 'PC01,PC02,PC03' - ), - array( - 'name' => 'sambaAccount_group', - 'description' => _('Windows group'), - 'help' => 'groupUpload', - 'example' => '1235', - 'default' => '<gidNumber>*2 + 1001' - ), - array( - 'name' => 'sambaAccount_specialUser', - 'description' => _('Special user'), - 'help' => 'specialUser', - 'example' => _('Domain Admins'), - 'values' => implode(", ", array_keys($this->rids)) - ), - array( - 'name' => 'sambaAccount_domain', - 'description' => _('Domain'), - 'help' => 'domain', - 'example' => _('mydomain') - ) - ); - } - elseif ($this->get_scope() == "host") { - $return['upload_columns'] = array( - array( - 'name' => 'sambaAccount_domain', - 'description' => _('Domain'), - 'help' => 'domain', - 'example' => _('mydomain') - ) - ); - } - // help Entries - $return['help'] = array ( - "displayName" => array( - "ext" => "FALSE", "Headline" => _("Display name"), - "Text" => _("This is the account's full name on Windows systems.")), - "password" => array( - "ext" => "FALSE", "Headline" => _("Samba password"), - "Text" => _("This is the account's Windows password.")), - "pwdUnix" => array( - "ext" => "FALSE", "Headline" => _("Use Unix password"), - "Text" => _("If checked Unix password will also be used as Samba password.")), - "pwdUnixUpload" => array( - "ext" => "FALSE", "Headline" => _("Use Unix password"), - "Text" => _("If set to \"true\" Unix password will also be used as Samba password.")), - "noPassword" => array( - "ext" => "FALSE", "Headline" => _("Use no password"), - "Text" => _("If checked no password will be used.")), - "noPasswordUpload" => array( - "ext" => "FALSE", "Headline" => _("Use no password"), - "Text" => _("If set to \"true\" no password will be used.")), - "noExpire" => array( - "ext" => "FALSE", "Headline" => _("Password does not expire"), - "Text" => _("If checked password does not expire. (Setting X-Flag)")), - "noExpireUpload" => array( - "ext" => "FALSE", "Headline" => _("Password does not expire"), - "Text" => _("If set to \"true\" password does not expire. (Setting X-Flag)")), - "deactivated" => array( - "ext" => "FALSE", "Headline" => _("Account is deactivated"), - "Text" => _("If checked account will be deactivated. (Setting D-Flag)")), - "deactivatedUpload" => array( - "ext" => "FALSE", "Headline" => _("Account is deactivated"), - "Text" => _("If set to \"true\" account will be deactivated. (Setting D-Flag)")), - "pwdCanChange" => array( - "ext" => "FALSE", "Headline" => _("User can change password"), - "Text" => _("Date after the user is able to change his password. Format: DD-MM-YYYY")), - "pwdMustChange" => array ("ext" => "FALSE", "Headline" => _("User must change password"), - "Text" => _("Date after the user must change his password. Format: DD-MM-YYYY")), - "homeDrive" => array( - "ext" => "FALSE", "Headline" => _("Home drive"), - "Text" => _("Drive letter assigned on windows workstations as homedirectory.")), - "homePath" => array( - "ext" => "FALSE", "Headline" => _("Home path"), - "Text" => _('UNC-path (\\\\server\\share) of homedirectory. $user and $group are replaced with user and group name.'). ' '. _("Can be left empty.")), - "profilePath" => array( - "ext" => "FALSE", "Headline" => _("Profile path"), - "Text" => _('Path of the user profile. Can be a local absolute path or a UNC-path (\\\\server\\share). $user and $group are replaced with user and group name.'). ' '. _("Can be left empty.")), - "scriptPath" => array( - "ext" => "FALSE", "Headline" => _("Logon script"), - "Text" => _('Filename and -path relative to netlogon-share which should be executed on logon. $user and $group are replaced with user and group name.'). ' '. _("Can be left empty.")), - "workstations" => array( - "ext" => "FALSE", "Headline" => _("Samba workstations"), - "Text" => _("Comma separated list of Samba workstations the user is allowed to login. Empty means every workstation."). ' '. _("Can be left empty.")), - "group" => array( - "ext" => "FALSE", "Headline" => _("Windows group name"), - "Text" => _("If you want to use a well known RID you can selcet a well known group.")), - "groupUpload" => array( - "ext" => "FALSE", "Headline" => _("Windows group RID"), - "Text" => _("This is the RID of the user's primary Windows group.")), - "specialUser" => array( - "ext" => "FALSE", "Headline" => _("Special user"), - "Text" => _("If you want to create domain administrators or other special users use this option.")), - "domain" => array( - "ext" => "FALSE", "Headline" => _("Domain"), - "Text" => _("Windows domain name of account."). ' '. _("Can be left empty.")) - ); - return $return; - } - - /** - * Initializes the module after it became part of an accountContainer - * - * @param string $base the name of the accountContainer object ($_SESSION[$base]) - */ - function init($base) { - // call parent init - parent::init($base); - $this->useunixpwd = false; - $this->noexpire = true; - $this->nopwd = false; - $this->deactivated = false; - } - - // Variables - /** use unix password as samba password? */ - var $useunixpwd; - /** use no password? */ - var $nopwd; - /** password does not expire? */ - var $noexpire; - /** account deactivated? */ - var $deactivated; - - /** Array of well known rids */ - var $rids; - - function module_ready() { - if ($_SESSION[$this->base]->module['posixAccount']->attributes['gidNumber'][0]=='') return false; - if ($_SESSION[$this->base]->module['posixAccount']->attributes['uidNumber'][0]=='') return false; - return true; - } - - /** - * This functions returns true if all needed settings are done - * - * @return boolean true if ready to save account - */ - function module_complete() { - if (!$this->module_ready()) return false; - if ($this->attributes['rid'][0] == '') return false; - return true; - } - - /* This function returns a list of all html-pages in module - * This is usefull for mass upload and pdf-files - * because lam can walk trough all pages itself and do some - * error checkings - */ - function pages() { - return array('attributes', 'userWorkstations'); - } - - /* This function loads all attributes into the object - * $attr is an array as it's retured from ldap_get_attributes - */ - function load_attributes($attr) { - parent::load_attributes($attr); - if (strpos($this->attributes['acctFlags'][0], "D")) $this->deactivated = true; - if (strpos($this->attributes['acctFlags'][0], "N")) $this->nopwd = true; - if (strpos($this->attributes['acctFlags'][0], "X")) $this->noexpire = true; - return 0; - } - - /* This function returns an array with 3 entries: - * array( DN1 ('add' => array($attr), 'remove' => array($attr), 'modify' => array($attr)), DN2 .... ) - * DN is the DN to change. It may be possible to change several DNs, - * e.g. create a new user and add him to some groups via attribute memberUid - * add are attributes which have to be added to ldap entry - * remove are attributes which have to be removed from ldap entry - * modify are attributes which have to been modified in ldap entry - */ - function save_attributes() { - /* Create sambaSID. Can't create it while loading attributes because - * it's psssible uidNumber has changed - */ - $special = false; - if ($this->attributes['rid'][0] < 1000) $special = true; - if (!$special) $this->attributes['rid'][0] == $_SESSION[$this->base]->module['posixAccount']->attributes['uidNumber'][0]*2+1000; - $rids = array_values($this->rids); - $wrid = false; - for ($i=0; $iattributes['primaryGroupID'][0] == $rids[$i]) { - $wrid = true; - break; - } - } - if (!$wrid) $this->attributes['primaryGroupID'][0] = ($_SESSION[$this->base]->module['posixAccount']->attributes['gidNumber'][0]*2)+1001; - $return = $_SESSION[$this->base]->save_module_attributes($this->attributes, $this->orig); - return $return; - } - - function delete_attributes($post) { - return 0; - } - - /* Write variables into object and do some regexp checks - */ - function process_attributes(&$post) { - $this->attributes['domain'][0] = $post['domain']; - // Start character - $flag = "["; - if ($post['acctFlagsD']) { - $flag .= "D"; - $this->deactivated = true; - } - else { - $this->deactivated = false; - } - if ($post['acctFlagsX']) { - $flag .= "X"; - $this->noexpire = true; - } - else { - $this->noexpire = false; - } - if ($post['acctFlagsN']) { - $flag .= "N"; - $this->nopwd = true; - } - else { - $this->nopwd = false; - } - if ($post['acctFlagsS']) $flag .= "S"; - if ($post['acctFlagsH']) $flag .= "H"; - if ($post['acctFlagsW']) $flag .= "W"; - if ($post['acctFlagsU']) $flag .= "U"; - // Expand string to fixed length - $flag = str_pad($flag, 12); - // End character - $flag = $flag. "]"; - $this->attributes['acctFlags'][0] = $flag; - - if ($_SESSION[$this->base]->type=='host') { - $this->attributes['primaryGroupID'][0] = $this->rids[_('Domain Computers')]; - if ($post['ResetSambaPassword'] || (!$this->attributes['lmPassword'][0])) { - $hostname = $_SESSION[$this->base]->module['posixAccount']->attributes['uid'][0]; - $hostname = substr($hostname, 0, strlen($hostname) - 1); - $this->attributes['lmPassword'][0] = lmPassword($hostname); - $this->attributes['ntPassword'][0] = ntPassword($hostname); - $this->attributes['pwdLastSet'][0] = time(); - } - } - - // check values for user account - if ($this->scope == 'user') { - $this->attributes['pwdCanChange'][0] = mktime($post['pwdCanChange_h'], $post['pwdCanChange_m'], $post['pwdCanChange_s'], - $post['pwdCanChange_mon'], $post['pwdCanChange_day'], $post['pwdCanChange_yea']); - $this->attributes['pwdMustChange'][0] = mktime($post['pwdMustChange_h'], $post['pwdMustChange_m'], $post['pwdMustChange_s'], - $post['pwdMustChange_mon'], $post['pwdMustChange_day'], $post['pwdMustChange_yea']); - $this->attributes['smbHome'][0] = stripslashes($post['smbHome']); - $this->attributes['homeDrive'][0] = $post['homeDrive']; - $this->attributes['scriptPath'][0] = stripslashes($post['scriptPath']); - $this->attributes['profilePath'][0] = stripslashes($post['profilePath']); - $rids = array_keys($this->rids); - $wrid = false; - for ($i=0; $iattributes['primaryGroupID'][0] = $this->rids[$rids[$i]]; - break; - } - } - if (!$wrid) $this->attributes['primaryGroupID'][0] = ($_SESSION[$this->base]->module['posixAccount']->attributes['gidNumber'][0]*2)+1001; - if ($post['useunixpwd']) $this->useunixpwd = true; - else $this->useunixpwd = false; - if ($post['useunixpwd']) { - $this->useunixpwd = true; - $this->attributes['lmPassword'][0] = lmPassword($_SESSION[$this->base]->module['posixAccount']->userPassword()); - $this->attributes['ntPassword'][0] = ntPassword($_SESSION[$this->base]->module['posixAccount']->userPassword()); - $this->attributes['pwdLastSet'][0] = time(); - } - else $this->useunixpwd = false; - if (!$this->useunixpwd && isset($post['lmPassword']) && ($post['lmPassword'] != '')) { - if ($post['lmPassword'] != $post['lmPassword2']) { - $triggered_messages['lmPassword'][] = $this->messages['lmPassword'][0]; - unset ($post['lmPassword2']); - } - else { - if ( !get_preg($post['lmPassword'], 'password')) $triggered_messages['lmPassword'][] = $this->messages['lmPassword'][1]; - else { - $this->attributes['lmPassword'][0] = lmPassword($post['lmPassword']); - $this->attributes['ntPassword'][0] = ntPassword($post['lmPassword']); - $this->attributes['pwdLastSet'][0] = time(); - } - } - } - // rid - $specialNames = array_keys($this->rids); - if (in_array($post['rid'], $specialNames)) { - $this->attributes['rid'][0] = $this->rids[$post['rid']]; - } - else { - $this->attributes['rid'][0] = $_SESSION[$this->base]->module['posixAccount']->attributes['uidNumber'][0]*2+1000; - } - $this->attributes['smbHome'][0] = str_replace('$user', $_SESSION[$this->base]->module['posixAccount']->attributes['uid'][0], $this->attributes['smbHome'][0]); - $this->attributes['smbHome'][0] = str_replace('$group', $_SESSION['cache']->getgrnam($_SESSION[$this->base]->module['posixAccount']->attributes['gidNumber'][0]), $this->attributes['smbHome'][0]); - if ($this->attributes['smbHome'][0] != stripslashes($post['smbHome'])) $triggered_messages['smbHome'][] = $this->messages['homePath'][1]; - $this->attributes['scriptPath'][0] = str_replace('$user', $_SESSION[$this->base]->module['posixAccount']->attributes['uid'][0], $this->attributes['scriptPath'][0]); - $this->attributes['scriptPath'][0] = str_replace('$group', $_SESSION['cache']->getgrnam($_SESSION[$this->base]->module['posixAccount']->attributes['gidNumber'][0]), $this->attributes['scriptPath'][0]); - if ($this->attributes['scriptPath'][0] != stripslashes($post['scriptPath'])) $triggered_messages['scriptPath'][] = $this->messages['logonScript'][1]; - $this->attributes['profilePath'][0] = str_replace('$user', $_SESSION[$this->base]->module['posixAccount']->attributes['uid'][0], $this->attributes['profilePath'][0]); - $this->attributes['profilePath'][0] = str_replace('$group', $_SESSION['cache']->getgrnam($_SESSION[$this->base]->module['posixAccount']->attributes['gidNumber'][0]), $this->attributes['profilePath'][0]); - if ($this->attributes['profiletPath'][0] != stripslashes($post['profilePath'])) $triggered_messages['profilePath'][] = $this->messages['profilePath'][1]; - if ( (!$this->attributes['smbHome'][0]=='') && (!get_preg($this->attributes['smbHome'][0], 'UNC'))) - $triggered_messages['smbHome'][] = $this->messages['homePath'][0]; - if ( (!$this->attributes['scriptPath'][0]=='') && (!get_preg($this->attributes['scriptPath'][0], 'logonscript'))) - $triggered_messages['scriptPath'][] = $this->messages['logonScript'][0]; - if ( (!$this->attributes['profilePath'][0]=='') && (!get_preg($this->attributes['profilePath'][0], 'UNC'))) - $triggered_messages['profilePath'][] = $this->messages['profilePath'][0]; - } - // check values for host account - else { - if (!$this->attributes['rid'][0]) { - $this->attributes['rid'][0] = ($_SESSION[$this->base]->module['posixAccount']->attributes['uidNumber'][0] * 2) + 1000; - } - if (!$this->attributes['primaryGroupID'][0]) { - $this->attributes['primaryGroupID'][0] = ($_SESSION[$this->base]->module['posixAccount']->attributes['gidNumber'][0] * 2) + 1001; - } - } - - if ((!$this->attributes['domain'][0]=='') && !get_preg($this->attributes['domain'][0], 'domainname')) - $triggered_messages['domain'][] = $this->messages['domain'][0]; - - if (count($triggered_messages)!=0) { - $this->triggered_messages = $triggered_messages; - return $triggered_messages; - } - else $this->triggered_messages = array(); - if ($post['userWorkstations']) return 'userWorkstations'; - return 0; - } - - /* Write variables into object and do some regexp checks - */ - function process_userWorkstations(&$post) { - // Load attributes - if ($_SESSION[$this->base]->type=='user') { - do { // X-Or, only one if() can be true - if (isset($post['availableUserWorkstations']) && isset($post['userWorkstations_add'])) { // Add workstations to list - $temp = str_replace(' ', '', $this->attributes['userWorkstations'][0]); - $workstations = explode (',', $temp); - for ($i=0; $iattributes['userWorkstations'][0] = $workstations[0]; - for ($i=1; $iattributes['userWorkstations'][0] = $this->attributes['userWorkstations'][0] . "," . $workstations[$i]; - } - break; - } - if (isset($post['userWorkstations']) && isset($post['userWorkstations_remove'])) { // remove // Add workstations from list - // Put all workstations in array - $temp = str_replace(' ', '', $this->attributes['userWorkstations'][0]); - $workstations = explode (',', $temp); - for ($i=0; $iattributes['userWorkstations'][0] = $workstations[0]; - for ($i=1; $iattributes['userWorkstations'][0] = $this->attributes['userWorkstations'][0] . "," . $workstations[$i]; - } - break; - } - } while(0); - if ($post['attributes']) return 'attributes'; - } - return 0; - } - - /* This function will create the html-page - * to show a page with all attributes. - * It will output a complete html-table - */ - function display_html_attributes(&$post) { - if ($_SESSION[$this->base]->type=='user') { - $canchangedate = getdate($this->attributes['pwdCanChange'][0]); - $mustchangedate = getdate($this->attributes['pwdMustChange'][0]); - $return[] = array ( 0 => array ( 'kind' => 'input', 'name' => 'pwdCanChange_h', 'type' => 'hidden', 'value' => $canchangedate['hours']), - 1 => array ( 'kind' => 'input', 'name' => 'pwdCanChange_m', 'type' => 'hidden', 'value' => $canchangedate['minutes']), - 2 => array ( 'kind' => 'input', 'name' => 'pwdCanChange_s', 'type' => 'hidden', 'value' => $canchangedate['seconds']), - 3 => array ( 'kind' => 'input', 'name' => 'pwdMustChange_h', 'type' => 'hidden', 'value' => $mustchangedate['hours']), - 4 => array ( 'kind' => 'input', 'name' => 'pwdMustChange_m', 'type' => 'hidden', 'value' => $mustchangedate['minutes']), - 5 => array ( 'kind' => 'input', 'name' => 'pwdMustChange_s', 'type' => 'hidden', 'value' => $mustchangedate['seconds']), - 6 => array ( 'kind' => 'input', 'name' => 'acctFlagsU', 'type' => 'hidden', 'value' => 'true')); - $return[] = array( - 0 => array('kind' => 'text', 'text' => _('Samba password') ), - 1 => array('kind' => 'input', 'name' => 'lmPassword', 'type' => 'password', 'size' => '20', 'maxlength' => '255', 'value' => '')); - $return[] = array( - 0 => array('kind' => 'text', 'text' => _('Repeat password') ), - 1 => array('kind' => 'input', 'name' => 'lmPassword2', 'type' => 'password', 'size' => '20', 'maxlength' => '255', 'value' => ''), - 2 => array('kind' => 'help', 'value' => 'lmPassword')); - if ($_SESSION[$this->base]->module['posixAccount']->orig['userPassword'][0] != $_SESSION[$this->base]->module['posixAccount']->attributes['userPassword'][0]) { - $return[] = array ( 0 => array ( 'kind' => 'text', 'text' => _('Use unix password') ), - 1 => array ( 'kind' => 'input', 'name' => 'useunixpwd', 'type' => 'checkbox', 'checked' => $this->useunixpwd, 'value' => true), - 2 => array ('kind' => 'help', 'value' => 'useunixpwd')); - } - $return[] = array ( 0 => array ( 'kind' => 'text', 'text' => _('Use no password') ), - 1 => array ( 'kind' => 'input', 'name' => 'acctFlagsN', 'type' => 'checkbox', 'checked' => $this->nopwd), - 2 => array ('kind' => 'help', 'value' => 'acctFlagsN')); - $return[] = array ( 0 => array ( 'kind' => 'text', 'text' => _('Password does not expire') ), - 1 => array ( 'kind' => 'input', 'name' => 'acctFlagsX', 'type' => 'checkbox', 'checked' => $this->noexpire), - 2 => array ('kind' => 'help', 'value' => 'acctFlagsX')); - $return[] = array ( 0 => array ( 'kind' => 'text', 'text' => _('Account is deactivated') ), - 1 => array ( 'kind' => 'input', 'name' => 'acctFlagsD', 'type' => 'checkbox', 'checked' => $this->deactivated), - 2 => array ('kind' => 'help', 'value' => 'acctFlagsD')); - for ( $i=1; $i<=31; $i++ ) $mday[] = $i; - for ( $i=1; $i<=12; $i++ ) $mon[] = $i; - for ( $i=2003; $i<=2030; $i++ ) $year[] = $i; - $return[] = array ( 0 => array ( 'kind' => 'text', 'text' => _('User can change password') ), - 1 => array ( 'kind' => 'table', 'value' => array ( 0 => array ( 0 => array ( 'kind' => 'select', 'name' => 'pwdCanChange_day', - 'options' => $mday, 'options_selectd' => $canchangedate['mday']), - 1 => array ( 'kind' => 'select', 'name' => 'pwdCanChange_mon', - 'options' => $mon, 'options_selectd' => $canchangedate['mon']), - 2 => array ( 'kind' => 'select', 'name' => 'pwdCanChange_yes', - 'options' => $year, 'options_selectd' => $canchangedate['year'])))), - 2 => array ( 'kind' => 'help', 'value' => 'pwdCanChange' )); - $return[] = array ( 0 => array ( 'kind' => 'text', 'text' => _('User must change password') ), - 1 => array ( 'kind' => 'table', 'value' => array ( 0 => array ( 0 => array ( 'kind' => 'select', 'name' => 'pwdMustChange_day', - 'options' => $mday, 'options_selectd' => $mustchangedate['mday']), - 1 => array ( 'kind' => 'select', 'name' => 'pwdMustChange_mon', - 'options' => $mon, 'options_selectd' => $mustchangedate['mon']), - 2 => array ( 'kind' => 'select', 'name' => 'pwdMustChange_yes', - 'options' => $year, 'options_selectd' => $mustchangedate['year'])))), - 2 => array ( 'kind' => 'help', 'value' => 'pwdMustChange' )); - for ($i=90; $i>67; $i--) $drives[] = chr($i).':'; - $return[] = array ( 0 => array ( 'kind' => 'text', 'text' => _('Home drive') ), - 1 => array ( 'kind' => 'select', 'name' => 'homeDrive', 'options' => $drives, 'options_selected' => array ($this->attributes['homeDrive'][0])), - 2 => array ( 'kind' => 'help', 'value' => 'homeDrive' )); - $return[] = array ( 0 => array ( 'kind' => 'text', 'text' => _('Home path') ), - 1 => array ( 'kind' => 'input', 'type' => 'text', 'name' => 'smbHome', 'size' => '20', 'maxlength' => '255', 'value' => $this->attributes['smbHome'][0]), - 2 => array ( 'kind' => 'help', 'value' => 'smbHome' )); - $return[] = array ( 0 => array ( 'kind' => 'text', 'text' => _('Profile path') ), - 1 => array ( 'kind' => 'input', 'type' => 'text', 'name' => 'profilePath', 'size' => '20', 'maxlength' => '255', 'value' => $this->attributes['profilePath'][0]), - 2 => array ( 'kind' => 'help', 'value' => 'profilePath' )); - $return[] = array ( 0 => array ( 'kind' => 'text', 'text' => _('Logon script') ), - 1 => array ( 'kind' => 'input', 'type' => 'text', 'name' => 'scriptPath', 'size' => '20', 'maxlength' => '255', 'value' => $this->attributes['scriptPath'][0]), - 2 => array ( 'kind' => 'help', 'value' => 'scriptPath' )); - $return[] = array ( 0 => array ( 'kind' => 'text', 'text' => _('Samba workstations') ), - 1 => array ( 'kind' => 'input', 'type' => 'submit', 'name' => 'userWorkstations', 'value' => _('Edit workstations')), - 2 => array ( 'kind' => 'help', 'value' => 'userWorkstations' )); - - $names = array_keys($this->rids); - $options = array(); - $selected = array(); - $wrid = false; - for ($i=0; $iattributes['primaryGroupID'][0] == $this->rids[$names[$i]]) { - $selected[] = $names[$i]; - $wrid=true; - } - else $options[] = $names[$i]; - } - if ($wrid) $options[] = $_SESSION['cache']->getgrnam($_SESSION[$this->base]->module['posixAccount']->attributes['gidNumber'][0]); - else $selected[] = $_SESSION['cache']->getgrnam($_SESSION[$this->base]->module['posixAccount']->attributes['gidNumber'][0]); - $return[] = array ( 0 => array ( 'kind' => 'text', 'text' => _('Windows group') ), - 1 => array ( 'kind' => 'select', 'name' => 'primaryGroupID', 'options' => $options, 'options_selected' => $selected), - 2 => array ( 'kind' => 'help', 'value' => 'primaryGroupID' )); - $options = array(); - $selected = array(); - $wrid = false; - for ($i=0; $iattributes['rid'][0] == $this->rids[$names[$i]]) { - $selected[] = $names[$i]; - $wrid=true; - } - else $options[] = $names[$i]; - } - if ($wrid) $options[] = "-"; - else $selected[] = "-"; - $return[] = array ( 0 => array ( 'kind' => 'text', 'text' => _('Special user') ), - 1 => array ( 'kind' => 'select', 'name' => 'rid', 'options' => $options, 'options_selected' => $selected), - 2 => array ( 'kind' => 'help', 'value' => 'rid' )); - } - $return[] = array ( 0 => array ( 'kind' => 'text', 'text' => _('Domain') ), - 1 => array ( 'kind' => 'input', 'type' => 'text', 'name' => 'domain', 'size' => '20', 'maxlength' => '255', 'value' => $this->attributes['domain'][0]), - 2 => array ( 'kind' => 'help', 'value' => 'domain' )); - if ($_SESSION[$this->base]->type=='host') { - $return[] = array ( 0 => array ( 'kind' => 'input', 'name' => 'acctFlagsW', 'type' => 'hidden', 'value' => 'true' )); - $return[] = array ( 0 => array ( 'kind' => 'text', 'text' => _('Reset password') ), - 1 => array ( 'kind' => 'input', 'type' => 'submit', 'name' => 'ResetSambaPassword', 'value' => _('Submit')), - 2 => array ( 'kind' => 'help', 'value' => 'ResetSambaPassword' )); - } - return $return; - } - - function display_html_delete(&$post) { - return 0; - } - - /* This function will create the html-page - * to show a page with all attributes. - * It will output a complete html-table - */ - function display_html_userWorkstations(&$post) { - if ($_SESSION[$this->base]->type=='user') { - // Get list of all hosts. - $result = $_SESSION['cache']->get_cache('uid', 'sambaAccount', 'host'); - if (is_array($result)) { - foreach ($result as $host) $availableUserWorkstations[] = str_replace("$", '', $host[0]); - sort($availableUserWorkstations, SORT_STRING); - $result = str_replace(' ', '', $this->attributes['userWorkstations'][0]); - $userWorkstations = explode (',', $result); - $availableUserWorkstations = array_delete($userWorkstations, $availableUserWorkstations); - } - - $return[] = array ( 0 => array ( 'kind' => 'fieldset', 'legend' => _("Allowed workstations"), 'value' => - array ( 0 => array ( 0 => array ('kind' => 'fieldset', 'td' => array ('valign' => 'top'), 'legend' => _("Allowed workstations"), 'value' => - array ( 0 => array ( 0 => array ( 'kind' => 'select', 'name' => 'userWorkstations[]', 'size' => '15', 'multiple', 'options' => $userWorkstations)))), - 1 => array ( 'kind' => 'table', 'value' => array ( 0 => array ( 0 => array ( 'kind' => 'input', 'type' => 'submit', 'name' => 'userWorkstations_add', - 'value' => '<=')), 1 => array ( 0 => array ( 'kind' => 'input', 'type' => 'submit', 'name' => 'userWorkstations_remove', 'value' => '=>' )), - 2 => array ( 0 => array ( 'kind' => 'help', 'value' => 'userWorkstations' )))), - 2 => array ('kind' => 'fieldset', 'td' => array ('valign' => 'top'), 'legend' => _("Available workstations"), 'value' => - array ( 0 => array ( 0 => array ( 'kind' => 'select', 'name' => 'availableUserWorkstations[]', 'size' => '15', 'multiple', 'options' => $availableUserWorkstations)))) - )))); - - $return[] = array ( 0 => array ( 'kind' => 'input', 'type' => 'submit', 'value' => _('Back') ), - 1 => array ( 'kind' => 'text'), - 2 => array ('kind' => 'text')); - } - - return $return; - } - - /* - * (non-PHPDoc) - * @see baseModule#get_pdfEntries - */ - function get_pdfEntries($account_type = "user") { - return array( 'sambaAccount_displayName' => array('' . _('Display name') . 'attributes['displayName'][0] . ''), - 'sambaAccount_smbHome' => array('' . _('Home path') . '' . $this->attributes['smbHome'][0] . ''), - 'sambaAccount_homeDrive' => array('' . _('Home drive') . '' . $this->attributes['homePath'][0] . ''), - 'sambaAccount_scriptPath' => array('' . _('Logon script') . '' . $this->attributes['scriptPath'][0] . ''), - 'sambaAccount_profilePath' => array('' . _('Profile path') . '' . $this->attributes['profilePath'][0] . ''), - 'sambaAccount_userWorkstations' => array('' . _('Samba workstations') . '' . $this->attributes['userWorkstations'][0] . ''), - 'sambaAccount_domain' => array('' . _('Domain') . '' . $this->attributes['domain'][0] . ''), - 'sambaAccount_description' => array('' . _('Description') . '' . $this->attributes['description'][0] . '')); - } - - /** - * In this function the LDAP account is built up. - * - * @param array $rawAccounts list of hash arrays (name => value) from user input - * @param array $partialAccounts list of hash arrays (name => value) which are later added to LDAP - * @param array $ids list of IDs for column position (e.g. "posixAccount_uid" => 5) - * @return array list of error messages if any - */ - function build_uploadAccounts($rawAccounts, $ids, &$partialAccounts) { - $triggered_messages = array(); - if ($this->get_scope() == 'user') { - for ($i = 0; $i < sizeof($rawAccounts); $i++) { - if (!in_array("sambaAccount", $partialAccounts[$i]['objectClass'])) $partialAccounts[$i]['objectClass'][] = "sambaAccount"; - // displayName - if ($rawAccounts[$i][$ids['sambaAccount_displayName']] != "") { - if (get_preg($rawAccounts[$i][$ids['sambaAccount_displayName']], 'realname')) { - $partialAccounts[$i]['displayName'] = $rawAccounts[$i][$ids['sambaAccount_displayName']]; - } - else { - $errMsg = $this->messages['displayName'][0]; - array_push($errMsg, array($i)); - $triggered_messages[] = $errMsg; - } - } - // password - if (!get_preg($rawAccounts[$i][$ids['sambaAccount_password']], 'password')) { - $errMsg = $this->messages['lmPassword'][2]; - array_push($errMsg, array($i)); - $triggered_messages[] = $errMsg; - } - // use Unix password - if ($rawAccounts[$i][$ids['sambaAccount_pwdUnix']] == "") { // default: use Unix - $partialAccounts[$i]['lmPassword'] = lmPassword($partialAccounts[$i]['userPassword']); - $partialAccounts[$i]['ntPassword'] = ntPassword($partialAccounts[$i]['userPassword']); - } - elseif (in_array($rawAccounts[$i][$ids['sambaAccount_pwdUnix']], array('true', 'false'))) { - if ($rawAccounts[$i][$ids['sambaAccount_pwdUnix']] == 'true') { // use Unix - $partialAccounts[$i]['lmPassword'] = lmPassword($partialAccounts[$i]['userPassword']); - $partialAccounts[$i]['ntPassword'] = ntPassword($partialAccounts[$i]['userPassword']); - } - else { // use given password - $partialAccounts[$i]['lmPassword'] = lmPassword($rawAccounts[$i][$ids['sambaAccount_password']]); - $partialAccounts[$i]['ntPassword'] = ntPassword($rawAccounts[$i][$ids['sambaAccount_password']]); - } - } - else { - $errMsg = $this->messages['pwdUnix'][0]; - array_push($errMsg, array($i)); - $triggered_messages[] = $errMsg; - } - // use no password - if ($rawAccounts[$i][$ids['sambaAccount_noPassword']] != "") { - if (in_array($rawAccounts[$i][$ids['sambaAccount_noPassword']], array('true', 'false'))) { - if ($rawAccounts[$i][$ids['sambaAccount_noPassword']] == 'true') { - $partialAccounts[$i]['lmPassword'] = 'NO PASSWORD*****'; - $partialAccounts[$i]['ntPassword'] = 'NO PASSWORD*****'; - } - } - else { - $errMsg = $this->messages['noPassword'][0]; - array_push($errMsg, array($i)); - $triggered_messages[] = $errMsg; - } - } - // account flags - $flag_expire = false; - $flag_deactivated = false; - // password does not expire - if ($rawAccounts[$i][$ids['sambaAccount_noExpire']] != "") { - if (in_array($rawAccounts[$i][$ids['sambaAccount_noExpire']], array('true', 'false'))) { - if ($rawAccounts[$i][$ids['sambaAccount_noExpire']] == 'false') { - $flag_expire = true; - } - } - else { - $errMsg = $this->messages['noExpire'][0]; - array_push($errMsg, array($i)); - $triggered_messages[] = $errMsg; - } - } - // account is deactivated - if ($rawAccounts[$i][$ids['sambaAccount_deactivated']] != "") { - if (in_array($rawAccounts[$i][$ids['sambaAccount_deactivated']], array('true', 'false'))) { - if ($rawAccounts[$i][$ids['sambaAccount_deactivated']] == 'true') { - $flag_deactivated = true; - } - } - else { - $errMsg = $this->messages['deactivated'][0]; - array_push($errMsg, array($i)); - $triggered_messages[] = $errMsg; - } - } - // set flags - $flags = "["; - if ($flag_deactivated) $flags = $flags . "D"; - if (!$flag_expire) $flags = $flags . "X"; - $flags = $flags . "U"; - // Expand string to fixed length - $flags = str_pad($flags, 12); - // End character - $flags = $flags . "]"; - $partialAccounts[$i]['acctFlags'] = $flags; - // passsword can be changed - if ($rawAccounts[$i][$ids['sambaAccount_pwdCanChange']] != "") { - if (get_preg($rawAccounts[$i][$ids['sambaAccount_pwdCanChange']], 'date')) { - $parts = explode("-", $rawAccounts[$i][$ids['sambaAccount_pwdCanChange']]); - $time = mktime(0, 0, 0, $parts[1], $parts[0], $parts[2]); - $partialAccounts[$i]['pwdCanChange'] = $time; - } - else { - $errMsg = $this->messages['pwdCanChange'][0]; - array_push($errMsg, array($i)); - $triggered_messages[] = $errMsg; - } - } - // passsword must be changed - if ($rawAccounts[$i][$ids['sambaAccount_pwdMustChange']] != "") { - if (get_preg($rawAccounts[$i][$ids['sambaAccount_pwdMustChange']], 'date')) { - $parts = explode("-", $rawAccounts[$i][$ids['sambaAccount_pwdMustChange']]); - $time = mktime(0, 0, 0, $parts[1], $parts[0], $parts[2]); - $partialAccounts[$i]['pwdMustChange'] = $time; - } - else { - $errMsg = $this->messages['pwdMustChange'][0]; - array_push($errMsg, array($i)); - $triggered_messages[] = $errMsg; - } - } - // home drive - if ($rawAccounts[$i][$ids['sambaAccount_homeDrive']] != "") { - if (eregi("[d-z]:", $rawAccounts[$i][$ids['sambaAccount_homeDrive']])) { - $partialAccounts[$i]['homeDrive'] = $rawAccounts[$i][$ids['sambaAccount_homeDrive']]; - } - else { - $errMsg = $this->messages['homeDrive'][0]; - array_push($errMsg, array($i)); - $triggered_messages[] = $errMsg; - } - } - // home path - if ($rawAccounts[$i][$ids['sambaAccount_homePath']] != "") { - if (get_preg($rawAccounts[$i][$ids['sambaAccount_homePath']], 'UNC')) { - $partialAccounts[$i]['smbHome'] = $rawAccounts[$i][$ids['sambaAccount_homePath']]; - } - else { - $errMsg = $this->messages['homePath'][2]; - array_push($errMsg, array($i)); - $triggered_messages[] = $errMsg; - } - } - // profile path - if ($rawAccounts[$i][$ids['sambaAccount_profilePath']] != "") { - if (get_preg($rawAccounts[$i][$ids['sambaAccount_profilePath']], 'UNC')) { - $partialAccounts[$i]['profilePath'] = $rawAccounts[$i][$ids['sambaAccount_profilePath']]; - } - else { - $errMsg = $this->messages['profilePath'][2]; - array_push($errMsg, array($i)); - $triggered_messages[] = $errMsg; - } - } - // logon script - if ($rawAccounts[$i][$ids['sambaAccount_logonScript']] != "") { - if (get_preg($rawAccounts[$i][$ids['sambaAccount_logonScript']], 'logonscript')) { - $partialAccounts[$i]['scriptPath'] = $rawAccounts[$i][$ids['sambaAccount_logonScript']]; - } - else { - $errMsg = $this->messages['logonScript'][2]; - array_push($errMsg, array($i)); - $triggered_messages[] = $errMsg; - } - } - // workstations - if ($rawAccounts[$i][$ids['sambaAccount_workstations']] != "") { - if (get_preg($rawAccounts[$i][$ids['sambaAccount_workstations']], 'workstations')) { - $partialAccounts[$i]['userWorkstations'] = $rawAccounts[$i][$ids['sambaAccount_workstations']]; - } - else { - $errMsg = $this->messages['workstations'][1]; - array_push($errMsg, array($i)); - $triggered_messages[] = $errMsg; - } - } - // group - if ($rawAccounts[$i][$ids['sambaAccount_group']] != "") { - if (get_preg($rawAccounts[$i][$ids['sambaAccount_group']], 'digit')) { - $partialAccounts[$i]['primaryGroupID'] = $rawAccounts[$i][$ids['sambaAccount_group']]; - } - else { - $errMsg = $this->messages['group'][0]; - array_push($errMsg, array($i)); - $triggered_messages[] = $errMsg; - } - } - else { - // default GID*2 + 1001 - $partialAccounts[$i]['primaryGroupID'] = $partialAccounts[$i]['gidNumber']*2 + 1001; - } - // domain - if ($rawAccounts[$i][$ids['sambaAccount_domain']] != "") { - if (get_preg($rawAccounts[$i][$ids['sambaAccount_domain']], 'domainname')) { - $partialAccounts[$i]['domain'] = $rawAccounts[$i][$ids['sambaAccount_domain']]; - } - else { - $errMsg = $this->messages['domain'][1]; - array_push($errMsg, array($i)); - $triggered_messages[] = $errMsg; - } - } - // special user - if ($rawAccounts[$i][$ids['sambaAccount_specialUser']] != "") { - if (in_array($rawAccounts[$i][$ids['sambaAccount_specialUser']], array_keys($this->rids))) { - $partialAccounts[$i]['rid'] = $this->rids[$rawAccounts[$i][$ids['sambaAccount_specialUser']]]; - } - else { - $errMsg = $this->messages['specialUser'][0]; - array_push($errMsg, array($i)); - $triggered_messages[] = $errMsg; - } - } - else { - // default RID uid*2 + 1000 - $partialAccounts[$i]['rid'] = $partialAccounts[$i]['uidNumber']*2 + 1000; - } - } - } - else { // hosts - for ($i = 0; $i < sizeof($rawAccounts); $i++) { - if (!in_array("sambaAccount", $partialAccounts[$i]['objectClass'])) $partialAccounts[$i]['objectClass'][] = "sambaAccount"; - // domain - if ($rawAccounts[$i][$ids['sambaAccount_domain']] != "") { - if (get_preg($rawAccounts[$i][$ids['sambaAccount_domain']], 'domainname')) { - $partialAccounts[$i]['domain'] = $rawAccounts[$i][$ids['sambaAccount_domain']]; - } - else { - $errMsg = $this->messages['domain'][1]; - array_push($errMsg, array($i)); - $triggered_messages[] = $errMsg; - } - } - // RID (RID uid*2 + 1000) - $partialAccounts[$i]['rid'] = $partialAccounts[$i]['uidNumber']*2 + 1000; - // passwords ( = host name) - $partialAccounts[$i]['lmPassword'] = lmPassword(substr($partialAccounts[$i]['uid'], 0, sizeof($partialAccounts[$i]['uid']) - 1)); - $partialAccounts[$i]['ntPassword'] = ntPassword(substr($partialAccounts[$i]['uid'], 0, sizeof($partialAccounts[$i]['uid']) - 1)); - // flags - $partialAccounts[$i]['acctFlags'] = "[W ]"; - } - } - return $triggered_messages; - } - - /** - * Loads the values of an account profile into internal variables. - * - * @param array $profile hash array with profile values (identifier => value) - */ - function load_profile($profile) { - // profile mappings in meta data - parent::load_profile($profile); - // special profile options - // use Unix password - if ($profile['sambaAccount_useunixpwd'][0] == "true") { - $this->useunixpwd = true; - } - elseif ($profile['sambaAccount_useunixpwd'][0] == "false") { - $this->useunixpwd = false; - } - // use no password - if ($profile['sambaAccount_acctFlagsN'][0] == "true") { - $this->nopwd = true; - } - elseif ($profile['sambaAccount_acctFlagsN'][0] == "false") { - $this->nopwd = false; - } - // password expiration - if ($profile['sambaAccount_acctFlagsX'][0] == "true") { - $this->noexpire = true; - } - elseif ($profile['sambaAccount_acctFlagsX'][0] == "false") { - $this->noexpire = false; - } - // use no password - if ($profile['sambaAccount_acctFlagsD'][0] == "true") { - $this->deactivated = true; - } - elseif ($profile['sambaAccount_acctFlagsD'][0] == "false") { - $this->deactivated = false; - } - } - - -} - -?> diff --git a/lam/lib/modules/sambaGroupMapping.inc b/lam/lib/modules/sambaGroupMapping.inc deleted file mode 100644 index baec7eea..00000000 --- a/lam/lib/modules/sambaGroupMapping.inc +++ /dev/null @@ -1,472 +0,0 @@ -rids = array( - _('Domain Admins') => 512, - _('Domain Users') => 513, - _('Domain Guests') => 514, - _('Domain Computers') => 515, - _('Domain Controllers') => 516, - _('Domain Certificate Admins') => 517, - _('Domain Schema Admins') => 518, - _('Domain Enterprise Admins') => 519, - _('Domain Policy Admins') => 520); - - $this->sambaGroupTypes = array ( - _('User') => 1, - _('Domain Group') => 2, - _('Domain') => 3, - _('Local Group') => 4, - _('Builtin Group') => 5, - _('Deleted Account') => 6, - _('Invalid Account') => 7 - ); - // call parent constructor - parent::baseModule($scope); - } - - /** - * In this function the LDAP account is built up. - * - * @param array $rawAccounts list of hash arrays (name => value) from user input - * @param array $partialAccounts list of hash arrays (name => value) which are later added to LDAP - * @param array $ids list of IDs for column position (e.g. "posixAccount_uid" => 5) - * @return array list of error messages if any - */ - function build_uploadAccounts($rawAccounts, $ids, &$partialAccounts) { - // search existing Samba 3 domains - $domains = search_domains($_SESSION['config']->get_Suffix('domain')); - $nameToSID = array(); - // get domain SIDs - for ($i = 0; $i < sizeof($domains); $i++) { - $nameToSID[$domains[$i]->name] = $domains[$i]->SID; - } - // get domain RID bases - $nameToRIDBase = array(); - for ($i = 0; $i < sizeof($domains); $i++) { - $nameToRIDBase[$domains[$i]->name] = $domains[$i]->RIDbase; - } - $triggered_messages = array(); - for ($i = 0; $i < sizeof($rawAccounts); $i++) { - // group type - if ($rawAccounts[$i][$ids['sambaGroupMapping_groupType']] != "") { - if (in_array($rawAccounts[$i][$ids['sambaGroupMapping_groupType']], $this->sambaGroupTypes)) { // number given - $partialAccounts[$i]['sambaGroupType'] = $rawAccounts[$i][$ids['sambaGroupMapping_groupType']]; - } - elseif (in_array($rawAccounts[$i][$ids['sambaGroupMapping_groupType']], array_keys($this->sambaGroupTypes))) { // description given - $partialAccounts[$i]['sambaGroupType'] = $this->sambaGroupTypes[$rawAccounts[$i][$ids['sambaGroupMapping_groupType']]]; - } - else { // invalid type - $errMsg = $this->messages['groupType'][0]; - array_push($errMsg, array($i, implode(", ", array_keys($this->sambaGroupTypes) + $this->sambaGroupTypes))); - $triggered_messages[] = $errMsg; - } - } - else { - $partialAccounts[$i]['sambaGroupType'] = "2"; // 2 is the default (domain group) - } - if (!in_array("sambaGroupMapping", $partialAccounts[$i]['objectClass'])) $partialAccounts[$i]['objectClass'][] = "sambaGroupMapping"; - // SID - $domSID = $nameToSID[$rawAccounts[$i][$ids['sambaGroupMapping_domain']]]; - if (!isset($domSID)) { - $errMsg = $this->messages['sambaSID'][1]; - array_push($errMsg, $rawAccounts[$i][$ids['sambaGroupMapping_domain']]); - array_push($errMsg, $i); - $triggered_messages[] = $errMsg; - } - else { - // RID - $rid = $rawAccounts[$i][$ids['sambaGroupMapping_rid']]; - if (isset($this->rids[$rid])) $rid = $this->rids[$rid]; - // check if RID has to be calculated - if (($rid == "") || (!isset($rid))) { - $ridBase = $nameToRIDBase[$rawAccounts[$i][$ids['sambaGroupMapping_domain']]]; - $partialAccounts[$i]['sambaSID'] = $domSID . "-" . (($partialAccounts[$i]['gidNumber'] * 2) + $ridBase + 1); - } - elseif (get_preg($rid, 'digit')) { - $partialAccounts[$i]['sambaSID'] = $domSID . "-" . $rid; - } - } - // display name (UTF-8, no regex check needed) - if ($rawAccounts[$i][$ids['sambaGroupMapping_name']] == "") { - $partialAccounts[$i]['displayName'] = $partialAccounts[$i]['cn']; - } - else { - $partialAccounts[$i]['displayName'] = $rawAccounts[$i][$ids['sambaGroupMapping_name']]; - } - } - return $triggered_messages; - } - - function delete_attributes($post) { - return 0; - } - - - /* This function will create the html-page - * to show a page with all attributes. - * It will output a complete html-table - */ - function display_html_attributes(&$post) { - // Get Domain SID from name - $sambaDomains = search_domains($_SESSION['config']->get_Suffix('domain')); - // Get Domain-SID from group SID - if ($this->attributes['sambaSID'][0]!='') - $domainSID = substr($this->attributes['sambaSID'][0], 0, strrpos($this->attributes['sambaSID'][0], "-")); - for ($i=0; $iname; - if ($domainSID==$sambaDomains[$i]->SID) { - $SID = $sambaDomains[$i]->SID; - $sel_domain = $sambaDomains[$i]->name; - } - } - $return[] = array ( 0 => array ( 'kind' => 'text', 'text' => _('Display name') ), - 1 => array ( 'kind' => 'input', 'name' => 'displayName', 'type' => 'text', 'size' => '30', 'maxlength' => '50', 'value' => $this->attributes['displayName'][0]), - 2 => array ( 'kind' => 'help', 'value' => 'displayName' )); - - $names = array_keys($this->rids); - $wrid=false; - for ($i=0; $iattributes['sambaSID'][0]==$SID."-".$this->rids[$names[$i]]) { - $selected[] = $names[$i]; - $wrid=true; - } - else $options[] = $names[$i]; - } - if ($wrid) $options[] = $_SESSION[$this->base]->module['posixGroup']->attributes['cn'][0]; - else $selected[] = $_SESSION[$this->base]->module['posixGroup']->attributes['cn'][0]; - $return[] = array ( 0 => array ( 'kind' => 'text', 'text' => _('Windows group') ), - 1 => array ( 'kind' => 'select', 'name' => 'sambaSID', 'options' => $options, 'options_selected' => $selected), - 2 => array ( 'kind' => 'help', 'value' => 'sambaSID' )); - - $names = array_keys($this->sambaGroupTypes); - $selected = array( _('Domain Group') ); - for ($i=0; $iattributes['sambaGroupType'][0]==$this->sambaGroupTypes[$names[$i]]) - $selected = array( $names[$i] ); - } - $return[] = array ( 0 => array ( 'kind' => 'text', 'text' => _('Group type') ), - 1 => array ( 'kind' => 'select', 'name' => 'sambaGroupType', 'options' => $names , 'options_selected' => $selected ), - 2 => array ( 'kind' => 'help', 'value' => 'sambaDomainName' )); - $return[] = array ( 0 => array ( 'kind' => 'text', 'text' => _('Domain') ), - 1 => array ( 'kind' => 'select', 'name' => 'sambaDomainName', 'options' => $sambaDomainNames, 'options_selected' => array ( $sel_domain ) ), - 2 => array ( 'kind' => 'help', 'value' => 'sambaDomainName' )); - - return $return; - } - - function display_html_delete(&$post) { - return 0; - } - - - /* This function returns all ldap attributes - * which are part of sambaGroupMapping and returns - * also their values. - */ - function get_attributes() { - return $this->attributes; - } - - - /** - * Returns meta data that is interpreted by parent class - * - * @return array array with meta data - */ - function get_metaData() { - $return = array(); - // manages group accounts - $return["account_types"] = array("group"); - // alias name - $return["alias"] = _('Samba 3'); - // module dependencies - $return['dependencies'] = array('depends' => array('posixGroup'), 'conflicts' => array()); - // available PDF fields - $return['PDF_fields'] = array( - 'gidNumber', - 'sambaSID', - 'displayName', - 'sambaGroupType', - 'description' - ); - // upload fields - // search existing Samba 3 domains - if ($_SESSION['loggedIn']) { - $domains = search_domains($_SESSION['config']->get_Suffix('domain')); - $domainNames = array(); - for ($i = 0; $i < sizeof($domains); $i++) $domainNames[] = $domains[$i]->name; - $return['upload_columns'] = array( - array( - 'name' => 'sambaGroupMapping_domain', - 'description' => _('Samba domain name'), - 'help' => 'sambaDomainName', - 'example' => $domainNames[0], - 'values' => implode(", ", $domainNames), - 'required' => true - ), - array( - 'name' => 'sambaGroupMapping_name', - 'description' => _('Samba display name'), - 'help' => 'displayName', - 'example' => _('Domain administrators') - ), - array( - 'name' => 'sambaGroupMapping_rid', - 'description' => _('Samba RID number'), - 'help' => 'rid', - 'example' => _('Domain Admins') - ), - array( - 'name' => 'sambaGroupMapping_groupType', - 'description' => _('Samba group type'), - 'help' => 'type', - 'values' => implode(", ", array_keys($this->sambaGroupTypes) + $this->sambaGroupTypes), - 'example' => '2' - ) - ); - $return['upload_preDepends'] = array('posixGroup'); - } - // help Entries - $return['help'] = array( - 'displayName' => array( - "Headline" => _("Display name"), - "Text" => _("This is the group name which will be shown in Windows.") - ), - 'sambaSID' => array( - "Headline" => _("Windows group name"), - "Text" => _("If you want to use a well known RID you can selcet a well known group.") - ), - 'rid' => array( - "Headline" => _("Samba RID number"), - "Text" => _("This is the relative ID (similar to UID on Unix) for Windows accounts. If you leave this empty LAM will calculate the RID from the UID. This can be either a number or the name of a special group:") . ' ' . implode(", ", array_keys($this->rids)) - ), - 'sambaDomainName' => array( - "Headline" => _("Domain"), - "Text" => _("Windows-Domain name of group."). ' '. _("Can be left empty.") - ), - 'type' => array( - "Headline" => _("Samba group type"), - "Text" => _("Windows group type.") - ) - ); - - return $return; - } - - - /* - * (non-PHPDoc) - * @see baseModule#get_pdfEntries - */ - function get_pdfEntries($account_type = "User") { - return array( 'sambaGroupMapping_gidNumber' => array('' . _('GID number') . '' . $this->attributes['gidNumber'][0] . ''), - 'sambaGroupMapping_sambaSID' => array('' . _('Windows group') . '' . $this->attributes['sambaSID'][0] . ''), - 'sambaGroupMapping_displayName' => array('' . _('Display name') . '' . $this->attributes['displayName'][0] . ''), - 'sambaGroupMapping_sambaGroupType' => array('' . _('Samba group type') . '' . $this->attributes['sambaGroupType'][0] . ''), - 'sambaGroupMapping_description' => array('' . _('Description') . '' . $this->attributes['description'][0] . '')); - } - - - /** - * Returns a list of elements for the account profiles. - * - * @return profile elements - */ - function get_profileOptions() { - $return = array(); - // get list of domains - $sambaDomains = search_domains($_SESSION['config']->get_Suffix('domain')); - $sambaDomainNames = array(); - for ($i = 0; $i < count($sambaDomains); $i++ ) { - // extract names - $sambaDomainNames[] = $sambaDomains[$i]->name; - } - // domain - $return[] = array ( - 0 => array('kind' => 'text', 'text' => _('Domain')), - 1 => array('kind' => 'select', 'name' => 'sambaGroupMapping_sambaDomainName', 'options' => $sambaDomainNames, 'options_selected' => array ()), - 2 => array('kind' => 'help', 'value' => 'sambaDomainName' )); - return $return; - } - - - /** - * Loads the values of an account profile into internal variables. - * - * @param array $profile hash array with profile values (identifier => value) - */ - function load_profile($profile) { - if (isset($profile['sambaGroupMapping_sambaDomainName'][0])) { - // get list of domains - $sambaDomains = search_domains($_SESSION['config']->get_Suffix('domain')); - for ($i = 0; $i < sizeof($sambaDomains); $i++) { - if ($sambaDomains[$i]->name == $profile['sambaGroupMapping_sambaDomainName'][0]) { - $this->attributes['sambaSID'][0] = $sambaDomains[$i]->SID . "-0"; - break; - } - } - } - } - - /** this functin fills the error message array with messages - **/ - function load_Messages() { - $this->messages['sambaSID'][0] = array('ERROR', _('There can be only one group of this type.')); // third parameter must be set dynamically - $this->messages['sambaSID'][1] = array('ERROR', _("Account %s:") . " (sambaGroupMapping_domain): " . _("LAM was unable to find a Samba 3 domain with this name!")); // third parameter must be set dynamically - $this->messages['groupType'][0] = array('ERROR', _("Account %s:") . " (sambaGroupMapping_type): " . _("This is not a valid Samba 3 group type!"), _("Possible values") . ": %s"); - } - - - /* This functions return true - * if all needed settings are done - */ - function module_complete() { - if (!$this->module_ready()) return false; - if ($this->attributes['sambaSID'][0] == '') return false; - if ($this->attributes['sambaGroupType'][0] == '') return false; - return true; - } - - - function module_ready() { - if ($_SESSION[$this->base]->module['posixGroup']->attributes['gidNumber'][0]=='') return false; - return true; - } - - - /* This function returns a list of all html-pages in module - * This is usefull for mass upload and pdf-files - * because lam can walk trough all pages itself and do some - * error checkings - */ - function pages() { - return array('attributes'); - } - - - /* Write variables into object and do some regexp checks - */ - function process_attributes(&$post) { - // Save attributes - $this->attributes['displayName'][0] = $post['displayName']; - $this->attributes['sambaGroupType'][0] = $this->sambaGroupTypes[$post['sambaGroupType']]; - - // Get Domain SID from name - $sambaDomains = search_domains($_SESSION['config']->get_Suffix('domain')); - for ($i=0; $iname) { - $SID = $sambaDomains[$i]->SID; - $RIDbase = $sambaDomain[$i]->RIDbase; - } - // Load attributes - $this->attributes['displayName'][0] = $post['displayName']; - $rids = array_keys($this->rids); - $wrid = false; - for ($i=0; $iattributes['sambaSID'][0] = $SID."-".$this->rids[$rids[$i]]; - // Do a check if special group is unique - if ($_SESSION['cache']->in_cache($SID."-".$this->rids[$rids[$i]], 'sambaSID', 'group')) { - $message = $this->messages['sambaSID'][0]; - $message[] = $rids[$i]; - $triggered_messages['sambaSID'][] = $message; - } - } - } - if (!$wrid) $this->attributes['sambaSID'][0] = $SID . "-" . ($_SESSION[$this->base]->module['posixGroup']->attributes['gidNumber'][0]*2+$RIDbase+1); - - // Return error-messages - if (count($triggered_messages)!=0) { - $this->triggered_messages = $triggered_messages; - return $triggered_messages; - } - else $this->triggered_messages = array(); - return 0; - } - - - /* This function returns an array with 3 entries: - * array( DN1 ('add' => array($attr), 'remove' => array($attr), 'modify' => array($attr)), DN2 .... ) - * DN is the DN to change. It may be possible to change several DNs, - * e.g. create a new user and add him to some groups via attribute memberUid - * add are attributes which have to be added to ldap entry - * remove are attributes which have to be removed from ldap entry - * modify are attributes which have to been modified in ldap entry - */ - function save_attributes() { - // Get Domain SID from name - $sambaDomains = search_domains($_SESSION['config']->get_Suffix('domain')); - // Get Domain-SID from group SID - $domainSID = substr($this->attributes['sambaSID'][0], 0, strrpos($this->attributes['sambaSID'][0], "-")); - for ($i=0; $iSID) - $SID = $sambaDomains[$i]->SID; - $names = array_keys($this->rids); - $wrid=false; - for ($i=0; $iattributes['sambaSID'][0]==$SID."-".$this->rids[$names[$i]]) { - $wrid=true; - } - if (!$wrid) $this->attributes['sambaSID'][0] == $SID."-".($_SESSION[$this->base]->module['posixGroup']->attributes['gidNumber'][0]*2+1+$RIDbase); - $return = $_SESSION[$this->base]->save_module_attributes($this->attributes, $this->orig); - - return $return; - } - -} - -?> diff --git a/lam/lib/modules/sambaSamAccount.inc b/lam/lib/modules/sambaSamAccount.inc deleted file mode 100644 index f5cc681d..00000000 --- a/lam/lib/modules/sambaSamAccount.inc +++ /dev/null @@ -1,1433 +0,0 @@ -rids = array( - _('Domain Admins') => 512, _('Domain Users') => 513, _('Domain Guests') => 514, - _('Domain Computers') => 515, _('Domain Controllers') => 516, _('Domain Certificate Admins') => 517, - _('Domain Schema Admins') => 518, _('Domain Enterprise Admins') => 519, _('Domain Policy Admins') => 520); - // call parent constructor - parent::baseModule($scope); - } - - /** this functin fills the error message array with messages - **/ - function load_Messages() { - // error messages for input checks - $this->messages['homePath'][0] = array('ERROR', _('Home path'), _('Home path is invalid.')); - $this->messages['homePath'][1] = array('INFO', _('Home path'), _('Inserted user or group name in home path.')); - $this->messages['homePath'][2] = array('ERROR', _('Account %s:') . ' sambaSamAccount_homePath', _('Home path is invalid.')); - $this->messages['profilePath'][0] = array('ERROR', _('Profile path'), _('Profile path is invalid!')); - $this->messages['profilePath'][1] = array('INFO', _('Profile path'), _('Inserted user or group name in profile path.')); - $this->messages['profilePath'][2] = array('ERROR', _('Account %s:') . ' sambaSamAccount_profilePath', _('Profile path is invalid!')); - $this->messages['logonScript'][0] = array('ERROR', _('Script path'), _('Script path is invalid!')); - $this->messages['logonScript'][1] = array('INFO', _('Script path'), _('Inserted user or group name in script path.')); - $this->messages['logonScript'][2] = array('ERROR', _('Account %s:') . ' sambaSamAccount_logonScript', _('Logon script is invalid!')); - $this->messages['workstations'][0] = array('ERROR', _('Samba workstations'), _('Please enter a comma separated list of host names!')); - $this->messages['workstations'][1] = array('ERROR', _('Account %s:') . ' sambaSamAccount_workstations', _('Please enter a comma separated list of host names!')); - $this->messages['sambaLMPassword'][0] = array('ERROR', _('Password'), _('Please enter the same password in both password-fields.')); - $this->messages['sambaLMPassword'][1] = array('ERROR', _('Password'), _('Password contains invalid characters. Valid characters are: a-z, A-Z, 0-9 and #*,.;:_-+!$%&/|?{[()]}= !')); - $this->messages['sambaLMPassword'][2] = array('ERROR', _('Account %s:') . ' sambaSamAccount_password', _('Password contains invalid characters. Valid characters are: a-z, A-Z, 0-9 and #*,.;:_-+!$%&/|?{[()]}= !')); - $this->messages['rid'][0] = array('ERROR', _('Special user'), _('There can be only one administrator per domain.')); - $this->messages['rid'][1] = array('ERROR', _('Special user'), _('There can be only one guest per domain.')); - $this->messages['rid'][2] = array('ERROR', _('Account %s:') . ' sambaSamAccount_rid', _('Please enter a RID number or the name of a special account!')); - $this->messages['rid'][3] = array('ERROR', _('Account %s:') . ' sambaSamAccount_rid', _('This is not a valid RID number!')); - $this->messages['displayName'][0] = array('ERROR', _('Account %s:') . ' sambaSamAccount_displayName', _('Please enter a valid display name!')); - $this->messages['pwdUnix'][0] = array('ERROR', _('Account %s:') . ' sambaSamAccount_pwdUnix', _('This value can only be \"true\" or \"false\"!')); - $this->messages['noPassword'][0] = array('ERROR', _('Account %s:') . ' sambaSamAccount_noPassword', _('This value can only be \"true\" or \"false\"!')); - $this->messages['noExpire'][0] = array('ERROR', _('Account %s:') . ' sambaSamAccount_noExpire', _('This value can only be \"true\" or \"false\"!')); - $this->messages['deactivated'][0] = array('ERROR', _('Account %s:') . ' sambaSamAccount_deactivated', _('This value can only be \"true\" or \"false\"!')); - $this->messages['pwdCanChange'][0] = array('ERROR', _('Account %s:') . ' sambaSamAccount_pwdCanChange', _('Please enter a valid date in format DD-MM-YYYY.')); - $this->messages['pwdMustChange'][0] = array('ERROR', _('Account %s:') . ' sambaSamAccount_pwdMustChange', _('Please enter a valid date in format DD-MM-YYYY.')); - $this->messages['homeDrive'][0] = array('ERROR', _('Account %s:') . ' sambaSamAccount_homeDrive', _('Please enter a valid drive letter.')); - $this->messages['domain'][0] = array('ERROR', _('Account %s:') . ' sambaSamAccount_domain', _('LAM was unable to find a domain with this name!')); - $this->messages['logonHours'][0] = array('ERROR', _('Logon hours'), _('The format of the logon hours field is invalid!')); - $this->messages['logonHours'][1] = array('ERROR', _('Account %s:') . ' sambaSamAccount_logonHours', _('The format of the logon hours field is invalid!')); - $this->messages['group'][0] = array('ERROR', _('Account %s:') . ' sambaSamAccount_group', _('Please enter a valid group name!')); - } - - /** - * Returns meta data that is interpreted by parent class - * - * @return array array with meta data - */ - function get_metaData() { - $return = array(); - // manages user and host accounts - $return["account_types"] = array("user", "host"); - if ($this->get_scope() == "host") { - // LDAP filter - $return["ldap_filter"] = array('and' => '(uid=*$)', 'or' => "(objectClass=posixAccount)"); - } - // alias name - $return["alias"] = _('Samba 3'); - // RDN attribute - $return["RDN"] = array("sambaSID" => "low"); - // module dependencies - $return['dependencies'] = array('depends' => array('posixAccount'), 'conflicts' => array()); - // profile checks - $return['profile_checks']['sambaSamAccount_smbhome'] = array( - 'type' => 'ext_preg', - 'regex' => 'UNC', - 'error_message' => $this->messages['homePath'][0]); - $return['profile_checks']['sambaSamAccount_profilePath'] = array( - 'type' => 'ext_preg', - 'regex' => 'UNC', - 'error_message' => $this->messages['profilePath'][0]); - $return['profile_checks']['sambaSamAccount_logonScript'] = array( - 'type' => 'ext_preg', - 'regex' => 'logonscript', - 'error_message' => $this->messages['logonScript'][0]); - $return['profile_checks']['sambaSamAccount_userWorkstations'] = array( - 'type' => 'ext_preg', - 'regex' => 'unixhost', - 'error_message' => $this->messages['workstations'][0]); - $return['profile_checks']['sambaSamAccount_logonHours'] = array( - 'type' => 'ext_preg', - 'regex' => 'sambaLogonHours', - 'error_message' => $this->messages['logonHours'][0]); - // profile mappings - $return['profile_mappings'] = array( - 'sambaSamAccount_homeDrive' => 'sambaHomeDrive', - 'sambaSamAccount_smbhome' => 'sambaHomePath', - 'sambaSamAccount_profilePath' => 'sambaProfilePath', - 'sambaSamAccount_scriptPath' => 'sambaLogonScript', - 'sambaSamAccount_userWorkstations' => 'sambaUserWorkstations', - 'sambaSamAccount_sambaDomainName' => 'sambaDomainName', - 'sambaSamAccount_logonHours' => 'sambaLogonHours' - ); - // available PDF fields - $return['PDF_fields'] = array( - 'displayName', - 'uid', - 'sambaHomePath', - 'sambaHomeDrive', - 'sambaLogonScript', - 'sambaProfilePath', - 'sambaUserWorkstations', - 'sambaDomainName', - 'description', - 'sambaPrimaryGroupSID' - ); - // help Entries - $return['help'] = array ( - "displayName" => array( - "ext" => "FALSE", "Headline" => _("Display name"), - "Text" => _("This is the account's full name on Windows systems.")), - "password" => array( - "ext" => "FALSE", "Headline" => _("Samba password"), - "Text" => _("This is the account's Windows password.")), - "pwdUnix" => array( - "ext" => "FALSE", "Headline" => _("Use Unix password"), - "Text" => _("If checked Unix password will also be used as Samba password.")), - "pwdUnixUpload" => array( - "ext" => "FALSE", "Headline" => _("Use Unix password"), - "Text" => _("If set to \"true\" Unix password will also be used as Samba password.")), - "noPassword" => array( - "ext" => "FALSE", "Headline" => _("Use no password"), - "Text" => _("If checked no password will be used.")), - "noPasswordUpload" => array( - "ext" => "FALSE", "Headline" => _("Use no password"), - "Text" => _("If set to \"true\" no password will be used.")), - "noExpire" => array( - "ext" => "FALSE", "Headline" => _("Password does not expire"), - "Text" => _("If checked password does not expire. (Setting X-Flag)")), - "noExpireUpload" => array( - "ext" => "FALSE", "Headline" => _("Password does not expire"), - "Text" => _("If set to \"true\" password does not expire. (Setting X-Flag)")), - "deactivated" => array( - "ext" => "FALSE", "Headline" => _("Account is deactivated"), - "Text" => _("If checked account will be deactivated. (Setting D-Flag)")), - "deactivatedUpload" => array( - "ext" => "FALSE", "Headline" => _("Account is deactivated"), - "Text" => _("If set to \"true\" account will be deactivated. (Setting D-Flag)")), - "pwdCanChange" => array( - "ext" => "FALSE", "Headline" => _("User can change password"), - "Text" => _("Date after the user is able to change his password. Format: DD-MM-YYYY")), - "pwdMustChange" => array ("ext" => "FALSE", "Headline" => _("User must change password"), - "Text" => _("Date after the user must change his password. Format: DD-MM-YYYY")), - "homeDrive" => array( - "ext" => "FALSE", "Headline" => _("Home drive"), - "Text" => _("Drive letter assigned on windows workstations as homedirectory.")), - "homePath" => array( - "ext" => "FALSE", "Headline" => _("Home path"), - "Text" => _('UNC-path (\\\\server\\share) of homedirectory. $user and $group are replaced with user and group name.'). ' '. _("Can be left empty.")), - "profilePath" => array( - "ext" => "FALSE", "Headline" => _("Profile path"), - "Text" => _('Path of the user profile. Can be a local absolute path or a UNC-path (\\\\server\\share). $user and $group are replaced with user and group name.'). ' '. _("Can be left empty.")), - "scriptPath" => array( - "ext" => "FALSE", "Headline" => _("Logon script"), - "Text" => _('File name and path relative to netlogon-share which should be executed on logon. $user and $group are replaced with user and group name.'). ' '. _("Can be left empty.")), - "workstations" => array( - "ext" => "FALSE", "Headline" => _("Samba workstations"), - "Text" => _("Comma separated list of Samba workstations the user is allowed to login. Empty means every workstation."). ' '. _("Can be left empty.")), - "groupUpload" => array( - "ext" => "FALSE", "Headline" => _("Windows primary group SID"), - "Text" => _("This is the SID of the user's primary Windows group.")), - "ridUpload" => array( - "ext" => "FALSE", "Headline" => _("Samba RID"), - "Text" => _("This is the relative ID number for your Windows account. You can either enter a number or one of these special accounts: ") . - implode(", ", array_keys($this->rids)) . "

" . _("If you leave this empty LAM will use: uidNumber*2 + sambaAlgorithmicRidBase.")), - "ridUploadHost" => array( - "ext" => "FALSE", "Headline" => _("Samba RID"), - "Text" => _("This is the relative ID number for your host account. If you leave this empty LAM will use: uidNumber*2 + sambaAlgorithmicRidBase.")), - "domain" => array( - "ext" => "FALSE", "Headline" => _("Domain"), - "Text" => _("Windows domain name of account.")), - "logonHours" => array( - "ext" => "FALSE", "Headline" => _("Logon hours"), - "Text" => _("This option defines the allowed logon hours for this account.")), - "logonHoursUpload" => array( - "ext" => "FALSE", "Headline" => _("Logon hours"), - "Text" => _("This option defines the allowed logon hours for this account. The format is the same as for the LDAP attribute. The 24*7 hours are represented as 168 bit which are saved as 21 hex (21*8 = 168) values. The first bit represents Sunday 0:00 - 0:59 in GMT.")) - ); - // upload dependencies - $return['upload_preDepends'] = array('posixAccount', 'inetOrgPerson'); - // upload options - if ($this->get_scope() == "user") { - $return['upload_columns'] = array( - array( - 'name' => 'sambaSamAccount_domain', - 'description' => _('Domain'), - 'required' => true, - 'help' => 'domain', - 'example' => _('mydomain') - ), - array( - 'name' => 'sambaSamAccount_displayName', - 'description' => _('Display name'), - 'help' => 'displayName', - 'example' => _('Steve Miller') - ), - array( - 'name' => 'sambaSamAccount_password', - 'description' => _('Password'), - 'help' => 'password', - 'example' => _('secret') - ), - array( - 'name' => 'sambaSamAccount_pwdUnix', - 'description' => _('Use Unix password'), - 'help' => 'pwdUnixUpload', - 'default' => 'true', - 'values' => 'true, false', - 'example' => 'true' - ), - array( - 'name' => 'sambaSamAccount_noPassword', - 'description' => _('Use no password'), - 'help' => 'noPasswordUpload', - 'default' => 'false', - 'values' => 'true, false', - 'example' => 'false' - ), - array( - 'name' => 'sambaSamAccount_noExpire', - 'description' => _('Password does not expire'), - 'help' => 'noExpireUpload', - 'default' => 'true', - 'values' => 'true, false', - 'example' => 'true' - ), - array( - 'name' => 'sambaSamAccount_deactivated', - 'description' => _('Account is deactivated'), - 'help' => 'deactivatedUpload', - 'default' => 'false', - 'values' => 'true, false', - 'example' => 'false' - ), - array( - 'name' => 'sambaSamAccount_pwdCanChange', - 'description' => _('User can change password'), - 'help' => 'pwdCanChange', - 'default' => '31-12-2030', - 'example' => '15-11-2006' - ), - array( - 'name' => 'sambaSamAccount_pwdMustChange', - 'description' => _('User must change password'), - 'help' => 'pwdMustChange', - 'default' => '31-12-2030', - 'example' => '15-10-2006' - ), - array( - 'name' => 'sambaSamAccount_homeDrive', - 'description' => _('Home drive'), - 'help' => 'homeDrive', - 'example' => 'k:' - ), - array( - 'name' => 'sambaSamAccount_homePath', - 'description' => _('Home path'), - 'help' => 'homePath', - 'example' => _('\\\\server\\homes\\smiller') - ), - array( - 'name' => 'sambaSamAccount_profilePath', - 'description' => _('Profile path'), - 'help' => 'profilePath', - 'example' => _('\\\\server\\profiles\\smiller') - ), - array( - 'name' => 'sambaSamAccount_logonScript', - 'description' => _('Logon script'), - 'help' => 'scriptPath', - 'example' => 'logon.bat' - ), - array( - 'name' => 'sambaSamAccount_workstations', - 'description' => _('Samba workstations'), - 'help' => 'workstations', - 'example' => 'PC01,PC02,PC03' - ), - array( - 'name' => 'sambaSamAccount_group', - 'description' => _('Windows group'), - 'help' => 'groupUpload', - 'example' => _('mygroup'), - 'default' => 'Domain Users' - ), - array( - 'name' => 'sambaSamAccount_rid', - 'description' => _('Samba RID'), - 'help' => 'ridUpload', - 'example' => '1235', - 'default' => '<uidNumber>*2 + <sambaAlgorithmicRidBase>' - ), - array( - 'name' => 'sambaSamAccount_logonHours', - 'description' => _('Logon hours'), - 'help' => 'logonHoursUpload', - 'example' => 'FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF' - ) - ); - } - elseif ($this->get_scope() == "host") { - $return['upload_columns'] = array( - array( - 'name' => 'sambaSamAccount_domain', - 'description' => _('Domain'), - 'required' => true, - 'help' => 'domain', - 'example' => _('mydomain') - ), - array( - 'name' => 'sambaSamAccount_rid', - 'description' => _('Samba RID'), - 'help' => 'ridUploadHost', - 'example' => '1235', - 'default' => '<uidNumber>*2 + <sambaAlgorithmicRidBase>' - ) - ); - } - return $return; - } - - /** - * Initializes the module after it became part of an accountContainer - * - * @param string $base the name of the accountContainer object ($_SESSION[$base]) - */ - function init($base) { - // call parent init - parent::init($base); - $this->useunixpwd=false; - $this->noexpire = true; - $this->nopwd = false; - $this->deactivated = false; - } - - // Variables - /** use unix password as samba password? */ - var $useunixpwd; - /** use no password? */ - var $nopwd; - /** password does not expire? */ - var $noexpire; - /** account deactivated? */ - var $deactivated; - /** array of well known rids */ - var $rids; - /** HEX to binary conversion table */ - var $hex2bitstring = array('0' => '0000', '1' => '0001', '2' => '0010', '3' => '0011', '4' => '0100', - '5' => '0101', '6' => '0110', '7' => '0111', '8' => '1000', '9' => '1001', 'A' => '1010', - 'B' => '1011', 'C' => '1100', 'D' => '1101', 'E' => '1110', 'F' => '1111'); - - - function module_ready() { - if ($_SESSION[$this->base]->module['posixAccount']->attributes['gidNumber'][0]=='') return false; - if ($_SESSION[$this->base]->module['posixAccount']->attributes['uidNumber'][0]=='') return false; - if ($this->attributes['uid'][0]=='') return false; - return true; - } - - /* This functions return true - * if all needed settings are done - */ - function module_complete() { - if (!$this->module_ready()) return false; - if ($this->attributes['sambaSID'][0] == '') return false; - return true; - } - - /* This function returns a list of all html-pages in module - * This is usefull for mass upload and pdf-files - * because lam can walk trough all pages itself and do some - * error checkings - */ - function pages() { - return array('attributes', 'sambaUserWorkstations'); - } - - /* This function loads all attributes into the object - * $attr is an array as it's retured from ldap_get_attributes - */ - function load_attributes($attr) { - parent::load_attributes($attr); - if (strpos($this->attributes['sambaAcctFlags'][0], "D")) $this->deactivated = true; - if (strpos($this->attributes['sambaAcctFlags'][0], "N")) $this->nopwd = true; - if (strpos($this->attributes['sambaAcctFlags'][0], "X")) $this->noexpire = true; - return 0; - } - - /* This function returns an array with 3 entries: - * array( DN1 ('add' => array($attr), 'remove' => array($attr), 'modify' => array($attr)), DN2 .... ) - * DN is the DN to change. It may be possible to change several DNs, - * e.g. create a new user and add him to some groups via attribute memberUid - * add are attributes which have to be added to ldap entry - * remove are attributes which have to be removed from ldap entry - * modify are attributes which have to been modified in ldap entry - */ - function save_attributes() { - /* Create sambaSID. Can't create it while loading attributes because - * it's psssible uidNumber has changed - */ - // Get Domain SID from name - $sambaDomains = search_domains($_SESSION['config']->get_Suffix('domain')); - for ($i=0; $iattributes['sambaDomainName'][0] == $sambaDomains[$i]->name) { - $SID = $sambaDomains[$i]->SID; - $RIDbase = $sambaDomains[$i]->RIDbase; - } - $special = false; - if ($this->attributes['sambaSID'][0] == $SID."-500") $special = true; - if ($this->attributes['sambaSID'][0] == $SID."-501") $special = true; - if (!$special) $this->attributes['sambaSID'][0] == $SID."-".($_SESSION[$this->base]->module['posixAccount']->attributes['uidNumber'][0]*2+$RIDbase); - - $return = $_SESSION[$this->base]->save_module_attributes($this->attributes, $this->orig); - - return $return; - } - - function delete_attributes($post) { - return 0; - } - - /* Write variables into object and do some regexp checks - */ - function process_attributes(&$post) { - // Save attributes - $this->attributes['sambaDomainName'][0] = $post['sambaDomainName']; - // Get Domain SID from name - $sambaDomains = search_domains($_SESSION['config']->get_Suffix('domain')); - for ($i=0; $iattributes['sambaDomainName'][0] == $sambaDomains[$i]->name) { - $SID = $sambaDomains[$i]->SID; - $RIDbase = $sambaDomains[$i]->RIDbase; - } - $flag = "["; - if ($post['sambaAcctFlagsD']) { - $flag .= "D"; - $this->deactivated = true; - } - else { - $this->deactivated = false; - } - if ($post['sambaAcctFlagsX']) { - $flag .= "X"; - $this->noexpire = true; - } - else { - $this->noexpire = false; - } - if ($post['sambaAcctFlagsN']) { - $flag .= "N"; - $this->nopwd = true; - } - else { - $this->nopwd = false; - } - if ($post['sambaAcctFlagsS']) $flag .= "S"; - if ($post['sambaAcctFlagsH']) $flag .= "H"; - if ($post['sambaAcctFlagsW']) $flag .= "W"; - if ($post['sambaAcctFlagsU']) $flag .= "U"; - // Expand string to fixed length - $flag = str_pad($flag, 12); - // End character - $flag = $flag. "]"; - $this->attributes['sambaAcctFlags'][0] = $flag; - - if ($_SESSION[$this->base]->type=='host') { - $this->attributes['sambaPrimaryGroupSID'][0] = $SID."-".$this->rids[_('Domain Computers')]; - if ($post['ResetSambaPassword'] || !$this->attributes['sambaLMPassword'][0]) { - $hostname = $_SESSION[$this->base]->module['posixAccount']->attributes['uid'][0]; - $hostname = substr($hostname, 0, strlen($hostname) - 1); - $this->attributes['sambaLMPassword'][0] = lmPassword($hostname); - $this->attributes['sambaNTPassword'][0] = ntPassword($hostname); - $this->attributes['sambaPwdLastSet'][0] = time(); - } - } - - if ($_SESSION[$this->base]->type=='user') { - $this->attributes['sambaPwdCanChange'][0] = mktime($post['sambaPwdCanChange_h'], $post['sambaPwdCanChange_m'], $post['sambaPwdCanChange_s'], - $post['sambaPwdCanChange_mon'], $post['sambaPwdCanChange_day'], $post['sambaPwdCanChange_yea']); - $this->attributes['sambaPwdMustChange'][0] = mktime($post['sambaPwdMustChange_h'], $post['sambaPwdMustChange_m'], $post['sambaPwdMustChange_s'], - $post['sambaPwdMustChange_mon'], $post['sambaPwdMustChange_day'], $post['sambaPwdMustChange_yea']); - $this->attributes['sambaHomePath'][0] = stripslashes($post['sambaHomePath']); - $this->attributes['sambaHomeDrive'][0] = $post['sambaHomeDrive']; - $this->attributes['sambaLogonScript'][0] = stripslashes($post['sambaLogonScript']); - $this->attributes['sambaProfilePath'][0] = stripslashes($post['sambaProfilePath']); - $rids = array_keys($this->rids); - $wrid = false; - for ($i=0; $iattributes['sambaPrimaryGroupSID'][0] = $SID."-".$this->rids[$rids[$i]]; - } - } - if (!$wrid) { - $gidnumber = $_SESSION[$this->base]->module['posixAccount']->attributes['gidNumber'][0]; - $groups = $_SESSION['cache']->get_cache(array('gidNumber', 'sambaSID'), 'sambaGroupMapping', 'group'); - $groupKeys = array_keys($groups); - for ($i = 0; $i < sizeof($groupKeys); $i++) { - if ($groups[$groupKeys[$i]]['gidNumber'][0] == $gidnumber) { - if (isset($groups[$groupKeys[$i]]['sambaSID'][0])) { - $this->attributes['sambaPrimaryGroupSID'][0] = $groups[$groupKeys[$i]]['sambaSID'][0]; - } - break; - } - } - } - - if ($post['useunixpwd']) { - $this->useunixpwd = true; - $this->attributes['sambaLMPassword'][0] = lmPassword($_SESSION[$this->base]->module['posixAccount']->userPassword()); - $this->attributes['sambaNTPassword'][0] = ntPassword($_SESSION[$this->base]->module['posixAccount']->userPassword()); - $this->attributes['sambaPwdLastSet'][0] = time(); - } - else $this->useunixpwd = false; - if (!$this->useunixpwd && isset($post['sambaLMPassword']) && ($post['sambaLMPassword'] != '')) { - if ($post['sambaLMPassword'] != $post['sambaLMPassword2']) { - $triggered_messages['sambaLMPassword'][] = $this->messages['sambaLMPassword'][0]; - unset ($post['sambaLMPassword2']); - } - else { - if (!get_preg($post['sambaLMPassword'], 'password')) $triggered_messages['sambaLMPassword'][] = $this->messages['sambaLMPassword'][1]; - else { - $this->attributes['sambaLMPassword'][0] = lmPassword($post['sambaLMPassword']); - $this->attributes['sambaNTPassword'][0] = ntPassword($post['sambaLMPassword']); - $this->attributes['sambaPwdLastSet'][0] = time(); - } - } - } - $specialRids = array_flip($this->rids); - // set special RID if selected - if (in_array($post['sambaSID'], $specialRids)) { - $this->attributes['sambaSID'][0] = $SID . '-' . $this->rids[$post['sambaSID']]; - } - // standard RID - else if ($post['sambaSID'] == "-") { - $rid = substr($this->attributes['sambaSID'][0], strrpos($this->attributes['sambaSID'][0], '-') + 1, strlen($this->attributes['sambaSID'][0])); - // change only if not yet set or previously set to special SID - if (!$this->attributes['sambaSID'][0] || in_array($rid, $this->rids)) { - $this->attributes['sambaSID'][0] = $SID."-". (($_SESSION[$this->base]->module['posixAccount']->attributes['uidNumber'][0]*2)+$RIDbase); - } - } - // Check values - $this->attributes['sambaHomePath'][0] = str_replace('$user', $_SESSION[$this->base]->module['posixAccount']->attributes['uid'][0], $this->attributes['sambaHomePath'][0]); - $this->attributes['sambaHomePath'][0] = str_replace('$group', $_SESSION['cache']->getgrnam($_SESSION[$this->base]->module['posixAccount']->attributes['gidNumber'][0]), $this->attributes['sambaHomePath'][0]); - if ($this->attributes['sambaHomePath'][0] != stripslashes($post['sambaHomePath'])) $triggered_messages['sambaHomePath'][] = $this->messages['homePath'][1]; - $this->attributes['sambaLogonScript'][0] = str_replace('$user', $_SESSION[$this->base]->module['posixAccount']->attributes['uid'][0], $this->attributes['sambaLogonScript'][0]); - $this->attributes['sambaLogonScript'][0] = str_replace('$group', $_SESSION['cache']->getgrnam($_SESSION[$this->base]->module['posixAccount']->attributes['gidNumber'][0]), $this->attributes['sambaLogonScript'][0]); - if ($this->attributes['sambaLogonScript'][0] != stripslashes($post['sambaLogonScript'])) $triggered_messages['sambaLogonScript'][] = $this->messages['logonScript'][1]; - $this->attributes['sambaProfilePath'][0] = str_replace('$user', $_SESSION[$this->base]->module['posixAccount']->attributes['uid'][0], $this->attributes['sambaProfilePath'][0]); - $this->attributes['sambaProfilePath'][0] = str_replace('$group', $_SESSION['cache']->getgrnam($_SESSION[$this->base]->module['posixAccount']->attributes['gidNumber'][0]), $this->attributes['sambaProfilePath'][0]); - if ($this->attributes['sambaProfilePath'][0] != stripslashes($post['sambaProfilePath'])) $triggered_messages['sambaProfilePath'][] = $this->messages['profilePath'][1]; - if ( (!$this->attributes['sambaHomePath'][0]=='') && (!get_preg($this->attributes['sambaHomePath'][0], 'UNC'))) - $triggered_messages['sambaHomePath'][] = $this->messages['homePath'][0]; - if ( (!$this->attributes['sambaLogonScript'][0]=='') && (!get_preg($this->attributes['sambaLogonScript'][0], 'logonscript'))) - $triggered_messages['sambaScriptPath'][] = $this->messages['logonScript'][0]; - if (!($this->attributes['sambaProfilePath'][0] == '') && - !(get_preg($this->attributes['sambaProfilePath'][0], 'UNC') xor get_preg($this->attributes['sambaProfilePath'][0], 'homeDirectory'))) - $triggered_messages['sambaProfilePath'][] = $this->messages['profilePath'][0]; - } - else { // host - if (!$this->attributes['sambaSID'][0]) { - $this->attributes['sambaSID'][0] = $SID."-". (($_SESSION[$this->base]->module['posixAccount']->attributes['uidNumber'][0]*2)+$RIDbase); - } - } - if (count($triggered_messages)!=0) { - $this->triggered_messages = $triggered_messages; - return $triggered_messages; - } - else $this->triggered_messages = array(); - if ($post['sambaUserWorkstations']) return 'sambaUserWorkstations'; - if ($post['logonHours']) return 'logonHours'; - return 0; - } - - /* Write variables into object and do some regexp checks - */ - function process_sambaUserWorkstations(&$post) { - // Load attributes - if ($_SESSION[$this->base]->type=='user') { - do { // X-Or, only one if() can be true - if (isset($post['availableSambaUserWorkstations']) && isset($post['sambaUserWorkstations_add'])) { // Add workstations to list - $temp = str_replace(' ', '', $this->attributes['sambaUserWorkstations'][0]); - $workstations = explode (',', $temp); - for ($i=0; $iattributes['sambaUserWorkstations'][0] = $workstations[0]; - for ($i=1; $iattributes['sambaUserWorkstations'][0] = $this->attributes['sambaUserWorkstations'][0] . "," . $workstations[$i]; - } - break; - } - if (isset($post['sambaUserWorkstations']) && isset($post['sambaUserWorkstations_remove'])) { // remove // Add workstations from list - // Put all workstations in array - $temp = str_replace(' ', '', $this->attributes['sambaUserWorkstations'][0]); - $workstations = explode (',', $temp); - for ($i=0; $iattributes['sambaUserWorkstations'][0] = $workstations[0]; - for ($i=1; $iattributes['sambaUserWorkstations'][0] = $this->attributes['sambaUserWorkstations'][0] . "," . $workstations[$i]; - } - break; - } - } while(0); - if ($post['attributes']) return 'attributes'; - } - return 0; - } - - /** - * Save logon hours - * - * @param array $post HTTP POST variables - * @return string next page name (attributes or logonHours) - */ - function process_logonHours(&$post) { - if ($post['abort']) return 'attributes'; - // set new logon hours - $logonHours = ''; - for ($i = 0; $i < 7; $i++) { - for ($h = 0; $h < 24; $h++) { - if ($post['lh_' . $i . '_' . $h] == 'on') { - $logonHours = $logonHours . '1'; - } - else { - $logonHours = $logonHours . '0'; - } - } - } - // put sunday back at the beginning - $sunday = substr($logonHours, strlen($logonHours) - 24); - $logonHours = $sunday . substr($logonHours, 0, strlen($logonHours) - 24); - // reconstruct HEX string - $bitstring2hex = array_flip($this->hex2bitstring); - $logonHoursNew = ''; - for ($i = 0; $i < 42; $i++) { - $part = substr($logonHours, $i * 4, 4); - $hex = $bitstring2hex[$part]; - $logonHoursNew = $logonHoursNew . $hex; - } - $this->attributes['sambaLogonHours'][0] = $logonHoursNew; - if ($post['submit']) return 'attributes'; - } - - /* This function will create the html-page - * to show a page with all attributes. - * It will output a complete html-table - */ - function display_html_attributes(&$post) { - // Get Domain SID from name - $sambaDomains = search_domains($_SESSION['config']->get_Suffix('domain')); - for ($i=0; $iname; - if ($this->attributes['sambaDomainName'][0] == $sambaDomains[$i]->name) - $SID = $sambaDomains[$i]->SID; - } - $canchangedate = getdate($this->attributes['sambaPwdCanChange'][0]); - $mustchangedate = getdate($this->attributes['sambaPwdMustChange'][0]); - - if ($_SESSION[$this->base]->type=='user') { - $return[] = array ( 0 => array ( 'kind' => 'input', 'name' => 'sambaPwdCanChange_h', 'type' => 'hidden', 'value' => $canchangedate['hours']), - 1 => array ( 'kind' => 'input', 'name' => 'sambaPwdCanChange_m', 'type' => 'hidden', 'value' => $canchangedate['minutes']), - 2 => array ( 'kind' => 'input', 'name' => 'sambaPwdCanChange_s', 'type' => 'hidden', 'value' => $canchangedate['seconds']), - 3 => array ( 'kind' => 'input', 'name' => 'sambaPwdMustChange_h', 'type' => 'hidden', 'value' => $mustchangedate['hours']), - 4 => array ( 'kind' => 'input', 'name' => 'sambaPwdMustChange_m', 'type' => 'hidden', 'value' => $mustchangedate['minutes']), - 5 => array ( 'kind' => 'input', 'name' => 'sambaPwdMustChange_s', 'type' => 'hidden', 'value' => $mustchangedate['seconds']), - 6 => array ( 'kind' => 'input', 'name' => 'sambaAcctFlagsU', 'type' => 'hidden', 'value' => 'true')); - $return[] = array ( 0 => array ( 'kind' => 'text', 'text' => _('Samba password') ), - 1 => array ( 'kind' => 'input', 'name' => 'sambaLMPassword', 'type' => 'password', 'size' => '20', 'maxlength' => '255')); - $return[] = array ( 0 => array ( 'kind' => 'text', 'text' => _('Repeat password') ), - 1 => array ( 'kind' => 'input', 'name' => 'sambaLMPassword2', 'type' => 'password', 'size' => '20', 'maxlength' => '255'), - 2 => array ('kind' => 'help', 'value' => 'sambaLMPassword')); - if ($_SESSION[$this->base]->module['posixAccount']->orig['userPassword'][0] != $_SESSION[$this->base]->module['posixAccount']->attributes['userPassword'][0]) { - $return[] = array ( 0 => array ( 'kind' => 'text', 'text' => _('Use unix password') ), - 1 => array ( 'kind' => 'input', 'name' => 'useunixpwd', 'type' => 'checkbox', 'checked' => $this->useunixpwd), - 2 => array ('kind' => 'help', 'value' => 'useunixpwd')); - } - $return[] = array ( 0 => array ( 'kind' => 'text', 'text' => _('Use no password') ), - 1 => array ( 'kind' => 'input', 'name' => 'sambaAcctFlagsN', 'type' => 'checkbox', 'checked' => $this->nopwd, 'value' => 'true'), - 2 => array ('kind' => 'help', 'value' => 'sambaAcctFlagsN')); - $return[] = array ( 0 => array ( 'kind' => 'text', 'text' => _('Password does not expire') ), - 1 => array ( 'kind' => 'input', 'name' => 'sambaAcctFlagsX', 'type' => 'checkbox', 'checked' => $this->noexpire, 'value' => 'true'), - 2 => array ('kind' => 'help', 'value' => 'sambaAcctFlagsX')); - $return[] = array ( 0 => array ( 'kind' => 'text', 'text' => _('Account is deactivated') ), - 1 => array ( 'kind' => 'input', 'name' => 'sambaAcctFlagsD', 'type' => 'checkbox', 'checked' => $this->deactivated, 'value' => 'true'), - 2 => array ('kind' => 'help', 'value' => 'sambaAcctFlagsD')); - for ( $i=1; $i<=31; $i++ ) $mday[] = $i; - for ( $i=1; $i<=12; $i++ ) $mon[] = $i; - for ( $i=2003; $i<=2030; $i++ ) $year[] = $i; - $return[] = array ( 0 => array ( 'kind' => 'text', 'text' => _('User can change password') ), - 1 => array ( 'kind' => 'table', 'value' => array ( 0 => array ( 0 => array ( 'kind' => 'select', 'name' => 'sambaPwdCanChange_day', - 'options' => $mday, 'options_selected' => array($canchangedate['mday'])), - 1 => array ( 'kind' => 'select', 'name' => 'sambaPwdCanChange_mon', - 'options' => $mon, 'options_selected' => array($canchangedate['mon'])), - 2 => array ( 'kind' => 'select', 'name' => 'sambaPwdCanChange_yea', - 'options' => $year, 'options_selected' => array($canchangedate['year']))))), - 2 => array ( 'kind' => 'help', 'value' => 'sambaPwdCanChange' )); - $return[] = array ( 0 => array ( 'kind' => 'text', 'text' => _('User must change password') ), - 1 => array ( 'kind' => 'table', 'value' => array ( 0 => array ( 0 => array ( 'kind' => 'select', 'name' => 'sambaPwdMustChange_day', - 'options' => $mday, 'options_selected' => array($mustchangedate['mday'])), - 1 => array ( 'kind' => 'select', 'name' => 'sambaPwdMustChange_mon', - 'options' => $mon, 'options_selected' => array($mustchangedate['mon'])), - 2 => array ( 'kind' => 'select', 'name' => 'sambaPwdMustChange_yea', - 'options' => $year, 'options_selected' => array($mustchangedate['year']))))), - 2 => array ( 'kind' => 'help', 'value' => 'sambaPwdMustChange' )); - for ($i=90; $i>67; $i--) $drives[] = chr($i).':'; - $return[] = array ( 0 => array ( 'kind' => 'text', 'text' => _('Home drive') ), - 1 => array ( 'kind' => 'select', 'name' => 'sambaHomeDrive', 'options' => $drives, 'options_selected' => array ($this->attributes['sambaHomeDrive'][0])), - 2 => array ( 'kind' => 'help', 'value' => 'sambaHomeDrive' )); - $return[] = array ( 0 => array ( 'kind' => 'text', 'text' => _('Home path') ), - 1 => array ( 'kind' => 'input', 'type' => 'text', 'name' => 'sambaHomePath', 'size' => '20', 'maxlength' => '255', 'value' => $this->attributes['sambaHomePath'][0]), - 2 => array ( 'kind' => 'help', 'value' => 'sambaHomePath' )); - $return[] = array ( 0 => array ( 'kind' => 'text', 'text' => _('Profile path') ), - 1 => array ( 'kind' => 'input', 'type' => 'text', 'name' => 'sambaProfilePath', 'size' => '20', 'maxlength' => '255', 'value' => $this->attributes['sambaProfilePath'][0]), - 2 => array ( 'kind' => 'help', 'value' => 'sambaProfilePath' )); - $return[] = array ( 0 => array ( 'kind' => 'text', 'text' => _('Logon script') ), - 1 => array ( 'kind' => 'input', 'type' => 'text', 'name' => 'sambaLogonScript', 'size' => '20', 'maxlength' => '255', 'value' => $this->attributes['sambaLogonScript'][0]), - 2 => array ( 'kind' => 'help', 'value' => 'sambaLogonScript' )); - $return[] = array ( 0 => array ( 'kind' => 'text', 'text' => _('Samba workstations') ), - 1 => array ( 'kind' => 'input', 'type' => 'submit', 'name' => 'sambaUserWorkstations', 'value' => _('Edit workstations')), - 2 => array ( 'kind' => 'help', 'value' => 'sambaUserWorkstations' )); - - $names = array_keys($this->rids); - $wrid=false; - for ($i=0; $iattributes['sambaPrimaryGroupSID'][0]==$SID."-".$this->rids[$names[$i]]) { - $selected[] = $names[$i]; - $wrid=true; - } - else $options[] = $names[$i]; - } - if ($wrid) $options[] = $_SESSION['cache']->getgrnam($_SESSION[$this->base]->module['posixAccount']->attributes['gidNumber'][0]); - else $selected[] = $_SESSION['cache']->getgrnam($_SESSION[$this->base]->module['posixAccount']->attributes['gidNumber'][0]); - $return[] = array ( 0 => array ( 'kind' => 'text', 'text' => _('Windows group') ), - 1 => array ( 'kind' => 'select', 'name' => 'sambaPrimaryGroupSID', 'options' => $options, 'options_selected' => $selected), - 2 => array ( 'kind' => 'help', 'value' => 'sambaPrimaryGroupSID' )); - // display if group SID should be mapped to a well known SID - $options = array_keys($this->rids); - $options[] = '-'; - $selected = array(); - if ($this->attributes['sambaSID'][0]) { - $rid = substr($this->attributes['sambaSID'][0], strrpos($this->attributes['sambaSID'][0], '-') + 1, strlen($this->attributes['sambaSID'][0])); - $specialRids = array_flip($this->rids); - if (in_array($rid, $this->rids)) { - $selected = array($specialRids[$rid]); - } - else { - $selected = array('-'); - } - } - else $selected[] = "-"; - $return[] = array ( 0 => array ( 'kind' => 'text', 'text' => _('Special user') ), - 1 => array ( 'kind' => 'select', 'name' => 'sambaSID', 'options' => $options, 'options_selected' => $selected), - 2 => array ( 'kind' => 'help', 'value' => 'sambaSID' )); - } - $selectedDomain = array(); - if (in_array($this->attributes['sambaDomainName'][0], $sambaDomainNames)) { - $selectedDomain = array($this->attributes['sambaDomainName'][0]); - } - $return[] = array ( 0 => array ( 'kind' => 'text', 'text' => _('Domain') ), - 1 => array ( 'kind' => 'select', 'name' => 'sambaDomainName', 'options' => $sambaDomainNames, 'options_selected' => $selectedDomain), - 2 => array ( 'kind' => 'help', 'value' => 'sambaDomainName' )); - // logon hours - if ($_SESSION[$this->base]->type=='user') { - $return[] = array ( 0 => array ( 'kind' => 'text', 'text' => _('Logon hours') ), - 1 => array ( 'kind' => 'input', 'type' => 'submit', 'name' => 'logonHours', 'value' => _('Edit logon hours')), - 2 => array ( 'kind' => 'help', 'value' => 'logonHours' )); - } - // reset host password - if ($_SESSION[$this->base]->type=='host') { - $return[] = array ( 0 => array ( 'kind' => 'input', 'name' => 'sambaAcctFlagsW', 'type' => 'hidden', 'value' => 'true' )); - $return[] = array ( 0 => array ( 'kind' => 'text', 'text' => _('Reset password') ), - 1 => array ( 'kind' => 'input', 'type' => 'submit', 'name' => 'ResetSambaPassword', 'value' => _('Submit')), - 2 => array ( 'kind' => 'help', 'value' => 'ResetSambaPassword' )); - } - return $return; - } - - function display_html_delete(&$post) { - return 0; - } - - /* This function will create the html-page - * to show a page with all attributes. - * It will output a complete html-table - */ - function display_html_sambaUserWorkstations(&$post) { - if ($_SESSION[$this->base]->type=='user') { - // Get list of all hosts. - $result = $_SESSION['cache']->get_cache('uid', 'sambaSamAccount', 'host'); - if (is_array($result)) { - foreach ($result as $host) $availableUserWorkstations[] = str_replace("$", '', $host[0]); - sort($availableUserWorkstations, SORT_STRING); - $result = str_replace(' ', '', $this->attributes['sambaUserWorkstations'][0]); - $userWorkstations = explode (',', $result); - $availableUserWorkstations = array_delete($userWorkstations, $availableUserWorkstations); - } - - $return[] = array ( 0 => array ( 'kind' => 'fieldset', 'legend' => _("Allowed workstations"), 'value' => - array ( 0 => array ( 0 => array ('kind' => 'fieldset', 'td' => array ('valign' => 'top'), 'legend' => _("Allowed workstations"), 'value' => - array ( 0 => array ( 0 => array ( 'kind' => 'select', 'name' => 'sambaUserWorkstations[]', 'size' => '15', 'multiple', 'options' => $userWorkstations)))), - 1 => array ( 'kind' => 'table', 'value' => array ( 0 => array ( 0 => array ( 'kind' => 'input', 'type' => 'submit', 'name' => 'sambaUserWorkstations_add', - 'value' => '<=')), 1 => array ( 0 => array ( 'kind' => 'input', 'type' => 'submit', 'name' => 'sambaUserWorkstations_remove', 'value' => '=>' )), - 2 => array ( 0 => array ( 'kind' => 'help', 'value' => 'sambaUserWorkstations' )))), - 2 => array ('kind' => 'fieldset', 'td' => array ('valign' => 'top'), 'legend' => _("Available workstations"), 'value' => - array ( 0 => array ( 0 => array ( 'kind' => 'select', 'name' => 'availableSambaUserWorkstations[]', 'size' => '15', 'multiple', 'options' => $availableUserWorkstations)))) - )))); - - $return[] = array ( 0 => array ( 'kind' => 'input', 'type' => 'submit', 'value' => _('Back') ), - 1 => array ( 'kind' => 'text'), - 2 => array ('kind' => 'text')); - } - return $return; - } - - /** - * This function will create the HTML page to edit logon hours. - * - * @param array $post HTTP POST variables - * @return array meta HTML code - */ - function display_html_logonHours(&$post) { - $days = array(0 => _('Monday'), 1 => _('Tuesday'), 2 => _('Wednesday'), 3 => _('Thursday'), - 4 => _('Friday'), 5 => _('Saturday'), 6 => _('Sunday')); - if (!$this->attributes['sambaLogonHours'][0]) { - $this->attributes['sambaLogonHours'][0] = 'FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF'; - } - // convert existing logonHours string to bit array - $logonHours = $this->attributes['sambaLogonHours'][0]; - $temp = array(); - for ($i = 0; $i < strlen($logonHours); $i++) { - $temp[] = $this->hex2bitstring[$logonHours[$i]]; - } - $logonHours = implode('', $temp); - // move sunday at the end - $sunday = substr($logonHours, 0, 24); - $logonHours = substr($logonHours, 24) . $sunday; - $week = array(); - for ($i = 0; $i < 7; $i++) { - $week[$i] = substr($logonHours, 24*$i, 24); - } - // get offset - $offset = 0; - if ($post['timezone']) { - if (strlen(substr($post['timezone'], 3)) > 0) { - $part = substr($post['timezone'], 3); - if ($part[1] == '1') $offset = 10; - $offset = $offset + intval($part[2]); - if ($part[0] == '-') $offset = -$offset; - } - } - // display input - for ($i = 0; $i < 7; $i++) { - $return[0][1 + $i] = array('kind' => 'text', 'text' => '' . $days[$i] . '', 'td' => array('width' => "12.5%", 'align' => 'center')); - for ($h = 0; $h < 24; $h++) { - $pos = $h; - $pos = $pos + $offset; - if ($pos > 23) $pos = $pos - 24; - elseif ($pos < 0) $pos = 24 + $pos; - if ($week[$i][$h] == 1) { - $return[$pos + 1][1 + $i] = array('kind' => 'input', 'name' => 'lh_' . $i . '_' . $h, - 'type' => 'checkbox', 'checked' => true, 'td' => array('align' => 'center')); - } - else { - $return[$pos + 1][1 + $i] = array('kind' => 'input', 'name' => 'lh_' . $i . '_' . $h, - 'type' => 'checkbox', 'checked' => false, 'td' => array('align' => 'center')); - } - } - } - $return[0][0] = array('kind' => 'text', 'text' => '' . _('Time') . '', 'td' => array('width' => "12.5%")); - for ($h = 0; $h < 24; $h++) { - $return[1 + $h][0] = array('kind' => 'text', 'text' => "$h:00 - $h:59"); - } - $return[] = array(0 => array('kind' => 'text', 'text' => ' ', 'td' => array('colspan' => 8))); - $timezones = array('GMT'); - for ($i = 1; $i <= 12; $i++) { - if ($i < 10) $t = '0' . $i; - else $t = $i; - array_push($timezones, 'GMT+' . $t); - array_unshift($timezones, 'GMT-' . $t); - } - $return[] = array( - 0 => array('kind' => 'input', 'name' => 'submit', 'type' => 'submit', 'value' => _('Submit')), - 1 => array('kind' => 'input', 'name' => 'abort', 'type' => 'submit', 'value' => _('Abort')), - 2 => array('kind' => 'text', 'td' => array('colspan' => 3)), - 3 => array('kind' => 'table', 'td' => array('colspan' => 3, 'align' => 'right'), 'value' => array(0 => array( - 0 => array('kind' => 'text', 'text' => _('Time zone')), - 1 => array('kind' => 'select', 'name' => 'timezone', 'options' => $timezones, 'options_selected' => $post['timezone']), - 2 => array('kind' => 'input', 'name' => 'change_tz', 'type' => 'submit', 'value' => _('Change'))))) - ); - return $return; - } - - /** - * Returns a list of elements for the account profiles. - * - * @return profile elements - */ - function get_profileOptions() { - $return = array(); - if ($this->get_scope() == 'user') { - // use Unix password as Samba password - $return[] = array( - 0 => array('kind' => 'text', 'text' => _('Use unix password') . ': '), - 1 => array('kind' => 'input', 'name' => 'sambaSamAccount_useunixpwd', 'type' => 'checkbox', 'checked' => true), - 2 => array('kind' => 'help', 'value' => 'pwdunix') - ); - // use no password at all - $return[] = array( - 0 => array('kind' => 'text', 'text' => _('Use no password') . ': '), - 1 => array('kind' => 'input', 'name' => 'sambaSamAccount_sambaAcctFlagsN', 'type' => 'checkbox', 'checked' => false), - 2 => array('kind' => 'help', 'value' => 'noPassword') - ); - // password never expires - $return[] = array( - 0 => array('kind' => 'text', 'text' => _('Password does not expire') . ': '), - 1 => array('kind' => 'input', 'name' => 'sambaSamAccount_sambaAcctFlagsX', 'type' => 'checkbox', 'checked' => true), - 2 => array('kind' => 'help', 'value' => 'noExpire') - ); - // account deactivation - $return[] = array( - 0 => array('kind' => 'text', 'text' => _('Account is deactivated') . ': '), - 1 => array('kind' => 'input', 'name' => 'sambaSamAccount_sambaAcctFlagsD', 'type' => 'checkbox', 'checked' => false), - 2 => array('kind' => 'help', 'value' => 'deactivated') - ); - // letter of home drive - $drives = array(); - for ($i = 90; $i > 67; $i--) $drives[] = chr($i) . ':'; - $return[] = array( - 0 => array('kind' => 'text', 'text' => _('Home drive') . ': '), - 1 => array('kind' => 'select', 'name' => 'sambaSamAccount_sambaHomeDrive', 'options' => $drives, 'options_selected' => array('Z:')), - 2 => array('kind' => 'help', 'value' => 'homeDrive') - ); - // path to home directory - $return[] = array( - 0 => array('kind' => 'text', 'text' => _('Home path') . ': '), - 1 => array('kind' => 'input', 'type' => 'text', 'name' => 'sambaSamAccount_smbhome', 'size' => '20', 'maxlength' => '255', 'value' => ''), - 2 => array('kind' => 'help', 'value' => 'homePath') - ); - // profile path - $return[] = array( - 0 => array('kind' => 'text', 'text' => _('Profile path') . ': '), - 1 => array('kind' => 'input', 'type' => 'text', 'name' => 'sambaSamAccount_profilePath', 'size' => '20', 'maxlength' => '255', 'value' => ''), - 2 => array('kind' => 'help', 'value' => 'profilePath') - ); - // logon script - $return[] = array( - 0 => array('kind' => 'text', 'text' => _('Logon script') . ': '), - 1 => array('kind' => 'input', 'type' => 'text', 'name' => 'sambaSamAccount_logonScript', 'size' => '20', 'maxlength' => '255', 'value' => ''), - 2 => array('kind' => 'help', 'value' => 'scriptPath') - ); - // allowed workstations - $return[] = array( - 0 => array('kind' => 'text', 'text' => _('Samba workstations') . ': '), - 1 => array('kind' => 'input', 'type' => 'text', 'name' => 'sambaSamAccount_userWorkstations', 'value' => ''), - 2 => array('kind' => 'help', 'value' => 'workstations') - ); - // domains - $sambaDomains = search_domains($_SESSION['config']->get_Suffix('domain')); - $sambaDomainNames = array(); - for ($i = 0; $i < count($sambaDomains); $i++) { - $sambaDomainNames[] = $sambaDomains[$i]->name; - } - $return[] = array( - 0 => array('kind' => 'text', 'text' => _('Domain') . ': '), - 1 => array('kind' => 'select', 'name' => 'sambaSamAccount_sambaDomainName', 'options' => $sambaDomainNames, 'options_selected' => array()), - 2 => array('kind' => 'help', 'value' => 'domain') - ); - // logon hours - $return[] = array( - 0 => array('kind' => 'text', 'text' => _('Logon hours') . ': '), - 1 => array('kind' => 'input', 'type' => 'text', 'name' => 'sambaSamAccount_logonHours', 'value' => ''), - 2 => array('kind' => 'help', 'value' => 'logonHoursUpload') - ); - } - elseif ($this->get_scope() == 'host') { - // domains - $sambaDomains = search_domains($_SESSION['config']->get_Suffix('domain')); - $sambaDomainNames = array(); - for ($i = 0; $i < count($sambaDomains); $i++) { - $sambaDomainNames[] = $sambaDomains[$i]->name; - } - $return[] = array( - 0 => array('kind' => 'text', 'text' => _('Domain') . ': '), - 1 => array('kind' => 'select', 'name' => 'sambaSamAccount_sambaDomainName', 'options' => $sambaDomainNames, 'options_selected' => array()), - 2 => array('kind' => 'help', 'value' => 'domain') - ); - } - return $return; - } - - /** - * Loads the values of an account profile into internal variables. - * - * @param array $profile hash array with profile values (identifier => value) - */ - function load_profile($profile) { - // profile mappings in meta data - parent::load_profile($profile); - // special profile options - // use Unix password - if ($profile['sambaSamAccount_useunixpwd'][0] == "true") { - $this->useunixpwd = true; - } - elseif ($profile['sambaSamAccount_useunixpwd'][0] == "false") { - $this->useunixpwd = false; - } - // use no password - if ($profile['sambaSamAccount_acctFlagsN'][0] == "true") { - $this->nopwd = true; - } - elseif ($profile['sambaSamAccount_acctFlagsN'][0] == "false") { - $this->nopwd = false; - } - // password expiration - if ($profile['sambaSamAccount_acctFlagsX'][0] == "true") { - $this->noexpire = true; - } - elseif ($profile['sambaSamAccount_acctFlagsX'][0] == "false") { - $this->noexpire = false; - } - // use no password - if ($profile['sambaSamAccount_acctFlagsD'][0] == "true") { - $this->deactivated = true; - } - elseif ($profile['sambaSamAccount_acctFlagsD'][0] == "false") { - $this->deactivated = false; - } - } - - /* - * (non-PHPDoc) - * @see baseModule#get_pdfEntries - */ - function get_pdfEntries($account_type = "user") { - return array( 'sambaSamAccount_displayName' => array('' . _('Display name') . 'attributes['displayName'][0] . ''), - 'sambaSamAccount_uid' => array('' . _('User name') . '' . $this->attributes['uid'][0] . ''), - 'sambaSamAccount_sambaHomePath' => array('' . _('Home path') . '' . $this->attributes['sambaHomeDrive'][0] . ''), - 'sambaSamAccount_sambaHomeDrive' => array('' . _('Home drive') . '' . $this->attributes['sambaHomePath'][0] . ''), - 'sambaSamAccount_sambaLogonScript' => array('' . _('Logon script') . '' . $this->attributes['sambaLogonScript'][0] . ''), - 'sambaSamAccount_sambaProfilePath' => array('' . _('Profile path') . '' . $this->attributes['sambaProfilePath'][0] . ''), - 'sambaSamAccount_sambaUserWorkstations' => array('' . _('Samba workstations') . '' . $this->attributes['sambaUserWorkstations'][0] . ''), - 'sambaSamAccount_sambaDomainName' => array('' . _('Domain') . '' . $this->attributes['sambaDomainName'][0] . ''), - 'sambaSamAccount_description' => array('' . _('Description') . '' . $this->attributes['description'][0] . ''), - 'sambaSamAccount_sambaPrimaryGroupSID' => array('' . _('Windows group') . '' . $this->attributes['sambaPrimaryGroupSID'][0] . '')); - } - - /** - * In this function the LDAP account is built up. - * - * @param array $rawAccounts list of hash arrays (name => value) from user input - * @param array $partialAccounts list of hash arrays (name => value) which are later added to LDAP - * @param array $ids list of IDs for column position (e.g. "posixAccount_uid" => 5) - * @return array list of error messages if any - */ - function build_uploadAccounts($rawAccounts, $ids, &$partialAccounts) { - $triggered_messages = array(); - // get list of Samba 3 domains - $domains = search_domains($_SESSION['config']->get_Suffix('domain')); - // get list of Unix groups and their sambaSID + gidNumber - $groups = $_SESSION['cache']->get_cache(array('cn', 'sambaSID', 'gidNumber'), 'posixGroup', 'group'); - $groups_k = array_keys($groups); - $groups_cn = array(); - for ($i = 0; $i < sizeof($groups_k); $i++) { - if (isset($groups[$groups_k[$i]]['sambaSID'][0])) { - $groups_cn[$groups[$groups_k[$i]]['cn'][0]]['SID'] = $groups[$groups_k[$i]]['sambaSID'][0]; - } - if (isset($groups[$groups_k[$i]]['gidNumber'][0])) { - $groups_cn[$groups[$groups_k[$i]]['cn'][0]]['gid'] = $groups[$groups_k[$i]]['gidNumber'][0]; - } - } - if ($this->get_scope() == 'user') { - for ($i = 0; $i < sizeof($rawAccounts); $i++) { - if (!in_array("sambaSamAccount", $partialAccounts[$i]['objectClass'])) $partialAccounts[$i]['objectClass'][] = "sambaSamAccount"; - // displayName - if ($rawAccounts[$i][$ids['sambaSamAccount_displayName']] != "") { - if (get_preg($rawAccounts[$i][$ids['sambaSamAccount_displayName']], 'realname')) { - $partialAccounts[$i]['displayName'] = $rawAccounts[$i][$ids['sambaSamAccount_displayName']]; - } - else { - $errMsg = $this->messages['displayName'][0]; - array_push($errMsg, array($i)); - $triggered_messages[] = $errMsg; - } - } - // password - if (!get_preg($rawAccounts[$i][$ids['sambaSamAccount_password']], 'password')) { - $errMsg = $this->messages['sambaLMPassword'][2]; - array_push($errMsg, array($i)); - $triggered_messages[] = $errMsg; - } - // use Unix password - if ($rawAccounts[$i][$ids['sambaSamAccount_pwdUnix']] == "") { // default: use Unix - $partialAccounts[$i]['sambaLMPassword'] = lmPassword($partialAccounts[$i]['userPassword']); - $partialAccounts[$i]['sambaNTPassword'] = ntPassword($partialAccounts[$i]['userPassword']); - } - elseif (in_array($rawAccounts[$i][$ids['sambaSamAccount_pwdUnix']], array('true', 'false'))) { - if ($rawAccounts[$i][$ids['sambaSamAccount_pwdUnix']] == 'true') { // use Unix - $partialAccounts[$i]['sambaLMPassword'] = lmPassword($partialAccounts[$i]['userPassword']); - $partialAccounts[$i]['sambaNTPassword'] = ntPassword($partialAccounts[$i]['userPassword']); - } - else { // use given password - $partialAccounts[$i]['sambaLMPassword'] = lmPassword($rawAccounts[$i][$ids['sambaSamAccount_password']]); - $partialAccounts[$i]['sambaNTPassword'] = ntPassword($rawAccounts[$i][$ids['sambaSamAccount_password']]); - } - } - else { - $errMsg = $this->messages['pwdUnix'][0]; - array_push($errMsg, array($i)); - $triggered_messages[] = $errMsg; - } - // use no password - if ($rawAccounts[$i][$ids['sambaSamAccount_noPassword']] != "") { - if (in_array($rawAccounts[$i][$ids['sambaSamAccount_noPassword']], array('true', 'false'))) { - if ($rawAccounts[$i][$ids['sambaSamAccount_noPassword']] == 'true') { - $partialAccounts[$i]['sambaLMPassword'] = 'NO PASSWORD*****'; - $partialAccounts[$i]['sambaNTPassword'] = 'NO PASSWORD*****'; - } - } - else { - $errMsg = $this->messages['noPassword'][0]; - array_push($errMsg, array($i)); - $triggered_messages[] = $errMsg; - } - } - // account flags - $flag_expire = false; - $flag_deactivated = false; - // password does not expire - if ($rawAccounts[$i][$ids['sambaSamAccount_noExpire']] != "") { - if (in_array($rawAccounts[$i][$ids['sambaSamAccount_noExpire']], array('true', 'false'))) { - if ($rawAccounts[$i][$ids['sambaSamAccount_noExpire']] == 'false') { - $flag_expire = true; - } - } - else { - $errMsg = $this->messages['noExpire'][0]; - array_push($errMsg, array($i)); - $triggered_messages[] = $errMsg; - } - } - // account is deactivated - if ($rawAccounts[$i][$ids['sambaSamAccount_deactivated']] != "") { - if (in_array($rawAccounts[$i][$ids['sambaSamAccount_deactivated']], array('true', 'false'))) { - if ($rawAccounts[$i][$ids['sambaSamAccount_deactivated']] == 'true') { - $flag_deactivated = true; - } - } - else { - $errMsg = $this->messages['deactivated'][0]; - array_push($errMsg, array($i)); - $triggered_messages[] = $errMsg; - } - } - // set flags - $flags = "["; - if ($flag_deactivated) $flags = $flags . "D"; - if (!$flag_expire) $flags = $flags . "X"; - $flags = $flags . "U"; - // Expand string to fixed length - $flags = str_pad($flags, 12); - // End character - $flags = $flags . "]"; - $partialAccounts[$i]['sambaAcctFlags'] = $flags; - // passsword can be changed - if ($rawAccounts[$i][$ids['sambaSamAccount_pwdCanChange']] != "") { - if (get_preg($rawAccounts[$i][$ids['sambaSamAccount_pwdCanChange']], 'date')) { - $parts = explode("-", $rawAccounts[$i][$ids['sambaSamAccount_pwdCanChange']]); - $time = mktime(0, 0, 0, $parts[1], $parts[0], $parts[2]); - $partialAccounts[$i]['sambaPwdCanChange'] = $time; - } - else { - $errMsg = $this->messages['pwdCanChange'][0]; - array_push($errMsg, array($i)); - $triggered_messages[] = $errMsg; - } - } - // passsword must be changed - if ($rawAccounts[$i][$ids['sambaSamAccount_pwdMustChange']] != "") { - if (get_preg($rawAccounts[$i][$ids['sambaSamAccount_pwdMustChange']], 'date')) { - $parts = explode("-", $rawAccounts[$i][$ids['sambaSamAccount_pwdMustChange']]); - $time = mktime(0, 0, 0, $parts[1], $parts[0], $parts[2]); - $partialAccounts[$i]['sambaPwdMustChange'] = $time; - } - else { - $errMsg = $this->messages['pwdMustChange'][0]; - array_push($errMsg, array($i)); - $triggered_messages[] = $errMsg; - } - } - // home drive - if ($rawAccounts[$i][$ids['sambaSamAccount_homeDrive']] != "") { - if (eregi("[d-z]:", $rawAccounts[$i][$ids['sambaSamAccount_homeDrive']])) { - $partialAccounts[$i]['sambaHomeDrive'] = $rawAccounts[$i][$ids['sambaSamAccount_homeDrive']]; - } - else { - $errMsg = $this->messages['homeDrive'][0]; - array_push($errMsg, array($i)); - $triggered_messages[] = $errMsg; - } - } - // home path - if ($rawAccounts[$i][$ids['sambaSamAccount_homePath']] != "") { - if (get_preg($rawAccounts[$i][$ids['sambaSamAccount_homePath']], 'UNC')) { - $partialAccounts[$i]['sambaHomePath'] = $rawAccounts[$i][$ids['sambaSamAccount_homePath']]; - } - else { - $errMsg = $this->messages['homePath'][2]; - array_push($errMsg, array($i)); - $triggered_messages[] = $errMsg; - } - } - // profile path - if ($rawAccounts[$i][$ids['sambaSamAccount_profilePath']] != "") { - if (get_preg($rawAccounts[$i][$ids['sambaSamAccount_profilePath']], 'UNC')) { - $partialAccounts[$i]['sambaProfilePath'] = $rawAccounts[$i][$ids['sambaSamAccount_profilePath']]; - } - else { - $errMsg = $this->messages['profilePath'][2]; - array_push($errMsg, array($i)); - $triggered_messages[] = $errMsg; - } - } - // logon script - if ($rawAccounts[$i][$ids['sambaSamAccount_logonScript']] != "") { - if (get_preg($rawAccounts[$i][$ids['sambaSamAccount_logonScript']], 'logonscript')) { - $partialAccounts[$i]['sambaLogonScript'] = $rawAccounts[$i][$ids['sambaSamAccount_logonScript']]; - } - else { - $errMsg = $this->messages['logonScript'][2]; - array_push($errMsg, array($i)); - $triggered_messages[] = $errMsg; - } - } - // workstations - if ($rawAccounts[$i][$ids['sambaSamAccount_workstations']] != "") { - if (get_preg($rawAccounts[$i][$ids['sambaSamAccount_workstations']], 'workstations')) { - $partialAccounts[$i]['sambaUserWorkstations'] = $rawAccounts[$i][$ids['sambaSamAccount_workstations']]; - } - else { - $errMsg = $this->messages['workstations'][1]; - array_push($errMsg, array($i)); - $triggered_messages[] = $errMsg; - } - } - // domain - $domIndex = -1; - for ($d = 0; $d < sizeof($domains); $d++) { - if ($domains[$d]->name == $rawAccounts[$i][$ids['sambaSamAccount_domain']]) { - $domIndex = $d; - break; - } - } - if ($domIndex > -1) { - $partialAccounts[$i]['sambaDomainName'] = $domains[$domIndex]->name; - $partialAccounts[$i]['sambaSID'] = $domains[$domIndex]->SID; - } - else { - $errMsg = $this->messages['domain'][0]; - array_push($errMsg, array($i)); - $triggered_messages[] = $errMsg; - } - // group - if ($rawAccounts[$i][$ids['sambaSamAccount_group']] != "") { - if (get_preg($rawAccounts[$i][$ids['sambaSamAccount_group']], 'groupname') - && (isset($groups_cn[$rawAccounts[$i][$ids['sambaSamAccount_group']]]))) { - if (isset($groups_cn[$rawAccounts[$i][$ids['sambaSamAccount_group']]]['SID'])) { - $partialAccounts[$i]['sambaPrimaryGroupSID'] = $groups_cn[$rawAccounts[$i][$ids['sambaSamAccount_group']]]['SID']; - } - else { - $partialAccounts[$i]['sambaPrimaryGroupSID'] = $domains[$domIndex]->SID . '-' . - ($groups_cn[$rawAccounts[$i][$ids['sambaSamAccount_group']]]['gid'] * 2 + - $domains[$domIndex]->RIDbase + 1); - } - } - elseif (in_array($rawAccounts[$i][$ids['sambaSamAccount_group']], array_keys($this->rids))) { - $partialAccounts[$i]['sambaPrimaryGroupSID'] = $domains[$domIndex]->SID . '-' . $this->rids[$rawAccounts[$i][$ids['sambaSamAccount_group']]]; - } - else { - $errMsg = $this->messages['group'][0]; - array_push($errMsg, array($i)); - $triggered_messages[] = $errMsg; - } - } - else { - // default domain users - $partialAccounts[$i]['sambaPrimaryGroupSID'] = $domains[$domIndex]->SID . '-' . $this->rids[_('Domain Users')]; - } - // special user - if ($rawAccounts[$i][$ids['sambaSamAccount_rid']] != "") { - if (in_array($rawAccounts[$i][$ids['sambaSamAccount_rid']], array_keys($this->rids))) { - $partialAccounts[$i]['sambaSID'] .= '-' . $this->rids[$rawAccounts[$i][$ids['sambaSamAccount_rid']]]; - } - elseif (get_preg($rawAccounts[$i][$ids['sambaSamAccount_rid']], 'digit')) { - $partialAccounts[$i]['sambaSID'] .= '-' . $rawAccounts[$i][$ids['sambaSamAccount_rid']]; - } - else { - $errMsg = $this->messages['rid'][2]; - array_push($errMsg, array($i)); - $triggered_messages[] = $errMsg; - } - } - else { - // default RID uid*2 + RIDBase - $partialAccounts[$i]['sambaSID'] .= '-' . ($partialAccounts[$i]['uidNumber']*2 + $domains[$domIndex]->RIDbase); - } - // logon hours - if ($rawAccounts[$i][$ids['sambaSamAccount_logonHours']] != "") { - if (get_preg($rawAccounts[$i][$ids['sambaSamAccount_logonHours']], 'sambaLogonHours')) { - $partialAccounts[$i]['sambaLogonHours'] = $rawAccounts[$i][$ids['sambaSamAccount_logonHours']]; - } - else { - $errMsg = $this->messages['logonHours'][1]; - array_push($errMsg, array($i)); - $triggered_messages[] = $errMsg; - } - } - else { - $partialAccounts[$i]['sambaLogonHours'] = "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"; - } - } - } - else { // hosts - for ($i = 0; $i < sizeof($rawAccounts); $i++) { - if (!in_array("sambaSamAccount", $partialAccounts[$i]['objectClass'])) $partialAccounts[$i]['objectClass'][] = "sambaSamAccount"; - // domain - $domIndex = -1; - for ($d = 0; $d < sizeof($domains); $d++) { - if ($domains[$d]->name == $rawAccounts[$i][$ids['sambaSamAccount_domain']]) { - $domIndex = $d; - break; - } - } - if ($domIndex > -1) { - $partialAccounts[$i]['sambaDomainName'] = $domains[$domIndex]->name; - $partialAccounts[$i]['sambaSID'] = $domains[$domIndex]->SID; - $partialAccounts[$i]['sambaPrimaryGroupSID'] = $domains[$domIndex]->SID . " - 515"; - } - else { - $errMsg = $this->messages['domain'][0]; - array_push($errMsg, array($i)); - $triggered_messages[] = $errMsg; - } - // RID - if ($rawAccounts[$i][$ids['sambaSamAccount_rid']] != "") { - if (get_preg($rawAccounts[$i][$ids['sambaSamAccount_rid']], 'digit')) { - $partialAccounts[$i]['sambaSID'] .= '-' . $rawAccounts[$i][$ids['sambaSamAccount_rid']]; - } - else { - $errMsg = $this->messages['rid'][3]; - array_push($errMsg, array($i)); - $triggered_messages[] = $errMsg; - } - } - else { - // default RID uid*2 + RIDBase - $partialAccounts[$i]['sambaSID'] .= '-' . ($partialAccounts[$i]['uidNumber']*2 + $domains[$domIndex]->RIDbase); - } - // passwords ( = host name) - $partialAccounts[$i]['sambaLMPassword'] = lmPassword(substr($partialAccounts[$i]['uid'], 0, sizeof($partialAccounts[$i]['uid']) - 1)); - $partialAccounts[$i]['sambaNTPassword'] = ntPassword(substr($partialAccounts[$i]['uid'], 0, sizeof($partialAccounts[$i]['uid']) - 1)); - // flags - $partialAccounts[$i]['sambaAcctFlags'] = "[W ]"; - } - } - return $triggered_messages; - } - -} - -?> diff --git a/lam/lib/modules/shadowAccount.inc b/lam/lib/modules/shadowAccount.inc deleted file mode 100644 index aafa313b..00000000 --- a/lam/lib/modules/shadowAccount.inc +++ /dev/null @@ -1,457 +0,0 @@ -messages['shadowMin'][0] = array('ERROR', _('Password minage'), _('Password minimum age must be are natural number.')); - $this->messages['shadowMin'][1] = array('ERROR', _('Account %s:') . ' shadowAccount_minAge', _('Password minimum age must be are natural number.')); - $this->messages['shadowMax'][0] = array('ERROR', _('Password maxage'), _('Password maximum age must be are natural number.')); - $this->messages['shadowMax'][1] = array('ERROR', _('Account %s:') . ' shadowAccount_maxAge', _('Password maximum age must be are natural number.')); - $this->messages['inactive'][0] = array('ERROR', _('Password expiration'), _('Password expiration must be are natural number or -1.')); - $this->messages['inactive'][1] = array('ERROR', _('Account %s:') . ' shadowAccount_ignoreExpire', _('Password expiration must be are natural number or -1.')); - $this->messages['shadowWarning'][0] = array('ERROR', _('Password warning'), _('Password warning must be are natural number.')); - $this->messages['shadowWarning'][1] = array('ERROR', _('Account %s:') . ' shadowAccount_warning', _('Password warning must be are natural number.')); - $this->messages['shadow_cmp'][0] = array('ERROR', _('Password maxage'), _('Password maximum age must be bigger as password minimum age.')); - $this->messages['shadow_cmp'][1] = array('ERROR', _('Account %s:') . ' shadowAccount_min/maxAge', _('Password maximum age must be bigger as password minimum age.')); - $this->messages['shadow_expireDate'][0] = array('ERROR', _('Account %s:') . ' shadowAccount_expireDate', _('The expiration date is invalid.')); - } - - /** - * Returns meta data that is interpreted by parent class - * - * @return array array with meta data - */ - function get_metaData() { - $return = array(); - // manages user accounts - $return["account_types"] = array("user"); - // alias name - $return["alias"] = _('Shadow'); - // module dependencies - $return['dependencies'] = array('depends' => array('posixAccount'), 'conflicts' => array()); - // lists for expiration date - $day = array(); $mon = array(); $year = array(); - for ( $i=1; $i<=31; $i++ ) $day[] = $i; - for ( $i=1; $i<=12; $i++ ) $mon[] = $i; - for ( $i=2003; $i<=2030; $i++ ) $year[] = $i; - $return['profile_options'] = array( - // password warning - array( - 0 => array('kind' => 'text', 'text' => _('Password warning')), - 1 => array('kind' => 'input', 'name' => 'shadowAccount_shadowWarning', 'type' => 'text', 'size' => '5', 'maxlength' => '4', 'value' => ""), - 2 => array('kind' => 'help', 'value' => 'shadowWarning')), - // password expiration - array( - 0 => array('kind' => 'text', 'text' => _('Password expiration')), - 1 => array('kind' => 'input', 'name' => 'shadowAccount_shadowInactive', 'type' => 'text', 'size' => '5', 'maxlength' => '4', 'value' => ""), - 2 => array('kind' => 'help', 'value' => 'shadowInactive')), - // minimum password age - array( - 0 => array('kind' => 'text', 'text' => _('Minimum password age')), - 1 => array('kind' => 'input', 'name' => 'shadowAccount_shadowMin', 'type' => 'text', 'size' => '5', 'maxlength' => '5', 'value' => ""), - 2 => array('kind' => 'help', 'value' => 'shadowMin')), - // maximum password age - array( - 0 => array('kind' => 'text', 'text' => _('Maximum password age')), - 1 => array('kind' => 'input', 'name' => 'shadowAccount_shadowMax', 'type' => 'text', 'size' => '5', 'maxlength' => '5', 'value' => ""), - 2 => array('kind' => 'help', 'value' => 'shadowMax')), - // expiration date - array( - 0 => array('kind' => 'text', 'text' => _('Expiration date')), - 1 => array('kind' => 'table', 'value' => array( - 0 => array ( - 0 => array('kind' => 'select', 'name' => 'shadowAccount_shadowExpire_day', 'options' => $day), - 1 => array('kind' => 'select', 'name' => 'shadowAccount_shadowExpire_mon', 'options' => $mon), - 2 => array('kind' => 'select', 'name' => 'shadowAccount_shadowExpire_yea', 'options' => $year) - ) - )), - 2 => array('kind' => 'help', 'value' => 'shadowExpire')) - ); - // profile checks - $return['profile_checks']['shadowAccount_shadowMin'] = array( - 'type' => 'ext_preg', - 'regex' => 'digit', - 'error_message' => $this->messages['shadowMin'][0]); - $return['profile_checks']['shadowAccount_shadowMax'] = array( - 'type' => 'ext_preg', - 'regex' => 'digit', - 'error_message' => $this->messages['shadowMax'][0]); - $return['profile_checks']['shadowAccount_cmp'] = array( - 'type' => 'int_greater', - 'cmp_name1' => 'shadowAccount_shadowMax', - 'cmp_name2' => 'shadowAccount_shadowMin', - 'error_message' => $this->messages['shadow_cmp'][0]); - $return['profile_checks']['shadowAccount_shadowInactive'] = array( - 'type' => 'ext_preg', - 'regex' => 'digit2', - 'error_message' => $this->messages['inactive'][0]); - $return['profile_checks']['shadowAccount_shadowWarning'] = array( - 'type' => 'ext_preg', - 'regex' => 'digit', - 'error_message' => $this->messages['shadowWarning'][0]); - // profile mappings - $return['profile_mappings'] = array( - 'shadowAccount_shadowWarning' => 'shadowWarning', - 'shadowAccount_shadowInactive' => 'shadowInactive', - 'shadowAccount_shadowMin' => 'shadowMin', - 'shadowAccount_shadowMax' => 'shadowMax' - ); - // available PDF fields - $return['PDF_fields'] = array( - 'shadowLastChange', - 'shadowWarning', - 'shadowInactive', - 'shadowExpire', - 'description' - ); - // help Entries - $return['help'] = array ( - 'shadowWarning' => array ( - "Headline" => _("Password warning"), - "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.") - ), - 'shadowInactive' => array ( - "Headline" => _("Password expiration"), - "Text" => _("Number of days a user can login even his password has expired. -1=always."). ' '. _("Can be left empty.") - ), - 'shadowMin' => array ( - "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.") - ), - 'shadowMax' => array ( - "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.") - ), - 'shadowExpire' => array ( - "Headline" => _("Expiration date"), - "Text" => _("Account expiration date. Format: DD-MM-YYYY") - ) - ); - // upload fields - $return['upload_columns'] = array( - array( - 'name' => 'shadowAccount_warning', - 'description' => _('Password warning'), - 'help' => 'shadowWarning', - 'example' => '14' - ), - array( - 'name' => 'shadowAccount_expiration', - 'description' => _('Password expiration'), - 'help' => 'shadowInactive', - 'example' => '7' - ), - array( - 'name' => 'shadowAccount_minAge', - 'description' => _('Minimum password age'), - 'help' => 'shadowMin', - 'example' => '1' - ), - array( - 'name' => 'shadowAccount_maxAge', - 'description' => _('Maximum password age'), - 'help' => 'shadowMax', - 'example' => '365' - ), - array( - 'name' => 'shadowAccount_expireDate', - 'description' => _('Expiration date'), - 'help' => 'shadowExpire', - 'example' => '17-07-2011' - ) - ); - return $return; - } - - // Constructor - function init($base) { - // call parent init - parent::init($base); - } - - - function module_ready() { - return true; - } - - /* This functions return true - * if all needed settings are done - */ - function module_complete() { - if (!$this->module_ready()) return false; - return true; - } - - /* This function returns a list of all html-pages in module - * This is usefull for mass upload and pdf-files - * because lam can walk trough all pages itself and do some - * error checkings - */ - function pages() { - return array('attributes'); - } - - /* This function loads all attributes into the object - * $attr is an array as it's retured from ldap_get_attributes - */ - function load_attributes($attr) { - /* unset userPassword because: - * it is used by posixAccount - * it is a special attribute and stores encrypted in session - */ - unset($this->attributes['userPassword']); - unset($this->orig['userPassword']); - parent::load_attributes($attr); - return 0; - } - - /* This function returns an array with 3 entries: - * array( DN1 ('add' => array($attr), 'remove' => array($attr), 'modify' => array($attr)), DN2 .... ) - * DN is the DN to change. It may be possible to change several DNs, - * e.g. create a new user and add him to some groups via attribute memberUid - * add are attributes which have to be added to ldap entry - * remove are attributes which have to be removed from ldap entry - * modify are attributes which have to been modified in ldap entry - */ - function save_attributes() { - $return = $_SESSION[$this->base]->save_module_attributes($this->attributes, $this->orig); - - // Set shadowLastchange manual. - if (isset($_SESSION[$this->base]->module['posixAccount']->orig['userPassword'][0])) { - // TODO fixme ****** fix this behavoir - if ($_SESSION[$this->base]->module['posixAccount']->orig['userPassword'][0] != $_SESSION[$this->base]->module['posixAccount']->attributes['userPassword'][0] && $_SESSION[$this->base]->module['posixAccount']->attributes['userPassword'][0]!='') - $return[$_SESSION[$this->base]->dn]['modify']['shadowLastChange'] = array(intval(time()/3600/24)); - } - - return $return; - } - - function delete_attributes($post) { - return 0; - } - - /* Write variables into object and do some regexp checks - */ - function process_attributes(&$post) { - // Load attributes - $this->attributes['shadowMin'][0] = $post['shadowMin']; - $this->attributes['shadowMax'][0] = $post['shadowMax']; - $this->attributes['shadowWarning'][0] = $post['shadowWarning']; - $this->attributes['shadowInactive'][0] = $post['shadowInactive']; - $this->attributes['shadowExpire'][0] = intval(mktime(10, 0, 0, $post['shadowExpire_mon'], - $post['shadowExpire_day'], $post['shadowExpire_yea'])/3600/24); - - if ( !get_preg($this->attributes['shadowMin'][0], 'digit')) $triggered_messages['shadowMin'][] = $this->messages['shadowMin'][0]; - if ( !get_preg($this->attributes['shadowMax'][0], 'digit')) $triggered_messages['shadowMax'][] = $this->messages['shadowMax'][0]; - if ( $this->attributes['shadowMin'][0] > $this->attributes['shadowMax'][0]) $triggered_messages['shadowMin'][] = $this->messages['shadow_cmp'][0]; - if ( !get_preg($this->attributes['shadowInactive'][0], 'digit2')) $triggered_messages['shadowInactive'][] = $this->messages['inactive'][0]; - if ( !get_preg($this->attributes['shadowWarning'][0], 'digit')) $triggered_messages['shadowWarning'][] = $this->messages['shadowWarning'][0]; - if (count($triggered_messages)!=0) { - $this->triggered_messages = $triggered_messages; - return $triggered_messages; - } - else $this->triggered_messages = array(); - return 0; - } - - /* This function will create the html-page - * to show a page with all attributes. - * It will output a complete html-table - */ - function display_html_attributes(&$post) { - // Use dd-mm-yyyy format of date because it's easier to read for humans - $date = getdate ($this->attributes['shadowExpire'][0]*3600*24); - - $return[] = array ( 0 => array ( 'kind' => 'text', 'text' => _('Password warning') ), - 1 => array ( 'kind' => 'input', 'name' => 'shadowWarning', 'type' => 'text', 'size' => '4', 'maxlength' => '4', 'value' => $this->attributes['shadowWarning'][0] ), - 2 => array ( 'kind' => 'help', 'value' => 'shadowWarning' )); - $return[] = array ( 0 => array ( 'kind' => 'text', 'text' => _('Password expiration') ), - 1 => array ( 'kind' => 'input', 'name' => 'shadowInactive', 'type' => 'text', 'size' => '4', 'maxlength' => '4', 'value' => $this->attributes['shadowInactive'][0] ), - 2 => array ( 'kind' => 'help', 'value' => 'shadowInactive' )); - $return[] = array ( 0 => array ( 'kind' => 'text', 'text' => _('Minimum password age') ), - 1 => array ( 'kind' => 'input', 'name' => 'shadowMin', 'type' => 'text', 'size' => '5', 'maxlength' => '5', 'value' => $this->attributes['shadowMin'][0] ), - 2 => array ( 'kind' => 'help', 'value' => 'shadowMin' )); - $return[] = array ( 0 => array ( 'kind' => 'text', 'text' => _('Maximum password age') ), - 1 => array ( 'kind' => 'input', 'name' => 'shadowMax', 'type' => 'text', 'size' => '5', 'maxlength' => '5', 'value' => $this->attributes['shadowMax'][0] ), - 2 => array ( 'kind' => 'help', 'value' => 'shadowMax' )); - - for ( $i=1; $i<=31; $i++ ) $mday[] = $i; - for ( $i=1; $i<=12; $i++ ) $mon[] = $i; - for ( $i=2003; $i<=2030; $i++ ) $year[] = $i; - $return[] = array ( 0 => array ( 'kind' => 'text', 'text' => _('Expiration date') ), - 1 => array ( 'kind' => 'table', 'value' => array ( 0 => array ( 0 => array ( 'kind' => 'select', 'name' => 'shadowExpire_day', - 'options' => $mday, 'options_selected' => $date['mday']), - 1 => array ( 'kind' => 'select', 'name' => 'shadowExpire_mon', - 'options' => $mon, 'options_selected' => $date['mon']), - 2 => array ( 'kind' => 'select', 'name' => 'shadowExpire_yea', - 'options' => $year, 'options_selected' => $date['year'])))), - 2 => array ( 'kind' => 'help', 'value' => 'shadowExpire' )); - - return $return; - } - - function display_html_delete(&$post) { - return 0; - } - - /* - * (non-PHPDoc) - * @see baseModule#get_pdfEntries - */ - function get_pdfEntries($account_type = "user") { - return array( 'shadowAccount_shadowLastChange' => array('' . _('Last password change') . '' . $this->attributes['shadowLastChange'][0] . ''), - 'shadowAccount_shadowWarning' => array('' . _('Password warning') . '' . $this->attributes['shadowWarn'][0] . ''), - 'shadowAccount_shadowInactive' => array('' . _('Account inactive') . '' . $this->attributes['shadowInactive'][0] . ''), - 'shadowAccount_shadowExpire' => array('' . _('Password expiration') . '' . date('d. m. Y',$this->attributes['shadowExpire'][0]) . ''), - 'shadowAccount_description' => array('' . _('Description') . '' . $this->attributes['description'][0] . '')); - } - - /** - * In this function the LDAP account is built up. - * - * @param array $rawAccounts list of hash arrays (name => value) from user input - * @param array $partialAccounts list of hash arrays (name => value) which are later added to LDAP - * @param array $ids list of IDs for column position (e.g. "posixAccount_uid" => 5) - * @return array list of error messages if any - */ - function build_uploadAccounts($rawAccounts, $ids, &$partialAccounts) { - $messages = array(); - for ($i = 0; $i < sizeof($rawAccounts); $i++) { - // add object class - if (!in_array("shadowAccount", $partialAccounts[$i]['objectClass'])) $partialAccounts[$i]['objectClass'][] = "shadowAccount"; - // password warning - if ($rawAccounts[$i][$ids['shadowAccount_warning']] != '') { - if (get_preg($rawAccounts[$i][$ids['shadowAccount_warning']], 'digit')) { - $partialAccounts[$i]['shadowWarning'][] = $rawAccounts[$i][$ids['shadowAccount_warning']]; - } - else { - $errMsg = $this->messages['shadowWarning'][1]; - array_push($errMsg, array($i)); - $messages[] = $errMsg; - } - } - // password expire ignoration - if ($rawAccounts[$i][$ids['shadowAccount_ignoreExpire']] != '') { - if (get_preg($rawAccounts[$i][$ids['shadowAccount_ignoreExpire']], 'digit2')) { - $partialAccounts[$i]['shadowInactive'][] = $rawAccounts[$i][$ids['shadowAccount_ignoreExpire']]; - } - else { - $errMsg = $this->messages['inactive'][1]; - array_push($errMsg, array($i)); - $messages[] = $errMsg; - } - } - // password minAge - if ($rawAccounts[$i][$ids['shadowAccount_minAge']] != '') { - if (get_preg($rawAccounts[$i][$ids['shadowAccount_minAge']], 'digit')) { - $partialAccounts[$i]['shadowMin'][] = $rawAccounts[$i][$ids['shadowAccount_minAge']]; - } - else { - $errMsg = $this->messages['shadowMin'][1]; - array_push($errMsg, array($i)); - $messages[] = $errMsg; - } - } - // password maxAge - if ($rawAccounts[$i][$ids['shadowAccount_maxAge']] != '') { - if (get_preg($rawAccounts[$i][$ids['shadowAccount_maxAge']], 'digit')) { - $partialAccounts[$i]['shadowMax'][] = $rawAccounts[$i][$ids['shadowAccount_maxAge']]; - } - else { - $errMsg = $this->messages['shadowMax'][1]; - array_push($errMsg, array($i)); - $messages[] = $errMsg; - } - } - // minAge <= maxAge - if ((($rawAccounts[$i][$ids['shadowAccount_minAge']] != '') || ($rawAccounts[$i][$ids['shadowAccount_maxAge']] != '')) && // if at least one is set - (($rawAccounts[$i][$ids['shadowAccount_minAge']] == '') || ($rawAccounts[$i][$ids['shadowAccount_maxAge']] == '') || ( // and one is not set - ($rawAccounts[$i][$ids['shadowAccount_minAge']] > $rawAccounts[$i][$ids['shadowAccount_maxAge']])))) { // or minAge > maxAge - $errMsg = $this->messages['shadow_cmp'][1]; - array_push($errMsg, array($i)); - $messages[] = $errMsg; - } - // expiration date - if ($rawAccounts[$i][$ids['shadowAccount_expireDay']] != '') { - if (get_preg($rawAccounts[$i][$ids['shadowAccount_expireDay']], 'date')) { - $parts = explode('-', $rawAccounts[$i][$ids['shadowAccount_expireDay']]); - $partialAccounts[$i]['shadowExpire'][] = intval(mktime(10, 0, 0, $parts[1], $parts[0], $parts[2])/3600/24); - } - else { - $errMsg = $this->messages['shadow_expireDate'][0]; - array_push($errMsg, array($i)); - $messages[] = $errMsg; - } - } - } - return $messages; - } - - /** - * Loads the values of an account profile into internal variables. - * - * @param array $profile hash array with profile values (identifier => value) - */ - function load_profile($profile) { - // profile mappings in meta data - parent::load_profile($profile); - // special profile options - // expiration date - if (isset($profile['shadowAccount_shadowExpire_day'][0]) && ($profile['shadowAccount_shadowExpire_day'][0] != "")) { - $date = intval(mktime(10, 0, 0, $profile['shadowAccount_shadowExpire_mon'][0], - $profile['shadowAccount_shadowExpire_day'][0], $profile['shadowAccount_shadowExpire_yea'][0])/3600/24); - $this->attributes['shadowExpire'][0] = $date; - } - } - -} - -?> diff --git a/lam/lib/pdf.inc b/lam/lib/pdf.inc deleted file mode 100644 index 4370621c..00000000 --- a/lam/lib/pdf.inc +++ /dev/null @@ -1,472 +0,0 @@ -get_type()) { - $account_type = $accounts[0]->get_type(); - } - // Get PDF structure from xml file - $load = loadPDFStructureDefinitions($account_type,$pdf_structure); - $structure = $load['structure']; - - // The decimal separator must be a dot in order to write pdf-files - setlocale(LC_NUMERIC, "C"); - - $fontName = "BitstreamVeraSans-Roman"; // TODO: load font name from XML file - - // Create a new PDF file acording to the account type - $pdf = new LamPDF($account_type,$load['page_definitions'],$fontName); - - // Loop over each account and add a new page in the PDF file for it - foreach($accounts as $account) { - - // Start a new page for each account - $pdf->AddPage(); - - // Get PDF entries for the current account - $entries = $account->get_pdfEntries($account_type); - - // Now create the PDF file acording to the structure with the submitted values - foreach($structure as $entry) { - // We have a new section to start - if($entry['tag'] == "SECTION" && $entry['type'] == "open") { - $name = $entry['attributes']['NAME']; - if(preg_match("/^\_[a-zA-Z\_]+/",$name)) { - $section_headline = getSectionHeadline($entries[substr($name,1)][0]); - } - else { - $section_headline = $name; - } - $pdf->setFont($fontName,"B",12); - $pdf->Write(0,$section_headline . ":"); - $pdf->Ln(6); - } - // We have a section to end - elseif($entry['tag'] == "SECTION" && $entry['type'] == "close") { - $pdf->Ln(9); - } - // We have to include a static text. - elseif($entry['tag'] == "TEXT") { - // Load PDF text from structure array - $info_string = $entry['value']; - // 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 - elseif (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 - elseif (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); - // Set font for text - $pdf->setFont($fontName,"",10); - $pdf->MultiCell(0,5,$info_string,0,"L",0); - // Print linebreak afterwards - $pdf->Ln(6); - } - // We have to include an entry from the account - elseif($entry['tag'] == "ENTRY") { - // Get name of current entry - $name = $entry['attributes']['NAME']; - - // Get current entry - $value_entry = $entries[$name]; - - // Print entry only when module sumitted values for it - if(is_array($value_entry)) { - // Loop over all rows of this entry (most of the time this will be just one) - foreach($value_entry as $line) { - // Substitue XML syntax with valid FPDF methods - $methods = processLine($line,true,$fontName); - // Call every method - foreach($methods as $method) { - call_user_func_array(array(&$pdf,$method[0]),$method[1]); - } - } - } - $key = false; - } - } - } - - // Close PDF - $pdf->Close(); - // Get relative url path - $fullpath = realpath('.'); - $subdirs = explode('/', str_replace($_SESSION['lampath'], '', $fullpath)); - for ($i=0; $irand . time() .'.pdf'; - // Save PDF - $pdf->Output($filename); - // Output meta refresh to pdf-file - metaRefresh($filename); - // Return relative path of pdf-file - return $filename; -} - -/** - * Creates a section headline. - * - * @param string $line section name - * - * @return string XML code for headline - */ -function getSectionHeadline($line) { - $headline_pattern = '/.*(.*)<\/value><\/block>/'; - if(preg_match($headline_pattern,$line,$matches)) { - $valueStyle = processFormatTags($matches[1],''); - return $valueStyle[1]; - } - else { - return ''; - } -} - -/** - * Creates the XML code for an PDF entry. - * - * @param string $line XML code of PDF entry - * @param boolean $first_td True if this is the first column - * - * @return array XML codes - */ -function processLine($line,$first_td = true, $fontName) { - global $key, $line_width; - - // PCRE matching tag - $block_pattern = '/<\/block>/'; - // PCRE matching a tag - $key_pattern = '/()(.+)<\/key>(.*<\/block>)/'; - // PCRE matching a tag - // !!FIXME!! value must contain at least one character - $value_pattern = '/(.*)(.*)<\/value>(<\/block>)/'; - // PCRE matching a tag - $td_pattern = '/(.*?)(.+?)<\/td>(.*<\/block>)/'; - // PCRE matching tag - $tr_pattern = '/<\/tr>/'; - // PCRE matching a

tag - $p_pattern = '/(.*)

(.+)<\/p>(.*<\/block>)/'; - // PCRE matching a
tag - $br_pattern = '/
/'; - - $return = array(); - if(preg_match($key_pattern,$line,$matches)) { - $key = true; - $line_width = $line_width - 50; - $format = processFormatTags($matches[2],'B'); - $return[] = array('setFont',array($fontName,$format[0],9)); - $return[] = array('Cell',array(50,5,$format[1] . ':',0,0,'R',0)); - $return[] = array('setFont',array($fontName,'',9)); - return array_merge($return,processLine($matches[1] . $matches[3],false,$fontName)); - } - elseif(preg_match($value_pattern,$line,$matches)) { - $format = processFormatTags($matches[2],''); - $return[] = array('setFont',array($fontName,$format[0],9)); - $return[] = array('MultiCell',array(0,5,$format[1],0,'L',0)); - $return[] = array('setFont',array($fontName,'',9)); - return array_merge($return,processLine($matches[1] . $matches[3],true,$fontName)); - } - elseif(preg_match($p_pattern,$line,$matches)) { - $format = processFormatTags($matches[2],''); - $return[] = array('setFont',array($fontName,$format[0],9)); - $return[] = array('Write',array(5,$format[1])); - $return[] = array('setFont',array($fontName,'',9)); - return array_merge($return,processLine($matches[1] . $matches[3],true,$fontName)); - } - elseif(preg_match($td_pattern,$line,$matches)) { - if($first_td && $key) { - $first_td = !$first_td; - $return[] = array('Cell',array(50,5,'',0,0,'L',0)); - } - $format = processFormatTags($matches[3],''); - $attrs = processAttributes($matches[2],array('width' => $line_width,'height' => 5,'align' => 'L')); - $return[] = array('setFont',array($fontName,$format[0],9)); - $return[] = array('Cell',array($attrs['width'],$attrs['height'],$format[1],0,0,$attrs['align'],0)); - $return[] = array('setFont',array($fontName,'',9)); - return array_merge($return,processLine($matches[1] . $matches[4],$first_td,$fontName)); - } - elseif(preg_match($br_pattern,$line,$matches)) { - return array(array('Ln',array(5))); - } - elseif(preg_match($block_pattern,$line,$matches)) { - $line_width = LAMPDF_LINEWIDTH; - return array(); - } - elseif(preg_match($tr_pattern,$line,$matches)) { - $line_width = LAMPDF_LINEWIDTH; - return array(array('Ln',array(5))); - } -} - -/** - * Formats the XML code. - * - * @param string $line XML code of PDF entry - * @param string $style style commands - * - * @return array XML code - */ -function processFormatTags($line,$style) { - // PCRE matching a tag - $i_pattern = '/(.*)(.+)<\/i>(.*)/'; - // PCRE matching a tag - $b_pattern = '/(.*)(.+)<\/b>(.*)/'; - // PCRE matching a tag - $u_pattern = '/(.*)(.+)<\/u>(.*)/'; - // Replacement pattern when one of the above pattern matched - $replace = "\$1\$2\$3"; - - if(preg_match($i_pattern,$line,$matches)) { - $style .= "I"; - $line = preg_replace($i_pattern,$replace,$line); - } - if(preg_match($b_pattern,$line,$matches)) { - $style .= "B"; - $line = preg_replace($b_pattern,$replace,$line); - } - if(preg_match($u_pattern,$line,$matches)) { - $style .= "U"; - $line = preg_replace($u_pattern,$replace,$line); - } - return array($style,$line); -} - -/** - * Processes width, height and alignment attributes. - * - * @param string $attrs attributes - * @param array $return XML code - * - * @return array XML code - */ -function processAttributes($attrs,$return = array()) { - global $line_width; - - // PCRE matching width attribute - $width_pattern = '/(.*)width\=\"(\\d+)(\%?)\"(.*)/'; - // PCRE matching height attribute - $height_pattern = '/(.*)height\=\"(\\d+)\"(.*)/'; - // PCRE matching align attribute - $align_pattern = '/(.*)align\=\"(L|R|C)\"(.*)/'; - - // Remove leading and trailing whitespaces - $attrs = trim($attrs); - - if(preg_match($width_pattern,$attrs,$matches)) { - if($matches[3] == '%') { - $return['width'] = ceil($line_width * $matches[2] / 100); - } - else { - $return['width'] = ceil($matches[2]); - } - return processAttributes($matches[1] . $matches[4],$return); - } - elseif(preg_match($height_pattern,$attrs,$matches)) { - $return['height'] = $matches[2]; - return processAttributes($matches[1] . $matches[3],$return); - } - elseif(preg_match($align_pattern,$attrs,$matches)) { - $return['align'] = $matches[2]; - return processAttributes($matches[1] . $matches[3],$return); - } - else { - return $return; - } -} - - -/** - * Creates a LAM information page in PDF format. - * - * @author Michael Dürgner - * @package PDF - */ -class lamPDF extends UFPDF { - - /** - * format settings for page layout - */ - var $page_definitions; - - /** - * current active font name - */ - var $fontName; - - /** - * list of supported fonts - * format: => array(, , , ) - */ - var $fontList = array( - 'BitstreamVeraSans-Roman' => array('vera.php', 'verab.php', 'verabi.php', 'verai.php') - ); - - /** - * - * - * @param string $account_type - * @param array $page_definitions - */ - function lamPDF($account_type = "user",$page_definitions = array(),$fontName) { - $this->fontName = $fontName; - define('FPDF_FONTPATH', $_SESSION['lampath'] . "lib/" . 'font/'); - // Call constructor of superclass - $this->FPDF('P','mm','A4'); - - $this->page_definitions = $page_definitions; - - // Decide which PDF file type we shall use - switch($account_type) { - case "user": - $subject = _("User information page"); - break; - case "group": - $subject = _("Group information page"); - break; - case "host": - $subject = _("Host information page"); - break; - } - - // Open PDF file and write some basic information - $this->Open(); - $this->AddFont($this->fontName, '', $this->fontList[$this->fontName][0]); - $this->AddFont($this->fontName, 'B', $this->fontList[$this->fontName][1]); - $this->AddFont($this->fontName, 'I', $this->fontList[$this->fontName][2]); - $this->AddFont($this->fontName, 'BI', $this->fontList[$this->fontName][3]); - $this->setFont($this->fontName,"",12); - $this->setTitle($this->page_definitions['headline']); - $this->setSubject($subject); - $this->setAuthor("LDAP Account Manager Devel-Team -Michael Duergner-"); - $this->setCreator("LDAP Account Manager (pdf.inc)"); - $this->setMargins($this->page_definitions['margin-left'],$this->page_definitions['margin-top'],$this->page_definitions['margin-right']); - $this->setAutoPageBreak(true,$this->page_definitions['margin-bottom']); - } - - /** - * - */ - function header() { - if($this->page_definitions['filename'] != 'none') { - $imageFile = substr(__FILE__,0,strlen(__FILE__)- 11) . "config/pdf/logos/" . $this->page_definitions['filename']; - $width = $this->page_definitions['logo-width']; - $height = $this->page_definitions['logo-height']; - if($this->page_definitions['logo-max'] == true) { - if(($width / $height) <= 2.5) { - $factor = 20 / $height; - $width = $factor * $width; - $height = 20; - } - else { - $factor = 50 / $width; - $height = $factor * $height; - $width = 50; - } - } - $this->Image($imageFile,10,10,$width,$height,"JPG"); - } - $this->SetFont($this->fontName,"B",22); - $this->Cell(170,5,$this->page_definitions['headline'],0,1,"R",0); - $this->Ln(3); - $this->SetFont($this->fontName,"",14); - $this->Cell(170,5,"- " . $this->subject . " -",0,0,"R",0); - $this->SetLineWidth(0.8); - $this->Line(10,$this->page_definitions['margin-top'] + 30,200,$this->page_definitions['margin-top'] + 30); - $this->Line(10,$this->page_definitions['margin-top'] + 32,200,$this->page_definitions['margin-top'] + 32); - $this->SetY(50); - } - - /** - * - */ - 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); - } -} \ No newline at end of file diff --git a/lam/lib/pdfstruct.inc b/lam/lib/pdfstruct.inc deleted file mode 100644 index 2f534f39..00000000 --- a/lam/lib/pdfstruct.inc +++ /dev/null @@ -1,190 +0,0 @@ -parse($file); - $border = array(); - $structure = array(); - $complete_page_definitions = array('filename' => 'printLogo.jpg', 'headline' => 'LDAP Account Manager', 'margin-top' => '10.0', 'margin-bottom' => '20.0', 'margin-left' => '10.0', 'margin-right' => '10.0'); - if($xml[0][$xml[1]['PDF'][0]]['attributes']['TYPE'] == $scope) { - $border['start'] = $xml[1]['PDF'][0]; - $page_definitions = $xml[0][$xml[1]['PDF'][0]]['attributes']; - foreach($page_definitions as $key => $value) { - $complete_page_definitions[strtolower($key)] = $value; - unset($page_definitions[$key]); - } - $border['end'] = $xml[1]['PDF'][1]; - } - $structure = array_slice($xml[0],$border['start'] + 1,$border['end'] - ($border['start'] + 1)); - return array('structure' => $structure, 'page_definitions' => $complete_page_definitions); -} - - -/** - * Saves PDF structure definitions to XML file in format: ..xml - * - * @param string $scope account type - * @param string $definition Name of definition - * @return string "no perms" if access denied or "ok". - */ -function savePDFStructureDefinitions($scope,$definition) { - if (!preg_match('/[a-zA-Z0-9\-\_]+/',$definition)) return 'no perms'; - if (!preg_match('/[a-zA-Z]+/',$scope)) return 'no perms'; - $struct_file = ($_SESSION['lampath'] . 'config/pdf/' . $definition . '.' . $scope . '.xml'); - if(!is_writable($_SESSION['lampath'] . 'config/pdf/')) { - return 'no perms'; - } - else { - $handle = fopen($struct_file,'w'); - $pdf_attributes = ''; - foreach($_SESSION['currentPageDefinitions'] as $key => $value) { - if($key != 'type') { - $pdf_attributes .= ' ' . $key . '="' . $value . '"'; - } - } - $file = '\n"; - foreach($_SESSION['currentPDFStructure'] as $entry) { - $ident = ''; - for($i=0;$i<$entry['level'] -1;$i++) { - $ident .= "\t"; - } - $attributes = ''; - if(is_array($entry['attributes'])) { - foreach($entry['attributes'] as $key => $value) { - $attributes .= ' ' . strtolower($key) . '="' . $value . '"'; - } - } - if($entry['type'] == 'open') { - $file .= $ident . '<' . strtolower($entry['tag']) . $attributes . ">\n"; - } - elseif($entry['type'] == 'close') { - $file .= $ident . '\n"; - } - elseif($entry['type'] == 'complete') { - if(isset($entry['value'])) { - $file .= $ident . '<' . strtolower($entry['tag']) . $attributes . '>' . $entry['value'] . '\n"; - } - else { - $file .= $ident . '<' . strtolower($entry['tag']) . $attributes . " />\n"; - } - } - } - $file .= ""; - fwrite($handle,$file); - fclose($handle); - return 'ok'; - } -} - -/** - * Deletes XML file with PDF structure definitions. - * - * @param string $scope account type - * @param string $definition Name of definition to delete - * - * @return boolean True if file was deleted or false if a problem occured. - */ -function deletePDFStructureDefinition($scope, $definition) { - if (!preg_match('/[a-zA-Z0-9\-\_]+/',$definition)) return false; - if (!preg_match('/[a-zA-Z]+/',$scope)) return false; - $file = $_SESSION['lampath'] . 'config/pdf/' . $definition . '.' . $scope . '.xml'; - if(is_file($file) && is_writable($file)) { - return unlink($file); - } - else { - return false; - } - -} - -/** - * This function returns an array with all aviliable logo images. - * - * @return array list of logo files - */ -function getAvailableLogos() { - $return = array(); - $dirPath = $_SESSION['lampath'] . '/config/pdf/logos/'; - $dirHandle = opendir($dirPath); - while($file = readdir($dirHandle)) { - if(!is_dir($file) && $file != '.' && $file != '..' && preg_match('/\\.(jpg|png)$/',$file)) { - $infos = getimagesize($dirPath . $file); - if($infos[0] <= 400 && $infos[1] <= 60) { - array_push($return, array('filename' => $file, 'infos' => $infos)); - } - } - } - sort($return); - return $return; -} -?> \ No newline at end of file diff --git a/lam/lib/profiles.inc b/lam/lib/profiles.inc deleted file mode 100644 index 93dc4251..00000000 --- a/lam/lib/profiles.inc +++ /dev/null @@ -1,158 +0,0 @@ -read(); - while ($entry){ - // check if filename ends with . - if (strrpos($entry, '.')) { - $pos = strrpos($entry, '.'); - if (substr($entry, $pos + 1) == $scope) { - $name = substr($entry, 0, $pos); - $ret[] = $name; - } - } - $entry = $dir->read(); - } - } - return $ret; -} - -/** -* Loads an profile of the given account type -* -* @param string $profile name of the profile (without . extension) -* @param string $scope account type -* @return array hash array (attribute => value) -*/ -function loadAccountProfile($profile, $scope) { - if (!eregi("^[0-9a-z_-]+$", $profile) || !eregi("^[a-z]+$", $scope)) return false; - $settings = array(); - $file = substr(__FILE__, 0, strlen(__FILE__) - 17) . "/config/profiles/" . $profile . "." . $scope; - 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 - $parts = array(); - $parts = split(": ", $line); - if (sizeof($parts) != 2) continue; // ignore malformed settings - else { - $option = $parts[0]; - $value = $parts[1]; - // remove line ends - $value = chop($value); - $settings[$option] = explode("+::+", $value); - } - } - fclose($file); - } - else { - StatusMessage("ERROR", "", _("Unable to load profile!") . " " . $file); - } - } - else { - StatusMessage("ERROR", "", _("Unable to load profile!") . " " . $file); - } - return $settings; -} - -/** -* Saves an hash array (attribute => value) to an account profile -* -* file is created, if needed -* -* @param string $profile name of the account profile (without . extension) -* @param array $attributes hash array (attribute => value) -* @param string $scope account type -* @return boolean true, if saving succeeded -*/ -function saveAccountProfile($attributes, $profile, $scope) { - if (!$_SESSION['loggedIn'] == true) return false; - // check profile name - if (!eregi("^[0-9a-z_-]+$", $profile) || !eregi("^[a-z]+$", $scope)) return false; - if (!is_array($attributes)) { - return false; - } - $path = substr(__FILE__, 0, strlen(__FILE__) - 17) . "/config/profiles/" . $profile . "." . $scope; - $file = @fopen($path, "w"); - if ($file) { - // write attributes - $keys = array_keys($attributes); - for ($i = 0; $i < sizeof($keys); $i++) { - if (isset($attributes[$keys[$i]])) { - $line = $keys[$i] . ": " . implode("+::+", $attributes[$keys[$i]]) . "\n"; - } - else { - $line = $keys[$i] . ": \n"; - } - fputs($file, $line); - } - // close file - fclose($file); - } - else { - return false; - } - return true; -} - -/** -* Deletes an account profile -* -* @param string $file name of profile (Without . extension) -* @param string $scope account type -* @return boolean true if profile was deleted -*/ -function delAccountProfile($file, $scope) { - if (!$_SESSION['loggedIn'] == true) return false; - if (!eregi("^[0-9a-z\\-_]+$", $file) || !eregi("^[0-9a-z\\-_]+$", $scope)) return false; - $prof = substr(__FILE__, 0, strlen(__FILE__) - 16) . "config/profiles/" . $file . "." . $scope; - if (is_file($prof)) { - return @unlink($prof); - } - else return false; -} - - -?> diff --git a/lam/lib/schema.inc b/lam/lib/schema.inc deleted file mode 100644 index 180688e8..00000000 --- a/lam/lib/schema.inc +++ /dev/null @@ -1,2037 +0,0 @@ -oid = null; - $this->description = null; - } - - /** Default constructor. */ - function SchemaItem() - { - $this->initVars(); - } - - function setOID( $new_oid ) - { - $this->oid = $new_oid; - } - - function setDescription( $new_desc ) - { - $this->description = $new_desc; - } - - function getOID() - { - return $this->oid; - } - - function getDescription() - { - return $this->description; - } - } - -/** - * Represents an LDAP objectClass - * - * @package lib - */ -class ObjectClass extends SchemaItem -{ - /** This objectClass' name, ie "inetOrgPerson" */ - var $name; - /** array of objectClass names from which this objectClass inherits */ - var $sup_classes; - /** one of STRUCTURAL, ABSTRACT, or AUXILIARY */ - var $type; - /** arrays of attribute names that this objectClass requires */ - var $must_attrs; - /** arrays of attribute names that this objectClass allows, but does not require */ - var $may_attrs; - /** boolean value indicating whether this objectClass is obsolete */ - var $is_obsolete; - /** array of objectClasses which inherit from this one (must be set at runtime explicitly by the caller) */ - var $children_objectclasses; - - /** Initialize the class' member variables */ - function initVars() - { - parent::initVars(); - $this->oid = null; - $this->name = null; - $this->description = null; - $this->sup_classes = array(); - $this->type = null; - $this->must_attrs = array(); - $this->may_attrs = array(); - $this->is_obsolete = false; - $this->children_objectclasses = array(); - } - - /** - * Creates a new ObjectClass object given a raw LDAP objectClass string. - */ - function ObjectClass( $raw_ldap_schema_string ) - { - $this->initVars(); - $class = $raw_ldap_schema_string; - $strings = preg_split ("/[\s,]+/", $class, -1,PREG_SPLIT_DELIM_CAPTURE); - for($i=0; $iname)==0) - $this->name = $strings[$i]; - else - $this->name .= " " . $strings[$i]; - }while(!preg_match("/\'$/s", $strings[$i])); - } else { - $i++; - do { - $i++; - if(strlen($this->name) == 0) - $this->name = $strings[$i]; - else - $this->name .= " " . $strings[$i]; - } while(!preg_match("/\'$/s", $strings[$i])); - do { - $i++; - }while($strings[$i]!=")"); - } - $this->name = preg_replace("/^\'/", "", $this->name); - $this->name = preg_replace("/\'$/", "", $this->name); - break; - case 'DESC': - do { - $i++; - if(strlen($this->description)==0) - $this->description=$this->description . $strings[$i]; - else - $this->description=$this->description . " " . $strings[$i]; - }while(!preg_match("/\'$/s", $strings[$i])); - break; - case 'OBSOLETE': - $this->is_obsolete = TRUE; - break; - case 'SUP': - if($strings[$i+1]!="(") { - $i++; - array_push ($this->sup_classes, $strings[$i]); - }else{ - $i++; - do { - $i++; - if($strings[$i]!="$") - array_push( $this->sup_classes, $strings[$i] ); - }while($strings[$i+1]!=")"); - } - break; - case 'ABSTRACT': - $this->type='abstract'; - break; - case 'STRUCTURAL': - $this->type='structural'; - break; - case 'AUXILIARY': - $this->type='auxiliary'; - break; - case 'MUST': - if (preg_match("/^\(./",$strings[$i+1])) - { - $i++; - $attr = new ObjectClassAttribute(preg_replace("/^\(/","",$strings[$i]), $this->name); - array_push ($this->must_attrs, $attr); - } - elseif($strings[$i+1]!="(") - { - $i++; - $attr = new ObjectClassAttribute($strings[$i], $this->name); - array_push ($this->must_attrs, $attr); - }else{ - $i++; - do { - $i++; - if($strings[$i]!="$") - { - $attr = new ObjectClassAttribute($strings[$i], $this->name); - array_push ($this->must_attrs, $attr); - } - }while($strings[$i+1]!=")"); - } - sort($this->must_attrs); - break; - case 'MAY': - if (preg_match("/^\(./",$strings[$i+1])) - { - $i++; - $attr = new ObjectClassAttribute(preg_replace("/^\(/","",$strings[$i]), $this->name); - array_push ($this->may_attrs, $attr); - } - elseif($strings[$i+1]!="(") - { - $i++; - $attr = new ObjectClassAttribute($strings[$i], $this->name); - array_push ($this->may_attrs, $attr); - }else{ - $i++; - do - { - $i++; - if($strings[$i]!="$") - { - $attr = new ObjectClassAttribute($strings[$i], $this->name); - array_push ($this->may_attrs, $attr); - } - }while($strings[$i+1]!=")"); - } - sort($this->may_attrs); - break; - default: - if(preg_match ("/[\d\.]+/i",$strings[$i]) && $i == 1) - $this->oid = $strings[$i]; - } - } - - $this->description = preg_replace("/^\'/", "", $this->description); - $this->description = preg_replace("/\'$/", "", $this->description); - } - - /** - * Gets an array of AttributeType objects that entries of this ObjectClass must define. - * This differs from getMustAttrNames in that it returns an array of AttributeType objects - * - * @param array $oclasses An array of ObjectClass objects to use when traversing - * the inheritance tree. This presents some what of a bootstrapping problem - * as we must fetch all objectClasses to determine through inheritance which - * attributes this objectClass requires. - * @return array The array of required AttributeType objects. - * - * @see getMustAttrNames - * @see getMayAttrs - * @see getMayAttrNames - */ - function getMustAttrs($oclasses = NULL) - { - $all_must_attrs = array(); - $all_must_attrs = $this->must_attrs; - foreach( $this->sup_classes as $sup_class) - { - if( $oclasses != null - && $sup_class != "top" - && isset( $oclasses[ strtolower($sup_class) ] ) ) { - $sup_class = $oclasses[ strtolower($sup_class) ]; - $sup_class_must_attrs = $sup_class->getMustAttrs( $oclasses ); - $all_must_attrs = array_merge( $sup_class_must_attrs, $all_must_attrs ); - } - } - - ksort($all_must_attrs); - return $all_must_attrs; - } - - /** - * Gets an array of AttributeType objects that entries of this ObjectClass may define. - * This differs from getMayAttrNames in that it returns an array of AttributeType objects - * - * @param array $oclasses An array of ObjectClass objects to use when traversing - * the inheritance tree. This presents some what of a bootstrapping problem - * as we must fetch all objectClasses to determine through inheritance which - * attributes this objectClass provides. - * @return array The array of allowed AttributeType objects. - * - * @see getMustAttrNames - * @see getMustAttrs - * @see getMayAttrNames - * @see AttributeType - */ - function getMayAttrs($oclasses = NULL) - { - $all_may_attrs = array(); - $all_may_attrs = $this->may_attrs; - foreach( $this->sup_classes as $sup_class_name ) - { - if( $oclasses != null - && $sup_class_name != "top" - && isset( $oclasses[ strtolower($sup_class_name) ] ) ) { - $sup_class = $oclasses[ strtolower($sup_class_name) ]; - $sup_class_may_attrs = $sup_class->getMayAttrs( $oclasses ); - $all_may_attrs = array_merge( $sup_class_may_attrs, $all_may_attrs ); - } - } - - ksort($all_may_attrs); - return $all_may_attrs; - } - - /** - * Gets an array of attribute names (strings) that entries of this ObjectClass must define. - * This differs from getMustAttrs in that it returns an array of strings rather than - * array of AttributeType objects - * - * @param array $oclasses An array of ObjectClass objects to use when traversing - * the inheritance tree. This presents some what of a bootstrapping problem - * as we must fetch all objectClasses to determine through inheritance which - * attributes this objectClass provides. - * @return array The array of allowed attribute names (strings). - * - * @see getMustAttrs - * @see getMayAttrs - * @see getMayAttrNames - */ - function getMustAttrNames( $oclasses = null ) - { - $attrs = $this->getMustAttrs( $oclasses ); - $attr_names = array(); - foreach( $attrs as $attr ) - $attr_names[] = $attr->getName(); - return $attr_names; - } - - /** - * Gets an array of attribute names (strings) that entries of this ObjectClass must define. - * This differs from getMayAttrs in that it returns an array of strings rather than - * array of AttributeType objects - * - * @param array $oclasses An array of ObjectClass objects to use when traversing - * the inheritance tree. This presents some what of a bootstrapping problem - * as we must fetch all objectClasses to determine through inheritance which - * attributes this objectClass provides. - * @return array The array of allowed attribute names (strings). - * - * @see getMustAttrs - * @see getMayAttrs - * @see getMustAttrNames - */ - function getMayAttrNames( $oclasses = null ) - { - $attrs = $this->getMayAttrs( $oclasses ); - $attr_names = array(); - foreach( $attrs as $attr ) - $attr_names[] = $attr->getName(); - return $attr_names; - } - - /** - * Adds an objectClass to the list of objectClasses that inherit - * from this objectClass. - * @param String $object_class_name The name of the objectClass to add - * @return bool Returns true on success or false on failure (objectclass already existed for example) - */ - function addChildObjectClass( $object_class_name ) - { - $object_class_name = trim( $object_class_name ); - if( ! is_array( $this->children_objectclasses ) ) - $this->children_objectclasses = array(); - foreach( $this->children_objectclasses as $existing_objectclass ) - if( 0 == strcasecmp( $object_class_name, $existing_objectclass ) ) - return false; - $this->children_objectclasses[] = $object_class_name; - return true; - } - - /** - * Returns the array of objectClass names which inherit from this objectClass. - * @return Array Names of objectClasses which inherit from this objectClass. - */ - function getChildObjectClasses() - { - return $this->children_objectclasses; - } - - /** - * Gets the name of this objectClass (ie, "inetOrgPerson") - * @return string The name of the objectClass - */ - function getName() - { - return $this->name; - } - - /** - * Gets the objectClass names from which this objectClass inherits. - * - * @return array An array of objectClass names (strings) - */ - function getSupClasses() - { - return $this->sup_classes; - } - - /** - * Gets the type of this objectClass: STRUCTURAL, ABSTRACT, or AUXILIARY. - */ - function getType() - { - return $this->type; - } - - /** - * Gets whether this objectClass is flagged as obsolete by the LDAP server. - */ - function getIsObsolete() - { - return $this->is_obsolete; - } - - /** - * Adds the specified array of attributes to this objectClass' list of - * MUST attributes. The resulting array of must attributes will contain - * unique members. - * - * @param array $new_must_attrs An array of attribute names (strings) to add. - */ - function addMustAttrs( $new_must_attrs ) - { - if( ! is_array( $new_must_attrs ) ) - return; - if( 0 == count( $new_must_attrs ) ) - return; - $this->must_attrs = array_values( array_unique( array_merge( $this->must_attrs, $new_must_attrs ) ) ); - } - - /** - * Behaves identically to addMustAttrs, but it operates on the MAY - * attributes of this objectClass. - * - * @param array $new_may_attrs An array of attribute names (strings) to add. - */ - function addMayAttrs( $new_may_attrs ) - { - if( ! is_array( $new_may_attrs ) ) - return; - if( 0 == count( $new_may_attrs ) ) - return; - $this->may_attrs = array_values( array_unique( array_merge( $this->may_attrs, $new_may_attrs ) ) ); - } -} - - /** - * A simple class for representing AttributeTypes used only by the ObjectClass class. - * Users should never instantiate this class. It represents an attribute internal to - * an ObjectClass. If PHP supported inner-classes and variable permissions, this would - * be interior to class ObjectClass and flagged private. The reason this class is used - * and not the "real" class AttributeType is because this class supports the notion of - * a "source" objectClass, meaning that it keeps track of which objectClass originally - * specified it. This class is therefore used by the class ObjectClass to determine - * inheritance. - * - * @package lib - */ - class ObjectClassAttribute - { - /** This Attribute's name */ - var $name; - /** This Attribute's root */ - var $source; - - /** - * Creates a new ObjectClassAttribute with specified name and source objectClass. - * @param string $name the name of the new attribute. - * @param string $source the name of the ObjectClass which - * specifies this attribute. - */ - function ObjectClassAttribute ($name, $source) - { - $this->name=$name; - $this->source=$source; - } - - /** Gets this attribute's name */ - function getName () - { - return $this->name; - } - - /** Gets the name of the ObjectClass which originally specified this attribute. */ - function getSource () - { - return $this->source; - } - } - - -/** - * Represents an LDAP AttributeType - * - * @package lib - */ -class AttributeType extends SchemaItem -{ - /** The name of this attributeType */ - var $name; - /** string: the description */ - var $is_obsolete; - /** The attribute from which this attribute inherits (if any) */ - var $sup_attribute; - /** The equality rule used */ - var $equality; - /** The ordering of the attributeType */ - var $ordering; - /** Boolean: supports substring matching? */ - var $sub_str; - /** The full syntax string, ie 1.2.3.4{16} */ - var $syntax; - /** boolean: is single valued only? */ - var $is_single_value; - /** boolean: is collective? */ - var $is_collective; - /** boolean: can use modify? */ - var $is_no_user_modification; - /** The usage string set by the LDAP schema */ - var $usage; - /** An array of alias attribute names, strings */ - var $aliases; - /** The max number of characters this attribute can be */ - var $max_length; - /** A string description of the syntax type (taken from the LDAPSyntaxes) */ - var $type; - /** An array of objectClasses which use this attributeType (must be set by caller) */ - var $used_in_object_classes; - /** A list of object class names that require this attribute type. */ - var $required_by_object_classes = array(); - - /** - * Initialize the class' member variables - */ - function initVars() - { - parent::initVars(); - $this->oid = null; - $this->name = null; - $this->description = null; - $this->is_obsolete = false; - $this->sup_attribute = null; - $this->equality = null; - $this->ordering = null; - $this->sub_str = null; - $this->syntax_oid = null; - $this->syntax = null; - $this->max_length = null; - $this->is_single_value= null; - $this->is_collective = false; - $this->is_no_user_modification = false; - $this->usage = null; - $this->aliases = array(); - $this->type = null; - $this->used_in_object_classes = array(); - $this->required_by_object_classes = array(); - } - - /** - * Creates a new AttributeType objcet from a raw LDAP AttributeType string. - */ - function AttributeType( $raw_ldap_attr_string ) - { - $this->initVars(); - $attr = $raw_ldap_attr_string; - $strings = preg_split ("/[\s,]+/", $attr, -1,PREG_SPLIT_DELIM_CAPTURE); - for($i=0; $iname)==0) - $this->name = $strings[$i]; - else - $this->name .= " " . $strings[$i]; - }while(!preg_match("/\'$/s", $strings[$i])); - // this attribute has no aliases - $this->aliases = array(); - } else { - $i++; - do { - $i++; - if(strlen($this->name) == 0) - $this->name = $strings[$i]; - else - $this->name .= " " . $strings[$i]; - } while(!preg_match("/\'$/s", $strings[$i])); - // add alias names for this attribute - while($strings[++$i]!=")") { - $alias = $strings[$i]; - $alias = preg_replace("/^\'/", "", $alias ); - $alias = preg_replace("/\'$/", "", $alias ); - $this->aliases[] = $alias; - } - } - break; - case 'DESC': - do { - $i++; - if(strlen($this->description)==0) - $this->description=$this->description . $strings[$i]; - else - $this->description=$this->description . " " . $strings[$i]; - }while(!preg_match("/\'$/s", $strings[$i])); - break; - case 'OBSOLETE': - $this->is_obsolete = TRUE; - break; - case 'SUP': - $i++; - $this->sup_attribute = $strings[$i]; - break; - case 'EQUALITY': - $i++; - $this->equality = $strings[$i]; - break; - case 'ORDERING': - $i++; - $this->ordering = $strings[$i]; - break; - case 'SUBSTR': - $i++; - $this->sub_str = $strings[$i]; - break; - case 'SYNTAX': - $i++; - $this->syntax = $strings[$i]; - $this->syntax_oid = preg_replace( "/{\d+}$/", "", $this->syntax ); - // does this SYNTAX string specify a max length (ie, 1.2.3.4{16}) - if( preg_match( "/{(\d+)}$/", $this->syntax, $this->max_length ) ) - $this->max_length = $this->max_length[1]; - else - $this->max_length = null; - if($i < count($strings) - 1 && $strings[$i+1]=="{") { - do { - $i++; - $this->name .= " " . $strings[$i]; - } while($strings[$i]!="}"); - } - break; - case 'SINGLE-VALUE': - $this->is_single_value = TRUE; - break; - case 'COLLECTIVE': - $this->is_collective = TRUE; - break; - case 'NO-USER-MODIFICATION': - $this->is_no_user_modification = TRUE; - break; - case 'USAGE': - $i++; - $this->usage = $strings[$i]; - break; - default: - if(preg_match ("/[\d\.]+/i",$strings[$i]) && $i == 1) - $this->oid = $strings[$i]; - } - } - - $this->name = preg_replace("/^\'/", "", $this->name); - $this->name = preg_replace("/\'$/", "", $this->name); - $this->description = preg_replace("/^\'/", "", $this->description); - $this->description = preg_replace("/\'$/", "", $this->description); - $this->syntax_oid = preg_replace("/^\'/", "", $this->syntax_oid ); - $this->syntax_oid = preg_replace("/\'$/", "", $this->syntax_oid ); - } - - /** - * Gets this attribute's name - * @return string - */ - function getName() - { - return $this->name; - } - - /** - * Gets whether this attribute has been flagged as obsolete by the LDAP server - * @return bool - */ - function getIsObsolete() - { - return $this->is_obsolete; - } - - /** - * Gets this attribute's usage string as defined by the LDAP server - * @return string - */ - function getUsage() - { - return $this->usage; - } - - /** - * Gets this attribute's parent attribute (if any). If this attribute does not - * inherit from another attribute, null is returned. - * @return string - */ - function getSupAttribute() - { - return $this->sup_attribute; - } - - /** - * Gets this attribute's equality string - * @return string - */ - function getEquality() - { - return $this->equality; - } - - /** - * Gets this attribute's ordering specification. - * @return string - */ - function getOrdering() - { - return $this->ordering; - } - - /** - * Gets this attribute's substring matching specification - * @return string - */ - function getSubstr() - { - return $this->sub_str; - } - - /** - * Gets the names of attributes that are an alias for this attribute (if any). - * @return array An array of names of attributes which alias this attribute or - * an empty array if no attribute aliases this object. - */ - function getAliases() - { - return $this->aliases; - } - - /** - * Returns whether the specified attribute is an alias for this one (based on this attribute's alias list). - * @param string $attr_name The name of the attribute to check. - * @return bool True if the specified attribute is an alias for this one, or false otherwise. - */ - function isAliasFor( $attr_name ) - { - foreach( $this->aliases as $alias_attr_name ) - if( 0 == strcasecmp( $alias_attr_name, $attr_name ) ) - return true; - return false; - - } - - /** - * Gets this attribute's raw syntax string (ie: "1.2.3.4{16}"). - * @return string The raw syntax string - */ - function getSyntaxString() - { - return $this->syntax; - } - - /** - * Gets this attribute's syntax OID. Differs from getSyntaxString() in that this - * function only returns the actual OID with any length specification removed. - * Ie, if the syntax string is "1.2.3.4{16}", this function only retruns - * "1.2.3.4". - * @return string The syntax OID string. - */ - function getSyntaxOID() - { - return $this->syntax_oid; - } - - /** - * Gets this attribute's the maximum length. If no maximum is defined by the LDAP server, null is returned. - * @return int The maximum length (in characters) of this attribute or null if no maximum is specified. - */ - function getMaxLength() - { - return $this->max_length; - } - - /** - * Gets whether this attribute is single-valued. If this attribute only supports single values, true - * is returned. If this attribute supports multiple values, false is returned. - * @return bool Returns true if this attribute is single-valued or false otherwise. - */ - function getIsSingleValue() - { - return $this->is_single_value; - } - - /** - * Sets whether this attribute is single-valued. - * @param bool $is_single_value - */ - function setIsSingleValue( $is_single_value ) - { - $this->is_single_value = $is_single_value; - } - - /** - * Gets whether this attribute is collective. - * @return bool Returns true if this attribute is collective and false otherwise. - */ - function getIsCollective() - { - return $this->is_collective; - } - - /** - * Gets whether this attribute is not modifiable by users. - * @return bool Returns true if this attribute is not modifiable by users. - */ - function getIsNoUserModification() - { - return $this->is_no_user_modification; - } - - /** - * Gets this attribute's type - * @return string The attribute's type. - */ - function getType() - { - return $this->type; - } - - /** - * Removes an attribute name from this attribute's alias array. - * @param string $remove_alias_name The name of the attribute to remove. - * @return bool true on success or false on failure (ie, if the specified - * attribute name is not found in this attribute's list of aliases) - */ - function removeAlias( $remove_alias_name ) - { - foreach( $this->aliases as $i => $alias_name ) { - if( 0 == strcasecmp( $alias_name, $remove_alias_name ) ) { - unset( $this->aliases[ $i ] ); - $this->aliases = array_values( $this->aliases ); - return true; - } - } - return false; - } - - /** - * Adds an attribute name to the alias array. - * @param string $new_alias_name The name of a new attribute to add to this attribute's list of aliases. - */ - function addAlias( $new_alias_name ) - { - $this->aliases[] = $new_alias_name; - } - - /** - * Sets this attriute's name. - * @param string $new_name The new name to give this attribute. - */ - function setName( $new_name ) - { - $this->name = $new_name; - } - - /** - * Sets this attriute's SUP attribute (ie, the attribute from which this attribute inherits). - * @param string $new_sup_attr The name of the new parent (SUP) attribute - */ - function setSupAttribute( $new_sup_attr ) - { - $this->sup_attribute = $new_sup_attr; - } - - /** - * Sets this attribute's list of aliases. - * @param array $new_aliases The array of alias names (strings) - */ - function setAliases( $new_aliases ) - { - $this->aliases = $new_aliases; - } - - /** - * Sets this attribute's type. - * @param string $new_type The new type. - */ - function setType( $new_type ) - { - $this->type = $new_type; - } - - /** - * Adds an objectClass name to this attribute's list of "used in" objectClasses, - * that is the list of objectClasses which provide this attribute. - * @param string $object_class_name The name of the objectClass to add. - */ - function addUsedInObjectClass( $object_class_name ) - { - foreach( $this->used_in_object_classes as $used_in_object_class ) - if( 0 == strcasecmp( $used_in_object_class, $object_class_name ) ) - return false; - $this->used_in_object_classes[] = $object_class_name; - return true; - } - - /** - * Gets the list of "used in" objectClasses, that is the list of objectClasses - * which provide this attribute. - * @return array An array of names of objectclasses (strings) which provide this attribute - */ - function getUsedInObjectClasses() - { - return $this->used_in_object_classes; - } - - /** - * Adds an objectClass name to this attribute's list of "required by" objectClasses, - * that is the list of objectClasses which must have this attribute. - * @param string $object_class_name The name of the objectClass to add. - */ - function addRequiredByObjectClass( $object_class_name ) - { - foreach( $this->required_by_object_classes as $required_by_object_class ) - if( 0 == strcasecmp( $required_by_object_class, $object_class_name ) ) - return false; - $this->required_by_object_classes[] = $object_class_name; - return true; - } - - /** - * Gets the list of "required by" objectClasses, that is the list of objectClasses - * which provide must have attribute. - * @return array An array of names of objectclasses (strings) which provide this attribute - */ - function getRequiredByObjectClasses() - { - return $this->required_by_object_classes; - } -} - -/** - * Represents an LDAP Syntax - * - * @package lib - */ -class Syntax extends SchemaItem -{ - /** Initializes the class' member variables */ - function initVars() - { - parent::initVars(); - $this->oid = null; - $this->description = null; - } - - /** - * Creates a new Syntax object from a raw LDAP syntax string. - */ - function Syntax( $raw_ldap_syntax_string ) - { - $this->initVars(); - $class = $raw_ldap_syntax_string; - $strings = preg_split ("/[\s,]+/", $class, -1,PREG_SPLIT_DELIM_CAPTURE); - for($i=0; $idescription)==0) - $this->description=$this->description . $strings[$i]; - else - $this->description=$this->description . " " . $strings[$i]; - }while(!preg_match("/\'$/s", $strings[$i])); - break; - default: - if(preg_match ("/[\d\.]+/i",$strings[$i]) && $i == 1) - $this->oid = $strings[$i]; - } - } - $this->description = preg_replace("/^\'/", "", $this->description); - $this->description = preg_replace("/\'$/", "", $this->description); - } -} - -/** - * Represents an LDAP MatchingRule - * - * @package lib - */ -class MatchingRule extends SchemaItem -{ - /** This rule's name */ - var $name; - /** This rule's syntax OID */ - var $syntax; - /** Boolean value indicating whether this MatchingRule is obsolete */ - var $is_obsolete; - /** An array of attribute names who use this MatchingRule */ - var $used_by_attrs; - - /** Initialize the class' member variables */ - function initVars() - { - parent::initVars(); - $this->oid = null; - $this->name = null; - $this->description = null; - $this->is_obsolete = false; - $this->syntax = null; - $this->used_by_attrs = array(); - } - - /** - * Creates a new MatchingRule object from a raw LDAP MatchingRule string. - */ - function MatchingRule( $raw_ldap_matching_rule_string ) - { - $this->initVars(); - $strings = preg_split ("/[\s,]+/", $raw_ldap_matching_rule_string, -1,PREG_SPLIT_DELIM_CAPTURE); - for($i=0; $iname)==0) - $this->name = $strings[$i]; - else - $this->name .= " " . $strings[$i]; - }while(!preg_match("/\'$/s", $strings[$i])); - } else { - $i++; - do { - $i++; - if(strlen($this->name) == 0) - $this->name = $strings[$i]; - else - $this->name .= " " . $strings[$i]; - } while(!preg_match("/\'$/s", $strings[$i])); - do { - $i++; - }while($strings[$i]!=")"); - } - $this->name = preg_replace("/^\'/", "", $this->name); - $this->name = preg_replace("/\'$/", "", $this->name); - break; - case 'DESC': - do { - $i++; - if(strlen($this->description)==0) - $this->description=$this->description . $strings[$i]; - else - $this->description=$this->description . " " . $strings[$i]; - }while(!preg_match("/\'$/s", $strings[$i])); - break; - case 'OBSOLETE': - $this->is_obsolete = TRUE; - break; - case 'SYNTAX': - $this->syntax = $strings[++$i]; - break; - default: - if(preg_match ("/[\d\.]+/i",$strings[$i]) && $i == 1) - $this->oid = $strings[$i]; - } - } - $this->description = preg_replace("/^\'/", "", $this->description); - $this->description = preg_replace("/\'$/", "", $this->description); - } - - /** - * Sets the list of used_by_attrs to the array specified by $attrs; - * @param array $attrs The array of attribute names (strings) which use this MatchingRule - */ - function setUsedByAttrs( $attrs ) - { - $this->used_by_attrs = $attrs; - } - - /** - * Adds an attribute name to the list of attributes who use this MatchingRule - * @return true if the attribute was added and false otherwise (already in the list) - */ - function addUsedByAttr( $new_attr_name ) - { - foreach( $this->used_by_attrs as $attr_name ) - if( 0 == strcasecmp( $attr_name, $new_attr_name ) ) - return false; - $this->used_by_attrs[] = $new_attr_name; - return true; - } - - /** - * Gets this MatchingRule's name. - * @return string The name. - */ - function getName() - { - return $this->name; - } - - /** - * Gets whether this MatchingRule is flagged as obsolete by the LDAP server. - * @return bool True if this MatchingRule is obsolete and false otherwise. - */ - function getIsObsolete() - { - return $this->is_obsolete; - } - - /** - * Gets an array of attribute names (strings) which use this MatchingRule - * @return array The array of attribute names (strings). - */ - function getUsedByAttrs() - { - return $this->used_by_attrs; - } -} - -/** - * Represents an LDAP schema matchingRuleUse entry - * - * @package lib - */ -class MatchingRuleUse extends SchemaItem -{ - /** The name of the MathingRule this applies to */ - var $name; - /** An array of attributeType names who make use of the mathingRule - * identified by $this->oid and $this->name */ - var $used_by_attrs; - - /** Initialize the class' member variables */ - function initVars() - { - parent::initVars(); - $this->oid = null; - $this->name = null; - $this->used_by_attrs = array(); - } - - function MatchingRuleUse( $raw_matching_rule_use_string ) - { - $this->initVars(); - $strings = preg_split ("/[\s,]+/", $raw_matching_rule_use_string, -1,PREG_SPLIT_DELIM_CAPTURE); - for($i=0; $iname ) || strlen( $this->name ) ==0 ) - $this->name = $strings[$i]; - else - $this->name .= " " . $strings[$i]; - }while(!preg_match("/\'$/s", $strings[$i])); - } else { - $i++; - do { - $i++; - if(strlen($this->name) == 0) - $this->name = $strings[$i]; - else - $this->name .= " " . $strings[$i]; - } while(!preg_match("/\'$/s", $strings[$i])); - do { - $i++; - }while($strings[$i]!=")"); - } - $this->name = preg_replace("/^\'/", "", $this->name); - $this->name = preg_replace("/\'$/", "", $this->name); - break; - case 'APPLIES': - if($strings[$i+1]!="(") { - // has a single attribute name - $i++; - $this->used_by_attrs = array( $strings[$i] ); - //echo "Adding single: " . $strings[$i] . "
"; - } else { - // has multiple attribute names - $i++; - while($strings[$i]!=")") { - $i++; - $new_attr = $strings[$i]; - $new_attr = preg_replace("/^\'/", "", $new_attr ); - $new_attr = preg_replace("/\'$/", "", $new_attr ); - $this->used_by_attrs[] = $new_attr; - //echo "Adding $new_attr
"; - $i++; - } - } - break; - default: - if(preg_match ("/[\d\.]+/i",$strings[$i]) && $i == 1) - $this->oid = $strings[$i]; - } - } - sort( $this->used_by_attrs ); - } - - /** - * Gets this MatchingRuleUse's name - * @return string The name - */ - function getName() - { - return $this->name; - } - - /** - * Gets an array of attribute names (strings) which use this MatchingRuleUse object. - * @return array The array of attribute names (strings). - */ - function getUsedByAttrs() - { - return $this->used_by_attrs; - } -} - -/** - * Helper for _get_raw_schema() which fetches the DN of the schema object - * in an LDAP server based on a DN. Entries should set the subSchemaSubEntry - * attribute pointing to the DN of the server schema. You can specify the - * DN whose subSchemaSubEntry you wish to retrieve of specify an empty string - * to fetch the subScehamSubEntry from the Root DSE. - * - * @param string $dn The DN (may be null) which houses the subschemaSubEntry attribute which - * this function can use to determine the schema entry's DN. - * @param bool $debug Switch to true to see some nice and copious output. :) - * - * @return string The DN of the entry which houses this LDAP server's schema. - */ -function _get_schema_dn($dn, $debug=false ) -{ - if( $debug ) echo "

";
-	$ds = $_SESSION['ldap']->server;
-
-	$search = @ldap_read( $ds, $dn, 'objectClass=*', array( 'subschemaSubentry' ) );
-	if( $debug ) { echo "Search result (ldap_read): "; var_dump( $search ); echo "\n"; }
-	if( ! $search ) {
-		if( $debug ) echo "_get_schema_dn() returning false. (search val is false)\n";
-		return false;
-	}
-
-	if( @ldap_count_entries( $ds, $search ) == 0 ) {
-		if( $debug ) echo "_get_schema_dn() returning false (ldap_count_entries() == 0).\n";
-        return false;
-	}
-
-	$entries = @ldap_get_entries( $ds, $search );
-	if( $debug ) { echo "Entries (ldap_get_entries): "; var_dump( $entries ); echo "\n"; }
-	if( ! $entries || ! is_array( $entries ) ) {
-		if( $debug ) echo "_get_schema_dn() returning false (Bad entries val, false or not array).\n";
-		return false;
-	}
-
-	$entry = isset( $entries[0] ) ? $entries[0] : false;
-	if( ! $entry ) {
-		if( $debug ) echo "_get_schema_dn() returning false (entry val is false)\n";
-		return false;
-	}
-
-	$sub_schema_sub_entry = isset( $entry[0] ) ? $entry[0] : false;
-	if( ! $sub_schema_sub_entry ) {
-		if( $debug ) echo "_get_schema_dn() returning false (sub_schema_sub_entry val is false)\n";
-		return false;
-	}
-
-	$schema_dn = isset( $entry[ $sub_schema_sub_entry ][0] ) ?
-					$entry[ $sub_schema_sub_entry ][0] :
-					false;
-
-	if( $debug ) echo "_get_schema_dn() returning: \"" . $schema_dn . "\"\n";
-	return $schema_dn;
-}
-
-/**
- * Fetches the raw schema array for the subschemaSubentry of the server. Note,
- * this function has grown many hairs to accomodate more LDAP servers. It is
- * needfully complicated as it now supports many popular LDAP servers that
- * don't necessarily expose their schema "the right way".
- *
- * @param $schema_to_fetch - A string indicating which type of schema to 
- *		fetch. Five valid values: 'objectclasses', 'attributetypes', 
- *		'ldapsyntaxes', 'matchingruleuse', or 'matchingrules'. 
- *		Case insensitive.
- * @param $dn (optional) This paremeter is the DN of the entry whose schema you
- * 		would like to fetch. Entries have the option of specifying
- * 		their own subschemaSubentry that points to the DN of the system
- * 		schema entry which applies to this attribute. If unspecified,
- *		this will try to retrieve the schema from the RootDSE subschemaSubentry.
- *		Failing that, we use some commonly known schema DNs. Default 
- *		value is the Root DSE DN (zero-length string)
- * @return an array of strings of this form:
- *    Array (
- *      [0] => "( 1.3.6.1.4.1.7165.1.2.2.4 NAME 'gidPool' DESC 'Pool ...
- *      [1] => "( 1.3.6.1.4.1.7165.2.2.3 NAME 'sambaAccount' DESC 'Sa ...
- *      etc.
- */
-function _get_raw_schema($schema_to_fetch, $dn='' )
-{
-
-	// Swith to true to enable verbose output of schema fetching progress
-	$debug = false;
-
-	$ds = $_SESSION['ldap']->server;
-
-	// error checking
-	$schema_to_fetch = strtolower( $schema_to_fetch );
-	$valid_schema_to_fetch = array( 'objectclasses', 'attributetypes', 'ldapsyntaxes', 
-					'matchingrules', 'matchingruleuse'  );
-	if( ! in_array( $schema_to_fetch, $valid_schema_to_fetch ) )
-        // This error message is not localized as only developers should ever see it
-		echo( "Bad parameter provided to function to _get_raw_schema(). '" 
-				. htmlspecialchars( $schema_to_fetch ) . "' is 
-				not valid for the schema_to_fetch parameter." );
-	
-	// Try to get the schema DN from the specified entry. 
-	$schema_dn = _get_schema_dn($dn, $debug );
-
-	// Do we need to try again with the Root DSE?
-	if( ! $schema_dn )
-		$schema_dn = _get_schema_dn('', $debug );
-
-	// Store the eventual schema retrieval in $schema_search
-	$schema_search = null;
-
-	if( $schema_dn ) {
-		if( $debug ) { echo "Found the schema DN: "; var_dump( $schema_dn ); echo "\n"; }
-		$schema_search = @ldap_read( $ds, $schema_dn, '(objectClass=*)',
-							array( $schema_to_fetch ), 0, 0, 0, 
-							LDAP_DEREF_ALWAYS );
-
-        // Were we not able to fetch the schema from the $schema_dn?
-        $schema_entries = @ldap_get_entries( $ds, $schema_search );
-		if( $schema_search === false || 
-            0 == @ldap_count_entries( $ds, $schema_search ) ||
-            ! isset( $schema_entries[0][$schema_to_fetch] ) ) {
-                if( $debug ) echo "Did not find the schema with (objectClass=*). Attempting with (objetClass=subschema)\n";
-
-                // Try again with a different filter (some servers require (objectClass=subschema) like M-Vault)
-                $schema_search = @ldap_read( $ds, $schema_dn, '(objectClass=subschema)',
-                        array( $schema_to_fetch ), 0, 0, 0, 
-                        LDAP_DEREF_ALWAYS );
-                $schema_entries = @ldap_get_entries( $ds, $schema_search );
-
-                // Still didn't get it?
-                if( $schema_search === false || 
-                        0 == @ldap_count_entries( $ds, $schema_search ) ||
-                        ! isset( $schema_entries[0][$schema_to_fetch] ) ) {
-                    if( $debug ) echo "Did not find the schema at DN: $schema_dn (with objectClass=* nor objectClass=subschema).\n";
-                    unset( $schema_entries );
-                    unset( $schema_dn );
-                    $schema_search = null;
-                } else {
-                    if( $debug ) echo "Found the schema at DN: $schema_dn (with objectClass=subschema).\n";
-                }
-		} else {
-			if( $debug ) echo "Found the schema at DN: $schema_dn (with objectClass=*).\n";
-		}
-	} 
-
-	// Second chance: If the DN or Root DSE didn't give us the subschemaSubentry, ie $schema_search
-	// is still null, use some common subSchemaSubentry DNs as a work-around.
-
-	if( $debug && $schema_search == null )
-		echo "Attempting work-arounds for 'broken' LDAP servers...\n";
-
-	// cn=subschema for OpenLDAP
-	if( $schema_search == null ) {
-		if( $debug ) echo "Attempting with cn=subschema (OpenLDAP)...\n";
-		// try with the standard DN
-		$schema_search = @ldap_read($ds, 'cn=subschema', '(objectClass=*)',
-				array( $schema_to_fetch ), 0, 0, 0, LDAP_DEREF_ALWAYS );
-	}
-
-	// cn=schema for Novell eDirectory
-	if( $schema_search == null ) {
-		if( $debug ) echo "Attempting with cn=schema (Novell)...\n";
-		// try again, with a different schema DN
-		$schema_search = @ldap_read($ds, 'cn=schema', '(objectClass=*)',
-				array( $schema_to_fetch ), 0, 0, 0, LDAP_DEREF_ALWAYS );
-	}
-
-	// cn=schema,cn=configuration,dc=example,dc=com for ActiveDirectory
-	if( $schema_search == null ) {
-		// try again, with a different schema DN
-		global $servers;
-		$base_dn = isset( $servers[ 'base' ] ) ?
-				$servers[ 'base' ] :
-				null;
-		if( $debug ) echo "Attempting with cn=schema,cn=configuration,$base_dn (ActiveDirectory)...\n";
-		if( $base_dn != null )
-			$schema_search = @ldap_read($ds, 'cn=schema,cn=configuration,' . $base_dn, '(objectClass=*)',
-				array( $schema_to_fetch ), 0, 0, 0, LDAP_DEREF_ALWAYS );
-	}
-
-	// cn=Schema,ou=Admin,dc=example,dc=com for SiteServer
-	if( $schema_search == null ) {
-		// try again, with a different schema DN
-		global $servers;
-		$base_dn = isset( $servers[ 'base' ] ) ?
-				$servers[ 'base' ] :
-				null;
-		if( $debug ) echo "Attempting with cn=Schema,ou=Admin,$base_dn (ActiveDirectory)...\n";
-		if( $base_dn != null )
-			$schema_search = @ldap_read($ds, 'cn=Schema,ou=Admin,' . $base_dn, '(objectClass=*)',
-				array( $schema_to_fetch ), 0, 0, 0, LDAP_DEREF_ALWAYS );
-	}
-
-	// Attempt to pull schema from Root DSE with scope "base"
-	if( $schema_search == null ) {
-		// try again, with a different schema DN
-		if( $debug ) echo "Attempting to pull schema from Root DSE with scope \"base\"...\n";
-		if( $base_dn != null )
-			$schema_search = @ldap_read($ds, '', '(objectClass=*)',
-				array( $schema_to_fetch ), 0, 0, 0, LDAP_DEREF_ALWAYS );
-         $schema_entries = @ldap_get_entries( $ds, $schema_search );
-         if( ! isset( $schema_entries[0][$schema_to_fetch] ) )
-            $schema_search = null;
-    }
-    
-	// Attempt to pull schema from Root DSE with scope "one" (work-around for Isode M-Vault X.500/LDAP)
-	if( $schema_search == null ) {
-		// try again, with a different schema DN
-		if( $debug ) echo "Attempting to pull schema from Root DSE with scope \"one\"...\n";
-		if( $base_dn != null )
-			$schema_search = @ldap_list($ds, '', '(objectClass=*)',
-				array( $schema_to_fetch ), 0, 0, 0, LDAP_DEREF_ALWAYS );
-         $schema_entries = @ldap_get_entries( $ds, $schema_search );
-         if( ! isset( $schema_entries[0][$schema_to_fetch] ) )
-            $schema_search = null;
-	}
-
-	// Shall we just give up?
-	if( $schema_search == null ) {
-        if( $debug ) echo "Returning false since schema_search came back null
\n"; - set_schema_cache_unavailable(); - return false; - } - - // Did we get something unrecognizable? - if( 'resource' != gettype( $schema_search ) ) { - if( $debug ) echo "Returning false since schema_esarch is not of type 'resource'. Dumping schema search:\n"; - if( $debug ) var_dump( $schema_search ); - if( $debug ) echo ""; - set_schema_cache_unavailable(); - return false; - } - - $schema = @ldap_get_entries( $ds, $schema_search ); - if( $schema == false ) { - if( $debug ) echo "Returning false since ldap_get_entries() returned false.\n"; - set_schema_cache_unavailable(); - return false; - } - - if( ! isset( $schema[0][$schema_to_fetch] ) ) { - if( $debug ) echo "Returning false since '$schema_to_fetch' isn't in the schema array. Showing schema array:\n"; - if( $debug ) var_dump( $schema ); - if( $debug ) echo ""; - set_schema_cache_unavailable(); - return false; - } - - // Make a nice array of this form: - // Array ( - // [0] => "( 1.3.6.1.4.1.7165.1.2.2.4 NAME 'gidPool' DESC 'Pool ... - // [1] => "( 1.3.6.1.4.1.7165.2.2.3 NAME 'sambaAccount' DESC 'Sa ... - // etc. - $schema = $schema[0][$schema_to_fetch]; - unset( $schema['count'] ); - - if( $debug ) echo ""; - return $schema; -} - -/** - * Gets an associative array of ObjectClass objects for the specified - * server. Each array entry's key is the name of the objectClass - * in lower-case and the value is an ObjectClass object. - * - * @param string $dn (optional) It is easier to fetch schema if a DN is provided - * which defines the subschemaSubEntry attribute (all entries should). - * - * @return array An array of ObjectClass objects. - * - * @see ObjectClass - * @see get_schema_objectclass - */ -function get_schema_objectclasses($dn=null, $use_cache=true ) -{ - if( $use_cache && cached_schema_available('objectclasses' ) ) { - return get_cached_schema('objectclasses' ); - } - - $raw_oclasses = _get_raw_schema('objectclasses', $dn ); - if( ! $raw_oclasses ) - return false; - - // build the array of objectClasses - $object_classes = array(); - foreach( $raw_oclasses as $class_string ) { - if( $class_string == null || 0 == strlen( $class_string ) ) - continue; - $object_class = new ObjectClass( $class_string ); - $name = $object_class->getName(); - $key = strtolower( $name ); - $object_classes[ $key ] = $object_class; - } - - ksort( $object_classes ); - - // cache the schema to prevent multiple schema fetches from LDAP server - set_cached_schema('objectclasses', $object_classes ); - return( $object_classes ); -} - -/** - * Gets a single ObjectClass object specified by name. - * - * @param string $oclass_name The name of the objectClass to fetch. - * @param string $dn (optional) It is easier to fetch schema if a DN is provided - * which defines the subschemaSubEntry attribute (all entries should). - * - * @return ObjectClass The specified ObjectClass object or false on error. - * - * @see ObjectClass - * @see get_schema_objectclasses - */ -function get_schema_objectclass($oclass_name, $dn=null, $use_cache=true ) -{ - $oclass_name = strtolower( $oclass_name ); - $oclasses = get_schema_objectclasses($dn, $use_cache ); - if( ! $oclasses ) - return false; - if( isset( $oclasses[ $oclass_name ] ) ) - return $oclasses[ $oclass_name ]; - else - return false; -} - -/** - * Gets a single AttributeType object specified by name. - * - * @param string $oclass_name The name of the AttributeType to fetch. - * @param string $dn (optional) It is easier to fetch schema if a DN is provided - * which defines the subschemaSubEntry attribute (all entries should). - * - * @return AttributeType The specified AttributeType object or false on error. - * - * @see AttributeType - * @see get_schema_attributes - */ -function get_schema_attribute($attr_name, $dn=null, $use_cache=true ) -{ - $attr_name = real_attr_name( $attr_name ); - $schema_attrs = get_schema_attributes($dn, $use_cache ); - $attr_name = strtolower( $attr_name ); - $schema_attr = isset( $schema_attrs[ $attr_name ] ) ? - $schema_attrs[ $attr_name ] : - false; - return $schema_attr; -} - -/** - * Gets an associative array of AttributeType objects for the specified - * server. Each array entry's key is the name of the attributeType - * in lower-case and the value is an AttributeType object. - * - * @param string $dn (optional) It is easier to fetch schema if a DN is provided - * which defines the subschemaSubEntry attribute (all entries should). - * - * @return array An array of AttributeType objects. - */ -function get_schema_attributes($dn = null, $use_cache=true ) -{ - if( $use_cache && cached_schema_available('attributetypes' ) ) { - return get_cached_schema('attributetypes' ); - } - - $raw_attrs = _get_raw_schema('attributeTypes', $dn ); - if( ! $raw_attrs ) - return false; - - // build the array of attribueTypes - $syntaxes = get_schema_syntaxes($dn ); - $attrs = array(); - /** - * bug 856832: create two arrays - one indexed by name (the standard - * $attrs array above) and one indexed by oid (the new $attrs_oid array - * below). This will help for directory servers, like IBM's, that use OIDs - * in their attribute definitions of SUP, etc - */ - $attrs_oid = array(); - foreach( $raw_attrs as $attr_string ) { - if( $attr_string == null || 0 == strlen( $attr_string ) ) - continue; - $attr = new AttributeType( $attr_string ); - if( isset( $syntaxes[ $attr->getSyntaxOID() ] ) ) { - $syntax = $syntaxes[ $attr->getSyntaxOID() ]; - $attr->setType( $syntax->getDescription() ); - } - $name = $attr->getName(); - $key = strtolower( $name ); - $attrs[ $key ] = $attr; - - /** - * bug 856832: create an entry in the $attrs_oid array too. This - * will be a ref to the $attrs entry for maintenance and performance - * reasons - */ - $oid = $attr->getOID(); - $attrs_oid[ $oid ] = &$attrs[ $key ]; - } - - add_aliases_to_attrs( $attrs ); - /** - * bug 856832: pass the $attrs_oid array as a second (new) parameter - * to add_sup_to_attrs. This will allow lookups by either name or oid. - */ - add_sup_to_attrs( $attrs, $attrs_oid ); - - ksort( $attrs ); - - // Add the used in and required_by values. - $schema_object_classes = get_schema_objectclasses(); - if ( ! is_array ( $schema_object_classes ) ) - return array (); - - foreach( $schema_object_classes as $object_class ) { - $must_attrs = $object_class->getMustAttrNames($schema_object_classes); - $may_attrs = $object_class->getMayAttrNames($schema_object_classes); - $oclass_attrs = array_unique( array_merge( $must_attrs, $may_attrs ) ); - - // Add Used In. - foreach( $oclass_attrs as $attr_name ) { - if( isset( $attrs[ strtolower( $attr_name ) ] ) ) { - $attrs[ strtolower( $attr_name ) ]->addUsedInObjectClass( - $object_class->getName() ); - } else { - //echo "Warning, attr not set: $attr_name
"; - } - } - - // Add Required By. - foreach( $must_attrs as $attr_name ) { - if( isset( $attrs[ strtolower( $attr_name ) ] ) ) { - $attrs[ strtolower( $attr_name ) ]->addRequiredByObjectClass( - $object_class->getName() ); - } else { - //echo "Warning, attr not set: $attr_name
"; - } - } - - } - - // cache the schema to prevent multiple schema fetches from LDAP server - set_cached_schema('attributetypes', $attrs ); - return( $attrs ); -} - -/** - * For each attribute that has multiple names, this function adds unique entries to - * the attrs array for those names. Ie, attributeType has name 'gn' and 'givenName'. - * This function will create a unique entry for 'gn' and 'givenName'. - */ -function add_aliases_to_attrs( &$attrs ) -{ - // go back and add data from aliased attributeTypes - foreach( $attrs as $name => $attr ) { - $aliases = $attr->getAliases(); - if( is_array( $aliases ) && count( $aliases ) > 0 ) { - // foreach of the attribute's aliases, create a new entry in the attrs array - // with its name set to the alias name, and all other data copied - foreach( $aliases as $alias_attr_name ) { - $new_attr = $attr; - $new_attr->setName( $alias_attr_name ); - $new_attr->addAlias( $attr->getName() ); - $new_attr->removeAlias( $alias_attr_name ); - $new_attr_key = strtolower( $alias_attr_name ); - $attrs[ $new_attr_key ] = $new_attr; - } - } - } -} - -/** - * Adds inherited values to each attributeType specified by the SUP directive. - * Supports infinite levels of inheritance. - * Bug 856832: require a second paramter that has all attributes indexed by OID - */ -function add_sup_to_attrs( &$attrs, &$attrs_oid ) -{ - $debug = false; - if( $debug ) echo "
";
-
-	if( $debug ) print_r( $attrs );
-	
-	// go back and add any inherited descriptions from parent attributes (ie, cn inherits name)
-	foreach( $attrs as $key => $attr ) {
-		if( $debug ) echo "Analyzing inheritance for attribute '" . $attr->getName() . "'\n";
-		$sup_attr_name = $attr->getSupAttribute();
-		$sup_attr = null;
-
-		// Does this attribute have any inheritance happening here?
-		if( null != trim( $sup_attr_name ) ) {
-
-			// This loop really should traverse infinite levels of inheritance (SUP) for attributeTypes,
-			// but just in case we get carried away, stop at 100. This shouldn't happen, but for
-			// some weird reason, we have had someone report that it has happened. Oh well.
-			$i = 0;
-			while( $i++ < 100 /** 100 == INFINITY ;) */ ) {
-				if( $debug ) echo "Top of loop.\n";
-
-				/**
-				 * Bug 856832: check if sup is indexed by OID. If it is,
-				 * replace the OID with the appropriate name. Then reset
-				 * $sup_attr_name to the name instead of the OID. This will
-				 * make all the remaining code in this function work as
-				 * expected.
-				 */
-				if( isset( $attrs_oid[$sup_attr_name] ) ) {
-					$attr->setSupAttribute( $attrs_oid[$sup_attr_name]->getName() );
-					$sup_attr_name = $attr->getSupAttribute();
-				}
-				
-				if( ! isset( $attrs[ strtolower( $sup_attr_name ) ] ) ){ 
-					echo( "Schema error: attributeType '" . $attr->getName() . "' inherits from 
-								'" . $sup_attr_name . "', but attributeType '" . $sup_attr_name . "' does not
-								exist." );
-						return;
-				}
-
-				if( $debug ) echo " sup_attr_name: $sup_attr_name\n";
-				$sup_attr = $attrs[ strtolower( $sup_attr_name ) ];
-				if( $debug ) echo " Sup attr: " . $sup_attr->getName() . "\n";
-
-				$sup_attr_name = $sup_attr->getSupAttribute();
-				if( $debug ) echo " Does the sup attr itself have a sup attr?\n";
-
-				// Does this superior attributeType not have a superior attributeType?
-				if( null == $sup_attr_name || strlen( trim( $sup_attr_name ) ) == 0 ) {
-
-					// Since this attribute's superior attribute does not have another superior
-					// attribute, clone its properties for this attribute. Then, replace
-					// those cloned values with those that can be explicitly set by the child
-					// attribute attr). Save those few properties which the child can set here:
-					if( $debug ) echo "  nope, this is the end of the inheritance chain after $i iterations.\n";
-					$tmp_name = $attr->getName();
-					$tmp_oid = $attr->getOID();
-					$tmp_sup = $attr->getSupAttribute();
-					$tmp_aliases = $attr->getAliases();
-					$tmp_single_val = $attr->getIsSingleValue();
-
-
-					if( $debug ) {
-						echo "  populating values into attribute from sup attribute:\n";
-						echo "Before: ";
-						print_r( $attr );
-					}
-
-					// clone the SUP attributeType and populate those values
-					// that were set by the child attributeType
-					$attr = $sup_attr;
-					$attr->setOID( $tmp_oid );
-					$attr->setName( $tmp_name );
-					$attr->setSupAttribute( $tmp_sup);
-					$attr->setAliases( $tmp_aliases );
-
-					if( $debug ) {
-						echo "After (name, sup_attr, and aliases should not have changed!: ";
-						print_r( $attr );
-					}
-					// only overwrite the SINGLE-VALUE property if the child explicitly sets it
-					// (note: All LDAP attributes default to multi-value if not explicitly set SINGLE-VALUE)
-					if( true == $tmp_single_val )
-						$attr->setIsSingleValue( true );
-
-					// replace this attribute in the attrs array now that we have populated
-					// new values therein
-					$attrs[$key] = $attr;
-
-					// very important: break out after we are done with this attribute
-					$sup_attr_name = null;
-					$sup_attr = null;
-					break;
-
-				} else {
-
-					// do nothing, move on down the chain of inheritance...
-					if( $debug ) echo "  yup, march down the inheritance chain (iteration $i).\n";
-					if( $debug ) { echo "  The sup attr is: "; var_dump( $sup_attr_name ); echo "\n"; }
-
-				}
-			}
-		}
-	}
-
-	if( $debug ) echo "
\n"; -} - -/** - * Returns an array of MatchingRule objects for the specified server. - * The key of each entry is the OID of the matching rule. - */ -function get_schema_matching_rules($dn=null, $use_cache=true ) -{ - if( $use_cache && cached_schema_available('matchingrules' ) ) { - return get_cached_schema('matchingrules' ); - } - - // build the array of MatchingRule objects - $raw_matching_rules = _get_raw_schema('matchingRules', $dn ); - if( ! $raw_matching_rules ) - return false; - $rules = array(); - foreach( $raw_matching_rules as $rule_string ) { - if( $rule_string == null || 0 == strlen( $rule_string ) ) - continue; - $rule = new MatchingRule( $rule_string ); - $key = strtolower( $rule->getName() ); - $rules[ $key ] = $rule; - } - - ksort( $rules ); - - // For each MatchingRuleUse entry, add the attributes who use it to the - // MatchingRule in the $rules array. - $raw_matching_rule_use = _get_raw_schema('matchingRuleUse' ); - if( $raw_matching_rule_use != false ) { - foreach( $raw_matching_rule_use as $rule_use_string ) { - if( $rule_use_string == null || 0 == strlen( $rule_use_string ) ) - continue; - $rule_use = new MatchingRuleUse( $rule_use_string ); - $key = strtolower( $rule_use->getName() ); - if( isset( $rules[ $key ] ) ) - $rules[ $key ]->setUsedByAttrs( $rule_use->getUsedByAttrs() ); - } - } else { - // No MatchingRuleUse entry in the subschema, so brute-forcing - // the reverse-map for the "$rule->getUsedByAttrs()" data. - $attrs = get_schema_attributes($dn ); - if( is_array( $attrs ) ) - foreach( $attrs as $attr ) { - $rule_key = strtolower( $attr->getEquality() ); - if( isset( $rules[ $rule_key ] ) ) - $rules[ $rule_key ]->addUsedByAttr( $attr->getName() ); - } - } - - // cache the schema to prevent multiple schema fetches from LDAP server - set_cached_schema('matchingrules', $rules ); - return $rules; -} - -/** - * Returns an array of Syntax objects that this LDAP server uses mapped to - * their descriptions. The key of each entry is the OID of the Syntax. - */ -function get_schema_syntaxes($dn=null, $use_cache=true ) -{ - if( $use_cache && cached_schema_available('ldapsyntaxes' ) ) { - return get_cached_schema('ldapsyntaxes' ); - } - - $raw_syntaxes = _get_raw_schema('ldapSyntaxes', $dn ); - if( ! $raw_syntaxes ) - return false; - - // build the array of attributes - $syntaxes = array(); - foreach( $raw_syntaxes as $syntax_string ) { - $syntax = new Syntax( $syntax_string ); - $key = strtolower( trim( $syntax->getOID() ) ); - if( ! $key ) continue; - $syntaxes[$key] = $syntax; - } - - ksort( $syntaxes ); - - // cache the schema to prevent multiple schema fetches from LDAP server - set_cached_schema('ldapsyntaxes', $syntaxes ); - - return $syntaxes; -} - -// -------------------------------------------------------------------- -// Schema caching functions -// -------------------------------------------------------------------- - -/** - * Returns true if the schema for $schema_type has been cached and - * is availble. $schema_type may be one of (lowercase) the following: - * objectclasses - * attributetypes - * ldapsyntaxes - * matchingrules - * matchingruleuse - * Note that _get_raw_schema() takes a similar parameter. - */ -function cached_schema_available($schema_type ) -{ - // Check config to make sure session-based caching is enabled. - if( ! SCHEMA_SESSION_CACHE_ENABLED ) - return false; - - // Static memory cache available? - // (note: this memory cache buys us a 20% speed improvement over strictly - // checking the session, ie 0.05 to 0.04 secs) - $schema_type = strtolower( $schema_type ); - static $cache_avail; - if( isset( $cache_avail[ $schema_type ] ) ) { - return true; - } - - // Session cache available? - if( isset( $_SESSION[ 'schema' ][ $schema_type ] ) ) { - $cache_avail[ $schema_type ] = true; - return true; - } elseif ( isset( $_SESSION[ 'schema' ][ 'unavailable'] ) ) { - return true; - } else { - return false; - } -} - -/** - * Returns the cached array of schemaitem objects for the specified - * $schema_type. For list of valid $schema_type values, see above - * schema_cache_available(). Note that internally, this function - * utilizes a two-layer cache, one in memory using a static variable - * for multiple calls within the same page load, and one in a session - * for multiple calls within the same user session (spanning multiple - * page loads). - * - * Returns an array of SchemaItem objects on success or false on failure. - */ -function get_cached_schema($schema_type ) -{ - // Check config to make sure session-based caching is enabled. - if( ! SCHEMA_SESSION_CACHE_ENABLED ) - return false; - - static $cache; - $schema_type = strtolower( $schema_type ); - if( isset( $cache[ $schema_type ] ) ) { - //echo "Getting memory-cached schema for \"$schema_type\"...
\n"; - return $cache[ $schema_type ]; - } - - //echo "Getting session-cached schema for \"$schema_type\"...
\n"; - if( cached_schema_available($schema_type ) && array_key_exists ( $schema_type, $_SESSION[ 'schema' ] ) ) { - $schema = $_SESSION[ 'schema' ][ $schema_type ]; - $cache[ $schema_type ] = $schema; - return $schema; - } else { - return false; - } -} - -/** - * Caches the specified $schema_type. - * $schema_items should be an array of SchemaItem instances (ie, - * an array of ObjectClass, AttributeType, LDAPSyntax, MatchingRuleUse, - * or MatchingRule objects. - * - * Returns true on success of false on failure. - */ -function set_cached_schema($schema_type, $schema_items ) -{ - // Check config to make sure session-based caching is enabled. - if( ! SCHEMA_SESSION_CACHE_ENABLED ) - return false; - - //echo "Setting cached schema for \"$schema_type\"...
\n"; - // Sanity check. The schema must be in the form of an array - if( ! is_array( $schema_items ) ) { - die( "While attempting to cache schema, passed a non-array for \$schema_items!" ); - } - // Make sure we are being passed a valid array of schema_items - foreach( $schema_items as $schema_item ) { - if( ! is_subclass_of( $schema_item, 'SchemaItem' ) && - ! 0 == strcasecmp( 'SchemaItem', get_class( $schema_item ) ) ) { - die( "While attempting to cache schema, one of the schema items passed is not a true SchemaItem instance!" ); - } - } - - $schema_type = strtolower( $schema_type ); - $_SESSION[ 'schema' ][ $schema_type ] = $schema_items; - return true; -} - -/** - * Sets the schema entry for the server_id to be "unavailable" so that we realize - * that we tried to get the schema but could not, so quit trying next time to - * fetch it from the server. - */ -function set_schema_cache_unavailable() -{ - if( ! SCHEMA_SESSION_CACHE_ENABLED ) - return false; - $_SESSION['schema']['unavailable'] = true; - return true; -} - -?> diff --git a/lam/lib/status.inc b/lam/lib/status.inc deleted file mode 100644 index 1f7397d7..00000000 --- a/lam/lib/status.inc +++ /dev/null @@ -1,154 +0,0 @@ - - *
{bold}, {endbold}: All text between these tags is printed bold. - *
{color=#123456}, {endcolor}: All text between these tags is printed in the given color. - *
{link=http://nodomain.org}, {endlink}: A link with the given target is created. The link text is the text between the tags. - * - * @param string $MessageTyp The type of the message to be printed. It must be one of - * the following types: 'INFO', 'WARN' or 'ERROR'. - *
Every other type will lead to an error message indicating an invalid message type. - * @param string $MessageHeadline The headline of the status message. - *
It may be formatted with special color/link/bold tags. - * @param string $MessageText The text of the status message. - *
It may be formatted with special color/link/bold tags. This parameter is optional. - * @param array $MessageVariables The variables that are used to replace the spacers (%s) in the - * submitted text. This parameter is optional. - */ -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 = "\"""; - } - else { - $MessageTyp = "\"""; - } - - $MessageHeadline = "

" . $MessageHeadline . "

"; // Format $MessageHeadline - $MessageText = "

" . $MessageText . "

"; // Format $MessageText - $format = "
\n\n\n\n\n\n
" . $MessageTyp . "" . $MessageHeadline . $MessageText . "
\n
\n"; - if (is_array($MessageVariables)) { - if (sizeof($MessageVariables) > 0) { - array_unshift($MessageVariables, $format); - call_user_func_array('printf',$MessageVariables); - } - else { - echo $format; - } - } - else { - printf($format, $MessageVariables); - } -} - -/** - * Use the three replace functions on the submitted Text. - * - * @access private - * - * @param string $MessageString The text that is used to search for replaceable strings. - * - * @return string The processed text. - */ -function parseMessageString($MessageString) { - return linkText(colorText(boldText($MessageString))); -} - -/** - * Replace {bold} and {endbold} with and HTML-Tags. - * - * @access private - * - * @param string $text The text that is used to search for {bold} and {endbold} tags. - * - * @return string The submitted text with {bold} and {endbold} replaced with - * the appropriate HTML tages and - */ -function boldText($text) { - $pattern = "/\{bold\}([^{]*)\{endbold\}/"; // Regular expression matching {bold}[Text]{endbold} - $replace = "\\1"; // Replace pattern - return preg_replace($pattern,$replace,$text); -} - -/** - * Replace {color=#[HEX-Value]} or {color=[HEX-Value]} and {endcolor} with and HTML-Tags. - * - * @access private - * - * @param string $text The text that is used to search for {color} and {endcolor} tags. - * - * @return string Input string with HTML-formatted color 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 = "\\2"; // Replace pattern - return preg_replace($pattern,$replace,$text); -} - -/** - * Replace {link=[Link-Target]} and {endlink} with and HTML-Tags. - * - * @access private - * - * @param string $text The text that is used to search for {link} and {endlink} tags. - * - * @return string Input string with HTML-formatted link tags - */ -function linkText($text) { - $pattern = "/\{link=([^}]*)\}([^{]*)\{endlink\}/"; // Regular expression matching {link=[Link-Target]}[Text]{endlink} - $replace = "\\2"; //Replace pattern - return preg_replace($pattern,$replace,$text); -} -?> diff --git a/lam/lib/tree.inc b/lam/lib/tree.inc deleted file mode 100644 index a2ae5175..00000000 --- a/lam/lib/tree.inc +++ /dev/null @@ -1,1324 +0,0 @@ -, so if I wanted to scroll to - * dc=example,dc=com for server 3, the URL would be: - * tree.php#3_dc%3Dexample%2Cdc%3Dcom - * - * @package lists - * @subpackage tree - * @author David Smith - * @author Roland Gruber - */ - -/** - * Prints the HTML of the tree view. - */ -function draw_server_tree() -{ - global $tree; - global $tree_icons; - - - $refresh_href = 'refresh.php'; - $create_href = 'create_form.php?container=' . - rawurlencode( $_SESSION['config']->get_Suffix('tree') ); - - // Draw the quick-links below the server name: - // ( schema | search | refresh | create ) - echo ''; - echo ''; - echo '( '; - echo '' . _('Refresh') . ' | '; - echo '' . _('Create new entry') . ''; - echo ' )'; - - // Fetch and display the base DN for this server - $base_dn = $_SESSION['config']->get_Suffix('tree'); - - // Did we get a base_dn for this server somehow? - if( $base_dn ) { - echo "\n\n\n\n"; - - // is the root of the tree expanded already? - if( isset( $tree[$base_dn] ) ) { - $expand_href = "collapse.php?" . - "dn=" . rawurlencode( $base_dn ); - $expand_img = "../../graphics/minus.png"; - $expand_alt = "-"; - $child_count = number_format( count( $tree[$base_dn] ) ); - } - else { - $expand_href = "expand.php?" . - "dn=" . rawurlencode( $base_dn ); - $expand_img = "../../graphics/plus.png"; - $expand_alt = "+"; - $child_count = count( get_container_contents( - $base_dn, 0, - '(objectClass=*)') ); - if( $child_count > $limit ) - $child_count = $limit . '+'; - } - - $edit_href = "edit.php?dn=" . rawurlencode( $base_dn ); - - $icon = isset( $tree_icons[ $base_dn ] ) - ? $tree_icons[ $base_dn ] - : get_icon( $base_dn ); - - echo ""; - echo "\"$expand_alt\""; - echo ""; - echo "\"img\"\n"; - echo "" . pretty_print_dn( $base_dn ) . ''; - if( $child_count ) - echo " ($child_count)"; - echo "\n"; - echo "\n"; - - if(isset($tree[ $base_dn ]) - && count( $tree[ $base_dn ] ) > 10 ) - draw_create_link( $base_dn, -1, urlencode( $base_dn )); - - } - - flush(); - - // Is the root of the tree expanded already? - if( isset( $tree[$base_dn] ) && is_array( $tree[$base_dn] ) ) { - foreach( $tree[ $base_dn ] as $child_dn ) - draw_tree_html( $child_dn, 0 ); - echo ''; - echo '' . 
-						_('Create new entry') . ''; - echo '' . _('Create new entry') . ''; - } - -} - -/** - * Checks and fixes an initial session's tree cache if needed. - * - * This function is not meant as a user-callable function, but rather a convenient, - * automated method for checking the initial data structure of the session. - */ -function initialize_session_tree() -{ - // From the PHP manual: If you use $_SESSION don't use - // session_register(), session_is_registered() or session_unregister()! - if( ! array_key_exists( 'tree', $_SESSION ) ) - $_SESSION['tree'] = array(); - if( ! array_key_exists( 'tree_icons', $_SESSION ) ) - $_SESSION['tree_icons'] = build_initial_tree_icons(); - - // Make sure that the tree index is indeed well formed. - if( ! is_array( $_SESSION['tree'] ) ) - $_SESSION['tree'] = array(); - if( ! is_array( $_SESSION['tree_icons'] ) ) - $_SESSION['tree_icons'] = build_initial_tree_icons(); - -} - -/** - * Builds the initial array that stores the icon-lookup for each server's DN in the tree browser. The returned - * array is then stored in the current session. The structure of the returned array is simple, and looks like - * this: - * - * Array - * ( - * [0] => Array - * ( - * [dc=example,dc=com] => "dcobject.png" - * ) - * [1] => Array - ( - * [o=Corporation] => "o.png" - * ) - * ) - * - * This function is not meant as a user-callable function, but rather a convenient, automated method for - * setting up the initial data structure for the tree viewer's icon cache. - */ -function build_initial_tree_icons() -{ - $tree_icons = array(); - - // initialize an empty array for each server - $tree_icons = array(); - $tree_icons[ $_SESSION['config']->get_Suffix('tree') ] = get_icon( $_SESSION['config']->get_Suffix('tree') ); - - return $tree_icons; -} - -/** - * Gets whether an entry exists based on its DN. If the entry exists, - * returns true. Otherwise returns false. - * - * @param string $dn The DN of the entry of interest. - * - * @return bool - */ -function dn_exists( $dn ) -{ - $search_result = @ldap_read( $_SESSION['ldap']->server, $dn, 'objectClass=*', array('dn') ); - - if( ! $search_result ) - return false; - - $num_entries = ldap_count_entries( $_SESSION['ldap']->server, $search_result ); - - if( $num_entries > 0 ) - return true; - else - return false; -} - -/** - * Gets a list of child entries for an entry. Given a DN, this function fetches the list of DNs of - * child entries one level beneath the parent. For example, for the following tree: - * - * - * dc=example,dc=com - * ou=People - * cn=Dave - * cn=Fred - * cn=Joe - * ou=More People - * cn=Mark - * cn=Bob - * - * - * Calling get_container_contents( "ou=people,dc=example,dc=com" ) - * would return the following list: - * - * - * cn=Dave - * cn=Fred - * cn=Joe - * ou=More People - * - * - * @param string $dn The DN of the entry whose children to return. - * @param int $size_limit (optional) The maximum number of entries to return. - * If unspecified, no limit is applied to the number of entries in the returned. - * @param string $filter (optional) An LDAP filter to apply when fetching children, example: "(objectClass=inetOrgPerson)" - * @return array An array of DN strings listing the immediate children of the specified entry. - */ -function get_container_contents( $dn, $size_limit=0, $filter='(objectClass=*)' ) -{ - $search = @ldap_list( $_SESSION['ldap']->server, $dn, $filter, array( 'dn' ), 1, $size_limit, 0); - if( ! $search ) - return array(); - $search = ldap_get_entries( $_SESSION['ldap']->server, $search ); - - $return = array(); - for( $i=0; $i<$search['count']; $i++ ) { - $entry = $search[$i]; - $dn = $entry['dn']; - $return[] = $dn; - } - - return $return; -} - -/** - * Given a DN and server ID, this function reads the DN's objectClasses and - * determines which icon best represents the entry. The results of this query - * are cached in a session variable so it is not run every time the tree - * browser changes, just when exposing new DNs that were not displayed - * previously. That means we can afford a little bit of inefficiency here - * in favor of coolness. :) - * - * This function returns a string like "country.png". All icon files are assumed - * to be contained in the /../../graphics/ directory of phpLDAPadmin. - * - * Developers are encouraged to add new icons to the images directory and modify - * this function as needed to suit their types of LDAP entries. If the modifications - * are general to an LDAP audience, the phpLDAPadmin team will gladly accept them - * as a patch. - * - * @param string $dn The DN of the entry whose icon you wish to fetch. - * - * @return string - */ -function get_icon( $dn ) -{ - // fetch and lowercase all the objectClasses in an array - $object_classes = get_object_attr( $dn, 'objectClass', true ); - - if( $object_classes === null || $object_classes === false || ! is_array( $object_classes ) ) - $object_classes = array(); - - foreach( $object_classes as $i => $class ) - $object_classes[$i] = strtolower( $class ); - - $rdn = get_rdn( $dn ); - $rdn_parts = explode( '=', $rdn, 2 ); - $rdn_value = isset( $rdn_parts[0] ) ? $rdn_parts[0] : null; - unset( $rdn_parts ); - - // return icon filename based upon objectClass value - if( in_array( 'sambaaccount', $object_classes ) && - '$' == $rdn{ strlen($rdn) - 1 } ) - return 'nt_machine.png'; - if( in_array( 'sambaaccount', $object_classes ) ) - return 'nt_user.png'; - elseif( in_array( 'person', $object_classes ) || - in_array( 'organizationalperson', $object_classes ) || - in_array( 'inetorgperson', $object_classes ) || - in_array( 'account', $object_classes ) || - in_array( 'posixaccount', $object_classes ) ) - return 'user.png'; - elseif( in_array( 'organization', $object_classes ) ) - return 'o.png'; - elseif( in_array( 'organizationalunit', $object_classes ) ) - return 'ou.png'; - elseif( in_array( 'organizationalrole', $object_classes ) ) - return 'uid.png'; - elseif( in_array( 'dcobject', $object_classes ) || - in_array( 'domainrelatedobject', $object_classes ) || - in_array( 'domain', $object_classes ) || - in_array( 'builtindomain', $object_classes )) - return 'dc.png'; - elseif( in_array( 'alias', $object_classes ) ) - return 'go.png'; - elseif( in_array( 'room', $object_classes ) ) - return 'door.png'; - elseif( in_array( 'device', $object_classes ) ) - return 'device.png'; - elseif( in_array( 'document', $object_classes ) ) - return 'document.png'; - elseif( in_array( 'jammvirtualdomain', $object_classes ) ) - return 'mail.png'; - elseif( in_array( 'locality', $object_classes ) ) - return 'locality.png'; - elseif( in_array( 'posixgroup', $object_classes ) || - in_array( 'groupofnames', $object_classes ) || - in_array( 'group', $object_classes ) ) - return 'ou.png'; - elseif( in_array( 'applicationprocess', $object_classes ) ) - return 'process.png'; - elseif( in_array( 'groupofuniquenames', $object_classes ) ) - return 'uniquegroup.png'; - elseif( in_array( 'iphost', $object_classes ) ) - return 'host.png'; - elseif( in_array( 'nlsproductcontainer', $object_classes ) ) - return 'n.png'; - elseif( in_array( 'ndspkikeymaterial', $object_classes ) ) - return 'lock.png'; - elseif( in_array( 'server', $object_classes ) ) - return 'server-small.png'; - elseif( in_array( 'volume', $object_classes ) ) - return 'hard-drive.png'; - elseif( in_array( 'ndscatcatalog', $object_classes ) ) - return 'catalog.png'; - elseif( in_array( 'resource', $object_classes ) ) - return 'n.png'; - elseif( in_array( 'ldapgroup', $object_classes ) ) - return 'ldap-server.png'; - elseif( in_array( 'ldapserver', $object_classes ) ) - return 'ldap-server.png'; - elseif( in_array( 'nisserver', $object_classes ) ) - return 'ldap-server.png'; - elseif( in_array( 'rbscollection', $object_classes ) ) - return 'ou.png'; - elseif( in_array( 'dfsconfiguration', $object_classes ) ) - return 'nt_machine.png'; - elseif( in_array( 'applicationsettings', $object_classes ) ) - return 'server-settings.png'; - elseif( in_array( 'aspenalias', $object_classes ) ) - return 'mail.png'; - elseif( in_array( 'container', $object_classes ) ) - return 'folder.png'; - elseif( in_array( 'ipnetwork', $object_classes ) ) - return 'network.png'; - elseif( in_array( 'samserver', $object_classes ) ) - return 'server-small.png'; - elseif( in_array( 'lostandfound', $object_classes ) ) - return 'find.png'; - elseif( in_array( 'infrastructureupdate', $object_classes ) ) - return 'server-small.png'; - elseif( in_array( 'filelinktracking', $object_classes ) ) - return 'files.png'; - elseif( in_array( 'automountmap', $object_classes ) || - in_array( 'automount', $object_classes ) ) - return 'hard-drive.png'; - elseif( 0 === strpos( $rdn_value, "ipsec" ) || - 0 == strcasecmp( $rdn_value, "IP Security" ) || - 0 == strcasecmp( $rdn_value, "MSRADIUSPRIVKEY Secret" ) || - 0 === strpos( $rdn_value, "BCKUPKEY_" ) ) - return 'lock.png'; - elseif( 0 == strcasecmp( $rdn_value, "MicrosoftDNS" ) ) - return 'dc.png'; - // Oh well, I don't know what it is. Use a generic icon. - else - return 'object.png'; -} - -/** - * Much like get_object_attrs(), but only returns the values for - * one attribute of an object. Example calls: - * - * - * print_r( get_object_attr( 0, "cn=Bob,ou=people,dc=example,dc=com", "sn" ) ); - * // prints: - * // Array - * // ( - * // [0] => "Smith" - * // ) - * - * print_r( get_object_attr( 0, "cn=Bob,ou=people,dc=example,dc=com", "objectClass" ) ); - * // prints: - * // Array - * // ( - * // [0] => "top" - * // [1] => "person" - * // ) - * - * - * @param string $dn The distinguished name (DN) of the entry whose attributes/values to fetch. - * @param string $attr The attribute whose value(s) to return (ie, "objectClass", "cn", "userPassword") - * @param bool $lower_case_attr_names (optional) If true, all keys of the returned associative - * array will be lower case. Otherwise, they will be cased as the LDAP server returns - * them. - * @see get_object_attrs - */ -function get_object_attr( $dn, $attr ) -{ - $search = @ldap_read( $_SESSION['ldap']->server, $dn, '(objectClass=*)', array( $attr ), 0, 0, 0 ); - - if( ! $search ) - return false; - - $entry = ldap_first_entry( $_SESSION['ldap']->server, $search ); - - if( ! $entry ) - return false; - - $attrs = ldap_get_attributes( $_SESSION['ldap']->server, $entry ); - - if( ! $attrs || $attrs['count'] == 0 ) - return false; - - $vals = ldap_get_values( $_SESSION['ldap']->server, $entry, $attr ); - unset( $vals['count'] ); - return $vals; -} - -/** - * Given a DN string, this returns the 'RDN' portion of the string. - * For example. given 'cn=Manager,dc=example,dc=com', this function returns - * 'cn=Manager' (it is really the exact opposite of get_container()). - * - * @param string $dn The DN whose RDN to return. - * @param bool $include_attrs If true, include attributes in the RDN string. - * See http://php.net/ldap_explode_dn for details - * - * @return string The RDN - * @see get_container - */ -function get_rdn( $dn, $include_attrs=0 ) -{ - if( $dn == null ) - return null; - $rdn = pla_explode_dn( $dn, $include_attrs ); - if( 0 == count($rdn) ) - return $dn; - if( ! isset( $rdn[0] ) ) - return $dn; - $rdn = $rdn[0]; - return $rdn; -} - -/** - * Explode a DN into an array of its RDN parts. This function is UTF-8 safe - * and replaces the buggy PHP ldap_explode_dn() which does not properly - * handle UTF-8 DNs and also causes segmentation faults with some inputs. - * - * @param string $dn The DN to explode. - * @param int $with_attriutes (optional) Whether to include attribute names (see http://php.net/ldap_explode_dn for details) - * - * @return array An array of RDN parts of this format: - * - * Array - * ( - * [0] => uid=ppratt - * [1] => ou=People - * [2] => dc=example - * [3] => dc=com - * ) - * - */ -function pla_explode_dn( $dn, $with_attributes=0 ) -{ - // replace "\," with the hexadecimal value for safe split - $var = preg_replace("/\\\,/","\\\\\\\\2C",$dn); - - // split the dn - $result = explode(",",$var); - - //translate hex code into ascii for display - foreach( $result as $key => $value ) - $result[$key] = preg_replace("/\\\([0-9A-Fa-f]{2})/e", "''.chr(hexdec('\\1')).''", $value); - - return $result; -} - -/** - * Returns an HTML-beautified version of a DN. - * Internally, this function makes use of pla_explode_dn() to break the - * the DN into its components. It then glues them back together with - * "pretty" HTML. The returned HTML is NOT to be used as a real DN, but - * simply displayed. - * - * @param string $dn The DN to pretty-print. - * @return string - */ -function pretty_print_dn( $dn ) -{ - $dn = pla_explode_dn( $dn ); - foreach( $dn as $i => $element ) { - $element = htmlspecialchars( $element ); - $element = explode( '=', $element, 2 ); - $element = implode( '=', $element ); - $dn[$i] = $element; - } - $dn = implode( ',', $dn ); - - return $dn; -} - -/** - * Compares 2 DNs. If they are equivelant, returns 0, otherwise, - * returns their sorting order (similar to strcmp()): - * Returns < 0 if dn1 is less than dn2. - * Returns > 0 if dn1 is greater than dn2. - * - * The comparison is performed starting with the top-most element - * of the DN. Thus, the following list: - * - * ou=people,dc=example,dc=com - * cn=Admin,ou=People,dc=example,dc=com - * cn=Joe,ou=people,dc=example,dc=com - * dc=example,dc=com - * cn=Fred,ou=people,dc=example,dc=org - * cn=Dave,ou=people,dc=example,dc=org - * - * Will be sorted thus using usort( $list, "pla_compare_dns" ): - * - * dc=com - * dc=example,dc=com - * ou=people,dc=example,dc=com - * cn=Admin,ou=People,dc=example,dc=com - * cn=Joe,ou=people,dc=example,dc=com - * cn=Dave,ou=people,dc=example,dc=org - * cn=Fred,ou=people,dc=example,dc=org - * - * - * @param string $dn1 The first of two DNs to compare - * @param string $dn2 The second of two DNs to compare - * @return int - */ -function pla_compare_dns( $dn1, $dn2 ) -{ - // If they are obviously the same, return immediately - if( 0 === strcasecmp( $dn1, $dn2 ) ) - return 0; - - $dn1_parts = pla_explode_dn( pla_reverse_dn($dn1) ); - $dn2_parts = pla_explode_dn( pla_reverse_dn($dn2) ); - assert( is_array( $dn1_parts ) ); - assert( is_array( $dn2_parts ) ); - - // Foreach of the "parts" of the smaller DN - for( $i=0; $i count($dn2_parts) ) { - return 1; - } elseif( count( $dn2_parts ) > count( $dn1_parts ) ) { - return -1; - } else { - return 0; - } -} - -/** - * Reverses a DN such that the top-level RDN is first and the bottom-level RDN is last - * For example: - * - * cn=Brigham,ou=People,dc=example,dc=com - * - * Becomes: - * - * dc=com,dc=example,ou=People,cn=Brigham - * - * This makes it possible to sort lists of DNs such that they are grouped by container. - * - * @param string $dn The DN to reverse - * - * @return string The reversed DN - * - * @see pla_compare_dns - */ -function pla_reverse_dn($dn) -{ - foreach (pla_explode_dn($dn) as $key => $branch) { - - // pla_expode_dn returns the array with an extra count attribute, we can ignore that. - if ( $key === "count" ) continue; - - if (isset($rev)) { - $rev = $branch.",".$rev; - } else { - $rev = $branch; - } - } - return $rev; -} - -/** - * Gets a DN string using the user-configured tree_display_format string to format it. - */ -function draw_formatted_dn( $dn ) -{ - $format = '%rdn'; - preg_match_all( "/%[a-zA-Z_0-9]+/", $format, $tokens ); - $tokens = $tokens[0]; - foreach( $tokens as $token ) { - if( 0 == strcasecmp( $token, '%dn' ) ) - $format = str_replace( $token, pretty_print_dn( $dn ), $format ); - elseif( 0 == strcasecmp( $token, '%rdn' ) ) - $format = str_replace( $token, pretty_print_dn( get_rdn( $dn ) ), $format ); - elseif( 0 == strcasecmp( $token, '%rdnvalue' ) ) { - $rdn = get_rdn( $dn ); - $rdn_value = explode( '=', $rdn, 2 ); - $rdn_value = $rdn_value[1]; - $format = str_replace( $token, $rdn_value, $format ); - } else { - $attr_name = str_replace( '%', '', $token ); - $attr_values = get_object_attr( $dn, $attr_name ); - if( null == $attr_values ) - $display = 'none'; - elseif( is_array( $attr_values ) ) - $display = htmlspecialchars( implode( ', ', $attr_values ) ); - else - $display = htmlspecialchars( $attr_values ); - $format = str_replace( $token, $display, $format ); - } - } - echo $format; -} - -/** - * Gets the attributes/values of an entry. Returns an associative array whose - * keys are attribute value names and whose values are arrays of values for - * said attribute. Optionally, callers may specify true for the parameter - * $lower_case_attr_names to force all keys in the associate array (attribute - * names) to be lower case. - * - * Sample return value of get_object_attrs( 0, "cn=Bob,ou=pepole,dc=example,dc=com" ) - * - * - * Array - * ( - * [objectClass] => Array - * ( - * [0] => person - * [1] => top - * ) - * [cn] => Array - * ( - * [0] => Bob - * ) - * [sn] => Array - * ( - * [0] => Jones - * ) - * [dn] => Array - * ( - * [0] => cn=Bob,ou=pepole,dc=example,dc=com - * ) - * ) - * - * - * @param string $dn The distinguished name (DN) of the entry whose attributes/values to fetch. - * @param bool $lower_case_attr_names (optional) If true, all keys of the returned associative - * array will be lower case. Otherwise, they will be cased as the LDAP server returns - * them. - * @param int $deref For aliases and referrals, this parameter specifies whether to - * follow references to the referenced DN or to fetch the attributes for - * the referencing DN. See http://php.net/ldap_search for the 4 valid - * options. - * @return array - * @see get_entry_system_attrs - * @see get_object_attr - */ -function get_object_attrs( $dn, $lower_case_attr_names=false, $deref=LDAP_DEREF_NEVER ) -{ - - $conn = $_SESSION['ldap']->server; - $search = @ldap_read( $conn, $dn, '(objectClass=*)', array( ), 0, 0, 0, $deref ); - - if( ! $search ) - return false; - - $entry = ldap_first_entry( $conn, $search ); - - if( ! $entry ) - return false; - - $attrs = ldap_get_attributes( $conn, $entry ); - - if( ! $attrs || $attrs['count'] == 0 ) - return false; - - $num_attrs = $attrs['count']; - unset( $attrs['count'] ); - - // strip numerical inices - for( $i=0; $i<$num_attrs; $i++ ) - unset( $attrs[$i] ); - - $return_array = array(); - foreach( $attrs as $attr => $vals ) { - if( $lower_case_attr_names ) - $attr = strtolower( $attr ); - if( is_attr_binary( $attr ) ) - $vals = ldap_get_values_len( $conn, $entry, $attr ); - unset( $vals['count'] ); - $return_array[ $attr ] = $vals; - } - - ksort( $return_array ); - - return $return_array; -} - -/** - * Given an attribute name and server ID number, this function returns - * whether the attrbiute may contain binary data. This is useful for - * developers who wish to display the contents of an arbitrary attribute - * but don't want to dump binary data on the page. - * - * @param string $attr_name The name of the attribute to test. - * @return bool - * - * @see is_jpeg_photo - */ -function is_attr_binary( $attr_name ) -{ - $attr_name = strtolower( $attr_name ); - /** Determining if an attribute is binary can be an expensive - operation. We cache the results for each attr name on each - server in the $attr_cache to speed up subsequent calls. - The $attr_cache looks like this: - Array - 0 => Array - 'objectclass' => false - 'cn' => false - 'usercertificate' => true - 1 => Array - 'jpegphoto' => true - 'cn' => false - */ - - static $attr_cache; - if( isset( $attr_cache[ $attr_name ] ) ) - return $attr_cache[ $attr_name ]; - - if( $attr_name == 'userpassword' ) { - $attr_cache[ $attr_name ] = false; - return false; - } - - // Quick check: If the attr name ends in ";binary", then it's binary. - if( 0 == strcasecmp( substr( $attr_name, strlen( $attr_name ) - 7 ), ";binary" ) ) { - $attr_cache[ $attr_name ] = true; - return true; - } - - // See what the server schema says about this attribute - $schema_attr = get_schema_attribute( $attr_name ); - if( ! $schema_attr ) { - // Strangely, some attributeTypes may not show up in the server - // schema. This behavior has been observed in MS Active Directory. - $type = null; - $syntax = null; - } else { - $type = $schema_attr->getType(); - $syntax = $schema_attr->getSyntaxOID(); - } - - if( 0 == strcasecmp( $type, 'Certificate' ) || - 0 == strcasecmp( $type, 'Binary' ) || - 0 == strcasecmp( $attr_name, 'usercertificate' ) || - 0 == strcasecmp( $attr_name, 'usersmimecertificate' ) || - 0 == strcasecmp( $attr_name, 'networkaddress' ) || - 0 == strcasecmp( $attr_name, 'objectGUID' ) || - 0 == strcasecmp( $attr_name, 'objectSID' ) || - $syntax == '1.3.6.1.4.1.1466.115.121.1.10' || - $syntax == '1.3.6.1.4.1.1466.115.121.1.28' || - $syntax == '1.3.6.1.4.1.1466.115.121.1.5' || - $syntax == '1.3.6.1.4.1.1466.115.121.1.8' || - $syntax == '1.3.6.1.4.1.1466.115.121.1.9' ) { - $attr_cache[ $attr_name ] = true; - return true; - } else { - $attr_cache[ $attr_name ] = false; - return false; - } -} - -/** - * Prunes off anything after the ";" in an attr name. This is useful for - * attributes that may have ";binary" appended to their names. With - * real_attr_name(), you can more easily fetch these attributes' schema - * with their "real" attribute name. - * - * @param string $attr_name The name of the attribute to examine. - * @return string - */ -function real_attr_name( $attr_name ) -{ - $attr_name = preg_replace( "/;.*$/U", "", $attr_name ); - return $attr_name; -} - -/** - * Gets the operational attributes for an entry. Given a DN, this function fetches that entry's - * operational (ie, system or internal) attributes. These attributes include "createTimeStamp", - * "creatorsName", and any other attribute that the LDAP server sets automatically. The returned - * associative array is of this form: - * - * Array - * ( - * [creatorsName] => Array - * ( - * [0] => "cn=Admin,dc=example,dc=com" - * ) - * [createTimeStamp]=> Array - * ( - * [0] => "10401040130" - * ) - * [hasSubordinates] => Array - * ( - * [0] => "FALSE" - * ) - * ) - * - * - * @param string $dn The DN of the entry whose interal attributes are desired. - * @param int $deref For aliases and referrals, this parameter specifies whether to - * follow references to the referenced DN or to fetch the attributes for - * the referencing DN. See http://php.net/ldap_search for the 4 valid - * options. - * @return array An associative array whose keys are attribute names and whose values - * are arrays of values for the aforementioned attribute. - */ -function get_entry_system_attrs( $dn, $deref=LDAP_DEREF_NEVER ) -{ - $conn = $_SESSION['ldap']->server; - $attrs = array( 'creatorsname', 'createtimestamp', 'modifiersname', - 'structuralObjectClass', 'entryUUID', 'modifytimestamp', - 'subschemaSubentry', 'hasSubordinates', '+' ); - $search = @ldap_read( $conn, $dn, '(objectClass=*)', $attrs, 0, 0, 0, $deref ); - if( ! $search ) - return false; - $entry = ldap_first_entry( $conn, $search ); - if( ! $entry) - return false; - $attrs = ldap_get_attributes( $conn, $entry ); - if( ! $attrs ) - return false; - if( ! isset( $attrs['count'] ) ) - return false; - $count = $attrs['count']; - unset( $attrs['count'] ); - $return_attrs = array(); - for( $i=0; $i<$count; $i++ ) { - $attr_name = $attrs[$i]; - unset( $attrs[$attr_name]['count'] ); - $return_attrs[$attr_name] = $attrs[$attr_name]; - } - return $return_attrs; -} - -function arrayLower($array) { - foreach ($array as $key => $value) { - $newarray[$key] = strtolower($value); - } - return $newarray; -} - -/** - * Used to determine if the specified attribute is indeed a jpegPhoto. If the - * specified attribute is one that houses jpeg data, true is returned. Otherwise - * this function returns false. - * - * @param string $attr_name The name of the attribute to test. - * @return bool - * @see draw_jpeg_photos - */ -function is_jpeg_photo( $attr_name ) -{ - // easy quick check - if( 0 == strcasecmp( $attr_name, 'jpegPhoto' ) || - 0 == strcasecmp( $attr_name, 'photo' ) ) - return true; - - // go to the schema and get the Syntax OID - $schema_attr = get_schema_attribute( $attr_name ); - if( ! $schema_attr ) - return false; - - $oid = $schema_attr->getSyntaxOID(); - $type = $schema_attr->getType(); - - if( 0 == strcasecmp( $type, 'JPEG' ) ) - return true; - if( $oid == '1.3.6.1.4.1.1466.115.121.1.28' ) - return true; - - return false; -} - -/** - * Given an attribute name and server ID number, this function returns - * whether the attrbiute contains boolean data. This is useful for - * developers who wish to display the contents of a boolean attribute - * with a drop-down. - * - * @param string $attr_name The name of the attribute to test. - * @return bool - */ -function is_attr_boolean( $attr_name ) -{ - $type = ( $schema_attr = get_schema_attribute( $attr_name ) ) ? - $schema_attr->getType() : - null; - if( 0 == strcasecmp( 'boolean', $type ) || - 0 == strcasecmp( 'isCriticalSystemObject', $attr_name ) || - 0 == strcasecmp( 'showInAdvancedViewOnly', $attr_name ) ) - return true; - else - return false; -} - -/** - * Get whether a string looks like an email address (user@example.com). - * - * @param string $str The string to analyze. - * @return bool Returns true if the specified string looks like - * an email address or false otherwise. - */ -function is_mail_string( $str ) -{ - $mail_regex = "/^[_A-Za-z0-9-]+(\\.[_A-Za-z0-9-]+)*@[A-Za-z0-9-]+(\\.[A-Za-z0-9-]+)*$/"; - if( preg_match( $mail_regex, $str ) ) - return true; - else - return false; -} - -/** - * Get whether a string looks like a web URL (http://www.example.com/) - * - * @param string $str The string to analyze. - * @return bool Returns true if the specified string looks like - * a web URL or false otherwise. - */ -function is_url_string( $str ) -{ - $url_regex = '/(ftp|https?):\/\/+[\w\.\-\/\?\=\&]*\w+/'; - if( preg_match( $url_regex, $str ) ) - return true; - else - return false; - -} - -function sortAttrs($a,$b) { - return strcmp ($a, $b); -} - -/** - * Determines if an attribute's value can contain multiple lines. Attributes that fall - * in this multi-line category may be configured in config.php. Hence, this function - * accesses the global variable $multi_line_attributes; - * - * Usage example: - * - * if( is_muli_line_attr( "postalAddress" ) ) - * echo ""; - * else - * echo ""; - * - * - * @param string $attr_name The name of the attribute of interestd (case insensivite) - * @param string $val (optional) The current value of the attribute (speeds up the - * process by searching for carriage returns already in the attribute value) - * @return bool - */ -function is_multi_line_attr( $attr_name, $val=null ) -{ - // First, check the optional val param for a \n or a \r - if( null != $val && - ( false !== strpos( $val, "\n" ) || - false !== strpos( $val, "\r" ) ) ) - return true; - - // Next, compare strictly by name first - global $multi_line_attributes; - if( isset( $multi_line_attributes ) && is_array( $multi_line_attributes ) ) - foreach( $multi_line_attributes as $multi_line_attr_name ) - if( 0 == strcasecmp( $multi_line_attr_name, $attr_name ) ) { - return true; - } - - global $multi_line_syntax_oids; - if( isset( $multi_line_syntax_oids ) && is_array( $multi_line_syntax_oids ) ) { - $schema_attr = get_schema_attribute( $attr_name ); - if( ! $schema_attr ) - return false; - $syntax_oid = $schema_attr->getSyntaxOID(); - if( ! $syntax_oid ) - return false; - foreach( $multi_line_syntax_oids as $multi_line_syntax_oid ) - if( $multi_line_syntax_oid == $syntax_oid ) - return true; - } - - return false; - -} - -/** - * Returns true if the attribute specified is required to take as input a DN. - * Some examples include 'distinguishedName', 'member' and 'uniqueMember'. - * @param string $attr_name The name of the attribute of interest (case insensitive) - * @return bool - */ -function is_dn_attr( $attr_name ) -{ - // Simple test first - $dn_attrs = array( "aliasedObjectName" ); - foreach( $dn_attrs as $dn_attr ) - if( 0 == strcasecmp( $attr_name, $dn_attr ) ) - return true; - - // Now look at the schema OID - $attr_schema = get_schema_attribute( $attr_name ); - if( ! $attr_schema ) - return false; - $syntax_oid = $attr_schema->getSyntaxOID(); - if( '1.3.6.1.4.1.1466.115.121.1.12' == $syntax_oid ) - return true; - if( '1.3.6.1.4.1.1466.115.121.1.34' == $syntax_oid ) - return true; - $syntaxes = get_schema_syntaxes(); - if( ! isset( $syntaxes[ $syntax_oid ] ) ) - return false; - $syntax_desc = $syntaxes[ $syntax_oid ]->getDescription(); - if( false !== strpos( strtolower($syntax_desc), 'distinguished name' ) ) - return true; - return false; -} - -/** - * Checks if a string exists in an array, ignoring case. - */ -function in_array_ignore_case( $needle, $haystack ) -{ - if( ! is_array( $haystack ) ) - return false; - if( ! is_string( $needle ) ) - return false; - foreach( $haystack as $element ) - if( is_string( $element ) && 0 == strcasecmp( $needle, $element ) ) - return true; - return false; -} - -function get_enc_type( $user_password ) -{ - /* Capture the stuff in the { } to determine if this is crypt, md5, etc. */ - $enc_type = null; - if( preg_match( "/{([^}]+)}/", $user_password, $enc_type) ) - return $enc_type[1]; - else - return null; -} - -/** - * Draw the jpegPhoto image(s) for an entry wrapped in HTML. Many options are available to - * specify how the images are to be displayed. - * - * Usage Examples: - * - * draw_jpeg_photos( 0, "cn=Bob,ou=People,dc=example,dc=com", "jpegPhoto" true, false, "border: 1px; width: 150px" ); - * draw_jpeg_photos( 1, "cn=Fred,ou=People,dc=example,dc=com" ); - * - * - * @param string $dn The DN of the entry that contains the jpeg attribute you want to draw. - * @param string $attr_name The name of the attribute containing the jpeg data (usually 'jpegPhoto'). - * @param bool $draw_delete_buttons If true, draws a button beneath the image titled 'Delete' allowing the user - * to delete the jpeg attribute by calling JavaScript function deleteAttribute() provided - * in the default modification template. - * @param bool $draw_bytes_and_size If true, draw text below the image indicating the byte size and dimensions. - * @param string $table_html_attrs Specifies optional CSS style attributes for the table tag. - * - * @return void - */ -function draw_jpeg_photos( $dn, $attr_name='jpegPhoto', $draw_delete_buttons=false, - $draw_bytes_and_size=true, $table_html_attrs='align="left"', $img_html_attrs='' ) -{ - $jpeg_temp_dir = $_SESSION['lampath'] . 'tmp'; - - $conn = $_SESSION['ldap']->server; - $search_result = ldap_read( $conn, $dn, 'objectClass=*', array( $attr_name ) ); - $entry = ldap_first_entry( $conn, $search_result ); - - echo "
\n\n"; - // for each jpegPhoto in the entry, draw it (there may be only one, and that's okay) - $jpeg_data = @ldap_get_values_len( $conn, $entry, $attr_name ); - if( ! is_array( $jpeg_data ) ) { - echo "Could not fetch jpeg data from LDAP server for attribute " . htmlspecialchars( $attr_name ); - return; - } - for( $i=0; $i<$jpeg_data['count']; $i++ ) - { - // ensures that the photo is written to the specified jpeg_temp_dir - $jpeg_temp_dir = realpath($jpeg_temp_dir.'/'); - $jpeg_filename = $jpeg_temp_dir . '/' . 'jpg' . $_SESSION['ldap']->new_rand() . '.jpg'; - $outjpeg = @fopen($jpeg_filename, "wb"); - fwrite($outjpeg, $jpeg_data[$i]); - fclose ($outjpeg); - $jpeg_data_size = filesize( $jpeg_filename ); - if( $jpeg_data_size < 6 && $draw_delete_buttons ) { - echo _('jpegPhoto contains errors'); - echo '
'. _('Delete') .''; - continue; - } - - if( function_exists( 'getimagesize' ) ) { - $jpeg_dimensions = @getimagesize( $jpeg_filename ); - $width = $jpeg_dimensions[0]; - $height = $jpeg_dimensions[1]; - } else { - $width = 0; - $height = 0; - } - if( $width > 300 ) { - $scale_factor = 300 / $width; - $img_width = 300; - $img_height = $height * $scale_factor; - } else { - $img_width = $width; - $img_height = $height; - } - echo "
\n"; - if( $draw_bytes_and_size ) { - echo "" . number_format($jpeg_data_size) . " bytes. "; - echo "$width x $height pixels.
\n\n"; - } - - if( $draw_delete_buttons ) - { ?> - - Delete Photo -
\n\n"; -} - -/** - * A handy ldap searching function very similar to PHP's ldap_search() with the - * following exceptions: Callers may specify a search scope and the return value - * is an array containing the search results rather than an LDAP result resource. - * - * Example usage: - * - * $samba_users = ldap_search( 0, "(&(objectClass=sambaAccount)(objectClass=posixAccount))", - * "ou=People,dc=example,dc=com", array( "uid", "homeDirectory" ) ); - * print_r( $samba_users ); - * // prints (for example): - * // Array - * // ( - * // [uid=jsmith,ou=People,dc=example,dc=com] => Array - * // ( - * // [dn] => "uid=jsmith,ou=People,dc=example,dc=com" - * // [uid] => "jsmith" - * // [homeDirectory] => "\\server\jsmith" - * // ) - * // [uid=byoung,ou=People,dc=example,dc=com] => Array - * // ( - * // [dn] => "uid=byoung,ou=Samba,ou=People,dc=example,dc=com" - * // [uid] => "byoung" - * // [homeDirectory] => "\\server\byoung" - * // ) - * // ) - * - * - * WARNING: This function will use a lot of memory on large searches since the entire result set is - * stored in a single array. For large searches, you should consider sing the less memory intensive - * PHP LDAP API directly (ldap_search(), ldap_next_entry(), ldap_next_attribute(), etc). - * - * @param string $filter The LDAP filter to use when searching (example: "(objectClass=*)") (see RFC 2254) - * @param string $base_dn The DN of the base of search. - * @param array $attrs An array of attributes to include in the search result (example: array( "objectClass", "uid", "sn" )). - * @param string $scope The LDAP search scope. Must be one of "base", "one", or "sub". Standard LDAP search scope. - * @param bool $sort_results Specify false to not sort results by DN or true to have the - * returned array sorted by DN (uses ksort) - * @param int $deref When handling aliases or referrals, this specifies whether to follow referrals. Must be one of - * LDAP_DEREF_ALWAYS, LDAP_DEREF_NEVER, LDAP_DEREF_SEARCHING, or LDAP_DEREF_FINDING. See the PHP LDAP API for details. - */ -function pla_ldap_search( $filter, $base_dn=null, $attrs=array(), $scope='sub', $sort_results=true, $deref=LDAP_DEREF_ALWAYS ) -{ - $ds = $_SESSION['ldap']->server; - switch( $scope ) { - case 'base': - $search = @ldap_read( $ds, $base_dn, $filter, $attrs, 0, 0, 0, $deref ); - break; - case 'one': - $search = @ldap_list( $ds, $base_dn, $filter, $attrs, 0, 0, 0, $deref ); - break; - case 'sub': - default: - $search = @ldap_search( $ds, $base_dn, $filter, $attrs, 0, 0, 0, $deref ); - break; - } - - if( ! $search ) - return array(); - - $return = array(); - //get the first entry identifier - if( $entry_id = ldap_first_entry($ds,$search) ) - - //iterate over the entries - while($entry_id) { - - //get the distinguished name of the entry - $dn = ldap_get_dn($ds,$entry_id); - - //get the attributes of the entry - $attrs = ldap_get_attributes($ds,$entry_id); - $return[$dn]['dn'] = $dn; - - //get the first attribute of the entry - if($attr = ldap_first_attribute($ds,$entry_id,$attrs)) - - //iterate over the attributes - while($attr){ - if( is_attr_binary($attr)) - $values = ldap_get_values_len($ds,$entry_id,$attr); - else - $values = ldap_get_values($ds,$entry_id,$attr); - - //get the number of values for this attribute - $count = $values['count']; - unset($values['count']); - if($count==1) - $return[$dn][$attr] = $values[0]; - else - $return[$dn][$attr] = $values; - - $attr = ldap_next_attribute($ds,$entry_id,$attrs); - }// end while attr - - $entry_id = ldap_next_entry($ds,$entry_id); - - } // end while entry_id - - if( $sort_results && is_array( $return ) ) - ksort( $return ); - - return $return; -} - -/** - * Given a DN string, this returns the parent container portion of the string. - * For example. given 'cn=Manager,dc=example,dc=com', this function returns - * 'dc=example,dc=com'. - * - * @param string $dn The DN whose container string to return. - * - * @return string The container - * @see get_rdn - */ -function get_container( $dn ) -{ - $parts = pla_explode_dn( $dn ); - if( count( $parts ) <= 1 ) - return null; - $container = $parts[1]; - for( $i=2; $i diff --git a/lam/lib/ufpdf.php b/lam/lib/ufpdf.php deleted file mode 100644 index 1aa794a4..00000000 --- a/lam/lib/ufpdf.php +++ /dev/null @@ -1,820 +0,0 @@ - * -* License: GPL * -* * -* UFPDF is a modification of FPDF to support Unicode through UTF-8. * -* * -* This file includes modifications from Andrea Rossato which fix line breaking * -* in Write()/MultiCell(). * -* * -*******************************************************************************/ - -if(!class_exists('UFPDF')) -{ -define('UFPDF_VERSION','0.1'); - -include_once 'fpdf.php'; - -/** - * Main UFPDF class for creating Unicode PDF documents - * - * @package PDF - * @see FPDF - */ -class UFPDF extends FPDF -{ - -/******************************************************************************* -* * -* Public methods * -* * -*******************************************************************************/ -function UFPDF($orientation='P',$unit='mm',$format='A4') -{ - FPDF::FPDF($orientation, $unit, $format); -} - -function GetStringWidth($s) -{ - //Get width of a string in the current font - $s = (string)$s; - $codepoints=$this->utf8_to_codepoints(trim($s)); - $cw=&$this->CurrentFont['cw']; - $w=0; - foreach($codepoints as $cp) { - if (isset($cw[$cp])) { - $w+=$cw[$cp]; - } - else if (isset($cw[ord($cp)])) { - $w+=$cw[ord($cp)]; - } - else if (isset($cw[chr($cp)])) { - $w+=$cw[chr($cp)]; - } - //-- adjust width for incorrect hebrew chars - if ($cp>1480 && $cp < 1550) $w -= $cw[$cp]/1.8; - } - return $w*$this->FontSize/1000; -} - -function AddFont($family,$style='',$file='') -{ - //Add a TrueType or Type1 font - $family=strtolower($family); - if($family=='arial') - $family='helvetica'; - $style=strtoupper($style); - if($style=='IB') - $style='BI'; - if(isset($this->fonts[$family.$style])) - $this->Error('Font already added: '.$family.' '.$style); - if($file=='') - $file=str_replace(' ','',$family).strtolower($style).'.php'; - if(defined('FPDF_FONTPATH')) - $file=FPDF_FONTPATH.$file; - include($file); - if(!isset($name)) - $this->Error('Could not include font definition file'); - $i=count($this->fonts)+1; - $this->fonts[$family.$style]=array('i'=>$i,'type'=>$type,'name'=>$name,'desc'=>$desc,'up'=>$up,'ut'=>$ut,'cw'=>$cw,'file'=>$file,'ctg'=>$ctg); - if($file) - { - if($type=='TrueTypeUnicode') - $this->FontFiles[$file]=array('length1'=>$originalsize); - else - $this->FontFiles[$file]=array('length1'=>$size1,'length2'=>$size2); - } -} - -function Text($x,$y,$txt) -{ - //Output a string - $s=sprintf('BT %.2f %.2f Td %s Tj ET',$x*$this->k,($this->h-$y)*$this->k,$this->_escapetext($txt)); - if($this->underline and $txt!='') - $s.=' '.$this->_dounderline($x,$y,$this->GetStringWidth($txt),$txt); - if($this->ColorFlag) - $s='q '.$this->TextColor.' '.$s.' Q'; - $this->_out($s); -} - -function AcceptPageBreak() -{ - //Accept automatic page break or not - return $this->AutoPageBreak; -} - -function Cell($w,$h=0,$txt='',$border=0,$ln=0,$align='J',$fill=0,$link='') -{ - //Output a cell - $k=$this->k; - if($this->y+$h>$this->PageBreakTrigger and !$this->InFooter and $this->AcceptPageBreak()) - { - //Automatic page break - $x=$this->x; - $ws=$this->ws; - if($ws>0) - { - $this->ws=0; - $this->_out('0 Tw'); - } - $this->AddPage($this->CurOrientation); - $this->x=$x; - if($ws>0) - { - $this->ws=$ws; - $this->_out(sprintf('%.3f Tw',$ws*$k)); - } - } - if($w==0) - $w=$this->w-$this->rMargin-$this->x; - $s=''; - if($fill==1 or $border==1) - { - if($fill==1) - $op=($border==1) ? 'B' : 'f'; - else - $op='S'; - $s=sprintf('%.2f %.2f %.2f %.2f re %s ',$this->x*$k,($this->h-$this->y)*$k,$w*$k,-$h*$k,$op); - } - if(is_string($border)) - { - $x=$this->x; - $y=$this->y; - if(is_int(strpos($border,'L'))) - $s.=sprintf('%.2f %.2f m %.2f %.2f l S ',$x*$k,($this->h-$y)*$k,$x*$k,($this->h-($y+$h))*$k); - if(is_int(strpos($border,'T'))) - $s.=sprintf('%.2f %.2f m %.2f %.2f l S ',$x*$k,($this->h-$y)*$k,($x+$w)*$k,($this->h-$y)*$k); - if(is_int(strpos($border,'R'))) - $s.=sprintf('%.2f %.2f m %.2f %.2f l S ',($x+$w)*$k,($this->h-$y)*$k,($x+$w)*$k,($this->h-($y+$h))*$k); - if(is_int(strpos($border,'B'))) - $s.=sprintf('%.2f %.2f m %.2f %.2f l S ',$x*$k,($this->h-($y+$h))*$k,($x+$w)*$k,($this->h-($y+$h))*$k); - } - if($txt!='') - { - $width = $this->GetStringWidth($txt); - if($align=='R') - $dx=$w-$this->cMargin-$width; - elseif($align=='C') - $dx=($w-$width)/2; - else - $dx=$this->cMargin; - if($this->ColorFlag) - $s.='q '.$this->TextColor.' '; - $txtstring=$this->_escapetext($txt); - $s.=sprintf('BT %.2f %.2f Td %s Tj ET',($this->x+$dx)*$k,($this->h-($this->y+.5*$h+.3*$this->FontSize))*$k,$txtstring); - if($this->underline) - $s.=' '.$this->_dounderline($this->x+$dx,$this->y+.5*$h+.3*$this->FontSize,$width,$txt); - if($this->ColorFlag) - $s.=' Q'; - if($link) - $this->Link($this->x+$dx,$this->y+.5*$h-.5*$this->FontSize,$width,$this->FontSize,$link); - } - if($s) - $this->_out($s); - $this->lasth=$h; - if($ln>0) - { - //Go to next line - $this->y+=$h; - if($ln==1) - $this->x=$this->lMargin; - } - else - $this->x+=$w; -} - -function MultiCell($w,$h,$txt,$border=0,$align='J',$fill=0) -{ - //Output text with automatic or explicit line breaks - $cw=&$this->CurrentFont['cw']; - $cp=$this->utf8_to_codepoints(trim($txt)); - //print_r($cp); - if($w==0) - $w=$this->w-$this->rMargin-$this->x; - $wmax=($w-2*$this->cMargin)*1000/$this->FontSize; - //echo $w; - $s=str_replace("\r",'',$txt); - $nb=$this->strlen($s); - if($nb>0 and $s[$nb-1]=="\n") - $nb--; - $b=0; - if($border) - { - if($border==1) - { - $border='LTRB'; - $b='LRT'; - $b2='LR'; - } - else - { - $b2=''; - if(is_int(strpos($border,'L'))) - $b2.='L'; - if(is_int(strpos($border,'R'))) - $b2.='R'; - $b=is_int(strpos($border,'T')) ? $b2.'T' : $b2; - } - } - $sep=-1; - $i=0; - $j=0; - $l=0; - $ns=0; - $nl=1; - $char = 0; - while($i<$nb) - { - //Get next character - $c = $this->code2utf($cp[$i]); - $charw = $cw[$cp[$i]]; - - if($c=="\n") - { - //Explicit line break - if($this->ws>0) - { - $this->ws=0; - $this->_out('0 Tw'); - } - $this->Cell($w,$h,$this->utf8_substr($cp,$j,$i-$j,"UTF-8"),$b,2,$align,$fill); - $i++; - $sep=-1; - $j=$i; - $l=0; - $ns=0; - $nl++; - if($border and $nl==2) - $b=$b2; - continue; - } - if($c==' ') - { - $sep=$i; - $ls=$l; - $ns++; - } - $l+=$charw; - - if($l>$wmax) - { - //Automatic line break - if($sep==-1) - { - if($i==$j) - $i++; - if($this->ws>0) - { - $this->ws=0; - $this->_out('0 Tw'); - } - $this->Cell($w,$h,$this->utf8_substr($cp,$j,$i-$j,"UTF-8"),$b,2,$align,$fill); - } - else - { - if($align=='J') - { - $len_ligne = $this->GetStringWidth($this->utf8_substr($cp,$j,$sep-$j,"UTF-8")); - $nb_carac = $this->strlen($this->utf8_substr($cp,$j,$sep-$j,"UTF-8")); - $ecart = (($w-2) - $len_ligne) / $nb_carac; - $this->_out(sprintf('BT %.3f Tc ET',$ecart*$this->k)); - //$this->ws=($ns>1) ? ($wmax-$ls)/1000*$this->FontSize/($ns-1) : 0; - //$this->_out(sprintf('%.3f Tw',$this->ws*$this->k)); - //echo ($wmax-$ls)/1000*$this->FontSize/($ns-1)."=".($wmax-$ls)."
"; //$andrea = sprintf('%.3f Tw',$this->ws*$this->k); - } - $this->Cell($w,$h,$this->utf8_substr($cp,$j,$sep-$j,"UTF-8"),$b,2,$align,$fill); - $i=$sep+1; - } - $sep=-1; - $j=$i; - $l=0; - $ns=0; - $nl++; - if($border and $nl==2) - $b=$b2; - } - else - $i++; - } - //Last chunk - if($this->ws>0) - { - $this->ws=0; - $this->_out('0 Tw'); - } - if($border and is_int(strpos($border,'B'))) - $b.='B'; - $this->Cell($w,$h,$this->utf8_substr($cp,$j,$i-$j,"UTF-8"),$b,2,$align,$fill); - $this->x=$this->lMargin; -} - -function Write($h,$txt,$link='') -{ - //Output text in flowing mode - $cw=&$this->CurrentFont['cw']; - $cp=$this->utf8_to_codepoints(trim($txt)); - $w=$this->w-$this->rMargin-$this->x; - $wmax=($w-2*$this->cMargin)*1000/$this->FontSize; - $s=str_replace("\r",'',$txt); - $nb=$this->strlen($s); - $sep=-1; - $i=0; - $j=0; - $l=0; - $nl=1; - while($i<$nb) - { - //Get next character - $c=$s{$i}; - $charw = $cw[$cp[$i]]; - if($c=="\n") - { - //Explicit line break - $this->Cell($w,$h,$this->utf8_substr($cp,$j,$i-$j,"UTF-8"),0,2,'',0,$link); - $i++; - $sep=-1; - $j=$i; - $l=0; - if($nl==1) - { - $this->x=$this->lMargin; - $w=$this->w-$this->rMargin-$this->x; - $wmax=($w-2*$this->cMargin)*1000/$this->FontSize; - } - $nl++; - continue; - } - if($c==' ') - $sep=$i; - $l+=$charw; - if($l>$wmax) - { - //Automatic line break - if($sep==-1) - { - if($this->x>$this->lMargin) - { - //Move to next line - $this->x=$this->lMargin; - $this->y+=$h; - $w=$this->w-$this->rMargin-$this->x; - $wmax=($w-2*$this->cMargin)*1000/$this->FontSize; - $i++; - $nl++; - continue; - } - if($i==$j) - $i++; - $this->Cell($w,$h,$this->utf8_substr($cp,$j,$i-$j,"UTF-8"),0,2,'',0,$link); - } - else - { - $this->Cell($w,$h,$this->utf8_substr($cp,$j,$sep-$j,"UTF-8"),0,2,'',0,$link); - $i=$sep+1; - } - $sep=-1; - $j=$i; - $l=0; - if($nl==1) - { - $this->x=$this->lMargin; - $w=$this->w-$this->rMargin-$this->x; - $wmax=($w-2*$this->cMargin)*1000/$this->FontSize; - } - $nl++; - } - else - $i++; - } - //Last chunk - if($i!=$j) - $this->Cell($l/1000*$this->FontSize,$h,$this->utf8_substr($cp,$j),0,0,'',0,$link); -} - -function AliasNbPages($alias='{nb}') -{ - //Define an alias for total number of pages - $this->AliasNbPages=$this->utf8_to_utf16be($alias,false); -} - -/******************************************************************************* -* * -* Protected methods * -* * -*******************************************************************************/ - -function _puttruetypeunicode($font) { - //Type0 Font - $this->_newobj(); - $this->_out('<_out('/Subtype /Type0'); - $this->_out('/BaseFont /'. $font['name'] ); - $this->_out('/Encoding /Identity-H'); - $this->_out('/DescendantFonts ['. ($this->n + 1) .' 0 R]'); - $this->_out('>>'); - $this->_out('endobj'); - - //CIDFont - $this->_newobj(); - $this->_out('<_out('/Subtype /CIDFontType2'); - $this->_out('/BaseFont /'. $font['name']); - $this->_out('/CIDSystemInfo <>'); - $this->_out('/FontDescriptor '. ($this->n + 1) .' 0 R'); - $c = 0; - $widths = ""; - foreach ($font['cw'] as $i => $w) { - $widths .= $i .' ['. $w.'] '; - } - $this->_out('/W ['. $widths .']'); - $this->_out('/CIDToGIDMap '. ($this->n + 2) .' 0 R'); - $this->_out('>>'); - $this->_out('endobj'); - - //Font descriptor - $this->_newobj(); - $this->_out('<_out('/FontName /'.$font['name']); - $s = ""; - foreach ($font['desc'] as $k => $v) { - $s .= ' /'. $k .' '. $v; - } - if ($font['file']) { - $s .= ' /FontFile2 '. $this->FontFiles[$font['file']]['n'] .' 0 R'; - } - $this->_out($s); - $this->_out('>>'); - $this->_out('endobj'); - - //Embed CIDToGIDMap - $this->_newobj(); - if(defined('FPDF_FONTPATH')) - $file=FPDF_FONTPATH.$font['ctg']; - else - $file=$font['ctg']; - $size=filesize($file); - if(!$size) - $this->Error('Font file not found'); - $this->_out('<_out('/Filter /FlateDecode'); - $this->_out('>>'); - $f = fopen($file,'rb'); - $this->_putstream(fread($f,$size)); - fclose($f); - $this->_out('endobj'); -} - -function _dounderline($x,$y,$width,$txt) -{ - //Underline text - $up=$this->CurrentFont['up']; - $ut=$this->CurrentFont['ut']; - $w=$width+$this->ws*substr_count($txt,' '); - return sprintf('%.2f %.2f %.2f %.2f re f',$x*$this->k,($this->h-($y-$up/1000*$this->FontSize))*$this->k,$w*$this->k,-$ut/1000*$this->FontSizePt); -} - -function _textstring($s) -{ - //Convert to UTF-16BE - $s = $this->utf8_to_utf16be($s); - //Escape necessary characters - return '('. strtr($s, array(')' => '\\)', '(' => '\\(', '\\' => '\\\\')) .')'; -} - -function _escapetext($s) -{ - //Convert to UTF-16BE - $s = $this->utf8_to_utf16be($s, false); - //Escape necessary characters - return '('. strtr($s, array(')' => '\\)', '(' => '\\(', '\\' => '\\\\')) .')'; -} - -function _putinfo() -{ - $this->_out('/Producer '.$this->_textstring('UFPDF '. UFPDF_VERSION)); - if(!empty($this->title)) - $this->_out('/Title '.$this->_textstring($this->title)); - if(!empty($this->subject)) - $this->_out('/Subject '.$this->_textstring($this->subject)); - if(!empty($this->author)) - $this->_out('/Author '.$this->_textstring($this->author)); - if(!empty($this->keywords)) - $this->_out('/Keywords '.$this->_textstring($this->keywords)); - if(!empty($this->creator)) - $this->_out('/Creator '.$this->_textstring($this->creator)); - $this->_out('/CreationDate '.$this->_textstring('D:'.date('YmdHis'))); -} - -function _putpages() -{ - $nb=$this->page; - if(!empty($this->AliasNbPages)) - { - $nbstr = $this->utf8_to_utf16be($nb,false); - //Replace number of pages - for($n=1;$n<=$nb;$n++) { - $this->pages[$n]=str_replace($this->AliasNbPages,$nbstr,$this->pages[$n]); - } - } - if($this->DefOrientation=='P') - { - $wPt=$this->fwPt; - $hPt=$this->fhPt; - } - else - { - $wPt=$this->fhPt; - $hPt=$this->fwPt; - } - $filter=($this->compress) ? '/Filter /FlateDecode ' : ''; - for($n=1;$n<=$nb;$n++) - { - //Page - $this->_newobj(); - $this->_out('<_out('/Parent 1 0 R'); - if(isset($this->OrientationChanges[$n])) - $this->_out(sprintf('/MediaBox [0 0 %.2f %.2f]',$hPt,$wPt)); - $this->_out('/Resources 2 0 R'); - if(isset($this->PageLinks[$n])) - { - //Links - $annots='/Annots ['; - foreach($this->PageLinks[$n] as $pl) - { - $rect=sprintf('%.2f %.2f %.2f %.2f',$pl[0],$pl[1],$pl[0]+$pl[2],$pl[1]-$pl[3]); - $annots.='<_textstring($pl[4]).'>>>>'; - else - { - $l=$this->links[$pl[4]]; - $h=isset($this->OrientationChanges[$l[0]]) ? $wPt : $hPt; - $annots.=sprintf('/Dest [%d 0 R /XYZ 0 %.2f null]>>',1+2*$l[0],$h-$l[1]*$this->k); - } - } - $this->_out($annots.']'); - } - $this->_out('/Contents '.($this->n+1).' 0 R>>'); - $this->_out('endobj'); - //Page content - $p=($this->compress) ? gzcompress($this->pages[$n]) : $this->pages[$n]; - $this->_newobj(); - $this->_out('<<'.$filter.'/Length '.strlen($p).'>>'); - $this->_putstream($p); - $this->_out('endobj'); - } - //Pages root - $this->offsets[1]=strlen($this->buffer); - $this->_out('1 0 obj'); - $this->_out('<_out($kids.']'); - $this->_out('/Count '.$nb); - $this->_out(sprintf('/MediaBox [0 0 %.2f %.2f]',$wPt,$hPt)); - $this->_out('>>'); - $this->_out('endobj'); -} - -// UTF-8 to UTF-16BE conversion. -// Correctly handles all illegal UTF-8 sequences. -function utf8_to_utf16be(&$txt, $bom = true) { - $l = strlen($txt); - $txt .= " "; - $out = $bom ? "\xFE\xFF" : ''; - for ($i = 0; $i < $l; ++$i) { - $c = ord($txt{$i}); - // ASCII - if ($c < 0x80) { - $out .= "\x00". $txt{$i}; - } - // Lost continuation byte - else if ($c < 0xC0) { - $out .= "\xFF\xFD"; - continue; - } - // Multibyte sequence leading byte - else { - if ($c < 0xE0) { - $s = 2; - } - else if ($c < 0xF0) { - $s = 3; - } - else if ($c < 0xF8) { - $s = 4; - } - // 5/6 byte sequences not possible for Unicode. - else { - $out .= "\xFF\xFD"; - while (ord($txt{$i + 1}) >= 0x80 && ord($txt{$i + 1}) < 0xC0) { ++$i; } - continue; - } - - $q = array($c); - // Fetch rest of sequence - while (ord($txt{$i + 1}) >= 0x80 && ord($txt{$i + 1}) < 0xC0) { ++$i; $q[] = ord($txt{$i}); } - - // Check length - if (count($q) != $s) { - $out .= "\xFF\xFD"; - continue; - } - - switch ($s) { - case 2: - $cp = (($q[0] ^ 0xC0) << 6) | ($q[1] ^ 0x80); - // Overlong sequence - if ($cp < 0x80) { - $out .= "\xFF\xFD"; - } - else { - $out .= chr($cp >> 8); - $out .= chr($cp & 0xFF); - } - continue; - - case 3: - $cp = (($q[0] ^ 0xE0) << 12) | (($q[1] ^ 0x80) << 6) | ($q[2] ^ 0x80); - // Overlong sequence - if ($cp < 0x800) { - $out .= "\xFF\xFD"; - } - // Check for UTF-8 encoded surrogates (caused by a bad UTF-8 encoder) - else if ($c > 0xD800 && $c < 0xDFFF) { - $out .= "\xFF\xFD"; - } - else { - $out .= chr($cp >> 8); - $out .= chr($cp & 0xFF); - } - continue; - - case 4: - $cp = (($q[0] ^ 0xF0) << 18) | (($q[1] ^ 0x80) << 12) | (($q[2] ^ 0x80) << 6) | ($q[3] ^ 0x80); - // Overlong sequence - if ($cp < 0x10000) { - $out .= "\xFF\xFD"; - } - // Outside of the Unicode range - else if ($cp >= 0x10FFFF) { - $out .= "\xFF\xFD"; - } - else { - // Use surrogates - $cp -= 0x10000; - $s1 = 0xD800 | ($cp >> 10); - $s2 = 0xDC00 | ($cp & 0x3FF); - - $out .= chr($s1 >> 8); - $out .= chr($s1 & 0xFF); - $out .= chr($s2 >> 8); - $out .= chr($s2 & 0xFF); - } - continue; - } - } - } - return $out; -} - -function code2utf($num){ - if($num<128)return chr($num); - if($num<2048)return chr(($num>>6)+192).chr(($num&63)+128); - if($num<65536)return chr(($num>>12)+224).chr((($num>>6)&63)+128).chr(($num&63)+128); - if($num<2097152)return chr(($num>>18)+240).chr((($num>>12)&63)+128).chr((($num>>6)&63)+128). chr(($num&63)+128); - return ''; -} - -function strlen($s) { - return strlen(utf8_decode($s)); -} - -function utf8_substr($str,$start) -{ - if( func_num_args() >= 3 ) { - $end = func_get_arg( 2 ); - for ($i=$start; $i < ($start+$end); $i++) - $rs .= $this->code2utf($str[$i]); - - } else { - for ($i=$start; $i < count($str); $i++) - $rs .= $this->code2utf($str[$i]); - } - - return $rs; -} - -// UTF-8 to codepoint array conversion. -// Correctly handles all illegal UTF-8 sequences. -function utf8_to_codepoints(&$txt) { - $l = strlen($txt); - $txt .= " "; - $out = array(); - for ($i = 0; $i < $l; ++$i) { - $c = ord($txt{$i}); - // ASCII - if ($c < 0x80) { - $out[] = ord($txt{$i}); - } - // Lost continuation byte - else if ($c < 0xC0) { - $out[] = 0xFFFD; - continue; - } - // Multibyte sequence leading byte - else { - if ($c < 0xE0) { - $s = 2; - } - else if ($c < 0xF0) { - $s = 3; - } - else if ($c < 0xF8) { - $s = 4; - } - // 5/6 byte sequences not possible for Unicode. - else { - $out[] = 0xFFFD; - while (ord($txt{$i + 1}) >= 0x80 && ord($txt{$i + 1}) < 0xC0) { ++$i; } - continue; - } - - $q = array($c); - // Fetch rest of sequence - while (ord($txt{$i + 1}) >= 0x80 && ord($txt{$i + 1}) < 0xC0) { ++$i; $q[] = ord($txt{$i}); } - - // Check length - if (count($q) != $s) { - $out[] = 0xFFFD; - continue; - } - - switch ($s) { - case 2: - $cp = (($q[0] ^ 0xC0) << 6) | ($q[1] ^ 0x80); - // Overlong sequence - if ($cp < 0x80) { - $out[] = 0xFFFD; - } - else { - $out[] = $cp; - } - continue; - - case 3: - $cp = (($q[0] ^ 0xE0) << 12) | (($q[1] ^ 0x80) << 6) | ($q[2] ^ 0x80); - // Overlong sequence - if ($cp < 0x800) { - $out[] = 0xFFFD; - } - // Check for UTF-8 encoded surrogates (caused by a bad UTF-8 encoder) - else if ($c > 0xD800 && $c < 0xDFFF) { - $out[] = 0xFFFD; - } - else { - $out[] = $cp; - } - continue; - - case 4: - $cp = (($q[0] ^ 0xF0) << 18) | (($q[1] ^ 0x80) << 12) | (($q[2] ^ 0x80) << 6) | ($q[3] ^ 0x80); - // Overlong sequence - if ($cp < 0x10000) { - $out[] = 0xFFFD; - } - // Outside of the Unicode range - else if ($cp >= 0x10FFFF) { - $out[] = 0xFFFD; - } - else { - $out[] = $cp; - } - continue; - } - } - } - return $out; -} - -//End of class -} - -} -?> diff --git a/lam/lib/xml_parser.inc b/lam/lib/xml_parser.inc deleted file mode 100644 index 9f026e4d..00000000 --- a/lam/lib/xml_parser.inc +++ /dev/null @@ -1,71 +0,0 @@ -xmlParser = xml_parser_create(); - xml_set_object($this->xmlParser,$this); - xml_parser_set_option($this->xmlParser, XML_OPTION_CASE_FOLDING, 1); - xml_parser_set_option($this->xmlParser, XML_OPTION_SKIP_WHITE, 1); - } - - /** - * - * - * @param string - * - * @return array - */ - function parse($filename) { - if(file_exists($filename)) { - xml_parse_into_struct($this->xmlParser,implode("\n",file($filename)),$xmlStructure,$xmlIndex); - return array($xmlStructure,$xmlIndex); - } - } -} -?> \ No newline at end of file diff --git a/lam/locale/ca_ES/LC_MESSAGES/messages.mo b/lam/locale/ca_ES/LC_MESSAGES/messages.mo deleted file mode 100644 index 939de0b528def2c58a504d64109fcea1cca0d39d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 78760 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 diff --git a/lam/locale/ca_ES/LC_MESSAGES/messages.po b/lam/locale/ca_ES/LC_MESSAGES/messages.po deleted file mode 100644 index e23cf434..00000000 --- a/lam/locale/ca_ES/LC_MESSAGES/messages.po +++ /dev/null @@ -1,3815 +0,0 @@ -# translation of messages.po to Español -# -# LDAP Account Manager -# Dani Pardo , 2004, 2005. -# -msgid "" -msgstr "" -"Project-Id-Version: messages\n" -"Report-Msgid-Bugs-To: post@rolandgruber.de \n" -"POT-Creation-Date: 2004-01-14 17:45+0200\n" -"PO-Revision-Date: 2005-01-02 20:35+0100\n" -"Last-Translator: Dani Pardo \n" -"Language-Team: Catalan \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: KBabel 1.3.1\n" - -#: ../templates/lists/listdomains.php:138 -#: ../templates/lists/listdomains.php:188 -#, php-format -msgid "%s Samba domain(s) found" -msgstr "%s Domini(s) de Samba trovats" - -#: ../templates/lists/listgroups.php:206 ../templates/lists/listgroups.php:282 -#, php-format -msgid "%s group(s) found" -msgstr "%s grups trovats" - -#: ../templates/lists/listhosts.php:206 ../templates/lists/listhosts.php:266 -#, php-format -msgid "%s host(s) found" -msgstr "%s màquines trovades" - -#: ../templates/lists/listusers.php:245 ../templates/lists/listusers.php:316 -#, php-format -msgid "%s user(s) found" -msgstr "%s usuaris trovats" - -#: ../lib/modules/posixAccount.inc:196 -msgid "/home/smiller" -msgstr "/home/smiller" - -#: ../templates/massBuildAccounts.php:113 -msgid "A required column is missing in your CSV file." -msgstr "Falta una columna obligatoria en el seu arxiu CSV." - -#: ../templates/ou_edit.php:95 ../templates/ou_edit.php:160 -#: ../templates/ou_edit.php:225 ../templates/ou_edit.php:290 -#: ../templates/config/confmodules.php:499 -#: ../templates/config/confmain.php:422 ../templates/pdfedit/pdfdelete.php:82 -#: ../templates/pdfedit/pdfpage.php:834 ../templates/pdfedit/pdfmain.php:144 -#: ../templates/profedit/profiledelete.php:86 -#: ../templates/profedit/profiledelete.php:98 -#: ../templates/profedit/profiledelete.php:110 -#: ../templates/profedit/profilepage.php:140 -#: ../templates/profedit/profilemain.php:262 -msgid "Abort" -msgstr "Abortar" - -#: ../lib/modules/account.inc:35 -msgid "Account" -msgstr "Compte" - -#: ../templates/massBuildAccounts.php:164 ../lib/modules/ieee802device.inc:84 -#: ../lib/modules/posixGroup.inc:407 ../lib/modules/posixGroup.inc:411 -#: ../lib/modules/posixGroup.inc:412 ../lib/modules/sambaAccount.inc:48 -#: ../lib/modules/sambaAccount.inc:51 ../lib/modules/sambaAccount.inc:54 -#: ../lib/modules/sambaAccount.inc:56 ../lib/modules/sambaAccount.inc:58 -#: ../lib/modules/sambaAccount.inc:61 ../lib/modules/sambaAccount.inc:64 -#: ../lib/modules/sambaAccount.inc:65 ../lib/modules/sambaAccount.inc:66 -#: ../lib/modules/sambaAccount.inc:67 ../lib/modules/sambaAccount.inc:68 -#: ../lib/modules/sambaAccount.inc:69 ../lib/modules/sambaAccount.inc:70 -#: ../lib/modules/sambaAccount.inc:71 ../lib/modules/sambaAccount.inc:72 -#: ../lib/modules/sambaAccount.inc:73 ../lib/modules/sambaSamAccount.inc:46 -#: ../lib/modules/sambaSamAccount.inc:49 ../lib/modules/sambaSamAccount.inc:52 -#: ../lib/modules/sambaSamAccount.inc:54 ../lib/modules/sambaSamAccount.inc:57 -#: ../lib/modules/sambaSamAccount.inc:60 ../lib/modules/sambaSamAccount.inc:61 -#: ../lib/modules/sambaSamAccount.inc:62 ../lib/modules/sambaSamAccount.inc:63 -#: ../lib/modules/sambaSamAccount.inc:64 ../lib/modules/sambaSamAccount.inc:65 -#: ../lib/modules/sambaSamAccount.inc:66 ../lib/modules/sambaSamAccount.inc:67 -#: ../lib/modules/sambaSamAccount.inc:68 ../lib/modules/sambaSamAccount.inc:69 -#: ../lib/modules/sambaSamAccount.inc:70 ../lib/modules/posixAccount.inc:66 -#: ../lib/modules/posixAccount.inc:70 ../lib/modules/posixAccount.inc:74 -#: ../lib/modules/posixAccount.inc:82 ../lib/modules/posixAccount.inc:83 -#: ../lib/modules/posixAccount.inc:84 ../lib/modules/posixAccount.inc:85 -#: ../lib/modules/posixAccount.inc:86 ../lib/modules/posixAccount.inc:87 -#: ../lib/modules/posixAccount.inc:88 ../lib/modules/sambaGroupMapping.inc:341 -#: ../lib/modules/sambaGroupMapping.inc:342 -#: ../lib/modules/shadowAccount.inc:40 ../lib/modules/shadowAccount.inc:42 -#: ../lib/modules/shadowAccount.inc:44 ../lib/modules/shadowAccount.inc:46 -#: ../lib/modules/shadowAccount.inc:48 ../lib/modules/shadowAccount.inc:49 -#: ../lib/modules/inetOrgPerson.inc:53 ../lib/modules/inetOrgPerson.inc:55 -#: ../lib/modules/inetOrgPerson.inc:57 ../lib/modules/inetOrgPerson.inc:59 -#: ../lib/modules/inetOrgPerson.inc:61 ../lib/modules/inetOrgPerson.inc:63 -#: ../lib/modules/inetOrgPerson.inc:65 ../lib/modules/inetOrgPerson.inc:67 -#: ../lib/modules/inetOrgPerson.inc:69 ../lib/modules/inetOrgPerson.inc:71 -#: ../lib/modules/inetOrgPerson.inc:73 ../lib/modules/inetOrgPerson.inc:74 -#, php-format -msgid "Account %s:" -msgstr "Comptes %s:" - -#: ../templates/masscreate.php:78 -msgid "Account creation via file upload" -msgstr "Creació de comptes mitjançant enviament d'arxius" - -#: ../lib/modules/shadowAccount.inc:156 -msgid "Account expiration date. Format: DD-MM-YYYY" -msgstr "Data d'expiració del compte. Format: DD-MM-YYYY" - -#: ../help/help.inc:171 -msgid "Account expire date. Format: DD-MM-YYYY" -msgstr "Data d'expiració del compte. Format: DD-MM-YYYY" - -#: ../lib/modules/shadowAccount.inc:333 -msgid "Account inactive" -msgstr "Compte inactiu" - -#: ../lib/modules/sambaAccount.inc:118 ../lib/modules/sambaAccount.inc:227 -#: ../lib/modules/sambaAccount.inc:336 ../lib/modules/sambaAccount.inc:339 -#: ../lib/modules/sambaAccount.inc:713 ../lib/modules/sambaSamAccount.inc:149 -#: ../lib/modules/sambaSamAccount.inc:152 -#: ../lib/modules/sambaSamAccount.inc:241 -#: ../lib/modules/sambaSamAccount.inc:692 -#: ../lib/modules/sambaSamAccount.inc:845 ../help/help.inc:196 -msgid "Account is deactivated" -msgstr "Compte desactivat." - -#: ../templates/config/confmain.php:215 ../help/help.inc:106 -msgid "Account modules" -msgstr "Mòduls de comptes" - -#: ../templates/delete.php:88 -msgid "Account name:" -msgstr "Nom del compte:" - -#: ../lib/modules.inc:767 -msgid "Account was created successfully." -msgstr "El compte ha estat creat satisfactoriament." - -#: ../lib/modules.inc:770 -msgid "Account was modified successfully." -msgstr "El compte ha estat modificat satisfactoriament." - -#: ../templates/pdfedit/pdfpage.php:725 ../lib/modules/ieee802device.inc:151 -msgid "Add" -msgstr "Afegir" - -#: ../templates/pdfedit/pdfpage.php:713 -msgid "Add after" -msgstr "Afegir després de" - -#: ../templates/config/profmanage.php:172 ../help/help.inc:108 -msgid "Add profile" -msgstr "Afegir perfil" - -#: ../templates/pdfedit/pdfpage.php:699 -msgid "Add section or static text" -msgstr "Afegir secció o text estàtic" - -#: ../lib/modules/posixAccount.inc:188 ../lib/modules/posixAccount.inc:330 -#: ../lib/modules/posixAccount.inc:831 ../lib/modules/posixAccount.inc:893 -#: ../lib/modules/posixAccount.inc:925 ../lib/modules/posixAccount.inc:966 -#: ../help/help.inc:138 -msgid "Additional groups" -msgstr "Grups adicionals" - -#: ../templates/massDoUpload.php:98 -msgid "Additional tasks for module:" -msgstr "Feines adicionals pel mòdul:" - -#: ../lib/modules/sambaAccount.inc:568 ../lib/modules/sambaAccount.inc:769 -#: ../lib/modules/sambaAccount.inc:772 ../lib/modules/sambaSamAccount.inc:539 -#: ../lib/modules/sambaSamAccount.inc:750 -#: ../lib/modules/sambaSamAccount.inc:753 -msgid "Administrator" -msgstr "Administrador" - -#: ../lib/modules/posixGroup.inc:303 -msgid "Administrators group" -msgstr "Grup de l'Administrador" - -#: ../templates/domain.php:146 ../help/help.inc:252 -msgid "Algorithmic RID Base" -msgstr "Base RID del algoritme" - -#: ../templates/domain.php:252 -msgid "Algorithmic RID base is not a number!" -msgstr "La base RID del algoritme no és un número!" - -#: ../templates/initsuff.php:157 -msgid "All changes were successful." -msgstr "Tots els canvis foren satisfactoris." - -#: ../lib/lists.inc:181 -msgid "Allowed hosts" -msgstr "Màquines permeses" - -#: ../lib/modules/sambaAccount.inc:819 ../lib/modules/sambaAccount.inc:820 -#: ../lib/modules/sambaSamAccount.inc:800 -#: ../lib/modules/sambaSamAccount.inc:801 -msgid "Allowed workstations" -msgstr "Estacions de treball permeses" - -#: ../templates/lists/listusers.php:347 -msgid "Apply" -msgstr "Aplicar" - -#: ../lib/cache.inc:101 ../lib/cache.inc:160 -msgid "Attribute not defined in LDAP." -msgstr "Atribut no definit en LDAP." - -#: ../templates/config/confmain.php:292 ../lib/config.inc:338 -msgid "Attributes in Group List" -msgstr "Atributs en la llista de grups" - -#: ../templates/config/confmain.php:298 ../lib/config.inc:339 -msgid "Attributes in Host List" -msgstr "Atributs en la llista de màquines" - -#: ../templates/config/confmain.php:286 ../lib/config.inc:337 -msgid "Attributes in User List" -msgstr "Atributs en la llista de usuaris" - -#: ../templates/pdfedit/pdfpage.php:852 -msgid "Available PDF fields" -msgstr "Camps del PDF disponibles" - -#: ../templates/config/confmodules.php:319 -msgid "Available group modules" -msgstr "Mòduls de grup disponibles" - -#: ../lib/modules/posixAccount.inc:899 -msgid "Available groups" -msgstr "Grups disponibles" - -#: ../templates/config/confmodules.php:422 -msgid "Available host modules" -msgstr "Mòduls de màquines disponibles" - -#: ../templates/config/confmodules.php:216 -msgid "Available user modules" -msgstr "Mòduls de usuari disponibles" - -#: ../lib/modules/posixGroup.inc:199 -msgid "Available users" -msgstr "Usuaris disponibles" - -#: ../lib/modules/sambaAccount.inc:825 ../lib/modules/sambaSamAccount.inc:806 -msgid "Available workstations" -msgstr "Estacions de treball disponibles" - -#: ../lib/modules/posixGroup.inc:203 ../lib/modules/sambaAccount.inc:829 -#: ../lib/modules/sambaSamAccount.inc:810 ../lib/modules/posixAccount.inc:903 -msgid "Back" -msgstr "Enrere" - -#: ../templates/config/confsave.php:248 ../templates/config/conflogin.php:147 -#: ../templates/logout.php:71 -msgid "Back to Login" -msgstr "Tornar al inici de sessió" - -#: ../templates/ou_edit.php:309 ../templates/ou_edit.php:313 -msgid "Back to OU-Editor" -msgstr "Tornar al editor de OU" - -#: ../templates/pdfedit/pdfdelete.php:61 ../templates/pdfedit/pdfdelete.php:69 -#: ../templates/pdfedit/pdfdelete.php:90 -msgid "Back to PDF Editor" -msgstr "Tornar al Editor de PDF" - -#: ../templates/profedit/profilecreate.php:115 -#: ../templates/profedit/profiledelete.php:63 -#: ../templates/profedit/profiledelete.php:71 -#: ../templates/profedit/profiledelete.php:119 -msgid "Back to Profile Editor" -msgstr "Tornar al editor de perfils" - -#: ../lib/modules.inc:780 -msgid "Back to account list" -msgstr "Tornar a la llista de comptes" - -#: ../templates/domain.php:290 ../templates/domain.php:317 -msgid "Back to domain list" -msgstr "Tornar a la llista de dominis" - -#: ../templates/lists/userlink.php:65 -msgid "Back to group list" -msgstr "Tornar a la llista de grups" - -#: ../templates/delete.php:238 -msgid "Back to list" -msgstr "Tornar al llistat" - -#: ../templates/config/confsave.php:92 ../templates/config/confsave.php:97 -#: ../templates/config/confsave.php:102 ../templates/config/confsave.php:107 -#: ../templates/config/confsave.php:112 ../templates/config/confsave.php:117 -#: ../templates/config/confsave.php:122 ../templates/config/confsave.php:127 -#: ../templates/config/confsave.php:132 ../templates/config/confsave.php:137 -#: ../templates/config/confsave.php:142 ../templates/config/confsave.php:148 -#: ../templates/config/confsave.php:154 ../templates/config/confsave.php:160 -#: ../templates/config/confsave.php:166 ../templates/config/confsave.php:172 -#: ../templates/config/confsave.php:178 ../templates/config/confsave.php:225 -msgid "Back to preferences..." -msgstr "Tornar a les preferencies..." - -#: ../templates/config/profmanage.php:382 -msgid "Back to profile login" -msgstr "Tornar al perfil de inici de sessió" - -#: ../templates/pdfedit/pdfpage.php:577 -msgid "Beginning" -msgstr "Començament" - -#: ../lib/modules/quota.inc:31 -msgid "Block hard quota" -msgstr "Bloqueig de quota \"hard\"" - -#: ../lib/modules/quota.inc:31 -msgid "" -"Block hard quota contains invalid characters. Only natural numbers are " -"allowed." -msgstr "El Bloqueig de quota \"hard\" conté caràcters invàlids. Només s'admeten numeros naturals." - -#: ../lib/modules/quota.inc:34 -msgid "Block quota" -msgstr "Bloqueig de quota" - -#: ../lib/modules/quota.inc:30 -msgid "Block soft quota" -msgstr "Bloqueig de quota \"soft\"" - -#: ../lib/modules/quota.inc:30 -msgid "" -"Block soft quota contains invalid characters. Only natural numbers are " -"allowed." -msgstr "El bloqueig de quota \"soft\" conté caràcters invàlids. Només s'admeten numeros naturals." - -#: ../lib/modules/quota.inc:34 -msgid "Block soft quota must be smaller than block hard quota." -msgstr "El bloqueig de quota \"soft\" ha d'esser més petit que el bloqueig de quota \"hard\"" - -#: ../templates/pdfedit/pdfpage.php:524 -msgid "Bottom" -msgstr "Final" - -#: ../lib/modules/sambaGroupMapping.inc:55 -msgid "Builtin Group" -msgstr "Grup de sèrie" - -#: ../templates/masscreate.php:127 -msgid "CSV file:" -msgstr "Arxiu CSV:" - -#: ../templates/config/confmain.php:198 ../lib/config.inc:332 -#: ../help/help.inc:102 -msgid "Cache timeout" -msgstr "Temps d'espera de la caché:" - -#: ../templates/config/confsave.php:96 -msgid "Cache timeout is invalid!" -msgstr "El temps d'espera de la caché és invàlid!" - -#: ../lib/modules/posixGroup.inc:334 ../lib/modules/sambaAccount.inc:351 -#: ../lib/modules/sambaAccount.inc:355 ../lib/modules/sambaAccount.inc:359 -#: ../lib/modules/sambaAccount.inc:363 ../lib/modules/sambaAccount.inc:375 -#: ../lib/modules/sambaSamAccount.inc:164 -#: ../lib/modules/sambaSamAccount.inc:168 -#: ../lib/modules/sambaSamAccount.inc:172 -#: ../lib/modules/sambaSamAccount.inc:176 ../lib/modules/posixAccount.inc:331 -#: ../lib/modules/sambaGroupMapping.inc:280 -#: ../lib/modules/shadowAccount.inc:140 ../lib/modules/shadowAccount.inc:144 -#: ../lib/modules/shadowAccount.inc:148 ../lib/modules/shadowAccount.inc:152 -#: ../help/help.inc:139 ../help/help.inc:163 ../help/help.inc:165 -#: ../help/help.inc:167 ../help/help.inc:169 ../help/help.inc:201 -#: ../help/help.inc:204 ../help/help.inc:207 ../help/help.inc:209 -#: ../help/help.inc:212 ../help/help.inc:218 ../help/help.inc:228 -#: ../help/help.inc:230 ../help/help.inc:232 -msgid "Can be left empty." -msgstr "Es pot deixar en blanc." - -#: ../templates/domain.php:188 ../templates/domain.php:219 -#: ../templates/delete.php:104 ../templates/initsuff.php:194 -msgid "Cancel" -msgstr "Cancel·lar" - -#: ../templates/login.php:321 ../templates/login.php:326 -msgid "Cannot connect to specified LDAP-Server. Please try again." -msgstr "No puc conectar amb el servidor de LDAP especificat. Si us plau, proveu de nou." - -#: ../lib/config.inc:323 ../lib/config.inc:895 -msgid "Cannot open config file!" -msgstr "No puc obrir l'arxiu de configuració!" - -#: ../templates/pdfedit/pdfpage.php:605 ../templates/pdfedit/pdfpage.php:611 -msgid "Change" -msgstr "Canviar" - -#: ../lib/modules/posixGroup.inc:155 -msgid "Change GID number of users and hosts" -msgstr "Canviar numero GID e usuaris i màquines" - -#: ../templates/login.php:272 -msgid "Change Profile" -msgstr "Canviar perfil" - -#: ../templates/lists/listhosts.php:285 ../templates/lists/listgroups.php:301 -#: ../templates/lists/listdomains.php:207 ../templates/lists/listusers.php:335 -msgid "Change Suffix" -msgstr "Canviar Sufixe" - -#: ../templates/config/profmanage.php:319 ../help/help.inc:116 -msgid "Change default profile" -msgstr "Canviar perfil per defecte" - -#: ../templates/config/profmanage.php:339 ../help/help.inc:118 -msgid "Change master password" -msgstr "Canviar contrasenya mestre" - -#: ../help/help.inc:100 -msgid "Change password" -msgstr "Canviar contrasenya" - -#: ../lib/baseModule.inc:524 -#, php-format -msgid "Changed value %s because only numeric values are allowed." -msgstr "S'ha canviat el valor %s perquè només s'admetien valors numèrics." - -#: ../lib/baseModule.inc:541 -msgid "Changed value because only ASCII characters are allowed." -msgstr "S'ha canviat el valor perquè només s'admetien valors alfanumèrics." - -#: ../lib/config.inc:88 -msgid "Click here if you are not directed to the next page." -msgstr "Premeu aquí si no sou redirigits a la pròxima pàgina." - -#: ../templates/masscreate.php:135 -msgid "Columns:" -msgstr "Columnes:" - -#: ../lib/modules/sambaAccount.inc:363 ../lib/modules/sambaSamAccount.inc:176 -msgid "" -"Comma separated list of Samba workstations the user is allowed to login. " -"Empty means every workstation." -msgstr "Llista de estacions de treball de Samba en les quals l'usuari té permès iniciar sessió. En blanc significa totes." - -#: ../help/help.inc:228 -msgid "Comma separated list of unix workstations the user is allowed to login." -msgstr "Llista separada per comes de estacions de treball de Unix en les que l'usuari pot entrar al sistema" - -#: ../lib/modules/inetOrgPerson.inc:115 -msgid "Common name" -msgstr "Nom comú" - -#: ../templates/login.php:119 -msgid "Configuration Login" -msgstr "Configuració del Inici de Sessió" - -#: ../templates/login.php:255 -msgid "Configuration profile" -msgstr "Configuració de perfil" - -#: ../help/help.inc:46 ../help/help.inc:48 ../help/help.inc:60 -#: ../help/help.inc:66 ../help/help.inc:81 ../help/help.inc:86 -#: ../help/help.inc:88 ../help/help.inc:90 ../help/help.inc:95 -#: ../help/help.inc:100 ../help/help.inc:102 ../help/help.inc:104 -#: ../help/help.inc:106 -msgid "Configuration wizard" -msgstr "Assitent de configuració" - -#: ../templates/config/confmodules.php:257 -#: ../templates/config/confmodules.php:360 -#: ../templates/config/confmodules.php:463 -msgid "Conflicting module:" -msgstr "Mòdul en conflicte:" - -#: ../templates/config/profmanage.php:99 -msgid "Could not rename file!" -msgstr "No he pogut renombrar l'arxiu!" - -#: ../templates/initsuff.php:193 -msgid "Create" -msgstr "Crear" - -#: ../lib/modules.inc:760 -msgid "Create Account" -msgstr "Crear compte" - -#: ../lib/modules.inc:778 -msgid "Create PDF file" -msgstr "Crear arxiu PDF" - -#: ../templates/lists/listgroups.php:319 -msgid "Create PDF for all groups" -msgstr "Crear PDF per tots els grups" - -#: ../templates/lists/listhosts.php:304 -msgid "Create PDF for all hosts" -msgstr "Crear PDF per totes les màquines" - -#: ../templates/lists/listusers.php:367 -msgid "Create PDF for all users" -msgstr "Crear PDF per tots els usuaris" - -#: ../templates/lists/listgroups.php:317 -msgid "Create PDF for selected group(s)" -msgstr "Crear PDF pels grups seleccionats" - -#: ../templates/lists/listhosts.php:302 -msgid "Create PDF for selected host(s)" -msgstr "Crear PDF per les màquines seleccionades" - -#: ../templates/lists/listusers.php:365 -msgid "Create PDF for selected user(s)" -msgstr "Crear PDF pels usuaris seleccionats" - -#: ../templates/pdfedit/pdfmain.php:109 -msgid "Create a new PDF structure for scope: " -msgstr "Crear una nova estructura de PDF pel context:" - -#: ../templates/profedit/profilemain.php:140 -#: ../templates/profedit/profilemain.php:183 -#: ../templates/profedit/profilemain.php:226 -msgid "Create a new profile" -msgstr "Crear un nou perfil" - -#: ../lib/modules.inc:776 -msgid "Create another account" -msgstr "Crear un altre compte" - -#: ../templates/masscreate.php:99 -msgid "Create group accounts" -msgstr "Crear comptes de grup" - -#: ../lib/modules/posixAccount.inc:838 -msgid "Create home directory" -msgstr "Crear directori del usuari" - -#: ../templates/masscreate.php:102 -msgid "Create host accounts" -msgstr "Crear comptes de màquina" - -#: ../lib/modules.inc:673 -msgid "Create new Account" -msgstr "Crear nou compte" - -#: ../templates/masscreate.php:96 -msgid "Create user accounts" -msgstr "Crear comptes de usuari" - -#: ../templates/config/profmanage.php:84 -msgid "Created new profile." -msgstr "Crear nou perfil" - -#: ../templates/tools.php:70 -msgid "Creates accounts by uploading a CSV formated file." -msgstr "Crea comptes mitjançant l'enviament d'un arxiu de tipo CSV." - -#: ../templates/delete.php:89 ../lib/modules.inc:1509 -msgid "DN" -msgstr "DN" - -#: ../templates/masscreate.php:138 -msgid "DN settings" -msgstr "Configuració de DN" - -#: ../templates/masscreate.php:142 ../help/help.inc:129 -msgid "DN suffix" -msgstr "Sufix del DN" - -#: ../lib/modules/sambaGroupMapping.inc:253 -#, fuzzy -msgid "DOMAIN_ADMINS" -msgstr "DOMAIN_ADMINS" - -#: ../templates/massBuildAccounts.php:164 -msgid "Data field for RDN is empty!" -msgstr "El camp per l' RDN està buit!" - -#: ../lib/modules/sambaAccount.inc:343 ../lib/modules/sambaSamAccount.inc:156 -#: ../help/help.inc:193 -msgid "Date after the user is able to change his password. Format: DD-MM-YYYY" -msgstr "Data a partir de la qual l'usuari pot canviar la contrasenya. Format: DD-MM-YYYY" - -#: ../lib/modules/sambaAccount.inc:345 ../lib/modules/sambaSamAccount.inc:158 -#: ../help/help.inc:195 -msgid "Date after the user must change his password. Format: DD-MM-YYYY" -msgstr "Data a partir de la qual l'usuari ha de canviar la contrasenya. Format: DD-MM-YYYY" - -#: ../lib/modules/shadowAccount.inc:140 ../help/help.inc:163 -msgid "" -"Days before password is to expire that user is warned of pending password " -"expiration. If set value must be 0<." -msgstr "Nombre de dies abans de caducar la contrasenya en que es comença a avisar al usuari. Si s'especifica, ha de ser <0." - -#: ../templates/config/confmain.php:328 ../lib/config.inc:341 -#: ../help/help.inc:88 -msgid "Default language" -msgstr "Idioma per defecte" - -#: ../templates/masscreate.php:147 ../templates/masscreate.php:302 -msgid "Default value" -msgstr "Valor per defecte" - -#: ../templates/domain.php:218 ../templates/delete.php:103 -msgid "Delete" -msgstr "Esborrar" - -#: ../templates/delete.php:74 ../templates/delete.php:121 -msgid "Delete Account" -msgstr "Esborrar compte" - -#: ../templates/lists/listdomains.php:214 -msgid "Delete Domain(s)" -msgstr "Esborrar Domini(s)" - -#: ../templates/lists/listgroups.php:308 -msgid "Delete Group(s)" -msgstr "Esborrar Grup(s)" - -#: ../templates/lists/listhosts.php:293 -msgid "Delete Host(s)" -msgstr "Esborrar màquine(s)" - -#: ../templates/pdfedit/pdfdelete.php:48 ../templates/pdfedit/pdfmain.php:133 -msgid "Delete PDF structure" -msgstr "Esborrar estructura de PDF" - -#: ../templates/profedit/profiledelete.php:52 -msgid "Delete User Profile" -msgstr "Esborrar perfil de usuari" - -#: ../templates/domain.php:209 -msgid "Delete domain(s)" -msgstr "Esborrar domini(s)" - -#: ../lib/modules/posixAccount.inc:870 -msgid "Delete home directory" -msgstr "Esborrar directori del usuari" - -#: ../templates/pdfedit/pdfdelete.php:68 -#: ../templates/profedit/profiledelete.php:70 -msgid "Delete operation canceled." -msgstr "S'ha cancel·lat l'operació d'esborrat." - -#: ../templates/ou_edit.php:357 ../templates/ou_edit.php:390 -#: ../templates/ou_edit.php:423 ../templates/ou_edit.php:456 -#: ../help/help.inc:238 -msgid "Delete organizational unit" -msgstr "Esborrar unitat organitzativa (OU)" - -#: ../templates/config/profmanage.php:248 -#: ../templates/profedit/profilemain.php:164 -#: ../templates/profedit/profilemain.php:207 -#: ../templates/profedit/profilemain.php:250 ../help/help.inc:112 -msgid "Delete profile" -msgstr "Esborrar perfil" - -#: ../templates/lists/listusers.php:356 -msgid "Delete user(s)" -msgstr "Esborrar usuari(s)" - -#: ../lib/modules/sambaGroupMapping.inc:56 -msgid "Deleted Account" -msgstr "Compte esborrat." - -#: ../templates/delete.php:224 -#, php-format -msgid "Deleted DN: %s" -msgstr "S'ha esborrat el DN: %s" - -#: ../templates/pdfedit/pdfdelete.php:59 -msgid "Deleted PDF structure:" -msgstr "S'ha esborrat l'estructura de PDF:" - -#: ../templates/profedit/profiledelete.php:62 -msgid "Deleted profile:" -msgstr "S'ha esborrat el perfil:" - -#: ../templates/delete.php:128 -msgid "Deleting. Please stand by ..." -msgstr "Esborrant. Si us plau, esperi..." - -#: ../lib/modules/account.inc:71 ../lib/modules/account.inc:155 -#: ../lib/modules/account.inc:172 ../lib/modules/posixGroup.inc:131 -#: ../lib/modules/posixGroup.inc:329 ../lib/modules/posixGroup.inc:371 -#: ../lib/modules/sambaAccount.inc:850 ../lib/modules/sambaSamAccount.inc:922 -#: ../lib/modules/posixAccount.inc:267 -#: ../lib/modules/sambaGroupMapping.inc:301 -#: ../lib/modules/shadowAccount.inc:335 ../lib/modules/inetOrgPerson.inc:135 -#: ../lib/modules/inetOrgPerson.inc:393 ../lib/modules/inetOrgPerson.inc:461 -#: ../lib/lists.inc:187 -msgid "Description" -msgstr "Descripció" - -#: ../lib/modules/sambaAccount.inc:191 ../lib/modules/sambaAccount.inc:312 -#: ../lib/modules/sambaAccount.inc:842 ../lib/modules/sambaSamAccount.inc:125 -#: ../lib/modules/sambaSamAccount.inc:205 -#: ../lib/modules/sambaSamAccount.inc:914 -#: ../lib/modules/sambaGroupMapping.inc:159 -#: ../lib/modules/sambaGroupMapping.inc:267 -#: ../lib/modules/sambaGroupMapping.inc:299 ../help/help.inc:174 -msgid "Display name" -msgstr "Nom a visualitzar" - -#: ../lib/modules.inc:471 -msgid "" -"Displayed account numbers start at \"0\". Add 2 to get the row in your " -"spreadsheet." -msgstr "Els numeros de compte de la llista començen per \"0\". Afegeixi'n 2 per obtenir la fila en la seva fulla de càlcul." - -#: ../templates/domain.php:210 -msgid "Do you really want to delete domain(s):" -msgstr "Confirma que vol esborrar el(s) domini(s):" - -#: ../templates/ou_edit.php:87 ../templates/ou_edit.php:152 -#: ../templates/ou_edit.php:217 ../templates/ou_edit.php:282 -msgid "Do you really want to delete this OU?" -msgstr "Confirma que realment vol esborrar aquesta OU?" - -#: ../templates/pdfedit/pdfdelete.php:77 -msgid "Do you really want to delete this PDF structure?" -msgstr "Confirma que realment vol esborrar aquesta estructura de PDF?" - -#: ../templates/profedit/profiledelete.php:81 -#: ../templates/profedit/profiledelete.php:93 -#: ../templates/profedit/profiledelete.php:105 -msgid "Do you really want to delete this profile?" -msgstr "Confirma que realment vol esborrar aquest perfil?" - -#: ../templates/delete.php:83 -msgid "Do you really want to remove the following accounts?" -msgstr "Confirma que vol esborrar els següents comptes?" - -#: ../lib/modules/sambaAccount.inc:157 ../lib/modules/sambaAccount.inc:293 -#: ../lib/modules/sambaAccount.inc:303 ../lib/modules/sambaAccount.inc:374 -#: ../lib/modules/sambaAccount.inc:784 ../lib/modules/sambaAccount.inc:793 -#: ../lib/modules/sambaAccount.inc:849 ../lib/modules/sambaSamAccount.inc:185 -#: ../lib/modules/sambaSamAccount.inc:198 -#: ../lib/modules/sambaSamAccount.inc:317 -#: ../lib/modules/sambaSamAccount.inc:765 -#: ../lib/modules/sambaSamAccount.inc:773 -#: ../lib/modules/sambaSamAccount.inc:888 -#: ../lib/modules/sambaSamAccount.inc:901 -#: ../lib/modules/sambaSamAccount.inc:921 -#: ../lib/modules/sambaGroupMapping.inc:53 -#: ../lib/modules/sambaGroupMapping.inc:187 -#: ../lib/modules/sambaGroupMapping.inc:279 -#: ../lib/modules/sambaGroupMapping.inc:321 ../help/help.inc:211 -#: ../help/help.inc:229 -msgid "Domain" -msgstr "Domini" - -#: ../lib/modules/sambaAccount.inc:33 ../lib/modules/sambaAccount.inc:288 -#: ../lib/modules/sambaSamAccount.inc:33 -#: ../lib/modules/sambaGroupMapping.inc:40 -msgid "Domain Admins" -msgstr "Administradors de domini" - -#: ../lib/modules/sambaAccount.inc:35 ../lib/modules/sambaSamAccount.inc:34 -#: ../lib/modules/sambaGroupMapping.inc:45 -msgid "Domain Certificate Admins" -msgstr "Administradors certificats de domini" - -#: ../lib/modules/sambaAccount.inc:34 ../lib/modules/sambaAccount.inc:529 -#: ../lib/modules/sambaSamAccount.inc:34 -#: ../lib/modules/sambaSamAccount.inc:500 -#: ../lib/modules/sambaGroupMapping.inc:43 -msgid "Domain Computers" -msgstr "Ordinadors del domini" - -#: ../lib/modules/sambaAccount.inc:35 ../lib/modules/sambaSamAccount.inc:34 -#: ../lib/modules/sambaGroupMapping.inc:44 -msgid "Domain Controllers" -msgstr "Controladors del domini" - -#: ../lib/modules/sambaAccount.inc:36 ../lib/modules/sambaSamAccount.inc:35 -#: ../lib/modules/sambaGroupMapping.inc:47 -msgid "Domain Enterprise Admins" -msgstr "Administradors del domini" - -#: ../lib/modules/sambaGroupMapping.inc:52 -#: ../lib/modules/sambaGroupMapping.inc:179 -msgid "Domain Group" -msgstr "Grup del domini" - -#: ../lib/modules/sambaAccount.inc:34 ../lib/modules/sambaSamAccount.inc:33 -#: ../lib/modules/sambaGroupMapping.inc:42 -msgid "Domain Guests" -msgstr "Invitats del domini" - -#: ../lib/modules/sambaAccount.inc:37 ../lib/modules/sambaSamAccount.inc:35 -#: ../lib/modules/sambaGroupMapping.inc:48 -msgid "Domain Policy Admins" -msgstr "Administradors de politiques del domini" - -#: ../templates/lists/listdomains.php:99 ../templates/domain.php:104 -#: ../help/help.inc:244 -msgid "Domain SID" -msgstr "SID del domini" - -#: ../lib/modules/sambaAccount.inc:36 ../lib/modules/sambaSamAccount.inc:35 -#: ../lib/modules/sambaGroupMapping.inc:46 -msgid "Domain Schema Admins" -msgstr "Administradors de l'esquema del domini" - -#: ../templates/domain.php:83 -msgid "Domain Settings" -msgstr "Preferències del domini" - -#: ../lib/modules/sambaAccount.inc:33 ../lib/modules/sambaSamAccount.inc:33 -#: ../lib/modules/sambaGroupMapping.inc:41 -msgid "Domain Users" -msgstr "Usuaris del domini" - -#: ../lib/modules/sambaGroupMapping.inc:247 -msgid "Domain administrators" -msgstr "Administradors del domini" - -#: ../templates/domain.php:313 -msgid "Domain deleted successfully." -msgstr "Domini esborrat satisfactòriament" - -#: ../templates/domain.php:269 -msgid "Domain has been modified." -msgstr "El domini ha estat modificat." - -#: ../templates/lists/listdomains.php:98 ../templates/domain.php:88 -#: ../lib/modules/sambaAccount.inc:57 ../help/help.inc:240 -msgid "Domain name" -msgstr "Nom del Domini" - -#: ../lib/modules/sambaAccount.inc:57 ../lib/modules/sambaAccount.inc:58 -msgid "" -"Domain name contains invalid characters. Valid characters are: a-z, A-Z, 0-9 " -"and -." -msgstr "El nom del Domini conté caràcters invàlids. Els caràcters vàlids són: a-z, A-Z, 0-9 i -." - -#: ../templates/domain.php:242 -msgid "Domain name is invalid!" -msgstr "El nom del domini és invàlid!" - -#: ../templates/config/confmain.php:188 ../lib/config.inc:336 -msgid "DomainSuffix" -msgstr "DomainSuffix" - -#: ../templates/config/confsave.php:121 -msgid "DomainSuffix is invalid!" -msgstr "DomainSuffix invàlid!" - -#: ../templates/ou_edit.php:438 -msgid "Domains" -msgstr "Dominis" - -#: ../templates/pdfedit/pdfpage.php:581 -msgid "Down" -msgstr "Abaix" - -#: ../templates/masscreate.php:261 -msgid "Download sample CSV file" -msgstr "Rebre un arxiu CSV d'exemple" - -#: ../lib/modules/sambaAccount.inc:348 ../lib/modules/sambaSamAccount.inc:161 -msgid "Drive letter assigned on windows workstations as homedirectory." -msgstr "Lletra de la unitat assignada pel Windows com a directori del usuari." - -#: ../help/help.inc:199 -msgid "Driveletter assigned on windows workstations as homedirectory." -msgstr "Lletra de la unitat assignada pel Windows com a directori del usuari." - -#: ../lib/lists.inc:186 -msgid "E-Mail" -msgstr "Correu electrònic" - -#: ../templates/lists/listhosts.php:233 ../templates/lists/listgroups.php:233 -#: ../templates/lists/listdomains.php:168 ../templates/lists/listusers.php:283 -msgid "Edit" -msgstr "Editar" - -#: ../templates/pdfedit/pdfmain.php:121 -msgid "Edit PDF structure" -msgstr "Editar estructura de PDF" - -#: ../lib/modules/posixGroup.inc:135 ../lib/modules/posixAccount.inc:832 -msgid "Edit groups" -msgstr "Editar grups" - -#: ../templates/config/confmain.php:223 -msgid "Edit modules" -msgstr "Editar mòduls" - -#: ../templates/profedit/profilemain.php:152 -#: ../templates/profedit/profilemain.php:195 -#: ../templates/profedit/profilemain.php:238 -msgid "Edit profile" -msgstr "Editar perfil" - -#: ../lib/modules/sambaAccount.inc:749 ../lib/modules/sambaSamAccount.inc:728 -msgid "Edit workstations" -msgstr "Editar estacions de treball" - -#: ../lib/modules/inetOrgPerson.inc:72 ../lib/modules/inetOrgPerson.inc:99 -#: ../lib/modules/inetOrgPerson.inc:147 ../lib/modules/inetOrgPerson.inc:231 -#: ../lib/modules/inetOrgPerson.inc:417 ../lib/modules/inetOrgPerson.inc:466 -msgid "Employee type" -msgstr "Tipo de treballador" - -#: ../lib/modules/inetOrgPerson.inc:232 -msgid "Employee type: Contractor, Employee, Intern, Temp, External, ..." -msgstr "Tipo de treballador: Intern, temporal, extern, Contable, ..." - -#: ../templates/login.php:297 -msgid "Empty Password submitted. Try again." -msgstr "S'han especificat contrasenyes en blanc. Proveu una altre vegada." - -#: ../templates/login.php:148 -msgid "Enter Username and Password for Account" -msgstr "Editar nom de usuari i contrasenya pel compte" - -#: ../templates/delete.php:230 -#, php-format -msgid "Error while deleting DN: %s" -msgstr "Error mentre s'esborrava DN: %s" - -#: ../help/help.inc:69 ../help/help.inc:84 -msgid "Example" -msgstr "Exemple" - -#: ../templates/masscreate.php:146 ../templates/masscreate.php:159 -#: ../templates/masscreate.php:298 -msgid "Example value" -msgstr "valor d'exemple" - -#: ../help/help.inc:51 ../help/help.inc:63 -msgid "Examples" -msgstr "Exemples" - -#: ../help/help.inc:178 -msgid "Expand suffix with primary groupname" -msgstr "Expandir sufixe amb el nom del grup primari" - -#: ../lib/modules/shadowAccount.inc:93 ../lib/modules/shadowAccount.inc:155 -#: ../lib/modules/shadowAccount.inc:187 ../lib/modules/shadowAccount.inc:310 -msgid "Expiration date" -msgstr "Data d'expiració" - -#: ../help/help.inc:170 -msgid "Expire date" -msgstr "Data en que expira" - -#: ../templates/domain.php:287 -msgid "Failed to add domain!" -msgstr "Fallo al afegir domini!" - -#: ../templates/initsuff.php:149 -msgid "Failed to create entry!" -msgstr "Fallo al crear l'entrada!" - -#: ../templates/domain.php:270 -msgid "Failed to modify domain!" -msgstr "Fallo al modificar domini!" - -#: ../lib/modules/inetOrgPerson.inc:60 ../lib/modules/inetOrgPerson.inc:183 -#: ../lib/modules/inetOrgPerson.inc:255 ../lib/modules/inetOrgPerson.inc:256 -#: ../lib/modules/inetOrgPerson.inc:441 ../lib/modules/inetOrgPerson.inc:472 -msgid "Fax number" -msgstr "Numero de fax" - -#: ../templates/tools.php:69 -msgid "File upload" -msgstr "Enviar arxiu" - -#: ../lib/modules/sambaAccount.inc:359 ../lib/modules/sambaSamAccount.inc:172 -#: ../help/help.inc:201 -#, php-format -msgid "" -"Filename and -path relative to netlogon-share which should be executed on " -"logon. $%s and $%s are replaced with user- and groupname." -msgstr "Nom i camí de l'arxiu a executar al inici de sessió. El camí es relatiu respecte al recurs \"netlogon\". %s i %s seràn subtituïts amb el nom del usuari i el grup respectivament." - -#: ../lib/lists.inc:155 -msgid "Filter" -msgstr "Filtre" - -#: ../lib/modules/inetOrgPerson.inc:52 ../lib/modules/inetOrgPerson.inc:122 -#: ../lib/modules/inetOrgPerson.inc:223 ../lib/modules/inetOrgPerson.inc:409 -#: ../lib/modules/inetOrgPerson.inc:464 ../lib/lists.inc:182 -#: ../help/help.inc:184 -msgid "First name" -msgstr "Nom" - -#: ../lib/modules/inetOrgPerson.inc:52 ../lib/modules/inetOrgPerson.inc:53 -msgid "First name contains invalid characters!" -msgstr "El nom conté caràcters invàlids!" - -#: ../lib/modules/inetOrgPerson.inc:224 ../help/help.inc:185 -msgid "First name of user. Only letters, - and spaces are allowed." -msgstr "Nom del usuari. Només s'admeten lletres, - i espais." - -#: ../lib/modules/posixGroup.inc:128 ../lib/modules/posixGroup.inc:295 -#: ../lib/modules/posixGroup.inc:325 ../lib/modules/posixGroup.inc:350 -#: ../lib/modules/posixGroup.inc:369 ../lib/modules/posixGroup.inc:400 -#: ../lib/modules/posixAccount.inc:41 ../lib/modules/posixAccount.inc:963 -#: ../lib/modules/sambaGroupMapping.inc:297 ../lib/lists.inc:179 -#: ../lib/lists.inc:199 ../lib/lists.inc:218 ../help/help.inc:150 -msgid "GID number" -msgstr "Numero GID" - -#: ../lib/modules/posixGroup.inc:400 -msgid "" -"GID number has changed. Please select checkbox to change GID number of users " -"and hosts." -msgstr "El GID ha canviat. Seleccioneu el checkbox per canviar el GID de usuaris i màquines." - -#: ../lib/modules/posixAccount.inc:41 -#, php-format -msgid "" -"GID number has changed. To keep file ownership you have to run the following " -"command as root: 'find / -gid %s -uid %s -exec chgrp %s {} \\;'" -msgstr "El GID ha canviat. Per mantenir els propietaris dels arxius que hagin quedat descolocats, ha d'executar com a root: \"find / -gid %s -uid %s -exec chgrp %s {} \\;" - -#: ../lib/modules/posixGroup.inc:407 -msgid "GID number has to be a numeric value!" -msgstr "El numero GID ha de ser un valor numèric!" - -#: ../lib/modules/posixGroup.inc:251 -msgid "GID ranges for Unix groups" -msgstr "Rangs GID per grups Unix" - -#: ../lib/modules/account.inc:46 ../lib/modules/posixAccount.inc:223 -#: ../lib/modules/posixAccount.inc:255 ../lib/modules/posixAccount.inc:308 -#: ../lib/modules/posixAccount.inc:340 ../lib/modules/posixAccount.inc:821 -#: ../lib/modules/posixAccount.inc:964 ../lib/modules/inetOrgPerson.inc:215 -#: ../lib/modules/inetOrgPerson.inc:265 ../help/help.inc:142 -#: ../help/help.inc:152 ../help/help.inc:160 -msgid "Gecos" -msgstr "Gecos" - -#: ../lib/modules/posixGroup.inc:139 ../lib/modules/posixAccount.inc:844 -msgid "Generate password" -msgstr "Generar contrasenya" - -#: ../lib/modules/quota.inc:80 ../lib/modules/quota.inc:295 -msgid "Grace block period" -msgstr "Periode de gracia de blocs" - -#: ../lib/modules/quota.inc:81 -msgid "Grace block period. Most filesystems use a fixed maximum value of 7 days." -msgstr "Periode de gracia. La majoria de sistemes d'arxius utilitza un màxim fixe de 7 dies." - -#: ../lib/modules/quota.inc:97 -msgid "" -"Grace inode (files) period. Most filesystems use a fixed maximum value of 7 " -"days." -msgstr "Periode de gràcia de inodes(arxius). La majoria de sistemes d'arxius utilitza un màxim fixe de 7 dies." - -#: ../lib/modules/quota.inc:96 ../lib/modules/quota.inc:299 -msgid "Grace inode period" -msgstr "Periode de gracia per inodes" - -#: ../lib/modules/posixGroup.inc:301 ../lib/lists.inc:202 -msgid "Group description" -msgstr "Descripcció del grup" - -#: ../lib/modules/posixGroup.inc:330 ../help/help.inc:153 -msgid "Group description. If left empty group name will be used." -msgstr "Descripció del grup. Si es deixa en blanc, es farà servir el nom del grup." - -#: ../lib/pdf.inc:452 -msgid "Group information page" -msgstr "Pàgina d'informació del grup" - -#: ../templates/config/confsave.php:131 -msgid "Group list attributes are invalid!" -msgstr "La llista d'atributs del grup és invàlida!" - -#: ../lib/lists.inc:201 -msgid "Group member DNs" -msgstr "DNs dels membres del grup" - -#: ../lib/modules/posixGroup.inc:134 ../lib/modules/posixGroup.inc:193 -#: ../lib/modules/posixGroup.inc:307 ../lib/modules/posixGroup.inc:333 -#: ../lib/modules/posixGroup.inc:337 ../lib/modules/posixGroup.inc:370 -#: ../lib/lists.inc:200 ../help/help.inc:172 ../help/help.inc:231 -msgid "Group members" -msgstr "Membres del grup" - -#: ../templates/config/confmodules.php:284 -#: ../templates/config/confmain.php:220 ../lib/config.inc:346 -msgid "Group modules" -msgstr "Mòduls de grup" - -#: ../lib/modules/posixGroup.inc:287 ../lib/lists.inc:198 -msgid "Group name" -msgstr "Nom del grup" - -#: ../lib/modules/posixGroup.inc:322 ../help/help.inc:149 -msgid "" -"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." -msgstr "" -"El nom del grup que s'ha d'afegir. Els caràcters vàlids són: a-z,0-" -"9, .-_. LAM no accepta un numero com a primer caràcter perque \"groupadd\" tampoc ho permet. LAM no permet majúscules perquè poden causar diversos problemes. Si el nom del grup ja està en ús, s'expandirà amb un numero: el pròxim que estigui lliure." - -#: ../lib/modules/posixGroup.inc:313 ../lib/modules/posixGroup.inc:341 -msgid "Group password" -msgstr "Contrasenya de grup" - -#: ../templates/profedit/profilemain.php:175 -msgid "Group profiles" -msgstr "Perfils de grup" - -#: ../help/help.inc:180 -msgid "Group suffix" -msgstr "Sufix de grup" - -#: ../lib/modules/sambaGroupMapping.inc:184 -msgid "Group type" -msgstr "Tipo de grup" - -#: ../templates/config/confmain.php:176 ../lib/config.inc:334 -msgid "GroupSuffix" -msgstr "GroupSuffix" - -#: ../templates/config/confsave.php:111 -msgid "GroupSuffix is invalid!" -msgstr "GroupSuffix invàlid!" - -#: ../lib/modules/posixGroup.inc:125 ../lib/modules/posixGroup.inc:321 -#: ../lib/modules/posixGroup.inc:368 ../lib/modules/posixGroup.inc:408 -#: ../lib/modules/posixGroup.inc:409 ../lib/modules/posixGroup.inc:410 -#: ../help/help.inc:148 -msgid "Groupname" -msgstr "NomDeGrup" - -#: ../lib/modules/posixGroup.inc:410 ../lib/modules/posixGroup.inc:411 -msgid "" -"Groupname contains invalid characters. Valid characters are: a-z, A-Z, 0-9 " -"and .-_ !" -msgstr "NomDeGrup conté caràcters invàlids. Els caràcters vàlids són: a-z, A-Z, 0-9 i .-_ !" - -#: ../lib/modules/posixGroup.inc:409 -msgid "Groupname in use. Selected next free groupname." -msgstr "El nom del grup ja està ocupat. Seleccionem el pròxim lliure." - -#: ../templates/ou_edit.php:372 ../templates/main_header.php:75 -#: ../help/help.inc:76 -msgid "Groups" -msgstr "Grups" - -#: ../lib/modules/sambaAccount.inc:574 ../lib/modules/sambaAccount.inc:774 -#: ../lib/modules/sambaAccount.inc:777 ../lib/modules/sambaSamAccount.inc:545 -#: ../lib/modules/sambaSamAccount.inc:755 -#: ../lib/modules/sambaSamAccount.inc:758 -msgid "Guest" -msgstr "Invitat" - -#: ../lib/modules/quota.inc:400 -msgid "Hard block" -msgstr "Bloc \"hard\"" - -#: ../lib/modules/quota.inc:76 ../lib/modules/quota.inc:77 -#: ../lib/modules/quota.inc:294 ../lib/modules/quota.inc:351 -msgid "Hard block limit" -msgstr "Limit de bloc \"hard\"" - -#: ../lib/modules/quota.inc:400 -msgid "Hard inode" -msgstr "Inode \"hard\"" - -#: ../lib/modules/quota.inc:93 -msgid "Hard inode (files) limit" -msgstr "Limit de inodes \"hard\"" - -#: ../lib/modules/quota.inc:92 ../lib/modules/quota.inc:298 -#: ../lib/modules/quota.inc:353 -msgid "Hard inode limit" -msgstr "Limit de inodes \"hard\"" - -#: ../templates/pdfedit/pdfpage.php:495 -msgid "Headline" -msgstr "Capçalera" - -#: ../templates/pdfedit/pdfpage.php:468 -msgid "Height" -msgstr "Alçada" - -#: ../templates/ou_edit.php:352 ../templates/ou_edit.php:365 -#: ../templates/ou_edit.php:385 ../templates/ou_edit.php:398 -#: ../templates/ou_edit.php:418 ../templates/ou_edit.php:431 -#: ../templates/ou_edit.php:451 ../templates/ou_edit.php:464 -#: ../templates/domain.php:96 ../templates/domain.php:112 -#: ../templates/domain.php:123 ../templates/domain.php:131 -#: ../templates/domain.php:139 ../templates/domain.php:151 -#: ../templates/domain.php:169 ../templates/masscreate.php:149 -#: ../templates/masscreate.php:161 ../templates/masscreate.php:306 -#: ../templates/config/profmanage.php:180 -#: ../templates/config/profmanage.php:227 -#: ../templates/config/profmanage.php:252 -#: ../templates/config/profmanage.php:281 -#: ../templates/config/profmanage.php:324 -#: ../templates/config/profmanage.php:347 -#: ../templates/config/profmanage.php:375 ../templates/config/confmain.php:162 -#: ../templates/config/confmain.php:172 ../templates/config/confmain.php:178 -#: ../templates/config/confmain.php:184 ../templates/config/confmain.php:190 -#: ../templates/config/confmain.php:208 ../templates/config/confmain.php:224 -#: ../templates/config/confmain.php:288 ../templates/config/confmain.php:294 -#: ../templates/config/confmain.php:300 ../templates/config/confmain.php:317 -#: ../templates/config/confmain.php:358 ../templates/config/confmain.php:373 -#: ../templates/config/confmain.php:378 ../templates/config/confmain.php:392 -#: ../templates/config/confmain.php:402 ../templates/config/confmain.php:468 -#: ../templates/config/conflogin.php:126 ../templates/pdfedit/pdfpage.php:811 -#: ../templates/profedit/profilepage.php:90 -#: ../templates/profedit/profilepage.php:129 -#: ../templates/profedit/profilepage.php:166 ../lib/modules.inc:883 -msgid "Help" -msgstr "Ajuda" - -#: ../templates/masscreate.php:83 -msgid "Here you can create multiple accounts by providing a CSV file." -msgstr "Aquí pot crear múltiples comptes partint d'un arxiu CSV." - -#: ../lib/lists.inc:162 -msgid "Here you can input small filters (e.g. 'value' or 'v*')." -msgstr "Aquí pot entrar petits filtres (p.ex. 'valor' ó 'v*')." - -#: ../templates/tools.php:54 -msgid "Here you can manage your account profiles." -msgstr "Aquí pot administrar els seus perfils de compte." - -#: ../help/help.inc:107 -msgid "Here you can select which plugins you want to use for account management." -msgstr "Aquí pot seleccionar quins \"plugins\" vol utilitzar per l'administració de comptes." - -#: ../lib/modules/posixAccount.inc:331 ../help/help.inc:139 -msgid "Hold the CTRL-key to (de)select multiple groups." -msgstr "Mantingui la tecla CTRL per (des)sel·leccionar múltiples grups." - -#: ../lib/modules/posixAccount.inc:36 ../lib/modules/posixAccount.inc:64 -#: ../lib/modules/posixAccount.inc:65 ../lib/modules/posixAccount.inc:194 -#: ../lib/modules/posixAccount.inc:316 ../lib/modules/posixAccount.inc:711 -#: ../lib/modules/posixAccount.inc:834 ../lib/modules/posixAccount.inc:930 -#: ../lib/modules/posixAccount.inc:967 ../lib/lists.inc:184 -#: ../help/help.inc:140 -msgid "Home directory" -msgstr "Directori del usuari" - -#: ../lib/modules/posixAccount.inc:36 -#, php-format -msgid "" -"Home directory changed. To keep home directory you have to run the following " -"command as root: 'mv %s %s'" -msgstr "El directori del usuari ha canviat. Per conservar el que tenia, ha d'executar com a root: ' mv %s %s'" - -#: ../lib/modules/sambaAccount.inc:126 ../lib/modules/sambaAccount.inc:249 -#: ../lib/modules/sambaAccount.inc:347 ../lib/modules/sambaAccount.inc:736 -#: ../lib/modules/sambaAccount.inc:845 ../lib/modules/sambaSamAccount.inc:160 -#: ../lib/modules/sambaSamAccount.inc:263 -#: ../lib/modules/sambaSamAccount.inc:715 -#: ../lib/modules/sambaSamAccount.inc:853 -#: ../lib/modules/sambaSamAccount.inc:917 ../help/help.inc:198 -msgid "Home drive" -msgstr "Disc del usuari" - -#: ../lib/modules/sambaAccount.inc:46 ../lib/modules/sambaAccount.inc:47 -#: ../lib/modules/sambaAccount.inc:132 ../lib/modules/sambaAccount.inc:255 -#: ../lib/modules/sambaAccount.inc:350 ../lib/modules/sambaAccount.inc:739 -#: ../lib/modules/sambaAccount.inc:844 ../lib/modules/sambaSamAccount.inc:44 -#: ../lib/modules/sambaSamAccount.inc:45 -#: ../lib/modules/sambaSamAccount.inc:163 -#: ../lib/modules/sambaSamAccount.inc:269 -#: ../lib/modules/sambaSamAccount.inc:718 -#: ../lib/modules/sambaSamAccount.inc:859 -#: ../lib/modules/sambaSamAccount.inc:916 ../help/help.inc:208 -msgid "Home path" -msgstr "Ruta al directori del usuari" - -#: ../lib/modules/sambaAccount.inc:46 ../lib/modules/sambaSamAccount.inc:44 -#: ../lib/modules/sambaSamAccount.inc:46 -msgid "Home path is invalid." -msgstr "Ruta al directori del usuari" - -#: ../lib/modules/posixAccount.inc:64 ../lib/modules/posixAccount.inc:66 -msgid "Homedirectory contains invalid characters." -msgstr "El directori del usuari conté caracters invàlids." - -#: ../lib/lists.inc:216 -msgid "Host description" -msgstr "Descripció de la màquina" - -#: ../lib/modules/account.inc:47 ../lib/modules/posixAccount.inc:341 -#: ../lib/modules/inetOrgPerson.inc:266 ../help/help.inc:161 -msgid "Host description. If left empty host name will be used." -msgstr "Descripció de la màquina. Si es deixa en blanc, s'utilitzarà el nom de la màquina." - -#: ../lib/modules/account.inc:56 -msgid "Host list" -msgstr "Llista de màquines" - -#: ../templates/config/confsave.php:136 -msgid "Host list attributes are invalid!" -msgstr "La llista d'atributs de les màquines no és vàlida!" - -#: ../templates/config/confmodules.php:387 -#: ../templates/config/confmain.php:221 ../lib/config.inc:347 -msgid "Host modules" -msgstr "Mòduls de màquines" - -#: ../lib/modules/posixAccount.inc:234 ../lib/modules/posixAccount.inc:336 -#: ../lib/lists.inc:214 ../help/help.inc:154 -msgid "Host name" -msgstr "Nom de màquina" - -#: ../lib/modules/posixAccount.inc:337 ../help/help.inc:155 -msgid "" -"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." -msgstr "El nom de la màquina de la màquina que s'ha d'afegir. Els caràcters vàlids són: a-z,0-9, .-_$. LAM no accepta un numero com a primera lletra perquè \"useradd\" tampoc ho accepta. Les lletres majúscules no són permeses perquè poden causar diversos problemes. Els noms de les màquines sempre acaven amb $. Si no li posa, ja li afegiré jo :). Si el nom de la màquina ja existeix, s'expandirà amb un numero: el primer que estigui lliure." - -#: ../templates/profedit/profilemain.php:218 -msgid "Host profiles" -msgstr "Perfils de màquines." - -#: ../lib/lists.inc:213 -msgid "Host username" -msgstr "Nom d'usuari de la màquina" - -#: ../templates/config/confmain.php:182 ../lib/config.inc:335 -msgid "HostSuffix" -msgstr "Sufix de màquines" - -#: ../templates/config/confsave.php:116 -msgid "HostSuffix is invalid!" -msgstr "El sufix de màquines és invàlid!" - -#: ../lib/modules/posixAccount.inc:78 ../lib/modules/posixAccount.inc:79 -#: ../lib/modules/posixAccount.inc:81 -msgid "Hostname" -msgstr "Nom de la màquina" - -#: ../lib/modules/posixAccount.inc:83 -msgid "" -"Hostname contains invalid characters. Valid characters are: a-z, A-Z, 0-9 " -"and .-_ !" -msgstr "El nom de la màquina conté caracters invàlids. Els caràcters vàlids són: a-z, A-Z, 0-9 i .-_ !" - -#: ../lib/modules/posixAccount.inc:79 -msgid "" -"Hostname contains invalid characters. Valid characters are: a-z, A-Z, 0-9 " -"and .-_ ! Hostname must end with $ !" -msgstr "El nom de la màquina conté caracters invàlids. Els caràcters vàlids són: a-z, A-Z, 0-9 i .-_ !. El nom de la màquina ha d'acabar amb $ !" - -#: ../lib/modules/posixAccount.inc:81 -msgid "Hostname in use. Selected next free hostname." -msgstr "El Nom de la màquina ja s'està utilitzant. Seleccionem el pròxim disponible." - -#: ../templates/main_header.php:77 ../lib/modules/posixAccount.inc:59 -#: ../lib/modules/posixAccount.inc:60 ../lib/modules/posixAccount.inc:62 -#: ../lib/modules/posixAccount.inc:132 ../help/help.inc:79 -msgid "Hosts" -msgstr "Màquines" - -#: ../lib/modules/posixGroup.inc:403 ../lib/modules/posixGroup.inc:534 -#: ../lib/modules/posixAccount.inc:69 ../lib/modules/posixAccount.inc:657 -msgid "ID is already in use" -msgstr "L'ID ja està en ús" - -#: ../lib/modules/posixGroup.inc:401 ../lib/modules/posixGroup.inc:402 -#: ../lib/modules/posixGroup.inc:403 ../lib/modules/posixGroup.inc:530 -#: ../lib/modules/posixGroup.inc:534 ../lib/modules/posixAccount.inc:67 -#: ../lib/modules/posixAccount.inc:68 ../lib/modules/posixAccount.inc:69 -#: ../lib/modules/posixAccount.inc:653 ../lib/modules/posixAccount.inc:657 -msgid "ID-Number" -msgstr "Numero de ID" - -#: ../templates/masscreate.php:145 ../templates/masscreate.php:157 -#: ../templates/masscreate.php:290 -msgid "Identifier" -msgstr "Identificador" - -#: ../help/help.inc:181 -msgid "" -"If a not yet existing group is defined in csv-file, a new group in the " -"selected group suffix will be created." -msgstr "Si en l'arxiu CSV es defineix un grup que encara no existeix, aquest nou grup s'afegirà automàticament." - -#: ../help/help.inc:216 -msgid "" -"If a not yet existing group is defined in csv-file, a new group with the " -"selected group profile will be created." -msgstr "Si en l'arxiu CSV es defineix un grup que encara no existeix, aquest nou grup s'afegirà automàticament amb el perfil seleccionat." - -#: ../lib/modules/sambaAccount.inc:319 ../lib/modules/sambaSamAccount.inc:132 -msgid "If checked Unix password will also be used as Samba password." -msgstr "Si s'activa, s'utilitzarà la contrasenya de unix com a contrasenya de Samba." - -#: ../lib/modules/sambaAccount.inc:337 ../lib/modules/sambaSamAccount.inc:150 -#: ../help/help.inc:197 -msgid "If checked account will be deactivated. (Setting D-Flag)" -msgstr "Si s'activa, el compte es desactivarà. (D-Flag)" - -#: ../lib/modules/posixGroup.inc:346 ../lib/modules/sambaAccount.inc:325 -#: ../lib/modules/sambaSamAccount.inc:138 ../lib/modules/posixAccount.inc:322 -#: ../help/help.inc:187 -msgid "If checked no password will be used." -msgstr "Si s'activa, no s'utilitzarà cap contrasenya." - -#: ../lib/modules/sambaAccount.inc:331 ../lib/modules/sambaSamAccount.inc:144 -#: ../help/help.inc:191 -msgid "If checked password does not expire. (Setting X-Flag)" -msgstr "Si s'activa, la contrasenya no expirarà mai. (X-Flag)" - -#: ../help/help.inc:189 -msgid "If checked unix password will also be used as samba password." -msgstr "Si s'activa, s'utilitzarà la contrasenya de unix com a contrasenya de Samba." - -#: ../lib/modules/posixGroup.inc:326 ../help/help.inc:151 -msgid "" -"If empty GID number will be generated automaticly depending on your " -"configuration settings." -msgstr "Si es deixa en blanc, el GID es generarà automàticament depenent de la seva configuració" - -#: ../lib/modules/posixAccount.inc:300 ../help/help.inc:137 -#: ../help/help.inc:157 -msgid "If empty UID number will be generated automaticly." -msgstr "Si es deixa en blanc, el UID es generarà automàticament." - -#: ../help/help.inc:179 -msgid "" -"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." -msgstr "Si s'activa, els usuaris s'afegiràn en la OU expandida al seu grup primari. P.ex. si \"usuari\" està al grup \"Admin\", el sufix esdevindrà OU=Admin,+usuari." - -#: ../lib/modules/sambaAccount.inc:322 ../lib/modules/sambaSamAccount.inc:135 -msgid "If set to \"true\" Unix password will also be used as Samba password." -msgstr "Si s'activa, la contrasenya de Unix també s'utilitzarà com a contrasenya de Samba." - -#: ../lib/modules/sambaAccount.inc:340 ../lib/modules/sambaSamAccount.inc:153 -msgid "If set to \"true\" account will be deactivated. (Setting D-Flag)" -msgstr "Si s'activa, el compte es desactivarà. (D-Flag)" - -#: ../lib/modules/sambaAccount.inc:328 ../lib/modules/sambaSamAccount.inc:141 -msgid "If set to \"true\" no password will be used." -msgstr "Si s'activa, no s'utilitzarà cap contrasenya." - -#: ../lib/modules/sambaAccount.inc:334 ../lib/modules/sambaSamAccount.inc:147 -msgid "If set to \"true\" password does not expire. (Setting X-Flag)" -msgstr "Si s'activa, la contrasenya no caducarà mai. (X-Flag)" - -#: ../help/help.inc:101 -msgid "If you want to change the current preferences password, please enter it here." -msgstr "Si vol canviar la contrasenya de les preferencies actuals, entri aquesta contrasenya aquí." - -#: ../help/help.inc:119 -msgid "" -"If you want to change your master configuration password, please enter it " -"here." -msgstr "Si vol canviar la contrasenya mestre de la configuració, entri aquesta nova contrasenya aquí." - -#: ../lib/modules/sambaAccount.inc:372 -msgid "" -"If you want to create domain administrators or other special users use this " -"option." -msgstr "Fagi servir aquesta opció quan vulgui afegir comptes especials o el compte de Administradors del domini." - -#: ../lib/modules/sambaAccount.inc:366 -#: ../lib/modules/sambaGroupMapping.inc:272 ../help/help.inc:226 -msgid "If you want to use a well known RID you can selcet a well known group." -msgstr "Si vol utilitzar un RID conegut, pot seleccionar un grup conegut." - -#: ../lib/modules/quota.inc:33 -msgid "Inode hard quota" -msgstr "Quota \"hard\" de inodes." - -#: ../lib/modules/quota.inc:33 -msgid "" -"Inode hard quota contains invalid characters. Only natural numbers are " -"allowed." -msgstr "La quota \"hard\" de inodes conté caràcters invàlids. Només s'admeten numeros naturals." - -#: ../lib/modules/quota.inc:35 -msgid "Inode quota" -msgstr "Quota d'inodes." - -#: ../lib/modules/quota.inc:32 -msgid "Inode soft quota" -msgstr "Quota \"soft\" de inodes" - -#: ../lib/modules/quota.inc:32 -msgid "" -"Inode soft quota contains invalid characters. Only natural numbers are " -"allowed." -msgstr "La quota \"soft\" de inodes conté caràcters invàlids. Només s'admeten numeros naturals." - -#: ../lib/modules/quota.inc:35 -msgid "Inode soft quota must be smaller than inode hard quota." -msgstr "La quota \"soft\" per inodes ha de ser més petita que la quota \"hard\"." - -#: ../lib/modules/sambaAccount.inc:47 ../lib/modules/sambaAccount.inc:48 -#: ../lib/modules/sambaSamAccount.inc:45 -msgid "Inserted user- or groupname in HomePath." -msgstr "S'ha afegit nom de usuari o de grup en la ruta del directori del usuari." - -#: ../lib/modules/sambaAccount.inc:53 -msgid "Inserted user- or groupname in logon script." -msgstr "S'ha afegit el nom de usuari o del grup en l'script de inici de sessió." - -#: ../lib/modules/sambaAccount.inc:50 ../lib/modules/sambaAccount.inc:51 -#: ../lib/modules/sambaSamAccount.inc:48 -msgid "Inserted user- or groupname in profilepath." -msgstr "S'ha afegit el nom del usuari o grup en la ruta al perfil." - -#: ../lib/modules/sambaSamAccount.inc:51 -msgid "Inserted user- or groupname in scriptpath." -msgstr "S'ha afegit el nom del usuari o grup en la ruta als scripts." - -#: ../lib/modules/posixGroup.inc:148 ../lib/modules/posixAccount.inc:853 -msgid "Invalid password" -msgstr "Contrasenya invàlida" - -#: ../lib/status.inc:61 -msgid "Invalid/Missing Message type" -msgstr "Invàlid/Inexistent tipus de missatge" - -#: ../lib/modules/posixGroup.inc:401 ../lib/modules/posixAccount.inc:68 -msgid "" -"It is possible that this ID-number is reused. This can cause several " -"problems because files with old permissions might still exist. To avoid this " -"warning set maxUID to a higher value." -msgstr "És possible que aquest numero de UID sigui reutilitzat. Això pot causar diversos problemes perquè encara existeixen arxius amb els propietaris antics. Per solventar això, pugi el valor del maxUID." - -#: ../lib/modules/sambaGroupMapping.inc:57 -msgid "Ivalid Account" -msgstr "Compte invàlid" - -#: ../lib/modules/inetOrgPerson.inc:70 ../lib/modules/inetOrgPerson.inc:95 -#: ../lib/modules/inetOrgPerson.inc:141 ../lib/modules/inetOrgPerson.inc:219 -#: ../lib/modules/inetOrgPerson.inc:405 ../lib/modules/inetOrgPerson.inc:463 -msgid "Job title" -msgstr "Titulació de la feina" - -#: ../lib/modules/inetOrgPerson.inc:220 -msgid "Job title of user: President, department manager, ..." -msgstr "Titulació de la feina del usuari: President, encarregat de departament, ..." - -#: ../lib/status.inc:60 -msgid "LAM Internal Error" -msgstr "Error intern de LAM" - -#: ../templates/massBuildAccounts.php:188 -msgid "LAM has checked your input and is now ready to create the accounts." -msgstr "LAM ha comprovat les seves dades, i ara està apunt per començar a afegir comptes." - -#: ../lib/modules/posixGroup.inc:355 ../lib/modules/posixAccount.inc:296 -msgid "" -"LAM supports CRYPT, SHA, SSHA, MD5 and SMD5 to generate the hash value of " -"passwords. 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." -msgstr "LAM soporta CRYPT, SHA, SSHA, MD5 i SMD5 per generar els hashos de les contrasenyes. SSHA i CRYPT són els més utilitzats, pero CRYPT no soporta contrasenyes de més de 8 lletres. No es recomana la utilització de contrasenyes sense encriptar." - -#: ../templates/massDoUpload.php:82 -#, php-format -msgid "LAM was unable to create account %s! An LDAP error occured." -msgstr "LAM ha estat incapaç de crear el compte %s!. S'ha produït un error de LDAP" - -#: ../lib/modules/sambaGroupMapping.inc:341 -msgid "LAM was unable to find a Samba 3 domain with this name!" -msgstr "LAM no ha pogut trovar un Domini de Samba3 amb aquest nom!" - -#: ../lib/modules/sambaSamAccount.inc:69 -msgid "LAM was unable to find a domain with this name!" -msgstr "LAM no ha pogut trovar un domini amb aquest nom!" - -#: ../lib/modules/posixAccount.inc:84 -msgid "LAM was unable to find a group with this name!" -msgstr "LAM no ha pogut trovar un grup amb aquest nom!" - -#: ../lib/modules/posixAccount.inc:1243 -#, php-format -msgid "LAM was unable to modify group memberships for group: %s" -msgstr "LAM no ha pogut modificar els membres del grup: %s" - -#: ../templates/config/confmodules.php:67 ../templates/config/confsave.php:74 -#: ../templates/config/confmain.php:145 -msgid "LDAP Account Manager Configuration" -msgstr "Configuració de LDAP Account Manager" - -#: ../templates/config/confmain.php:281 -msgid "LDAP List settings" -msgstr "Llista de preferències de LDAP" - -#: ../templates/lists/listhosts.php:193 ../templates/lists/listgroups.php:193 -#: ../templates/lists/listdomains.php:125 ../templates/lists/listusers.php:232 -msgid "LDAP Search failed! Please check your preferences." -msgstr "Busqueda en LDAP fallida!. Si us plau, comproveu les preferències." - -#: ../templates/login.php:336 -msgid "LDAP error, server says:" -msgstr "Error de LDAP, el servidor ha respós:" - -#: ../lib/modules.inc:772 -msgid "LDAP operation successful." -msgstr "Operació LDAP satisfactoria." - -#: ../templates/login.php:247 -msgid "LDAP server" -msgstr "Servidor LDAP" - -#: ../templates/lists/listhosts.php:179 ../templates/lists/listgroups.php:179 -#: ../templates/lists/listdomains.php:114 ../templates/lists/listusers.php:217 -msgid "LDAP sizelimit exceeded, not all entries are shown." -msgstr "S'ha superat el tamany màxim en LDAP , no es mostren totes les entrades." - -#: ../templates/profedit/profilepage.php:85 -#: ../templates/profedit/profilepage.php:86 -msgid "LDAP suffix" -msgstr "Sufixe LDAP" - -#: ../templates/massDoUpload.php:117 -msgid "LDAP upload has finished" -msgstr "L'enviament al LDAP ha acabat." - -#: ../templates/massDoUpload.php:66 -msgid "LDAP upload in progress. Please wait." -msgstr "Enviament al LDAP en progrés. Si us plau, esperi." - -#: ../templates/config/confsave.php:147 -msgid "Language is not defined!" -msgstr "No s'ha definit l'idioma!" - -#: ../templates/config/confmain.php:323 -msgid "Language settings" -msgstr "Configuració de l'idioma" - -#: ../lib/modules/inetOrgPerson.inc:54 ../lib/modules/inetOrgPerson.inc:128 -#: ../lib/modules/inetOrgPerson.inc:227 ../lib/modules/inetOrgPerson.inc:413 -#: ../lib/modules/inetOrgPerson.inc:465 ../lib/lists.inc:183 -#: ../help/help.inc:182 -msgid "Last name" -msgstr "Cognom" - -#: ../lib/modules/inetOrgPerson.inc:54 ../lib/modules/inetOrgPerson.inc:55 -msgid "Last name contains invalid characters!" -msgstr "El cognom conté caràcters invàlids!" - -#: ../lib/modules/inetOrgPerson.inc:228 ../help/help.inc:183 -msgid "Last name of user. Only letters, - and spaces are allowed." -msgstr "Cognom del usuari. Només s'accepten lletres, - i espais." - -#: ../lib/modules/shadowAccount.inc:331 -msgid "Last password change" -msgstr "Última vegada que es va canviar la contrasenya" - -#: ../templates/pdfedit/pdfpage.php:535 -msgid "Left" -msgstr "Esquerre" - -#: ../help/help.inc:66 -msgid "List attributes" -msgstr "Llista d'atributs" - -#: ../help/help.inc:207 -msgid "" -"List of Samba workstations the user is allowed to login. Empty means every " -"workstation." -msgstr "Llista de estacions de treballs de Samba(Windows) a través de les quals l'usuari està autoritzat a iniciar sessió. En blanc significa totes les estacions de treball." - -#: ../templates/config/confsave.php:101 -msgid "List of admin users is empty or invalid!" -msgstr "La llista dels usuaris Administradors està en blanc o bé és invàlida!" - -#: ../templates/config/confmain.php:390 ../lib/config.inc:344 -msgid "List of valid users" -msgstr "Llista de usuaris vàlids" - -#: ../lib/modules.inc:748 ../help/help.inc:176 -msgid "Load profile" -msgstr "Carregar perfil" - -#: ../lib/modules/sambaGroupMapping.inc:54 -msgid "Local Group" -msgstr "Grup Local" - -#: ../lib/modules/posixGroup.inc:151 ../lib/modules/posixAccount.inc:215 -#: ../lib/modules/posixAccount.inc:856 ../lib/modules/posixAccount.inc:942 -msgid "Lock password" -msgstr "Bloquejar contrasenya" - -#: ../templates/login.php:229 ../templates/login.php:230 -#: ../templates/config/conflogin.php:68 ../help/help.inc:46 -msgid "Login" -msgstr "Iniciar Sessió" - -#: ../lib/modules/posixAccount.inc:201 ../lib/modules/posixAccount.inc:326 -#: ../lib/modules/posixAccount.inc:860 ../lib/modules/posixAccount.inc:934 -#: ../lib/modules/posixAccount.inc:969 ../lib/lists.inc:185 -#: ../help/help.inc:144 -msgid "Login shell" -msgstr "Shell de Inici de sessió" - -#: ../templates/pdfedit/pdfpage.php:434 -msgid "Logo" -msgstr "Anagrama" - -#: ../lib/modules/sambaSamAccount.inc:188 -#: ../lib/modules/sambaSamAccount.inc:307 -msgid "Logon hours" -msgstr "Hores de inici de sessió" - -#: ../lib/modules/sambaAccount.inc:52 ../lib/modules/sambaAccount.inc:53 -#: ../lib/modules/sambaAccount.inc:144 ../lib/modules/sambaAccount.inc:267 -#: ../lib/modules/sambaAccount.inc:358 ../lib/modules/sambaAccount.inc:745 -#: ../lib/modules/sambaAccount.inc:846 ../lib/modules/sambaSamAccount.inc:171 -#: ../lib/modules/sambaSamAccount.inc:281 -#: ../lib/modules/sambaSamAccount.inc:724 -#: ../lib/modules/sambaSamAccount.inc:871 -#: ../lib/modules/sambaSamAccount.inc:918 -msgid "Logon script" -msgstr "Script de inici de sessió" - -#: ../lib/modules/sambaAccount.inc:52 ../lib/modules/sambaAccount.inc:54 -#: ../lib/modules/sambaSamAccount.inc:52 -msgid "Logon script is invalid!" -msgstr "Script de inici de sessió invàlid!" - -#: ../templates/main_header.php:63 ../templates/logout.php:60 -msgid "Logout" -msgstr "Finalitzar sessió" - -#: ../lib/modules/ieee802device.inc:50 ../lib/modules/ieee802device.inc:56 -#: ../lib/modules/ieee802device.inc:67 ../lib/modules/ieee802device.inc:142 -msgid "MAC address" -msgstr "Adreça MAC" - -#: ../lib/modules/ieee802device.inc:60 ../lib/modules/ieee802device.inc:255 -msgid "MAC address list" -msgstr "Llista d'adreçes MAC" - -#: ../lib/modules.inc:693 ../lib/modules.inc:710 -msgid "Main" -msgstr "Principal" - -#: ../templates/config/conflogin.php:134 -msgid "Manage profiles" -msgstr "Administrar perfils" - -#: ../templates/tools.php:77 -msgid "Manages OU objects in your LDAP tree." -msgstr "Administra objectes OU en l'arbre LDAP." - -#: ../templates/tools.php:62 -msgid "Manages Samba 3 domain accounts." -msgstr "Administra comptes de domini de Samba3." - -#: ../templates/pdfedit/pdfpage.php:508 -msgid "Margin" -msgstr "Marge" - -#: ../templates/config/profmanage.php:368 -msgid "Master Password:" -msgstr "Contrasenya mestre:" - -#: ../help/help.inc:120 -msgid "Master password" -msgstr "Contrasenya mestre" - -#: ../templates/config/profmanage.php:68 -msgid "Master password is wrong!" -msgstr "La contrasenya mestre és incorrecte!" - -#: ../templates/config/profmanage.php:128 -msgid "Master passwords are different or empty!" -msgstr "Les contrasenyes mestres són diferents, o estàn en blanc!?" - -#: ../templates/config/confsave.php:141 -msgid "Max list entries is invalid!" -msgstr "Màxim numero de entrades invàlida!" - -#: ../templates/pdfedit/pdfpage.php:479 -msgid "Maximize with correct ratio" -msgstr "Maximitzar amb el ratio correcte" - -#: ../lib/modules/posixGroup.inc:237 ../lib/modules/posixGroup.inc:405 -#: ../lib/modules/posixGroup.inc:406 -msgid "Maximum GID number" -msgstr "GID Màxim" - -#: ../lib/modules/posixGroup.inc:254 -msgid "Maximum GID number for Unix groups" -msgstr "Màxim GID per grups Unix" - -#: ../lib/modules/posixGroup.inc:405 -msgid "Maximum GID number is invalid or empty!" -msgstr "El GID màxim és invàlid o és buit!" - -#: ../lib/modules/posixGroup.inc:406 -msgid "Maximum GID number must be greater than minimum GID number!" -msgstr "El GID màxim ha de ser més gràn que el GID mínim!" - -#: ../lib/modules/posixAccount.inc:58 ../lib/modules/posixAccount.inc:60 -#: ../lib/modules/posixAccount.inc:61 ../lib/modules/posixAccount.inc:62 -#: ../lib/modules/posixAccount.inc:126 ../lib/modules/posixAccount.inc:135 -msgid "Maximum UID number" -msgstr "Màxim UID" - -#: ../lib/modules/posixAccount.inc:156 -msgid "Maximum UID number for Unix accounts (hosts)" -msgstr "UID màxim per comptes Unix(màquines)" - -#: ../lib/modules/posixAccount.inc:154 -msgid "Maximum UID number for Unix accounts (users)" -msgstr "UID màxim per comptes Unix(usuaris)" - -#: ../lib/modules/posixAccount.inc:58 ../lib/modules/posixAccount.inc:60 -msgid "Maximum UID number is invalid!" -msgstr "El UID màxim és invàlid!" - -#: ../lib/modules/posixAccount.inc:61 ../lib/modules/posixAccount.inc:62 -msgid "Maximum UID number must be greater than minimum UID number!" -msgstr "El UID màxim ha de ser més gran que el UID mínim!" - -#: ../templates/config/confmain.php:307 ../lib/config.inc:340 -#: ../help/help.inc:86 -msgid "Maximum list entries" -msgstr "Nombre màxim d'entrades a la llista" - -#: ../lib/modules/shadowAccount.inc:88 ../lib/modules/shadowAccount.inc:151 -#: ../lib/modules/shadowAccount.inc:181 ../lib/modules/shadowAccount.inc:303 -#: ../help/help.inc:166 -msgid "Maximum password age" -msgstr "Edat màxima de la contrasenya" - -#: ../lib/modules/inetOrgPerson.inc:130 -msgid "Miller" -msgstr "Miller" - -#: ../lib/modules/posixGroup.inc:234 ../lib/modules/posixGroup.inc:404 -msgid "Minimum GID number" -msgstr "GID mínim" - -#: ../lib/modules/posixGroup.inc:253 -msgid "Minimum GID number for Unix groups" -msgstr "GID mínim per grups Unix" - -#: ../lib/modules/posixGroup.inc:404 -msgid "Minimum GID number is invalid or empty!" -msgstr "GID mínim invàlid o en blanc!" - -#: ../lib/modules/posixAccount.inc:57 ../lib/modules/posixAccount.inc:59 -#: ../lib/modules/posixAccount.inc:123 ../lib/modules/posixAccount.inc:132 -msgid "Minimum UID number" -msgstr "UID mínim" - -#: ../lib/modules/posixAccount.inc:155 -msgid "Minimum UID number for Unix accounts (hosts)" -msgstr "UID mínim per comptes Unix (màquines)" - -#: ../lib/modules/posixAccount.inc:153 -msgid "Minimum UID number for Unix accounts (users)" -msgstr "UID mínim per comptes Unix (usuaris)" - -#: ../lib/modules/posixAccount.inc:57 ../lib/modules/posixAccount.inc:59 -msgid "Minimum UID number is invalid!" -msgstr "UID mínim invàlid!" - -#: ../lib/modules/shadowAccount.inc:83 ../lib/modules/shadowAccount.inc:147 -#: ../lib/modules/shadowAccount.inc:175 ../lib/modules/shadowAccount.inc:300 -#: ../help/help.inc:168 -msgid "Minimum password age" -msgstr "Edat mínima de la contrasenya" - -#: ../lib/modules/inetOrgPerson.inc:58 ../lib/modules/inetOrgPerson.inc:177 -#: ../lib/modules/inetOrgPerson.inc:251 ../lib/modules/inetOrgPerson.inc:252 -#: ../lib/modules/inetOrgPerson.inc:437 ../lib/modules/inetOrgPerson.inc:471 -msgid "Mobile number" -msgstr "Numero del mòbil" - -#: ../lib/modules.inc:672 ../lib/modules.inc:759 -msgid "Modify Account" -msgstr "Modificar compte" - -#: ../templates/config/confmodules.php:75 -msgid "Module selection" -msgstr "Sel·leció de mòduls" - -#: ../lib/config.inc:348 -msgid "Module settings" -msgstr "Configuració de mòduls" - -#: ../lib/modules/quota.inc:64 ../lib/modules/quota.inc:291 -#: ../lib/modules/quota.inc:349 ../lib/modules/quota.inc:400 -msgid "Mountpoint" -msgstr "Punt de muntatge" - -#: ../lib/modules/quota.inc:65 -msgid "Mountpoint of device with enabled quotas." -msgstr "Punt de muntatge de dispositiu amb quotes habilitades" - -#: ../lib/modules/inetOrgPerson.inc:167 -msgid "Mycity" -msgstr "Mycity" - -#: ../lib/modules/inetOrgPerson.inc:155 -msgid "Mystreetname 42" -msgstr "Mystreetname 42" - -#: ../templates/pdfedit/pdfdelete.php:56 ../templates/pdfedit/pdfdelete.php:59 -#: ../templates/pdfedit/pdfdelete.php:78 -msgid "Name" -msgstr "Nom" - -#: ../help/help.inc:128 -msgid "" -"Name under which the profile will be saved. If a profile with the same name " -"exists, it will be overwritten." -msgstr "Nom sota el qual es gravarà el perfil. Si ja exiteix el perfil, s'escriurà a sobre." - -#: ../templates/lists/listdomains.php:213 -msgid "New Domain" -msgstr "Nou Domini" - -#: ../templates/lists/listgroups.php:306 -msgid "New Group" -msgstr "Nou Grup" - -#: ../templates/lists/listhosts.php:291 -msgid "New Host" -msgstr "Nova màquina" - -#: ../lib/modules/ieee802device.inc:149 -msgid "New MAC address" -msgstr "Nova adreça MAC" - -#: ../templates/ou_edit.php:52 ../templates/ou_edit.php:117 -#: ../templates/ou_edit.php:182 ../templates/ou_edit.php:247 -msgid "New OU created successfully." -msgstr "OU creada satisfactòriament" - -#: ../templates/config/confmain.php:399 -msgid "New Password" -msgstr "Nova contrasenya" - -#: ../templates/config/profmanage.php:135 -msgid "New default profile set successfully." -msgstr "Nou perfil per defecte establert satisfactòriament." - -#: ../templates/config/profmanage.php:343 -msgid "New master password" -msgstr "Nova contrasenya mestre" - -#: ../templates/config/profmanage.php:126 -msgid "New master password set successfully." -msgstr "Nova contrasenya mestre establerta correctament." - -#: ../templates/ou_edit.php:344 ../templates/ou_edit.php:377 -#: ../templates/ou_edit.php:410 ../templates/ou_edit.php:443 -#: ../help/help.inc:236 -msgid "New organizational unit" -msgstr "Nova unitat organitzativa (OU)" - -#: ../templates/config/profmanage.php:116 -msgid "New password set successfully." -msgstr "Nova contrasenya establerta correctament." - -#: ../lib/modules.inc:617 -msgid "New profile created." -msgstr "S'ha creat el nou perfil." - -#: ../templates/lists/listusers.php:354 -msgid "New user" -msgstr "Nou usuari" - -#: ../templates/domain.php:135 ../help/help.inc:250 -msgid "Next Group RID" -msgstr "RID del pròxim grup" - -#: ../templates/domain.php:119 ../help/help.inc:246 -msgid "Next RID" -msgstr "Següent RID" - -#: ../templates/domain.php:249 -msgid "Next RID is not a number!" -msgstr "El següent RID no és un número!" - -#: ../help/help.inc:247 -msgid "Next RID to use when creating accounts." -msgstr "Següent RID a utilitzar a l'hora de crear comptes." - -#: ../help/help.inc:251 -msgid "Next RID to use when creating groups." -msgstr "Següent RID a utilitzar a l'hora de crear grups." - -#: ../help/help.inc:249 -msgid "Next RID to use when creating user accounts." -msgstr "Següent RID a utilitzar a l'hora de crear comptes d'usuari." - -#: ../templates/domain.php:127 ../help/help.inc:248 -msgid "Next User RID" -msgstr "Pròxim RID de usuari" - -#: ../templates/domain.php:251 -msgid "Next group RID is not a number!" -msgstr "El proxim RID de grup no és un número!" - -#: ../templates/domain.php:250 -msgid "Next user RID is not a number!" -msgstr "El RID del usuari no és un numero!" - -#: ../templates/lists/listgroups.php:184 ../templates/lists/listgroups.php:193 -#: ../templates/lists/listgroups.php:197 -msgid "No Groups found!" -msgstr "No s'han trovat grups!" - -#: ../templates/lists/listdomains.php:119 -#: ../templates/lists/listdomains.php:125 -#: ../templates/lists/listdomains.php:129 -msgid "No Samba Domains found!" -msgstr "No s'han trovat dominis de Samba!" - -#: ../templates/lists/listhosts.php:184 ../templates/lists/listhosts.php:193 -#: ../templates/lists/listhosts.php:197 -msgid "No Samba Hosts found!" -msgstr "No s'han trovat màquines de Samba!" - -#: ../templates/lists/listusers.php:222 ../templates/lists/listusers.php:233 -msgid "No Users found!" -msgstr "No s'han trovat usuaris!" - -#: ../templates/config/confmodules.php:274 -#: ../templates/config/confmodules.php:377 -#: ../templates/config/confmodules.php:480 -msgid "No base module selected!" -msgstr "No s'ha sel·leccionat cap mòdul base!" - -#: ../templates/initsuff.php:165 -msgid "No changes were made." -msgstr "No s'han fet canvis." - -#: ../templates/config/conflogin.php:93 -msgid "No configuration profiles found. Please create one." -msgstr "No s'ha trovat cap perfil de configuració. Si us plau, crei'n un." - -#: ../lib/modules/posixGroup.inc:402 ../lib/modules/posixAccount.inc:67 -msgid "No free ID-Number!" -msgstr "Cap ID lliure!" - -#: ../lib/modules/posixAccount.inc:359 -msgid "No groups found in ldap." -msgstr "No s'han trovat grups en ldap." - -#: ../templates/pdfedit/pdfpage.php:409 -msgid "No logo" -msgstr "Sense Logo" - -#: ../templates/config/confmain.php:96 -msgid "No password was entered!" -msgstr "No s'ha entrat cap contrasenya" - -#: ../lib/modules.inc:614 -msgid "No profilename given." -msgstr "No s'ha doonat cap nom de perfil." - -#: ../templates/pdfedit/pdfpage.php:73 -msgid "No section text specified" -msgstr "No s'ha especificat cap texte de secció" - -#: ../templates/pdfedit/pdfpage.php:77 -msgid "No static text specified" -msgstr "No s'ha especificat cap texte" - -#: ../help/help.inc:57 -msgid "Note" -msgstr "Nota" - -#: ../lib/modules/shadowAccount.inc:144 ../help/help.inc:165 -msgid "Number of days a user can login even his password has expired. -1=always." -msgstr "Nombre de dies en que l'usuari pot seguir iniciant la sessió encara que la seva contrasenya hagi caducat. -1=sempre." - -#: ../lib/modules/shadowAccount.inc:148 ../help/help.inc:169 -msgid "" -"Number of days a user has to wait until he\\'s allowed to change his " -"password again. If set value must be 0<." -msgstr "Nombre de dies que han de passar per tal que l'usuari pugui tornar a canviar la seva contrasenya. Si s'especifica, el valor ha des ser menor de 0." - -#: ../lib/modules/shadowAccount.inc:152 ../help/help.inc:167 -msgid "" -"Number of days after a user has to change his password again. If set value " -"must be 0<." -msgstr "Nombre de dies que l'usuari disposa per canviar la seva contrasenya una altre vegada. Si s'especifica, el valor ha de ser menor de zero." - -#: ../templates/ou_edit.php:58 ../templates/ou_edit.php:123 -#: ../templates/ou_edit.php:188 ../templates/ou_edit.php:253 -msgid "OU already exists!" -msgstr "L'OU ja existeix!" - -#: ../templates/ou_edit.php:69 ../templates/ou_edit.php:134 -#: ../templates/ou_edit.php:199 ../templates/ou_edit.php:264 -msgid "OU deleted successfully." -msgstr "S'ha esborrat la OU" - -#: ../templates/tools.php:76 -msgid "OU editor" -msgstr "Editor de O.U" - -#: ../templates/ou_edit.php:62 ../templates/ou_edit.php:127 -#: ../templates/ou_edit.php:192 ../templates/ou_edit.php:257 -msgid "OU is invalid!" -msgstr "OU invàlida!" - -#: ../templates/ou_edit.php:99 ../templates/ou_edit.php:164 -#: ../templates/ou_edit.php:229 ../templates/ou_edit.php:294 -msgid "OU is not empty or invalid!" -msgstr "OU no està en blanc, o és invàlida!" - -#: ../help/help.inc:236 ../help/help.inc:238 -msgid "OU-Editor" -msgstr "Editor-OU" - -#: ../lib/cache.inc:79 ../lib/modules.inc:913 ../lib/modules.inc:951 -#: ../lib/modules.inc:1050 -#, php-format -msgid "ObjectClass %s required but not defined in LDAP." -msgstr "ObjectClass %s obligatori, pero no està definida en el LDAP." - -#: ../templates/config/conflogin.php:123 ../templates/config/conflogin.php:124 -msgid "Ok" -msgstr "Ok" - -#: ../templates/tools.php:83 -msgid "PDF editor" -msgstr "Editor de PDF" - -#: ../templates/lists/listhosts.php:296 ../templates/lists/listgroups.php:311 -#: ../templates/lists/listusers.php:359 ../templates/pdfedit/pdfpage.php:573 -msgid "PDF structure" -msgstr "Estructura de PDF" - -#: ../templates/pdfedit/pdfmain.php:101 -msgid "PDF structures" -msgstr "Estructures de PDF" - -#: ../templates/pdfedit/pdfpage.php:61 -msgid "PDF-structure name not valid" -msgstr "Nom de l'estructura del PDF invàlid" - -#: ../templates/pdfedit/pdfpage.php:429 -msgid "Page settings" -msgstr "Configuració de la pàgina" - -#: ../templates/login.php:178 ../lib/modules/posixGroup.inc:137 -#: ../lib/modules/posixGroup.inc:397 ../lib/modules/posixGroup.inc:398 -#: ../lib/modules/posixGroup.inc:399 ../lib/modules/sambaAccount.inc:59 -#: ../lib/modules/sambaAccount.inc:60 ../lib/modules/sambaAccount.inc:197 -#: ../lib/modules/sambaSamAccount.inc:55 ../lib/modules/sambaSamAccount.inc:56 -#: ../lib/modules/sambaSamAccount.inc:211 ../lib/modules/posixAccount.inc:71 -#: ../lib/modules/posixAccount.inc:72 ../lib/modules/posixAccount.inc:73 -#: ../lib/modules/posixAccount.inc:209 ../lib/modules/posixAccount.inc:842 -#: ../lib/modules/posixAccount.inc:968 -msgid "Password" -msgstr "Contrasenya" - -#: ../templates/config/confsave.php:240 -msgid "Password changed!" -msgstr "S'ha canviat la contrasenya!" - -#: ../lib/modules/posixGroup.inc:398 ../lib/modules/sambaAccount.inc:60 -#: ../lib/modules/sambaAccount.inc:61 ../lib/modules/sambaSamAccount.inc:56 -#: ../lib/modules/sambaSamAccount.inc:57 ../lib/modules/posixAccount.inc:72 -#: ../lib/modules/posixAccount.inc:74 -msgid "" -"Password contains invalid characters. Valid characters are: a-z, A-Z, 0-9 " -"and #*,.;:_-+!$%&/|?{[()]}= !" -msgstr "" -"La contrasenya conté caràcters invàlids. Els caràcters vàlids són: a-z, A-Z, 0-9 " -"i #*,.;:_-+!$%&/|?{[()]}= !" - -#: ../lib/modules/sambaAccount.inc:112 ../lib/modules/sambaAccount.inc:219 -#: ../lib/modules/sambaAccount.inc:330 ../lib/modules/sambaAccount.inc:333 -#: ../lib/modules/sambaAccount.inc:708 ../lib/modules/sambaSamAccount.inc:143 -#: ../lib/modules/sambaSamAccount.inc:146 -#: ../lib/modules/sambaSamAccount.inc:233 -#: ../lib/modules/sambaSamAccount.inc:687 -#: ../lib/modules/sambaSamAccount.inc:839 ../help/help.inc:190 -msgid "Password does not expire" -msgstr "La contrasenya no caduca" - -#: ../lib/modules/shadowAccount.inc:43 ../lib/modules/shadowAccount.inc:78 -#: ../lib/modules/shadowAccount.inc:143 ../lib/modules/shadowAccount.inc:169 -#: ../lib/modules/shadowAccount.inc:297 ../lib/modules/shadowAccount.inc:334 -msgid "Password expiration" -msgstr "Caducitat de contrasenyes" - -#: ../lib/modules/shadowAccount.inc:43 ../lib/modules/shadowAccount.inc:44 -msgid "Password expiration must be are natural number or -1." -msgstr "La caducitat de contrasenya ha de ser un numero natural o bé -1." - -#: ../help/help.inc:164 -msgid "Password expire" -msgstr "Caducitat de contrasenya" - -#: ../lib/modules/posixGroup.inc:241 ../lib/modules/posixGroup.inc:354 -#: ../lib/modules/posixAccount.inc:141 ../lib/modules/posixAccount.inc:295 -msgid "Password hash type" -msgstr "Tipo de hash de contrasenya" - -#: ../lib/modules/posixAccount.inc:157 -msgid "Password hash type for Unix accounts" -msgstr "Tipo de hash de contrasenya per comptes Unix" - -#: ../lib/modules/posixGroup.inc:255 -msgid "Password hash type for Unix groups" -msgstr "Tipo de hash de contrasenya per grups Unix" - -#: ../lib/modules/shadowAccount.inc:41 ../lib/modules/shadowAccount.inc:47 -msgid "Password maxage" -msgstr "Edat màxima de contrasenya." - -#: ../lib/modules/shadowAccount.inc:41 ../lib/modules/shadowAccount.inc:42 -msgid "Password maximum age must be are natural number." -msgstr "L'edat màxima de la contrasenya ha de ser un número natural." - -#: ../lib/modules/shadowAccount.inc:47 ../lib/modules/shadowAccount.inc:48 -msgid "Password maximum age must be bigger as password minimum age." -msgstr "L'edat màxima de la contrasenya ha de ser més gran que l'edat mínima." - -#: ../lib/modules/shadowAccount.inc:39 -msgid "Password minage" -msgstr "Edat mínima de la contrasenya" - -#: ../lib/modules/shadowAccount.inc:39 ../lib/modules/shadowAccount.inc:40 -msgid "Password minimum age must be are natural number." -msgstr "L'edat minima de la contrasenya ha de ser un numero natural." - -#: ../help/help.inc:162 -msgid "Password warn" -msgstr "Avís de caducitat de contrasenya" - -#: ../lib/modules/shadowAccount.inc:45 ../lib/modules/shadowAccount.inc:73 -#: ../lib/modules/shadowAccount.inc:139 ../lib/modules/shadowAccount.inc:163 -#: ../lib/modules/shadowAccount.inc:294 ../lib/modules/shadowAccount.inc:332 -msgid "Password warning" -msgstr "Avís de caducitat de contrasenya" - -#: ../lib/modules/shadowAccount.inc:45 ../lib/modules/shadowAccount.inc:46 -msgid "Password warning must be are natural number." -msgstr "L'avís de caducitat de contrasenya" - -#: ../templates/config/confsave.php:234 -msgid "Passwords are different!" -msgstr "Les contrasenyes són diferents!" - -#: ../lib/modules/sambaAccount.inc:355 ../lib/modules/sambaSamAccount.inc:168 -#: ../help/help.inc:204 -#, php-format -msgid "" -"Path of the user profile. Can be a local absolute path or a UNC-path (\\" -"\\server\\share). $%s and $%s are replaced with user- and groupname." -msgstr "Cami al perfil del usuari. Pot ser un path absolut o un path UNC (\\\\servidor\\recurs). %s i %s es substituiràn per l'usuari i el nom del grup." - -#: ../templates/config/confmain.php:375 ../lib/config.inc:342 -msgid "Path to external script" -msgstr "Cami al script extern" - -#: ../lib/modules/inetOrgPerson.inc:87 -msgid "Personal" -msgstr "Personal" - -#: ../templates/delete.php:80 -msgid "Please confirm:" -msgstr "Si us plau, confirmi:" - -#: ../lib/modules/sambaSamAccount.inc:60 -msgid "Please enter a RID number or the name of a special account!" -msgstr "Si us plau, entri un numero RID del nom del compte especial!" - -#: ../lib/modules/sambaAccount.inc:55 ../lib/modules/sambaAccount.inc:56 -#: ../lib/modules/sambaSamAccount.inc:53 ../lib/modules/sambaSamAccount.inc:54 -msgid "Please enter a comma separated list of host names!" -msgstr "Si us plau, entri una llista separada per comes de noms de màquines!" - -#: ../lib/modules/inetOrgPerson.inc:74 -msgid "Please enter a valid common name!" -msgstr "Si us plau, entri un nom vàlid!" - -#: ../lib/modules/sambaAccount.inc:69 ../lib/modules/sambaAccount.inc:70 -#: ../lib/modules/sambaSamAccount.inc:66 ../lib/modules/sambaSamAccount.inc:67 -msgid "Please enter a valid date in format DD-MM-YYYY." -msgstr "Si us plau, entri una data vàlida en el format DD-MM-YYYY." - -#: ../lib/modules/sambaAccount.inc:64 ../lib/modules/sambaSamAccount.inc:61 -msgid "Please enter a valid display name!" -msgstr "Si us plau, entri un nom a visualitzar vàlid!" - -#: ../lib/modules/sambaAccount.inc:71 ../lib/modules/sambaSamAccount.inc:68 -msgid "Please enter a valid drive letter." -msgstr "Si us plau, entri una lletra vàlida per la unitat de disc." - -#: ../lib/modules/inetOrgPerson.inc:62 ../lib/modules/inetOrgPerson.inc:63 -msgid "Please enter a valid eMail address!" -msgstr "Si us plau, entri una adreça vàlida de correu electrònic!" - -#: ../lib/modules/inetOrgPerson.inc:72 ../lib/modules/inetOrgPerson.inc:73 -msgid "Please enter a valid employee type!" -msgstr "Si us plau, entri un càrreg vàlid!" - -#: ../lib/modules/inetOrgPerson.inc:60 ../lib/modules/inetOrgPerson.inc:61 -msgid "Please enter a valid fax number!" -msgstr "Si us plau, entri un numero de fax vàlid!" - -#: ../lib/modules/sambaAccount.inc:72 -msgid "Please enter a valid group RID." -msgstr "Si us plau, entri un RID de grup vàlid." - -#: ../lib/modules/inetOrgPerson.inc:70 ../lib/modules/inetOrgPerson.inc:71 -msgid "Please enter a valid job title!" -msgstr "Si us plau, entri una descripcció vàlida per la profesió!" - -#: ../lib/modules/inetOrgPerson.inc:58 ../lib/modules/inetOrgPerson.inc:59 -msgid "Please enter a valid mobile number!" -msgstr "Si us plau, entri un numero vàlid de telèfon mobil!" - -#: ../lib/modules/inetOrgPerson.inc:66 ../lib/modules/inetOrgPerson.inc:67 -msgid "Please enter a valid postal address!" -msgstr "Si us plau, entri una adreça de correu ordinari vàlida!" - -#: ../lib/modules/inetOrgPerson.inc:68 ../lib/modules/inetOrgPerson.inc:69 -msgid "Please enter a valid postal code!" -msgstr "Si us plau, entri un codi postal vàlid!" - -#: ../lib/modules/sambaAccount.inc:73 -msgid "Please enter a valid special user name." -msgstr "Si us plau, entri un nom de usuari especial vàlid." - -#: ../lib/modules/inetOrgPerson.inc:64 ../lib/modules/inetOrgPerson.inc:65 -msgid "Please enter a valid street name!" -msgstr "Si us plau, introdueixi un nom de carrer vàlid!" - -#: ../lib/modules/inetOrgPerson.inc:56 ../lib/modules/inetOrgPerson.inc:57 -msgid "Please enter a valid telephone number!" -msgstr "Si us plau, entri un numero de telèfon vàlid!" - -#: ../lib/modules/posixGroup.inc:530 ../lib/modules/posixAccount.inc:653 -#, php-format -msgid "Please enter a value between %s and %s!" -msgstr "Si us plau, entri un valor entre %s i %s!" - -#: ../templates/config/conflogin.php:87 -msgid "Please enter password to change preferences:" -msgstr "Introdueixi contrasenya per canviar les preferències:" - -#: ../help/help.inc:47 -msgid "" -"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\"." -msgstr "Si us plau, introdueixi la contrasenya de configuració. No pas la contrasenya del seu compte en LDAP, si no la contrasenya que s'especifica en l'arxiu .conf. Si és la primera vegada que entra, escrigui \"lam\"." - -#: ../help/help.inc:121 -msgid "" -"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\"." -msgstr "" -"Si us plau, introdueixi la contrasenya metresde configuració. " -" No pas la contrasenya del seu compte en LDAP, si no la contrasenya que s'especifica en l'arxiu .conf. " -" Si és la primera vegada que entra, escrigui \"lam\"." - -#: ../help/help.inc:109 -msgid "" -"Please enter the name of the new profile and the password to change its " -"settings. Profile names may contain letters, numbers and -/_." -msgstr "Si us plau, entri el nom del nou perfil i la contrasenya per canviar la configuració. Els noms de perfil poden contenir lletres, numeros i -/_." - -#: ../help/help.inc:111 -msgid "" -"Please enter the new name of the profile. The name may contain letters, " -"numbers and -/_." -msgstr "Si us plau, entri el nou nom del perfil. El nom pot contenir lletres, " - -#: ../lib/modules/posixGroup.inc:397 ../lib/modules/sambaAccount.inc:59 -#: ../lib/modules/sambaSamAccount.inc:55 ../lib/modules/posixAccount.inc:71 -msgid "Please enter the same password in both password-fields." -msgstr "Si us plau, entreu la mateixa contrasenya en ambdós camps." - -#: ../templates/masscreate.php:120 -msgid "" -"Please provide a CSV formated file with your account data. The cells in the " -"first row must be filled with the column identifiers. The following rows " -"represent one account for each row." -msgstr "Proveiu un arxiu CVS amb les dades dels comptes. Les cel·les de la primera filera han de ser els identificadors de columna. Les fileres seguents representen un compte per cada filera." - -#: ../lib/status.inc:62 -msgid "" -"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." -msgstr "" -"Si us plau, envieu aquest error al Buq-Tracker, a {link=http://lam.sf.net}LDAP " -"Account Manager Development Team{endlink}. El numero de error és {bold}0001: Invàlid/Inexistent tipo de missatge.{endbold} Gràcies." - -#: ../lib/modules.inc:688 -msgid "Please select page:" -msgstr "Si us plau, sel·leccioneu pàgina:" - -#: ../templates/masscreate.php:89 -msgid "Please select your account type:" -msgstr "Si us plau, sel·leccioneu tipo de compte:" - -#: ../lib/modules.inc:728 -#, php-format -msgid "Please set up all required attributes on page: %s" -msgstr "Si us plau, sel·leccioneu tots els atributs que són obligatoris en la pàgina: %s" - -#: ../templates/config/profmanage.php:148 -msgid "Please set up your master configuration file (config/config.cfg) first!" -msgstr "Si us plau, primer configuri l'arxiu mestre de configuració (config/config.cfg)." - -#: ../templates/pdfedit/pdfpage.php:708 -msgid "Position" -msgstr "Posició" - -#: ../help/help.inc:222 -msgid "Position in ldap-tree where the group should be created." -msgstr "Posició dins l'arbre LDAP on s'ha d'afegir el grup" - -#: ../help/help.inc:224 -msgid "Position in ldap-tree where the host should be created." -msgstr "Posició dins l'arbre LDAP on s'ha d'afegir la màquina." - -#: ../help/help.inc:220 -msgid "Position in ldap-tree where the user should be created." -msgstr "Posició dins l'arbre LDAP on s'ha d'afegir l'usuari." - -#: ../templates/masscreate.php:158 ../templates/masscreate.php:294 -#: ../lib/modules/sambaGroupMapping.inc:342 -msgid "Possible values" -msgstr "Valors possibles" - -#: ../lib/modules/inetOrgPerson.inc:66 ../lib/modules/inetOrgPerson.inc:165 -#: ../lib/modules/inetOrgPerson.inc:243 ../lib/modules/inetOrgPerson.inc:429 -#: ../lib/modules/inetOrgPerson.inc:469 -msgid "Postal address" -msgstr "Adreça postal" - -#: ../lib/modules/inetOrgPerson.inc:244 -msgid "Postal address, city" -msgstr "Adreça postal, ciutat" - -#: ../lib/modules/inetOrgPerson.inc:68 ../lib/modules/inetOrgPerson.inc:159 -#: ../lib/modules/inetOrgPerson.inc:239 ../lib/modules/inetOrgPerson.inc:240 -#: ../lib/modules/inetOrgPerson.inc:425 ../lib/modules/inetOrgPerson.inc:468 -msgid "Postal code" -msgstr "Codi postal" - -#: ../help/help.inc:71 -msgid "Predefined values" -msgstr "Valors predefinits" - -#: ../lib/modules/inetOrgPerson.inc:143 -msgid "President" -msgstr "President" - -#: ../lib/modules/posixGroup.inc:115 ../lib/modules/posixAccount.inc:181 -#: ../lib/modules/posixAccount.inc:248 ../lib/modules/posixAccount.inc:312 -#: ../lib/modules/posixAccount.inc:344 ../lib/modules/posixAccount.inc:825 -#: ../lib/modules/posixAccount.inc:921 ../lib/modules/posixAccount.inc:949 -#: ../lib/modules/posixAccount.inc:965 ../help/help.inc:146 -#: ../help/help.inc:158 -msgid "Primary group" -msgstr "Grup primari" - -#: ../templates/config/profmanage.php:106 -msgid "Profile deleted." -msgstr "Perfil esborrat." - -#: ../templates/tools.php:53 -msgid "Profile editor" -msgstr "Editor de perfils" - -#: ../templates/config/profmanage.php:50 -#: ../templates/config/profmanage.php:161 ../help/help.inc:108 -#: ../help/help.inc:110 ../help/help.inc:112 ../help/help.inc:114 -#: ../help/help.inc:116 ../help/help.inc:118 ../help/help.inc:120 -msgid "Profile management" -msgstr "Administrador de perfils" - -#: ../templates/config/profmanage.php:176 -#: ../templates/config/profmanage.php:223 -#: ../templates/profedit/profilepage.php:126 ../help/help.inc:127 -msgid "Profile name" -msgstr "Nom del perfil" - -#: ../templates/config/profmanage.php:90 -#: ../templates/config/profmanage.php:101 -msgid "Profile name is invalid!" -msgstr "El nom del perfil és invàlid!" - -#: ../templates/config/profmanage.php:187 -#: ../templates/config/profmanage.php:277 -msgid "Profile password" -msgstr "Contrasenya del perfil" - -#: ../templates/config/profmanage.php:88 -#: ../templates/config/profmanage.php:118 -msgid "Profile passwords are different or empty!" -msgstr "Les contrasenyes dels perfils són invàlids ó en blanc!" - -#: ../lib/modules/sambaAccount.inc:49 ../lib/modules/sambaAccount.inc:50 -#: ../lib/modules/sambaAccount.inc:138 ../lib/modules/sambaAccount.inc:261 -#: ../lib/modules/sambaAccount.inc:354 ../lib/modules/sambaAccount.inc:742 -#: ../lib/modules/sambaAccount.inc:847 ../lib/modules/sambaSamAccount.inc:47 -#: ../lib/modules/sambaSamAccount.inc:48 -#: ../lib/modules/sambaSamAccount.inc:167 -#: ../lib/modules/sambaSamAccount.inc:275 -#: ../lib/modules/sambaSamAccount.inc:721 -#: ../lib/modules/sambaSamAccount.inc:865 -#: ../lib/modules/sambaSamAccount.inc:919 ../help/help.inc:203 -msgid "Profile path" -msgstr "Camí als perfils" - -#: ../lib/modules/sambaAccount.inc:49 ../lib/modules/sambaSamAccount.inc:47 -#: ../lib/modules/sambaSamAccount.inc:49 -msgid "Profile path is invalid!" -msgstr "El camí als perfils és invàlid!" - -#: ../templates/profedit/profilecreate.php:112 -msgid "Profile was saved." -msgstr "S'ha gravat el perfil." - -#: ../lib/modules/quota.inc:48 -msgid "Quota" -msgstr "Quota" - -#: ../templates/masscreate.php:154 ../help/help.inc:125 -msgid "RDN identifier" -msgstr "Identificador RDN" - -#: ../lib/lists.inc:215 -msgid "RID (Windows UID)" -msgstr "RID (UID de Windows)" - -#: ../templates/config/confmain.php:405 -msgid "Reenter Password" -msgstr "Torni a entrar la contrasenya" - -#: ../templates/config/profmanage.php:354 -msgid "Reenter new master password" -msgstr "Torni a entrar la contrasenya mestre" - -#: ../templates/config/profmanage.php:196 -#: ../templates/config/profmanage.php:288 -msgid "Reenter profile password" -msgstr "Torni a entrar la contrasenya de perfils" - -#: ../lib/lists.inc:95 -msgid "Refresh" -msgstr "Refrescar" - -#: ../templates/pdfedit/pdfpage.php:581 ../lib/modules/ieee802device.inc:144 -msgid "Remove" -msgstr "Eliminar" - -#: ../templates/config/profmanage.php:219 ../help/help.inc:110 -msgid "Rename profile" -msgstr "Renombrar perfil" - -#: ../templates/config/profmanage.php:97 -msgid "Renamed profile." -msgstr "Perfil renombrat." - -#: ../lib/modules/posixGroup.inc:142 ../lib/modules/sambaAccount.inc:693 -#: ../lib/modules/sambaSamAccount.inc:672 ../lib/modules/posixAccount.inc:847 -msgid "Repeat password" -msgstr "Repeteixi contrasenya" - -#: ../lib/modules/posixAccount.inc:65 ../lib/modules/posixAccount.inc:711 -msgid "Replaced $user or $group in homedir." -msgstr "S'ha reemplaçat $usuari o $grup en homedir." - -#: ../templates/domain.php:187 ../templates/config/confmain.php:420 -#: ../templates/profedit/profilepage.php:138 -msgid "Reset" -msgstr "Reset" - -#: ../lib/modules.inc:705 -msgid "Reset changes" -msgstr "Canvis resetejats" - -#: ../lib/modules/sambaAccount.inc:789 ../lib/modules/sambaSamAccount.inc:770 -msgid "Reset password" -msgstr "Resetejar contrasnya" - -#: ../lib/modules/sambaAccount.inc:93 -msgid "Samba 2" -msgstr "Samba 2" - -#: ../lib/modules/sambaSamAccount.inc:89 -#: ../lib/modules/sambaGroupMapping.inc:218 -msgid "Samba 3" -msgstr "Samba 3" - -#: ../templates/domain.php:244 -msgid "Samba 3 domain SID is invalid!" -msgstr "El SID del domini de Samba3 és invàlid!" - -#: ../templates/tools.php:61 -msgid "Samba 3 domains" -msgstr "Dominis de Samba3" - -#: ../templates/ou_edit.php:405 -msgid "Samba Hosts" -msgstr "Màquines de Samba" - -#: ../lib/modules/sambaSamAccount.inc:181 -#: ../lib/modules/sambaSamAccount.inc:300 -#: ../lib/modules/sambaSamAccount.inc:323 -msgid "Samba RID" -msgstr "RID de Samba" - -#: ../lib/modules/sambaGroupMapping.inc:251 -#: ../lib/modules/sambaGroupMapping.inc:275 -msgid "Samba RID number" -msgstr "Numero RID de Samba" - -#: ../lib/modules/sambaGroupMapping.inc:245 -msgid "Samba display name" -msgstr "Nom a visualitzar de Samba" - -#: ../lib/modules/sambaGroupMapping.inc:237 -msgid "Samba domain name" -msgstr "Nom de domini de Samba" - -#: ../lib/modules/sambaGroupMapping.inc:257 -#: ../lib/modules/sambaGroupMapping.inc:283 -#: ../lib/modules/sambaGroupMapping.inc:300 -msgid "Samba group type" -msgstr "Tipo de grup de Samba" - -#: ../lib/modules/sambaAccount.inc:315 ../lib/modules/sambaAccount.inc:691 -#: ../lib/modules/sambaSamAccount.inc:128 -#: ../lib/modules/sambaSamAccount.inc:670 -msgid "Samba password" -msgstr "Contrasenya de Samba" - -#: ../lib/modules/sambaAccount.inc:55 ../lib/modules/sambaAccount.inc:150 -#: ../lib/modules/sambaAccount.inc:273 ../lib/modules/sambaAccount.inc:362 -#: ../lib/modules/sambaAccount.inc:748 ../lib/modules/sambaAccount.inc:848 -#: ../lib/modules/sambaSamAccount.inc:53 -#: ../lib/modules/sambaSamAccount.inc:175 -#: ../lib/modules/sambaSamAccount.inc:287 -#: ../lib/modules/sambaSamAccount.inc:727 -#: ../lib/modules/sambaSamAccount.inc:877 -#: ../lib/modules/sambaSamAccount.inc:920 ../help/help.inc:206 -msgid "Samba workstations" -msgstr "Estacions de treball de Samba" - -#: ../lib/pdf.inc:455 -msgid "Samba-Host information page" -msgstr "pàgina d'Informació de la màquina de samba" - -#: ../templates/pdfedit/pdfpage.php:831 -#: ../templates/profedit/profilepage.php:136 -msgid "Save" -msgstr "Gravar" - -#: ../lib/modules.inc:614 ../lib/modules.inc:617 ../lib/modules.inc:618 -#: ../lib/modules.inc:752 ../lib/modules.inc:757 ../help/help.inc:213 -msgid "Save profile" -msgstr "Gravar perfil" - -#: ../templates/config/confsave.php:171 -msgid "Saving group modules failed!" -msgstr "Hi ha hagut un fallo al gravar els mòduls de grup!" - -#: ../templates/config/confsave.php:177 -msgid "Saving host modules failed!" -msgstr "Hi ha hagut un fallo al gravar els mòduls de màquina!" - -#: ../templates/config/confsave.php:165 -msgid "Saving user modules failed!" -msgstr "Hi ha hagut un fallo al gravar els mòduls de usuari!" - -#: ../templates/pdfedit/pdfdelete.php:56 ../templates/pdfedit/pdfdelete.php:59 -#: ../templates/pdfedit/pdfdelete.php:78 -msgid "Scope" -msgstr "Scope" - -#: ../lib/modules/sambaSamAccount.inc:50 ../lib/modules/sambaSamAccount.inc:51 -#: ../help/help.inc:90 ../help/help.inc:200 -msgid "Script path" -msgstr "Camí al script" - -#: ../templates/config/confsave.php:153 ../lib/modules/sambaSamAccount.inc:50 -msgid "Script path is invalid!" -msgstr "El camí al script és invàlid!" - -#: ../help/help.inc:95 -msgid "Script server" -msgstr "Servidor de scripts" - -#: ../templates/config/confsave.php:159 -msgid "Script server is invalid!" -msgstr "El servidor de scripts és invàlid!" - -#: ../templates/config/confmain.php:366 -msgid "Script settings" -msgstr "Configuració de Scripts" - -#: ../templates/pdfedit/pdfpage.php:740 -msgid "Section" -msgstr "Secció" - -#: ../templates/config/confmain.php:386 -msgid "Security settings" -msgstr "Configuració de seguretat" - -#: ../templates/lists/listhosts.php:179 ../templates/lists/listgroups.php:179 -#: ../templates/lists/listdomains.php:114 ../templates/lists/listusers.php:217 -msgid "See README.openldap.txt to solve this problem." -msgstr "Llegui README.openldap.txt per tal de sol·lucionar aquest problema." - -#: ../templates/help.php:112 -msgid "See also" -msgstr "Vegeu també" - -#: ../templates/lists/listhosts.php:257 ../templates/lists/listgroups.php:274 -#: ../templates/lists/listusers.php:308 -msgid "Select all" -msgstr "Sel·leccionar tot" - -#: ../help/help.inc:215 -msgid "Select group profile" -msgstr "Sel·leccionar perfil de grup" - -#: ../templates/config/confmodules.php:291 -msgid "Selected group modules" -msgstr "Mòduls de grup sel·leccionats" - -#: ../lib/modules/posixAccount.inc:894 -msgid "Selected groups" -msgstr "Grups sel·leccionats" - -#: ../templates/config/confmodules.php:394 -msgid "Selected host modules" -msgstr "Mòduls de màquines sel·leccionats" - -#: ../templates/config/confmodules.php:188 -msgid "Selected user modules" -msgstr "Mòduls de usuari sel·leccionats" - -#: ../lib/modules/posixGroup.inc:194 -msgid "Selected users" -msgstr "Usuaris sel·leccionats" - -#: ../templates/config/confsave.php:91 -msgid "Server Address is empty!" -msgstr "L'adreça del servidor està en blanc!" - -#: ../templates/config/confmain.php:158 ../lib/config.inc:331 -#: ../help/help.inc:48 -msgid "Server address" -msgstr "Adreça del servidor" - -#: ../templates/config/confmain.php:370 ../lib/config.inc:343 -msgid "Server of external script" -msgstr "Servidor d'script extern" - -#: ../templates/config/confmain.php:155 -msgid "Server settings" -msgstr "Configuració de servidor" - -#: ../lib/modules/posixGroup.inc:145 ../lib/modules/posixAccount.inc:850 -#: ../lib/modules/posixAccount.inc:938 -msgid "Set no password" -msgstr "Deixar sense contrasenya" - -#: ../templates/config/profmanage.php:273 ../help/help.inc:114 -msgid "Set profile password" -msgstr "Establir contrasenya del perfil" - -#: ../lib/modules/posixGroup.inc:342 -msgid "Sets the group password." -msgstr "Estableix la contrasenya del grup." - -#: ../lib/modules/shadowAccount.inc:62 -msgid "Shadow" -msgstr "Shadow" - -#: ../templates/massBuildAccounts.php:196 -msgid "Show LDIF file" -msgstr "Mostrar arxiu LDIF" - -#: ../templates/pdfedit/pdfpage.php:455 -msgid "Size" -msgstr "Tamany" - -#: ../lib/modules/quota.inc:400 -msgid "Soft block" -msgstr "Soft block" - -#: ../lib/modules/quota.inc:72 ../lib/modules/quota.inc:293 -#: ../lib/modules/quota.inc:350 -msgid "Soft block limit" -msgstr "Limit de soft block" - -#: ../lib/modules/quota.inc:73 -msgid "Soft block limit." -msgstr "Limit de soft block." - -#: ../lib/modules/quota.inc:400 -msgid "Soft inode" -msgstr "Inode soft" - -#: ../lib/modules/quota.inc:89 -msgid "Soft inode (files) limit." -msgstr "Limit de inodes soft." - -#: ../lib/modules/quota.inc:88 ../lib/modules/quota.inc:297 -#: ../lib/modules/quota.inc:352 -msgid "Soft inode limit" -msgstr "Limit de inodes soft." - -#: ../lib/modules.inc:727 -msgid "Some required information is missing" -msgstr "Falta alguna informació que és requerida." - -#: ../templates/help.php:144 -#, php-format -msgid "" -"Sorry this help id ({bold}%s{endbold}) is not available for this module " -"({bold}%s{endbold})." -msgstr "Perdoneu, pero aquesta ajuda ({bold}%s{endbold}) no està disponible per aquest mòdul ({bold}%s{endbold})." - -#: ../templates/help.php:157 -#, php-format -msgid "Sorry this help number ({bold}%d{endbold}) is not available." -msgstr "Perdoneu, pero aquest numero de ajuda ({bold}%d{endbold}) no està disponible." - -#: ../lib/modules/sambaGroupMapping.inc:340 -msgid "Special Group" -msgstr "Grup especial" - -#: ../lib/modules/sambaAccount.inc:62 ../lib/modules/sambaAccount.inc:63 -#: ../lib/modules/sambaAccount.inc:286 ../lib/modules/sambaAccount.inc:371 -#: ../lib/modules/sambaAccount.inc:780 ../lib/modules/sambaSamAccount.inc:58 -#: ../lib/modules/sambaSamAccount.inc:59 -#: ../lib/modules/sambaSamAccount.inc:761 -msgid "Special user" -msgstr "Usuari especial" - -#: ../templates/pdfedit/pdfpage.php:645 ../templates/pdfedit/pdfpage.php:651 -#: ../templates/pdfedit/pdfpage.php:777 -msgid "Static text" -msgstr "Texte estàtic" - -#: ../lib/modules/inetOrgPerson.inc:124 -msgid "Steve" -msgstr "Steve" - -#: ../lib/modules/sambaAccount.inc:193 ../lib/modules/sambaSamAccount.inc:207 -#: ../lib/modules/inetOrgPerson.inc:117 -msgid "Steve Miller" -msgstr "Steve Miller" - -#: ../lib/modules/posixAccount.inc:225 -msgid "Steve Miller,Room 2.14,123-123-1234,123-123-1234" -msgstr "Steve Miller,Room 2.14,123-123-1234,123-123-1234" - -#: ../lib/modules/inetOrgPerson.inc:64 ../lib/modules/inetOrgPerson.inc:153 -#: ../lib/modules/inetOrgPerson.inc:235 ../lib/modules/inetOrgPerson.inc:236 -#: ../lib/modules/inetOrgPerson.inc:421 ../lib/modules/inetOrgPerson.inc:467 -msgid "Street" -msgstr "Carrer" - -#: ../templates/pdfedit/pdfpage.php:805 -msgid "Structure name" -msgstr "Nom de l'estructura" - -#: ../templates/ou_edit.php:94 ../templates/ou_edit.php:159 -#: ../templates/ou_edit.php:224 ../templates/ou_edit.php:289 -#: ../templates/ou_edit.php:470 ../templates/domain.php:186 -#: ../templates/config/profmanage.php:373 -#: ../templates/config/confmodules.php:496 -#: ../templates/config/confmain.php:418 ../templates/pdfedit/pdfdelete.php:81 -#: ../templates/pdfedit/pdfpage.php:797 ../templates/pdfedit/pdfmain.php:143 -#: ../templates/profedit/profiledelete.php:85 -#: ../templates/profedit/profiledelete.php:97 -#: ../templates/profedit/profiledelete.php:109 -#: ../templates/profedit/profilemain.php:261 -msgid "Submit" -msgstr "Enviar" - -#: ../templates/pdfedit/pdfpage.php:445 ../templates/pdfedit/pdfpage.php:490 -msgid "Submit page settings" -msgstr "Enviar configuració de pàgina" - -#: ../templates/lists/listhosts.php:278 ../templates/lists/listgroups.php:294 -#: ../templates/lists/listdomains.php:200 ../templates/lists/listusers.php:328 -#: ../templates/domain.php:159 ../lib/modules.inc:740 ../help/help.inc:219 -#: ../help/help.inc:221 ../help/help.inc:223 ../help/help.inc:242 -msgid "Suffix" -msgstr "Sufixe" - -#: ../lib/modules/inetOrgPerson.inc:56 ../lib/modules/inetOrgPerson.inc:171 -#: ../lib/modules/inetOrgPerson.inc:247 ../lib/modules/inetOrgPerson.inc:248 -#: ../lib/modules/inetOrgPerson.inc:433 ../lib/modules/inetOrgPerson.inc:470 -msgid "Telephone number" -msgstr "Numero de telèfon" - -#: ../lib/modules/inetOrgPerson.inc:149 -msgid "Temp" -msgstr "Temp" - -#: ../lib/modules/inetOrgPerson.inc:137 -msgid "Temp, contract until december" -msgstr "Temporal, contracte fins desembre" - -#: ../help/help.inc:104 -msgid "Text for user PDF" -msgstr "Texte pel PDF del usuari" - -#: ../lib/modules/posixAccount.inc:313 ../help/help.inc:147 -msgid "The Primary Group the user should be member of." -msgstr "Grup primari al que ha de pertànyer el usuari." - -#: ../lib/modules/posixAccount.inc:345 ../help/help.inc:159 -msgid "The Primary group the host should be member of." -msgstr "El grup primari al que ha de pertànyer la màquina." - -#: ../help/help.inc:245 -msgid "The SID of your Samba server. Get it with \"net getlocalsid\"." -msgstr "El SID del seu servidor Samba. Obtingui'l mitjançant \"net getlocalsid\"." - -#: ../lib/modules/posixAccount.inc:63 -msgid "" -"The UID ranges for users and hosts overlap! This is a problem because LAM " -"uses the highest UID in use + 1 for new accounts. Please set the minimum UID " -"to equal values or use independent ranges." -msgstr "Els rangs de UID de usuaris i màquines es solapen! Això és un problema, ja que LAM utilitza el UID més alt lliure +1 per crear nous comptes. Si us plau, Posi el UID minim a valors iguals o utilitzi rangs independents." - -#: ../help/help.inc:243 -msgid "The domain entry will be saved under this suffix." -msgstr "El domini es gravarà sota aquest sufix." - -#: ../lib/modules/shadowAccount.inc:49 -msgid "The expiration date is invalid." -msgstr "La data d'expiració és invàlida." - -#: ../templates/config/confsave.php:246 -msgid "The following settings were saved to profile:" -msgstr "Els següents paràmetres de configuració s'han gravat al perfil:" - -#: ../templates/initsuff.php:184 -msgid "The following suffix(es) are missing in LDAP. LAM can create them for you." -msgstr "Els següents sufixes no existeixen en LDAP. LAM els pot donar d'alta per vosté." - -#: ../lib/modules/sambaSamAccount.inc:70 -msgid "The format of the logon hours field is invalid!" -msgstr "El format de les hores vàlides per iniciar sessió és invàlid!" - -#: ../templates/pdfedit/pdfpage.php:73 -msgid "The headline for a new section must contain at least one character." -msgstr "La capçalera per una nova secció ha de contenir al menys un caràcter." - -#: ../templates/pdfedit/pdfpage.php:61 -msgid "" -"The name for that PDF-structure you submitted is not valid. A valid name " -"must constist at least of one of the following characters 'a-z','A-Z','0-" -"9','_','-','.'." -msgstr "" -"El nom que ha especificat per aquesta estructura de PDF és invàlid. Un nom vàlid consisteix de al menys un d'aquests caràcters: 'a-z','A-Z','0-" -"9','_','-','.'. " - -#: ../help/help.inc:241 -msgid "The name of your Windows domain or workgroup." -msgstr "El nom del seu domini o grup de treball de Windows." - -#: ../help/help.inc:130 -msgid "The new account will be saved under this LDAP suffix." -msgstr "El nou compte es gravarà sota aquest sufixe." - -#: ../templates/config/confmain.php:109 -msgid "The password is invalid! Please try again." -msgstr "La contrasenya és invàlida!. Proveu de nou." - -#: ../templates/pdfedit/pdfpage.php:77 -msgid "The static text must contain at least one character." -msgstr "El texte estàtic ha de contenir al menys un caràcter." - -#: ../lib/modules/posixGroup.inc:115 -msgid "There are still users who have this group as their primary group." -msgstr "Encara queden usuaris amb aquest grup com a grup primari." - -#: ../lib/modules/sambaAccount.inc:62 ../lib/modules/sambaSamAccount.inc:58 -msgid "There can be only one administrator per domain." -msgstr "Només hi pot haver un administrador per domini." - -#: ../lib/modules/sambaGroupMapping.inc:340 -#, php-format -msgid "There can be only one group %s." -msgstr "Només hi pot haver un grup %s." - -#: ../lib/modules/sambaAccount.inc:63 ../lib/modules/sambaSamAccount.inc:59 -msgid "There can be only one guest per domain." -msgstr "Només hi pot haver un invitat per domini." - -#: ../templates/massDoUpload.php:119 -msgid "There were errors while uploading:" -msgstr "S'han produït errors en la transferència:" - -#: ../lib/modules/posixGroup.inc:351 -msgid "" -"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." -msgstr "Aquests numeros són el UID màxims i mínims a utilitzar a l'hora de crear nous comptes. Els nous comptes de grup sel's hi asigna el UID més alt en ús +1." - -#: ../lib/modules/posixAccount.inc:292 -msgid "" -"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." -msgstr "Aquests són els numeros màxims i mínims de ID de màquina per utilitzar a l'hora de crear comptes de màquines de Samba. Per anar bé, els rangs haurien de ser diferents al dels usuaris. Els nous comptes sel's hi asigna el UID més alt en ús +1." - -#: ../lib/modules/posixAccount.inc:288 -msgid "" -"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." -msgstr "Aquests són els números màxim i mínim de ID de usuari per crear nous comptes de usuari. El rang hauria de ser diferent al del de les màquines. Els nous comptes de usuari sel's hi asigna el UID més gran en ús +1." - -#: ../lib/modules/posixAccount.inc:85 -msgid "This GID number is invalid! Please provide either a number or a group name." -msgstr "Aquest GID és invàlid!. Si us plau, proveieu o bé un numero o un nom de grup." - -#: ../templates/domain.php:247 -msgid "This Samba 3 domain is already present!" -msgstr "Aquest domini de Samba3 ja existeix!" - -#: ../help/help.inc:115 -msgid "This changes the password of the selected profile." -msgstr "Això canviarà la contrasenya del perfil sel·leccionat." - -#: ../help/help.inc:117 -msgid "This changes the profile which is selected by default at login." -msgstr "Això canvia el perfil que està sel·leccionat per defecte al iniciar sessió." - -#: ../templates/massBuildAccounts.php:148 -msgid "This column is defined to include unique entries but duplicates were found:" -msgstr "Aquesta columna suposadament conté entrades úniques, pero s'han trovat duplicats:" - -#: ../help/help.inc:89 -msgid "" -"This defines the language of the login window and sets this language as the " -"default language. Users can change the language at login." -msgstr "Això defineix el idioma de la finestra de Inici de sessió i extableix aquest idioma com a l'idioma per defecte. Els usuaris poden canviar el idioma a l'inici de sessió." - -#: ../lib/pdf.inc:511 -msgid "This document was automatically created by LDAP Account Manager" -msgstr "Aquest document ha estat creat automàticament per LDAP Account Manager" - -#: ../lib/modules/posixAccount.inc:86 -msgid "This gecos value is invalid!" -msgstr "El valor gecos és invàlid!" - -#: ../lib/modules/ieee802device.inc:61 -msgid "This is a comma separated list of MAC addresses." -msgstr "Això és una llista separada per comes d'adreçes MAC." - -#: ../help/help.inc:82 -msgid "" -"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." -msgstr "Això és una llista de entrades DN de tots els usuaris que tenen permesa l'entrada en l'LDAP Account Manager. Els noms d'usuaris han d'estar separats per comes." - -#: ../templates/masscreate.php:209 -msgid "" -"This is an example how it would look in your spreadsheet program before you " -"convert to CSV:" -msgstr "Això és un exemple de com apareixeria la seva fulla de càcul abans de convertir-la a CSV:" - -#: ../lib/modules/sambaGroupMapping.inc:342 -msgid "This is not a valid Samba 3 group type!" -msgstr "Això no és un tipo de grup vàlid per Samba3!" - -#: ../lib/modules/ieee802device.inc:57 -msgid "" -"This is the MAC address of the network card of the device (e.g. 00:01:02:DE:" -"EF:18)." -msgstr "Això és l'adreça MAC del dispositiu de xarxa (p.ex: 00:01:02:DE:EF:18)" - -#: ../lib/modules/sambaAccount.inc:369 -msgid "This is the RID of the user's primary Windows group." -msgstr "Això és l'RID del grup primari del usuari de Windows." - -#: ../lib/modules/sambaSamAccount.inc:179 -msgid "This is the SID of the user's primary Windows group." -msgstr "Això és l'SID del grup primari del usuari de Windows." - -#: ../help/help.inc:91 -msgid "" -"This is the absolute path to an external script for setting quotas and " -"creating home directories." -msgstr "Camí absolut a un script extern que estableixi quotes i crei els directoris dels usuaris" - -#: ../lib/modules/sambaAccount.inc:316 ../lib/modules/sambaSamAccount.inc:129 -msgid "This is the account's Windows password." -msgstr "Contrasenya de Windows del compte." - -#: ../lib/modules/sambaAccount.inc:313 ../lib/modules/sambaSamAccount.inc:126 -msgid "This is the account's full name on Windows systems." -msgstr "Nom complert del usuari de Windows del compte." - -#: ../lib/modules/sambaGroupMapping.inc:268 -msgid "This is the group name which will be shown in Windows." -msgstr "Nom del grup del usuari que apareixerà sota Windows." - -#: ../help/help.inc:126 -msgid "" -"This is the identifier for the relative DN value. It must be one of the " -"given allowed LDAP attributes (e.g. user accounts usually use \"uid\" while " -"groups use \"cn\")." -msgstr "Identificador per el DN relatiu. Ha de ser un dels atributs LDAP permesos (p.ex: comptes de usuari normalment utilitzen \"uid\"mentres que els grups utilitzen \"cn\")." - -#: ../help/help.inc:67 -msgid "" -"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." -msgstr "Això és una llista d'atributs a mostrar en la llista de usuaris/grups/màquines. Les entrades poden ser o bé valors predefinits, \"#atribut\", o valors individuals, \"atribut:descripcció\".Es poden separar varies entrades amb comes." - -#: ../help/help.inc:87 -msgid "" -"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." -msgstr "Això és el numero de registres a mostrar en la llista de usuaris/grups/màquines. Si es troven més de que s'especifica, el llistat es dividirà en pàgines." - -#: ../lib/modules/sambaGroupMapping.inc:276 -msgid "" -"This is the relative ID (similar to UID on Unix) for Windows accounts. If " -"you leave this empty LAM will calculate the RID from the UID. This can be " -"either a number or the name of a special group:" -msgstr "Això és el ID relatiu (similar al UDI en Unix) per comptes Windows. Si es deixa en blanc, LAM el calcularà a partir del UID. Es pot posar un numero o bé el nom d'un grup especial:" - -#: ../lib/modules/sambaSamAccount.inc:182 -#, php-format -msgid "" -"This is the relative ID number for your Windows account. You can either " -"enter a number or one of these special accounts: %s. If you leave this empty " -"LAM will use: uidNumber*2 + sambaAlgorithmicRidBase." -msgstr "Això és el UID relatiu pel seu compte Windows. Pot entrar o bé un numero o un dels següents comptes especials: %s. Si ho deixa en blanc, LAM utilitzarà: uidNumber*2+sambaAlgorithmicRidBase." - -#: ../help/help.inc:49 -msgid "" -"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." -msgstr "Això és l'adreça del seu servidor LDAP. Utilitzi ldap:// per conexions ldap estàndard, i ldaps:// per conexions encriptades (requereix certificats de servidor). El valor del port és opcional." - -#: ../help/help.inc:96 -msgid "" -"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." -msgstr "Això és el servidor on es guarda el script ldapdaemon. LDAP Acount Manager hi entrarà per SSH amb el usuari/contrasenya que s'ha donat al inici de sessió." - -#: ../help/help.inc:61 -msgid "" -"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." -msgstr "Això és el sufix del arbre LDAP a partir d'on han de començar les búsquedes de usuaris/grups/màquines. Només entrades de dins aquest subarbre seràn mostrades en la llista de usuaris/grups/màquines. Quan es crein nous comptes, es gravaràn dins aquest DN." - -#: ../help/help.inc:103 -msgid "" -"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." -msgstr "Temps, en minuts, durant el qual LAM manté en caché le seves búsquedes LDAP. Temps menors faràn treballar més el servidor ldap, i temps majors poden provocar que es passin canvis per alt." - -#: ../lib/modules/posixAccount.inc:87 -msgid "This login shell is invalid!" -msgstr "El shell de inici de sessió és invàlid!" - -#: ../lib/modules/sambaSamAccount.inc:189 -msgid "" -"This option defines the allowed logon hours for this account. The format is " -"the same as for the LDAP attribute. The 24*7 hours are represented as 168 " -"bit which are saved as 21 hex (21*8 = 168) values. The first bit represents " -"Sunday 0:00 - 0:59 in GMT." -msgstr "Aquesta opció defineix les hores en que se li permet iniciar sessió a aquest compte. El format és el mateix que en l'atribut LDAP. Les hores 24*7 són representades com 168 bits, que es graven com 21h (21*8=168). El 1r bit representa Diumenge, 0:00-0:59 GMT." - -#: ../help/help.inc:105 -msgid "This text will appear on top of every user PDF file." -msgstr "Aquest texte apareixerà a la capçalera del PDF del usuari." - -#: ../templates/tools.php:84 -msgid "This tool allows you to customize the PDF pages." -msgstr "Aquesta eina li permetrà parametritzar els PDFs." - -#: ../templates/lists/userlink.php:63 -msgid "This user was not found!" -msgstr "No s'ha trovat l'usuari!" - -#: ../lib/modules/sambaAccount.inc:65 ../lib/modules/sambaAccount.inc:66 -#: ../lib/modules/sambaAccount.inc:67 ../lib/modules/sambaAccount.inc:68 -#: ../lib/modules/sambaSamAccount.inc:62 ../lib/modules/sambaSamAccount.inc:63 -#: ../lib/modules/sambaSamAccount.inc:64 ../lib/modules/sambaSamAccount.inc:65 -msgid "This value can only be \\\"true\\\" or \\\"false\\\"!" -msgstr "Aquest valor només pot ser \\\"true\\\" o \\\"false\\\"!" - -#: ../lib/modules/posixAccount.inc:88 -msgid "This value can only be \\\"true\\\" or \\\"false\\\"." -msgstr "Aquest valor només pot ser \\\"true\\\" o \\\"false\\\"." - -#: ../lib/modules/posixGroup.inc:412 -msgid "This value must be a list of user names separated by semicolons." -msgstr "Això ha de ser una llista de usuaris separats per comes." - -#: ../help/help.inc:237 -msgid "This will create a new organizational unit under the selected one." -msgstr "Això crearà una nova unitat organitzativa dins la OU sel·leccionada." - -#: ../help/help.inc:239 -msgid "This will delete the selected organizational unit. The OU has to be empty." -msgstr "Això esborrarà la unitat organitzativa sel·leccionada. La OU ha d'estar buida." - -#: ../help/help.inc:113 -msgid "This will delete the selected profile." -msgstr "Això esborrarà el perfil seleccionat." - -#: ../help/help.inc:214 -msgid "" -"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 -_." -msgstr "Això crearà un perfil del usuari actual. Els valors que es gravaràn són els mateixos que el l'editor de perfils. Els noms de perfil poden contenir les lletres a-z, 0-9 i -_." - -#: ../lib/modules/posixAccount.inc:327 ../help/help.inc:145 -msgid "" -"To disable login use /bin/false. List of shells is read from lam/config/" -"shells" -msgstr "Per deshabilitar l'inici de sessió utilitzi /bin/false. La llista de shells es treu de lam/config/shells." - -#: ../templates/main_header.php:56 -msgid "Tools" -msgstr "Eines" - -#: ../templates/pdfedit/pdfpage.php:513 -msgid "Top" -msgstr "A dalt" - -#: ../templates/lists/listusers.php:342 -msgid "Translate GID number to group name" -msgstr "Traduir GID a nom de grup" - -#: ../lib/modules/posixAccount.inc:75 -msgid "UID" -msgstr "UID" - -#: ../lib/modules/posixAccount.inc:75 -msgid "UID has changed. Do you want to change home directory?" -msgstr "L'UID ha canviat. Vol canviar el directori del usuari?" - -#: ../lib/modules/posixAccount.inc:70 -msgid "" -"UID must be a number. It has to be inside the UID range which is defined in " -"your configuration profile." -msgstr "El UID ha de ser un numero. Ha d'estar dins el rang de UIDs que està definit dins la configuració del perfil." - -#: ../lib/modules/posixAccount.inc:46 ../lib/modules/posixAccount.inc:175 -#: ../lib/modules/posixAccount.inc:242 ../lib/modules/posixAccount.inc:287 -#: ../lib/modules/posixAccount.inc:291 ../lib/modules/posixAccount.inc:299 -#: ../lib/modules/posixAccount.inc:817 ../lib/modules/posixAccount.inc:962 -#: ../lib/lists.inc:178 ../lib/lists.inc:217 ../help/help.inc:136 -#: ../help/help.inc:156 -msgid "UID number" -msgstr "UID" - -#: ../lib/modules/posixAccount.inc:46 -#, php-format -msgid "" -"UID number has changed. To keep file ownership you have to run the following " -"command as root: 'find / -uid %s -exec chown %s {} \\;'" -msgstr "El UID ha canviat. Per mantenir els propietaris dels arxius, ha d'executar la següent comanda com a root: 'find / -uid %s -exec chown %s {} \\;'" - -#: ../lib/modules/posixAccount.inc:63 ../lib/modules/posixAccount.inc:151 -msgid "UID ranges for Unix accounts" -msgstr "Rangs UID per comptes Unix." - -#: ../lib/modules/sambaAccount.inc:351 ../lib/modules/sambaSamAccount.inc:164 -#: ../help/help.inc:209 -#, php-format -msgid "" -"UNC-path (\\\\server\\share) of homedirectory. $%s and $%s are replaced with " -"user- and groupname." -msgstr "Camí UNC (\\\\servidor\\recurs) del directori del usuari. $%s i $%s són substituits per nom de usuari i nom del grup." - -#: ../templates/ou_edit.php:55 ../templates/ou_edit.php:120 -#: ../templates/ou_edit.php:185 ../templates/ou_edit.php:250 -msgid "Unable to create new OU!" -msgstr "No s'ha pogut crear la nova OU!" - -#: ../templates/config/profmanage.php:86 -msgid "Unable to create new profile!" -msgstr "No s'ha pogut crear el nou perfil!" - -#: ../templates/ou_edit.php:72 ../templates/ou_edit.php:137 -#: ../templates/ou_edit.php:202 ../templates/ou_edit.php:267 -msgid "Unable to delete OU!" -msgstr "No s'ha pogut esborrar la OU!" - -#: ../templates/pdfedit/pdfdelete.php:56 -msgid "Unable to delete PDF structure!" -msgstr "No s'ha pogut esborrar la estructura de PDF!" - -#: ../templates/domain.php:314 -msgid "Unable to delete domain!" -msgstr "No s'ha pogut esborrar el domini! " - -#: ../templates/config/profmanage.php:108 -#: ../templates/profedit/profiledelete.php:60 -msgid "Unable to delete profile!" -msgstr "No s'ha pogut esborrar el perfil!" - -#: ../lib/modules/posixAccount.inc:1260 -msgid "Unable to find group in LDAP." -msgstr "No s'ha pogut trovar el grup dins LDAP." - -#: ../templates/login.php:100 ../templates/config/confmain.php:355 -msgid "" -"Unable to load available languages. Setting English as default language. For " -"further instructions please contact the Admin of this site." -msgstr "No s'han pogut trovar els idiomes disponibles. Establint English com a idioma per defecte. Per més instruccions, si us plau, contacteu amb l'administrador del sistema." - -#: ../lib/profiles.inc:91 ../lib/profiles.inc:95 -msgid "Unable to load profile!" -msgstr "No s'ha pogut carregar el pefil!" - -#: ../templates/profedit/profilecreate.php:114 -msgid "Unable to save profile!" -msgstr "No s'ha pogut gravar el perfil!" - -#: ../lib/modules/posixGroup.inc:226 ../lib/modules/posixAccount.inc:114 -msgid "Unix" -msgstr "Unix" - -#: ../lib/modules/inetOrgPerson.inc:51 ../lib/modules/inetOrgPerson.inc:400 -#: ../lib/modules/inetOrgPerson.inc:462 ../help/help.inc:227 -msgid "Unix workstations" -msgstr "Estacions de treball Unix" - -#: ../lib/modules/inetOrgPerson.inc:51 -msgid "Unix workstations is invalid." -msgstr "Estacioins de treball Unix no són vàlides." - -#: ../templates/config/confmodules.php:245 -#: ../templates/config/confmodules.php:348 -#: ../templates/config/confmodules.php:451 -msgid "Unsolved dependency:" -msgstr "Dependència no resolta:" - -#: ../templates/pdfedit/pdfpage.php:581 -msgid "Up" -msgstr "Amunt" - -#: ../templates/massBuildAccounts.php:193 -msgid "Upload accounts to LDAP" -msgstr "Enviar comptes al LDAP" - -#: ../templates/masscreate.php:128 -msgid "Upload file and create accounts" -msgstr "Enviar arxiu i crear comptes" - -#: ../lib/modules.inc:472 -#, php-format -msgid "Upload was stopped after errors in %s module!" -msgstr "L'enviament s'ha interrumput després de produïr-se errors en el mòdul %s!" - -#: ../lib/modules/sambaAccount.inc:100 ../lib/modules/sambaAccount.inc:203 -#: ../lib/modules/sambaAccount.inc:318 ../lib/modules/sambaAccount.inc:321 -#: ../lib/modules/sambaSamAccount.inc:131 -#: ../lib/modules/sambaSamAccount.inc:134 -#: ../lib/modules/sambaSamAccount.inc:217 -msgid "Use Unix password" -msgstr "Utilitzar contrasenya de Unix" - -#: ../templates/pdfedit/pdfpage.php:442 ../templates/pdfedit/pdfpage.php:487 -#: ../templates/pdfedit/pdfpage.php:501 ../templates/pdfedit/pdfpage.php:519 -#: ../templates/pdfedit/pdfpage.php:530 ../templates/pdfedit/pdfpage.php:541 -#: ../templates/pdfedit/pdfpage.php:552 -msgid "Use default" -msgstr "Utilitzar el que ve per defecte" - -#: ../help/help.inc:93 ../help/help.inc:98 -msgid "" -"Use it at your own risk and read the documentation for lamdaemon before you " -"use it!" -msgstr "Utilitzi lamdaemon sota la seva responsabilitat, i llegeixi la documentació abans d'utilitzar-lo!" - -#: ../lib/modules/posixGroup.inc:345 ../lib/modules/sambaAccount.inc:106 -#: ../lib/modules/sambaAccount.inc:211 ../lib/modules/sambaAccount.inc:324 -#: ../lib/modules/sambaAccount.inc:327 ../lib/modules/sambaAccount.inc:703 -#: ../lib/modules/sambaSamAccount.inc:137 -#: ../lib/modules/sambaSamAccount.inc:140 -#: ../lib/modules/sambaSamAccount.inc:225 -#: ../lib/modules/sambaSamAccount.inc:682 -#: ../lib/modules/sambaSamAccount.inc:833 ../lib/modules/posixAccount.inc:321 -#: ../help/help.inc:186 -msgid "Use no password" -msgstr "No fer servir cap contrasenya" - -#: ../lib/modules/sambaAccount.inc:697 ../lib/modules/sambaSamAccount.inc:676 -#: ../lib/modules/sambaSamAccount.inc:827 ../help/help.inc:188 -msgid "Use unix password" -msgstr "Utilitzar la contrasenya de Unix" - -#: ../lib/modules/quota.inc:68 ../lib/modules/quota.inc:292 -msgid "Used blocks" -msgstr "Blocs utilitzats" - -#: ../lib/modules/quota.inc:69 -msgid "Used blocks. 1000 blocks are usually 1MB" -msgstr "Blocs utilitzats. 1000 blocs són normalment un Mega." - -#: ../help/help.inc:253 -msgid "Used for calculating RIDs from UID/GID. Do not change if unsure." -msgstr "S'utilitza per calcular RIDs a partir dels UID/GID. No ho canvïi si no n'està segur." - -#: ../lib/modules/quota.inc:84 ../lib/modules/quota.inc:296 -msgid "Used inodes" -msgstr "Inodes utilitzats" - -#: ../lib/modules/quota.inc:85 -msgid "Used inodes (files)" -msgstr "Inodes utilitzats(arxius)" - -#: ../lib/modules/sambaGroupMapping.inc:51 -msgid "User" -msgstr "Usuari" - -#: ../lib/lists.inc:177 -msgid "User ID" -msgstr "ID d'usuari" - -#: ../lib/modules/sambaAccount.inc:235 ../lib/modules/sambaAccount.inc:342 -#: ../lib/modules/sambaAccount.inc:719 ../lib/modules/sambaSamAccount.inc:155 -#: ../lib/modules/sambaSamAccount.inc:249 -#: ../lib/modules/sambaSamAccount.inc:698 ../help/help.inc:192 -msgid "User can change password" -msgstr "Usuari pot canviar la contrasenya" - -#: ../lib/modules/posixAccount.inc:309 ../lib/modules/inetOrgPerson.inc:216 -#: ../help/help.inc:143 -msgid "User description. If left empty sur- and give name will be used." -msgstr "Descripcció del usuari. Si es deixa en blanc, s'utilitzarà l'apellido i el nom de pila." - -#: ../lib/pdf.inc:449 -msgid "User information page" -msgstr "Pàgina d'informació del usuari" - -#: ../templates/initsuff.php:152 ../templates/initsuff.php:159 -#: ../templates/initsuff.php:167 -msgid "User list" -msgstr "Llista d'usuaris" - -#: ../templates/config/confsave.php:126 -msgid "User list attributes are invalid!" -msgstr "Llista d'atributs del usuari invàlida!" - -#: ../templates/config/confmodules.php:181 -#: ../templates/config/confmain.php:219 ../lib/config.inc:345 -msgid "User modules" -msgstr "Mòduls d'usuari" - -#: ../lib/modules/sambaAccount.inc:242 ../lib/modules/sambaAccount.inc:344 -#: ../lib/modules/sambaAccount.inc:727 ../lib/modules/sambaSamAccount.inc:157 -#: ../lib/modules/sambaSamAccount.inc:256 -#: ../lib/modules/sambaSamAccount.inc:706 ../help/help.inc:194 -msgid "User must change password" -msgstr "Usuari ha de canviar contrasenya" - -#: ../lib/modules/account.inc:64 ../lib/modules/posixAccount.inc:167 -msgid "User name" -msgstr "Nom del usuari" - -#: ../templates/profedit/profilemain.php:132 -msgid "User profiles" -msgstr "Perfils d'usuri" - -#: ../lib/modules/quota.inc:400 -msgid "User quota" -msgstr "Quota d'usuari" - -#: ../help/help.inc:60 -msgid "User/Group/Host suffix" -msgstr "Sufixe de Usuaris/Grups/Màquines" - -#: ../templates/config/confmain.php:170 ../lib/config.inc:333 -msgid "UserSuffix" -msgstr "UserSuffix" - -#: ../templates/config/confsave.php:106 -msgid "UserSuffix is invalid!" -msgstr "UserSuffix és invàlid!" - -#: ../templates/login.php:157 ../lib/modules/sambaAccount.inc:843 -#: ../lib/modules/sambaSamAccount.inc:915 ../lib/modules/posixAccount.inc:76 -#: ../lib/modules/posixAccount.inc:77 ../lib/modules/posixAccount.inc:80 -#: ../lib/modules/posixAccount.inc:304 ../lib/modules/posixAccount.inc:814 -#: ../lib/modules/posixAccount.inc:961 ../lib/lists.inc:180 -#: ../help/help.inc:134 -msgid "Username" -msgstr "Nom d'usuari" - -#: ../lib/modules/posixAccount.inc:77 ../lib/modules/posixAccount.inc:82 -msgid "" -"Username contains invalid characters. Valid characters are: a-z, A-Z, 0-9 " -"and .-_ !" -msgstr "Nom d'usuari conté caràcters invàlids. Els caràcters vàlids són: a-z, A-Z, 0-9 i .-_!" - -#: ../lib/modules/posixAccount.inc:80 -msgid "Username in use. Selected next free username." -msgstr "El nom d'usuari està en ús. S'ha agafat el pròxim lliure." - -#: ../lib/modules/posixAccount.inc:305 ../help/help.inc:135 -msgid "" -"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." -msgstr "Nom del usuari que s'ha de crear. Caracters vàlids són: a-z, 0-9, .-_. Lam no permet un numero com a primer caràcter perquè useradd tampoc ho permet. Lam no permet majúscules perquè poden causar diversos problemes. Si el nom d'usuari especificat ja existeix, el nom d'usuari s'expandirà amb un numero (el pròxim lliure). Ull: Els sistemes antics poden tenir problemes amb usuaris amb més de 8 caracters. No podrà entrar a Windows si el nom d'usuari és de més de 16 caracters." - -#: ../templates/ou_edit.php:339 ../templates/main_header.php:74 -#: ../lib/modules/posixAccount.inc:57 ../lib/modules/posixAccount.inc:58 -#: ../lib/modules/posixAccount.inc:61 ../lib/modules/posixAccount.inc:123 -#: ../help/help.inc:73 -msgid "Users" -msgstr "Usuaris" - -#: ../help/help.inc:232 -msgid "Users also being member of the current group." -msgstr "Usuaris que també són membres del grup actual." - -#: ../lib/modules/posixGroup.inc:334 -msgid "Users who are member of the current group." -msgstr "Usuaris que són membres del grup actual." - -#: ../lib/modules/posixGroup.inc:338 -msgid "" -"Users who will become member of the current group. User names are separated " -"by semicolons." -msgstr "Usuaris que esdevindràn membres del grup actual. Els noms d'usuari s'han de separar mitjançant comes." - -#: ../help/help.inc:173 -msgid "Users wich are also members of group." -msgstr "Usuaris que també són membres del grup." - -#: ../help/help.inc:81 -msgid "Valid users" -msgstr "Usuaris vàlids" - -#: ../templates/delete.php:184 ../lib/modules.inc:1406 -#, php-format -msgid "Was unable to add attribtues to DN: %s." -msgstr "No s'han pogut afegir atributs al DN: %s." - -#: ../lib/modules.inc:1371 ../lib/modules.inc:1380 -#, php-format -msgid "Was unable to create DN: %s." -msgstr "No s'ha pogut crear el DN: %s." - -#: ../lib/modules.inc:1364 -#, php-format -msgid "Was unable to delete DN: %s." -msgstr "No s'ha pogut esborrar el DN: %s." - -#: ../templates/delete.php:174 ../lib/modules.inc:1396 -#, php-format -msgid "Was unable to modify attribtues from DN: %s." -msgstr "No s'han pogut modificar els atributs del DN: %s." - -#: ../templates/delete.php:194 ../templates/delete.php:218 -#: ../lib/modules.inc:1416 -#, php-format -msgid "Was unable to remove attribtues from DN: %s." -msgstr "No s'han pogut esborrar atributs del DN: %s." - -#: ../help/help.inc:59 -msgid "" -"When using ldaps:// be sure to use exactly the same IP/domain name as in " -"your certificate!" -msgstr "Quan utilitzi ldaps://, aseguri's d'utilitzar el mateix nom de domini ó IP que el que consta en el seu certificat!" - -#: ../templates/pdfedit/pdfpage.php:460 -msgid "Width" -msgstr "Amplada" - -#: ../help/help.inc:175 -msgid "Windows clients will show display name as group description." -msgstr "Els clients de windows mostraràn el nom com la descripcció del grup." - -#: ../help/help.inc:217 -msgid "Windows domain" -msgstr "Domini de Windows" - -#: ../lib/modules/sambaAccount.inc:375 ../lib/modules/sambaSamAccount.inc:186 -msgid "Windows domain name of account." -msgstr "Nom del domini de windows del compte." - -#: ../help/help.inc:218 -msgid "Windows domain of host." -msgstr "Nom del domini de windows de la màquina." - -#: ../lib/modules/sambaAccount.inc:279 ../lib/modules/sambaAccount.inc:763 -#: ../lib/modules/sambaSamAccount.inc:293 -#: ../lib/modules/sambaSamAccount.inc:742 -#: ../lib/modules/sambaSamAccount.inc:923 -#: ../lib/modules/sambaGroupMapping.inc:174 -#: ../lib/modules/sambaGroupMapping.inc:298 -msgid "Windows group" -msgstr "Grup de Windows" - -#: ../lib/modules/sambaAccount.inc:368 -msgid "Windows group RID" -msgstr "RID del grup de Windows" - -#: ../lib/modules/sambaAccount.inc:365 ../help/help.inc:225 -msgid "Windows group name" -msgstr "Nom del grup de Windows" - -#: ../lib/modules/sambaGroupMapping.inc:284 -msgid "Windows group type." -msgstr "Tipo de grup de Windows." - -#: ../lib/modules/sambaGroupMapping.inc:271 -msgid "Windows groupname" -msgstr "Nom del grup de windows." - -#: ../lib/modules/sambaSamAccount.inc:178 -msgid "Windows primary group SID" -msgstr "SID del grup primari de Windows" - -#: ../lib/modules/sambaGroupMapping.inc:280 -msgid "Windows-Domain name of group." -msgstr "Nom del grup dins Windows" - -#: ../help/help.inc:230 -msgid "Windows-Domain of group." -msgstr "Grup del domini de windows." - -#: ../help/help.inc:212 -msgid "Windows-Domain of user." -msgstr "Domini de windows del usuari." - -#: ../templates/login.php:331 -msgid "Wrong Password/Username combination. Try again." -msgstr "Combinació Usuari/Contrasenya incorrecte. Provi de nou." - -#: ../templates/pdfedit/pdfdelete.php:89 -#: ../templates/profedit/profiledelete.php:118 -msgid "Wrong or missing type!" -msgstr "Tipo invàlid o incorrecte!" - -#: ../lib/modules.inc:618 -msgid "Wrong profilename given." -msgstr "Nom de perfil donat incorrecte." - -#: ../lib/modules/posixGroup.inc:408 ../lib/modules/posixAccount.inc:76 -#: ../lib/modules/posixAccount.inc:78 -msgid "" -"You are using a capital letters. This can cause problems because windows " -"isn't case-sensitive." -msgstr "Està utilitzant majúscules. Això pot causar problemes perquè windows no diferencia majúscules de minúscules." - -#: ../help/help.inc:177 -msgid "" -"You can select a previous defined profile here. This will set all fields to " -"the profile values." -msgstr "Por seleccionar un perfil predefinit aquí. Això posarà tots els camps als valors que hi ha en el perfill." - -#: ../lib/modules/posixGroup.inc:399 ../lib/modules/posixAccount.inc:73 -msgid "You cannot use this password options at the same time." -msgstr "No pot utilitzar aquestes opcions de contrasenya simultàneament." - -#: ../templates/logout.php:70 -msgid "You have been logged off from LDAP Account Manager." -msgstr "Ha estat desonectat de LDAP Account Manager." - -#: ../templates/login.php:201 -msgid "Your Language" -msgstr "El seu Idioma" - -#: ../lib/modules/sambaAccount.inc:257 ../lib/modules/sambaSamAccount.inc:271 -msgid "\\\\server\\homes\\smiller" -msgstr "\\\\server\\homes\\smiller" - -#: ../lib/modules/sambaAccount.inc:263 ../lib/modules/sambaSamAccount.inc:277 -msgid "\\\\server\\profiles\\smiller" -msgstr "\\\\server\\profiles\\smiller" - -#: ../lib/modules/posixGroup.inc:289 -msgid "adminstrators" -msgstr "administradors" - -#: ../templates/config/confmodules.php:194 -#: ../templates/config/confmodules.php:222 -#: ../templates/config/confmodules.php:297 -#: ../templates/config/confmodules.php:325 -#: ../templates/config/confmodules.php:400 -#: ../templates/config/confmodules.php:428 -msgid "base module" -msgstr "mòdul base" - -#: ../lib/modules/inetOrgPerson.inc:62 ../lib/modules/inetOrgPerson.inc:189 -#: ../lib/modules/inetOrgPerson.inc:259 ../lib/modules/inetOrgPerson.inc:260 -#: ../lib/modules/inetOrgPerson.inc:445 ../lib/modules/inetOrgPerson.inc:473 -msgid "eMail address" -msgstr "Adreça de correu electrònic" - -#: ../lib/modules/posixAccount.inc:190 -msgid "group01,group02" -msgstr "group01,group02" - -#: ../lib/modules/quota.inc:120 ../lib/modules/quota.inc:122 -#: ../lib/modules/quota.inc:189 ../lib/modules/quota.inc:191 -msgid "hours" -msgstr "hores" - -#: ../help/help.inc:53 -msgid "" -"ldap://localhost:389 connects to localhost using a standard LDAP connection " -"on port 389" -msgstr "ldap://locahost:389 conecta amb la mateixa màquina mitjançant una conexió ldap estàndard al port 389." - -#: ../help/help.inc:55 -msgid "" -"ldaps://141.40.146.133 connects to 141.40.146.133 using an encrypted LDAP " -"connection." -msgstr "ldaps://141.40.146.133 conecta a 141.40.146.133 utilitzant una conexió encriptada." - -#: ../lib/modules/posixAccount.inc:250 -msgid "machines" -msgstr "màquines" - -#: ../lib/modules/sambaAccount.inc:295 ../lib/modules/sambaAccount.inc:305 -#: ../lib/modules/sambaSamAccount.inc:201 -#: ../lib/modules/sambaSamAccount.inc:319 -msgid "mydomain" -msgstr "mydomain" - -#: ../help/help.inc:65 -msgid "" -"ou=People,dc=yourcompany,dc=com will read and store all accounts in this " -"subtree." -msgstr "ou=People,dc=Empresa,dc=com guardarà tots els seus comptes en aquest subarbre." - -#: ../lib/modules/posixAccount.inc:236 -msgid "pc01$" -msgstr "pc01$" - -#: ../lib/modules/posixAccount.inc:257 -msgid "pc01,Room 2.34" -msgstr "pc01, Room 2.34" - -#: ../templates/config/confmain.php:431 -msgid "required" -msgstr "obligatori" - -#: ../templates/config/confmain.php:433 -msgid "required for Samba 3 accounts" -msgstr "obligatori per comptes de Samba3" - -#: ../templates/config/confmain.php:432 -msgid "required for Samba accounts" -msgstr "obligatori per comptes de Samba" - -#: ../templates/pdfedit/pdfpage.php:546 -msgid "right" -msgstr "dreta" - -#: ../lib/modules/posixGroup.inc:315 ../lib/modules/sambaAccount.inc:199 -#: ../lib/modules/sambaSamAccount.inc:213 ../lib/modules/posixAccount.inc:211 -msgid "secret" -msgstr "secret" - -#: ../lib/modules/posixAccount.inc:169 -msgid "smiller" -msgstr "smiller" - -#: ../lib/modules/posixGroup.inc:309 -msgid "user01,user02,user03" -msgstr "user01,user02,user03" - -#: ../lib/modules/inetOrgPerson.inc:191 -msgid "user@company.com" -msgstr "usuari@empresa.com" - -#: ../lib/modules/posixAccount.inc:183 -msgid "users" -msgstr "usuaris" - diff --git a/lam/locale/de_DE/LC_MESSAGES/messages.mo b/lam/locale/de_DE/LC_MESSAGES/messages.mo deleted file mode 100644 index c433895a3382041ebf00946e3533f7698b7b58d1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 92134 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 diff --git a/lam/locale/de_DE/LC_MESSAGES/messages.po b/lam/locale/de_DE/LC_MESSAGES/messages.po deleted file mode 100644 index 069d381e..00000000 --- a/lam/locale/de_DE/LC_MESSAGES/messages.po +++ /dev/null @@ -1,4873 +0,0 @@ -# translation of messages.po to Deutsch -# $Id: messages.po,v 1.31 2004/10/01 12:29:15 gruberroland Exp $ -# -# -# LDAP Account Manager -# Roland Gruber , 2004, 2005. -# -msgid "" -msgstr "" -"Project-Id-Version: messages\n" -"Report-Msgid-Bugs-To: post@rolandgruber.de \n" -"POT-Creation-Date: 2004-01-14 17:45+0200\n" -"PO-Revision-Date: 2005-06-17 11:40+0200\n" -"Last-Translator: Roland Gruber \n" -"Language-Team: Deutsch \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: KBabel 1.9.1\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -#: ../lib/modules/posixAccount.inc:334 -msgid "$user and $group are replaced with user name or primary group name." -msgstr "$user und $group werden durch Benutzer- und Gruppenname ersetzt." - -#: ../templates/lists/listdomains.php:145 -#: ../templates/lists/listdomains.php:195 -#, php-format -msgid "%s Samba domain(s) found" -msgstr "%s Samba-Domäne(n) gefunden" - -#: ../templates/lists/listgroups.php:148 ../templates/lists/listgroups.php:224 -#, php-format -msgid "%s group(s) found" -msgstr "%s Gruppe(n) gefunden" - -#: ../templates/lists/listhosts.php:148 ../templates/lists/listhosts.php:208 -#, php-format -msgid "%s host(s) found" -msgstr "%s Host(s) gefunden" - -#: ../templates/lists/listusers.php:179 ../templates/lists/listusers.php:254 -#, php-format -msgid "%s user(s) found" -msgstr "%s Benutzer gefunden" - -#: ../templates/tree/templates/creation/custom.php:63 -msgid "(example: cn=MyNewPerson)" -msgstr "(z.B. cn=NeuerAccount)" - -#: ../templates/tree/templates/creation/new_ou_template.php:60 -msgid "(hint: do not include \"ou=\")" -msgstr "(Tipp: ohne \"ou=\")" - -#: ../templates/tree/add_attr_form.php:135 -msgid "(no new attributes available for this entry)" -msgstr "(keine neuen Attribute verfügbar)" - -#: ../templates/tree/add_attr_form.php:173 -msgid "(no new binary attributes available for this entry)" -msgstr "(keine neuen binären Attribute verfügbar)" - -#: ../lib/modules/posixAccount.inc:201 -msgid "/home/smiller" -msgstr "/home/hmueller" - -#: ../templates/massBuildAccounts.php:113 -msgid "A required column is missing in your CSV file." -msgstr "In der CSV-Datei fehlt eine benötigte Spalte." - -#: ../lib/modules/kolabUser.inc:131 -msgid "" -"A user may define who is allowed to act on behalf of herself. This property " -"is checked when using the Kolab smtp daemon (Postfix) to send emails." -msgstr "Benutzer können erlauben, dass andere in ihrem Namen handeln. Diese Option wird geprüft wenn über Kolab emails versendet werden." - -#: ../templates/ou_edit.php:95 ../templates/ou_edit.php:160 -#: ../templates/ou_edit.php:225 ../templates/ou_edit.php:290 -#: ../templates/config/confmodules.php:104 -#: ../templates/config/confmain.php:485 ../templates/pdfedit/pdfdelete.php:82 -#: ../templates/pdfedit/pdfpage.php:834 ../templates/pdfedit/pdfmain.php:144 -#: ../templates/profedit/profiledelete.php:85 -#: ../templates/profedit/profilepage.php:164 -#: ../templates/profedit/profilemain.php:157 -msgid "Abort" -msgstr "Abbrechen" - -#: ../lib/modules/account.inc:35 -msgid "Account" -msgstr "Account" - -#: ../templates/massBuildAccounts.php:166 ../lib/modules/ieee802device.inc:84 -#: ../lib/modules/posixGroup.inc:470 ../lib/modules/posixGroup.inc:474 -#: ../lib/modules/posixGroup.inc:475 ../lib/modules/sambaAccount.inc:48 -#: ../lib/modules/sambaAccount.inc:51 ../lib/modules/sambaAccount.inc:54 -#: ../lib/modules/sambaAccount.inc:56 ../lib/modules/sambaAccount.inc:58 -#: ../lib/modules/sambaAccount.inc:61 ../lib/modules/sambaAccount.inc:64 -#: ../lib/modules/sambaAccount.inc:65 ../lib/modules/sambaAccount.inc:66 -#: ../lib/modules/sambaAccount.inc:67 ../lib/modules/sambaAccount.inc:68 -#: ../lib/modules/sambaAccount.inc:69 ../lib/modules/sambaAccount.inc:70 -#: ../lib/modules/sambaAccount.inc:71 ../lib/modules/sambaAccount.inc:72 -#: ../lib/modules/sambaAccount.inc:73 ../lib/modules/sambaSamAccount.inc:46 -#: ../lib/modules/sambaSamAccount.inc:49 ../lib/modules/sambaSamAccount.inc:52 -#: ../lib/modules/sambaSamAccount.inc:54 ../lib/modules/sambaSamAccount.inc:57 -#: ../lib/modules/sambaSamAccount.inc:60 ../lib/modules/sambaSamAccount.inc:61 -#: ../lib/modules/sambaSamAccount.inc:62 ../lib/modules/sambaSamAccount.inc:63 -#: ../lib/modules/sambaSamAccount.inc:64 ../lib/modules/sambaSamAccount.inc:65 -#: ../lib/modules/sambaSamAccount.inc:66 ../lib/modules/sambaSamAccount.inc:67 -#: ../lib/modules/sambaSamAccount.inc:68 ../lib/modules/sambaSamAccount.inc:69 -#: ../lib/modules/sambaSamAccount.inc:70 ../lib/modules/sambaSamAccount.inc:71 -#: ../lib/modules/sambaSamAccount.inc:72 ../lib/modules/posixAccount.inc:66 -#: ../lib/modules/posixAccount.inc:70 ../lib/modules/posixAccount.inc:74 -#: ../lib/modules/posixAccount.inc:82 ../lib/modules/posixAccount.inc:83 -#: ../lib/modules/posixAccount.inc:84 ../lib/modules/posixAccount.inc:85 -#: ../lib/modules/posixAccount.inc:86 ../lib/modules/posixAccount.inc:87 -#: ../lib/modules/posixAccount.inc:88 ../lib/modules/posixAccount.inc:89 -#: ../lib/modules/posixAccount.inc:90 ../lib/modules/kolabUser.inc:223 -#: ../lib/modules/kolabUser.inc:225 ../lib/modules/kolabUser.inc:227 -#: ../lib/modules/kolabUser.inc:229 ../lib/modules/kolabUser.inc:231 -#: ../lib/modules/kolabUser.inc:233 ../lib/modules/kolabUser.inc:235 -#: ../lib/modules/sambaGroupMapping.inc:352 -#: ../lib/modules/sambaGroupMapping.inc:353 -#: ../lib/modules/shadowAccount.inc:40 ../lib/modules/shadowAccount.inc:42 -#: ../lib/modules/shadowAccount.inc:44 ../lib/modules/shadowAccount.inc:46 -#: ../lib/modules/shadowAccount.inc:48 ../lib/modules/shadowAccount.inc:49 -#: ../lib/modules/inetOrgPerson.inc:52 ../lib/modules/inetOrgPerson.inc:54 -#: ../lib/modules/inetOrgPerson.inc:56 ../lib/modules/inetOrgPerson.inc:58 -#: ../lib/modules/inetOrgPerson.inc:60 ../lib/modules/inetOrgPerson.inc:62 -#: ../lib/modules/inetOrgPerson.inc:64 ../lib/modules/inetOrgPerson.inc:66 -#: ../lib/modules/inetOrgPerson.inc:68 ../lib/modules/inetOrgPerson.inc:70 -#: ../lib/modules/inetOrgPerson.inc:72 ../lib/modules/inetOrgPerson.inc:74 -#: ../lib/modules/inetOrgPerson.inc:75 -#: ../lib/modules/inetLocalMailRecipient.inc:120 -#: ../lib/modules/inetLocalMailRecipient.inc:122 -#: ../lib/modules/inetLocalMailRecipient.inc:124 -#: ../lib/modules/nisMailAlias.inc:99 ../lib/modules/nisMailAlias.inc:101 -#, php-format -msgid "Account %s:" -msgstr "Account %s:" - -#: ../templates/masscreate.php:78 -msgid "Account creation via file upload" -msgstr "Erstellung von Accounts mittels Dateiupload" - -#: ../lib/modules/posixAccount.inc:345 -msgid "Account deactivated" -msgstr "Account deaktiviert" - -#: ../lib/modules/shadowAccount.inc:163 -msgid "Account expiration date. Format: DD-MM-YYYY" -msgstr "Account-Ablaufdatum im Format: TT-MM-JJJJ" - -#: ../lib/modules/shadowAccount.inc:340 -msgid "Account inactive" -msgstr "Account ist deaktiviert" - -#: ../lib/modules/sambaAccount.inc:116 ../lib/modules/sambaAccount.inc:234 -#: ../lib/modules/sambaAccount.inc:343 ../lib/modules/sambaAccount.inc:346 -#: ../lib/modules/sambaAccount.inc:704 ../lib/modules/sambaSamAccount.inc:158 -#: ../lib/modules/sambaSamAccount.inc:161 -#: ../lib/modules/sambaSamAccount.inc:250 -#: ../lib/modules/sambaSamAccount.inc:690 -#: ../lib/modules/sambaSamAccount.inc:843 -msgid "Account is deactivated" -msgstr "Account deaktiviert" - -#: ../help/help.inc:129 -msgid "Account lists - Filters" -msgstr "Accountlisten - Filter" - -#: ../templates/config/confmain.php:252 ../help/help.inc:111 -msgid "Account modules" -msgstr "Accountmodule" - -#: ../templates/delete.php:85 -msgid "Account name:" -msgstr "Accountname:" - -#: ../lib/modules.inc:941 -msgid "Account was created successfully." -msgstr "Account wurde erfolgreich erstellt." - -#: ../lib/modules.inc:944 -msgid "Account was modified successfully." -msgstr "Account wurde erfolgreich geändert." - -#: ../templates/tree/add_value_form.php:156 -#: ../templates/tree/add_value_form.php:181 -#: ../templates/tree/add_oclass_form.php:137 -#: ../templates/tree/add_attr_form.php:129 -#: ../templates/tree/add_attr_form.php:161 -#: ../templates/pdfedit/pdfpage.php:725 ../lib/modules/ieee802device.inc:153 -#: ../lib/modules/kolabUser.inc:363 ../lib/modules/kolabUser.inc:380 -#: ../lib/modules/kolabUser.inc:406 -#: ../lib/modules/inetLocalMailRecipient.inc:215 -#: ../lib/modules/nisMailAlias.inc:181 -msgid "Add" -msgstr "Hinzufügen" - -#: ../templates/pdfedit/pdfpage.php:713 -msgid "Add after" -msgstr "Hinzufügen nach" - -#: ../templates/tree/edit.php:126 ../templates/tree/add_value_form.php:94 -#: ../templates/tree/add_attr_form.php:71 -#: ../templates/tree/add_attr_form.php:108 -#, php-format -msgid "Add new attribute" -msgstr "Neues Attribut hinzufügen" - -#: ../templates/tree/add_attr_form.php:141 -msgid "Add new binary attribute" -msgstr "Neues Binärattribut hinzufügen" - -#: ../templates/config/profmanage.php:172 ../help/help.inc:113 -msgid "Add profile" -msgstr "Neues Profil" - -#: ../templates/pdfedit/pdfpage.php:699 -msgid "Add section or static text" -msgstr "Abschnitt oder statischen Text hinzufügen" - -#: ../templates/tree/add_value.php:93 -msgid "Adding attribute failed!" -msgstr "Das Hinzufügen des Attributs ist fehlgeschlagen!" - -#: ../lib/modules/posixAccount.inc:193 ../lib/modules/posixAccount.inc:312 -#: ../lib/modules/posixAccount.inc:353 ../lib/modules/posixAccount.inc:877 -#: ../lib/modules/posixAccount.inc:965 ../lib/modules/posixAccount.inc:1029 -#: ../lib/modules/posixAccount.inc:1106 -msgid "Additional groups" -msgstr "Zusätzliche Gruppen" - -#: ../templates/massDoUpload.php:98 -msgid "Additional tasks for module:" -msgstr "Zusätzliche Aufgaben des Moduls:" - -#: ../lib/modules/sambaSamAccount.inc:545 -#: ../lib/modules/sambaSamAccount.inc:748 -#: ../lib/modules/sambaSamAccount.inc:751 -msgid "Administrator" -msgstr "Administrator" - -#: ../lib/modules/posixGroup.inc:366 -msgid "Administrators group" -msgstr "Administratoren" - -#: ../templates/domain.php:171 ../help/help.inc:162 -msgid "Algorithmic RID Base" -msgstr "RID-Basisnummer" - -#: ../templates/domain.php:287 -msgid "Algorithmic RID base is not a number!" -msgstr "RID-Basisnummer ist keine Zahl!" - -#: ../lib/modules/nisMailAlias.inc:60 ../lib/modules/nisMailAlias.inc:75 -#: ../lib/modules/nisMailAlias.inc:166 ../lib/modules/nisMailAlias.inc:305 -msgid "Alias name" -msgstr "Alias" - -#: ../templates/schema/schema.php:232 -msgid "Aliases" -msgstr "Aliase" - -#: ../templates/initsuff.php:155 -msgid "All changes were successful." -msgstr "Alle Änderungen waren erfolgreich." - -#: ../lib/lists.inc:306 -msgid "Allowed hosts" -msgstr "Erlaubte PCs" - -#: ../lib/modules/sambaAccount.inc:810 ../lib/modules/sambaAccount.inc:811 -#: ../lib/modules/sambaSamAccount.inc:798 -#: ../lib/modules/sambaSamAccount.inc:799 -msgid "Allowed workstations" -msgstr "Erlaubte PCs" - -#: ../lib/modules/kolabUser.inc:51 -msgid "Always accept" -msgstr "Immer akzeptieren" - -#: ../lib/modules/kolabUser.inc:52 -msgid "Always reject" -msgstr "Immer ablehnen" - -#: ../templates/tree/edit.php:138 -#, php-format -msgid "An attribute (%s) was modified and is highlighted below." -msgstr "Ein Attribut (%s) wurde geändert und ist nun hervorgehoben." - -#: ../lib/modules/kolabUser.inc:345 ../lib/modules/kolabUser.inc:801 -msgid "Anyone" -msgstr "Jeder" - -#: ../templates/lists/listusers.php:274 -msgid "Apply" -msgstr "Ok" - -#: ../templates/tree/delete_form.php:148 -msgid "Are you sure you want to permanently delete this object?" -msgstr "Soll dieses Objekt gelöscht werden?" - -#: ../templates/tree/update_confirm.php:148 -msgid "Attribute" -msgstr "Attribut" - -#: ../templates/schema/schema.php:75 ../templates/schema/schema.php:76 -msgid "Attribute types" -msgstr "Attributtypen" - -#: ../templates/config/confmain.php:323 ../lib/config.inc:364 -msgid "Attributes in Group List" -msgstr "Attributnamen in der Gruppenliste" - -#: ../templates/config/confmain.php:333 ../lib/config.inc:365 -msgid "Attributes in Host List" -msgstr "Attributnamen in der Hostliste" - -#: ../templates/config/confmain.php:313 ../lib/config.inc:363 -msgid "Attributes in User List" -msgstr "Attributnamen in der Benutzerliste" - -#: ../templates/pdfedit/pdfpage.php:852 -msgid "Available PDF fields" -msgstr "Verfügbare PDF-Felder" - -#: ../lib/modules/posixAccount.inc:977 -msgid "Available groups" -msgstr "Verfügbare Gruppen" - -#: ../templates/config/confmodules.php:197 -msgid "Available modules" -msgstr "Verfügbare Module" - -#: ../lib/modules/posixGroup.inc:238 -msgid "Available users" -msgstr "Verfügbare Benutzer" - -#: ../lib/modules/sambaAccount.inc:816 ../lib/modules/sambaSamAccount.inc:804 -msgid "Available workstations" -msgstr "Verfügbare PCs" - -#: ../templates/tree/update_confirm.php:251 ../lib/modules/posixGroup.inc:244 -#: ../lib/modules/posixGroup.inc:268 ../lib/modules/sambaAccount.inc:820 -#: ../lib/modules/sambaSamAccount.inc:808 ../lib/modules/posixAccount.inc:983 -#: ../lib/modules/posixAccount.inc:1009 -msgid "Back" -msgstr "Zurück" - -#: ../templates/config/confsave.php:254 ../templates/config/conflogin.php:151 -#: ../templates/logout.php:71 -msgid "Back to Login" -msgstr "Zurück zum Login" - -#: ../templates/ou_edit.php:309 ../templates/ou_edit.php:313 -msgid "Back to OU-Editor" -msgstr "Zurück zum OU-Editor" - -#: ../templates/pdfedit/pdfdelete.php:61 ../templates/pdfedit/pdfdelete.php:69 -#: ../templates/pdfedit/pdfdelete.php:90 -msgid "Back to PDF Editor" -msgstr "Zurück zum PDF-Editor" - -#: ../templates/profedit/profilecreate.php:115 -#: ../templates/profedit/profiledelete.php:63 -#: ../templates/profedit/profiledelete.php:71 -#: ../templates/profedit/profiledelete.php:93 -msgid "Back to Profile Editor" -msgstr "Zurück zum Profileditor" - -#: ../lib/modules.inc:954 -msgid "Back to account list" -msgstr "Zurück zur Accountliste" - -#: ../templates/domain.php:325 ../templates/domain.php:352 -msgid "Back to domain list" -msgstr "Zurück zur Domänenliste" - -#: ../templates/lists/userlink.php:65 -msgid "Back to group list" -msgstr "Zurück zur Gruppenliste" - -#: ../templates/delete.php:236 -msgid "Back to list" -msgstr "Zurück zur Liste" - -#: ../templates/config/confsave.php:93 ../templates/config/confsave.php:98 -#: ../templates/config/confsave.php:103 ../templates/config/confsave.php:108 -#: ../templates/config/confsave.php:113 ../templates/config/confsave.php:118 -#: ../templates/config/confsave.php:123 ../templates/config/confsave.php:128 -#: ../templates/config/confsave.php:133 ../templates/config/confsave.php:138 -#: ../templates/config/confsave.php:143 ../templates/config/confsave.php:148 -#: ../templates/config/confsave.php:154 ../templates/config/confsave.php:160 -#: ../templates/config/confsave.php:166 ../templates/config/confsave.php:172 -#: ../templates/config/confsave.php:178 ../templates/config/confsave.php:184 -#: ../templates/config/confsave.php:231 -msgid "Back to preferences..." -msgstr "Zurück zu den Einstellungen" - -#: ../templates/config/profmanage.php:417 -msgid "Back to profile login" -msgstr "Zurück zum Konfigurationslogin" - -#: ../templates/tree/export_form.php:73 -msgid "Base (base DN only)" -msgstr "Basis (nur Basis-DN)" - -#: ../templates/tree/export_form.php:98 -msgid "Base DN" -msgstr "Basis-DN" - -#: ../templates/config/confmodules.php:108 ../help/help.inc:127 -msgid "Base module" -msgstr "Basismodul" - -#: ../templates/pdfedit/pdfpage.php:577 -msgid "Beginning" -msgstr "Anfang" - -#: ../templates/tree/edit.php:171 ../templates/tree/edit.php:300 -msgid "Binary value" -msgstr "Binärwert" - -#: ../lib/modules/quota.inc:31 -msgid "Block hard quota" -msgstr "hartes Block-Quota" - -#: ../lib/modules/quota.inc:31 -msgid "" -"Block hard quota contains invalid characters. Only natural numbers are " -"allowed." -msgstr "" -"Hartes Block-Quota enthält ungültige Zeichen. Nur natürliche Zahlen sind " -"erlaubt." - -#: ../lib/modules/quota.inc:34 -msgid "Block quota" -msgstr "Block-Quota" - -#: ../lib/modules/quota.inc:30 -msgid "Block soft quota" -msgstr "weiches Block-Quota" - -#: ../lib/modules/quota.inc:30 -msgid "" -"Block soft quota contains invalid characters. Only natural numbers are " -"allowed." -msgstr "" -"Weiches Block-Quota enthält ungültige Zeichen. Nur natürliche Zahlen sind " -"erlaubt." - -#: ../lib/modules/quota.inc:34 -msgid "Block soft quota must be smaller than block hard quota." -msgstr "Weiches Block-Quota muss kleiner sein als hartes Block-Quota." - -#: ../templates/pdfedit/pdfpage.php:524 -msgid "Bottom" -msgstr "Ende" - -#: ../lib/modules/sambaGroupMapping.inc:55 -msgid "Builtin Group" -msgstr "Vordefinierte Gruppe" - -#: ../templates/masscreate.php:127 -msgid "CSV file:" -msgstr "CSV-Datei:" - -#: ../templates/config/confmain.php:231 ../lib/config.inc:357 -#: ../help/help.inc:107 -msgid "Cache timeout" -msgstr "Cache Zeitbegrenzung" - -#: ../templates/config/confsave.php:97 -msgid "Cache timeout is invalid!" -msgstr "Cache Zeitbegrenzung ist ungültig!" - -#: ../lib/modules/posixGroup.inc:397 ../lib/modules/sambaAccount.inc:358 -#: ../lib/modules/sambaAccount.inc:361 ../lib/modules/sambaAccount.inc:364 -#: ../lib/modules/sambaAccount.inc:367 ../lib/modules/sambaAccount.inc:379 -#: ../lib/modules/sambaSamAccount.inc:173 -#: ../lib/modules/sambaSamAccount.inc:176 -#: ../lib/modules/sambaSamAccount.inc:179 -#: ../lib/modules/sambaSamAccount.inc:182 ../lib/modules/posixAccount.inc:354 -#: ../lib/modules/sambaGroupMapping.inc:282 -#: ../lib/modules/shadowAccount.inc:147 ../lib/modules/shadowAccount.inc:151 -#: ../lib/modules/shadowAccount.inc:155 ../lib/modules/shadowAccount.inc:159 -msgid "Can be left empty." -msgstr "Kann leer bleiben." - -#: ../templates/tree/update_confirm.php:237 -#: ../templates/tree/delete_form.php:118 ../templates/tree/delete_form.php:167 -#: ../templates/domain.php:223 ../templates/domain.php:254 -#: ../templates/delete.php:104 ../templates/initsuff.php:188 -#: ../lib/modules/kolabUser.inc:591 -msgid "Cancel" -msgstr "Abbrechen" - -#: ../templates/login.php:339 ../templates/login.php:344 -msgid "Cannot connect to specified LDAP server. Please try again." -msgstr "Kann keine Verbindung zum LDAP-Server aufbauen. Bitte erneut versuchen." - -#: ../lib/config.inc:348 ../lib/config.inc:883 -msgid "Cannot open config file!" -msgstr "Kann Konfigurationsdatei nicht öffnen!" - -#: ../templates/pdfedit/pdfpage.php:605 ../templates/pdfedit/pdfpage.php:611 -msgid "Change" -msgstr "Ändern" - -#: ../lib/modules/posixGroup.inc:188 -msgid "Change GID number of users and hosts" -msgstr "Ändere die GID-Nummern aller Benutzer auf den neuen Wert" - -#: ../templates/config/profmanage.php:339 ../help/help.inc:121 -msgid "Change default profile" -msgstr "Standardprofil wechseln" - -#: ../templates/config/profmanage.php:364 ../help/help.inc:123 -msgid "Change master password" -msgstr "Hauptpasswort ändern" - -#: ../lib/modules/posixGroup.inc:170 ../lib/modules/posixAccount.inc:905 -#: ../help/help.inc:105 -msgid "Change password" -msgstr "Passwort ändern" - -#: ../templates/login.php:275 -msgid "Change profile" -msgstr "Profil ändern" - -#: ../lib/lists.inc:356 -msgid "Change suffix" -msgstr "Suffix wechseln" - -#: ../lib/baseModule.inc:538 -#, php-format -msgid "Changed value %s because only numeric values are allowed." -msgstr "Wert %s wurde geändert da nur Zahlenwerte erlaubt sind." - -#: ../lib/baseModule.inc:555 -msgid "Changed value because only ASCII characters are allowed." -msgstr "Wert wurde geändert da nur ASCII-Zeichen erlaubt sind." - -#: ../templates/tree/create_form.php:75 -msgid "Choose a template" -msgstr "Wählen Sie eine Vorlage" - -#: ../templates/tree/create.php:165 ../lib/config.inc:108 -msgid "Click here if you are not directed to the next page." -msgstr "Hier klicken wenn Sie nicht zur nächsten Seite weitergeleitet werden." - -#: ../templates/schema/schema.php:205 -msgid "Collective" -msgstr "Gemeinsam" - -#: ../templates/masscreate.php:135 -msgid "Columns:" -msgstr "Spalten:" - -#: ../lib/modules/sambaAccount.inc:367 ../lib/modules/sambaSamAccount.inc:182 -msgid "" -"Comma separated list of Samba workstations the user is allowed to login. " -"Empty means every workstation." -msgstr "" -"Liste der Samba-Arbeitsstationen, auf welchen sich der Benutzer anmelden " -"darf. Die Einträge werden mit Komma getrennt. Leer heißt jede Arbeitsstation." - -#: ../templates/tree/update_confirm.php:230 -msgid "Commit" -msgstr "Bestätigen" - -#: ../lib/modules/inetOrgPerson.inc:124 -msgid "Common name" -msgstr "Allgemeiner Name" - -#: ../templates/login.php:129 -msgid "Configuration login" -msgstr "Login für die Einstellungen" - -#: ../templates/login.php:257 -msgid "Configuration profile" -msgstr "Einstellungsprofil" - -#: ../help/help.inc:45 ../help/help.inc:47 ../help/help.inc:59 -#: ../help/help.inc:65 ../help/help.inc:71 ../help/help.inc:86 -#: ../help/help.inc:91 ../help/help.inc:93 ../help/help.inc:95 -#: ../help/help.inc:100 ../help/help.inc:105 ../help/help.inc:107 -#: ../help/help.inc:109 ../help/help.inc:111 ../help/help.inc:127 -msgid "Configuration wizard" -msgstr "Einstellungsassistent" - -#: ../templates/config/confmodules.php:238 -msgid "Conflicting module:" -msgstr "Modulkonflikt:" - -#: ../templates/tree/templates/creation/custom.php:66 -#: ../templates/tree/templates/creation/new_ou_template.php:105 -msgid "Container" -msgstr "Container" - -#: ../templates/tree/templates/creation/new_ou_template.php:64 -msgid "Container DN" -msgstr "Container-DN" - -#: ../templates/tree/delete_attr.php:78 -msgid "Could not perform ldap_modify operation." -msgstr "Konnte LDAP-Änderung nicht ausführen." - -#: ../templates/config/profmanage.php:99 -msgid "Could not rename file!" -msgstr "Konnte Datei nicht umbenennen!" - -#: ../lib/modules/kolabUser.inc:83 ../lib/modules/kolabUser.inc:146 -#: ../lib/modules/kolabUser.inc:175 ../lib/modules/kolabUser.inc:305 -#: ../lib/modules/kolabUser.inc:777 -msgid "Country" -msgstr "Land" - -#: ../lib/modules/kolabUser.inc:226 ../lib/modules/kolabUser.inc:227 -msgid "Country name is invalid!" -msgstr "Ländername ist ungültig!" - -#: ../templates/tree/templates/creation/custom.php:234 -#: ../templates/tree/templates/creation/new_ou_template.php:107 -#: ../templates/initsuff.php:187 -msgid "Create" -msgstr "Erstellen" - -#: ../lib/modules.inc:994 -msgid "Create Account" -msgstr "Account erstellen" - -#: ../templates/tree/creation_template.php:84 -#: ../templates/tree/create_form.php:74 -msgid "Create Object" -msgstr "Objekt erstellen" - -#: ../lib/modules.inc:953 -msgid "Create PDF file" -msgstr "PDF-Datei erstellen" - -#: ../templates/lists/listgroups.php:249 -msgid "Create PDF for all groups" -msgstr "PDF-Datei für alle Gruppen erstellen" - -#: ../templates/lists/listhosts.php:234 -msgid "Create PDF for all hosts" -msgstr "PDF-Datei für alle Hosts erstellen" - -#: ../templates/lists/listusers.php:294 -msgid "Create PDF for all users" -msgstr "PDF-Datei für alle Benutzer erstellen" - -#: ../templates/lists/listgroups.php:247 -msgid "Create PDF for selected group(s)" -msgstr "PDF-Datei für ausgewählte Gruppe(n) erstellen" - -#: ../templates/lists/listhosts.php:232 -msgid "Create PDF for selected host(s)" -msgstr "PDF-Datei für ausgewählte(n) Host(s) erstellen" - -#: ../templates/lists/listusers.php:292 -msgid "Create PDF for selected user(s)" -msgstr "PDF-Datei für ausgewählte(n) Benutzer erstellen" - -#: ../templates/pdfedit/pdfmain.php:109 -msgid "Create a new PDF structure for scope: " -msgstr "Neue PDF-Struktur erstellen für Typ:" - -#: ../templates/profedit/profilemain.php:119 -msgid "Create a new profile" -msgstr "Neues Profil erstellen" - -#: ../lib/modules.inc:952 -msgid "Create another account" -msgstr "Weiteren Account anlegen" - -#: ../templates/masscreate.php:99 -msgid "Create group accounts" -msgstr "Gruppen-Accounts anlegen" - -#: ../lib/modules/posixAccount.inc:886 -msgid "Create home directory" -msgstr "Heimatverzeichnis anlegen" - -#: ../templates/masscreate.php:102 -msgid "Create host accounts" -msgstr "Host-Accounts anlegen" - -#: ../lib/modules.inc:856 -msgid "Create new Account" -msgstr "Neuen Account anlegen" - -#: ../templates/tree/edit.php:124 ../templates/tree/tree.php:185 -#: ../templates/tree/tree.php:187 ../templates/tree/tree.php:188 -#: ../lib/tree.inc:66 ../lib/tree.inc:67 ../lib/tree.inc:129 -#: ../lib/tree.inc:131 ../lib/tree.inc:132 -msgid "Create new entry" -msgstr "Neues Objekt anlegen" - -#: ../templates/masscreate.php:96 -msgid "Create user accounts" -msgstr "Benutzer-Accounts anlegen" - -#: ../templates/config/profmanage.php:84 -msgid "Created new profile." -msgstr "Neues Profil wurde erstellt." - -#: ../templates/tools.php:70 -msgid "Creates accounts by uploading a CSV formated file." -msgstr "Erstellt Accounts durch das Hochladen einer CSV formatierten Datei." - -#: ../templates/tree/add_value_form.php:100 -msgid "Current list of values for attribute:" -msgstr "Aktuelle Werte für Attribut:" - -#: ../templates/tree/templates/templates.inc:51 -msgid "Custom" -msgstr "Individuell" - -#: ../templates/tree/edit.php:91 ../templates/tree/add_value_form.php:98 -#: ../templates/tree/add_oclass_form.php:117 -#: ../templates/tree/update_confirm.php:75 -#: ../templates/tree/add_attr_form.php:72 ../templates/tree/delete_form.php:76 -#: ../templates/tree/delete_form.php:150 ../templates/delete.php:86 -#: ../lib/modules.inc:1606 -msgid "DN" -msgstr "DN" - -#: ../templates/masscreate.php:138 -msgid "DN settings" -msgstr "DN-Einstellungen" - -#: ../templates/masscreate.php:142 ../help/help.inc:138 -msgid "DN suffix" -msgstr "DN-Suffix" - -#: ../lib/export.inc:510 -#, php-format -msgid "DSML Export for: %s" -msgstr "DSML-Export für: %s" - -#: ../templates/tree/templates/creation/custom.php:96 -msgid "Data field for RDN is empty!" -msgstr "Datenfeld für RDN ist leer!" - -#: ../lib/modules/sambaAccount.inc:350 ../lib/modules/sambaSamAccount.inc:165 -msgid "Date after the user is able to change his password. Format: DD-MM-YYYY" -msgstr "Datum, nach dem der Benutzer sein Passwort ändern kann. Format: TT-MM-JJJJ" - -#: ../lib/modules/sambaAccount.inc:352 ../lib/modules/sambaSamAccount.inc:167 -msgid "Date after the user must change his password. Format: DD-MM-YYYY" -msgstr "Datum, nach dem der Benutzer sein Passwort ändern muss. Format: TT-MM-JJJJ" - -#: ../lib/modules/shadowAccount.inc:147 -msgid "" -"Days before password is to expire that user is warned of pending password " -"expiration. If set value must be 0<." -msgstr "" -"Anzahl Tage, die der Benutzer gewarnt wird bevor sein Passwort abläuft. Wert " -"muss größer 0 sein." - -#: ../templates/config/confmain.php:371 ../lib/config.inc:367 -#: ../help/help.inc:93 -msgid "Default language" -msgstr "Standardsprache" - -#: ../templates/masscreate.php:151 ../templates/masscreate.php:309 -msgid "Default value" -msgstr "Standardwert" - -#: ../lib/modules/kolabUser.inc:130 ../lib/modules/kolabUser.inc:134 -#: ../lib/modules/kolabUser.inc:194 ../lib/modules/kolabUser.inc:409 -#: ../lib/modules/kolabUser.inc:815 -msgid "Delegates" -msgstr "Vollmachten" - -#: ../lib/modules/kolabUser.inc:231 -msgid "Delegates has invalid format!" -msgstr "Vollmachten haben ungültiges Format!" - -#: ../templates/tree/edit.php:113 ../templates/tree/delete_form.php:158 -#: ../templates/domain.php:253 ../templates/delete.php:103 -#: ../lib/tree.inc:1185 -msgid "Delete" -msgstr "Löschen" - -#: ../templates/tree/delete_form.php:75 -#, php-format -msgid "Delete %s" -msgstr "%s löschen" - -#: ../templates/delete.php:71 ../templates/delete.php:120 -msgid "Delete Account" -msgstr "Lösche Account" - -#: ../templates/lists/listdomains.php:209 -msgid "Delete Domain(s)" -msgstr "Lösche Domain(s)" - -#: ../templates/lists/listgroups.php:238 -msgid "Delete Group(s)" -msgstr "Lösche Gruppe(n)" - -#: ../templates/lists/listhosts.php:223 -msgid "Delete Host(s)" -msgstr "Lösche Host(s)" - -#: ../lib/modules/kolabUser.inc:418 -msgid "Delete Kolab account" -msgstr "Lösche Kolab-Account" - -#: ../templates/pdfedit/pdfdelete.php:48 ../templates/pdfedit/pdfmain.php:133 -msgid "Delete PDF structure" -msgstr "PDF-Struktur löschen" - -#: ../templates/tree/delete_form.php:110 -#, php-format -msgid "Delete all %s objects" -msgstr "Alle %s-Objekte löschen" - -#: ../templates/domain.php:244 -msgid "Delete domain(s)" -msgstr "Lösche Domäne(n)" - -#: ../lib/modules/posixAccount.inc:934 -msgid "Delete home directory" -msgstr "Heimatverzeichnis löschen" - -#: ../templates/pdfedit/pdfdelete.php:68 -#: ../templates/profedit/profiledelete.php:70 -msgid "Delete operation canceled." -msgstr "Löschoperation abgebrochen." - -#: ../templates/ou_edit.php:354 ../templates/ou_edit.php:391 -#: ../templates/ou_edit.php:428 ../templates/ou_edit.php:465 -#: ../help/help.inc:148 -msgid "Delete organizational unit" -msgstr "Organizational Unit löschen" - -#: ../templates/config/profmanage.php:258 -#: ../templates/profedit/profiledelete.php:52 -#: ../templates/profedit/profilemain.php:145 ../help/help.inc:117 -msgid "Delete profile" -msgstr "Lösche Profil" - -#: ../templates/lists/listusers.php:283 -msgid "Delete user(s)" -msgstr "Lösche Benutzer" - -#: ../lib/modules/sambaGroupMapping.inc:56 -msgid "Deleted Account" -msgstr "Gelöschter Account" - -#: ../templates/delete.php:225 -#, php-format -msgid "Deleted DN: %s" -msgstr "Gelöschter DN: %s" - -#: ../templates/pdfedit/pdfdelete.php:59 -msgid "Deleted PDF structure:" -msgstr "PDF-Struktur gelöscht:" - -#: ../templates/profedit/profiledelete.php:62 -msgid "Deleted profile:" -msgstr "Gelöschtes Profil:" - -#: ../templates/tree/rdelete.php:70 ../templates/tree/rdelete.php:132 -#: ../templates/tree/rdelete.php:144 -#, php-format -msgid "Deleting %s" -msgstr "Lösche %s" - -#: ../templates/delete.php:127 -msgid "Deleting. Please stand by ..." -msgstr "Lösche. Bitte haben Sie ein wenig Geduld..." - -#: ../templates/tree/add_value_form.php:185 ../templates/schema/schema.php:95 -#: ../templates/schema/schema.php:149 ../templates/schema/schema.php:352 -#: ../lib/modules/account.inc:73 ../lib/modules/account.inc:149 -#: ../lib/modules/account.inc:166 ../lib/modules/posixGroup.inc:148 -#: ../lib/modules/posixGroup.inc:392 ../lib/modules/posixGroup.inc:434 -#: ../lib/modules/sambaAccount.inc:841 ../lib/modules/sambaSamAccount.inc:959 -#: ../lib/modules/posixAccount.inc:272 ../lib/modules/posixAccount.inc:371 -#: ../lib/modules/sambaGroupMapping.inc:303 -#: ../lib/modules/shadowAccount.inc:342 ../lib/modules/inetOrgPerson.inc:144 -#: ../lib/modules/inetOrgPerson.inc:232 ../lib/modules/inetOrgPerson.inc:286 -#: ../lib/modules/inetOrgPerson.inc:404 ../lib/modules/inetOrgPerson.inc:473 -#: ../lib/lists.inc:312 -msgid "Description" -msgstr "Beschreibung" - -#: ../lib/modules/sambaAccount.inc:198 ../lib/modules/sambaAccount.inc:319 -#: ../lib/modules/sambaAccount.inc:833 ../lib/modules/sambaSamAccount.inc:134 -#: ../lib/modules/sambaSamAccount.inc:214 -#: ../lib/modules/sambaSamAccount.inc:951 -#: ../lib/modules/sambaGroupMapping.inc:159 -#: ../lib/modules/sambaGroupMapping.inc:269 -#: ../lib/modules/sambaGroupMapping.inc:301 -msgid "Display name" -msgstr "Anzeigename" - -#: ../lib/modules.inc:470 -msgid "" -"Displayed account numbers start at \"0\". Add 2 to get the row in your " -"spreadsheet." -msgstr "" -"Die angezeigten Accountnummern beginnen mit \"0\". Addieren Sie 2 um die " -"Reihennummer in Ihrer Tabellenkalkulation zu erhalten." - -#: ../templates/domain.php:245 -msgid "Do you really want to delete domain(s):" -msgstr "Soll(en) diese Domäne(n) wirklich gelöscht werden?" - -#: ../templates/ou_edit.php:87 ../templates/ou_edit.php:152 -#: ../templates/ou_edit.php:217 ../templates/ou_edit.php:282 -msgid "Do you really want to delete this OU?" -msgstr "Soll diese OU gelöscht werden?" - -#: ../templates/pdfedit/pdfdelete.php:77 -msgid "Do you really want to delete this PDF structure?" -msgstr "Soll diese PDF-Struktur gelöscht werden?" - -#: ../templates/profedit/profiledelete.php:80 -msgid "Do you really want to delete this profile?" -msgstr "Soll dieses Profil gelöscht werden?" - -#: ../lib/modules/kolabUser.inc:586 -msgid "Do you really want to mark this account for deletion?" -msgstr "Soll dieser Account wirklich zum Löschen markiert werden?" - -#: ../templates/delete.php:80 -msgid "Do you really want to remove the following accounts?" -msgstr "Sollen die folgenden Accounts wirklich gelöscht werden?" - -#: ../templates/tree/update_confirm.php:142 -msgid "Do you want to make these changes?" -msgstr "Wollen Sie die Änderungen übernehmen?" - -#: ../lib/modules/sambaAccount.inc:155 ../lib/modules/sambaAccount.inc:300 -#: ../lib/modules/sambaAccount.inc:310 ../lib/modules/sambaAccount.inc:378 -#: ../lib/modules/sambaAccount.inc:775 ../lib/modules/sambaAccount.inc:784 -#: ../lib/modules/sambaAccount.inc:840 ../lib/modules/sambaSamAccount.inc:194 -#: ../lib/modules/sambaSamAccount.inc:207 -#: ../lib/modules/sambaSamAccount.inc:326 -#: ../lib/modules/sambaSamAccount.inc:763 -#: ../lib/modules/sambaSamAccount.inc:771 -#: ../lib/modules/sambaSamAccount.inc:886 -#: ../lib/modules/sambaSamAccount.inc:899 -#: ../lib/modules/sambaSamAccount.inc:958 -#: ../lib/modules/sambaGroupMapping.inc:53 -#: ../lib/modules/sambaGroupMapping.inc:187 -#: ../lib/modules/sambaGroupMapping.inc:281 -#: ../lib/modules/sambaGroupMapping.inc:323 -msgid "Domain" -msgstr "Domäne" - -#: ../lib/modules/sambaAccount.inc:33 ../lib/modules/sambaAccount.inc:295 -#: ../lib/modules/sambaSamAccount.inc:33 -#: ../lib/modules/sambaGroupMapping.inc:40 -#: ../lib/modules/sambaGroupMapping.inc:254 -msgid "Domain Admins" -msgstr "Domänenadministratoren" - -#: ../lib/modules/sambaAccount.inc:35 ../lib/modules/sambaSamAccount.inc:34 -#: ../lib/modules/sambaGroupMapping.inc:45 -msgid "Domain Certificate Admins" -msgstr "Domänen-Zertifikats-Administratoren" - -#: ../lib/modules/sambaAccount.inc:34 ../lib/modules/sambaAccount.inc:519 -#: ../lib/modules/sambaSamAccount.inc:34 -#: ../lib/modules/sambaSamAccount.inc:484 -#: ../lib/modules/sambaGroupMapping.inc:43 -msgid "Domain Computers" -msgstr "Domänen-PCs" - -#: ../lib/modules/sambaAccount.inc:35 ../lib/modules/sambaSamAccount.inc:34 -#: ../lib/modules/sambaGroupMapping.inc:44 -msgid "Domain Controllers" -msgstr "Domänencontroller" - -#: ../lib/modules/sambaAccount.inc:36 ../lib/modules/sambaSamAccount.inc:35 -#: ../lib/modules/sambaGroupMapping.inc:47 -msgid "Domain Enterprise Admins" -msgstr "Domänen-Unternehmens-Administratoren" - -#: ../lib/modules/sambaGroupMapping.inc:52 -#: ../lib/modules/sambaGroupMapping.inc:179 -msgid "Domain Group" -msgstr "Domänengruppe" - -#: ../lib/modules/sambaAccount.inc:34 ../lib/modules/sambaSamAccount.inc:33 -#: ../lib/modules/sambaGroupMapping.inc:42 -msgid "Domain Guests" -msgstr "Domänengäste" - -#: ../lib/modules/sambaAccount.inc:37 ../lib/modules/sambaSamAccount.inc:35 -#: ../lib/modules/sambaGroupMapping.inc:48 -msgid "Domain Policy Admins" -msgstr "Domänen-Policy-Administratoren" - -#: ../templates/lists/listdomains.php:100 ../templates/domain.php:109 -#: ../help/help.inc:154 -msgid "Domain SID" -msgstr "Domänen-SID" - -#: ../lib/modules/sambaAccount.inc:36 ../lib/modules/sambaSamAccount.inc:35 -#: ../lib/modules/sambaGroupMapping.inc:46 -msgid "Domain Schema Admins" -msgstr "Domänen-Schema-Administratoren" - -#: ../templates/domain.php:83 -msgid "Domain Settings" -msgstr "Domäneneinstellungen" - -#: ../lib/modules/sambaAccount.inc:33 ../lib/modules/sambaSamAccount.inc:33 -#: ../lib/modules/sambaSamAccount.inc:1202 -#: ../lib/modules/sambaGroupMapping.inc:41 -msgid "Domain Users" -msgstr "Domänenbenutzer" - -#: ../lib/modules/sambaGroupMapping.inc:248 -msgid "Domain administrators" -msgstr "Domänenadministratoren" - -#: ../templates/domain.php:348 -msgid "Domain deleted successfully." -msgstr "Domäne erfolgreich gelöscht." - -#: ../templates/domain.php:304 -msgid "Domain has been modified." -msgstr "Domäne wurde geändert." - -#: ../templates/lists/listdomains.php:99 ../templates/domain.php:88 -#: ../lib/modules/sambaAccount.inc:57 ../help/help.inc:150 -msgid "Domain name" -msgstr "Domänenname" - -#: ../lib/modules/sambaAccount.inc:57 ../lib/modules/sambaAccount.inc:58 -msgid "" -"Domain name contains invalid characters. Valid characters are: a-z, A-Z, 0-9 " -"and -." -msgstr "" -"Domänenname enthält ungültige Zeichen. Gültige Zeichen sind: a-z, A-Z, 0-9 " -"und -." - -#: ../templates/domain.php:277 -msgid "Domain name is invalid!" -msgstr "Domänenname ist ungültig!" - -#: ../templates/config/confmain.php:207 ../lib/config.inc:361 -msgid "DomainSuffix" -msgstr "DomänenSuffix" - -#: ../templates/config/confsave.php:122 -msgid "DomainSuffix is invalid!" -msgstr "Domänensuffix ist ungültig!" - -#: ../templates/ou_edit.php:447 -msgid "Domains" -msgstr "Domänen" - -#: ../templates/pdfedit/pdfpage.php:581 -msgid "Down" -msgstr "nach unten" - -#: ../templates/masscreate.php:263 -msgid "Download sample CSV file" -msgstr "Beispiel-CSV-Datei runterladen" - -#: ../lib/modules/sambaAccount.inc:355 ../lib/modules/sambaSamAccount.inc:170 -msgid "Drive letter assigned on windows workstations as homedirectory." -msgstr "Laufwerksbuchstabe, der als Heimatverzeichnis zugewiesen wird." - -#: ../lib/lists.inc:311 -msgid "E-Mail" -msgstr "E-Mail" - -#: ../lib/modules/kolabUser.inc:138 -msgid "EMail alias" -msgstr "EMail-Alias" - -#: ../lib/modules/kolabUser.inc:139 -msgid "EMail alias for this account." -msgstr "EMail-Alias für diesen Account." - -#: ../lib/modules/kolabUser.inc:224 -msgid "EMail alias is invalid!" -msgstr "EMail-Alias ist ungültig!" - -#: ../lib/modules/kolabUser.inc:142 -msgid "EMail alias list" -msgstr "EMail-Aliasliste" - -#: ../lib/modules/kolabUser.inc:225 -msgid "EMail alias list has invalid format!" -msgstr "EMail-Aliasliste hat ungültiges Format!" - -#: ../lib/modules/kolabUser.inc:188 ../lib/modules/kolabUser.inc:383 -#: ../lib/modules/kolabUser.inc:811 -msgid "EMail aliases" -msgstr "EMail-Aliase" - -#: ../templates/lists/listhosts.php:175 ../templates/lists/listgroups.php:175 -#: ../templates/lists/listdomains.php:175 ../templates/lists/listusers.php:221 -msgid "Edit" -msgstr "Editieren" - -#: ../templates/pdfedit/pdfmain.php:121 -msgid "Edit PDF structure" -msgstr "PDF-Struktur ändern" - -#: ../lib/modules/posixAccount.inc:878 -msgid "Edit groups" -msgstr "Gruppen ändern" - -#: ../lib/modules/posixGroup.inc:153 -msgid "Edit members" -msgstr "Mitglieder ändern" - -#: ../templates/config/confmain.php:260 -msgid "Edit modules" -msgstr "Module ändern" - -#: ../templates/profedit/profilemain.php:132 -msgid "Edit profile" -msgstr "Profil ändern" - -#: ../lib/modules/sambaAccount.inc:740 ../lib/modules/sambaSamAccount.inc:726 -msgid "Edit workstations" -msgstr "Arbeitsstationen ändern" - -#: ../lib/modules/inetOrgPerson.inc:73 ../lib/modules/inetOrgPerson.inc:102 -#: ../lib/modules/inetOrgPerson.inc:156 ../lib/modules/inetOrgPerson.inc:248 -#: ../lib/modules/inetOrgPerson.inc:429 ../lib/modules/inetOrgPerson.inc:478 -msgid "Employee type" -msgstr "Angestelltentyp" - -#: ../lib/modules/inetOrgPerson.inc:249 -msgid "Employee type: Contractor, Employee, Intern, Temp, External, ..." -msgstr "Angestelltentyp: Angestellter, Extern, Aushilfskraft, ..." - -#: ../templates/login.php:312 -msgid "Empty password submitted. Please try again." -msgstr "Das Passwort war leer. Bitte erneut eingeben." - -#: ../templates/tree/download_binary_attr.php:70 -msgid "Encountered an error while performing search." -msgstr "Die LDAP-Suche ist fehlgeschlagen." - -#: ../templates/tree/add_value_form.php:136 -msgid "Enter the value you would like to add:" -msgstr "Geben Sie den neuen Wert ein:" - -#: ../lib/export.inc:406 -msgid "Entry" -msgstr "Eintrag" - -#: ../templates/tree/rdelete.php:114 -#, php-format -msgid "Entry %s and sub-tree deleted successfully." -msgstr "Eintrag %s und Unterbaum wurden erfolgreich gelöscht." - -#: ../templates/tree/delete.php:103 -#, php-format -msgid "Entry %s deleted successfully." -msgstr "Eintrag %s erfolgreich gelöscht." - -#: ../templates/schema/schema.php:172 -msgid "Equality" -msgstr "Gleichheit" - -#: ../templates/delete.php:230 -#, php-format -msgid "Error while deleting DN: %s" -msgstr "Fehler beim Löschen von DN: %s" - -#: ../help/help.inc:128 -msgid "" -"Every account type needs exactly one base module. This module provides a " -"structural object class." -msgstr "" -"Jeder Accounttyp benötigt exakt ein Basismodul. Dieses Modul stellt die " -"strukturelle Objektklasse bereit." - -#: ../help/help.inc:68 ../help/help.inc:74 ../help/help.inc:89 -msgid "Example" -msgstr "Beispiel" - -#: ../templates/masscreate.php:150 ../templates/masscreate.php:164 -#: ../templates/masscreate.php:305 -msgid "Example value" -msgstr "Beispielwert" - -#: ../help/help.inc:50 ../help/help.inc:62 -msgid "Examples" -msgstr "Beispiele" - -#: ../lib/modules/shadowAccount.inc:93 ../lib/modules/shadowAccount.inc:162 -#: ../lib/modules/shadowAccount.inc:194 ../lib/modules/shadowAccount.inc:317 -msgid "Expiration date" -msgstr "Ablaufdatum" - -#: ../templates/tree/edit.php:116 ../templates/tree/export_form.php:87 -#: ../templates/tree/export_form.php:95 -msgid "Export" -msgstr "Export" - -#: ../templates/tree/export_form.php:134 -msgid "Export format" -msgstr "Exportformat" - -#: ../templates/domain.php:322 -msgid "Failed to add domain!" -msgstr "Konnte Domäne nicht erstellen!" - -#: ../templates/tree/add_attr.php:128 -msgid "Failed to add the attribute." -msgstr "Konnte das Attribut nicht hinzufügen." - -#: ../templates/initsuff.php:149 -msgid "Failed to create entry!" -msgstr "Konnte Eintrag nicht erstellen!" - -#: ../templates/tree/rdelete.php:117 ../templates/tree/rdelete.php:138 -#: ../templates/tree/rdelete.php:150 -#, php-format -msgid "Failed to delete entry %s" -msgstr "Konnte Eintrag %s nicht löschen" - -#: ../templates/domain.php:305 -msgid "Failed to modify domain!" -msgstr "Konnte Domäne nicht ändern!" - -#: ../lib/modules/inetOrgPerson.inc:61 ../lib/modules/inetOrgPerson.inc:192 -#: ../lib/modules/inetOrgPerson.inc:272 ../lib/modules/inetOrgPerson.inc:273 -#: ../lib/modules/inetOrgPerson.inc:453 ../lib/modules/inetOrgPerson.inc:484 -msgid "Fax number" -msgstr "Faxnummer" - -#: ../templates/tools.php:69 -msgid "File upload" -msgstr "Dateiupload" - -#: ../templates/tree/add_attr.php:91 -msgid "File upload failed!" -msgstr "Dateiupload ist fehlgeschlagen!" - -#: ../lib/modules/sambaAccount.inc:364 ../lib/modules/sambaSamAccount.inc:179 -msgid "" -"Filename and -path relative to netlogon-share which should be executed on " -"logon. $user and $group are replaced with user- and groupname." -msgstr "" -"Dateiname und -pfad relativ zur Netlogon-Freigabe des Scripts, das beim " -"Login ausgeführt wird. $user und $group werden mit Benutzer- und Gruppenname " -"ersetzt." - -#: ../lib/lists.inc:217 -msgid "Filter" -msgstr "Filtern" - -#: ../lib/modules/inetOrgPerson.inc:53 ../lib/modules/inetOrgPerson.inc:131 -#: ../lib/modules/inetOrgPerson.inc:240 ../lib/modules/inetOrgPerson.inc:421 -#: ../lib/modules/inetOrgPerson.inc:476 ../lib/lists.inc:307 -msgid "First name" -msgstr "Vorname" - -#: ../lib/modules/inetOrgPerson.inc:53 ../lib/modules/inetOrgPerson.inc:54 -msgid "First name contains invalid characters!" -msgstr "Vorname enthält ungültige Zeichen!" - -#: ../lib/modules/inetOrgPerson.inc:241 -msgid "First name of user. Only letters, - and spaces are allowed." -msgstr "Vorname des Benutzers. Es sind nur Buchstaben, - und Leerzeichen erlaubt." - -#: ../lib/modules/kolabUser.inc:123 -msgid "For automatic invitation handling." -msgstr "Regelt automatische Einladungen." - -#: ../lib/modules/kolabUser.inc:87 ../lib/modules/kolabUser.inc:154 -#: ../lib/modules/kolabUser.inc:200 ../lib/modules/kolabUser.inc:328 -#: ../lib/modules/kolabUser.inc:789 -msgid "Free/Busy interval" -msgstr "Frei/Besetzt-Intervall" - -#: ../lib/modules/kolabUser.inc:232 ../lib/modules/kolabUser.inc:233 -msgid "Free/Busy interval must be a number!" -msgstr "Frei/Besetzt-Intervall muss eine Nummer sein!" - -#: ../lib/modules/posixGroup.inc:144 ../lib/modules/posixGroup.inc:358 -#: ../lib/modules/posixGroup.inc:388 ../lib/modules/posixGroup.inc:413 -#: ../lib/modules/posixGroup.inc:432 ../lib/modules/posixGroup.inc:463 -#: ../lib/modules/posixAccount.inc:41 ../lib/modules/posixAccount.inc:1103 -#: ../lib/modules/sambaGroupMapping.inc:299 ../lib/lists.inc:304 -#: ../lib/lists.inc:318 ../lib/lists.inc:331 -msgid "GID number" -msgstr "GID Nummer" - -#: ../lib/modules/posixGroup.inc:463 -msgid "" -"GID number has changed. Please select checkbox to change GID number of users " -"and hosts." -msgstr "" -"Die GID-Nummer wurde geändert. Bitte verwenden sie das Kontrollkästchen um " -"die GID-Nummer von Benutzern und Hosts anzupassen." - -#: ../lib/modules/posixAccount.inc:41 -#, php-format -msgid "" -"GID number has changed. To keep file ownership you have to run the following " -"command as root: 'find / -gid %s -uid %s -exec chgrp %s {} \\;'" -msgstr "" -"GID-Nummer hat sich geändert. Sie müssen folgenden Befehl als root " -"ausführen, um die Dateirechte zu ändern: 'find / -gid %s -uid %s -exec chgrp " -"%s {} \\;'" - -#: ../lib/modules/posixGroup.inc:470 -msgid "GID number has to be a numeric value!" -msgstr "GID-Nummer muss eine Zahl sein!" - -#: ../lib/modules/posixGroup.inc:314 -msgid "GID ranges for Unix groups" -msgstr "GID-Bereiche für Unix-Gruppen" - -#: ../lib/modules/account.inc:48 ../lib/modules/posixAccount.inc:228 -#: ../lib/modules/posixAccount.inc:260 ../lib/modules/posixAccount.inc:325 -#: ../lib/modules/posixAccount.inc:363 ../lib/modules/posixAccount.inc:866 -#: ../lib/modules/posixAccount.inc:1104 -msgid "Gecos" -msgstr "Gecos" - -#: ../lib/modules/posixGroup.inc:159 ../lib/modules/posixAccount.inc:894 -msgid "Generate password" -msgstr "Passwort generieren" - -#: ../lib/modules/kolabUser.inc:177 -msgid "Germany" -msgstr "Deutschland" - -#: ../templates/schema/schema.php:134 ../templates/schema/schema.php:271 -#: ../templates/schema/schema.php:302 ../templates/schema/schema.php:327 -msgid "Go" -msgstr "Weiter" - -#: ../lib/modules/quota.inc:80 ../lib/modules/quota.inc:295 -msgid "Grace block period" -msgstr "Block-Frist" - -#: ../lib/modules/quota.inc:81 -msgid "Grace block period. Most filesystems use a fixed maximum value of 7 days." -msgstr "Block-Frist. Viele Dateisysteme verwenden ein festes Maximum von 7 Tagen." - -#: ../lib/modules/quota.inc:97 -msgid "" -"Grace inode (files) period. Most filesystems use a fixed maximum value of 7 " -"days." -msgstr "Inode-Frist. Viele Dateisysteme verwenden ein festes Maximum von 7 Tagen." - -#: ../lib/modules/quota.inc:96 ../lib/modules/quota.inc:299 -msgid "Grace inode period" -msgstr "Inode-Frist" - -#: ../lib/modules/posixGroup.inc:364 ../lib/lists.inc:321 -msgid "Group description" -msgstr "Gruppenbeschreibung" - -#: ../lib/modules/posixGroup.inc:393 -msgid "Group description. If left empty group name will be used." -msgstr "Gruppenbeschreibung. Falls leer wird der Gruppename verwendet." - -#: ../lib/pdf.inc:463 -msgid "Group information page" -msgstr "Gruppeninformationen" - -#: ../templates/config/confsave.php:137 -msgid "Group list attributes are invalid!" -msgstr "Attribute der Gruppenliste sind ungültig!" - -#: ../lib/lists.inc:320 -msgid "Group member DNs" -msgstr "DNs der Gruppenmitglieder" - -#: ../lib/modules/posixGroup.inc:152 ../lib/modules/posixGroup.inc:226 -#: ../lib/modules/posixGroup.inc:370 ../lib/modules/posixGroup.inc:396 -#: ../lib/modules/posixGroup.inc:400 ../lib/modules/posixGroup.inc:433 -#: ../lib/lists.inc:319 -msgid "Group members" -msgstr "Gruppenmitglieder" - -#: ../templates/config/confmodules.php:80 ../templates/config/confmain.php:257 -#: ../lib/config.inc:372 -msgid "Group modules" -msgstr "Gruppenmodule" - -#: ../lib/modules/posixGroup.inc:350 ../lib/lists.inc:317 -msgid "Group name" -msgstr "Gruppenname" - -#: ../lib/modules/posixGroup.inc:385 -msgid "" -"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." -msgstr "" -"Gruppenname der zu erstellenden Gruppe. Gültige Zeichen sind: a-z, 0-9 und .-" -"_. LAM erlaubt keine Zahlen als erstes Zeichen weil es groupadd auch nicht " -"erlaubt. Großbuchstaben am Anfang können Probleme verursachen und sind " -"ebenfalls nicht erlaubt. Sollte der Gruppenname schon in Verwendung sein " -"wird eine Zahl angehängt." - -#: ../lib/modules/posixGroup.inc:376 ../lib/modules/posixGroup.inc:404 -msgid "Group password" -msgstr "Gruppenpasswort" - -#: ../templates/profedit/profilemain.php:46 -msgid "Group profiles" -msgstr "Gruppenprofile" - -#: ../lib/modules/sambaGroupMapping.inc:184 -msgid "Group type" -msgstr "Gruppentyp" - -#: ../templates/config/confmain.php:187 ../lib/config.inc:359 -msgid "GroupSuffix" -msgstr "Gruppensuffix" - -#: ../templates/config/confsave.php:112 -msgid "GroupSuffix is invalid!" -msgstr "GruppenSuffix ist ungültig!" - -#: ../lib/modules/posixGroup.inc:140 ../lib/modules/posixGroup.inc:384 -#: ../lib/modules/posixGroup.inc:431 ../lib/modules/posixGroup.inc:471 -#: ../lib/modules/posixGroup.inc:472 ../lib/modules/posixGroup.inc:473 -msgid "Groupname" -msgstr "Gruppenname" - -#: ../lib/modules/posixGroup.inc:473 ../lib/modules/posixGroup.inc:474 -msgid "" -"Groupname contains invalid characters. Valid characters are: a-z, A-Z, 0-9 " -"and .-_ !" -msgstr "" -"Gruppenname enthält ungültige Zeichen. Gültige Zeichen sind: a-z, A-Z, 0-" -"9, ., - und _!" - -#: ../lib/modules/posixGroup.inc:472 -msgid "Groupname in use. Selected next free groupname." -msgstr "" -"Gruppenname wird bereits verwendet. Nächster freier Gruppenname wurde " -"ausgewählt." - -#: ../templates/ou_edit.php:373 ../templates/main_header.php:84 -#: ../help/help.inc:81 -msgid "Groups" -msgstr "Gruppen" - -#: ../lib/modules/sambaSamAccount.inc:551 -#: ../lib/modules/sambaSamAccount.inc:753 -#: ../lib/modules/sambaSamAccount.inc:756 -msgid "Guest" -msgstr "Gast" - -#: ../lib/modules/quota.inc:422 -msgid "Hard block" -msgstr "hartes Block-Limit" - -#: ../lib/modules/quota.inc:76 ../lib/modules/quota.inc:77 -#: ../lib/modules/quota.inc:294 ../lib/modules/quota.inc:351 -msgid "Hard block limit" -msgstr "hartes Block-Limit" - -#: ../lib/modules/quota.inc:422 -msgid "Hard inode" -msgstr "hartes Inode-Limit" - -#: ../lib/modules/quota.inc:93 -msgid "Hard inode (files) limit" -msgstr "Hartes Inode-Limit (Datein)" - -#: ../lib/modules/quota.inc:92 ../lib/modules/quota.inc:298 -#: ../lib/modules/quota.inc:353 -msgid "Hard inode limit" -msgstr "hartes Inode-Limit" - -#: ../templates/pdfedit/pdfpage.php:495 -msgid "Headline" -msgstr "Überschrift" - -#: ../templates/pdfedit/pdfpage.php:468 -msgid "Height" -msgstr "Höhe" - -#: ../templates/ou_edit.php:349 ../templates/ou_edit.php:362 -#: ../templates/ou_edit.php:386 ../templates/ou_edit.php:399 -#: ../templates/ou_edit.php:423 ../templates/ou_edit.php:436 -#: ../templates/ou_edit.php:460 ../templates/ou_edit.php:473 -#: ../templates/domain.php:99 ../templates/domain.php:120 -#: ../templates/domain.php:136 ../templates/domain.php:149 -#: ../templates/domain.php:162 ../templates/domain.php:179 -#: ../templates/domain.php:202 ../templates/masscreate.php:145 -#: ../templates/masscreate.php:158 ../templates/masscreate.php:292 -#: ../templates/config/profmanage.php:183 -#: ../templates/config/profmanage.php:235 -#: ../templates/config/profmanage.php:265 -#: ../templates/config/profmanage.php:299 -#: ../templates/config/profmanage.php:347 -#: ../templates/config/profmanage.php:375 -#: ../templates/config/profmanage.php:408 -#: ../templates/config/confmodules.php:111 -#: ../templates/config/confmain.php:167 ../templates/config/confmain.php:181 -#: ../templates/config/confmain.php:191 ../templates/config/confmain.php:201 -#: ../templates/config/confmain.php:211 ../templates/config/confmain.php:221 -#: ../templates/config/confmain.php:243 ../templates/config/confmain.php:262 -#: ../templates/config/confmain.php:317 ../templates/config/confmain.php:327 -#: ../templates/config/confmain.php:337 ../templates/config/confmain.php:358 -#: ../templates/config/confmain.php:403 ../templates/config/confmain.php:422 -#: ../templates/config/confmain.php:431 ../templates/config/confmain.php:449 -#: ../templates/config/confmain.php:463 ../templates/config/conflogin.php:127 -#: ../templates/pdfedit/pdfpage.php:811 -#: ../templates/profedit/profilepage.php:106 -#: ../templates/profedit/profilepage.php:126 -#: ../templates/profedit/profilepage.php:157 ../lib/lists.inc:213 -#: ../lib/modules.inc:651 -msgid "Help" -msgstr "Hilfe" - -#: ../templates/tools.php:91 -msgid "Here you can browse LDAP object classes and attributes." -msgstr "Hier können Sie LDAP-Objektklassen und Attribute betrachten." - -#: ../templates/masscreate.php:83 -msgid "Here you can create multiple accounts by providing a CSV file." -msgstr "" -"Hier können Sie mehrere Accounts mittels einer CSV-formatierten Datei " -"erstellen." - -#: ../lib/modules/posixAccount.inc:313 -msgid "" -"Here you can enter a list of additional group memberships. The group names " -"are separated by commas." -msgstr "Hier können Sie zusätzliche Gruppenmitgliedschaften angeben. Die Gruppennamen werden durch Komma getrennt." - -#: ../help/help.inc:130 -msgid "" -"Here you can input small filter expressions (e.g. 'value' or 'v*'). LAM will " -"filter case-insensitive." -msgstr "" -"Hier können Sie kleinere Filter angeben (z.B. 'wert' oder 'w*'). LAM filtert " -"ohne Berücksichtigung von Groß-/Kleinschreibung." - -#: ../templates/tools.php:54 -msgid "Here you can manage your account profiles." -msgstr "Hier können Sie Ihre Accountprofile verwalten." - -#: ../help/help.inc:112 -msgid "Here you can select which plugins you want to use for account management." -msgstr "" -"Hier können Sie die Plugins wählen, die Sie zur Accountverwaltung verwenden " -"möchten." - -#: ../templates/tree/edit.php:103 -msgid "Hide internal attributes" -msgstr "Interne Attribute verstecken" - -#: ../templates/tree/edit.php:120 -msgid "Hint: To delete an attribute, empty the text field and click save." -msgstr "" -"Tipp: Um ein Attribut zu löschen, leeren Sie das Eingabefeld und speichern " -"die Änderung." - -#: ../lib/modules/posixAccount.inc:354 -msgid "Hold the CTRL-key to (de)select multiple groups." -msgstr "Halten Sie Strg gedrückt um mehrere Gruppen zu markieren." - -#: ../lib/modules/posixAccount.inc:36 ../lib/modules/posixAccount.inc:64 -#: ../lib/modules/posixAccount.inc:65 ../lib/modules/posixAccount.inc:199 -#: ../lib/modules/posixAccount.inc:316 ../lib/modules/posixAccount.inc:333 -#: ../lib/modules/posixAccount.inc:730 ../lib/modules/posixAccount.inc:881 -#: ../lib/modules/posixAccount.inc:1034 ../lib/modules/posixAccount.inc:1107 -#: ../lib/lists.inc:309 -msgid "Home directory" -msgstr "Heimatverzeichnis" - -#: ../lib/modules/posixAccount.inc:36 -#, php-format -msgid "" -"Home directory changed. To keep home directory you have to run the following " -"command as root: 'mv %s %s'" -msgstr "" -"Heimatverzeichnis wurde geändert. Sie müssen folgendes Kommando als root-" -"Benutzer ausführen um das alte Verzeichnis zu ändern: 'mv %s %s'" - -#: ../lib/modules/sambaAccount.inc:124 ../lib/modules/sambaAccount.inc:256 -#: ../lib/modules/sambaAccount.inc:354 ../lib/modules/sambaAccount.inc:727 -#: ../lib/modules/sambaAccount.inc:836 ../lib/modules/sambaSamAccount.inc:169 -#: ../lib/modules/sambaSamAccount.inc:272 -#: ../lib/modules/sambaSamAccount.inc:713 -#: ../lib/modules/sambaSamAccount.inc:851 -#: ../lib/modules/sambaSamAccount.inc:954 -msgid "Home drive" -msgstr "Heimatlaufwerk" - -#: ../lib/modules/sambaAccount.inc:46 ../lib/modules/sambaAccount.inc:47 -#: ../lib/modules/sambaAccount.inc:130 ../lib/modules/sambaAccount.inc:262 -#: ../lib/modules/sambaAccount.inc:357 ../lib/modules/sambaAccount.inc:730 -#: ../lib/modules/sambaAccount.inc:835 ../lib/modules/sambaSamAccount.inc:44 -#: ../lib/modules/sambaSamAccount.inc:45 -#: ../lib/modules/sambaSamAccount.inc:172 -#: ../lib/modules/sambaSamAccount.inc:278 -#: ../lib/modules/sambaSamAccount.inc:716 -#: ../lib/modules/sambaSamAccount.inc:857 -#: ../lib/modules/sambaSamAccount.inc:953 -msgid "Home path" -msgstr "Heimatverzeichnis" - -#: ../lib/modules/sambaAccount.inc:46 ../lib/modules/sambaSamAccount.inc:44 -#: ../lib/modules/sambaSamAccount.inc:46 -msgid "Home path is invalid." -msgstr "Heimatverzeichnis ist ungültig." - -#: ../lib/modules/posixAccount.inc:64 ../lib/modules/posixAccount.inc:66 -msgid "Homedirectory contains invalid characters." -msgstr "Heimatverzeichnis enthält ungültige Zeichen." - -#: ../lib/lists.inc:329 -msgid "Host description" -msgstr "Hostbeschreibung" - -#: ../lib/modules/account.inc:49 ../lib/modules/posixAccount.inc:364 -#: ../lib/modules/posixAccount.inc:372 ../lib/modules/inetOrgPerson.inc:287 -msgid "Host description. If left empty host name will be used." -msgstr "Hostbeschreibung. Falls leer wird der Hostname verwendet." - -#: ../lib/pdf.inc:466 -msgid "Host information page" -msgstr "Host-Informationen" - -#: ../lib/modules/account.inc:58 -msgid "Host list" -msgstr "Hostliste" - -#: ../templates/config/confsave.php:142 -msgid "Host list attributes are invalid!" -msgstr "Attribute der Hostliste sind ungültig!" - -#: ../templates/config/confmodules.php:81 ../templates/config/confmain.php:258 -#: ../lib/config.inc:373 -msgid "Host modules" -msgstr "Hostmodule" - -#: ../lib/modules/posixAccount.inc:239 ../lib/modules/posixAccount.inc:359 -#: ../lib/lists.inc:327 -msgid "Host name" -msgstr "Hostname" - -#: ../lib/modules/posixAccount.inc:85 -msgid "Host name already exists!" -msgstr "Host-Name besteht schon!" - -#: ../lib/modules/posixAccount.inc:83 -msgid "" -"Host name contains invalid characters. Valid characters are: a-z, A-Z, 0-9 " -"and .-_ !" -msgstr "" -"Hostname enthält ungültige Zeichen. Gültige Zeichen sind: a-z, A-Z, 0-9 " -"und .-_!" - -#: ../lib/modules/posixAccount.inc:81 -msgid "Host name in use. Selected next free host name." -msgstr "Hostname wird bereits verwendet. Nächster freier Hostname wurde ausgewählt." - -#: ../lib/modules/posixAccount.inc:360 -msgid "" -"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." -msgstr "" -"Hostname des zu erstellenden Hosts. Gültige Zeichen sind: a-z, 0-9 und .-_$. " -"LAM erlaubt keine Zahlen als erstes Zeichen weil es useradd auch nicht " -"erlaubt. Großbuchstaben am Anfang können Probleme verursachen und sind " -"ebenfalls nicht erlaubt. Sollte der Hostname schon in Verwendung sein wird " -"eine Zahl angehängt." - -#: ../templates/profedit/profilemain.php:47 -msgid "Host profiles" -msgstr "Hostprofile" - -#: ../lib/lists.inc:326 -msgid "Host username" -msgstr "Host Benutzername" - -#: ../templates/config/confmain.php:197 ../lib/config.inc:360 -msgid "HostSuffix" -msgstr "HostSuffix" - -#: ../templates/config/confsave.php:117 -msgid "HostSuffix is invalid!" -msgstr "Hostsuffix ist ungültig!" - -#: ../lib/modules/posixAccount.inc:78 ../lib/modules/posixAccount.inc:79 -#: ../lib/modules/posixAccount.inc:81 -msgid "Hostname" -msgstr "Hostname" - -#: ../lib/modules/posixAccount.inc:79 -msgid "" -"Hostname contains invalid characters. Valid characters are: a-z, A-Z, 0-9 " -"and .-_ ! Host name must end with $ !" -msgstr "" -"Hostname enthält ungültige Zeichen. Gültige Zeichen sind: a-z, A-Z, 0-9 " -"und .-_! Hostname muss mit $ enden!" - -#: ../templates/main_header.php:87 ../lib/modules/posixAccount.inc:59 -#: ../lib/modules/posixAccount.inc:60 ../lib/modules/posixAccount.inc:62 -#: ../lib/modules/posixAccount.inc:137 ../help/help.inc:84 -msgid "Hosts" -msgstr "Hosts" - -#: ../lib/modules/posixGroup.inc:466 ../lib/modules/posixGroup.inc:581 -#: ../lib/modules/posixAccount.inc:69 ../lib/modules/posixAccount.inc:676 -msgid "ID is already in use" -msgstr "ID wird bereits verwendet" - -#: ../lib/modules/posixGroup.inc:464 ../lib/modules/posixGroup.inc:465 -#: ../lib/modules/posixGroup.inc:466 ../lib/modules/posixGroup.inc:577 -#: ../lib/modules/posixGroup.inc:581 ../lib/modules/posixAccount.inc:67 -#: ../lib/modules/posixAccount.inc:68 ../lib/modules/posixAccount.inc:69 -#: ../lib/modules/posixAccount.inc:672 ../lib/modules/posixAccount.inc:676 -msgid "ID-Number" -msgstr "ID-Nummer" - -#: ../templates/masscreate.php:149 ../templates/masscreate.php:162 -#: ../templates/masscreate.php:297 -msgid "Identifier" -msgstr "Bezeichner" - -#: ../lib/modules/sambaAccount.inc:326 ../lib/modules/sambaSamAccount.inc:141 -msgid "If checked Unix password will also be used as Samba password." -msgstr "Falls aktiviert wird das Unix-Passwort auch als Samba-Passwort verwendet." - -#: ../lib/modules/posixAccount.inc:346 -msgid "" -"If checked account will be deactivated by putting a \"!\" before the " -"encrypted password." -msgstr "Falls angekreuzt wird der Account deaktiviert (es wird ein \"!\" vor das verschlüsselte Passwort gesetzt)." - -#: ../lib/modules/sambaAccount.inc:344 ../lib/modules/sambaSamAccount.inc:159 -msgid "If checked account will be deactivated. (Setting D-Flag)" -msgstr "Falls angekreuzt wird der Account deaktiviert. (D-Flag wird gesetzt)" - -#: ../lib/modules/posixGroup.inc:409 ../lib/modules/sambaAccount.inc:332 -#: ../lib/modules/sambaSamAccount.inc:147 ../lib/modules/posixAccount.inc:342 -msgid "If checked no password will be used." -msgstr "Falls angekreuzt wird kein Passwort verwendet." - -#: ../lib/modules/sambaAccount.inc:338 ../lib/modules/sambaSamAccount.inc:153 -msgid "If checked password does not expire. (Setting X-Flag)" -msgstr "Falls angekreuzt läuft das Passwort nicht aus. (X-Flag wird gesetzt)" - -#: ../lib/modules/posixGroup.inc:389 -msgid "" -"If empty GID number will be generated automaticly depending on your " -"configuration settings." -msgstr "" -"Falls leer wird die GID-Nummer automatisch auf Basis Ihrer " -"Konfigurationseinstellungen generiert." - -#: ../lib/modules/posixAccount.inc:305 -msgid "If empty UID number will be generated automaticly." -msgstr "Falls leer wird die UID-Nummer automatisch generiert." - -#: ../lib/modules/sambaAccount.inc:329 ../lib/modules/sambaSamAccount.inc:144 -msgid "If set to \"true\" Unix password will also be used as Samba password." -msgstr "" -"Falls auf \"true\" gesetzt wird das Unix-Passwort auch als Samba-Passwort " -"verwendet." - -#: ../lib/modules/sambaAccount.inc:347 ../lib/modules/sambaSamAccount.inc:162 -msgid "If set to \"true\" account will be deactivated. (Setting D-Flag)" -msgstr "" -"Falls auf \"true\" gesetzt wird der Account deaktiviert. (D-Flag wird " -"gesetzt)" - -#: ../lib/modules/sambaAccount.inc:335 ../lib/modules/sambaSamAccount.inc:150 -msgid "If set to \"true\" no password will be used." -msgstr "Falls auf \"true\" gesetzt wird kein Passwort verwendet." - -#: ../lib/modules/sambaAccount.inc:341 ../lib/modules/sambaSamAccount.inc:156 -msgid "If set to \"true\" password does not expire. (Setting X-Flag)" -msgstr "" -"Falls auf \"true\" gesetzt läuft das Passwort nicht aus. (X-Flag wird " -"gesetzt)" - -#: ../lib/modules/sambaSamAccount.inc:189 -msgid "If you leave this empty LAM will use: uidNumber*2 + sambaAlgorithmicRidBase." -msgstr "" -"Wenn Sie das Feld leer lassen wird LAM folgenden Wert einfügen: uidNumber*2 " -"+ sambaAlgorithmicRidBase." - -#: ../help/help.inc:106 -msgid "If you want to change the current preferences password, please enter it here." -msgstr "Wenn Sie das aktuelle Profilpasswort ändern wollen, geben Sie es hier ein." - -#: ../help/help.inc:124 -msgid "" -"If you want to change your master configuration password, please enter it " -"here." -msgstr "Wenn Sie das aktuelle Hauptpasswort ändern wollen, geben Sie es hier ein." - -#: ../lib/modules/sambaAccount.inc:376 -msgid "" -"If you want to create domain administrators or other special users use this " -"option." -msgstr "" -"Wenn Sie Domänenadministratoren oder andere spezielle Benutzer anlegen " -"möchten verwenden Sie bitte diese Option." - -#: ../lib/modules/sambaAccount.inc:370 -#: ../lib/modules/sambaGroupMapping.inc:274 -msgid "If you want to use a well known RID you can selcet a well known group." -msgstr "" -"Wenn Sie eine vordefinierte RID verwenden wollen, wählen Sie eine der " -"vordefinierten Gruppen." - -#: ../templates/tree/export_form.php:119 -msgid "Include system attributes" -msgstr "Systemattribute miteinbeziehen" - -#: ../templates/schema/schema.php:402 ../templates/schema/schema.php:423 -msgid "Inherited from" -msgstr "Geerbt von" - -#: ../templates/schema/schema.php:163 ../templates/schema/schema.php:359 -msgid "Inherits from" -msgstr "Erbt von" - -#: ../lib/modules/quota.inc:33 -msgid "Inode hard quota" -msgstr "hartes Inode-Quota" - -#: ../lib/modules/quota.inc:33 -msgid "" -"Inode hard quota contains invalid characters. Only natural numbers are " -"allowed." -msgstr "" -"Hartes Inode-Limit enthält ungültige Zeichen. Nur natürliche Zahlen sind " -"erlaubt." - -#: ../lib/modules/quota.inc:35 -msgid "Inode quota" -msgstr "Inode-Quota" - -#: ../lib/modules/quota.inc:32 -msgid "Inode soft quota" -msgstr "weiches Inode-Quota" - -#: ../lib/modules/quota.inc:32 -msgid "" -"Inode soft quota contains invalid characters. Only natural numbers are " -"allowed." -msgstr "" -"Weiches Inode-Limit enthält ungültige Zeichen. Nur natürliche Zahlen sind " -"erlaubt." - -#: ../lib/modules/quota.inc:35 -msgid "Inode soft quota must be smaller than inode hard quota." -msgstr "Das weiche Inode-Quota muss kleiner sein als das harte Inode-Quota." - -#: ../lib/modules/sambaAccount.inc:47 ../lib/modules/sambaAccount.inc:48 -#: ../lib/modules/sambaSamAccount.inc:45 -msgid "Inserted user- or groupname in HomePath." -msgstr "Benutzer- oder Gruppenname wurde in Heimatverzeichnis eingefügt." - -#: ../lib/modules/sambaAccount.inc:53 -msgid "Inserted user- or groupname in logon script." -msgstr "Benutzer- oder Gruppenname wurde in Anmeldescript eingefügt." - -#: ../lib/modules/sambaAccount.inc:50 ../lib/modules/sambaAccount.inc:51 -#: ../lib/modules/sambaSamAccount.inc:48 -msgid "Inserted user- or groupname in profilepath." -msgstr "Benutzer- oder Gruppenname wurde in Profilpfad eingefügt." - -#: ../lib/modules/sambaSamAccount.inc:51 -msgid "Inserted user- or groupname in scriptpath." -msgstr "Benutzer- oder Gruppenname wurde in Scriptpfad eingefügt." - -#: ../lib/modules/sambaGroupMapping.inc:57 -msgid "Invalid Account" -msgstr "Ungültiger Account" - -#: ../templates/massBuildAccounts.php:166 -msgid "Invalid RDN attribute!" -msgstr "Ungültiges RDN-Attribut!" - -#: ../lib/modules/posixGroup.inc:177 ../lib/modules/posixAccount.inc:912 -msgid "Invalid password" -msgstr "Ungültiges Passwort" - -#: ../lib/status.inc:61 -msgid "Invalid/Missing Message type" -msgstr "Ungültiger/Fehlender Nachrichtentyp" - -#: ../lib/modules/kolabUser.inc:122 ../lib/modules/kolabUser.inc:169 -#: ../lib/modules/kolabUser.inc:366 ../lib/modules/kolabUser.inc:801 -msgid "Invitation policy" -msgstr "Einladungsregeln" - -#: ../lib/modules/kolabUser.inc:126 -msgid "Invitation policy list" -msgstr "Liste der Einladungsregeln" - -#: ../lib/modules/posixGroup.inc:464 ../lib/modules/posixAccount.inc:68 -msgid "" -"It is possible that this ID-number is reused. This can cause several " -"problems because files with old permissions might still exist. To avoid this " -"warning set maxUID to a higher value." -msgstr "" -"Es ist möglich, dass die ID-Nummer wiederverwendet wird. Das kann einige " -"Probleme verursachen weil Dateien mit alten Zugriffsrechten existieren " -"können. Zur Vermeidung dieser Warnung können Sie die maximale UID-Nummer in " -"den Optionen erhöhen." - -#: ../lib/modules/inetOrgPerson.inc:71 ../lib/modules/inetOrgPerson.inc:98 -#: ../lib/modules/inetOrgPerson.inc:150 ../lib/modules/inetOrgPerson.inc:236 -#: ../lib/modules/inetOrgPerson.inc:417 ../lib/modules/inetOrgPerson.inc:475 -msgid "Job title" -msgstr "Berufsbezeichnung" - -#: ../lib/modules/inetOrgPerson.inc:237 -msgid "Job title of user: President, department manager, ..." -msgstr "Berufsbezeichnung des Benutzers: Präsident, Abteilungsleiter, ..." - -#: ../templates/schema/schema.php:261 -msgid "Jump to a matching rule" -msgstr "Wechseln der Matching-Regel" - -#: ../templates/schema/schema.php:120 -msgid "Jump to an attribute type" -msgstr "Wechseln des Attributtyps" - -#: ../templates/schema/schema.php:314 ../templates/schema/schema.php:364 -#: ../templates/schema/schema.php:379 -msgid "Jump to an object class" -msgstr "Wechseln der Objektklasse" - -#: ../lib/modules/kolabUser.inc:71 -msgid "Kolab" -msgstr "Kolab" - -#: ../lib/status.inc:60 -msgid "LAM Internal Error" -msgstr "LAM interner Fehler" - -#: ../templates/tree/delete_form.php:99 -#, php-format -msgid "" -"LAM can recursively delete this entry and all of its children. See below for " -"a list of all the entries that this action will delete. Do you want to do " -"this?" -msgstr "" -"LAM kann diesen Eintrag rekursiv löschen. Es folgt eine Liste der zu " -"löschenden Einträge. Wollen Sie alle diese Einträge löschen?" - -#: ../templates/massBuildAccounts.php:190 -msgid "LAM has checked your input and is now ready to create the accounts." -msgstr "LAM hat Ihre Eingaben überprüft und kann die Accounts nun erstellen." - -#: ../lib/modules/posixGroup.inc:418 ../lib/modules/posixAccount.inc:301 -msgid "" -"LAM supports CRYPT, SHA, SSHA, MD5 and SMD5 to generate the hash value of " -"passwords. 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." -msgstr "" -"LAM unterstützt die Verfahren CRYPT, SHA, SSHA, MD5 und SMD5 um die Passwort-" -"Hashes zu generieren. SSHA und CRYPT sind am weitesten verbreitet aber CRYPT " -"unterstützt maximal 8 Zeichen. Wir raten davon ab Klartextpasswörter zu " -"verwenden." - -#: ../templates/tree/create.php:180 ../templates/massDoUpload.php:82 -#, php-format -msgid "LAM was unable to create account %s! An LDAP error occured." -msgstr "LAM konnte den Account %s nicht anlegen! Ein LDAP-Fehler trat auf." - -#: ../lib/modules/sambaGroupMapping.inc:352 -msgid "LAM was unable to find a Samba 3 domain with this name!" -msgstr "LAM konnte keine Samba 3 Domäne mit diesem Namen finden!" - -#: ../lib/modules/sambaSamAccount.inc:70 -msgid "LAM was unable to find a domain with this name!" -msgstr "LAM konnte keine Domäne mit diesem Namen finden!" - -#: ../lib/modules/posixAccount.inc:86 -msgid "LAM was unable to find a group with this name!" -msgstr "LAM konnte keine Gruppe mit diesem Namen finden!" - -#: ../lib/modules/posixAccount.inc:1444 -#, php-format -msgid "LAM was unable to modify group memberships for group: %s" -msgstr "LAM konnte die Gruppenzugehörigkeiten für Gruppe %s nicht ändern." - -#: ../templates/profedit/profilepage.php:87 -msgid "LDAP" -msgstr "LDAP" - -#: ../templates/config/confmodules.php:67 ../templates/config/confsave.php:75 -#: ../templates/config/confmain.php:148 -msgid "LDAP Account Manager Configuration" -msgstr "LDAP Account Manager Einstellungen" - -#: ../templates/config/confmain.php:308 -msgid "LDAP List settings" -msgstr "LDAP Listeneinstellungen" - -#: ../templates/lists/listhosts.php:119 ../templates/lists/listgroups.php:119 -#: ../templates/lists/listdomains.php:132 ../templates/lists/listusers.php:147 -msgid "LDAP Search failed! Please check your preferences." -msgstr "LDAP Suche fehlgeschlagen! Bitte überprüfen Sie die Einstellungen." - -#: ../templates/login.php:354 -msgid "LDAP error, server says:" -msgstr "LDAP-Fehler, der Server meldet:" - -#: ../lib/modules.inc:947 -msgid "LDAP operation successful." -msgstr "LDAP-Operation war erfolgreich." - -#: ../templates/login.php:249 -msgid "LDAP server" -msgstr "LDAP-Server" - -#: ../templates/lists/listhosts.php:104 ../templates/lists/listgroups.php:104 -#: ../templates/lists/listdomains.php:121 ../templates/lists/listusers.php:131 -msgid "LDAP sizelimit exceeded, not all entries are shown." -msgstr "" -"LDAP Größenbeschränkung überschritten, es werden nicht alle Einträge " -"angezeigt." - -#: ../templates/profedit/profilepage.php:91 -msgid "LDAP suffix" -msgstr "LDAP-Suffix" - -#: ../templates/massDoUpload.php:117 -msgid "LDAP upload has finished" -msgstr "LDAP-Upload wurde beendet" - -#: ../templates/massDoUpload.php:66 -msgid "LDAP upload in progress. Please wait." -msgstr "LDAP-Upload läuft. Bitte warten." - -#: ../lib/export.inc:440 -#, php-format -msgid "LDIF Export for: %s" -msgstr "LDIF-Export für: %s" - -#: ../templates/login.php:198 -msgid "Language" -msgstr "Sprache" - -#: ../templates/config/confsave.php:153 -msgid "Language is not defined!" -msgstr "Sprache ist nicht definiert!" - -#: ../templates/config/confmain.php:366 -msgid "Language settings" -msgstr "Spacheinstellungen" - -#: ../lib/modules/inetOrgPerson.inc:55 ../lib/modules/inetOrgPerson.inc:137 -#: ../lib/modules/inetOrgPerson.inc:244 ../lib/modules/inetOrgPerson.inc:425 -#: ../lib/modules/inetOrgPerson.inc:477 ../lib/lists.inc:308 -msgid "Last name" -msgstr "Nachname" - -#: ../lib/modules/inetOrgPerson.inc:55 ../lib/modules/inetOrgPerson.inc:56 -msgid "Last name contains invalid characters!" -msgstr "Nachname enthält ungültige Zeichen!" - -#: ../lib/modules/inetOrgPerson.inc:245 -msgid "Last name of user. Only letters, - and spaces are allowed." -msgstr "Nachname des Benutzers. Es sind nur Buchstaben, - und Leerzeichen erlaubt." - -#: ../lib/modules/shadowAccount.inc:338 -msgid "Last password change" -msgstr "Letzte Passwortänderung" - -#: ../templates/pdfedit/pdfpage.php:535 -msgid "Left" -msgstr "Links" - -#: ../templates/tree/export_form.php:147 -msgid "Line ends" -msgstr "Zeilenenden" - -#: ../help/help.inc:71 -msgid "List attributes" -msgstr "Attribute der Listen" - -#: ../templates/config/confsave.php:102 -msgid "List of admin users is empty or invalid!" -msgstr "Liste der berechtigten Benutzer ist ungültig!" - -#: ../templates/tree/delete_form.php:129 -msgid "List of entries to be deleted:" -msgstr "Liste der zu löschenden Einträge:" - -#: ../templates/config/confmain.php:445 ../lib/config.inc:370 -msgid "List of valid users" -msgstr "Liste der berechtigten Benutzer" - -#: ../lib/modules.inc:985 ../lib/modules.inc:988 -msgid "Load profile" -msgstr "Profil laden" - -#: ../lib/modules/sambaGroupMapping.inc:54 -msgid "Local Group" -msgstr "Lokale Gruppe" - -#: ../lib/modules/inetLocalMailRecipient.inc:60 -#: ../lib/modules/inetLocalMailRecipient.inc:206 -msgid "Local address" -msgstr "Lokale Adresse" - -#: ../lib/modules/inetLocalMailRecipient.inc:64 -#: ../lib/modules/inetLocalMailRecipient.inc:97 -#: ../lib/modules/inetLocalMailRecipient.inc:372 -msgid "Local address list" -msgstr "Liste von lokalen Adressen" - -#: ../lib/modules/posixGroup.inc:182 ../lib/modules/posixAccount.inc:220 -#: ../lib/modules/posixAccount.inc:917 ../lib/modules/posixAccount.inc:1046 -msgid "Lock password" -msgstr "Passwort deaktivieren" - -#: ../templates/login.php:224 ../templates/config/conflogin.php:68 -#: ../help/help.inc:45 -msgid "Login" -msgstr "Login" - -#: ../lib/modules/posixAccount.inc:206 ../lib/modules/posixAccount.inc:349 -#: ../lib/modules/posixAccount.inc:923 ../lib/modules/posixAccount.inc:1038 -#: ../lib/modules/posixAccount.inc:1109 ../lib/lists.inc:310 -msgid "Login shell" -msgstr "Login Shell" - -#: ../templates/pdfedit/pdfpage.php:434 -msgid "Logo" -msgstr "Logo" - -#: ../lib/modules/sambaSamAccount.inc:197 -#: ../lib/modules/sambaSamAccount.inc:316 -msgid "Logon hours" -msgstr "Anmeldezeiten" - -#: ../lib/modules/sambaAccount.inc:52 ../lib/modules/sambaAccount.inc:53 -#: ../lib/modules/sambaAccount.inc:142 ../lib/modules/sambaAccount.inc:274 -#: ../lib/modules/sambaAccount.inc:363 ../lib/modules/sambaAccount.inc:736 -#: ../lib/modules/sambaAccount.inc:837 ../lib/modules/sambaSamAccount.inc:178 -#: ../lib/modules/sambaSamAccount.inc:290 -#: ../lib/modules/sambaSamAccount.inc:722 -#: ../lib/modules/sambaSamAccount.inc:869 -#: ../lib/modules/sambaSamAccount.inc:955 -msgid "Logon script" -msgstr "Anmeldeskript" - -#: ../lib/modules/sambaAccount.inc:52 ../lib/modules/sambaAccount.inc:54 -#: ../lib/modules/sambaSamAccount.inc:52 -msgid "Logon script is invalid!" -msgstr "Anmeldeskript ist ungültig!" - -#: ../templates/main_header.php:66 ../templates/logout.php:60 -msgid "Logout" -msgstr "Abmelden" - -#: ../lib/modules/ieee802device.inc:50 ../lib/modules/ieee802device.inc:56 -#: ../lib/modules/ieee802device.inc:67 ../lib/modules/ieee802device.inc:144 -msgid "MAC address" -msgstr "MAC-Adresse" - -#: ../lib/modules/ieee802device.inc:60 -msgid "MAC address list" -msgstr "Liste von MAC-Adressen" - -#: ../lib/modules/ieee802device.inc:257 -msgid "MAC address(es)" -msgstr "MAC-Adresse(n)" - -#: ../lib/modules/nisMailAlias.inc:54 -msgid "Mail aliases" -msgstr "Mail-Aliase" - -#: ../lib/modules/kolabUser.inc:91 ../lib/modules/kolabUser.inc:158 -#: ../lib/modules/kolabUser.inc:206 ../lib/modules/kolabUser.inc:323 -#: ../lib/modules/kolabUser.inc:785 -msgid "Mail quota" -msgstr "Mail-Quota" - -#: ../lib/modules/kolabUser.inc:234 ../lib/modules/kolabUser.inc:235 -msgid "Mail quota must be a number!" -msgstr "Mail-Quota muss eine Zahl sein!" - -#: ../lib/modules/inetLocalMailRecipient.inc:50 -msgid "Mail routing" -msgstr "Mail-Routing" - -#: ../lib/modules/kolabUser.inc:79 -#: ../lib/modules/inetLocalMailRecipient.inc:68 -#: ../lib/modules/inetLocalMailRecipient.inc:74 -#: ../lib/modules/inetLocalMailRecipient.inc:103 -#: ../lib/modules/inetLocalMailRecipient.inc:200 -#: ../lib/modules/inetLocalMailRecipient.inc:375 -msgid "Mail server" -msgstr "Mailserver" - -#: ../lib/modules/kolabUser.inc:150 ../lib/modules/kolabUser.inc:181 -#: ../lib/modules/kolabUser.inc:311 ../lib/modules/kolabUser.inc:317 -#: ../lib/modules/kolabUser.inc:781 -msgid "Mailbox home server" -msgstr "Mailserver" - -#: ../lib/modules/kolabUser.inc:230 -msgid "Mailbox home server name is empty!" -msgstr "Mailservername ist leer!" - -#: ../lib/modules/kolabUser.inc:228 ../lib/modules/kolabUser.inc:229 -msgid "Mailbox home server name is invalid!" -msgstr "Mailservername ist ungültig!" - -#: ../lib/modules/nisMailAlias.inc:61 -msgid "Mails to this name are forwarded to the recipients." -msgstr "Mails an diesen Namen werden an die Empfänger weitergeleitet." - -#: ../lib/modules.inc:902 ../lib/modules.inc:927 -msgid "Main" -msgstr "Allgemein" - -#: ../templates/config/conflogin.php:138 -msgid "Manage profiles" -msgstr "Profile verwalten" - -#: ../templates/tools.php:77 -msgid "Manages OU objects in your LDAP tree." -msgstr "Verwaltet OU-Objekte im LDAP-Baum." - -#: ../templates/tools.php:62 -msgid "Manages Samba 3 domain accounts." -msgstr "Verwaltet Samba 3 Domänen." - -#: ../lib/modules/kolabUser.inc:53 -msgid "Manual" -msgstr "Manuell" - -#: ../lib/modules/kolabUser.inc:55 -msgid "Manual if conflicts" -msgstr "Manuell bei Konflikten" - -#: ../templates/pdfedit/pdfpage.php:508 -msgid "Margin" -msgstr "Abstand" - -#: ../lib/modules/kolabUser.inc:415 ../lib/modules/kolabUser.inc:590 -msgid "Mark account for deletion" -msgstr "Account als gelöscht markieren" - -#: ../lib/modules/kolabUser.inc:162 -msgid "Mark for deletion" -msgstr "Als gelöscht markieren" - -#: ../templates/config/profmanage.php:398 -msgid "Master Password:" -msgstr "Hauptpasswort:" - -#: ../help/help.inc:125 -msgid "Master password" -msgstr "Hauptpasswort" - -#: ../templates/config/profmanage.php:68 -msgid "Master password is wrong!" -msgstr "Hauptpasswort ist falsch!" - -#: ../templates/config/profmanage.php:128 -msgid "Master passwords are different or empty!" -msgstr "Die Passwörter stimmen nicht überein!" - -#: ../templates/schema/schema.php:274 -msgid "Matching rule OID" -msgstr "Matching-Regel OID" - -#: ../templates/schema/schema.php:83 ../templates/schema/schema.php:84 -msgid "Matching rules" -msgstr "Matching-Regeln" - -#: ../templates/config/confsave.php:147 -msgid "Max list entries is invalid!" -msgstr "Maximale Listeneinträge ist ungültig!" - -#: ../templates/pdfedit/pdfpage.php:479 -msgid "Maximize with correct ratio" -msgstr "Größe maximieren (Seitenverhältnis bleibt gleich)" - -#: ../lib/modules/posixGroup.inc:300 ../lib/modules/posixGroup.inc:468 -#: ../lib/modules/posixGroup.inc:469 -msgid "Maximum GID number" -msgstr "Maximale GID-Nummer" - -#: ../lib/modules/posixGroup.inc:317 -msgid "Maximum GID number for Unix groups" -msgstr "Maximale GID-Nummer für Unix-Gruppen" - -#: ../lib/modules/posixGroup.inc:468 -msgid "Maximum GID number is invalid or empty!" -msgstr "Maximale GID-Nummer ist ungültig oder leer!" - -#: ../lib/modules/posixGroup.inc:469 -msgid "Maximum GID number must be greater than minimum GID number!" -msgstr "Die maximale GID-Nummer muss größer sein als die minimale GID-Nummer!" - -#: ../lib/modules/posixAccount.inc:58 ../lib/modules/posixAccount.inc:60 -#: ../lib/modules/posixAccount.inc:61 ../lib/modules/posixAccount.inc:62 -#: ../lib/modules/posixAccount.inc:131 ../lib/modules/posixAccount.inc:140 -msgid "Maximum UID number" -msgstr "Maximale UID-Nummer" - -#: ../lib/modules/posixAccount.inc:161 -msgid "Maximum UID number for Unix accounts (hosts)" -msgstr "Maximale UID-Nummer für Unix-Accounts (Hosts)" - -#: ../lib/modules/posixAccount.inc:159 -msgid "Maximum UID number for Unix accounts (users)" -msgstr "Maximale UID-Nummer für Unix-Accounts (Benutzer)" - -#: ../lib/modules/posixAccount.inc:58 ../lib/modules/posixAccount.inc:60 -msgid "Maximum UID number is invalid!" -msgstr "Maximale UID-Nummer ist ungültig!" - -#: ../lib/modules/posixAccount.inc:61 ../lib/modules/posixAccount.inc:62 -msgid "Maximum UID number must be greater than minimum UID number!" -msgstr "Die maximale UID-Nummer muss größer sein als die minimale UID-Nummer!" - -#: ../templates/tree/add_attr_form.php:166 -#, php-format -msgid "Maximum file size: %s" -msgstr "Maximale Dateigröße: %s" - -#: ../templates/tree/add_value_form.php:193 ../templates/schema/schema.php:220 -msgid "Maximum length" -msgstr "Maximale Länge" - -#: ../templates/config/confmain.php:346 ../lib/config.inc:366 -#: ../help/help.inc:91 -msgid "Maximum list entries" -msgstr "Maximale Listeneinträge" - -#: ../lib/modules/shadowAccount.inc:88 ../lib/modules/shadowAccount.inc:158 -#: ../lib/modules/shadowAccount.inc:188 ../lib/modules/shadowAccount.inc:310 -msgid "Maximum password age" -msgstr "Maximales Passwortalter" - -#: ../lib/modules/inetOrgPerson.inc:139 -msgid "Miller" -msgstr "Müller" - -#: ../lib/modules/posixGroup.inc:297 ../lib/modules/posixGroup.inc:467 -msgid "Minimum GID number" -msgstr "Minimale GID-Nummer" - -#: ../lib/modules/posixGroup.inc:316 -msgid "Minimum GID number for Unix groups" -msgstr "Minimale GID-Nummer für Unix-Gruppen" - -#: ../lib/modules/posixGroup.inc:467 -msgid "Minimum GID number is invalid or empty!" -msgstr "Minimale GID-Nummer ist ungültig oder leer!" - -#: ../lib/modules/posixAccount.inc:57 ../lib/modules/posixAccount.inc:59 -#: ../lib/modules/posixAccount.inc:128 ../lib/modules/posixAccount.inc:137 -msgid "Minimum UID number" -msgstr "Minimale UID-Nummer" - -#: ../lib/modules/posixAccount.inc:160 -msgid "Minimum UID number for Unix accounts (hosts)" -msgstr "Minimale UID-Nummer für Unix-Accounts (Hosts)" - -#: ../lib/modules/posixAccount.inc:158 -msgid "Minimum UID number for Unix accounts (users)" -msgstr "Minimale UID-Nummer für Unix-Accounts (Benutzer)" - -#: ../lib/modules/posixAccount.inc:57 ../lib/modules/posixAccount.inc:59 -msgid "Minimum UID number is invalid!" -msgstr "Minimale UID-Nummer ist ungültig!" - -#: ../lib/modules/shadowAccount.inc:83 ../lib/modules/shadowAccount.inc:154 -#: ../lib/modules/shadowAccount.inc:182 ../lib/modules/shadowAccount.inc:307 -msgid "Minimum password age" -msgstr "Minimales Passwortalter" - -#: ../lib/modules/inetOrgPerson.inc:59 ../lib/modules/inetOrgPerson.inc:186 -#: ../lib/modules/inetOrgPerson.inc:268 ../lib/modules/inetOrgPerson.inc:269 -#: ../lib/modules/inetOrgPerson.inc:449 ../lib/modules/inetOrgPerson.inc:483 -msgid "Mobile number" -msgstr "Mobil" - -#: ../lib/modules.inc:855 ../lib/modules.inc:993 -msgid "Modify Account" -msgstr "Account ändern" - -#: ../templates/config/confmodules.php:75 -msgid "Module selection" -msgstr "Modulauswahl" - -#: ../lib/config.inc:374 -msgid "Module settings" -msgstr "Moduleinstellungen" - -#: ../lib/modules/quota.inc:64 ../lib/modules/quota.inc:291 -#: ../lib/modules/quota.inc:349 ../lib/modules/quota.inc:422 -msgid "Mountpoint" -msgstr "Mountpunkt" - -#: ../lib/modules/quota.inc:65 -msgid "Mountpoint of device with enabled quotas." -msgstr "Mountpunkt des Dateisystems mit aktivierten Quota." - -#: ../lib/modules/inetOrgPerson.inc:176 -msgid "Mycity" -msgstr "Stadt" - -#: ../lib/modules/inetOrgPerson.inc:164 -msgid "Mystreetname 42" -msgstr "Musterstraße 42" - -#: ../templates/tree/templates/creation/new_ou_template.php:59 -#: ../templates/tree/templates/creation/new_ou_template.php:104 -#: ../templates/schema/schema.php:274 ../templates/pdfedit/pdfdelete.php:56 -#: ../templates/pdfedit/pdfdelete.php:59 ../templates/pdfedit/pdfdelete.php:78 -msgid "Name" -msgstr "Name" - -#: ../help/help.inc:137 -msgid "" -"Name under which the profile will be saved. If a profile with the same name " -"exists, it will be overwritten." -msgstr "" -"Name, unter dem das Profil gespeichert wird. Falls ein Profil mit diesem " -"Namen existiert wird es überschrieben." - -#: ../templates/lists/listdomains.php:208 -msgid "New Domain" -msgstr "Neue Domäne" - -#: ../templates/lists/listgroups.php:236 -msgid "New Group" -msgstr "Neue Gruppe" - -#: ../templates/lists/listhosts.php:221 -msgid "New Host" -msgstr "Neuer Host" - -#: ../lib/modules/ieee802device.inc:151 -msgid "New MAC address" -msgstr "Neue MAC-Adresse" - -#: ../templates/ou_edit.php:52 ../templates/ou_edit.php:117 -#: ../templates/ou_edit.php:182 ../templates/ou_edit.php:247 -msgid "New OU created successfully." -msgstr "Neue OU erfolgreich erstellt." - -#: ../templates/config/confmain.php:458 -msgid "New Password" -msgstr "Neues Passwort" - -#: ../templates/config/profmanage.php:135 -msgid "New default profile set successfully." -msgstr "Neues Standardprofil wurde erfolgreich gesetzt." - -#: ../lib/modules/inetLocalMailRecipient.inc:213 -msgid "New local address" -msgstr "Neue lokale Adresse" - -#: ../templates/config/profmanage.php:368 -msgid "New master password" -msgstr "Neues Hauptpasswort" - -#: ../templates/config/profmanage.php:126 -msgid "New master password set successfully." -msgstr "Neues Hauptpasswort wurde erfolgreich gesetzt." - -#: ../templates/tree/templates/creation/new_ou_template.php:47 -#: ../templates/ou_edit.php:341 ../templates/ou_edit.php:378 -#: ../templates/ou_edit.php:415 ../templates/ou_edit.php:452 -#: ../help/help.inc:146 -msgid "New organizational unit" -msgstr "Neue Organizational Unit" - -#: ../templates/config/profmanage.php:116 -msgid "New password set successfully." -msgstr "Neues Passwort wurde erfolgreich gesetzt." - -#: ../lib/modules/nisMailAlias.inc:179 -msgid "New recipient" -msgstr "Neuer Empfänger" - -#: ../templates/tree/add_oclass_form.php:127 -msgid "New required attributes:" -msgstr "Neue erforderliche Attribute:" - -#: ../templates/lists/listusers.php:281 -msgid "New user" -msgstr "Neuer Benutzer" - -#: ../templates/tree/update_confirm.php:150 -msgid "New value" -msgstr "Neuer Wert" - -#: ../templates/tree/create_form.php:137 -#: ../templates/tree/templates/creation/custom.php:86 -#: ../templates/tree/templates/creation/new_ou_template.php:69 -msgid "Next" -msgstr "Weiter" - -#: ../templates/domain.php:155 ../help/help.inc:160 -msgid "Next Group RID" -msgstr "Nächste Gruppen-RID" - -#: ../templates/domain.php:129 ../help/help.inc:156 -msgid "Next RID" -msgstr "Nächste RID" - -#: ../templates/domain.php:284 -msgid "Next RID is not a number!" -msgstr "Nächste RID ist keine Zahl!" - -#: ../help/help.inc:157 -msgid "Next RID to use when creating accounts." -msgstr "Nächste RID für neue Accounts." - -#: ../help/help.inc:161 -msgid "Next RID to use when creating groups." -msgstr "Nächste RID für neue Gruppen." - -#: ../help/help.inc:159 -msgid "Next RID to use when creating user accounts." -msgstr "Nächste RID für neue Benutzer." - -#: ../templates/domain.php:142 ../help/help.inc:158 -msgid "Next User RID" -msgstr "Nächste Benutzer-RID" - -#: ../templates/domain.php:286 -msgid "Next group RID is not a number!" -msgstr "Nächste Gruppen-RID ist keine Zahl!" - -#: ../templates/domain.php:285 -msgid "Next user RID is not a number!" -msgstr "Nächste Benutzer-RID ist keine Zahl!" - -#: ../templates/schema/schema.php:159 ../templates/schema/schema.php:201 -#: ../templates/schema/schema.php:206 ../templates/schema/schema.php:211 -msgid "No" -msgstr "Nein" - -#: ../templates/lists/listdomains.php:126 -#: ../templates/lists/listdomains.php:132 -#: ../templates/lists/listdomains.php:136 -msgid "No Samba domains found!" -msgstr "Keine Samba-Domänen gefunden!" - -#: ../lib/modules/posixAccount.inc:387 ../lib/modules/posixAccount.inc:618 -#: ../lib/modules/posixAccount.inc:851 -msgid "No Unix groups found in LDAP! Please create one first." -msgstr "Keine Unix-Gruppen gefunden, bitte erstellen Sie eine." - -#: ../templates/initsuff.php:161 -msgid "No changes were made." -msgstr "Keine Änderungen vorgenommen." - -#: ../templates/config/conflogin.php:93 -msgid "No configuration profiles found. Please create one." -msgstr "Keine Konfigurationsprofile gefunden, bitte erstellen Sie eines." - -#: ../templates/schema/schema.php:150 -msgid "No description" -msgstr "Keine Beschreibung" - -#: ../lib/modules/posixGroup.inc:465 ../lib/modules/posixAccount.inc:67 -msgid "No free ID-Number!" -msgstr "Keine ID-Nummer mehr frei!" - -#: ../templates/lists/listgroups.php:119 ../templates/lists/listgroups.php:125 -msgid "No groups found!" -msgstr "Keine Gruppen gefunden!" - -#: ../templates/lists/listhosts.php:119 ../templates/lists/listhosts.php:125 -msgid "No hosts found!" -msgstr "Keine Hosts gefunden!" - -#: ../templates/tree/edit.php:188 -msgid "No internal attributes" -msgstr "Keine internen Attribute" - -#: ../templates/pdfedit/pdfpage.php:409 -msgid "No logo" -msgstr "Kein Logo" - -#: ../templates/config/confmodules.php:254 -msgid "No or more than one base module selected!" -msgstr "Es wurde kein oder mehrere Basismodule gewählt!" - -#: ../templates/config/confmain.php:97 -msgid "No password was entered!" -msgstr "Passwort leer!" - -#: ../templates/pdfedit/pdfpage.php:73 -msgid "No section text specified" -msgstr "Kein Abschnittsname angegeben" - -#: ../templates/pdfedit/pdfpage.php:77 -msgid "No static text specified" -msgstr "Kein statischer Text angegeben" - -#: ../templates/tree/edit.php:80 -msgid "No such entry!" -msgstr "Kein Eintrag gefunden!" - -#: ../templates/schema/schema.php:443 -#, php-format -msgid "No such schema item: \"%s\"" -msgstr "Schema-Objekt existiert nicht: \"%s\"" - -#: ../templates/lists/listusers.php:148 ../templates/lists/listusers.php:154 -msgid "No users found!" -msgstr "Keine Benutzer gefunden!" - -#: ../help/help.inc:56 -msgid "Note" -msgstr "Hinweis" - -#: ../templates/tree/add_value_form.php:114 -msgid "" -"Note: You will get an \"inappropriate matching\" error if you have not setup " -"an EQUALITY rule on your LDAP server for this attribute." -msgstr "" -"Hinweis: Sie werden einen \"inappropriate matching\"-Fehler erhalten wenn " -"Sie keine Gleichheitsregel für dieses Attribut am LDAP-Server festgelegt " -"haben." - -#: ../lib/modules/shadowAccount.inc:151 -msgid "Number of days a user can login even his password has expired. -1=always." -msgstr "" -"Anzahl der Tage, in denen sich ein Benutzer anmelden kann, obwohl sein " -"Passwort bereits abgelaufen ist. -1 = immer." - -#: ../lib/modules/shadowAccount.inc:155 -msgid "" -"Number of days a user has to wait until he\\'s allowed to change his " -"password again. If set value must be 0<." -msgstr "" -"Anzahl Tage, die ein Benutzer warten muss bevor er sein Passwort ändern " -"darf. Wert muss >0 sein." - -#: ../lib/modules/shadowAccount.inc:159 -msgid "" -"Number of days after a user has to change his password again. If set value " -"must be 0<." -msgstr "" -"Anzahl Tage, nach denen der Benutzer sein Passwort ändern muss. Wert muss >0 " -"sein." - -#: ../templates/schema/schema.php:153 ../templates/schema/schema.php:350 -msgid "OID" -msgstr "OID" - -#: ../templates/ou_edit.php:58 ../templates/ou_edit.php:123 -#: ../templates/ou_edit.php:188 ../templates/ou_edit.php:253 -msgid "OU already exists!" -msgstr "OU besteht schon!" - -#: ../templates/ou_edit.php:69 ../templates/ou_edit.php:134 -#: ../templates/ou_edit.php:199 ../templates/ou_edit.php:264 -msgid "OU deleted successfully." -msgstr "OU erfolgreich gelöscht." - -#: ../templates/tools.php:76 -msgid "OU editor" -msgstr "OU-Editor" - -#: ../templates/ou_edit.php:62 ../templates/ou_edit.php:127 -#: ../templates/ou_edit.php:192 ../templates/ou_edit.php:257 -msgid "OU is invalid!" -msgstr "OU ist ungültig!" - -#: ../templates/ou_edit.php:99 ../templates/ou_edit.php:164 -#: ../templates/ou_edit.php:229 ../templates/ou_edit.php:294 -msgid "OU is not empty or invalid!" -msgstr "OU ist nicht leer oder ungültig!" - -#: ../help/help.inc:146 ../help/help.inc:148 -msgid "OU-Editor" -msgstr "OU-Editor" - -#: ../templates/tree/templates/creation/custom.php:70 -#: ../templates/schema/schema.php:71 ../templates/schema/schema.php:72 -msgid "Object classes" -msgstr "Objektklassen" - -#: ../lib/modules.inc:1022 ../lib/modules.inc:1060 ../lib/modules.inc:1175 -#, php-format -msgid "ObjectClass %s required but not defined in LDAP." -msgstr "Objektklasse %s wird benötigt, wurde aber nicht in LDAP gefunden." - -#: ../templates/schema/schema.php:158 ../templates/schema/schema.php:289 -msgid "Obsolete" -msgstr "Veraltet" - -#: ../templates/config/conflogin.php:123 ../templates/config/conflogin.php:124 -msgid "Ok" -msgstr "Ok" - -#: ../templates/tree/update_confirm.php:149 -msgid "Old value" -msgstr "Alter Wert" - -#: ../templates/tree/export_form.php:74 -msgid "One (one level beneath base)" -msgstr "Eine Ebene (eine Ebene unter Basis)" - -#: ../templates/tree/templates/creation/custom.php:209 -#: ../templates/schema/schema.php:390 -msgid "Optional attributes" -msgstr "Optionale Attribute" - -#: ../templates/tree/templates/creation/custom.php:225 -msgid "Optional binary attributes" -msgstr "Optionale Binärattribute" - -#: ../templates/schema/schema.php:177 -msgid "Ordering" -msgstr "Sortierung" - -#: ../templates/tree/templates/templates.inc:46 -msgid "Organizational unit" -msgstr "Organizational Unit" - -#: ../templates/tools.php:83 -msgid "PDF editor" -msgstr "PDF-Editor" - -#: ../templates/lists/listhosts.php:226 ../templates/lists/listgroups.php:241 -#: ../templates/lists/listusers.php:286 ../templates/pdfedit/pdfpage.php:573 -msgid "PDF structure" -msgstr "PDF-Struktur" - -#: ../templates/pdfedit/pdfmain.php:101 -msgid "PDF structures" -msgstr "PDF-Strukturen" - -#: ../templates/pdfedit/pdfpage.php:61 -msgid "PDF-structure name not valid" -msgstr "PDF-Strukturname ist nicht gültig" - -#: ../templates/pdfedit/pdfpage.php:429 -msgid "Page settings" -msgstr "Seiteneinstellungen" - -#: ../templates/schema/schema.php:372 -msgid "Parent to" -msgstr "Elter von" - -#: ../templates/login.php:188 ../lib/modules/posixGroup.inc:157 -#: ../lib/modules/posixGroup.inc:169 ../lib/modules/posixGroup.inc:258 -#: ../lib/modules/posixGroup.inc:460 ../lib/modules/posixGroup.inc:461 -#: ../lib/modules/posixGroup.inc:462 ../lib/modules/sambaAccount.inc:59 -#: ../lib/modules/sambaAccount.inc:60 ../lib/modules/sambaAccount.inc:204 -#: ../lib/modules/sambaSamAccount.inc:55 ../lib/modules/sambaSamAccount.inc:56 -#: ../lib/modules/sambaSamAccount.inc:220 ../lib/modules/posixAccount.inc:71 -#: ../lib/modules/posixAccount.inc:72 ../lib/modules/posixAccount.inc:73 -#: ../lib/modules/posixAccount.inc:214 ../lib/modules/posixAccount.inc:337 -#: ../lib/modules/posixAccount.inc:892 ../lib/modules/posixAccount.inc:904 -#: ../lib/modules/posixAccount.inc:997 ../lib/modules/posixAccount.inc:1108 -msgid "Password" -msgstr "Passwort" - -#: ../templates/config/confsave.php:246 -msgid "Password changed!" -msgstr "Passwort geändert!" - -#: ../lib/modules/posixGroup.inc:461 ../lib/modules/sambaAccount.inc:60 -#: ../lib/modules/sambaAccount.inc:61 ../lib/modules/sambaSamAccount.inc:56 -#: ../lib/modules/sambaSamAccount.inc:57 ../lib/modules/posixAccount.inc:72 -#: ../lib/modules/posixAccount.inc:74 -msgid "" -"Password contains invalid characters. Valid characters are: a-z, A-Z, 0-9 " -"and #*,.;:_-+!$%&/|?{[()]}= !" -msgstr "" -"Passwort enthält ungültige Zeichen. Gültige Zeichen sind: a-z, A-Z, 0-9 und " -"#*,.;:_-+!$%&/|?{[()]}= !" - -#: ../lib/modules/sambaAccount.inc:110 ../lib/modules/sambaAccount.inc:226 -#: ../lib/modules/sambaAccount.inc:337 ../lib/modules/sambaAccount.inc:340 -#: ../lib/modules/sambaAccount.inc:701 ../lib/modules/sambaSamAccount.inc:152 -#: ../lib/modules/sambaSamAccount.inc:155 -#: ../lib/modules/sambaSamAccount.inc:242 -#: ../lib/modules/sambaSamAccount.inc:687 -#: ../lib/modules/sambaSamAccount.inc:837 -msgid "Password does not expire" -msgstr "Passwort läuft nicht ab" - -#: ../lib/modules/shadowAccount.inc:43 ../lib/modules/shadowAccount.inc:78 -#: ../lib/modules/shadowAccount.inc:150 ../lib/modules/shadowAccount.inc:176 -#: ../lib/modules/shadowAccount.inc:304 ../lib/modules/shadowAccount.inc:341 -msgid "Password expiration" -msgstr "Passwortablauf" - -#: ../lib/modules/shadowAccount.inc:43 ../lib/modules/shadowAccount.inc:44 -msgid "Password expiration must be are natural number or -1." -msgstr "Passwortablauf muss eine natürliche Zahl oder -1 sein." - -#: ../lib/modules/posixGroup.inc:304 ../lib/modules/posixGroup.inc:417 -#: ../lib/modules/posixAccount.inc:146 ../lib/modules/posixAccount.inc:300 -msgid "Password hash type" -msgstr "Passwort-Hash" - -#: ../lib/modules/posixAccount.inc:162 -msgid "Password hash type for Unix accounts" -msgstr "Passwort-Hashtyp für Unix-Accounts" - -#: ../lib/modules/posixGroup.inc:318 -msgid "Password hash type for Unix groups" -msgstr "Passwort-Hashtyp für Unix-Gruppen" - -#: ../lib/modules/shadowAccount.inc:41 ../lib/modules/shadowAccount.inc:47 -msgid "Password maxage" -msgstr "Maximales Passwortalter" - -#: ../lib/modules/shadowAccount.inc:41 ../lib/modules/shadowAccount.inc:42 -msgid "Password maximum age must be are natural number." -msgstr "Maximales Passwortalter muss eine natürliche Zahl sein." - -#: ../lib/modules/shadowAccount.inc:47 ../lib/modules/shadowAccount.inc:48 -msgid "Password maximum age must be bigger as password minimum age." -msgstr "Maximales Passwortalter muss größer als minimales Passwortalter sein." - -#: ../lib/modules/shadowAccount.inc:39 -msgid "Password minage" -msgstr "Minimales Passwortalter" - -#: ../lib/modules/shadowAccount.inc:39 ../lib/modules/shadowAccount.inc:40 -msgid "Password minimum age must be are natural number." -msgstr "Minimales Passwortalter muss eine natürliche Zahl sein." - -#: ../lib/modules/shadowAccount.inc:45 ../lib/modules/shadowAccount.inc:73 -#: ../lib/modules/shadowAccount.inc:146 ../lib/modules/shadowAccount.inc:170 -#: ../lib/modules/shadowAccount.inc:301 ../lib/modules/shadowAccount.inc:339 -msgid "Password warning" -msgstr "Passwortwarnung" - -#: ../lib/modules/shadowAccount.inc:45 ../lib/modules/shadowAccount.inc:46 -msgid "Password warning must be are natural number." -msgstr "Passwortwarnung muss eine natürliche Zahl sein." - -#: ../templates/config/confsave.php:240 -msgid "Passwords are different!" -msgstr "Die Passwörter stimmen nicht überein!" - -#: ../lib/modules/sambaAccount.inc:361 ../lib/modules/sambaSamAccount.inc:176 -msgid "" -"Path of the user profile. Can be a local absolute path or a UNC-path (\\" -"\\server\\share). $user and $group are replaced with user- and groupname." -msgstr "" -"Pfad zum Benutzerprofil. Kann ein lokaler Pfad oder UNC-Pfad (\\\\Server" -"\\Freigabe) sein. $user und $group werden durch Benutzer- und Gruppenname " -"ersetzt." - -#: ../templates/config/confmain.php:426 ../lib/config.inc:368 -msgid "Path to external script" -msgstr "Pfad zum externen Script" - -#: ../templates/tree/delete_form.php:80 -msgid "Permanently delete all children, too?" -msgstr "Sollen auch alle Untereinträge gelöscht werden?" - -#: ../lib/modules/inetOrgPerson.inc:88 -msgid "Personal" -msgstr "Persönlich" - -#: ../templates/delete.php:77 -msgid "Please confirm:" -msgstr "Bitte bestätigen:" - -#: ../lib/modules/sambaSamAccount.inc:60 -msgid "Please enter a RID number or the name of a special account!" -msgstr "Bitte geben Sie eine RID-Nummer oder den Namen eines Spezialaccounts ein!" - -#: ../lib/modules/inetOrgPerson.inc:281 -msgid "" -"Please enter a comma separated list of host names where this user is allowed " -"to log in. Can be left empty." -msgstr "" -"Kommagetrennte Liste von Arbeitsstationen, auf welchen sich der " -"Benutzer anmelden darf. Kann leer sein." - -#: ../lib/modules/sambaAccount.inc:55 ../lib/modules/sambaAccount.inc:56 -#: ../lib/modules/sambaSamAccount.inc:53 ../lib/modules/sambaSamAccount.inc:54 -msgid "Please enter a comma separated list of host names!" -msgstr "Bitte geben Sie eine Liste von Hostnamen, getrennt durch Kommata, ein!" - -#: ../lib/modules/inetOrgPerson.inc:75 -msgid "Please enter a valid common name!" -msgstr "Bitte geben Sie einen gültigen allgemeinen Namen ein!" - -#: ../lib/modules/sambaAccount.inc:69 ../lib/modules/sambaAccount.inc:70 -#: ../lib/modules/sambaSamAccount.inc:67 ../lib/modules/sambaSamAccount.inc:68 -msgid "Please enter a valid date in format DD-MM-YYYY." -msgstr "Bitte geben Sie ein gültiges Datum im Format TT-MM-JJJJ ein." - -#: ../lib/modules/sambaAccount.inc:64 ../lib/modules/sambaSamAccount.inc:62 -msgid "Please enter a valid display name!" -msgstr "Bitte geben Sie einen gültigen Anzeigenamen ein!" - -#: ../lib/modules/sambaAccount.inc:71 ../lib/modules/sambaSamAccount.inc:69 -msgid "Please enter a valid drive letter." -msgstr "Bitte geben Sie einen gültigen Laufwerksbuchstaben ein." - -#: ../lib/modules/inetOrgPerson.inc:63 ../lib/modules/inetOrgPerson.inc:64 -msgid "Please enter a valid eMail address!" -msgstr "Bitte geben Sie eine gültige e-mail Adresse ein!" - -#: ../lib/modules/inetOrgPerson.inc:73 ../lib/modules/inetOrgPerson.inc:74 -msgid "Please enter a valid employee type!" -msgstr "Bitte geben Sie einen gültigen Angestelltentyp ein!" - -#: ../lib/modules/inetOrgPerson.inc:61 ../lib/modules/inetOrgPerson.inc:62 -msgid "Please enter a valid fax number!" -msgstr "Bitte geben Sie eine gültige Faxnummer ein!" - -#: ../lib/modules/sambaAccount.inc:72 -msgid "Please enter a valid group RID." -msgstr "Bitte geben Sie eine gültige Gruppen-RID ein." - -#: ../lib/modules/sambaSamAccount.inc:72 -msgid "Please enter a valid group name!" -msgstr "Bitte geben Sie einen gültigen Gruppennamen ein!" - -#: ../lib/modules/inetOrgPerson.inc:71 ../lib/modules/inetOrgPerson.inc:72 -msgid "Please enter a valid job title!" -msgstr "Bitte geben Sie eine gültige Berufsbezeichnung ein!" - -#: ../lib/modules/inetOrgPerson.inc:59 ../lib/modules/inetOrgPerson.inc:60 -msgid "Please enter a valid mobile number!" -msgstr "Bitte geben Sie eine gültige Mobiltelefonnummer ein!" - -#: ../lib/modules/inetOrgPerson.inc:67 ../lib/modules/inetOrgPerson.inc:68 -msgid "Please enter a valid postal address!" -msgstr "Bitte geben Sie eine gültige Anschrift ein!" - -#: ../lib/modules/inetOrgPerson.inc:69 ../lib/modules/inetOrgPerson.inc:70 -msgid "Please enter a valid postal code!" -msgstr "Bitte geben Sie eine gültige Postleitzahl ein!" - -#: ../lib/modules/sambaAccount.inc:73 -msgid "Please enter a valid special user name." -msgstr "Bitte geben Sie den Namen eines gültigen Spezialaccounts ein." - -#: ../lib/modules/inetOrgPerson.inc:65 ../lib/modules/inetOrgPerson.inc:66 -msgid "Please enter a valid street name!" -msgstr "Bitte geben Sie einen gültigen Straßennamen ein!" - -#: ../lib/modules/inetOrgPerson.inc:57 ../lib/modules/inetOrgPerson.inc:58 -msgid "Please enter a valid telephone number!" -msgstr "Bitte geben Sie eine gültige Telefonnummer ein!" - -#: ../lib/modules/posixGroup.inc:577 ../lib/modules/posixAccount.inc:672 -#, php-format -msgid "Please enter a value between %s and %s!" -msgstr "Bitte geben Sie einen Wert zwischen %s und %s ein!" - -#: ../templates/config/conflogin.php:87 -msgid "Please enter password to change preferences:" -msgstr "Bitte Profilpasswort eingeben:" - -#: ../help/help.inc:46 -msgid "" -"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\"." -msgstr "" -"Bitte geben Sie das Konfigurationspasswort ein. Das ist NICHT ihr LDAP-" -"Passwort. Es befindet sich in ihrer .conf-Datei. Wenn Sie sich zum ersten " -"Mal anmelden geben Sie \"lam\" ein." - -#: ../help/help.inc:126 -msgid "" -"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\"." -msgstr "" -"Bitte geben Sie das Hauptpasswort ein. Das ist NICHT ihr LDAP-Passwort. Es " -"befindet sich in ihrer config.cfg-Datei. Wenn Sie sich zum ersten Mal " -"anmelden geben Sie \"lam\" ein." - -#: ../help/help.inc:114 -msgid "" -"Please enter the name of the new profile and the password to change its " -"settings. Profile names may contain letters, numbers and -/_." -msgstr "" -"Bitte geben Sie den Namen des neuen Profils und das Passwort an um es zu " -"erstellen. Profilnamen dürfen Buchstaben, Zahlen und -/_ enthalten." - -#: ../help/help.inc:116 -msgid "" -"Please enter the new name of the profile. The name may contain letters, " -"numbers and -/_." -msgstr "" -"Bitte geben Sie den neuen Namen des Profils an. Profilnamen dürfen " -"Buchstaben, Zahlen und -/_ enthalten." - -#: ../lib/modules/posixAccount.inc:338 -msgid "Please enter the password which you want to set for this account." -msgstr "Bitte geben Sie das Passwort für diesen Account ein." - -#: ../lib/modules/posixAccount.inc:317 -msgid "Please enter the path to the user's home directory." -msgstr "Bitte geben Sie den Pfad zum Heimatverzeichnis des Benutzers an." - -#: ../lib/modules/posixGroup.inc:460 ../lib/modules/sambaAccount.inc:59 -#: ../lib/modules/sambaSamAccount.inc:55 ../lib/modules/posixAccount.inc:71 -msgid "Please enter the same password in both password-fields." -msgstr "Bitte geben Sie das selbe Passwort in beide Felder ein." - -#: ../templates/masscreate.php:120 -msgid "" -"Please provide a CSV formated file with your account data. The cells in the " -"first row must be filled with the column identifiers. The following rows " -"represent one account for each row." -msgstr "" -"Bitte erstellen Sie eine CSV-formatierte Datei mit Ihren Accountdaten. Die " -"Zellen der ersten Zeile müssen mit den Spaltenbezeichnern gefüllt werden. " -"Alle nachfolgenden Zeilen repräsentieren jeweils einen Account." - -#: ../lib/status.inc:62 -msgid "" -"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." -msgstr "" -"Bitte melden Sie dieses Problem an den Bug-Tracker des {link=http://lam.sf." -"net}LDAP Account Manager Entwickler-Teams{endlink}. Die Fehlernummer ist " -"{bold}0001:Fehlerhafter/Fehlender Nachrichtentyp.{endbold} Danke." - -#: ../lib/modules.inc:897 -msgid "Please select page:" -msgstr "Bitte Seite wählen:" - -#: ../templates/masscreate.php:89 -msgid "Please select your account type:" -msgstr "Bitte Accounttyp wählen:" - -#: ../templates/login.php:161 -msgid "Please select your user name and enter your password to log in" -msgstr "Bitte wählen Sie Ihren Benutzernamen und geben das Passwort ein" - -#: ../lib/modules.inc:888 -#, php-format -msgid "Please set up all required attributes on page: %s" -msgstr "Bitte setzen Sie alle erforderlichen Werte auf der Seite: %s" - -#: ../templates/config/profmanage.php:148 -msgid "Please set up your master configuration file (config/config.cfg) first!" -msgstr "" -"Bitte konfigurieren Sie zuerst die Haupteinstellungsdatei (config/config." -"cfg)!" - -#: ../lib/modules/kolabUser.inc:223 -msgid "Policy list has invalid format!" -msgstr "Regelliste hat ungültiges Format!" - -#: ../templates/pdfedit/pdfpage.php:708 -msgid "Position" -msgstr "Position" - -#: ../templates/masscreate.php:163 ../templates/masscreate.php:301 -#: ../lib/modules/sambaGroupMapping.inc:353 -msgid "Possible values" -msgstr "Mögliche Werte" - -#: ../lib/modules/inetOrgPerson.inc:67 ../lib/modules/inetOrgPerson.inc:174 -#: ../lib/modules/inetOrgPerson.inc:260 ../lib/modules/inetOrgPerson.inc:441 -#: ../lib/modules/inetOrgPerson.inc:481 -msgid "Postal address" -msgstr "Anschrift" - -#: ../lib/modules/inetOrgPerson.inc:261 -msgid "Postal address, city" -msgstr "Bitte geben Sie hier die Anschrift ein." - -#: ../lib/modules/inetOrgPerson.inc:69 ../lib/modules/inetOrgPerson.inc:168 -#: ../lib/modules/inetOrgPerson.inc:256 ../lib/modules/inetOrgPerson.inc:257 -#: ../lib/modules/inetOrgPerson.inc:437 ../lib/modules/inetOrgPerson.inc:480 -msgid "Postal code" -msgstr "Postleitzahl" - -#: ../help/help.inc:76 -msgid "Predefined values" -msgstr "Vordefinierte Werte" - -#: ../lib/modules/inetOrgPerson.inc:152 -msgid "President" -msgstr "Präsident" - -#: ../lib/modules/posixGroup.inc:129 ../lib/modules/posixAccount.inc:186 -#: ../lib/modules/posixAccount.inc:253 ../lib/modules/posixAccount.inc:308 -#: ../lib/modules/posixAccount.inc:329 ../lib/modules/posixAccount.inc:367 -#: ../lib/modules/posixAccount.inc:871 ../lib/modules/posixAccount.inc:1025 -#: ../lib/modules/posixAccount.inc:1053 ../lib/modules/posixAccount.inc:1105 -msgid "Primary group" -msgstr "Primäre Gruppe" - -#: ../templates/config/profmanage.php:106 -msgid "Profile deleted." -msgstr "Profil gelöscht." - -#: ../templates/tools.php:53 -msgid "Profile editor" -msgstr "Profileditor" - -#: ../templates/config/profmanage.php:50 -#: ../templates/config/profmanage.php:161 ../help/help.inc:113 -#: ../help/help.inc:115 ../help/help.inc:117 ../help/help.inc:119 -#: ../help/help.inc:121 ../help/help.inc:123 ../help/help.inc:125 -msgid "Profile management" -msgstr "Profilverwaltung" - -#: ../templates/config/profmanage.php:176 -#: ../templates/config/profmanage.php:228 -#: ../templates/profedit/profilepage.php:152 ../help/help.inc:136 -msgid "Profile name" -msgstr "Profilname" - -#: ../templates/config/profmanage.php:90 -#: ../templates/config/profmanage.php:101 -msgid "Profile name is invalid!" -msgstr "Profilname ist ungültig!" - -#: ../templates/config/profmanage.php:192 -#: ../templates/config/profmanage.php:292 -msgid "Profile password" -msgstr "Profilpasswort" - -#: ../templates/config/profmanage.php:88 -#: ../templates/config/profmanage.php:118 -msgid "Profile passwords are different or empty!" -msgstr "Die Passwörter stimmen nicht überein!" - -#: ../lib/modules/sambaAccount.inc:49 ../lib/modules/sambaAccount.inc:50 -#: ../lib/modules/sambaAccount.inc:136 ../lib/modules/sambaAccount.inc:268 -#: ../lib/modules/sambaAccount.inc:360 ../lib/modules/sambaAccount.inc:733 -#: ../lib/modules/sambaAccount.inc:838 ../lib/modules/sambaSamAccount.inc:47 -#: ../lib/modules/sambaSamAccount.inc:48 -#: ../lib/modules/sambaSamAccount.inc:175 -#: ../lib/modules/sambaSamAccount.inc:284 -#: ../lib/modules/sambaSamAccount.inc:719 -#: ../lib/modules/sambaSamAccount.inc:863 -#: ../lib/modules/sambaSamAccount.inc:956 -msgid "Profile path" -msgstr "Profilpfad" - -#: ../lib/modules/sambaAccount.inc:49 ../lib/modules/sambaSamAccount.inc:47 -#: ../lib/modules/sambaSamAccount.inc:49 -msgid "Profile path is invalid!" -msgstr "Profilpfad ist ungültig!" - -#: ../templates/profedit/profilecreate.php:112 -msgid "Profile was saved." -msgstr "Profil wurde gespeichert." - -#: ../lib/modules/quota.inc:48 -msgid "Quota" -msgstr "Quota" - -#: ../templates/tree/templates/creation/custom.php:62 -msgid "RDN" -msgstr "RDN" - -#: ../templates/masscreate.php:155 ../templates/profedit/profilepage.php:111 -#: ../lib/modules.inc:977 ../help/help.inc:134 -msgid "RDN identifier" -msgstr "RDN-Bezeichner" - -#: ../lib/lists.inc:328 -msgid "RID (Windows UID)" -msgstr "RID (Windows UID)" - -#: ../templates/tree/templates/creation/new_ou_template.php:99 -msgid "Really create this new OU?" -msgstr "Soll diese neue OU erstellt werden?" - -#: ../templates/tree/edit.php:522 -msgid "Really delete attribute?" -msgstr "Dieses Attribut wirklich löschen?" - -#: ../lib/modules/nisMailAlias.inc:64 ../lib/modules/nisMailAlias.inc:172 -msgid "Recipient" -msgstr "Empfänger" - -#: ../lib/modules/nisMailAlias.inc:68 ../lib/modules/nisMailAlias.inc:82 -#: ../lib/modules/nisMailAlias.inc:308 -msgid "Recipient list" -msgstr "Empfängerliste" - -#: ../templates/tree/rdelete.php:71 -msgid "Recursive delete progress" -msgstr "Fortschritt des Löschvorgangs" - -#: ../templates/config/confmain.php:468 -msgid "Reenter Password" -msgstr "Passwort nochmal eingeben" - -#: ../templates/config/profmanage.php:384 -msgid "Reenter new master password" -msgstr "Neues Hauptpasswort erneut eingeben" - -#: ../templates/config/profmanage.php:201 -#: ../templates/config/profmanage.php:308 -msgid "Reenter profile password" -msgstr "Profilpasswort erneut eingeben" - -#: ../templates/tree/edit.php:100 ../lib/tree.inc:64 ../lib/tree.inc:65 -#: ../lib/lists.inc:150 -msgid "Refresh" -msgstr "Aktualisieren" - -#: ../lib/modules/kolabUser.inc:54 -msgid "Reject if conflicts" -msgstr "Ablehnen bei Konflikten" - -#: ../templates/tree/templates/creation/custom.php:62 -msgid "Relative distinguished name" -msgstr "Relativer eindeutiger Name" - -#: ../templates/pdfedit/pdfpage.php:581 ../lib/modules/ieee802device.inc:146 -#: ../lib/modules/kolabUser.inc:355 ../lib/modules/kolabUser.inc:374 -#: ../lib/modules/kolabUser.inc:400 -#: ../lib/modules/inetLocalMailRecipient.inc:208 -#: ../lib/modules/nisMailAlias.inc:174 -msgid "Remove" -msgstr "Löschen" - -#: ../templates/config/profmanage.php:224 ../help/help.inc:115 -msgid "Rename profile" -msgstr "Profil umbenennen" - -#: ../templates/config/profmanage.php:97 -msgid "Renamed profile." -msgstr "Profil umbenannt." - -#: ../lib/modules/posixGroup.inc:163 ../lib/modules/posixGroup.inc:262 -#: ../lib/modules/sambaAccount.inc:690 ../lib/modules/sambaSamAccount.inc:676 -#: ../lib/modules/posixAccount.inc:898 ../lib/modules/posixAccount.inc:1003 -msgid "Repeat password" -msgstr "Passwort wiederholen" - -#: ../lib/modules/posixAccount.inc:65 ../lib/modules/posixAccount.inc:730 -msgid "Replaced $user or $group in homedir." -msgstr "$user und $group wurden im Heimatverzeichnis ersetzt." - -#: ../templates/tree/edit.php:241 -#, php-format -msgid "Required attribute for objectClass(es) %s" -msgstr "Erforderliches Attribut für Objektklasse(n) %s" - -#: ../templates/tree/templates/creation/custom.php:187 -#: ../templates/schema/schema.php:389 -msgid "Required attributes" -msgstr "Vorgeschriebene Attribute" - -#: ../templates/domain.php:222 ../templates/config/confmain.php:483 -#: ../templates/profedit/profilepage.php:162 -msgid "Reset" -msgstr "Zurücksetzen" - -#: ../lib/modules.inc:919 -msgid "Reset changes" -msgstr "Änderungen zurücksetzen" - -#: ../lib/modules/sambaAccount.inc:780 ../lib/modules/sambaSamAccount.inc:768 -msgid "Reset password" -msgstr "Passwort zurücksetzen" - -#: ../lib/modules/inetLocalMailRecipient.inc:56 -#: ../lib/modules/inetLocalMailRecipient.inc:91 -#: ../lib/modules/inetLocalMailRecipient.inc:195 -#: ../lib/modules/inetLocalMailRecipient.inc:369 -msgid "Routing address" -msgstr "Routing-Adresse" - -#: ../lib/modules/sambaAccount.inc:91 -msgid "Samba 2" -msgstr "Samba 2" - -#: ../lib/modules/sambaSamAccount.inc:89 -#: ../lib/modules/sambaGroupMapping.inc:218 -msgid "Samba 3" -msgstr "Samba 3" - -#: ../templates/domain.php:279 -msgid "Samba 3 domain SID is invalid!" -msgstr "Samba 3 Domänen-SID ist ungültig!" - -#: ../templates/tools.php:61 -msgid "Samba 3 domains" -msgstr "Samba 3 Domänen" - -#: ../templates/ou_edit.php:410 -msgid "Samba Hosts" -msgstr "Samba Hosts" - -#: ../lib/modules/sambaSamAccount.inc:187 -#: ../lib/modules/sambaSamAccount.inc:191 -#: ../lib/modules/sambaSamAccount.inc:309 -#: ../lib/modules/sambaSamAccount.inc:333 -msgid "Samba RID" -msgstr "Samba-RID" - -#: ../lib/modules/sambaGroupMapping.inc:252 -#: ../lib/modules/sambaGroupMapping.inc:277 -msgid "Samba RID number" -msgstr "Samba RID-Nummer" - -#: ../lib/modules/sambaGroupMapping.inc:246 -msgid "Samba display name" -msgstr "Samba Anzeigename" - -#: ../lib/modules/sambaGroupMapping.inc:238 -msgid "Samba domain name" -msgstr "Samba Domänenname" - -#: ../lib/modules/sambaGroupMapping.inc:258 -#: ../lib/modules/sambaGroupMapping.inc:285 -#: ../lib/modules/sambaGroupMapping.inc:302 -msgid "Samba group type" -msgstr "Samba-Gruppentyp" - -#: ../lib/modules/sambaAccount.inc:322 ../lib/modules/sambaAccount.inc:687 -#: ../lib/modules/sambaSamAccount.inc:137 -#: ../lib/modules/sambaSamAccount.inc:674 -msgid "Samba password" -msgstr "Samba-Passwort" - -#: ../lib/modules/sambaAccount.inc:55 ../lib/modules/sambaAccount.inc:148 -#: ../lib/modules/sambaAccount.inc:280 ../lib/modules/sambaAccount.inc:366 -#: ../lib/modules/sambaAccount.inc:739 ../lib/modules/sambaAccount.inc:839 -#: ../lib/modules/sambaSamAccount.inc:53 -#: ../lib/modules/sambaSamAccount.inc:181 -#: ../lib/modules/sambaSamAccount.inc:296 -#: ../lib/modules/sambaSamAccount.inc:725 -#: ../lib/modules/sambaSamAccount.inc:875 -#: ../lib/modules/sambaSamAccount.inc:957 -msgid "Samba workstations" -msgstr "Samba PCs" - -#: ../templates/tree/edit.php:509 ../templates/pdfedit/pdfpage.php:831 -#: ../templates/profedit/profilepage.php:160 -msgid "Save" -msgstr "Speichern" - -#: ../templates/tree/export_form.php:123 -msgid "Save as file" -msgstr "Als Datei speichern" - -#: ../templates/config/confsave.php:177 -msgid "Saving group modules failed!" -msgstr "Speichern der Gruppenmodule fehlgeschlagen!" - -#: ../templates/config/confsave.php:183 -msgid "Saving host modules failed!" -msgstr "Speichern der Hostmodule fehlgeschlagen!" - -#: ../templates/config/confsave.php:171 -msgid "Saving user modules failed!" -msgstr "Speichern der Benutzermodule fehlgeschlagen!" - -#: ../templates/tools.php:90 -msgid "Schema browser" -msgstr "Schema-Browser" - -#: ../templates/pdfedit/pdfdelete.php:56 ../templates/pdfedit/pdfdelete.php:59 -#: ../templates/pdfedit/pdfdelete.php:78 -msgid "Scope" -msgstr "Typ" - -#: ../lib/modules/sambaSamAccount.inc:50 ../lib/modules/sambaSamAccount.inc:51 -#: ../help/help.inc:95 -msgid "Script path" -msgstr "Scriptpfad" - -#: ../templates/config/confsave.php:159 ../lib/modules/sambaSamAccount.inc:50 -msgid "Script path is invalid!" -msgstr "Scriptpfad ist ungültig!" - -#: ../help/help.inc:100 -msgid "Script server" -msgstr "Scriptserver" - -#: ../templates/config/confsave.php:165 -msgid "Script server is invalid!" -msgstr "Scriptserver ist ungültig!" - -#: ../templates/config/confmain.php:413 -msgid "Script settings" -msgstr "Scripteinstellungen" - -#: ../templates/tree/export_form.php:114 ../lib/export.inc:442 -#: ../lib/export.inc:512 -msgid "Search filter" -msgstr "Suchfilter" - -#: ../templates/tree/export_form.php:102 ../lib/export.inc:441 -#: ../lib/export.inc:511 -msgid "Search scope" -msgstr "Suchbereich" - -#: ../templates/pdfedit/pdfpage.php:740 -msgid "Section" -msgstr "Abschnitt" - -#: ../templates/config/confmain.php:441 -msgid "Security settings" -msgstr "Sicherheitseinstellungen" - -#: ../templates/lists/listhosts.php:104 ../templates/lists/listgroups.php:104 -#: ../templates/lists/listdomains.php:121 ../templates/lists/listusers.php:131 -msgid "See README.openldap.txt to solve this problem." -msgstr "Bitte lesen Sie README.openldap.txt um dieses Problem zu lösen." - -#: ../templates/help.php:112 -msgid "See also" -msgstr "Siehe auch" - -#: ../templates/tree/create_form.php:76 -msgid "Select a template for the creation process" -msgstr "Wählen Sie eine Vorlage für den Anlegevorgang" - -#: ../templates/lists/listhosts.php:199 ../templates/lists/listgroups.php:216 -#: ../templates/lists/listusers.php:246 -msgid "Select all" -msgstr "Alle auswählen" - -#: ../lib/modules/posixAccount.inc:967 -msgid "Selected groups" -msgstr "Gewählte Gruppen" - -#: ../templates/config/confmodules.php:169 -msgid "Selected modules" -msgstr "Ausgewählte Module" - -#: ../lib/modules/posixGroup.inc:228 -msgid "Selected users" -msgstr "Ausgewählte Benutzer" - -#: ../templates/config/confsave.php:92 -msgid "Server Address is empty!" -msgstr "Die Server Addresse ist nicht gesetzt!" - -#: ../templates/config/confmain.php:161 ../lib/config.inc:356 -#: ../help/help.inc:47 -msgid "Server address" -msgstr "Serveraddresse" - -#: ../templates/config/confmain.php:417 ../lib/config.inc:369 -msgid "Server of external script" -msgstr "Server mit externem Script" - -#: ../templates/config/confmain.php:158 -msgid "Server settings" -msgstr "Servereinstellungen" - -#: ../lib/modules/posixGroup.inc:173 ../lib/modules/posixAccount.inc:908 -#: ../lib/modules/posixAccount.inc:1042 -msgid "Set no password" -msgstr "Kein Passwort setzen" - -#: ../templates/config/profmanage.php:288 ../help/help.inc:119 -msgid "Set profile password" -msgstr "Profilpasswort setzen" - -#: ../lib/modules/posixGroup.inc:405 -msgid "Sets the group password." -msgstr "Setzt das Gruppenpasswort." - -#: ../lib/modules/shadowAccount.inc:62 -msgid "Shadow" -msgstr "Shadow" - -#: ../templates/massBuildAccounts.php:198 -msgid "Show LDIF file" -msgstr "Zeige LDIF-Datei" - -#: ../templates/tree/edit.php:106 -msgid "Show internal attributes" -msgstr "Interne Attribute anzeigen" - -#: ../templates/schema/schema.php:200 -msgid "Single valued" -msgstr "Einzelwert" - -#: ../templates/pdfedit/pdfpage.php:455 -msgid "Size" -msgstr "Größe" - -#: ../lib/modules/quota.inc:422 -msgid "Soft block" -msgstr "weiches Block-Limit" - -#: ../lib/modules/quota.inc:72 ../lib/modules/quota.inc:293 -#: ../lib/modules/quota.inc:350 -msgid "Soft block limit" -msgstr "weiches Block-Limit" - -#: ../lib/modules/quota.inc:73 -msgid "Soft block limit." -msgstr "weiches Block-Limit" - -#: ../lib/modules/quota.inc:422 -msgid "Soft inode" -msgstr "weiches Inode-Limit" - -#: ../lib/modules/quota.inc:89 -msgid "Soft inode (files) limit." -msgstr "Weiches Inode-Limit (Dateien)." - -#: ../lib/modules/quota.inc:88 ../lib/modules/quota.inc:297 -#: ../lib/modules/quota.inc:352 -msgid "Soft inode limit" -msgstr "weiches Inode-Limit" - -#: ../templates/tree/edit.php:136 -#, php-format -msgid "Some attributes (%s) were modified and are highlighted below." -msgstr "Einige Attribute (%s) wurden geändert und sind nun hervorgehoben." - -#: ../lib/modules.inc:887 -msgid "Some required information is missing" -msgstr "Einige benötigte Informationen fehlen noch" - -#: ../templates/help.php:144 -#, php-format -msgid "" -"Sorry this help id ({bold}%s{endbold}) is not available for this module " -"({bold}%s{endbold})." -msgstr "" -"Diese Hilfenummer ({bold}%s{endbold}) ist leider nicht verfügbar für das " -"Modul: {bold}%s{endbold}." - -#: ../templates/help.php:157 -#, php-format -msgid "Sorry this help number ({bold}%d{endbold}) is not available." -msgstr "Diese Hilfenummer ist leider nicht verfügbar: {bold}%d{endbold}" - -#: ../lib/modules/sambaAccount.inc:62 ../lib/modules/sambaAccount.inc:63 -#: ../lib/modules/sambaAccount.inc:293 ../lib/modules/sambaAccount.inc:375 -#: ../lib/modules/sambaAccount.inc:771 ../lib/modules/sambaSamAccount.inc:58 -#: ../lib/modules/sambaSamAccount.inc:59 -#: ../lib/modules/sambaSamAccount.inc:759 -msgid "Special user" -msgstr "Spezieller Benutzer" - -#: ../templates/pdfedit/pdfpage.php:645 ../templates/pdfedit/pdfpage.php:651 -#: ../templates/pdfedit/pdfpage.php:777 -msgid "Static text" -msgstr "Statischer Text" - -#: ../templates/tree/templates/creation/custom.php:54 -msgid "Step 1 of 2: Name and object class(es)" -msgstr "Schritt 1 von 2: Name und Objektklasse(n)" - -#: ../templates/tree/templates/creation/custom.php:177 -msgid "Step 2 of 2: Specify attributes and values" -msgstr "Schritt 2 von 2: Attribute und Werte" - -#: ../lib/modules/inetOrgPerson.inc:133 -msgid "Steve" -msgstr "Hans" - -#: ../lib/modules/sambaAccount.inc:200 ../lib/modules/sambaSamAccount.inc:216 -#: ../lib/modules/inetOrgPerson.inc:126 -msgid "Steve Miller" -msgstr "Hans Müller" - -#: ../lib/modules/posixAccount.inc:230 -msgid "Steve Miller,Room 2.14,123-123-1234,123-123-1234" -msgstr "Hans Müller,Raum 2.14,123-123-1234,123-123-1234" - -#: ../lib/modules/inetOrgPerson.inc:65 ../lib/modules/inetOrgPerson.inc:162 -#: ../lib/modules/inetOrgPerson.inc:252 ../lib/modules/inetOrgPerson.inc:253 -#: ../lib/modules/inetOrgPerson.inc:433 ../lib/modules/inetOrgPerson.inc:479 -msgid "Street" -msgstr "Straße" - -#: ../templates/pdfedit/pdfpage.php:805 -msgid "Structure name" -msgstr "Name der Struktur" - -#: ../templates/tree/export_form.php:75 -msgid "Sub (entire subtree)" -msgstr "Unterhalb (kompletter Baum unter Basis-DN)" - -#: ../templates/tree/export_form.php:164 ../templates/ou_edit.php:94 -#: ../templates/ou_edit.php:159 ../templates/ou_edit.php:224 -#: ../templates/ou_edit.php:289 ../templates/ou_edit.php:480 -#: ../templates/domain.php:221 ../templates/config/profmanage.php:403 -#: ../templates/config/confmodules.php:98 -#: ../templates/config/confmodules.php:101 -#: ../templates/config/confmain.php:481 ../templates/pdfedit/pdfdelete.php:81 -#: ../templates/pdfedit/pdfpage.php:797 ../templates/pdfedit/pdfmain.php:143 -#: ../templates/profedit/profiledelete.php:84 -#: ../templates/profedit/profilemain.php:156 ../lib/modules/posixGroup.inc:267 -#: ../lib/modules/posixAccount.inc:1008 -msgid "Submit" -msgstr "Abschicken" - -#: ../templates/pdfedit/pdfpage.php:445 ../templates/pdfedit/pdfpage.php:490 -msgid "Submit page settings" -msgstr "Seiteneinstellungen übernehmen" - -#: ../templates/schema/schema.php:182 -msgid "Substring Rule" -msgstr "Substring-Regel" - -#: ../templates/tree/rdelete.php:135 ../templates/tree/rdelete.php:147 -msgid "Success" -msgstr "Erfolg" - -#: ../templates/domain.php:189 ../lib/lists.inc:349 ../lib/modules.inc:964 -#: ../help/help.inc:152 -msgid "Suffix" -msgstr "Suffix" - -#: ../templates/tree/add_value_form.php:189 ../templates/schema/schema.php:187 -msgid "Syntax" -msgstr "Syntax" - -#: ../templates/schema/schema.php:95 -msgid "Syntax OID" -msgstr "Syntax OID" - -#: ../templates/schema/schema.php:79 ../templates/schema/schema.php:80 -msgid "Syntaxes" -msgstr "Syntax" - -#: ../lib/modules/kolabUser.inc:222 -msgid "Target of invitation policy is invalid!" -msgstr "Ziel der Einladungsregel ist ungültig." - -#: ../lib/modules/inetOrgPerson.inc:57 ../lib/modules/inetOrgPerson.inc:180 -#: ../lib/modules/inetOrgPerson.inc:264 ../lib/modules/inetOrgPerson.inc:265 -#: ../lib/modules/inetOrgPerson.inc:445 ../lib/modules/inetOrgPerson.inc:482 -msgid "Telephone number" -msgstr "Telefonnummer" - -#: ../lib/modules/inetOrgPerson.inc:158 -msgid "Temp" -msgstr "Aushilfskraft" - -#: ../lib/modules/inetOrgPerson.inc:146 -msgid "Temp, contract until december" -msgstr "Aushilfskraft, Vertrag bis Dezember" - -#: ../templates/tree/create_form.php:82 -msgid "Template" -msgstr "Vorlage" - -#: ../help/help.inc:109 -msgid "Text for user PDF" -msgstr "Text für Benutzer-PDF" - -#: ../lib/modules/kolabUser.inc:159 -msgid "The Cyrus mail quota for users in MBytes, leave blank for unlimited space." -msgstr "Das Cyrus-Mailquota für Benutzer in MBytes, leer heißt unbegrenzter Speicherplatz." - -#: ../lib/modules/posixAccount.inc:330 -msgid "The Primary group the user should be member of." -msgstr "Die primäre Gruppe des Benutzers." - -#: ../help/help.inc:155 -msgid "The SID of your Samba server. Get it with \"net getlocalsid\"." -msgstr "Die Domänen-SID des Samba-Servers. Auszulesen mit \"net getlocalsid\"." - -#: ../lib/modules/posixAccount.inc:63 -msgid "" -"The UID ranges for users and hosts overlap! This is a problem because LAM " -"uses the highest UID in use + 1 for new accounts. Please set the minimum UID " -"to equal values or use independent ranges." -msgstr "" -"Die UID-Bereiche für Benutzer und Hosts überlappen! Dies ist ein Problem " -"weil LAM die größte verwendete UID + 1 für neue Accounts verwendet. Bitte " -"setzen Sie die minimalen UID-Nummern auf den selben Wert oder verwenden Sie " -"unabhängige Bereiche." - -#: ../templates/tree/templates/creation/custom.php:99 -#, php-format -msgid "The container you specified (%s) does not exist. Please try again." -msgstr "Der angegebene Container (%s) existiert nicht. Bitte versuchen Sie es erneut." - -#: ../lib/modules/kolabUser.inc:147 -msgid "The country name of the user." -msgstr "Der Ländername des Benutzers." - -#: ../help/help.inc:153 -msgid "The domain entry will be saved under this suffix." -msgstr "Der Domäneneintrag wird unter diesem Suffix gespeichert." - -#: ../lib/modules/shadowAccount.inc:49 -msgid "The expiration date is invalid." -msgstr "Das Ablaufdatum ist ungültig." - -#: ../templates/config/confsave.php:252 -msgid "The following settings were saved to profile:" -msgstr "Die folgenden Einstellungen wurden gespeichert:" - -#: ../templates/initsuff.php:178 -msgid "The following suffix(es) are missing in LDAP. LAM can create them for you." -msgstr "Folgende Suffixe fehlen in LDAP. LAM kann sie für Sie erstellen." - -#: ../lib/modules/sambaSamAccount.inc:71 -msgid "The format of the logon hours field is invalid!" -msgstr "Das Format der Anmeldezeiten ist ungültig!" - -#: ../templates/pdfedit/pdfpage.php:73 -msgid "The headline for a new section must contain at least one character." -msgstr "" -"Die Überschrift für einen neuen Abschnitt muss mindestens ein Zeichen " -"enthalten." - -#: ../templates/pdfedit/pdfpage.php:61 -msgid "" -"The name for that PDF-structure you submitted is not valid. A valid name " -"must constist at least of one of the following characters 'a-z','A-Z','0-" -"9','_','-','.'." -msgstr "" -"Der Bezeichner für die PDF-Struktur ist ungültig. Ein gültiger besteht " -"mindestens aus einem der folgenden Zeichen: 'a-z','A-Z','0-9','_','-','.'." - -#: ../lib/modules/kolabUser.inc:151 -msgid "The name of the server where the mailbox is located." -msgstr "Der Name des Servers, auf dem sich das Postfach befindet." - -#: ../help/help.inc:151 -msgid "The name of your Windows domain or workgroup." -msgstr "Der Name ihrer Windows-Domäne oder Arbeitsgruppe." - -#: ../help/help.inc:139 -msgid "The new account will be saved under this LDAP suffix." -msgstr "Der neue Account wird unter diesem LDAP-Suffix gespeichert." - -#: ../templates/config/confmain.php:110 -msgid "The password is invalid! Please try again." -msgstr "Das Passwort ist falsch! Bitte erneut eingeben." - -#: ../lib/modules/posixAccount.inc:309 -msgid "" -"The primary group for this account. You can insert a GID number or a group " -"name." -msgstr "Die primäre Gruppe dieses Accounts. Sie können eine GID-Nummer oder einen Gruppennamen angeben." - -#: ../lib/modules/posixAccount.inc:368 -msgid "The primary group the host should be member of." -msgstr "Die primäre Gruppe des Hosts." - -#: ../templates/pdfedit/pdfpage.php:77 -msgid "The static text must contain at least one character." -msgstr "Der statische Text muss mindestens ein Zeichen enthalten." - -#: ../templates/tree/add_oclass_form.php:118 -msgid "There are new required attributes which need to be set." -msgstr "Es gibt neue erforderliche Attribute, die gefüllt werden müssen." - -#: ../lib/modules/posixGroup.inc:129 -msgid "There are still users who have this group as their primary group." -msgstr "Es gibt noch Benutzer, deren primäre Gruppe diese Gruppe ist." - -#: ../lib/modules/sambaAccount.inc:62 ../lib/modules/sambaSamAccount.inc:58 -msgid "There can be only one administrator per domain." -msgstr "Es kann nur einen Administrator pro Domäne geben." - -#: ../lib/modules/sambaGroupMapping.inc:351 -msgid "There can be only one group of this type." -msgstr "Es kann nur eine Gruppe diesen Typs geben." - -#: ../lib/modules/sambaAccount.inc:63 ../lib/modules/sambaSamAccount.inc:59 -msgid "There can be only one guest per domain." -msgstr "Es kann nur einen Gast pro Domäne geben." - -#: ../templates/massDoUpload.php:119 -msgid "There were errors while uploading:" -msgstr "Beim Upload traten Fehler auf:" - -#: ../lib/modules/posixGroup.inc:414 -msgid "" -"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." -msgstr "" -"Das sind die minimalen und maximalen Nummern für Gruppen-IDs wenn neue " -"Gruppen erstellt werden. Neue Gruppen bekommen die immer die höchste " -"verwendete Zahl plus 1." - -#: ../lib/modules/posixAccount.inc:297 -msgid "" -"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." -msgstr "" -"Das sind die minimalen und maximalen Nummern für Host-IDs wenn neue Hosts " -"erstellt werden. Der Bereich sollte sich von dem der Benutzer unterscheiden. " -"Neue Hosts bekommen die immer die höchste verwendete Zahl plus 1." - -#: ../lib/modules/posixAccount.inc:293 -msgid "" -"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." -msgstr "" -"Das sind die minimalen und maximalen Nummern für Benutzer-IDs wenn neue " -"Benutzer erstellt werden. Der Bereich sollte sich von dem der Hosts " -"unterscheiden. Neue Benutzer bekommen die immer die höchste verwendete Zahl " -"plus 1." - -#: ../lib/modules/posixAccount.inc:87 -msgid "This GID number is invalid! Please provide either a number or a group name." -msgstr "" -"Diese GID-Nummer ist ungültig! Bitte geben Sie eine Nummer ein oder einen " -"Gruppennamen." - -#: ../templates/domain.php:282 -msgid "This Samba 3 domain is already present!" -msgstr "Diese Samba3-Domäne ist bereits vorhanden!" - -#: ../lib/modules/kolabUser.inc:300 -msgid "This account is marked for deletion." -msgstr "Dieser Account wurde zum Löschen markiert." - -#: ../help/help.inc:120 -msgid "This changes the password of the selected profile." -msgstr "Damit ändern Sie das Passwort des gewählten Profils." - -#: ../help/help.inc:122 -msgid "This changes the profile which is selected by default at login." -msgstr "Damit ändern Sie das Standardprofil am Login." - -#: ../templates/massBuildAccounts.php:148 -msgid "This column is defined to include unique entries but duplicates were found:" -msgstr "Diese Spalte darf keine doppelten Einträge enthalten:" - -#: ../help/help.inc:94 -msgid "" -"This defines the language of the login window and sets this language as the " -"default language. Users can change the language at login." -msgstr "" -"Bestimmt die Sprache des Logins und setzt diese Sprache als Standard. " -"Benutzer können die Sprache beim Login ändern." - -#: ../lib/pdf.inc:526 -msgid "This document was automatically created by LDAP Account Manager" -msgstr "Dieses Dokument wurde von LDAP Account Manager erstellt." - -#: ../templates/tree/edit.php:205 -msgid "This entry has no attributes" -msgstr "Der Eintrag hat keine Attribute" - -#: ../templates/tree/delete_form.php:95 -#, php-format -msgid "This entry is the root of a sub-tree containing %s entries." -msgstr "Dieser Eintrag enthält einen Unterbaum mit %s Einträgen." - -#: ../lib/modules/posixAccount.inc:88 -msgid "This gecos value is invalid!" -msgstr "Dieser Gecos-Wert ist ungültig!" - -#: ../lib/modules/ieee802device.inc:61 -msgid "This is a comma separated list of MAC addresses." -msgstr "Dies ist eine Liste von MAC-Adressen, getrennt durch Kommata." - -#: ../lib/modules/kolabUser.inc:135 -msgid "This is a comma separated list of delegates." -msgstr "Dies ist eine Liste von Vollmachten, getrennt durch Kommata." - -#: ../lib/modules/kolabUser.inc:143 -msgid "This is a comma separated list of eMail aliases." -msgstr "Dies ist eine Liste von EMail-Aliasen, getrennt durch Kommata." - -#: ../lib/modules/kolabUser.inc:127 -msgid "This is a comma separated list of invitation policies." -msgstr "Dies ist eine Liste von Einladungsregeln, getrennt durch Kommata." - -#: ../lib/modules/nisMailAlias.inc:69 -msgid "This is a comma separated list of recipients." -msgstr "Dies ist eine Liste von Empfängern, getrennt durch Kommata." - -#: ../lib/modules/inetLocalMailRecipient.inc:65 -msgid "This is a comma separated list of the users public email addresses." -msgstr "" -"Dies ist eine Liste von öffentlichen Email-Adressen des Benutzers, getrennt " -"durch Kommata." - -#: ../help/help.inc:87 -msgid "" -"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." -msgstr "" -"Das ist eine Liste von DN-Einträgen aller Benutzer, die sich bei LDAP " -"Account Manager anmelden dürfen. Die Benutzernamen müssen mit Strichpunkten " -"getrennt sein." - -#: ../templates/masscreate.php:211 -msgid "" -"This is an example how it would look in your spreadsheet program before you " -"convert to CSV:" -msgstr "" -"Dies ist ein Beispiel wie es in Ihrem Tabellenkalkulationsprogramm aussehen " -"würde bevor Sie nach CSV konvertieren:" - -#: ../lib/modules/sambaSamAccount.inc:61 -msgid "This is not a valid RID number!" -msgstr "Das ist keine korrekte RID-Nummer!" - -#: ../lib/modules/sambaGroupMapping.inc:353 -msgid "This is not a valid Samba 3 group type!" -msgstr "Das ist kein korrekter Samba 3 Gruppentyp!" - -#: ../lib/modules/inetLocalMailRecipient.inc:61 -msgid "This is one of the users public email addresses." -msgstr "Das ist eine der öffentlichen Email-Adressen des Benutzers." - -#: ../lib/modules/nisMailAlias.inc:65 -msgid "This is one recipient for this alias." -msgstr "Dies ist ein Empfänger für diesen Alias." - -#: ../lib/modules/ieee802device.inc:57 -msgid "" -"This is the MAC address of the network card of the device (e.g. 00:01:02:DE:" -"EF:18)." -msgstr "Dies ist die MAC-Adresse der Netzwerkkarte im Gerät (z.B. 00:01:02:DE:EF:18)." - -#: ../lib/modules/sambaAccount.inc:373 -msgid "This is the RID of the user's primary Windows group." -msgstr "Das ist die RID-Nummer der primären Gruppe des Benutzers." - -#: ../lib/modules/sambaSamAccount.inc:185 -msgid "This is the SID of the user's primary Windows group." -msgstr "Das ist die SID der primären Gruppe des Benutzers." - -#: ../help/help.inc:96 -msgid "" -"This is the absolute path to an external script for setting quotas and " -"creating home directories." -msgstr "" -"Das ist der absolute Pfad zu einem externen Script, das Quotas und " -"Heimatverzeichnisse verwaltet." - -#: ../lib/modules/sambaAccount.inc:323 ../lib/modules/sambaSamAccount.inc:138 -msgid "This is the account's Windows password." -msgstr "Das ist das Windows-Passwort für den Account." - -#: ../lib/modules/sambaAccount.inc:320 ../lib/modules/sambaSamAccount.inc:135 -msgid "This is the account's full name on Windows systems." -msgstr "Das ist der Name, der auf Windows-Systemen angezeigt wird." - -#: ../lib/modules/sambaGroupMapping.inc:270 -msgid "This is the group name which will be shown in Windows." -msgstr "Das ist der Gruppenname, der in Windows angezeigt wird." - -#: ../help/help.inc:135 -msgid "" -"This is the identifier for the relative DN value. It must be one of the " -"given allowed LDAP attributes (e.g. user accounts usually use \"uid\" while " -"groups use \"cn\")." -msgstr "" -"Das ist der Bezeichner für den relativen DN-Wert. Er muss eines der " -"erlaubten LDAP-Attribute sein (z.B. verwenden Benutzer-Accounts gewöhnlich " -"\"uid\" und Gruppen \"cn\")." - -#: ../help/help.inc:72 -msgid "" -"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." -msgstr "" -"Das ist eine Liste von Attributen, die in den Benutzer/Gruppen/Host-Listen " -"angezeigt wird. Die Einträge können entweder vordefinierte Werte \"#Wert\" " -"oder eigne Werte \"#Wert:Beschreibung\" sein. Mehrere Werte werden durch " -"Strichpunkte getrennt." - -#: ../lib/modules/inetLocalMailRecipient.inc:69 -msgid "This is the mail server for the user." -msgstr "Dies ist der Mailserver des Benutzers." - -#: ../help/help.inc:92 -msgid "" -"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." -msgstr "" -"Das ist die Anzahl von Zeilen, die in den Benutzer/Gruppen/Host-Listen " -"angezeigt wird. Wenn mehr Einträge gefunden werden, wird die Liste auf " -"mehrere Seiten aufgeteilt." - -#: ../lib/modules/sambaGroupMapping.inc:278 -msgid "" -"This is the relative ID (similar to UID on Unix) for Windows accounts. If " -"you leave this empty LAM will calculate the RID from the UID. This can be " -"either a number or the name of a special group:" -msgstr "" -"Das ist die die relative ID-Nummer (ähnlich wie UID bei Unix) für Windows-" -"Accounts. Wenn Sie das Feld leer lassen wird LAM die RID aus der UID " -"berechnen. Mögliche Werte sind eine Zahl oder eine spezielle Gruppe:" - -#: ../lib/modules/sambaSamAccount.inc:188 -msgid "" -"This is the relative ID number for your Windows account. You can either " -"enter a number or one of these special accounts: " -msgstr "" -"Das ist die relative ID-Nummer für den Windows-Account. Sie können entweder " -"eine Nummer angeben oder den Namen eines dieser Spezialaccounts: " - -#: ../lib/modules/sambaSamAccount.inc:192 -msgid "" -"This is the relative ID number for your host account. If you leave this " -"empty LAM will use: uidNumber*2 + sambaAlgorithmicRidBase." -msgstr "" -"Das ist die relative ID-Nummer für den Host-Account. Wenn Sie das Feld leer " -"lassen wird LAM diesen Wert einsetzen: uidNumber*2 + sambaAlgorithmicRidBase." - -#: ../help/help.inc:48 -msgid "" -"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." -msgstr "" -"Das ist die Serveradresse ihres LDAP-Servers. Verwenden Sie ldap:// für " -"normale LDAP-Verbindungen und ldaps:// für verschlüsselte Verbindungen " -"(benötigt Serverzertifikat). Die Portnummer ist optional." - -#: ../help/help.inc:101 -msgid "" -"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." -msgstr "" -"Das ist der Server auf dem das lamdaemon-Script liegt. LDAP Account Manager " -"wird eine SSH-Verbindung zu diesem Serer aufbauen, dabei werden Benutzername " -"und Passwort vom Login verwendet." - -#: ../help/help.inc:66 -msgid "This is the suffix for the LDAP tree viewer." -msgstr "Dies ist der Suffix für die LDAP-Baumansicht." - -#: ../help/help.inc:60 -msgid "" -"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." -msgstr "" -"Das ist der Suffix im LDAP-Baum in dem nach Benutzern/Gruppen/Hosts gesucht " -"wird. Nur Einträge in diesen Teilbäumen werden in den Listen angezeigt. Neue " -"Accounts werden werden unter diesem DN gespeichert." - -#: ../lib/modules/inetLocalMailRecipient.inc:57 -msgid "This is the target email address for the user's mails." -msgstr "Dies ist die Zieladresse für alle Mails des Benutzers." - -#: ../help/help.inc:108 -msgid "" -"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." -msgstr "" -"Dies ist die Zeit in Minuten die LAM LDAP-Suchen zwischenspeichert. Kürzere " -"Zeiten belasten den LDAP-Server mehr, verringern aber die Gefahr, dass " -"Änderungen nicht erkannt werden." - -#: ../lib/modules/kolabUser.inc:155 -msgid "" -"This is the time limit (in days) for other users who want to check future " -"appointments. If you leave this blank the default (60 days) will be set." -msgstr "Dies ist das Zeitlimit (in Tagen) für andere Benutzer, die zukünftige Termine abfragen möchten. Wenn Sie das Feld leer lassen wird der Standardwert (60 Tage) verwendet." - -#: ../lib/modules/posixAccount.inc:89 -msgid "This login shell is invalid!" -msgstr "Login-Shell ist ungültig!" - -#: ../templates/schema/schema.php:356 -msgid "This object class is obsolete." -msgstr "Diese Objektklasse ist veraltet." - -#: ../lib/modules/sambaSamAccount.inc:198 -msgid "" -"This option defines the allowed logon hours for this account. The format is " -"the same as for the LDAP attribute. The 24*7 hours are represented as 168 " -"bit which are saved as 21 hex (21*8 = 168) values. The first bit represents " -"Sunday 0:00 - 0:59 in GMT." -msgstr "" -"Diese Option definiert die erlaubten Anmeldezeiten für diesen Account. Das " -"Format ist identisch mit dem des LDAP-Attributes. Die 24*7 Stunden werden " -"als 168 Bit dargestellt, die als 21 Hex-Werte (21*8 = 168) gespeichert " -"werden. Das erste Bit stellt den Zeitraum 00:00 - 00:59 Uhr GMT am Sonntag " -"dar." - -#: ../help/help.inc:110 -msgid "This text will appear on top of every user PDF file." -msgstr "Dieser Text erscheint am Anfang jedes Benutzer-PDFs." - -#: ../templates/tools.php:84 -msgid "This tool allows you to customize the PDF pages." -msgstr "Dieses Werkzeug erlaubt die Anpassung der PDF-Seiten." - -#: ../templates/lists/userlink.php:63 -msgid "This user was not found!" -msgstr "Dieser Benutzer wurde nicht gefunden!" - -#: ../lib/modules/sambaAccount.inc:65 ../lib/modules/sambaAccount.inc:66 -#: ../lib/modules/sambaAccount.inc:67 ../lib/modules/sambaAccount.inc:68 -#: ../lib/modules/sambaSamAccount.inc:63 ../lib/modules/sambaSamAccount.inc:64 -#: ../lib/modules/sambaSamAccount.inc:65 ../lib/modules/sambaSamAccount.inc:66 -msgid "This value can only be \\\"true\\\" or \\\"false\\\"!" -msgstr "Dieser Wert darf nur \\\"true\\\" oder \\\"false\\\" sein!" - -#: ../lib/modules/posixAccount.inc:90 -msgid "This value can only be \\\"true\\\" or \\\"false\\\"." -msgstr "Dieser Wert darf nur \\\"true\\\" oder \\\"false\\\" sein." - -#: ../lib/modules/posixGroup.inc:475 -msgid "This value must be a list of user names separated by semicolons." -msgstr "Dieser Wert muss eine Liste von Benutzernamen, getrennt duch Kommata, sein." - -#: ../help/help.inc:147 -msgid "This will create a new organizational unit under the selected one." -msgstr "Dies erzeugt eine neue Organizational Unit unterhalb der markierten." - -#: ../help/help.inc:149 -msgid "This will delete the selected organizational unit. The OU has to be empty." -msgstr "Dies löscht die markierte Organizational Unit. Die OU muss leer sein." - -#: ../help/help.inc:118 -msgid "This will delete the selected profile." -msgstr "Dies löscht das markierte Profil." - -#: ../lib/modules/kolabUser.inc:163 -msgid "" -"This will set a special flag on the account which tells Kolabd to remove it. " -"Use this to cleanly delete Kolab accounts (e.g. this removes mail boxes)." -msgstr "Damit wird der Account für Kolabd als löschbar gekennzeichnet. Verwenden Sie dies um Kolab-Accounts sauber zu löschen (löscht z.B. das Postfach)." - -#: ../lib/modules/posixAccount.inc:350 -msgid "" -"To disable login use /bin/false. The list of shells is read from lam/config/" -"shells" -msgstr "" -"Verwenden Sie /bin/false um den Login zu deaktivieren. Die Shellliste wird " -"von lam/config/shells gelesen." - -#: ../templates/main_header.php:59 -msgid "Tools" -msgstr "Werkzeuge" - -#: ../templates/pdfedit/pdfpage.php:513 -msgid "Top" -msgstr "Anfang" - -#: ../lib/export.inc:443 ../lib/export.inc:513 -msgid "Total entries" -msgstr "Anzahl der Listeneinträge" - -#: ../templates/lists/listusers.php:269 -msgid "Translate GID number to group name" -msgstr "GID-Nummer als Gruppenname darstellen" - -#: ../help/help.inc:65 -msgid "Tree suffix" -msgstr "Baumansicht" - -#: ../templates/main_header.php:78 -msgid "Tree view" -msgstr "Baumansicht" - -#: ../templates/config/confmain.php:217 ../lib/config.inc:362 -msgid "TreeSuffix" -msgstr "BaumSuffix" - -#: ../templates/config/confsave.php:127 -msgid "TreeSuffix is invalid!" -msgstr "BaumSuffix ist ungültig!" - -#: ../templates/schema/schema.php:354 -msgid "Type" -msgstr "Typ" - -#: ../lib/modules/posixAccount.inc:75 -msgid "UID" -msgstr "Benutzer ID" - -#: ../lib/modules/posixAccount.inc:75 -msgid "UID has changed. Do you want to change home directory?" -msgstr "UID-Nummer wurde geändert. Soll das Heimatverzeichnis angepasst werden?" - -#: ../lib/modules/posixAccount.inc:70 -msgid "" -"UID must be a number. It has to be inside the UID range which is defined in " -"your configuration profile." -msgstr "" -"UID muss eine Zahl sein. Sie muss sich innerhalb des Bereiches befinden der " -"in Ihrem Konfigurationsprofil festgelegt ist." - -#: ../lib/modules/posixAccount.inc:46 ../lib/modules/posixAccount.inc:180 -#: ../lib/modules/posixAccount.inc:247 ../lib/modules/posixAccount.inc:292 -#: ../lib/modules/posixAccount.inc:296 ../lib/modules/posixAccount.inc:304 -#: ../lib/modules/posixAccount.inc:861 ../lib/modules/posixAccount.inc:1102 -#: ../lib/lists.inc:303 ../lib/lists.inc:330 -msgid "UID number" -msgstr "UID Nummer" - -#: ../lib/modules/posixAccount.inc:46 -#, php-format -msgid "" -"UID number has changed. To keep file ownership you have to run the following " -"command as root: 'find / -uid %s -exec chown %s {} \\;'" -msgstr "" -"Die UID-Nummer hat sich geändert. Sie müssen folgenden Befehl als root " -"ausführen um die existierenden Dateirechte zu ändern: 'find / -uid %s -exec " -"chown %s {} \\;'" - -#: ../lib/modules/posixAccount.inc:63 ../lib/modules/posixAccount.inc:156 -msgid "UID ranges for Unix accounts" -msgstr "UID-Bereiche für Unix-Accounts" - -#: ../lib/modules/sambaAccount.inc:358 ../lib/modules/sambaSamAccount.inc:173 -msgid "" -"UNC-path (\\\\server\\share) of homedirectory. $user and $group are replaced " -"with user- and groupname." -msgstr "" -"UNC-Pfad (\\\\Server\\Freigabe) des Heimatverzeichnisses. $user und $group " -"werden durch Benutzer- und Gruppenname ersetzt." - -#: ../templates/pdfedit/pdfpage.php:581 -msgid "UP" -msgstr "UP" - -#: ../templates/ou_edit.php:55 ../templates/ou_edit.php:120 -#: ../templates/ou_edit.php:185 ../templates/ou_edit.php:250 -msgid "Unable to create new OU!" -msgstr "Kann neue OU nicht erstellen!" - -#: ../templates/config/profmanage.php:86 -msgid "Unable to create new profile!" -msgstr "Kann das Profil nicht erstellen!" - -#: ../templates/ou_edit.php:72 ../templates/ou_edit.php:137 -#: ../templates/ou_edit.php:202 ../templates/ou_edit.php:267 -msgid "Unable to delete OU!" -msgstr "Kann OU nicht löschen!" - -#: ../templates/pdfedit/pdfdelete.php:56 -msgid "Unable to delete PDF structure!" -msgstr "Kann die PDF-Struktur nicht löschen!" - -#: ../templates/domain.php:349 -msgid "Unable to delete domain!" -msgstr "Kann Domäne nicht löschen!" - -#: ../templates/config/profmanage.php:108 -#: ../templates/profedit/profiledelete.php:60 -msgid "Unable to delete profile!" -msgstr "Kann das Profil nicht löschen!" - -#: ../lib/modules/posixAccount.inc:1266 ../lib/modules/posixAccount.inc:1461 -msgid "Unable to find group in LDAP." -msgstr "Kann Gruppe nicht im LDAP-Baum finden." - -#: ../templates/config/confmain.php:398 -msgid "" -"Unable to load available languages. Setting English as default language. For " -"further instructions please contact the Admin of this site." -msgstr "" -"Konnte verfügbare Sprachen nicht laden. Englisch wurde als Standardsprache " -"gesetzt. Für weitere Anweisungen wenden Sie sich bitte an den Administrator " -"dieser Seite." - -#: ../lib/profiles.inc:91 ../lib/profiles.inc:95 -msgid "Unable to load profile!" -msgstr "Kann das Profil nicht laden!" - -#: ../templates/schema/schema.php:99 ../templates/schema/schema.php:117 -#: ../templates/schema/schema.php:278 ../templates/schema/schema.php:312 -msgid "Unable to retrieve schema!" -msgstr "Konnte Schema nicht auslesen!" - -#: ../templates/profedit/profilecreate.php:114 -msgid "Unable to save profile!" -msgstr "Kann das Profil nicht speichern!" - -#: ../lib/modules/posixGroup.inc:289 ../lib/modules/posixAccount.inc:114 -msgid "Unix" -msgstr "Unix" - -#: ../lib/modules/inetOrgPerson.inc:51 ../lib/modules/inetOrgPerson.inc:207 -#: ../lib/modules/inetOrgPerson.inc:280 ../lib/modules/inetOrgPerson.inc:412 -#: ../lib/modules/inetOrgPerson.inc:474 -msgid "Unix workstations" -msgstr "Arbeitsstationen" - -#: ../lib/modules/inetOrgPerson.inc:51 ../lib/modules/inetOrgPerson.inc:52 -msgid "Unix workstations are invalid!" -msgstr "Unix-Arbeitsstationen sind ungültig!" - -#: ../templates/config/confmodules.php:226 -msgid "Unsolved dependency:" -msgstr "Ungelöste Abhängigkeit:" - -#: ../templates/massBuildAccounts.php:195 -msgid "Upload accounts to LDAP" -msgstr "Accounts in LDAP anlegen" - -#: ../templates/masscreate.php:128 -msgid "Upload file and create accounts" -msgstr "Datei hochladen und Accounts erstellen" - -#: ../lib/modules.inc:471 -#, php-format -msgid "Upload was stopped after errors in %s module!" -msgstr "Upload wurde nach Fehlern im Modul %s gestoppt!" - -#: ../templates/schema/schema.php:215 -msgid "Usage" -msgstr "Benutzung" - -#: ../lib/modules/sambaAccount.inc:98 ../lib/modules/sambaAccount.inc:210 -#: ../lib/modules/sambaAccount.inc:325 ../lib/modules/sambaAccount.inc:328 -#: ../lib/modules/sambaSamAccount.inc:140 -#: ../lib/modules/sambaSamAccount.inc:143 -#: ../lib/modules/sambaSamAccount.inc:226 -msgid "Use Unix password" -msgstr "Unix-Passwort verwenden" - -#: ../templates/pdfedit/pdfpage.php:442 ../templates/pdfedit/pdfpage.php:487 -#: ../templates/pdfedit/pdfpage.php:501 ../templates/pdfedit/pdfpage.php:519 -#: ../templates/pdfedit/pdfpage.php:530 ../templates/pdfedit/pdfpage.php:541 -#: ../templates/pdfedit/pdfpage.php:552 -msgid "Use default" -msgstr "Standardwert benutzen" - -#: ../help/help.inc:98 ../help/help.inc:103 -msgid "" -"Use it at your own risk and read the documentation for lamdaemon before you " -"use it!" -msgstr "" -"Verwendung auf eigene Gefahr. Lesen Sie die Dokumentation für lamdaemon " -"bevor Sie es benutzen!" - -#: ../lib/modules/posixGroup.inc:408 ../lib/modules/sambaAccount.inc:104 -#: ../lib/modules/sambaAccount.inc:218 ../lib/modules/sambaAccount.inc:331 -#: ../lib/modules/sambaAccount.inc:334 ../lib/modules/sambaAccount.inc:698 -#: ../lib/modules/sambaSamAccount.inc:146 -#: ../lib/modules/sambaSamAccount.inc:149 -#: ../lib/modules/sambaSamAccount.inc:234 -#: ../lib/modules/sambaSamAccount.inc:684 -#: ../lib/modules/sambaSamAccount.inc:831 ../lib/modules/posixAccount.inc:341 -msgid "Use no password" -msgstr "Kein Passwort setzen" - -#: ../lib/modules/sambaAccount.inc:694 ../lib/modules/sambaSamAccount.inc:680 -#: ../lib/modules/sambaSamAccount.inc:825 -msgid "Use unix password" -msgstr "Unix-Passwort verwenden" - -#: ../lib/modules/quota.inc:68 ../lib/modules/quota.inc:292 -msgid "Used blocks" -msgstr "Benutzte Blöcke" - -#: ../lib/modules/quota.inc:69 -msgid "Used blocks. 1000 blocks are usually 1MB" -msgstr "Verwendete Blöcke. 1000 Blöcke sind normalerweise 1 MB." - -#: ../templates/schema/schema.php:274 -msgid "Used by attributes" -msgstr "Benutzt von Attributen" - -#: ../templates/schema/schema.php:243 -msgid "Used by object classes" -msgstr "Benutzt von Objektklassen" - -#: ../help/help.inc:163 -msgid "Used for calculating RIDs from UID/GID. Do not change if unsure." -msgstr "" -"Wird für die Berechnung der RIDs aus UID/GID verwendet. Nicht ändern, wenn " -"Sie nicht sicher sind." - -#: ../lib/modules/quota.inc:84 ../lib/modules/quota.inc:296 -msgid "Used inodes" -msgstr "benutzte Inodes" - -#: ../lib/modules/quota.inc:85 -msgid "Used inodes (files)" -msgstr "Benutze Inodes (Dateien)" - -#: ../lib/modules/sambaGroupMapping.inc:51 -msgid "User" -msgstr "Benutzer" - -#: ../lib/lists.inc:302 -msgid "User ID" -msgstr "Benutzer ID" - -#: ../lib/modules/sambaAccount.inc:242 ../lib/modules/sambaAccount.inc:349 -#: ../lib/modules/sambaAccount.inc:710 ../lib/modules/sambaSamAccount.inc:164 -#: ../lib/modules/sambaSamAccount.inc:258 -#: ../lib/modules/sambaSamAccount.inc:696 -msgid "User can change password" -msgstr "Benutzer kann Passwort ändern" - -#: ../lib/modules/posixAccount.inc:326 -msgid "User description. If left empty first and last name will be used." -msgstr "Benutzerbeschreibung, falls leer wird Vor- und Nachname verwendet." - -#: ../lib/modules/inetOrgPerson.inc:233 -msgid "User description. If left empty sur- and give name will be used." -msgstr "Benutzerbeschreibung, falls leer wird Vor- und Nachname verwendet." - -#: ../lib/pdf.inc:460 -msgid "User information page" -msgstr "Benutzerinformationen" - -#: ../templates/config/confsave.php:132 -msgid "User list attributes are invalid!" -msgstr "Attribute der Benutzerliste sind ungültig!" - -#: ../templates/schema/schema.php:210 -msgid "User modification" -msgstr "Vom Benutzer änderbar" - -#: ../templates/config/confmodules.php:79 ../templates/config/confmain.php:256 -#: ../lib/config.inc:371 -msgid "User modules" -msgstr "Benutzermodule" - -#: ../lib/modules/sambaAccount.inc:249 ../lib/modules/sambaAccount.inc:351 -#: ../lib/modules/sambaAccount.inc:718 ../lib/modules/sambaSamAccount.inc:166 -#: ../lib/modules/sambaSamAccount.inc:265 -#: ../lib/modules/sambaSamAccount.inc:704 -msgid "User must change password" -msgstr "Benutzer muss Passwort ändern" - -#: ../templates/login.php:167 ../lib/modules/account.inc:66 -#: ../lib/modules/posixAccount.inc:172 -msgid "User name" -msgstr "Benutzername" - -#: ../lib/modules/posixAccount.inc:84 -msgid "User name already exists!" -msgstr "Benutzername besteht schon!" - -#: ../lib/modules/posixAccount.inc:82 -msgid "" -"User name contains invalid characters. Valid characters are: a-z, A-Z, 0-9 " -"and .-_ !" -msgstr "" -"Benutzername enthält ungültige Zeichen. Gültige Zeichen sind: a-z, A-Z, 0-9 " -"und .-_ !" - -#: ../lib/modules/posixAccount.inc:80 -msgid "User name in use. Selected next free user name." -msgstr "" -"Der Benutzername ist bereits vorhanden, der nächste freie Name wurde " -"ausgewählt." - -#: ../templates/profedit/profilemain.php:45 -msgid "User profiles" -msgstr "Benutzerprofile" - -#: ../lib/modules/quota.inc:422 -msgid "User quota" -msgstr "Benutzer-Quota" - -#: ../help/help.inc:59 -msgid "User/Group/Host suffix" -msgstr "Benutzer-/Gruppen-/Hostsuffix" - -#: ../templates/config/confmain.php:177 ../lib/config.inc:358 -msgid "UserSuffix" -msgstr "Benutzersuffix" - -#: ../templates/config/confsave.php:107 -msgid "UserSuffix is invalid!" -msgstr "UserSuffix ist ungültig!" - -#: ../lib/modules/sambaAccount.inc:834 ../lib/modules/sambaSamAccount.inc:952 -#: ../lib/modules/posixAccount.inc:76 ../lib/modules/posixAccount.inc:77 -#: ../lib/modules/posixAccount.inc:80 ../lib/modules/posixAccount.inc:321 -#: ../lib/modules/posixAccount.inc:857 ../lib/modules/posixAccount.inc:1101 -#: ../lib/lists.inc:305 -msgid "Username" -msgstr "Benutzername" - -#: ../lib/modules/posixAccount.inc:77 -msgid "" -"Username contains invalid characters. Valid characters are: a-z, A-Z, 0-9 " -"and .-_ !" -msgstr "" -"Benutzername enthält ungültige Zeichen. Gültige Zeichen sind: a-z, A-Z, 0-9 " -"und .-_ !" - -#: ../lib/modules/posixAccount.inc:322 -msgid "" -"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." -msgstr "" -"Benutzername des zu erstellenden Benutzers. Gültige Zeichen sind: a-z, 0-9 " -"und .-_. LAM erlaubt keine Zahlen als erstes Zeichen weil es useradd auch " -"nicht erlaubt. Großbuchstaben am Anfang können Probleme verursachen und sind " -"ebenfalls nicht erlaubt. Sollte der Benutzername schon in Verwendung sein " -"wird eine Zahl angehängt. Achtung! Ältere Systeme haben Probleme mit mehr " -"als 8 Zeichen. Sie können sich bei Windows nicht anmelden wenn Sie mehr als " -"16 Zeichen verwenden." - -#: ../templates/ou_edit.php:336 ../templates/main_header.php:81 -#: ../lib/modules/posixAccount.inc:57 ../lib/modules/posixAccount.inc:58 -#: ../lib/modules/posixAccount.inc:61 ../lib/modules/posixAccount.inc:128 -#: ../help/help.inc:78 -msgid "Users" -msgstr "Benutzer" - -#: ../lib/modules/posixGroup.inc:397 -msgid "Users who are member of the current group." -msgstr "Benutzer die Mitglieder der aktuellen Gruppe sind." - -#: ../lib/modules/posixGroup.inc:401 -msgid "" -"Users who will become member of the current group. User names are separated " -"by semicolons." -msgstr "" -"Benutzer die Mitglieder der aktuellen Gruppe werden. Benutzernamen werden " -"durch Komma getrennt." - -#: ../templates/tree/creation_template.php:85 -msgid "Using template:" -msgstr "Verwendete Vorlage:" - -#: ../help/help.inc:86 -msgid "Valid users" -msgstr "Berechtigte Benutzer" - -#: ../templates/delete.php:181 ../lib/modules.inc:1554 -#, php-format -msgid "Was unable to add attribtues to DN: %s." -msgstr "Konnte keine Attribute zum DN hinzufügen: %s." - -#: ../lib/modules.inc:1519 ../lib/modules.inc:1528 -#, php-format -msgid "Was unable to create DN: %s." -msgstr "Konnte DN nicht erstellen: %s." - -#: ../templates/tree/delete.php:109 ../templates/delete.php:218 -#: ../lib/modules.inc:1512 -#, php-format -msgid "Was unable to delete DN: %s." -msgstr "Konnte DN nicht löschen: %s." - -#: ../templates/tree/update.php:105 ../templates/tree/add_oclass.php:89 -#: ../templates/tree/add_oclass_form.php:155 ../templates/delete.php:172 -#: ../lib/modules.inc:1544 -#, php-format -msgid "Was unable to modify attribtues from DN: %s." -msgstr "Konnte die Attribute nicht ändern: %s." - -#: ../templates/delete.php:190 ../lib/modules.inc:1564 -#, php-format -msgid "Was unable to remove attribtues from DN: %s." -msgstr "Konnte die Attribute nicht löschen: %s." - -#: ../help/help.inc:58 -msgid "" -"When using ldaps:// be sure to use exactly the same IP/domain name as in " -"your certificate!" -msgstr "" -"Wenn Sie ldaps:// verwenden stellen Sie sicher, dass Sie genau die selbe IP/" -"Domäne wie in ihrem Zertifikat verwenden!" - -#: ../templates/pdfedit/pdfpage.php:460 -msgid "Width" -msgstr "Breite" - -#: ../lib/modules/sambaAccount.inc:379 ../lib/modules/sambaSamAccount.inc:195 -msgid "Windows domain name of account." -msgstr "Windows-Domänenname des Accounts." - -#: ../lib/modules/sambaAccount.inc:286 ../lib/modules/sambaAccount.inc:756 -#: ../lib/modules/sambaSamAccount.inc:302 -#: ../lib/modules/sambaSamAccount.inc:740 -#: ../lib/modules/sambaSamAccount.inc:960 -#: ../lib/modules/sambaGroupMapping.inc:174 -#: ../lib/modules/sambaGroupMapping.inc:300 -msgid "Windows group" -msgstr "Windows-Gruppe" - -#: ../lib/modules/sambaAccount.inc:372 -msgid "Windows group RID" -msgstr "Windows-Gruppen-RID" - -#: ../lib/modules/sambaAccount.inc:369 -msgid "Windows group name" -msgstr "Windows-Gruppenname" - -#: ../lib/modules/sambaGroupMapping.inc:286 -msgid "Windows group type." -msgstr "Windows-Gruppentyp." - -#: ../lib/modules/sambaGroupMapping.inc:273 -msgid "Windows groupname" -msgstr "Windows-Gruppenname" - -#: ../lib/modules/sambaSamAccount.inc:184 -msgid "Windows primary group SID" -msgstr "Primäre Windows-Gruppen-SID" - -#: ../lib/modules/sambaGroupMapping.inc:282 -msgid "Windows-Domain name of group." -msgstr "Windows-Domänenname der Gruppe." - -#: ../templates/pdfedit/pdfdelete.php:89 -#: ../templates/profedit/profiledelete.php:92 -msgid "Wrong or missing type!" -msgstr "Falscher oder fehlender Typ!" - -#: ../templates/login.php:349 -msgid "Wrong password/user name combination. Please try again." -msgstr "Falsche Benutzername/Passwort-Kombination. Bitte erneut eingeben." - -#: ../templates/schema/schema.php:159 ../templates/schema/schema.php:201 -#: ../templates/schema/schema.php:206 ../templates/schema/schema.php:211 -msgid "Yes" -msgstr "Ja" - -#: ../lib/modules/posixGroup.inc:471 ../lib/modules/posixAccount.inc:76 -#: ../lib/modules/posixAccount.inc:78 -msgid "" -"You are using a capital letters. This can cause problems because windows " -"isn't case-sensitive." -msgstr "" -"Sie verwenden Großbuchstaben, das kann Probleme verursachen, da Windows " -"Groß-/Kleinschreibung nicht unterscheidet." - -#: ../lib/modules/posixGroup.inc:462 ../lib/modules/posixAccount.inc:73 -msgid "You cannot use this password options at the same time." -msgstr "Sie können diese Passwortoptionen nicht gleichzeitig verwenden." - -#: ../templates/tree/templates/creation/custom.php:106 -msgid "" -"You did not select any object classes for this object. Please go back and do " -"so." -msgstr "Sie müssen mindestens eine Objektklasse für dieses Objekt wählen." - -#: ../templates/logout.php:70 -msgid "You have been logged off from LDAP Account Manager." -msgstr "Sie wurden vom LDAP Account Manager abgemeldet." - -#: ../templates/tree/add_attr.php:75 -msgid "You left the attribute value blank. Please go back and try again." -msgstr "" -"Der Wert des Attributes war leer. Bitte gehen Sie zurück und füllen den " -"Eintrag." - -#: ../templates/tree/create.php:81 -#, php-format -msgid "You left the value blank for required attribute: %s." -msgstr "Bitte setzen Sie einen Wert für das erforderliche Attribut: %s" - -#: ../templates/tree/update_confirm.php:250 -msgid "You made no changes." -msgstr "Es wurde nichts geändert." - -#: ../templates/tree/add_attr_form.php:164 -msgid "" -"Your PHP configuration has disabled file uploads. Please check php.ini " -"before proceeding." -msgstr "" -"Ihre PHP-Konfiguration erlaubt keine Dateiuploads. Bitte prüfen Sie Ihre php." -"ini." - -#: ../templates/tree/update_confirm.php:188 -#: ../templates/tree/update_confirm.php:200 -msgid "[attribute deleted]" -msgstr "[Attribut gelöscht]" - -#: ../lib/modules/sambaAccount.inc:264 ../lib/modules/sambaSamAccount.inc:280 -msgid "\\\\server\\homes\\smiller" -msgstr "\\\\server\\homes\\hmueller" - -#: ../lib/modules/sambaAccount.inc:270 ../lib/modules/sambaSamAccount.inc:286 -msgid "\\\\server\\profiles\\smiller" -msgstr "\\\\server\\profile\\hmueller" - -#: ../templates/tree/edit.php:491 -msgid "add value" -msgstr "Wert hinzufügen" - -#: ../lib/modules/posixGroup.inc:352 -msgid "adminstrators" -msgstr "administratoren" - -#: ../templates/schema/schema.php:226 -msgid "character" -msgstr "Zeichen" - -#: ../templates/schema/schema.php:225 -msgid "characters" -msgstr "Zeichen" - -#: ../help/help.inc:70 -msgid "dc=yourcompany,dc=com" -msgstr "dc=ihreFirma,dc=com" - -#: ../templates/tree/edit.php:309 -msgid "delete attribute" -msgstr "Attribut löschen" - -#: ../templates/tree/edit.php:174 ../templates/tree/edit.php:176 -#: ../templates/tree/edit.php:303 ../templates/tree/edit.php:305 -#: ../templates/tree/add_value_form.php:106 -#: ../templates/tree/add_value_form.php:109 -msgid "download value" -msgstr "Wert downloaden" - -#: ../lib/modules/inetOrgPerson.inc:63 ../lib/modules/inetOrgPerson.inc:198 -#: ../lib/modules/inetOrgPerson.inc:276 ../lib/modules/inetOrgPerson.inc:277 -#: ../lib/modules/inetOrgPerson.inc:457 ../lib/modules/inetOrgPerson.inc:485 -msgid "eMail address" -msgstr "E-Mail Adresse" - -#: ../templates/tree/edit.php:388 -msgid "false" -msgstr "falsch" - -#: ../lib/modules/posixAccount.inc:195 -msgid "group01,group02" -msgstr "gruppe01,gruppe02" - -#: ../lib/modules/quota.inc:120 ../lib/modules/quota.inc:122 -#: ../lib/modules/quota.inc:189 ../lib/modules/quota.inc:191 -msgid "hours" -msgstr "Stunden" - -#: ../lib/tree.inc:1184 -msgid "jpegPhoto contains errors" -msgstr "JPEG-Bild enthält Fehler" - -#: ../help/help.inc:52 -msgid "" -"ldap://localhost:389 connects to localhost using a standard LDAP connection " -"on port 389" -msgstr "ldaps://141.40.146.133 baut eine einfache Verbindung zu 141.40.146.133 auf." - -#: ../help/help.inc:54 -msgid "" -"ldaps://141.40.146.133 connects to 141.40.146.133 using an encrypted LDAP " -"connection." -msgstr "" -"ldaps://141.40.146.133 baut eine verschlüsselte Verbindung zu 141.40.146.133 " -"auf." - -#: ../lib/modules/posixAccount.inc:255 -msgid "machines" -msgstr "Hosts" - -#: ../lib/modules/sambaAccount.inc:302 ../lib/modules/sambaAccount.inc:312 -#: ../lib/modules/sambaSamAccount.inc:210 -#: ../lib/modules/sambaSamAccount.inc:329 -msgid "mydomain" -msgstr "meineDomaene" - -#: ../lib/modules/sambaSamAccount.inc:304 -msgid "mygroup" -msgstr "meineGruppe" - -#: ../templates/tree/templates/creation/custom.php:189 -#: ../templates/tree/templates/creation/custom.php:212 -#: ../templates/schema/schema.php:166 ../templates/schema/schema.php:235 -#: ../templates/schema/schema.php:246 ../templates/schema/schema.php:295 -#: ../templates/schema/schema.php:361 ../templates/schema/schema.php:376 -#: ../templates/schema/schema.php:410 ../templates/schema/schema.php:432 -msgid "none" -msgstr "nichts" - -#: ../templates/tree/edit.php:389 -msgid "none, remove value" -msgstr "nichts, Wert löschen" - -#: ../templates/schema/schema.php:222 -msgid "not applicable" -msgstr "nicht anwendbar" - -#: ../templates/schema/schema.php:173 ../templates/schema/schema.php:178 -#: ../templates/schema/schema.php:183 ../templates/schema/schema.php:216 -msgid "not specified" -msgstr "nicht spezifiziert" - -#: ../help/help.inc:64 -msgid "" -"ou=People,dc=yourcompany,dc=com will read and store all accounts in this " -"subtree." -msgstr "" -"ou=People,dc=yourcompany,dc=com liest und speichert alle Accounts in diesem " -"Unterzweig." - -#: ../lib/modules/posixAccount.inc:241 -msgid "pc01$" -msgstr "pc01$" - -#: ../lib/modules/posixAccount.inc:262 -msgid "pc01,Room 2.34" -msgstr "pc01,Raum 2.34" - -#: ../lib/modules/inetOrgPerson.inc:209 -msgid "pc01,pc02" -msgstr "pc01,pc02" - -#: ../templates/tree/edit.php:241 ../templates/config/confmain.php:494 -msgid "required" -msgstr "erforderlich" - -#: ../templates/config/confmain.php:495 -msgid "required for Samba 3 accounts" -msgstr "erforderlich für Samba 3 Accounts" - -#: ../templates/pdfedit/pdfpage.php:546 -msgid "right" -msgstr "rechts" - -#: ../lib/modules/posixGroup.inc:378 ../lib/modules/sambaAccount.inc:206 -#: ../lib/modules/sambaSamAccount.inc:222 ../lib/modules/posixAccount.inc:216 -msgid "secret" -msgstr "geheim" - -#: ../lib/modules/posixAccount.inc:174 ../lib/modules/nisMailAlias.inc:84 -msgid "smiller" -msgstr "hmueller" - -#: ../templates/tree/edit.php:434 -msgid "structural" -msgstr "strukturell" - -#: ../templates/tree/edit.php:386 -msgid "true" -msgstr "wahr" - -#: ../lib/modules/posixGroup.inc:372 -msgid "user01,user02,user03" -msgstr "benutzer01,benutzer02,benutzer03" - -#: ../lib/modules/inetOrgPerson.inc:200 -msgid "user@company.com" -msgstr "benutzer@firma.de" - -#: ../lib/modules/posixAccount.inc:188 -msgid "users" -msgstr "Benutzer" - diff --git a/lam/locale/es_ES/LC_MESSAGES/messages.mo b/lam/locale/es_ES/LC_MESSAGES/messages.mo deleted file mode 100644 index 762a993303c5ffb2e9e2606dc3c98468b887d2a5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 79152 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, 2004. -# -msgid "" -msgstr "" -"Project-Id-Version: messages\n" -"Report-Msgid-Bugs-To: post@rolandgruber.de \n" -"POT-Creation-Date: 2004-01-14 17:45+0200\n" -"PO-Revision-Date: 2004-12-13 20:04+0100\n" -"Last-Translator: Dani Pardo \n" -"Language-Team: Español \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: KBabel 1.3.1\n" - -#: ../templates/lists/listdomains.php:138 -#: ../templates/lists/listdomains.php:188 -#, php-format -msgid "%s Samba domain(s) found" -msgstr "%s Dominios de Samba encontrado(s) " - -#: ../templates/lists/listgroups.php:206 ../templates/lists/listgroups.php:282 -#, php-format -msgid "%s group(s) found" -msgstr "%s grupo(s) encontrado(s)" - -#: ../templates/lists/listhosts.php:206 ../templates/lists/listhosts.php:266 -#, php-format -msgid "%s host(s) found" -msgstr "%s host(s) encontrados" - -#: ../templates/lists/listusers.php:245 ../templates/lists/listusers.php:316 -#, php-format -msgid "%s user(s) found" -msgstr "%s usuario(s) encontrados" - -#: ../lib/modules/posixAccount.inc:196 -msgid "/home/smiller" -msgstr "/home/smiller" - -#: ../templates/massBuildAccounts.php:113 -msgid "A required column is missing in your CSV file." -msgstr "Falta una columna obligatoria en su archivo CVS" - -#: ../templates/ou_edit.php:95 ../templates/ou_edit.php:160 -#: ../templates/ou_edit.php:225 ../templates/ou_edit.php:290 -#: ../templates/config/confmodules.php:499 -#: ../templates/config/confmain.php:422 ../templates/pdfedit/pdfdelete.php:82 -#: ../templates/pdfedit/pdfpage.php:834 ../templates/pdfedit/pdfmain.php:144 -#: ../templates/profedit/profiledelete.php:86 -#: ../templates/profedit/profiledelete.php:98 -#: ../templates/profedit/profiledelete.php:110 -#: ../templates/profedit/profilepage.php:140 -#: ../templates/profedit/profilemain.php:262 -msgid "Abort" -msgstr "Abortar" - -#: ../lib/modules/account.inc:35 -msgid "Account" -msgstr "Cuenta" - -#: ../templates/massBuildAccounts.php:164 ../lib/modules/ieee802device.inc:84 -#: ../lib/modules/posixGroup.inc:407 ../lib/modules/posixGroup.inc:411 -#: ../lib/modules/posixGroup.inc:412 ../lib/modules/sambaAccount.inc:48 -#: ../lib/modules/sambaAccount.inc:51 ../lib/modules/sambaAccount.inc:54 -#: ../lib/modules/sambaAccount.inc:56 ../lib/modules/sambaAccount.inc:58 -#: ../lib/modules/sambaAccount.inc:61 ../lib/modules/sambaAccount.inc:64 -#: ../lib/modules/sambaAccount.inc:65 ../lib/modules/sambaAccount.inc:66 -#: ../lib/modules/sambaAccount.inc:67 ../lib/modules/sambaAccount.inc:68 -#: ../lib/modules/sambaAccount.inc:69 ../lib/modules/sambaAccount.inc:70 -#: ../lib/modules/sambaAccount.inc:71 ../lib/modules/sambaAccount.inc:72 -#: ../lib/modules/sambaAccount.inc:73 ../lib/modules/sambaSamAccount.inc:46 -#: ../lib/modules/sambaSamAccount.inc:49 ../lib/modules/sambaSamAccount.inc:52 -#: ../lib/modules/sambaSamAccount.inc:54 ../lib/modules/sambaSamAccount.inc:57 -#: ../lib/modules/sambaSamAccount.inc:60 ../lib/modules/sambaSamAccount.inc:61 -#: ../lib/modules/sambaSamAccount.inc:62 ../lib/modules/sambaSamAccount.inc:63 -#: ../lib/modules/sambaSamAccount.inc:64 ../lib/modules/sambaSamAccount.inc:65 -#: ../lib/modules/sambaSamAccount.inc:66 ../lib/modules/sambaSamAccount.inc:67 -#: ../lib/modules/sambaSamAccount.inc:68 ../lib/modules/sambaSamAccount.inc:69 -#: ../lib/modules/sambaSamAccount.inc:70 ../lib/modules/posixAccount.inc:66 -#: ../lib/modules/posixAccount.inc:70 ../lib/modules/posixAccount.inc:74 -#: ../lib/modules/posixAccount.inc:82 ../lib/modules/posixAccount.inc:83 -#: ../lib/modules/posixAccount.inc:84 ../lib/modules/posixAccount.inc:85 -#: ../lib/modules/posixAccount.inc:86 ../lib/modules/posixAccount.inc:87 -#: ../lib/modules/posixAccount.inc:88 ../lib/modules/sambaGroupMapping.inc:341 -#: ../lib/modules/sambaGroupMapping.inc:342 -#: ../lib/modules/shadowAccount.inc:40 ../lib/modules/shadowAccount.inc:42 -#: ../lib/modules/shadowAccount.inc:44 ../lib/modules/shadowAccount.inc:46 -#: ../lib/modules/shadowAccount.inc:48 ../lib/modules/shadowAccount.inc:49 -#: ../lib/modules/inetOrgPerson.inc:53 ../lib/modules/inetOrgPerson.inc:55 -#: ../lib/modules/inetOrgPerson.inc:57 ../lib/modules/inetOrgPerson.inc:59 -#: ../lib/modules/inetOrgPerson.inc:61 ../lib/modules/inetOrgPerson.inc:63 -#: ../lib/modules/inetOrgPerson.inc:65 ../lib/modules/inetOrgPerson.inc:67 -#: ../lib/modules/inetOrgPerson.inc:69 ../lib/modules/inetOrgPerson.inc:71 -#: ../lib/modules/inetOrgPerson.inc:73 ../lib/modules/inetOrgPerson.inc:74 -#, php-format -msgid "Account %s:" -msgstr "Cuenta %s:" - -#: ../templates/masscreate.php:78 -msgid "Account creation via file upload" -msgstr "Creación de cuenta mediante transferencia de archivo" - -#: ../lib/modules/shadowAccount.inc:156 -msgid "Account expiration date. Format: DD-MM-YYYY" -msgstr "Fecha de caducidad de cuenta. Formato: DD-MM-YYYY" - -#: ../help/help.inc:171 -msgid "Account expire date. Format: DD-MM-YYYY" -msgstr "Fecha de caducidad de cuenta: Formato: DD-MM-YYYY" - -#: ../lib/modules/shadowAccount.inc:333 -msgid "Account inactive" -msgstr "Cuenta inactiva" - -#: ../lib/modules/sambaAccount.inc:118 ../lib/modules/sambaAccount.inc:227 -#: ../lib/modules/sambaAccount.inc:336 ../lib/modules/sambaAccount.inc:339 -#: ../lib/modules/sambaAccount.inc:713 ../lib/modules/sambaSamAccount.inc:149 -#: ../lib/modules/sambaSamAccount.inc:152 -#: ../lib/modules/sambaSamAccount.inc:241 -#: ../lib/modules/sambaSamAccount.inc:692 -#: ../lib/modules/sambaSamAccount.inc:845 ../help/help.inc:196 -msgid "Account is deactivated" -msgstr "La cuenta está desactivada" - -#: ../templates/config/confmain.php:215 ../help/help.inc:106 -msgid "Account modules" -msgstr "Módulos de cuenta" - -#: ../templates/delete.php:88 -msgid "Account name:" -msgstr "Nombre de la cuenta:" - -#: ../lib/modules.inc:767 -msgid "Account was created successfully." -msgstr "La cuenta se creó correctamente." - -#: ../lib/modules.inc:770 -msgid "Account was modified successfully." -msgstr "La cuenta se modificó correctamente." - -#: ../templates/pdfedit/pdfpage.php:725 ../lib/modules/ieee802device.inc:151 -msgid "Add" -msgstr "Añadir" - -#: ../templates/pdfedit/pdfpage.php:713 -msgid "Add after" -msgstr "Añadir al final" - -#: ../templates/config/profmanage.php:172 ../help/help.inc:108 -msgid "Add profile" -msgstr "Añadir perfil" - -#: ../templates/pdfedit/pdfpage.php:699 -msgid "Add section or static text" -msgstr "Añadir sección o texto estático" - -#: ../lib/modules/posixAccount.inc:188 ../lib/modules/posixAccount.inc:330 -#: ../lib/modules/posixAccount.inc:831 ../lib/modules/posixAccount.inc:893 -#: ../lib/modules/posixAccount.inc:925 ../lib/modules/posixAccount.inc:966 -#: ../help/help.inc:138 -msgid "Additional groups" -msgstr "Grupos adicionales" - -#: ../templates/massDoUpload.php:98 -msgid "Additional tasks for module:" -msgstr "Tareas adicionales para el módulo:" - -#: ../lib/modules/sambaAccount.inc:568 ../lib/modules/sambaAccount.inc:769 -#: ../lib/modules/sambaAccount.inc:772 ../lib/modules/sambaSamAccount.inc:539 -#: ../lib/modules/sambaSamAccount.inc:750 -#: ../lib/modules/sambaSamAccount.inc:753 -msgid "Administrator" -msgstr "Administrador" - -#: ../lib/modules/posixGroup.inc:303 -msgid "Administrators group" -msgstr "Grupo del administrador" - -#: ../templates/domain.php:146 ../help/help.inc:252 -msgid "Algorithmic RID Base" -msgstr "Base algorítmica del RID" - -#: ../templates/domain.php:252 -msgid "Algorithmic RID base is not a number!" -msgstr "La base algorítmica del RID no es un numero!" - -#: ../templates/initsuff.php:157 -msgid "All changes were successful." -msgstr "Todos los cambios aplicados con éxito." - -#: ../lib/lists.inc:181 -msgid "Allowed hosts" -msgstr "Hosts permitidos" - -#: ../lib/modules/sambaAccount.inc:819 ../lib/modules/sambaAccount.inc:820 -#: ../lib/modules/sambaSamAccount.inc:800 -#: ../lib/modules/sambaSamAccount.inc:801 -msgid "Allowed workstations" -msgstr "Estaciones de trabajo permitidas" - -#: ../templates/lists/listusers.php:347 -msgid "Apply" -msgstr "Aplicar" - -#: ../lib/cache.inc:101 ../lib/cache.inc:160 -msgid "Attribute not defined in LDAP." -msgstr "Atributo no definido en LDAP" - -#: ../templates/config/confmain.php:292 ../lib/config.inc:338 -msgid "Attributes in Group List" -msgstr "Atributos en la lista de grupos" - -#: ../templates/config/confmain.php:298 ../lib/config.inc:339 -msgid "Attributes in Host List" -msgstr "Atributos en la lista de hosts" - -#: ../templates/config/confmain.php:286 ../lib/config.inc:337 -msgid "Attributes in User List" -msgstr "Atributos en la lista de usuarios" - -#: ../templates/pdfedit/pdfpage.php:852 -msgid "Available PDF fields" -msgstr "Campos disponibles del PDF " - -#: ../templates/config/confmodules.php:319 -msgid "Available group modules" -msgstr "Módulos de grupo disponibles" - -#: ../lib/modules/posixAccount.inc:899 -msgid "Available groups" -msgstr "Grupos disponibles" - -#: ../templates/config/confmodules.php:422 -msgid "Available host modules" -msgstr "Modulos de host disponibles" - -#: ../templates/config/confmodules.php:216 -msgid "Available user modules" -msgstr "Módulos de usuarios disponibles" - -#: ../lib/modules/posixGroup.inc:199 -msgid "Available users" -msgstr "Usuarios disponibles" - -#: ../lib/modules/sambaAccount.inc:825 ../lib/modules/sambaSamAccount.inc:806 -msgid "Available workstations" -msgstr "Estaciones de trabajo disponibles" - -#: ../lib/modules/posixGroup.inc:203 ../lib/modules/sambaAccount.inc:829 -#: ../lib/modules/sambaSamAccount.inc:810 ../lib/modules/posixAccount.inc:903 -msgid "Back" -msgstr "Atrás" - -#: ../templates/config/confsave.php:248 ../templates/config/conflogin.php:147 -#: ../templates/logout.php:71 -msgid "Back to Login" -msgstr "Volver a autentificarse" - -#: ../templates/ou_edit.php:309 ../templates/ou_edit.php:313 -msgid "Back to OU-Editor" -msgstr "Retroceder al editor de Unidades Organizativas (OU)" - -#: ../templates/pdfedit/pdfdelete.php:61 ../templates/pdfedit/pdfdelete.php:69 -#: ../templates/pdfedit/pdfdelete.php:90 -msgid "Back to PDF Editor" -msgstr "Volver al editor de PDF" - -#: ../templates/profedit/profilecreate.php:115 -#: ../templates/profedit/profiledelete.php:63 -#: ../templates/profedit/profiledelete.php:71 -#: ../templates/profedit/profiledelete.php:119 -msgid "Back to Profile Editor" -msgstr "Regresar al editor de perfiles" - -#: ../lib/modules.inc:780 -msgid "Back to account list" -msgstr "Regresar a la lista de cuentas" - -#: ../templates/domain.php:290 ../templates/domain.php:317 -msgid "Back to domain list" -msgstr "Regresar a la lista de dominios" - -#: ../templates/lists/userlink.php:65 -msgid "Back to group list" -msgstr "Regresar a la lista de usuarios" - -#: ../templates/delete.php:238 -msgid "Back to list" -msgstr "Regresar a la lista" - -#: ../templates/config/confsave.php:92 ../templates/config/confsave.php:97 -#: ../templates/config/confsave.php:102 ../templates/config/confsave.php:107 -#: ../templates/config/confsave.php:112 ../templates/config/confsave.php:117 -#: ../templates/config/confsave.php:122 ../templates/config/confsave.php:127 -#: ../templates/config/confsave.php:132 ../templates/config/confsave.php:137 -#: ../templates/config/confsave.php:142 ../templates/config/confsave.php:148 -#: ../templates/config/confsave.php:154 ../templates/config/confsave.php:160 -#: ../templates/config/confsave.php:166 ../templates/config/confsave.php:172 -#: ../templates/config/confsave.php:178 ../templates/config/confsave.php:225 -msgid "Back to preferences..." -msgstr "Regresar a preferencias..." - -#: ../templates/config/profmanage.php:382 -msgid "Back to profile login" -msgstr "Regresar al logeo del perfil" - -#: ../templates/pdfedit/pdfpage.php:577 -msgid "Beginning" -msgstr "Comienzo" - -#: ../lib/modules/quota.inc:31 -msgid "Block hard quota" -msgstr "Bloquear quota \"hard\"" - -#: ../lib/modules/quota.inc:31 -msgid "" -"Block hard quota contains invalid characters. Only natural numbers are " -"allowed." -msgstr "El campo \"Bloquear quota hard\" contiene carácteres inválidos. Sólo se admiten numeros naturales." - -#: ../lib/modules/quota.inc:34 -msgid "Block quota" -msgstr "Bloquear quota" - -#: ../lib/modules/quota.inc:30 -msgid "Block soft quota" -msgstr "Bloquear quota \"soft\"" - -#: ../lib/modules/quota.inc:30 -msgid "" -"Block soft quota contains invalid characters. Only natural numbers are " -"allowed." -msgstr "El campo \"Bloquear quota soft\" contiene carácteres inválidos. Sólo se admiten números naturales." - -#: ../lib/modules/quota.inc:34 -msgid "Block soft quota must be smaller than block hard quota." -msgstr "El campo \"Bloquear quota soft\" debe ser menor que el campo \"Bloquear quota hard\"." - -#: ../templates/pdfedit/pdfpage.php:524 -msgid "Bottom" -msgstr "Debajo" - -#: ../lib/modules/sambaGroupMapping.inc:55 -msgid "Builtin Group" -msgstr "Grupo incorporado del sistema" - -#: ../templates/masscreate.php:127 -msgid "CSV file:" -msgstr "Archivo CSV:" - -#: ../templates/config/confmain.php:198 ../lib/config.inc:332 -#: ../help/help.inc:102 -msgid "Cache timeout" -msgstr "Tiempo máximo de espera de la caché:" - -#: ../templates/config/confsave.php:96 -msgid "Cache timeout is invalid!" -msgstr "El tiempo máximo de espera de la caché es inválido." - -#: ../lib/modules/posixGroup.inc:334 ../lib/modules/sambaAccount.inc:351 -#: ../lib/modules/sambaAccount.inc:355 ../lib/modules/sambaAccount.inc:359 -#: ../lib/modules/sambaAccount.inc:363 ../lib/modules/sambaAccount.inc:375 -#: ../lib/modules/sambaSamAccount.inc:164 -#: ../lib/modules/sambaSamAccount.inc:168 -#: ../lib/modules/sambaSamAccount.inc:172 -#: ../lib/modules/sambaSamAccount.inc:176 ../lib/modules/posixAccount.inc:331 -#: ../lib/modules/sambaGroupMapping.inc:280 -#: ../lib/modules/shadowAccount.inc:140 ../lib/modules/shadowAccount.inc:144 -#: ../lib/modules/shadowAccount.inc:148 ../lib/modules/shadowAccount.inc:152 -#: ../help/help.inc:139 ../help/help.inc:163 ../help/help.inc:165 -#: ../help/help.inc:167 ../help/help.inc:169 ../help/help.inc:201 -#: ../help/help.inc:204 ../help/help.inc:207 ../help/help.inc:209 -#: ../help/help.inc:212 ../help/help.inc:218 ../help/help.inc:228 -#: ../help/help.inc:230 ../help/help.inc:232 -msgid "Can be left empty." -msgstr "Se puede dejar vacio." - -#: ../templates/domain.php:188 ../templates/domain.php:219 -#: ../templates/delete.php:104 ../templates/initsuff.php:194 -msgid "Cancel" -msgstr "Cancelar" - -#: ../templates/login.php:321 ../templates/login.php:326 -msgid "Cannot connect to specified LDAP-Server. Please try again." -msgstr "No se puede conectar al servidor LDAP especificado. Por favor, inténtelo de nuevo." - -#: ../lib/config.inc:323 ../lib/config.inc:895 -msgid "Cannot open config file!" -msgstr "No se puede abrir el archivo de configuración." - -#: ../templates/pdfedit/pdfpage.php:605 ../templates/pdfedit/pdfpage.php:611 -msgid "Change" -msgstr "Cambiar" - -#: ../lib/modules/posixGroup.inc:155 -msgid "Change GID number of users and hosts" -msgstr "Cambiar GID de usuarios y hosts" - -#: ../templates/login.php:272 -msgid "Change Profile" -msgstr "Cambiar perfil" - -#: ../templates/lists/listhosts.php:285 ../templates/lists/listgroups.php:301 -#: ../templates/lists/listdomains.php:207 ../templates/lists/listusers.php:335 -msgid "Change Suffix" -msgstr "Cambiar Sufijo" - -#: ../templates/config/profmanage.php:319 ../help/help.inc:116 -msgid "Change default profile" -msgstr "Cambiar perfil por defecto" - -#: ../templates/config/profmanage.php:339 ../help/help.inc:118 -msgid "Change master password" -msgstr "Cambiar contraseña maestra" - -#: ../help/help.inc:100 -msgid "Change password" -msgstr "Cambiar contraseña" - -#: ../lib/baseModule.inc:524 -#, php-format -msgid "Changed value %s because only numeric values are allowed." -msgstr "Se ha cambiado el valor %s porque solo se admiten valores numéricos." - -#: ../lib/baseModule.inc:541 -msgid "Changed value because only ASCII characters are allowed." -msgstr "Se ha cambiado el valor porque sólo se admiten valores alfanuméricos." - -#: ../lib/config.inc:88 -msgid "Click here if you are not directed to the next page." -msgstr "Haga click aquí si no se le redirge automáticamente a la página siguiente." - -#: ../templates/masscreate.php:135 -msgid "Columns:" -msgstr "Columnas:" - -#: ../lib/modules/sambaAccount.inc:363 ../lib/modules/sambaSamAccount.inc:176 -msgid "" -"Comma separated list of Samba workstations the user is allowed to login. " -"Empty means every workstation." -msgstr "" -"Lista (separada por comas) de estaciones de trabajo a través de las cuales el usuario está autorizado a Iniciar sesión. " -"Vacio significará todas las estacioines de trabajo." - -#: ../help/help.inc:228 -msgid "Comma separated list of unix workstations the user is allowed to login." -msgstr "Lista (separada por comas) de estaciones Unix a traves de las cuales el usuario estará autorizado a entrar." - -#: ../lib/modules/inetOrgPerson.inc:115 -msgid "Common name" -msgstr "Nombre común" - -#: ../templates/login.php:119 -msgid "Configuration Login" -msgstr "Login de configuración" - -#: ../templates/login.php:255 -msgid "Configuration profile" -msgstr "Perfil de configuración" - -#: ../help/help.inc:46 ../help/help.inc:48 ../help/help.inc:60 -#: ../help/help.inc:66 ../help/help.inc:81 ../help/help.inc:86 -#: ../help/help.inc:88 ../help/help.inc:90 ../help/help.inc:95 -#: ../help/help.inc:100 ../help/help.inc:102 ../help/help.inc:104 -#: ../help/help.inc:106 -msgid "Configuration wizard" -msgstr "Asistente de configuración" - -#: ../templates/config/confmodules.php:257 -#: ../templates/config/confmodules.php:360 -#: ../templates/config/confmodules.php:463 -msgid "Conflicting module:" -msgstr "Módulo en conflicto:" - -#: ../templates/config/profmanage.php:99 -msgid "Could not rename file!" -msgstr "No se pudo renombrar el archivo!" - -#: ../templates/initsuff.php:193 -msgid "Create" -msgstr "Crear" - -#: ../lib/modules.inc:760 -msgid "Create Account" -msgstr "Crear cuenta" - -#: ../lib/modules.inc:778 -msgid "Create PDF file" -msgstr "Crear PDF" - -#: ../templates/lists/listgroups.php:319 -msgid "Create PDF for all groups" -msgstr "Crear PFD para todos los grupos" - -#: ../templates/lists/listhosts.php:304 -msgid "Create PDF for all hosts" -msgstr "Crear PDF para todos los hosts" - -#: ../templates/lists/listusers.php:367 -msgid "Create PDF for all users" -msgstr "Crear PDF para todas las máquinas" - -#: ../templates/lists/listgroups.php:317 -msgid "Create PDF for selected group(s)" -msgstr "Crear PDF para los grupos selecionados" - -#: ../templates/lists/listhosts.php:302 -msgid "Create PDF for selected host(s)" -msgstr "Crear PFD para los hosts selecionados" - -#: ../templates/lists/listusers.php:365 -msgid "Create PDF for selected user(s)" -msgstr "Crear PDF para los usuarios selecionados" - -#: ../templates/pdfedit/pdfmain.php:109 -msgid "Create a new PDF structure for scope: " -msgstr "Crear una nueva estructura del PDF para el contexto:" - -#: ../templates/profedit/profilemain.php:140 -#: ../templates/profedit/profilemain.php:183 -#: ../templates/profedit/profilemain.php:226 -msgid "Create a new profile" -msgstr "Crear un nuevo perfil" - -#: ../lib/modules.inc:776 -msgid "Create another account" -msgstr "Crear una nueva cuenta" - -#: ../templates/masscreate.php:99 -msgid "Create group accounts" -msgstr "Crear cuentas de grupo" - -#: ../lib/modules/posixAccount.inc:838 -msgid "Create home directory" -msgstr "Crear el directorio del usuario" - -#: ../templates/masscreate.php:102 -msgid "Create host accounts" -msgstr "Crear cuentas de host" - -#: ../lib/modules.inc:673 -msgid "Create new Account" -msgstr "Crear nueva cuenta" - -#: ../templates/masscreate.php:96 -msgid "Create user accounts" -msgstr "Crear cuentas de usuario" - -#: ../templates/config/profmanage.php:84 -msgid "Created new profile." -msgstr "Se ha creado un nuevo perfil." - -#: ../templates/tools.php:70 -msgid "Creates accounts by uploading a CSV formated file." -msgstr "Crea cuentas de usuario mediante la transferencia de un archivo CSV." - -#: ../templates/delete.php:89 ../lib/modules.inc:1509 -msgid "DN" -msgstr "DN" - -#: ../templates/masscreate.php:138 -msgid "DN settings" -msgstr "Opcioines de DN" - -#: ../templates/masscreate.php:142 ../help/help.inc:129 -msgid "DN suffix" -msgstr "Sufijo DN" - -#: ../lib/modules/sambaGroupMapping.inc:253 -msgid "DOMAIN_ADMINS" -msgstr "DOMAIN_ADMINS" - -#: ../templates/massBuildAccounts.php:164 -msgid "Data field for RDN is empty!" -msgstr "El campo RDN está vacio!" - -#: ../lib/modules/sambaAccount.inc:343 ../lib/modules/sambaSamAccount.inc:156 -#: ../help/help.inc:193 -msgid "Date after the user is able to change his password. Format: DD-MM-YYYY" -msgstr "Fecha a partir de la cual el usuario está autorizado a cambiar su contraseña. El formato es DD-MM-YYYY" - -#: ../lib/modules/sambaAccount.inc:345 ../lib/modules/sambaSamAccount.inc:158 -#: ../help/help.inc:195 -msgid "Date after the user must change his password. Format: DD-MM-YYYY" -msgstr "Fecha en la que el usuario deberá cambiar su contraseña. Formato: DD-MM-YYYY" - -#: ../lib/modules/shadowAccount.inc:140 ../help/help.inc:163 -msgid "" -"Days before password is to expire that user is warned of pending password " -"expiration. If set value must be 0<." -msgstr "Numero de dias antes de que caduque la contraseña, a partir de los cuales el usuario será avisado de dicha caducidad. En caso de especificar valor, debe ser menor que 0." - -#: ../templates/config/confmain.php:328 ../lib/config.inc:341 -#: ../help/help.inc:88 -msgid "Default language" -msgstr "Idioma por defecto" - -#: ../templates/masscreate.php:147 ../templates/masscreate.php:302 -msgid "Default value" -msgstr "Valor por defecto" - -#: ../templates/domain.php:218 ../templates/delete.php:103 -msgid "Delete" -msgstr "Borrar" - -#: ../templates/delete.php:74 ../templates/delete.php:121 -msgid "Delete Account" -msgstr "Borrar cuenta" - -#: ../templates/lists/listdomains.php:214 -msgid "Delete Domain(s)" -msgstr "Borrar Dominio(s)" - -#: ../templates/lists/listgroups.php:308 -msgid "Delete Group(s)" -msgstr "Borrar Grupo(s)" - -#: ../templates/lists/listhosts.php:293 -msgid "Delete Host(s)" -msgstr "Borrar Host(s)" - -#: ../templates/pdfedit/pdfdelete.php:48 ../templates/pdfedit/pdfmain.php:133 -msgid "Delete PDF structure" -msgstr "Borrar estructura del PDF" - -#: ../templates/profedit/profiledelete.php:52 -msgid "Delete User Profile" -msgstr "Borrar perfil de usuario" - -#: ../templates/domain.php:209 -msgid "Delete domain(s)" -msgstr "Borrar dominio(s)" - -#: ../lib/modules/posixAccount.inc:870 -msgid "Delete home directory" -msgstr "Borrar directorio del usuario" - -#: ../templates/pdfedit/pdfdelete.php:68 -#: ../templates/profedit/profiledelete.php:70 -msgid "Delete operation canceled." -msgstr "Se ha cancelado la operación de borrar" - -#: ../templates/ou_edit.php:357 ../templates/ou_edit.php:390 -#: ../templates/ou_edit.php:423 ../templates/ou_edit.php:456 -#: ../help/help.inc:238 -msgid "Delete organizational unit" -msgstr "Borrar unidad organizativa" - -#: ../templates/config/profmanage.php:248 -#: ../templates/profedit/profilemain.php:164 -#: ../templates/profedit/profilemain.php:207 -#: ../templates/profedit/profilemain.php:250 ../help/help.inc:112 -msgid "Delete profile" -msgstr "Borrar perefil" - -#: ../templates/lists/listusers.php:356 -msgid "Delete user(s)" -msgstr "Borrar usuario(s)" - -#: ../lib/modules/sambaGroupMapping.inc:56 -msgid "Deleted Account" -msgstr "Cuenta suprimida" - -#: ../templates/delete.php:224 -#, php-format -msgid "Deleted DN: %s" -msgstr "DN suprimido: %s" - -#: ../templates/pdfedit/pdfdelete.php:59 -msgid "Deleted PDF structure:" -msgstr "Estructura de PDF suprimida:" - -#: ../templates/profedit/profiledelete.php:62 -msgid "Deleted profile:" -msgstr "Perfil suprimido:" - -#: ../templates/delete.php:128 -msgid "Deleting. Please stand by ..." -msgstr "Borrando. Por favor, espere..." - -#: ../lib/modules/account.inc:71 ../lib/modules/account.inc:155 -#: ../lib/modules/account.inc:172 ../lib/modules/posixGroup.inc:131 -#: ../lib/modules/posixGroup.inc:329 ../lib/modules/posixGroup.inc:371 -#: ../lib/modules/sambaAccount.inc:850 ../lib/modules/sambaSamAccount.inc:922 -#: ../lib/modules/posixAccount.inc:267 -#: ../lib/modules/sambaGroupMapping.inc:301 -#: ../lib/modules/shadowAccount.inc:335 ../lib/modules/inetOrgPerson.inc:135 -#: ../lib/modules/inetOrgPerson.inc:393 ../lib/modules/inetOrgPerson.inc:461 -#: ../lib/lists.inc:187 -msgid "Description" -msgstr "Descripción" - -#: ../lib/modules/sambaAccount.inc:191 ../lib/modules/sambaAccount.inc:312 -#: ../lib/modules/sambaAccount.inc:842 ../lib/modules/sambaSamAccount.inc:125 -#: ../lib/modules/sambaSamAccount.inc:205 -#: ../lib/modules/sambaSamAccount.inc:914 -#: ../lib/modules/sambaGroupMapping.inc:159 -#: ../lib/modules/sambaGroupMapping.inc:267 -#: ../lib/modules/sambaGroupMapping.inc:299 ../help/help.inc:174 -msgid "Display name" -msgstr "Nombre a mostrar" - -#: ../lib/modules.inc:471 -msgid "" -"Displayed account numbers start at \"0\". Add 2 to get the row in your " -"spreadsheet." -msgstr "Los números de cuenta mostrados empiezan a partir de \"0\". Añada 2 para obtener la fila correspondiente dentro de su hoja de cálculo." - -#: ../templates/domain.php:210 -msgid "Do you really want to delete domain(s):" -msgstr "Está Ud. seguro que quiere borrar los dominio(s): " - -#: ../templates/ou_edit.php:87 ../templates/ou_edit.php:152 -#: ../templates/ou_edit.php:217 ../templates/ou_edit.php:282 -msgid "Do you really want to delete this OU?" -msgstr "Está Ud. seguro que quiere borrar esta Unidad Organizativa (U.O)?" - -#: ../templates/pdfedit/pdfdelete.php:77 -msgid "Do you really want to delete this PDF structure?" -msgstr "Está Ud. seguro que quiere borrar esta estructura de PDF?" - -#: ../templates/profedit/profiledelete.php:81 -#: ../templates/profedit/profiledelete.php:93 -#: ../templates/profedit/profiledelete.php:105 -msgid "Do you really want to delete this profile?" -msgstr "Está Ud. seguro que quiere borrar este perfil?" - -#: ../templates/delete.php:83 -msgid "Do you really want to remove the following accounts?" -msgstr "Está Ud. seguro de querer borrar las cuentas especificadas?" - -#: ../lib/modules/sambaAccount.inc:157 ../lib/modules/sambaAccount.inc:293 -#: ../lib/modules/sambaAccount.inc:303 ../lib/modules/sambaAccount.inc:374 -#: ../lib/modules/sambaAccount.inc:784 ../lib/modules/sambaAccount.inc:793 -#: ../lib/modules/sambaAccount.inc:849 ../lib/modules/sambaSamAccount.inc:185 -#: ../lib/modules/sambaSamAccount.inc:198 -#: ../lib/modules/sambaSamAccount.inc:317 -#: ../lib/modules/sambaSamAccount.inc:765 -#: ../lib/modules/sambaSamAccount.inc:773 -#: ../lib/modules/sambaSamAccount.inc:888 -#: ../lib/modules/sambaSamAccount.inc:901 -#: ../lib/modules/sambaSamAccount.inc:921 -#: ../lib/modules/sambaGroupMapping.inc:53 -#: ../lib/modules/sambaGroupMapping.inc:187 -#: ../lib/modules/sambaGroupMapping.inc:279 -#: ../lib/modules/sambaGroupMapping.inc:321 ../help/help.inc:211 -#: ../help/help.inc:229 -msgid "Domain" -msgstr "Dominio" - -#: ../lib/modules/sambaAccount.inc:33 ../lib/modules/sambaAccount.inc:288 -#: ../lib/modules/sambaSamAccount.inc:33 -#: ../lib/modules/sambaGroupMapping.inc:40 -msgid "Domain Admins" -msgstr "Administradores del Dominio" - -#: ../lib/modules/sambaAccount.inc:35 ../lib/modules/sambaSamAccount.inc:34 -#: ../lib/modules/sambaGroupMapping.inc:45 -msgid "Domain Certificate Admins" -msgstr "Administradores certificados del Dominio" - -#: ../lib/modules/sambaAccount.inc:34 ../lib/modules/sambaAccount.inc:529 -#: ../lib/modules/sambaSamAccount.inc:34 -#: ../lib/modules/sambaSamAccount.inc:500 -#: ../lib/modules/sambaGroupMapping.inc:43 -msgid "Domain Computers" -msgstr "Ordenadores del Dominio" - -#: ../lib/modules/sambaAccount.inc:35 ../lib/modules/sambaSamAccount.inc:34 -#: ../lib/modules/sambaGroupMapping.inc:44 -msgid "Domain Controllers" -msgstr "Controladores del Dominio" - -#: ../lib/modules/sambaAccount.inc:36 ../lib/modules/sambaSamAccount.inc:35 -#: ../lib/modules/sambaGroupMapping.inc:47 -msgid "Domain Enterprise Admins" -msgstr "Administradores \"Enterprise\" del Dominio" - -#: ../lib/modules/sambaGroupMapping.inc:52 -#: ../lib/modules/sambaGroupMapping.inc:179 -msgid "Domain Group" -msgstr "Grupo de Dominio" - -#: ../lib/modules/sambaAccount.inc:34 ../lib/modules/sambaSamAccount.inc:33 -#: ../lib/modules/sambaGroupMapping.inc:42 -msgid "Domain Guests" -msgstr "Invitados del Dominio" - -#: ../lib/modules/sambaAccount.inc:37 ../lib/modules/sambaSamAccount.inc:35 -#: ../lib/modules/sambaGroupMapping.inc:48 -msgid "Domain Policy Admins" -msgstr "Administradores de politicas de Dominio" - -#: ../templates/lists/listdomains.php:99 ../templates/domain.php:104 -#: ../help/help.inc:244 -msgid "Domain SID" -msgstr "SID del Dominio" - -#: ../lib/modules/sambaAccount.inc:36 ../lib/modules/sambaSamAccount.inc:35 -#: ../lib/modules/sambaGroupMapping.inc:46 -msgid "Domain Schema Admins" -msgstr "Administradores del Esquema de Dominio" - -#: ../templates/domain.php:83 -msgid "Domain Settings" -msgstr "Preferencias de Dominio" - -#: ../lib/modules/sambaAccount.inc:33 ../lib/modules/sambaSamAccount.inc:33 -#: ../lib/modules/sambaGroupMapping.inc:41 -msgid "Domain Users" -msgstr "Usuarios del Dominio" - -#: ../lib/modules/sambaGroupMapping.inc:247 -msgid "Domain administrators" -msgstr "Administradores del Dominio" - -#: ../templates/domain.php:313 -msgid "Domain deleted successfully." -msgstr "Dominio suprimido correctamente" - -#: ../templates/domain.php:269 -msgid "Domain has been modified." -msgstr "El dominio ha sido modicado." - -#: ../templates/lists/listdomains.php:98 ../templates/domain.php:88 -#: ../lib/modules/sambaAccount.inc:57 ../help/help.inc:240 -msgid "Domain name" -msgstr "Nombre del dominio" - -#: ../lib/modules/sambaAccount.inc:57 ../lib/modules/sambaAccount.inc:58 -msgid "" -"Domain name contains invalid characters. Valid characters are: a-z, A-Z, 0-9 " -"and -." -msgstr "El nombre del domio contiene carácteres inválidos. Los caracteres válidos son: a-z, A-Z, 0-9 y -." - -#: ../templates/domain.php:242 -msgid "Domain name is invalid!" -msgstr "El nombre del dominio es inválido!" - -#: ../templates/config/confmain.php:188 ../lib/config.inc:336 -msgid "DomainSuffix" -msgstr "SufijoDeDominio" - -#: ../templates/config/confsave.php:121 -msgid "DomainSuffix is invalid!" -msgstr "SufijoDeDominio es inválido!" - -#: ../templates/ou_edit.php:438 -msgid "Domains" -msgstr "Dominios" - -#: ../templates/pdfedit/pdfpage.php:581 -msgid "Down" -msgstr "Abajo" - -#: ../templates/masscreate.php:261 -msgid "Download sample CSV file" -msgstr "Bajarse archivo CSV de ejemplo" - -#: ../lib/modules/sambaAccount.inc:348 ../lib/modules/sambaSamAccount.inc:161 -msgid "Drive letter assigned on windows workstations as homedirectory." -msgstr "Letra de la unidad que será asignada al diretorio home en Windows." - -#: ../help/help.inc:199 -msgid "Driveletter assigned on windows workstations as homedirectory." -msgstr "Letra de la unidad que será asignada al diretorio home en Windows." - -#: ../lib/lists.inc:186 -msgid "E-Mail" -msgstr "E-Mail" - -#: ../templates/lists/listhosts.php:233 ../templates/lists/listgroups.php:233 -#: ../templates/lists/listdomains.php:168 ../templates/lists/listusers.php:283 -msgid "Edit" -msgstr "Editar" - -#: ../templates/pdfedit/pdfmain.php:121 -msgid "Edit PDF structure" -msgstr "Editar estructura PDF" - -#: ../lib/modules/posixGroup.inc:135 ../lib/modules/posixAccount.inc:832 -msgid "Edit groups" -msgstr "Editar grupos" - -#: ../templates/config/confmain.php:223 -msgid "Edit modules" -msgstr "Editar módulos" - -#: ../templates/profedit/profilemain.php:152 -#: ../templates/profedit/profilemain.php:195 -#: ../templates/profedit/profilemain.php:238 -msgid "Edit profile" -msgstr "Editar perfil" - -#: ../lib/modules/sambaAccount.inc:749 ../lib/modules/sambaSamAccount.inc:728 -msgid "Edit workstations" -msgstr "Editar estaciones de trabajo" - -#: ../lib/modules/inetOrgPerson.inc:72 ../lib/modules/inetOrgPerson.inc:99 -#: ../lib/modules/inetOrgPerson.inc:147 ../lib/modules/inetOrgPerson.inc:231 -#: ../lib/modules/inetOrgPerson.inc:417 ../lib/modules/inetOrgPerson.inc:466 -msgid "Employee type" -msgstr "Tipo de empleado" - -#: ../lib/modules/inetOrgPerson.inc:232 -msgid "Employee type: Contractor, Employee, Intern, Temp, External, ..." -msgstr "Tipo de empleado: Contratador, Empleado, Interno, Temporal, Externo, ..." - -#: ../templates/login.php:297 -msgid "Empty Password submitted. Try again." -msgstr "Contraseña en blanco.Pruebe de nuevo." - -#: ../templates/login.php:148 -msgid "Enter Username and Password for Account" -msgstr "Editar Usuario y Contraseña para la cuenta" - -#: ../templates/delete.php:230 -#, php-format -msgid "Error while deleting DN: %s" -msgstr "Error mientras se suprimia DN: %s" - -#: ../help/help.inc:69 ../help/help.inc:84 -msgid "Example" -msgstr "Ejemplo" - -#: ../templates/masscreate.php:146 ../templates/masscreate.php:159 -#: ../templates/masscreate.php:298 -msgid "Example value" -msgstr "Valor de ejemplo" - -#: ../help/help.inc:51 ../help/help.inc:63 -msgid "Examples" -msgstr "Ejemplos" - -#: ../help/help.inc:178 -msgid "Expand suffix with primary groupname" -msgstr "Expandir sufijo con el nombre de grupo primario" - -#: ../lib/modules/shadowAccount.inc:93 ../lib/modules/shadowAccount.inc:155 -#: ../lib/modules/shadowAccount.inc:187 ../lib/modules/shadowAccount.inc:310 -msgid "Expiration date" -msgstr "Fecha de expiración" - -#: ../help/help.inc:170 -msgid "Expire date" -msgstr "Fecha de expiración" - -#: ../templates/domain.php:287 -msgid "Failed to add domain!" -msgstr "Fallo al añadir dominio!" - -#: ../templates/initsuff.php:149 -msgid "Failed to create entry!" -msgstr "Fallo al crear la entrada!" - -#: ../templates/domain.php:270 -msgid "Failed to modify domain!" -msgstr "Fallo al modificar el dominio!" - -#: ../lib/modules/inetOrgPerson.inc:60 ../lib/modules/inetOrgPerson.inc:183 -#: ../lib/modules/inetOrgPerson.inc:255 ../lib/modules/inetOrgPerson.inc:256 -#: ../lib/modules/inetOrgPerson.inc:441 ../lib/modules/inetOrgPerson.inc:472 -msgid "Fax number" -msgstr "Numero de fax" - -#: ../templates/tools.php:69 -msgid "File upload" -msgstr "Subir archivo" - -#: ../lib/modules/sambaAccount.inc:359 ../lib/modules/sambaSamAccount.inc:172 -#: ../help/help.inc:201 -#, php-format -msgid "" -"Filename and -path relative to netlogon-share which should be executed on " -"logon. $%s and $%s are replaced with user- and groupname." -msgstr "Archivo y ruta relativa al recurso \"netlogon\" que se ejecutará al entrar. $%s y $%s se reemplazarán con el nombre de usuario y nombre del grupo." - -#: ../lib/lists.inc:155 -msgid "Filter" -msgstr "Filtro" - -#: ../lib/modules/inetOrgPerson.inc:52 ../lib/modules/inetOrgPerson.inc:122 -#: ../lib/modules/inetOrgPerson.inc:223 ../lib/modules/inetOrgPerson.inc:409 -#: ../lib/modules/inetOrgPerson.inc:464 ../lib/lists.inc:182 -#: ../help/help.inc:184 -msgid "First name" -msgstr "Nombre" - -#: ../lib/modules/inetOrgPerson.inc:52 ../lib/modules/inetOrgPerson.inc:53 -msgid "First name contains invalid characters!" -msgstr "El nombre contiene caracteres inválidos!" - -#: ../lib/modules/inetOrgPerson.inc:224 ../help/help.inc:185 -msgid "First name of user. Only letters, - and spaces are allowed." -msgstr "Nombre del usuario. Solo letras. También se permiten \"-\" y espacios." - -#: ../lib/modules/posixGroup.inc:128 ../lib/modules/posixGroup.inc:295 -#: ../lib/modules/posixGroup.inc:325 ../lib/modules/posixGroup.inc:350 -#: ../lib/modules/posixGroup.inc:369 ../lib/modules/posixGroup.inc:400 -#: ../lib/modules/posixAccount.inc:41 ../lib/modules/posixAccount.inc:963 -#: ../lib/modules/sambaGroupMapping.inc:297 ../lib/lists.inc:179 -#: ../lib/lists.inc:199 ../lib/lists.inc:218 ../help/help.inc:150 -msgid "GID number" -msgstr "Numero GID" - -#: ../lib/modules/posixGroup.inc:400 -msgid "" -"GID number has changed. Please select checkbox to change GID number of users " -"and hosts." -msgstr "El GID ha cambiado. Por favor, seleccione el checkbox para cambiar el GID del los usuarios y hosts." - -#: ../lib/modules/posixAccount.inc:41 -#, php-format -msgid "" -"GID number has changed. To keep file ownership you have to run the following " -"command as root: 'find / -gid %s -uid %s -exec chgrp %s {} \\;'" -msgstr "El GID ha cambiado. Para conservar los propiedad de sus archivos, ejecute el siguiente comando como root: 'find / -gid %s -uid %s -exec chgrp %s {} \\;'" - -#: ../lib/modules/posixGroup.inc:407 -msgid "GID number has to be a numeric value!" -msgstr "El numero GID debe ser un valor numérico!" - -#: ../lib/modules/posixGroup.inc:251 -msgid "GID ranges for Unix groups" -msgstr "Rangos GID para los grupos Unix" - -#: ../lib/modules/account.inc:46 ../lib/modules/posixAccount.inc:223 -#: ../lib/modules/posixAccount.inc:255 ../lib/modules/posixAccount.inc:308 -#: ../lib/modules/posixAccount.inc:340 ../lib/modules/posixAccount.inc:821 -#: ../lib/modules/posixAccount.inc:964 ../lib/modules/inetOrgPerson.inc:215 -#: ../lib/modules/inetOrgPerson.inc:265 ../help/help.inc:142 -#: ../help/help.inc:152 ../help/help.inc:160 -msgid "Gecos" -msgstr "Gecos" - -#: ../lib/modules/posixGroup.inc:139 ../lib/modules/posixAccount.inc:844 -msgid "Generate password" -msgstr "Generar contraseña" - -#: ../lib/modules/quota.inc:80 ../lib/modules/quota.inc:295 -msgid "Grace block period" -msgstr "Periodo de gracia de bloqueo" - -#: ../lib/modules/quota.inc:81 -msgid "Grace block period. Most filesystems use a fixed maximum value of 7 days." -msgstr "Periodo de gracia de bloqueo. La mayoria de sistemas de archivos usan un máximo fijo de 7 dias." - -#: ../lib/modules/quota.inc:97 -msgid "" -"Grace inode (files) period. Most filesystems use a fixed maximum value of 7 " -"days." -msgstr "Periodo de gracia de inodos(archivos). La mayoria de sistemas de archivos usan un máximo fijo de 7 dias." - -#: ../lib/modules/quota.inc:96 ../lib/modules/quota.inc:299 -msgid "Grace inode period" -msgstr "Periodo de gracia del inodos" - -#: ../lib/modules/posixGroup.inc:301 ../lib/lists.inc:202 -msgid "Group description" -msgstr "Descripcion del grupo" - -#: ../lib/modules/posixGroup.inc:330 ../help/help.inc:153 -msgid "Group description. If left empty group name will be used." -msgstr "Descripcion del grupo. Si está en blanco, se usará el nombre del grupo." - -#: ../lib/pdf.inc:452 -msgid "Group information page" -msgstr "Página de información del grupo" - -#: ../templates/config/confsave.php:131 -msgid "Group list attributes are invalid!" -msgstr "La lista de atributos del grupo es inválida!" - -#: ../lib/lists.inc:201 -msgid "Group member DNs" -msgstr "DN de los miembros de grupo" - -#: ../lib/modules/posixGroup.inc:134 ../lib/modules/posixGroup.inc:193 -#: ../lib/modules/posixGroup.inc:307 ../lib/modules/posixGroup.inc:333 -#: ../lib/modules/posixGroup.inc:337 ../lib/modules/posixGroup.inc:370 -#: ../lib/lists.inc:200 ../help/help.inc:172 ../help/help.inc:231 -msgid "Group members" -msgstr "Miembros de grupo" - -#: ../templates/config/confmodules.php:284 -#: ../templates/config/confmain.php:220 ../lib/config.inc:346 -msgid "Group modules" -msgstr "Modulos de grupo" - -#: ../lib/modules/posixGroup.inc:287 ../lib/lists.inc:198 -msgid "Group name" -msgstr "Nombre de grupo" - -#: ../lib/modules/posixGroup.inc:322 ../help/help.inc:149 -msgid "" -"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." -msgstr "Nombre del grupo que se ha de crear. Carácteres válidos son: a-z,0-9, -. Lam no permite numeros como primer carácter porque groupadd tampoco lo hace. Tampoco se permiten mayusculas porque pueden causar problemas. Si el nombre del grupo ya existe, se expandirá con un numero (el inmediatamente superior al ultimo que este libre)." - -#: ../lib/modules/posixGroup.inc:313 ../lib/modules/posixGroup.inc:341 -msgid "Group password" -msgstr "Contraseña de grupo" - -#: ../templates/profedit/profilemain.php:175 -msgid "Group profiles" -msgstr "Perfiles de grupo" - -#: ../help/help.inc:180 -msgid "Group suffix" -msgstr "Sufijo de grupo" - -#: ../lib/modules/sambaGroupMapping.inc:184 -msgid "Group type" -msgstr "Tipo de grupo" - -#: ../templates/config/confmain.php:176 ../lib/config.inc:334 -msgid "GroupSuffix" -msgstr "SufijoDeGrupo" - -#: ../templates/config/confsave.php:111 -msgid "GroupSuffix is invalid!" -msgstr "SufijoDeGrupo inválido!" - -#: ../lib/modules/posixGroup.inc:125 ../lib/modules/posixGroup.inc:321 -#: ../lib/modules/posixGroup.inc:368 ../lib/modules/posixGroup.inc:408 -#: ../lib/modules/posixGroup.inc:409 ../lib/modules/posixGroup.inc:410 -#: ../help/help.inc:148 -msgid "Groupname" -msgstr "NombreDeGrupo" - -#: ../lib/modules/posixGroup.inc:410 ../lib/modules/posixGroup.inc:411 -msgid "" -"Groupname contains invalid characters. Valid characters are: a-z, A-Z, 0-9 " -"and .-_ !" -msgstr "NombreDeGrupo contiene caracteres inválidos. Los caracteres válidos son: a-z, A-Z, 0-9 y -_ |" - -#: ../lib/modules/posixGroup.inc:409 -msgid "Groupname in use. Selected next free groupname." -msgstr "Nombre del grupo ya en uso. Selecionado el proximo disponible." - -#: ../templates/ou_edit.php:372 ../templates/main_header.php:75 -#: ../help/help.inc:76 -msgid "Groups" -msgstr "Grupos" - -#: ../lib/modules/sambaAccount.inc:574 ../lib/modules/sambaAccount.inc:774 -#: ../lib/modules/sambaAccount.inc:777 ../lib/modules/sambaSamAccount.inc:545 -#: ../lib/modules/sambaSamAccount.inc:755 -#: ../lib/modules/sambaSamAccount.inc:758 -msgid "Guest" -msgstr "Invitado" - -#: ../lib/modules/quota.inc:400 -msgid "Hard block" -msgstr "Bloqueo fuerte" - -#: ../lib/modules/quota.inc:76 ../lib/modules/quota.inc:77 -#: ../lib/modules/quota.inc:294 ../lib/modules/quota.inc:351 -msgid "Hard block limit" -msgstr "Limite de bloqueo fuerte" - -#: ../lib/modules/quota.inc:400 -msgid "Hard inode" -msgstr "Inodo fuerte" - -#: ../lib/modules/quota.inc:93 -msgid "Hard inode (files) limit" -msgstr "Limite de Inodos (archivos) \"fuertes\"" - -#: ../lib/modules/quota.inc:92 ../lib/modules/quota.inc:298 -#: ../lib/modules/quota.inc:353 -msgid "Hard inode limit" -msgstr "Limite de Inodos \"fuertes\"" - -#: ../templates/pdfedit/pdfpage.php:495 -msgid "Headline" -msgstr "Encabezado" - -#: ../templates/pdfedit/pdfpage.php:468 -msgid "Height" -msgstr "Altura" - -#: ../templates/ou_edit.php:352 ../templates/ou_edit.php:365 -#: ../templates/ou_edit.php:385 ../templates/ou_edit.php:398 -#: ../templates/ou_edit.php:418 ../templates/ou_edit.php:431 -#: ../templates/ou_edit.php:451 ../templates/ou_edit.php:464 -#: ../templates/domain.php:96 ../templates/domain.php:112 -#: ../templates/domain.php:123 ../templates/domain.php:131 -#: ../templates/domain.php:139 ../templates/domain.php:151 -#: ../templates/domain.php:169 ../templates/masscreate.php:149 -#: ../templates/masscreate.php:161 ../templates/masscreate.php:306 -#: ../templates/config/profmanage.php:180 -#: ../templates/config/profmanage.php:227 -#: ../templates/config/profmanage.php:252 -#: ../templates/config/profmanage.php:281 -#: ../templates/config/profmanage.php:324 -#: ../templates/config/profmanage.php:347 -#: ../templates/config/profmanage.php:375 ../templates/config/confmain.php:162 -#: ../templates/config/confmain.php:172 ../templates/config/confmain.php:178 -#: ../templates/config/confmain.php:184 ../templates/config/confmain.php:190 -#: ../templates/config/confmain.php:208 ../templates/config/confmain.php:224 -#: ../templates/config/confmain.php:288 ../templates/config/confmain.php:294 -#: ../templates/config/confmain.php:300 ../templates/config/confmain.php:317 -#: ../templates/config/confmain.php:358 ../templates/config/confmain.php:373 -#: ../templates/config/confmain.php:378 ../templates/config/confmain.php:392 -#: ../templates/config/confmain.php:402 ../templates/config/confmain.php:468 -#: ../templates/config/conflogin.php:126 ../templates/pdfedit/pdfpage.php:811 -#: ../templates/profedit/profilepage.php:90 -#: ../templates/profedit/profilepage.php:129 -#: ../templates/profedit/profilepage.php:166 ../lib/modules.inc:883 -msgid "Help" -msgstr "Ayuda" - -#: ../templates/masscreate.php:83 -msgid "Here you can create multiple accounts by providing a CSV file." -msgstr "Aquí puede Ud. crear múltiples cuentas a partir de un archivo CSV." - -#: ../lib/lists.inc:162 -msgid "Here you can input small filters (e.g. 'value' or 'v*')." -msgstr "Aquí puede crear pequeños filtros (p.ej 'valor' o 'v*')." - -#: ../templates/tools.php:54 -msgid "Here you can manage your account profiles." -msgstr "Aquí puede manipular sus perfiles de cuenta" - -#: ../help/help.inc:107 -msgid "Here you can select which plugins you want to use for account management." -msgstr "Aquí puede selecionar qué plugins quiere usar para la manipulación de cuentas." - -#: ../lib/modules/posixAccount.inc:331 ../help/help.inc:139 -msgid "Hold the CTRL-key to (de)select multiple groups." -msgstr "Mantenga apretada la tecla CTRL para (des)selecionar múltiples grupos." - -#: ../lib/modules/posixAccount.inc:36 ../lib/modules/posixAccount.inc:64 -#: ../lib/modules/posixAccount.inc:65 ../lib/modules/posixAccount.inc:194 -#: ../lib/modules/posixAccount.inc:316 ../lib/modules/posixAccount.inc:711 -#: ../lib/modules/posixAccount.inc:834 ../lib/modules/posixAccount.inc:930 -#: ../lib/modules/posixAccount.inc:967 ../lib/lists.inc:184 -#: ../help/help.inc:140 -msgid "Home directory" -msgstr "Directorio personal" - -#: ../lib/modules/posixAccount.inc:36 -#, php-format -msgid "" -"Home directory changed. To keep home directory you have to run the following " -"command as root: 'mv %s %s'" -msgstr "El directorio personal ha cambiado. Para mantener su directorio home debe ejecutar,como root: 'mv %s %s'" - -#: ../lib/modules/sambaAccount.inc:126 ../lib/modules/sambaAccount.inc:249 -#: ../lib/modules/sambaAccount.inc:347 ../lib/modules/sambaAccount.inc:736 -#: ../lib/modules/sambaAccount.inc:845 ../lib/modules/sambaSamAccount.inc:160 -#: ../lib/modules/sambaSamAccount.inc:263 -#: ../lib/modules/sambaSamAccount.inc:715 -#: ../lib/modules/sambaSamAccount.inc:853 -#: ../lib/modules/sambaSamAccount.inc:917 ../help/help.inc:198 -msgid "Home drive" -msgstr "Disco personal" - -#: ../lib/modules/sambaAccount.inc:46 ../lib/modules/sambaAccount.inc:47 -#: ../lib/modules/sambaAccount.inc:132 ../lib/modules/sambaAccount.inc:255 -#: ../lib/modules/sambaAccount.inc:350 ../lib/modules/sambaAccount.inc:739 -#: ../lib/modules/sambaAccount.inc:844 ../lib/modules/sambaSamAccount.inc:44 -#: ../lib/modules/sambaSamAccount.inc:45 -#: ../lib/modules/sambaSamAccount.inc:163 -#: ../lib/modules/sambaSamAccount.inc:269 -#: ../lib/modules/sambaSamAccount.inc:718 -#: ../lib/modules/sambaSamAccount.inc:859 -#: ../lib/modules/sambaSamAccount.inc:916 ../help/help.inc:208 -msgid "Home path" -msgstr "Ruta personal" - -#: ../lib/modules/sambaAccount.inc:46 ../lib/modules/sambaSamAccount.inc:44 -#: ../lib/modules/sambaSamAccount.inc:46 -msgid "Home path is invalid." -msgstr "La ruta personal no es válida." - -#: ../lib/modules/posixAccount.inc:64 ../lib/modules/posixAccount.inc:66 -msgid "Homedirectory contains invalid characters." -msgstr "El directorio personal contiene caracteres inválidos." - -#: ../lib/lists.inc:216 -msgid "Host description" -msgstr "Descripción el host" - -#: ../lib/modules/account.inc:47 ../lib/modules/posixAccount.inc:341 -#: ../lib/modules/inetOrgPerson.inc:266 ../help/help.inc:161 -msgid "Host description. If left empty host name will be used." -msgstr "Descripcion del host. Si se deja en blanco, " - -#: ../lib/modules/account.inc:56 -msgid "Host list" -msgstr "Lista de hosts" - -#: ../templates/config/confsave.php:136 -msgid "Host list attributes are invalid!" -msgstr "Lista de atributos de host invalido!" - -#: ../templates/config/confmodules.php:387 -#: ../templates/config/confmain.php:221 ../lib/config.inc:347 -msgid "Host modules" -msgstr "Modulos de hosts" - -#: ../lib/modules/posixAccount.inc:234 ../lib/modules/posixAccount.inc:336 -#: ../lib/lists.inc:214 ../help/help.inc:154 -msgid "Host name" -msgstr "Nombre del host" - -#: ../lib/modules/posixAccount.inc:337 ../help/help.inc:155 -msgid "" -"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." -msgstr "Nombre del host que se tiene que crear. Los caracteres válidos son: a-z, 0-9, .-_$. Lam no permite un numero como primer caracter porque useradd tampoco lo hace. Tampoco se permiten mayusculas porque pueden causar problemas. Los nombres de host siempre acaban con $. Si no se especifica, se añadirá automáticamente. Si el nombre del host ya está en uso, se expandirá con un numero al final. El proximo que esté libre." - -#: ../templates/profedit/profilemain.php:218 -msgid "Host profiles" -msgstr "Perfiles de host" - -#: ../lib/lists.inc:213 -msgid "Host username" -msgstr "Usuario de host" - -#: ../templates/config/confmain.php:182 ../lib/config.inc:335 -msgid "HostSuffix" -msgstr "SufijoDeHost" - -#: ../templates/config/confsave.php:116 -msgid "HostSuffix is invalid!" -msgstr "SufijoDeHost inválido!" - -#: ../lib/modules/posixAccount.inc:78 ../lib/modules/posixAccount.inc:79 -#: ../lib/modules/posixAccount.inc:81 -msgid "Hostname" -msgstr "Nombre del host" - -#: ../lib/modules/posixAccount.inc:83 -msgid "" -"Hostname contains invalid characters. Valid characters are: a-z, A-Z, 0-9 " -"and .-_ !" -msgstr "El nombre del host contiene caracteres inválidos. Los caracteres válidos son: a-z, A-Z, 0-9 y -_|" - -#: ../lib/modules/posixAccount.inc:79 -msgid "" -"Hostname contains invalid characters. Valid characters are: a-z, A-Z, 0-9 " -"and .-_ ! Hostname must end with $ !" -msgstr "El nombre del host contiene caracteres inválidos. Los caracteres válidos son: a-z, A-Z, 0-9 y -_|. El nombre del host debe terminar con $ !" - -#: ../lib/modules/posixAccount.inc:81 -msgid "Hostname in use. Selected next free hostname." -msgstr "El hombre del host ya estaba en uso. Se ha expandido con el próximo disponible." - -#: ../templates/main_header.php:77 ../lib/modules/posixAccount.inc:59 -#: ../lib/modules/posixAccount.inc:60 ../lib/modules/posixAccount.inc:62 -#: ../lib/modules/posixAccount.inc:132 ../help/help.inc:79 -msgid "Hosts" -msgstr "Hosts" - -#: ../lib/modules/posixGroup.inc:403 ../lib/modules/posixGroup.inc:534 -#: ../lib/modules/posixAccount.inc:69 ../lib/modules/posixAccount.inc:657 -msgid "ID is already in use" -msgstr "ID ya está en uso" - -#: ../lib/modules/posixGroup.inc:401 ../lib/modules/posixGroup.inc:402 -#: ../lib/modules/posixGroup.inc:403 ../lib/modules/posixGroup.inc:530 -#: ../lib/modules/posixGroup.inc:534 ../lib/modules/posixAccount.inc:67 -#: ../lib/modules/posixAccount.inc:68 ../lib/modules/posixAccount.inc:69 -#: ../lib/modules/posixAccount.inc:653 ../lib/modules/posixAccount.inc:657 -msgid "ID-Number" -msgstr "Numero-ID" - -#: ../templates/masscreate.php:145 ../templates/masscreate.php:157 -#: ../templates/masscreate.php:290 -msgid "Identifier" -msgstr "Identificador" - -#: ../help/help.inc:181 -msgid "" -"If a not yet existing group is defined in csv-file, a new group in the " -"selected group suffix will be created." -msgstr "Si en el archivo csv se especifica un grupo que no existe, se creará un nuevo grupo en el sufijo de grupo selecionado." - -#: ../help/help.inc:216 -msgid "" -"If a not yet existing group is defined in csv-file, a new group with the " -"selected group profile will be created." -msgstr "Si en el archivo csv se especifica un grupo que no existe, se creará un nuevo grupo con el perfil de grupo selecionado." - -#: ../lib/modules/sambaAccount.inc:319 ../lib/modules/sambaSamAccount.inc:132 -msgid "If checked Unix password will also be used as Samba password." -msgstr "Si se seleciona, la contraseña de unix será usada como la constraña de samba." - -#: ../lib/modules/sambaAccount.inc:337 ../lib/modules/sambaSamAccount.inc:150 -#: ../help/help.inc:197 -msgid "If checked account will be deactivated. (Setting D-Flag)" -msgstr "Si se seleciona, la cuenta estará deshabilitada (D-flag)" - -#: ../lib/modules/posixGroup.inc:346 ../lib/modules/sambaAccount.inc:325 -#: ../lib/modules/sambaSamAccount.inc:138 ../lib/modules/posixAccount.inc:322 -#: ../help/help.inc:187 -msgid "If checked no password will be used." -msgstr "Si se seleciona, no habrá contraseña" - -#: ../lib/modules/sambaAccount.inc:331 ../lib/modules/sambaSamAccount.inc:144 -#: ../help/help.inc:191 -msgid "If checked password does not expire. (Setting X-Flag)" -msgstr "Si se selecioina, la constraseña no expirará (X-flag)" - -#: ../help/help.inc:189 -msgid "If checked unix password will also be used as samba password." -msgstr "Si se seleciona, la contraseña de unix será usada como la constraña de samba." - -#: ../lib/modules/posixGroup.inc:326 ../help/help.inc:151 -msgid "" -"If empty GID number will be generated automaticly depending on your " -"configuration settings." -msgstr "Si está vacio, el GID se generará automáticamente, dependiendo de su configuración." - -#: ../lib/modules/posixAccount.inc:300 ../help/help.inc:137 -#: ../help/help.inc:157 -msgid "If empty UID number will be generated automaticly." -msgstr "Si está vacio, el UID se generará automáticamente." - -#: ../help/help.inc:179 -msgid "" -"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." -msgstr "Si se selecciona, los usuarios seleccionados se añadirán con OUs expandidas a su grupo primario. P.ej. si un usuario está en el grupo Administradores, el sufijo será OU=Adminstradores, + usuari." - -#: ../lib/modules/sambaAccount.inc:322 ../lib/modules/sambaSamAccount.inc:135 -msgid "If set to \"true\" Unix password will also be used as Samba password." -msgstr "Si se pone a \"TRUE\", el password de Unix será el mismo que se use para Samba." - -#: ../lib/modules/sambaAccount.inc:340 ../lib/modules/sambaSamAccount.inc:153 -msgid "If set to \"true\" account will be deactivated. (Setting D-Flag)" -msgstr "Si se pone a \"true\", la cuenta inhabilitará (D-Flag)" - -#: ../lib/modules/sambaAccount.inc:328 ../lib/modules/sambaSamAccount.inc:141 -msgid "If set to \"true\" no password will be used." -msgstr "Si se pone a \"true\" , no habrá contraseña" - -#: ../lib/modules/sambaAccount.inc:334 ../lib/modules/sambaSamAccount.inc:147 -msgid "If set to \"true\" password does not expire. (Setting X-Flag)" -msgstr "Si se pone a \"true\", la contraseña no expirará (X-Flag)" - -#: ../help/help.inc:101 -msgid "If you want to change the current preferences password, please enter it here." -msgstr "Si quiere cambiar las preferencias de contraseñas, hágalo aquí." - -#: ../help/help.inc:119 -msgid "" -"If you want to change your master configuration password, please enter it " -"here." -msgstr "Si quiere cambiar su contraseña maestra de configuración, escríbala aquí" - -#: ../lib/modules/sambaAccount.inc:372 -msgid "" -"If you want to create domain administrators or other special users use this " -"option." -msgstr "Use esta opción en caso de querer crear usuarios especiales o adminstradores de dominio." - -#: ../lib/modules/sambaAccount.inc:366 -#: ../lib/modules/sambaGroupMapping.inc:272 ../help/help.inc:226 -msgid "If you want to use a well known RID you can selcet a well known group." -msgstr "Si quiere usar un RID existente, puede seleccionar un grupo existente." - -#: ../lib/modules/quota.inc:33 -msgid "Inode hard quota" -msgstr "Quota \"hard\" para inodos" - -#: ../lib/modules/quota.inc:33 -msgid "" -"Inode hard quota contains invalid characters. Only natural numbers are " -"allowed." -msgstr "La quota \"hard\" para inodos contiene carácteres invalidos. Sólo se admiten numeros naturales." - -#: ../lib/modules/quota.inc:35 -msgid "Inode quota" -msgstr "Quota de inodos." - -#: ../lib/modules/quota.inc:32 -msgid "Inode soft quota" -msgstr "Quota \"soft\" para inodos" - -#: ../lib/modules/quota.inc:32 -msgid "" -"Inode soft quota contains invalid characters. Only natural numbers are " -"allowed." -msgstr "La quota \"soft\" para inodos contiene caracteres inválidos. Sólo se admiten numeros naturales." - -#: ../lib/modules/quota.inc:35 -msgid "Inode soft quota must be smaller than inode hard quota." -msgstr "La quota \"soft\" para inodos debe ser menor que la quota \"hard\"." - -#: ../lib/modules/sambaAccount.inc:47 ../lib/modules/sambaAccount.inc:48 -#: ../lib/modules/sambaSamAccount.inc:45 -msgid "Inserted user- or groupname in HomePath." -msgstr "Usuario o nombre de grupo insertado en HomePath" - -#: ../lib/modules/sambaAccount.inc:53 -msgid "Inserted user- or groupname in logon script." -msgstr "Usuario o nombre de grupo insertado en script de Inicio de Sesión." - -#: ../lib/modules/sambaAccount.inc:50 ../lib/modules/sambaAccount.inc:51 -#: ../lib/modules/sambaSamAccount.inc:48 -msgid "Inserted user- or groupname in profilepath." -msgstr "Usuario o nombre de grupo insertado en path de perfiles" - -#: ../lib/modules/sambaSamAccount.inc:51 -msgid "Inserted user- or groupname in scriptpath." -msgstr "Usuario o nombre de grupo insertado en scriptpath" - -#: ../lib/modules/posixGroup.inc:148 ../lib/modules/posixAccount.inc:853 -msgid "Invalid password" -msgstr "Constraseña inválida." - -#: ../lib/status.inc:61 -msgid "Invalid/Missing Message type" -msgstr "Tipo de mensaje inválido o inexistente" - -#: ../lib/modules/posixGroup.inc:401 ../lib/modules/posixAccount.inc:68 -msgid "" -"It is possible that this ID-number is reused. This can cause several " -"problems because files with old permissions might still exist. To avoid this " -"warning set maxUID to a higher value." -msgstr "Es posible que este numero de ID ya esté en uso. Esto puede causar varios problemas ya que puede haber archivos viejos que todavia exitan, y que tiengan los permisos viejos. Para evitar este mensaje de aviso, ponga el parametro maxUID a un valor mas alto." - -#: ../lib/modules/sambaGroupMapping.inc:57 -msgid "Invalid Account" -msgstr "Cuenta inválida." - -#: ../lib/modules/inetOrgPerson.inc:70 ../lib/modules/inetOrgPerson.inc:95 -#: ../lib/modules/inetOrgPerson.inc:141 ../lib/modules/inetOrgPerson.inc:219 -#: ../lib/modules/inetOrgPerson.inc:405 ../lib/modules/inetOrgPerson.inc:463 -msgid "Job title" -msgstr "Profesión" - -#: ../lib/modules/inetOrgPerson.inc:220 -msgid "Job title of user: President, department manager, ..." -msgstr "Profesion del usuario: Presidente, Contable, operario,..." - -#: ../lib/status.inc:60 -msgid "LAM Internal Error" -msgstr "Error interno de LAM" - -#: ../templates/massBuildAccounts.php:188 -msgid "LAM has checked your input and is now ready to create the accounts." -msgstr "LAM ha procesado sus requerimientos. Listo para empezar a crear cuentas." - -#: ../lib/modules/posixGroup.inc:355 ../lib/modules/posixAccount.inc:296 -msgid "" -"LAM supports CRYPT, SHA, SSHA, MD5 and SMD5 to generate the hash value of " -"passwords. 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." -msgstr "LAM soporta CRYPT, SHA, SSHA, MD5 y SMD5 para generar las claves de hash para las contraseñas. Los más comunes son SSHA y CRYPT, pero CRYPT no soporta constraseñas de más de 8 caracteres. No se recomienda el uso de constraseñas sin cifrar." - -#: ../templates/massDoUpload.php:82 -#, php-format -msgid "LAM was unable to create account %s! An LDAP error occured." -msgstr "No se pudo crear la cuenta %s! Ocurrió un error de LDAP." - -#: ../lib/modules/sambaGroupMapping.inc:341 -msgid "LAM was unable to find a Samba 3 domain with this name!" -msgstr "LAM no pudo encontrar un dominio Samba con ese nombre!" - -#: ../lib/modules/sambaSamAccount.inc:69 -msgid "LAM was unable to find a domain with this name!" -msgstr "No se puede encontrar un dominio con ese nombre!" - -#: ../lib/modules/posixAccount.inc:84 -msgid "LAM was unable to find a group with this name!" -msgstr "LAM no puede econtrar un grupo con ese nombre!" - -#: ../lib/modules/posixAccount.inc:1243 -#, php-format -msgid "LAM was unable to modify group memberships for group: %s" -msgstr "LAM no pudo modificar las pertinencias all grupo para el grupo %s." - -#: ../templates/config/confmodules.php:67 ../templates/config/confsave.php:74 -#: ../templates/config/confmain.php:145 -msgid "LDAP Account Manager Configuration" -msgstr "Configuración de LDAP Account Manager" - -#: ../templates/config/confmain.php:281 -msgid "LDAP List settings" -msgstr "Lista de opciones de LDAP" - -#: ../templates/lists/listhosts.php:193 ../templates/lists/listgroups.php:193 -#: ../templates/lists/listdomains.php:125 ../templates/lists/listusers.php:232 -msgid "LDAP Search failed! Please check your preferences." -msgstr "La búsqueda en LDAP falló! Por favor, verifique sus preferencias." - -#: ../templates/login.php:336 -msgid "LDAP error, server says:" -msgstr "Error de LDAP: El servidor dijo:" - -#: ../lib/modules.inc:772 -msgid "LDAP operation successful." -msgstr "La operación de LDAP terminó correctamente." - -#: ../templates/login.php:247 -msgid "LDAP server" -msgstr "Servidor LDAP" - -#: ../templates/lists/listhosts.php:179 ../templates/lists/listgroups.php:179 -#: ../templates/lists/listdomains.php:114 ../templates/lists/listusers.php:217 -msgid "LDAP sizelimit exceeded, not all entries are shown." -msgstr "Tamaño máximo de LDAP excedido. No se mostrarán todas las entradas." - -#: ../templates/profedit/profilepage.php:85 -#: ../templates/profedit/profilepage.php:86 -msgid "LDAP suffix" -msgstr "Sufijo LDAP" - -#: ../templates/massDoUpload.php:117 -msgid "LDAP upload has finished" -msgstr "Envio al LDAP finalizado." - -#: ../templates/massDoUpload.php:66 -msgid "LDAP upload in progress. Please wait." -msgstr "Se está enviando al servidor LDAP. Por favor, espere..." - -#: ../templates/config/confsave.php:147 -msgid "Language is not defined!" -msgstr "No se ha definido ningún idioma!" - -#: ../templates/config/confmain.php:323 -msgid "Language settings" -msgstr "Configuración de idioma" - -#: ../lib/modules/inetOrgPerson.inc:54 ../lib/modules/inetOrgPerson.inc:128 -#: ../lib/modules/inetOrgPerson.inc:227 ../lib/modules/inetOrgPerson.inc:413 -#: ../lib/modules/inetOrgPerson.inc:465 ../lib/lists.inc:183 -#: ../help/help.inc:182 -msgid "Last name" -msgstr "Apellido" - -#: ../lib/modules/inetOrgPerson.inc:54 ../lib/modules/inetOrgPerson.inc:55 -msgid "Last name contains invalid characters!" -msgstr "El apellido contiene caracteres inválidos!" - -#: ../lib/modules/inetOrgPerson.inc:228 ../help/help.inc:183 -msgid "Last name of user. Only letters, - and spaces are allowed." -msgstr "Apellido del usuario. Sólo se admiten letras, - y espacios." - -#: ../lib/modules/shadowAccount.inc:331 -msgid "Last password change" -msgstr "Fecha de utimo cambio de contraseña." - -#: ../templates/pdfedit/pdfpage.php:535 -msgid "Left" -msgstr "Izquierda" - -#: ../help/help.inc:66 -msgid "List attributes" -msgstr "Mostrar atributos" - -#: ../help/help.inc:207 -msgid "" -"List of Samba workstations the user is allowed to login. Empty means every " -"workstation." -msgstr "Lista de estaciones de trabajo des de los quales el usuario está autorizado a iniciar la sesión. En blanco significan todas." - -#: ../templates/config/confsave.php:101 -msgid "List of admin users is empty or invalid!" -msgstr "LLa lista de usuarios Adminstradores es inválida o está en blanco!" - -#: ../templates/config/confmain.php:390 ../lib/config.inc:344 -msgid "List of valid users" -msgstr "Lista de usuarios validos." - -#: ../lib/modules.inc:748 ../help/help.inc:176 -msgid "Load profile" -msgstr "Cargar perfil" - -#: ../lib/modules/sambaGroupMapping.inc:54 -msgid "Local Group" -msgstr "Grupo Local" - -#: ../lib/modules/posixGroup.inc:151 ../lib/modules/posixAccount.inc:215 -#: ../lib/modules/posixAccount.inc:856 ../lib/modules/posixAccount.inc:942 -msgid "Lock password" -msgstr "Bloquear contraseña" - -#: ../templates/login.php:229 ../templates/login.php:230 -#: ../templates/config/conflogin.php:68 ../help/help.inc:46 -msgid "Login" -msgstr "Iniciar sesión" - -#: ../lib/modules/posixAccount.inc:201 ../lib/modules/posixAccount.inc:326 -#: ../lib/modules/posixAccount.inc:860 ../lib/modules/posixAccount.inc:934 -#: ../lib/modules/posixAccount.inc:969 ../lib/lists.inc:185 -#: ../help/help.inc:144 -msgid "Login shell" -msgstr "Shell de inicio de sesión." - -#: ../templates/pdfedit/pdfpage.php:434 -msgid "Logo" -msgstr "Logo" - -#: ../lib/modules/sambaSamAccount.inc:188 -#: ../lib/modules/sambaSamAccount.inc:307 -msgid "Logon hours" -msgstr "Horas de inicio de sesión" - -#: ../lib/modules/sambaAccount.inc:52 ../lib/modules/sambaAccount.inc:53 -#: ../lib/modules/sambaAccount.inc:144 ../lib/modules/sambaAccount.inc:267 -#: ../lib/modules/sambaAccount.inc:358 ../lib/modules/sambaAccount.inc:745 -#: ../lib/modules/sambaAccount.inc:846 ../lib/modules/sambaSamAccount.inc:171 -#: ../lib/modules/sambaSamAccount.inc:281 -#: ../lib/modules/sambaSamAccount.inc:724 -#: ../lib/modules/sambaSamAccount.inc:871 -#: ../lib/modules/sambaSamAccount.inc:918 -msgid "Logon script" -msgstr "Script de inicio de sesión" - -#: ../lib/modules/sambaAccount.inc:52 ../lib/modules/sambaAccount.inc:54 -#: ../lib/modules/sambaSamAccount.inc:52 -msgid "Logon script is invalid!" -msgstr "El script de inicio de sesión es invalido!" - -#: ../templates/main_header.php:63 ../templates/logout.php:60 -msgid "Logout" -msgstr "Cerrar sesión" - -#: ../lib/modules/ieee802device.inc:50 ../lib/modules/ieee802device.inc:56 -#: ../lib/modules/ieee802device.inc:67 ../lib/modules/ieee802device.inc:142 -msgid "MAC address" -msgstr "Direccion MAC" - -#: ../lib/modules/ieee802device.inc:60 ../lib/modules/ieee802device.inc:255 -msgid "MAC address list" -msgstr "Lista de direcciones MAC" - -#: ../lib/modules.inc:693 ../lib/modules.inc:710 -msgid "Main" -msgstr "Principal" - -#: ../templates/config/conflogin.php:134 -msgid "Manage profiles" -msgstr "Manejar perfiles" - -#: ../templates/tools.php:77 -msgid "Manages OU objects in your LDAP tree." -msgstr "Maneja Unidades Organizativas en su árbol LDAP." - -#: ../templates/tools.php:62 -msgid "Manages Samba 3 domain accounts." -msgstr "Maneja cuentas de dominio de Samba 3" - -#: ../templates/pdfedit/pdfpage.php:508 -msgid "Margin" -msgstr "Margen" - -#: ../templates/config/profmanage.php:368 -msgid "Master Password:" -msgstr "Constraeña Maestra:" - -#: ../help/help.inc:120 -msgid "Master password" -msgstr "Contraseña maestra" - -#: ../templates/config/profmanage.php:68 -msgid "Master password is wrong!" -msgstr "Contraseña maestra incorrecta!" - -#: ../templates/config/profmanage.php:128 -msgid "Master passwords are different or empty!" -msgstr "Las contraseñas maestras son diferentes, o en blanco!" - -#: ../templates/config/confsave.php:141 -msgid "Max list entries is invalid!" -msgstr "La lista máxima de entradas no es válida!" - -#: ../templates/pdfedit/pdfpage.php:479 -msgid "Maximize with correct ratio" -msgstr "Maximizar con ratio correcto" - -#: ../lib/modules/posixGroup.inc:237 ../lib/modules/posixGroup.inc:405 -#: ../lib/modules/posixGroup.inc:406 -msgid "Maximum GID number" -msgstr "GID máximo" - -#: ../lib/modules/posixGroup.inc:254 -msgid "Maximum GID number for Unix groups" -msgstr "GID máximo para grupos Unix" - -#: ../lib/modules/posixGroup.inc:405 -msgid "Maximum GID number is invalid or empty!" -msgstr "GID máximo está vacio es inválido!" - -#: ../lib/modules/posixGroup.inc:406 -msgid "Maximum GID number must be greater than minimum GID number!" -msgstr "El GID máximo debe ser mayor que el GID mínimo!" - -#: ../lib/modules/posixAccount.inc:58 ../lib/modules/posixAccount.inc:60 -#: ../lib/modules/posixAccount.inc:61 ../lib/modules/posixAccount.inc:62 -#: ../lib/modules/posixAccount.inc:126 ../lib/modules/posixAccount.inc:135 -msgid "Maximum UID number" -msgstr "UID máximo" - -#: ../lib/modules/posixAccount.inc:156 -msgid "Maximum UID number for Unix accounts (hosts)" -msgstr "UID máximo para cuentas Unix (hosts)" - -#: ../lib/modules/posixAccount.inc:154 -msgid "Maximum UID number for Unix accounts (users)" -msgstr "UID máximo para cuentas Unix (usuarios)" - -#: ../lib/modules/posixAccount.inc:58 ../lib/modules/posixAccount.inc:60 -msgid "Maximum UID number is invalid!" -msgstr "El UID máximo no es válido!" - -#: ../lib/modules/posixAccount.inc:61 ../lib/modules/posixAccount.inc:62 -msgid "Maximum UID number must be greater than minimum UID number!" -msgstr "El UID máxio debe ser mayor que el UID mínimo!" - -#: ../templates/config/confmain.php:307 ../lib/config.inc:340 -#: ../help/help.inc:86 -msgid "Maximum list entries" -msgstr "Lista máxima de entradas" - -#: ../lib/modules/shadowAccount.inc:88 ../lib/modules/shadowAccount.inc:151 -#: ../lib/modules/shadowAccount.inc:181 ../lib/modules/shadowAccount.inc:303 -#: ../help/help.inc:166 -msgid "Maximum password age" -msgstr "Edad máxima de contraseñas" - -#: ../lib/modules/inetOrgPerson.inc:130 -msgid "Miller" -msgstr "Miller" - -#: ../lib/modules/posixGroup.inc:234 ../lib/modules/posixGroup.inc:404 -msgid "Minimum GID number" -msgstr "GID mínimo" - -#: ../lib/modules/posixGroup.inc:253 -msgid "Minimum GID number for Unix groups" -msgstr "GID mínimo para grupos Unix" - -#: ../lib/modules/posixGroup.inc:404 -msgid "Minimum GID number is invalid or empty!" -msgstr "El GID mínimo es inválido o está vacio!" - -#: ../lib/modules/posixAccount.inc:57 ../lib/modules/posixAccount.inc:59 -#: ../lib/modules/posixAccount.inc:123 ../lib/modules/posixAccount.inc:132 -msgid "Minimum UID number" -msgstr "UID mínimo" - -#: ../lib/modules/posixAccount.inc:155 -msgid "Minimum UID number for Unix accounts (hosts)" -msgstr "El UID mínimo para cuentas Unix(hosts)" - -#: ../lib/modules/posixAccount.inc:153 -msgid "Minimum UID number for Unix accounts (users)" -msgstr "El UID mínimo para cuentas Unix(usuarios)" - -#: ../lib/modules/posixAccount.inc:57 ../lib/modules/posixAccount.inc:59 -msgid "Minimum UID number is invalid!" -msgstr "El UID mínimo es inválido!" - -#: ../lib/modules/shadowAccount.inc:83 ../lib/modules/shadowAccount.inc:147 -#: ../lib/modules/shadowAccount.inc:175 ../lib/modules/shadowAccount.inc:300 -#: ../help/help.inc:168 -msgid "Minimum password age" -msgstr "Edad mínima de contraseñas permitida" - -#: ../lib/modules/inetOrgPerson.inc:58 ../lib/modules/inetOrgPerson.inc:177 -#: ../lib/modules/inetOrgPerson.inc:251 ../lib/modules/inetOrgPerson.inc:252 -#: ../lib/modules/inetOrgPerson.inc:437 ../lib/modules/inetOrgPerson.inc:471 -msgid "Mobile number" -msgstr "Numero de ḿmóbil" - -#: ../lib/modules.inc:672 ../lib/modules.inc:759 -msgid "Modify Account" -msgstr "Modificar cuenta" - -#: ../templates/config/confmodules.php:75 -msgid "Module selection" -msgstr "Selección de modulo" - -#: ../lib/config.inc:348 -msgid "Module settings" -msgstr "Parámetros de modulo" - -#: ../lib/modules/quota.inc:64 ../lib/modules/quota.inc:291 -#: ../lib/modules/quota.inc:349 ../lib/modules/quota.inc:400 -msgid "Mountpoint" -msgstr "Punto de montaje" - -#: ../lib/modules/quota.inc:65 -msgid "Mountpoint of device with enabled quotas." -msgstr "Punto de montaje para dispositivo con quotas habilitadas." - -#: ../lib/modules/inetOrgPerson.inc:167 -msgid "Mycity" -msgstr "Mi ciudad" - -#: ../lib/modules/inetOrgPerson.inc:155 -msgid "Mystreetname 42" -msgstr "Mi calle 42" - -#: ../templates/pdfedit/pdfdelete.php:56 ../templates/pdfedit/pdfdelete.php:59 -#: ../templates/pdfedit/pdfdelete.php:78 -msgid "Name" -msgstr "Nombre" - -#: ../help/help.inc:128 -msgid "" -"Name under which the profile will be saved. If a profile with the same name " -"exists, it will be overwritten." -msgstr "Nombre del perfil que se guardará. Si ya existe el perfil, se sobreescribirá." - -#: ../templates/lists/listdomains.php:213 -msgid "New Domain" -msgstr "Nuevo dominio" - -#: ../templates/lists/listgroups.php:306 -msgid "New Group" -msgstr "Nuevo grupo" - -#: ../templates/lists/listhosts.php:291 -msgid "New Host" -msgstr "Nuevo host" - -#: ../lib/modules/ieee802device.inc:149 -msgid "New MAC address" -msgstr "Nueva dirección MAC" - -#: ../templates/ou_edit.php:52 ../templates/ou_edit.php:117 -#: ../templates/ou_edit.php:182 ../templates/ou_edit.php:247 -msgid "New OU created successfully." -msgstr "Nueva U.O creada con éxito." - -#: ../templates/config/confmain.php:399 -msgid "New Password" -msgstr "Nueva contraseña" - -#: ../templates/config/profmanage.php:135 -msgid "New default profile set successfully." -msgstr "Nuevo perfil por defecto cambiado con éxito." - -#: ../templates/config/profmanage.php:343 -msgid "New master password" -msgstr "Nueva contraseña maestra" - -#: ../templates/config/profmanage.php:126 -msgid "New master password set successfully." -msgstr "Se ha cambiado la nueva contraseña maestra con éxito." - -#: ../templates/ou_edit.php:344 ../templates/ou_edit.php:377 -#: ../templates/ou_edit.php:410 ../templates/ou_edit.php:443 -#: ../help/help.inc:236 -msgid "New organizational unit" -msgstr "Nueva unidad organizativa" - -#: ../templates/config/profmanage.php:116 -msgid "New password set successfully." -msgstr "Nueva contraseña cambiada correctamente." - -#: ../lib/modules.inc:617 -msgid "New profile created." -msgstr "Se ha creado el nuevo perfil" - -#: ../templates/lists/listusers.php:354 -msgid "New user" -msgstr "Nuevo usuario" - -#: ../templates/domain.php:135 ../help/help.inc:250 -msgid "Next Group RID" -msgstr "RID del nuevo grupo" - -#: ../templates/domain.php:119 ../help/help.inc:246 -msgid "Next RID" -msgstr "Siguiente RID" - -#: ../templates/domain.php:249 -msgid "Next RID is not a number!" -msgstr "El siguiente RID no es un número!" - -#: ../help/help.inc:247 -msgid "Next RID to use when creating accounts." -msgstr "Siguiente RID a usar a la hora de crear cuentas.." - -#: ../help/help.inc:251 -msgid "Next RID to use when creating groups." -msgstr "Siguiente RID a usar al añadir grupos" - -#: ../help/help.inc:249 -msgid "Next RID to use when creating user accounts." -msgstr "Siguiente RID a usar al añadir usuarios" - -#: ../templates/domain.php:127 ../help/help.inc:248 -msgid "Next User RID" -msgstr "Siguiente RID de usuario" - -#: ../templates/domain.php:251 -msgid "Next group RID is not a number!" -msgstr "El siguiente RID de grupo no es un numero!" - -#: ../templates/domain.php:250 -msgid "Next user RID is not a number!" -msgstr "El siguiente RID de usuario no es un numero!" - -#: ../templates/lists/listgroups.php:184 ../templates/lists/listgroups.php:193 -#: ../templates/lists/listgroups.php:197 -msgid "No Groups found!" -msgstr "No se encontraron grupos!" - -#: ../templates/lists/listdomains.php:119 -#: ../templates/lists/listdomains.php:125 -#: ../templates/lists/listdomains.php:129 -msgid "No Samba Domains found!" -msgstr "No se encontraron dominios de samba!" - -#: ../templates/lists/listhosts.php:184 ../templates/lists/listhosts.php:193 -#: ../templates/lists/listhosts.php:197 -msgid "No Samba Hosts found!" -msgstr "No se encontraron hosts de samba!" - -#: ../templates/lists/listusers.php:222 ../templates/lists/listusers.php:233 -msgid "No Users found!" -msgstr "No se econtraron usuarios!" - -#: ../templates/config/confmodules.php:274 -#: ../templates/config/confmodules.php:377 -#: ../templates/config/confmodules.php:480 -msgid "No base module selected!" -msgstr "No se seleccionó modulo de base!" - -#: ../templates/initsuff.php:165 -msgid "No changes were made." -msgstr "No se hicieron cambios." - -#: ../templates/config/conflogin.php:93 -msgid "No configuration profiles found. Please create one." -msgstr "No se encontraron perfiles de configuración. Por favor, cree uno." - -#: ../lib/modules/posixGroup.inc:402 ../lib/modules/posixAccount.inc:67 -msgid "No free ID-Number!" -msgstr "No quedan ID's libres!" - -#: ../lib/modules/posixAccount.inc:359 -msgid "No groups found in ldap." -msgstr "No se encontraron grupos en ldap." - -#: ../templates/pdfedit/pdfpage.php:409 -msgid "No logo" -msgstr "No hay logo" - -#: ../templates/config/confmain.php:96 -msgid "No password was entered!" -msgstr "No se especificó ninguna contraseña!" - -#: ../lib/modules.inc:614 -msgid "No profilename given." -msgstr "No se especificó ningun nombre de perfil." - -#: ../templates/pdfedit/pdfpage.php:73 -msgid "No section text specified" -msgstr "No se especificó ningun texto de sección." - -#: ../templates/pdfedit/pdfpage.php:77 -msgid "No static text specified" -msgstr "No se especificó ningun texto estático" - -#: ../help/help.inc:57 -msgid "Note" -msgstr "Nota" - -#: ../lib/modules/shadowAccount.inc:144 ../help/help.inc:165 -msgid "Number of days a user can login even his password has expired. -1=always." -msgstr "Nume de dias después de la caducidad de la constraseña en que el usuario todavia puede iniciar sesión. -1= siempre" - -#: ../lib/modules/shadowAccount.inc:148 ../help/help.inc:169 -msgid "" -"Number of days a user has to wait until he\\'s allowed to change his " -"password again. If set value must be 0<." -msgstr "Numero de dias que el usuario deberá esperar para poder cambiar su constraseña otra vez. Si se especifica, debe ser menor de 0." - -#: ../lib/modules/shadowAccount.inc:152 ../help/help.inc:167 -msgid "" -"Number of days after a user has to change his password again. If set value " -"must be 0<." -msgstr "Numero de dias después de que el usuario deberá cambiar su contraseña. Si se especifica, deberá ser menor que 0." - -#: ../templates/ou_edit.php:58 ../templates/ou_edit.php:123 -#: ../templates/ou_edit.php:188 ../templates/ou_edit.php:253 -msgid "OU already exists!" -msgstr "La OU ya existe!" - -#: ../templates/ou_edit.php:69 ../templates/ou_edit.php:134 -#: ../templates/ou_edit.php:199 ../templates/ou_edit.php:264 -msgid "OU deleted successfully." -msgstr "OU borrada." - -#: ../templates/tools.php:76 -msgid "OU editor" -msgstr "Editor de OU" - -#: ../templates/ou_edit.php:62 ../templates/ou_edit.php:127 -#: ../templates/ou_edit.php:192 ../templates/ou_edit.php:257 -msgid "OU is invalid!" -msgstr "OU inválida!" - -#: ../templates/ou_edit.php:99 ../templates/ou_edit.php:164 -#: ../templates/ou_edit.php:229 ../templates/ou_edit.php:294 -msgid "OU is not empty or invalid!" -msgstr "La OU no está vacia o es inválida!" - -#: ../help/help.inc:236 ../help/help.inc:238 -msgid "OU-Editor" -msgstr "Editor de OU" - -#: ../lib/cache.inc:79 ../lib/modules.inc:913 ../lib/modules.inc:951 -#: ../lib/modules.inc:1050 -#, php-format -msgid "ObjectClass %s required but not defined in LDAP." -msgstr "ObjetClass %s requerida, pero no definida en LDAP." - -#: ../templates/config/conflogin.php:123 ../templates/config/conflogin.php:124 -msgid "Ok" -msgstr "Ok" - -#: ../templates/tools.php:83 -msgid "PDF editor" -msgstr "Editor de PDF" - -#: ../templates/lists/listhosts.php:296 ../templates/lists/listgroups.php:311 -#: ../templates/lists/listusers.php:359 ../templates/pdfedit/pdfpage.php:573 -msgid "PDF structure" -msgstr "Estructura de PDF" - -#: ../templates/pdfedit/pdfmain.php:101 -msgid "PDF structures" -msgstr "Estructuras de PDF" - -#: ../templates/pdfedit/pdfpage.php:61 -msgid "PDF-structure name not valid" -msgstr "Nombre de la estructura de PDF inválido." - -#: ../templates/pdfedit/pdfpage.php:429 -msgid "Page settings" -msgstr "Configuración de página" - -#: ../templates/login.php:178 ../lib/modules/posixGroup.inc:137 -#: ../lib/modules/posixGroup.inc:397 ../lib/modules/posixGroup.inc:398 -#: ../lib/modules/posixGroup.inc:399 ../lib/modules/sambaAccount.inc:59 -#: ../lib/modules/sambaAccount.inc:60 ../lib/modules/sambaAccount.inc:197 -#: ../lib/modules/sambaSamAccount.inc:55 ../lib/modules/sambaSamAccount.inc:56 -#: ../lib/modules/sambaSamAccount.inc:211 ../lib/modules/posixAccount.inc:71 -#: ../lib/modules/posixAccount.inc:72 ../lib/modules/posixAccount.inc:73 -#: ../lib/modules/posixAccount.inc:209 ../lib/modules/posixAccount.inc:842 -#: ../lib/modules/posixAccount.inc:968 -msgid "Password" -msgstr "Contraseña" - -#: ../templates/config/confsave.php:240 -msgid "Password changed!" -msgstr "Constraseña cambiada!" - -#: ../lib/modules/posixGroup.inc:398 ../lib/modules/sambaAccount.inc:60 -#: ../lib/modules/sambaAccount.inc:61 ../lib/modules/sambaSamAccount.inc:56 -#: ../lib/modules/sambaSamAccount.inc:57 ../lib/modules/posixAccount.inc:72 -#: ../lib/modules/posixAccount.inc:74 -msgid "" -"Password contains invalid characters. Valid characters are: a-z, A-Z, 0-9 " -"and #*,.;:_-+!$%&/|?{[()]}= !" -msgstr "La contraseña contiene caracteres inválidos. Los caracteres válidos son: a-z, A-Z, 0-9, y #*,.;:_-+$%&/|?{[()]}= !" - -#: ../lib/modules/sambaAccount.inc:112 ../lib/modules/sambaAccount.inc:219 -#: ../lib/modules/sambaAccount.inc:330 ../lib/modules/sambaAccount.inc:333 -#: ../lib/modules/sambaAccount.inc:708 ../lib/modules/sambaSamAccount.inc:143 -#: ../lib/modules/sambaSamAccount.inc:146 -#: ../lib/modules/sambaSamAccount.inc:233 -#: ../lib/modules/sambaSamAccount.inc:687 -#: ../lib/modules/sambaSamAccount.inc:839 ../help/help.inc:190 -msgid "Password does not expire" -msgstr "La contraseña no caduca." - -#: ../lib/modules/shadowAccount.inc:43 ../lib/modules/shadowAccount.inc:78 -#: ../lib/modules/shadowAccount.inc:143 ../lib/modules/shadowAccount.inc:169 -#: ../lib/modules/shadowAccount.inc:297 ../lib/modules/shadowAccount.inc:334 -msgid "Password expiration" -msgstr "Caducidad de contraseña" - -#: ../lib/modules/shadowAccount.inc:43 ../lib/modules/shadowAccount.inc:44 -msgid "Password expiration must be are natural number or -1." -msgstr "La caducidad de la contraseña debe ser un numero natural o -1." - -#: ../help/help.inc:164 -msgid "Password expire" -msgstr "caducidad de contraseña" - -#: ../lib/modules/posixGroup.inc:241 ../lib/modules/posixGroup.inc:354 -#: ../lib/modules/posixAccount.inc:141 ../lib/modules/posixAccount.inc:295 -msgid "Password hash type" -msgstr "Tipo de hash para la contraseña" - -#: ../lib/modules/posixAccount.inc:157 -msgid "Password hash type for Unix accounts" -msgstr "Tipo de hash para la contraseña para cuentas Unix" - -#: ../lib/modules/posixGroup.inc:255 -msgid "Password hash type for Unix groups" -msgstr "Tipo de hash para la contraseña para grupos Unix" - -#: ../lib/modules/shadowAccount.inc:41 ../lib/modules/shadowAccount.inc:47 -msgid "Password maxage" -msgstr "Edad máxima de la contraseña" - -#: ../lib/modules/shadowAccount.inc:41 ../lib/modules/shadowAccount.inc:42 -msgid "Password maximum age must be are natural number." -msgstr "La edad máxima de la contraseña debe ser un numero natural." - -#: ../lib/modules/shadowAccount.inc:47 ../lib/modules/shadowAccount.inc:48 -msgid "Password maximum age must be bigger as password minimum age." -msgstr "La edad máxima de la contraseña debe ser mayor que la edad minima de la contraseña." - -#: ../lib/modules/shadowAccount.inc:39 -msgid "Password minage" -msgstr "Edad minima de contraseña" - -#: ../lib/modules/shadowAccount.inc:39 ../lib/modules/shadowAccount.inc:40 -msgid "Password minimum age must be are natural number." -msgstr "La edad minima de la contraseña debe ser un numero natural." - -#: ../help/help.inc:162 -msgid "Password warn" -msgstr "Aviso de contraseña" - -#: ../lib/modules/shadowAccount.inc:45 ../lib/modules/shadowAccount.inc:73 -#: ../lib/modules/shadowAccount.inc:139 ../lib/modules/shadowAccount.inc:163 -#: ../lib/modules/shadowAccount.inc:294 ../lib/modules/shadowAccount.inc:332 -msgid "Password warning" -msgstr "Aviso de contraseña" - -#: ../lib/modules/shadowAccount.inc:45 ../lib/modules/shadowAccount.inc:46 -msgid "Password warning must be are natural number." -msgstr "El aviso de contraseña debe ser un numero natural." - -#: ../templates/config/confsave.php:234 -msgid "Passwords are different!" -msgstr "Las contraseñas son diferentes." - -#: ../lib/modules/sambaAccount.inc:355 ../lib/modules/sambaSamAccount.inc:168 -#: ../help/help.inc:204 -#, php-format -msgid "" -"Path of the user profile. Can be a local absolute path or a UNC-path (\\" -"\\server\\share). $%s and $%s are replaced with user- and groupname." -msgstr "Path del perfil del usuario. Puede ser un path absoluto oun path UNC ( \\servidor\\recurso). %s y %s son reemplazados por nombre de usuario y nombre de grupo respectivamente." - -#: ../templates/config/confmain.php:375 ../lib/config.inc:342 -msgid "Path to external script" -msgstr "Path a script externo" - -#: ../lib/modules/inetOrgPerson.inc:87 -msgid "Personal" -msgstr "Personal" - -#: ../templates/delete.php:80 -msgid "Please confirm:" -msgstr "Por favor, confirme:" - -#: ../lib/modules/sambaSamAccount.inc:60 -msgid "Please enter a RID number or the name of a special account!" -msgstr "Por favor, entre un numero RID o el nombre de una cuenta especial!" - -#: ../lib/modules/sambaAccount.inc:55 ../lib/modules/sambaAccount.inc:56 -#: ../lib/modules/sambaSamAccount.inc:53 ../lib/modules/sambaSamAccount.inc:54 -msgid "Please enter a comma separated list of host names!" -msgstr "Por favor, entre una lista de hosts separados por comas!" - -#: ../lib/modules/inetOrgPerson.inc:74 -msgid "Please enter a valid common name!" -msgstr "Por favor, entre un nombre común que sea valido!" - -#: ../lib/modules/sambaAccount.inc:69 ../lib/modules/sambaAccount.inc:70 -#: ../lib/modules/sambaSamAccount.inc:66 ../lib/modules/sambaSamAccount.inc:67 -msgid "Please enter a valid date in format DD-MM-YYYY." -msgstr "Por favor, entre una fecha valida, en el formato DD-MM-YYYY." - -#: ../lib/modules/sambaAccount.inc:64 ../lib/modules/sambaSamAccount.inc:61 -msgid "Please enter a valid display name!" -msgstr "Por favor, entre un nombre a visualizar que sea válido!" - -#: ../lib/modules/sambaAccount.inc:71 ../lib/modules/sambaSamAccount.inc:68 -msgid "Please enter a valid drive letter." -msgstr "Por favor, entre una letra de unidad válida." - -#: ../lib/modules/inetOrgPerson.inc:62 ../lib/modules/inetOrgPerson.inc:63 -msgid "Please enter a valid eMail address!" -msgstr "Por favor, entre una dirección válida de correo electrónico!" - -#: ../lib/modules/inetOrgPerson.inc:72 ../lib/modules/inetOrgPerson.inc:73 -msgid "Please enter a valid employee type!" -msgstr "Por favor, entre un tipo válido de empleado que sea válido!" - -#: ../lib/modules/inetOrgPerson.inc:60 ../lib/modules/inetOrgPerson.inc:61 -msgid "Please enter a valid fax number!" -msgstr "Por favor, entre un numero de fax válido!" - -#: ../lib/modules/sambaAccount.inc:72 -msgid "Please enter a valid group RID." -msgstr "Por favor, entre un RID de grupo válido!" - -#: ../lib/modules/inetOrgPerson.inc:70 ../lib/modules/inetOrgPerson.inc:71 -msgid "Please enter a valid job title!" -msgstr "Por favor, entre un nombre válido para la profesión!" - -#: ../lib/modules/inetOrgPerson.inc:58 ../lib/modules/inetOrgPerson.inc:59 -msgid "Please enter a valid mobile number!" -msgstr "Por favor, entre un numero de móbil que sea válido!" - -#: ../lib/modules/inetOrgPerson.inc:66 ../lib/modules/inetOrgPerson.inc:67 -msgid "Please enter a valid postal address!" -msgstr "Por favor, entre una dirección válida de correo postal!" - -#: ../lib/modules/inetOrgPerson.inc:68 ../lib/modules/inetOrgPerson.inc:69 -msgid "Please enter a valid postal code!" -msgstr "Por favor, entre un código postál valido!" - -#: ../lib/modules/sambaAccount.inc:73 -msgid "Please enter a valid special user name." -msgstr "Por favor, entre un nombre de usuario especial que sea válido." - -#: ../lib/modules/inetOrgPerson.inc:64 ../lib/modules/inetOrgPerson.inc:65 -msgid "Please enter a valid street name!" -msgstr "Por favor, entre un nombre de calle válido!" - -#: ../lib/modules/inetOrgPerson.inc:56 ../lib/modules/inetOrgPerson.inc:57 -msgid "Please enter a valid telephone number!" -msgstr "Por favor, entre un número de teléfono válido!" - -#: ../lib/modules/posixGroup.inc:530 ../lib/modules/posixAccount.inc:653 -#, php-format -msgid "Please enter a value between %s and %s!" -msgstr "Por favor, entre un número entre %s y %s!" - -#: ../templates/config/conflogin.php:87 -msgid "Please enter password to change preferences:" -msgstr "Por favor, entre la contraseña para cambiar las preferencias:" - -#: ../help/help.inc:47 -msgid "" -"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\"." -msgstr "Por favor, entre la contraseña de configuración. NO su contraseña en LDAP. La contraseña de configuración está en el .conf. Si es la primera vez que entra, escriba \"lam\"." - -#: ../help/help.inc:121 -msgid "" -"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\"." -msgstr "Por favor, entre la contraseña maestra de configuración. NO su contraseña en LDAP. La contraseña maestra de configuración está grabada en su .conf. Si es la primera vez que entra, escriba \"lam\"." - -#: ../help/help.inc:109 -msgid "" -"Please enter the name of the new profile and the password to change its " -"settings. Profile names may contain letters, numbers and -/_." -msgstr "Por favor, entre el nombre del nuevo perfil y la contraseña para cambiar sus preferencias. Los nombres de perfil pueden contener letras, números y -/_." - -#: ../help/help.inc:111 -msgid "" -"Please enter the new name of the profile. The name may contain letters, " -"numbers and -/_." -msgstr "Por favor, entre el nuevo nombre del perfil. Éste puede contener letras, números y -/_." - -#: ../lib/modules/posixGroup.inc:397 ../lib/modules/sambaAccount.inc:59 -#: ../lib/modules/sambaSamAccount.inc:55 ../lib/modules/posixAccount.inc:71 -msgid "Please enter the same password in both password-fields." -msgstr "Por favor, entre la misma contraseña en ambos campos de contraseña." - -#: ../templates/masscreate.php:120 -msgid "" -"Please provide a CSV formated file with your account data. The cells in the " -"first row must be filled with the column identifiers. The following rows " -"represent one account for each row." -msgstr "Por favor, incluya un archivo CSV en sus dados de cuenta. La primera fila deben ser nombres de coumnas. Las siguientes filas representarán una cuenta para cada registro." - -#: ../lib/status.inc:62 -msgid "" -"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." -msgstr "Por favor, reporte este error al bug-tracker, en {link=http://lam.sf.net} Equipo de desarollo de LDAP Account Manager{endlink}. El número de error es {bold}0001: Inválido/Inexistente mensaje. {endbold}. Gracias." - -#: ../lib/modules.inc:688 -msgid "Please select page:" -msgstr "Por favor, seleccione la página:" - -#: ../templates/masscreate.php:89 -msgid "Please select your account type:" -msgstr "Por favor, seleccione su tipo de cuenta:" - -#: ../lib/modules.inc:728 -#, php-format -msgid "Please set up all required attributes on page: %s" -msgstr "Por favor, configure todos los atributos requeridos en la página: %s" - -#: ../templates/config/profmanage.php:148 -msgid "Please set up your master configuration file (config/config.cfg) first!" -msgstr "Por favor, antes de nada, configure su archivo maestro de configuración (config/config.cfg)." - -#: ../templates/pdfedit/pdfpage.php:708 -msgid "Position" -msgstr "Posición" - -#: ../help/help.inc:222 -msgid "Position in ldap-tree where the group should be created." -msgstr "Posicion dentro del árbol LDAP donde se debe crear el grupo." - -#: ../help/help.inc:224 -msgid "Position in ldap-tree where the host should be created." -msgstr "Posición dentro del arbol LDAP donde el host se debe crear." - -#: ../help/help.inc:220 -msgid "Position in ldap-tree where the user should be created." -msgstr "Posición dentro del árbol LDAP donde se debe crear el usuario." - -#: ../templates/masscreate.php:158 ../templates/masscreate.php:294 -#: ../lib/modules/sambaGroupMapping.inc:342 -msgid "Possible values" -msgstr "Posibles valores" - -#: ../lib/modules/inetOrgPerson.inc:66 ../lib/modules/inetOrgPerson.inc:165 -#: ../lib/modules/inetOrgPerson.inc:243 ../lib/modules/inetOrgPerson.inc:429 -#: ../lib/modules/inetOrgPerson.inc:469 -msgid "Postal address" -msgstr "Dirección postal" - -#: ../lib/modules/inetOrgPerson.inc:244 -msgid "Postal address, city" -msgstr "Dirección postal, ciudad" - -#: ../lib/modules/inetOrgPerson.inc:68 ../lib/modules/inetOrgPerson.inc:159 -#: ../lib/modules/inetOrgPerson.inc:239 ../lib/modules/inetOrgPerson.inc:240 -#: ../lib/modules/inetOrgPerson.inc:425 ../lib/modules/inetOrgPerson.inc:468 -msgid "Postal code" -msgstr "Código postal" - -#: ../help/help.inc:71 -msgid "Predefined values" -msgstr "Valores predefinidos" - -#: ../lib/modules/inetOrgPerson.inc:143 -msgid "President" -msgstr "Presidente" - -#: ../lib/modules/posixGroup.inc:115 ../lib/modules/posixAccount.inc:181 -#: ../lib/modules/posixAccount.inc:248 ../lib/modules/posixAccount.inc:312 -#: ../lib/modules/posixAccount.inc:344 ../lib/modules/posixAccount.inc:825 -#: ../lib/modules/posixAccount.inc:921 ../lib/modules/posixAccount.inc:949 -#: ../lib/modules/posixAccount.inc:965 ../help/help.inc:146 -#: ../help/help.inc:158 -msgid "Primary group" -msgstr "Grupo primario" - -#: ../templates/config/profmanage.php:106 -msgid "Profile deleted." -msgstr "Perfil suprimido." - -#: ../templates/tools.php:53 -msgid "Profile editor" -msgstr "Editor de perfiles" - -#: ../templates/config/profmanage.php:50 -#: ../templates/config/profmanage.php:161 ../help/help.inc:108 -#: ../help/help.inc:110 ../help/help.inc:112 ../help/help.inc:114 -#: ../help/help.inc:116 ../help/help.inc:118 ../help/help.inc:120 -msgid "Profile management" -msgstr "Adminstración de perfiles" - -#: ../templates/config/profmanage.php:176 -#: ../templates/config/profmanage.php:223 -#: ../templates/profedit/profilepage.php:126 ../help/help.inc:127 -msgid "Profile name" -msgstr "Nombre del perfil" - -#: ../templates/config/profmanage.php:90 -#: ../templates/config/profmanage.php:101 -msgid "Profile name is invalid!" -msgstr "El nombre del perfil es inválido!" - -#: ../templates/config/profmanage.php:187 -#: ../templates/config/profmanage.php:277 -msgid "Profile password" -msgstr "Contraseña del perfil" - -#: ../templates/config/profmanage.php:88 -#: ../templates/config/profmanage.php:118 -msgid "Profile passwords are different or empty!" -msgstr "Las contraseñas del perfil son diferentes, o están en blanco!" - -#: ../lib/modules/sambaAccount.inc:49 ../lib/modules/sambaAccount.inc:50 -#: ../lib/modules/sambaAccount.inc:138 ../lib/modules/sambaAccount.inc:261 -#: ../lib/modules/sambaAccount.inc:354 ../lib/modules/sambaAccount.inc:742 -#: ../lib/modules/sambaAccount.inc:847 ../lib/modules/sambaSamAccount.inc:47 -#: ../lib/modules/sambaSamAccount.inc:48 -#: ../lib/modules/sambaSamAccount.inc:167 -#: ../lib/modules/sambaSamAccount.inc:275 -#: ../lib/modules/sambaSamAccount.inc:721 -#: ../lib/modules/sambaSamAccount.inc:865 -#: ../lib/modules/sambaSamAccount.inc:919 ../help/help.inc:203 -msgid "Profile path" -msgstr "Path al perfil" - -#: ../lib/modules/sambaAccount.inc:49 ../lib/modules/sambaSamAccount.inc:47 -#: ../lib/modules/sambaSamAccount.inc:49 -msgid "Profile path is invalid!" -msgstr "El path al perfil no es válido!" - -#: ../templates/profedit/profilecreate.php:112 -msgid "Profile was saved." -msgstr "Se guardó el perfil." - -#: ../lib/modules/quota.inc:48 -msgid "Quota" -msgstr "Quota" - -#: ../templates/masscreate.php:154 ../help/help.inc:125 -msgid "RDN identifier" -msgstr "Identificador RDN" - -#: ../lib/lists.inc:215 -msgid "RID (Windows UID)" -msgstr "RID (UID de Windows)" - -#: ../templates/config/confmain.php:405 -msgid "Reenter Password" -msgstr "Vuelva a introducir la contraseña" - -#: ../templates/config/profmanage.php:354 -msgid "Reenter new master password" -msgstr "Vuelva a introducir la contraseña maestra" - -#: ../templates/config/profmanage.php:196 -#: ../templates/config/profmanage.php:288 -msgid "Reenter profile password" -msgstr "Vuelva a introducir la contraseña del perfil" - -#: ../lib/lists.inc:95 -msgid "Refresh" -msgstr "Refrescar" - -#: ../templates/pdfedit/pdfpage.php:581 ../lib/modules/ieee802device.inc:144 -msgid "Remove" -msgstr "Eliminar" - -#: ../templates/config/profmanage.php:219 ../help/help.inc:110 -msgid "Rename profile" -msgstr "Renombrar perfil" - -#: ../templates/config/profmanage.php:97 -msgid "Renamed profile." -msgstr "Perfil renombrado." - -#: ../lib/modules/posixGroup.inc:142 ../lib/modules/sambaAccount.inc:693 -#: ../lib/modules/sambaSamAccount.inc:672 ../lib/modules/posixAccount.inc:847 -msgid "Repeat password" -msgstr "Repita la contraseña" - -#: ../lib/modules/posixAccount.inc:65 ../lib/modules/posixAccount.inc:711 -msgid "Replaced $user or $group in homedir." -msgstr "Se reemplazó $usuario o $grupo en el directorio home del usuario." - -#: ../templates/domain.php:187 ../templates/config/confmain.php:420 -#: ../templates/profedit/profilepage.php:138 -msgid "Reset" -msgstr "Resetear" - -#: ../lib/modules.inc:705 -msgid "Reset changes" -msgstr "Resetear cambios." - -#: ../lib/modules/sambaAccount.inc:789 ../lib/modules/sambaSamAccount.inc:770 -msgid "Reset password" -msgstr "Resetear contraseña" - -#: ../lib/modules/sambaAccount.inc:93 -msgid "Samba 2" -msgstr "Samba 2" - -#: ../lib/modules/sambaSamAccount.inc:89 -#: ../lib/modules/sambaGroupMapping.inc:218 -msgid "Samba 3" -msgstr "Samba 3" - -#: ../templates/domain.php:244 -msgid "Samba 3 domain SID is invalid!" -msgstr "El SID del dominio de Samba 3 es inválido!" - -#: ../templates/tools.php:61 -msgid "Samba 3 domains" -msgstr "Dominios de Samba 3" - -#: ../templates/ou_edit.php:405 -msgid "Samba Hosts" -msgstr "Hosts de Samba" - -#: ../lib/modules/sambaSamAccount.inc:181 -#: ../lib/modules/sambaSamAccount.inc:300 -#: ../lib/modules/sambaSamAccount.inc:323 -msgid "Samba RID" -msgstr "RID de Samba" - -#: ../lib/modules/sambaGroupMapping.inc:251 -#: ../lib/modules/sambaGroupMapping.inc:275 -msgid "Samba RID number" -msgstr "Numero RID de Samba" - -#: ../lib/modules/sambaGroupMapping.inc:245 -msgid "Samba display name" -msgstr "Nombre a visualizar de Samba" - -#: ../lib/modules/sambaGroupMapping.inc:237 -msgid "Samba domain name" -msgstr "Nombre de dominio de samba" - -#: ../lib/modules/sambaGroupMapping.inc:257 -#: ../lib/modules/sambaGroupMapping.inc:283 -#: ../lib/modules/sambaGroupMapping.inc:300 -msgid "Samba group type" -msgstr "Tipo de grupo de Samba" - -#: ../lib/modules/sambaAccount.inc:315 ../lib/modules/sambaAccount.inc:691 -#: ../lib/modules/sambaSamAccount.inc:128 -#: ../lib/modules/sambaSamAccount.inc:670 -msgid "Samba password" -msgstr "Contraseña de samba" - -#: ../lib/modules/sambaAccount.inc:55 ../lib/modules/sambaAccount.inc:150 -#: ../lib/modules/sambaAccount.inc:273 ../lib/modules/sambaAccount.inc:362 -#: ../lib/modules/sambaAccount.inc:748 ../lib/modules/sambaAccount.inc:848 -#: ../lib/modules/sambaSamAccount.inc:53 -#: ../lib/modules/sambaSamAccount.inc:175 -#: ../lib/modules/sambaSamAccount.inc:287 -#: ../lib/modules/sambaSamAccount.inc:727 -#: ../lib/modules/sambaSamAccount.inc:877 -#: ../lib/modules/sambaSamAccount.inc:920 ../help/help.inc:206 -msgid "Samba workstations" -msgstr "Estaciones de samba" - -#: ../lib/pdf.inc:455 -msgid "Samba-Host information page" -msgstr "Página de información del host de samba" - -#: ../templates/pdfedit/pdfpage.php:831 -#: ../templates/profedit/profilepage.php:136 -msgid "Save" -msgstr "Guardar" - -#: ../lib/modules.inc:614 ../lib/modules.inc:617 ../lib/modules.inc:618 -#: ../lib/modules.inc:752 ../lib/modules.inc:757 ../help/help.inc:213 -msgid "Save profile" -msgstr "Guardar perfil" - -#: ../templates/config/confsave.php:171 -msgid "Saving group modules failed!" -msgstr "Fallo el archivado de los módulos de grupo!" - -#: ../templates/config/confsave.php:177 -msgid "Saving host modules failed!" -msgstr "Falló el archivado de los módulos de host!" - -#: ../templates/config/confsave.php:165 -msgid "Saving user modules failed!" -msgstr "Fallo el archivado de los módulos de usuario!" - -#: ../templates/pdfedit/pdfdelete.php:56 ../templates/pdfedit/pdfdelete.php:59 -#: ../templates/pdfedit/pdfdelete.php:78 -msgid "Scope" -msgstr "Contexto" - -#: ../lib/modules/sambaSamAccount.inc:50 ../lib/modules/sambaSamAccount.inc:51 -#: ../help/help.inc:90 ../help/help.inc:200 -msgid "Script path" -msgstr "Path del script" - -#: ../templates/config/confsave.php:153 ../lib/modules/sambaSamAccount.inc:50 -msgid "Script path is invalid!" -msgstr "Path del script inválido!" - -#: ../help/help.inc:95 -msgid "Script server" -msgstr "Servidor de scripts" - -#: ../templates/config/confsave.php:159 -msgid "Script server is invalid!" -msgstr "Sevidor de scripts inválido!" - -#: ../templates/config/confmain.php:366 -msgid "Script settings" -msgstr "Prefencias de script" - -#: ../templates/pdfedit/pdfpage.php:740 -msgid "Section" -msgstr "Sección" - -#: ../templates/config/confmain.php:386 -msgid "Security settings" -msgstr "Preferencias de seguridad" - -#: ../templates/lists/listhosts.php:179 ../templates/lists/listgroups.php:179 -#: ../templates/lists/listdomains.php:114 ../templates/lists/listusers.php:217 -msgid "See README.openldap.txt to solve this problem." -msgstr "Léase el RADME.openldap.txt para resolver este problema" - -#: ../templates/help.php:112 -msgid "See also" -msgstr "Vea también" - -#: ../templates/lists/listhosts.php:257 ../templates/lists/listgroups.php:274 -#: ../templates/lists/listusers.php:308 -msgid "Select all" -msgstr "Seleccionar todos" - -#: ../help/help.inc:215 -msgid "Select group profile" -msgstr "Seleccionar perfil de grupo" - -#: ../templates/config/confmodules.php:291 -msgid "Selected group modules" -msgstr "Módulos de grupo seleccionados" - -#: ../lib/modules/posixAccount.inc:894 -msgid "Selected groups" -msgstr "Grupos seleccionados" - -#: ../templates/config/confmodules.php:394 -msgid "Selected host modules" -msgstr "Módulos de host seleccionados" - -#: ../templates/config/confmodules.php:188 -msgid "Selected user modules" -msgstr "Módulos de usuario seleccionados" - -#: ../lib/modules/posixGroup.inc:194 -msgid "Selected users" -msgstr "Usuarios seleccionados" - -#: ../templates/config/confsave.php:91 -msgid "Server Address is empty!" -msgstr "La dirección del servidor está en blanco!" - -#: ../templates/config/confmain.php:158 ../lib/config.inc:331 -#: ../help/help.inc:48 -msgid "Server address" -msgstr "Dirección del servidor" - -#: ../templates/config/confmain.php:370 ../lib/config.inc:343 -msgid "Server of external script" -msgstr "Servidor del script externo" - -#: ../templates/config/confmain.php:155 -msgid "Server settings" -msgstr "Preferencias del servidor" - -#: ../lib/modules/posixGroup.inc:145 ../lib/modules/posixAccount.inc:850 -#: ../lib/modules/posixAccount.inc:938 -msgid "Set no password" -msgstr "Establecer contraseña vacia" - -#: ../templates/config/profmanage.php:273 ../help/help.inc:114 -msgid "Set profile password" -msgstr "Establecer contraseña de perfil" - -#: ../lib/modules/posixGroup.inc:342 -msgid "Sets the group password." -msgstr "Establece la contraseña del grupo." - -#: ../lib/modules/shadowAccount.inc:62 -msgid "Shadow" -msgstr "Shadow" - -#: ../templates/massBuildAccounts.php:196 -msgid "Show LDIF file" -msgstr "Mostrar archivo LDIF" - -#: ../templates/pdfedit/pdfpage.php:455 -msgid "Size" -msgstr "Tamaño" - -#: ../lib/modules/quota.inc:400 -msgid "Soft block" -msgstr "Bloque soft" - -#: ../lib/modules/quota.inc:72 ../lib/modules/quota.inc:293 -#: ../lib/modules/quota.inc:350 -msgid "Soft block limit" -msgstr "Limite de bloque soft" - -#: ../lib/modules/quota.inc:73 -msgid "Soft block limit." -msgstr "Limite de bloque soft" - -#: ../lib/modules/quota.inc:400 -msgid "Soft inode" -msgstr "Inodo soft" - -#: ../lib/modules/quota.inc:89 -msgid "Soft inode (files) limit." -msgstr "Limite de inodos (archivos) soft." - -#: ../lib/modules/quota.inc:88 ../lib/modules/quota.inc:297 -#: ../lib/modules/quota.inc:352 -msgid "Soft inode limit" -msgstr "Limte soft de inodos" - -#: ../lib/modules.inc:727 -msgid "Some required information is missing" -msgstr "Falta alguna información requerida" - -#: ../templates/help.php:144 -#, php-format -msgid "" -"Sorry this help id ({bold}%s{endbold}) is not available for this module " -"({bold}%s{endbold})." -msgstr "Perdón, pero esta ayuda ({bold}%s{endbold}) no está disponible para este módulo({bold}%s{endbold})." - -#: ../templates/help.php:157 -#, php-format -msgid "Sorry this help number ({bold}%d{endbold}) is not available." -msgstr "Perdón, pero este numero de ayuda ({bold}%d{endbold}) no está disponible." - -#: ../lib/modules/sambaGroupMapping.inc:340 -msgid "Special Group" -msgstr "Grupo especial" - -#: ../lib/modules/sambaAccount.inc:62 ../lib/modules/sambaAccount.inc:63 -#: ../lib/modules/sambaAccount.inc:286 ../lib/modules/sambaAccount.inc:371 -#: ../lib/modules/sambaAccount.inc:780 ../lib/modules/sambaSamAccount.inc:58 -#: ../lib/modules/sambaSamAccount.inc:59 -#: ../lib/modules/sambaSamAccount.inc:761 -msgid "Special user" -msgstr "Usuario especial" - -#: ../templates/pdfedit/pdfpage.php:645 ../templates/pdfedit/pdfpage.php:651 -#: ../templates/pdfedit/pdfpage.php:777 -msgid "Static text" -msgstr "Texto estático" - -#: ../lib/modules/inetOrgPerson.inc:124 -msgid "Steve" -msgstr "Steve" - -#: ../lib/modules/sambaAccount.inc:193 ../lib/modules/sambaSamAccount.inc:207 -#: ../lib/modules/inetOrgPerson.inc:117 -msgid "Steve Miller" -msgstr "Steve Miller" - -#: ../lib/modules/posixAccount.inc:225 -msgid "Steve Miller,Room 2.14,123-123-1234,123-123-1234" -msgstr "Steve Miller,hab 2.14,123-123-1234,123-123-1234" - -#: ../lib/modules/inetOrgPerson.inc:64 ../lib/modules/inetOrgPerson.inc:153 -#: ../lib/modules/inetOrgPerson.inc:235 ../lib/modules/inetOrgPerson.inc:236 -#: ../lib/modules/inetOrgPerson.inc:421 ../lib/modules/inetOrgPerson.inc:467 -msgid "Street" -msgstr "Calle" - -#: ../templates/pdfedit/pdfpage.php:805 -msgid "Structure name" -msgstr "Nombre de la estructura" - -#: ../templates/ou_edit.php:94 ../templates/ou_edit.php:159 -#: ../templates/ou_edit.php:224 ../templates/ou_edit.php:289 -#: ../templates/ou_edit.php:470 ../templates/domain.php:186 -#: ../templates/config/profmanage.php:373 -#: ../templates/config/confmodules.php:496 -#: ../templates/config/confmain.php:418 ../templates/pdfedit/pdfdelete.php:81 -#: ../templates/pdfedit/pdfpage.php:797 ../templates/pdfedit/pdfmain.php:143 -#: ../templates/profedit/profiledelete.php:85 -#: ../templates/profedit/profiledelete.php:97 -#: ../templates/profedit/profiledelete.php:109 -#: ../templates/profedit/profilemain.php:261 -msgid "Submit" -msgstr "Someter" - -#: ../templates/pdfedit/pdfpage.php:445 ../templates/pdfedit/pdfpage.php:490 -msgid "Submit page settings" -msgstr "Someter las preferencias de página" - -#: ../templates/lists/listhosts.php:278 ../templates/lists/listgroups.php:294 -#: ../templates/lists/listdomains.php:200 ../templates/lists/listusers.php:328 -#: ../templates/domain.php:159 ../lib/modules.inc:740 ../help/help.inc:219 -#: ../help/help.inc:221 ../help/help.inc:223 ../help/help.inc:242 -msgid "Suffix" -msgstr "Sufijo" - -#: ../lib/modules/inetOrgPerson.inc:56 ../lib/modules/inetOrgPerson.inc:171 -#: ../lib/modules/inetOrgPerson.inc:247 ../lib/modules/inetOrgPerson.inc:248 -#: ../lib/modules/inetOrgPerson.inc:433 ../lib/modules/inetOrgPerson.inc:470 -msgid "Telephone number" -msgstr "Número de teléfono" - -#: ../lib/modules/inetOrgPerson.inc:149 -msgid "Temp" -msgstr "Temp" - -#: ../lib/modules/inetOrgPerson.inc:137 -msgid "Temp, contract until december" -msgstr "Temp, contrato hasta diciembre" - -#: ../help/help.inc:104 -msgid "Text for user PDF" -msgstr "Texto para el PDF del usuario" - -#: ../lib/modules/posixAccount.inc:313 ../help/help.inc:147 -msgid "The Primary Group the user should be member of." -msgstr "El grupo principal al cual el usuario debe pertenecer." - -#: ../lib/modules/posixAccount.inc:345 ../help/help.inc:159 -msgid "The Primary group the host should be member of." -msgstr "El grupo principal del cual el host debe ser miembro." - -#: ../help/help.inc:245 -msgid "The SID of your Samba server. Get it with \"net getlocalsid\"." -msgstr "El SID de su servidor Samba. Obténgalo tecleando \"net getlocalsid\"." - -#: ../lib/modules/posixAccount.inc:63 -msgid "" -"The UID ranges for users and hosts overlap! This is a problem because LAM " -"uses the highest UID in use + 1 for new accounts. Please set the minimum UID " -"to equal values or use independent ranges." -msgstr "Hay un solapamiento entre los rangos de los UIDs de los usuarios y de los hosts! Esto es un problema, ya que LAM usa el mayor UID en uso +1 para cuentas nuevas. Por favor, establezca el UID mínimo igual en ambos casos, o use rangos independientes, que no se solapen." - -#: ../help/help.inc:243 -msgid "The domain entry will be saved under this suffix." -msgstr "La entrada del dominio se salvará bajo este sufijo." - -#: ../lib/modules/shadowAccount.inc:49 -msgid "The expiration date is invalid." -msgstr "La fecha de caducidad es inválida." - -#: ../templates/config/confsave.php:246 -msgid "The following settings were saved to profile:" -msgstr "Los siguientes parámetros se salvaron en el perfil:" - -#: ../templates/initsuff.php:184 -msgid "The following suffix(es) are missing in LDAP. LAM can create them for you." -msgstr "Los siguientes sufijos no se encuentran en LDAP. LAM los puede crear automáticamente." - -#: ../lib/modules/sambaSamAccount.inc:70 -msgid "The format of the logon hours field is invalid!" -msgstr "Formato inválido para el campo \"horas de inicio de sesión\"" - -#: ../templates/pdfedit/pdfpage.php:73 -msgid "The headline for a new section must contain at least one character." -msgstr "El encabezado para una nueva sección debe contener al menos un carácter." - -#: ../templates/pdfedit/pdfpage.php:61 -msgid "" -"The name for that PDF-structure you submitted is not valid. A valid name " -"must constist at least of one of the following characters 'a-z','A-Z','0-" -"9','_','-','.'." -msgstr "El nombre que especificó para la estructura de PDF no es válido. Un nombre válido debe consistir de al menos uno de los siguientes caracteres: a-z, A-Z, 0-9,'_','-','.'." - -#: ../help/help.inc:241 -msgid "The name of your Windows domain or workgroup." -msgstr "El nombre de su Dominio de Windows, o de su Grupo de Trabajo de Windows." - -#: ../help/help.inc:130 -msgid "The new account will be saved under this LDAP suffix." -msgstr "Se añadirá una nueva cuenta bajo este sufijo LDAP." - -#: ../templates/config/confmain.php:109 -msgid "The password is invalid! Please try again." -msgstr "Contraseña incorrecta!. Por favor, inténtelo de nuevo." - -#: ../templates/pdfedit/pdfpage.php:77 -msgid "The static text must contain at least one character." -msgstr "El texto estático debe contener al menos un caracter." - -#: ../lib/modules/posixGroup.inc:115 -msgid "There are still users who have this group as their primary group." -msgstr "Todavia hay usuarios con este grupo como grupo primario." - -#: ../lib/modules/sambaAccount.inc:62 ../lib/modules/sambaSamAccount.inc:58 -msgid "There can be only one administrator per domain." -msgstr "Sólo puede haber un administrador por dominio." - -#: ../lib/modules/sambaGroupMapping.inc:340 -#, php-format -msgid "There can be only one group %s." -msgstr "Sólo puede haber un grupo %s." - -#: ../lib/modules/sambaAccount.inc:63 ../lib/modules/sambaSamAccount.inc:59 -msgid "There can be only one guest per domain." -msgstr "Sólo puede haber un invitado por dominio." - -#: ../templates/massDoUpload.php:119 -msgid "There were errors while uploading:" -msgstr "Se produjeron errores mientras se enviaba:" - -#: ../lib/modules/posixGroup.inc:351 -msgid "" -"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." -msgstr "Estos son los numeros máximos y mínimos a usar para IDs de grupo al crear nuevas cuentas de grupo. Las nuevas cuentas de grupo tendrán asignadas el ID más grande en uso +1." - -#: ../lib/modules/posixAccount.inc:292 -msgid "" -"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." -msgstr "Estos son los máximos y minimos a usar para IDs de máquina a la hora de crear cuentas para hosts de Samba. El rango debiera de ser diferente al de los usuarios. A las nuevas cuentas de máquina se les asignará el ID mas grande en uso +1." - -#: ../lib/modules/posixAccount.inc:288 -msgid "" -"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." -msgstr "Estos son los máximos y minimos a usar para IDs de usuario a la hora de crear cuentas de usuarios. El rango debiera de ser diferente al de las cuentas de maquinas. A las nuevas cuentas de usuario se les asignará el ID mas grande en uso +1." - -#: ../lib/modules/posixAccount.inc:85 -msgid "This GID number is invalid! Please provide either a number or a group name." -msgstr "Este GID no es válido!. Por favor, entre o bien un numero de grupo o bien un nombre de grupo." - -#: ../templates/domain.php:247 -msgid "This Samba 3 domain is already present!" -msgstr "Este dominio de Samba 3 ya existe!" - -#: ../help/help.inc:115 -msgid "This changes the password of the selected profile." -msgstr "Aquí se cambia el password del perfil seleccionado." - -#: ../help/help.inc:117 -msgid "This changes the profile which is selected by default at login." -msgstr "Esto cambia el perfil seleccionado al inicio de sesión por defecto." - -#: ../templates/massBuildAccounts.php:148 -msgid "This column is defined to include unique entries but duplicates were found:" -msgstr "Esta columna se supone que no debiera contener duplicados, pero se encontraron:" - -#: ../help/help.inc:89 -msgid "" -"This defines the language of the login window and sets this language as the " -"default language. Users can change the language at login." -msgstr "Aquí se define el idioma de la ventana de inicio de sesión y establece el idioma al idioma por defecto. Los usuarios pueden establecer el idioma por defecto al iniciar la sesión." - -#: ../lib/pdf.inc:511 -msgid "This document was automatically created by LDAP Account Manager" -msgstr "Este documento se generó automáticamente por LDAP Account Manager" - -#: ../lib/modules/posixAccount.inc:86 -msgid "This gecos value is invalid!" -msgstr "Valor inválido para gecos." - -#: ../lib/modules/ieee802device.inc:61 -msgid "This is a comma separated list of MAC addresses." -msgstr "Esto es una lista separada por comas de direcciones MAC." - -#: ../help/help.inc:82 -msgid "" -"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." -msgstr "Lista válida de entradas DN de todos los usuarios que se les permite entrar en LDAP Account Manager. Los nombres de usuarios deben estar separados por comas." - -#: ../templates/masscreate.php:209 -msgid "" -"This is an example how it would look in your spreadsheet program before you " -"convert to CSV:" -msgstr "Ejemplo de como deberia quedar en su hoja de cálculo antes de ser convertido a CSV:" - -#: ../lib/modules/sambaGroupMapping.inc:342 -msgid "This is not a valid Samba 3 group type!" -msgstr "Esto no es un tipo de grupo de Samba 3 válido!" - -#: ../lib/modules/ieee802device.inc:57 -msgid "" -"This is the MAC address of the network card of the device (e.g. 00:01:02:DE:" -"EF:18)." -msgstr "Esto es la direccion MAC de la tarjeta de red (p.ej 00:01:02:DE:EF:18)" - -#: ../lib/modules/sambaAccount.inc:369 -msgid "This is the RID of the user's primary Windows group." -msgstr "Esto es el RID del grupo primario del usuario." - -#: ../lib/modules/sambaSamAccount.inc:179 -msgid "This is the SID of the user's primary Windows group." -msgstr "Esto es el SID del grupo primario del usuario." - -#: ../help/help.inc:91 -msgid "" -"This is the absolute path to an external script for setting quotas and " -"creating home directories." -msgstr "Esto es el path absoluto a un script externo que establece las quotas y crea los directorios de los usuarios." - -#: ../lib/modules/sambaAccount.inc:316 ../lib/modules/sambaSamAccount.inc:129 -msgid "This is the account's Windows password." -msgstr "Contraseña de Windows de la cuenta." - -#: ../lib/modules/sambaAccount.inc:313 ../lib/modules/sambaSamAccount.inc:126 -msgid "This is the account's full name on Windows systems." -msgstr "Nombre y apellidos de la cuenta dentro de Windows." - -#: ../lib/modules/sambaGroupMapping.inc:268 -msgid "This is the group name which will be shown in Windows." -msgstr "Nombre del grupo que será mostrado en Windows." - -#: ../help/help.inc:126 -msgid "" -"This is the identifier for the relative DN value. It must be one of the " -"given allowed LDAP attributes (e.g. user accounts usually use \"uid\" while " -"groups use \"cn\")." -msgstr "Identificador relativo del DN. Debe de ser uno de los atributos LDAP permitidos (p.ej las cuentas de usuario normalmente emplean \"uid\", mientras los grupos emplean \"cn\")." - -#: ../help/help.inc:67 -msgid "" -"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." -msgstr "Lista de atributos amostrar en la lista de usuarios/grupos/hosts. Los elementos pueden ser, o bien valores predefinidos, \"#atributo\", o valores individuales, \"atributo:descripcción\". Se pueden separar varios elementos mediante comas." - -#: ../help/help.inc:87 -msgid "" -"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." -msgstr "Numero de entradas a mostrar en la lista de usuarios/grupos/hosts. Si hay más que estos, se mostrarán en varias páginas." - -#: ../lib/modules/sambaGroupMapping.inc:276 -msgid "" -"This is the relative ID (similar to UID on Unix) for Windows accounts. If " -"you leave this empty LAM will calculate the RID from the UID. This can be " -"either a number or the name of a special group:" -msgstr "Esto es un ID relativo (similar al UID de Unix) para cuentas de Windows. Si lo deja en blanco, LAM lo calculará a partir del UID. Puede ser o bien un numero o bien el nombre de un grupo especial:" - -#: ../lib/modules/sambaSamAccount.inc:182 -#, php-format -msgid "" -"This is the relative ID number for your Windows account. You can either " -"enter a number or one of these special accounts: %s. If you leave this empty " -"LAM will use: uidNumber*2 + sambaAlgorithmicRidBase." -msgstr "Este es el ID relativo de su cuenta de Windows. Puede entrar o bien un numero o bien una de las cuentas especiales: %s. Si lo deja en blanco, LAM usará: uidNumber*2 + sambaAlgorithmicRidBase." - -#: ../help/help.inc:49 -msgid "" -"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." -msgstr "Direccion de su servidor LDAP. Use ldap:// para conexiones estándar LDAP, y ldaps:// para conexiones encriptadas (requiere certificados de servidor). El numero de puerto es opcional." - -#: ../help/help.inc:96 -msgid "" -"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." -msgstr "Este es el servidor donde se guarda el script lamdaemon. LDAP Account Manager hará una conexión SSH usando el usuario y contraseña que Ud. uso para entrar." - -#: ../help/help.inc:61 -msgid "" -"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." -msgstr "Sufijo del árbol LDAP a usar para realizar búsquedas. Solo se mostrarán entradas de usuario/grupo/hosts que pertenezcan a estre subárbol. Al crear nuevas cuentas, éste será el DN donde se salvarán." - -#: ../help/help.inc:103 -msgid "" -"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." -msgstr "Tiempo en minutos que LAM mantendrá en caché sus búsquedas. Tiempos menores sobrecargarian al servidor LDAP, pero mayores podrian fallar algunas busquedas." - -#: ../lib/modules/posixAccount.inc:87 -msgid "This login shell is invalid!" -msgstr "El shell de login es inválido!" - -#: ../lib/modules/sambaSamAccount.inc:189 -msgid "" -"This option defines the allowed logon hours for this account. The format is " -"the same as for the LDAP attribute. The 24*7 hours are represented as 168 " -"bit which are saved as 21 hex (21*8 = 168) values. The first bit represents " -"Sunday 0:00 - 0:59 in GMT." -msgstr "Esta opción define las horas en las que se permite iniciar la sesión a esta cuenta. El formato es el mismo que el atributo de LDAP. O sea, un valor de 168 bits donde el primer bit representa Domingo 0:00-0:59 en GMT." - -#: ../help/help.inc:105 -msgid "This text will appear on top of every user PDF file." -msgstr "Este texto aparecerá en el encabezado del PDF del usuario." - -#: ../templates/tools.php:84 -msgid "This tool allows you to customize the PDF pages." -msgstr "Este herramienta le permitirá personalizar las paginas PDF." - -#: ../templates/lists/userlink.php:63 -msgid "This user was not found!" -msgstr "Este usuario no se encontró!" - -#: ../lib/modules/sambaAccount.inc:65 ../lib/modules/sambaAccount.inc:66 -#: ../lib/modules/sambaAccount.inc:67 ../lib/modules/sambaAccount.inc:68 -#: ../lib/modules/sambaSamAccount.inc:62 ../lib/modules/sambaSamAccount.inc:63 -#: ../lib/modules/sambaSamAccount.inc:64 ../lib/modules/sambaSamAccount.inc:65 -msgid "This value can only be \\\"true\\\" or \\\"false\\\"!" -msgstr "Este valor solo puede ser \\\"true\\\" o \\\"false\\\"!" - -#: ../lib/modules/posixAccount.inc:88 -msgid "This value can only be \\\"true\\\" or \\\"false\\\"." -msgstr "Este valor solo puede ser \\\"true\\\" o \\\"false\\\"!" - -#: ../lib/modules/posixGroup.inc:412 -msgid "This value must be a list of user names separated by semicolons." -msgstr "Este valor debe ser una lista separada por comas de nombres de usuarios." - -#: ../help/help.inc:237 -msgid "This will create a new organizational unit under the selected one." -msgstr "Esto creará una nueva Unidad Organizativa (OU) dentro de la seleccionada." - -#: ../help/help.inc:239 -msgid "This will delete the selected organizational unit. The OU has to be empty." -msgstr "Esto borrará la unidad organizativa (OU) seleccionada. La OU debe de estar vacia." - -#: ../help/help.inc:113 -msgid "This will delete the selected profile." -msgstr "Esto borrará el perfil seleccionado." - -#: ../help/help.inc:214 -msgid "" -"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 -_." -msgstr "Esto creará un perfil de la cuenta seleccionada. Los valores guardados son los mismos que en el editor de perfiles. Los nombres de perfil pueden contener las letras a-z, 0-9 y -_." - -#: ../lib/modules/posixAccount.inc:327 ../help/help.inc:145 -msgid "" -"To disable login use /bin/false. List of shells is read from lam/config/" -"shells" -msgstr "Para deshabilitar la cuenta, use /bin/false. La lista de shells se lee de la configuración dee lam / config shells." - -#: ../templates/main_header.php:56 -msgid "Tools" -msgstr "Herramientas" - -#: ../templates/pdfedit/pdfpage.php:513 -msgid "Top" -msgstr "Arriba del todo" - -#: ../templates/lists/listusers.php:342 -msgid "Translate GID number to group name" -msgstr "Traducir GID a Nombre del grupo" - -#: ../lib/modules/posixAccount.inc:75 -msgid "UID" -msgstr "UID" - -#: ../lib/modules/posixAccount.inc:75 -msgid "UID has changed. Do you want to change home directory?" -msgstr "El UID ha cambiado. Quiere cambiar el nombre del directorio del usuario?" - -#: ../lib/modules/posixAccount.inc:70 -msgid "" -"UID must be a number. It has to be inside the UID range which is defined in " -"your configuration profile." -msgstr "El UID debe ser un numero. También se debe hallar dentro del rango de UIDs definido en su configuración." - -#: ../lib/modules/posixAccount.inc:46 ../lib/modules/posixAccount.inc:175 -#: ../lib/modules/posixAccount.inc:242 ../lib/modules/posixAccount.inc:287 -#: ../lib/modules/posixAccount.inc:291 ../lib/modules/posixAccount.inc:299 -#: ../lib/modules/posixAccount.inc:817 ../lib/modules/posixAccount.inc:962 -#: ../lib/lists.inc:178 ../lib/lists.inc:217 ../help/help.inc:136 -#: ../help/help.inc:156 -msgid "UID number" -msgstr "UID" - -#: ../lib/modules/posixAccount.inc:46 -#, php-format -msgid "" -"UID number has changed. To keep file ownership you have to run the following " -"command as root: 'find / -uid %s -exec chown %s {} \\;'" -msgstr "El UID ha cambiado. Para conservar los permisos, debe ejecutar como root: 'find / -uid %s -exec chown %s {} \\;" - -#: ../lib/modules/posixAccount.inc:63 ../lib/modules/posixAccount.inc:151 -msgid "UID ranges for Unix accounts" -msgstr "Rangos de UID para cuentas Unix" - -#: ../lib/modules/sambaAccount.inc:351 ../lib/modules/sambaSamAccount.inc:164 -#: ../help/help.inc:209 -#, php-format -msgid "" -"UNC-path (\\\\server\\share) of homedirectory. $%s and $%s are replaced with " -"user- and groupname." -msgstr "Path UNC (\\\\servidor\\recurso) del directorio del usuario. %s y %s serán reemplazados con el nombre del usuario y el grupo." - -#: ../templates/ou_edit.php:55 ../templates/ou_edit.php:120 -#: ../templates/ou_edit.php:185 ../templates/ou_edit.php:250 -msgid "Unable to create new OU!" -msgstr "No se pudo crear la nueva OU!" - -#: ../templates/config/profmanage.php:86 -msgid "Unable to create new profile!" -msgstr "No se pudo crear el nuevo perfil!" - -#: ../templates/ou_edit.php:72 ../templates/ou_edit.php:137 -#: ../templates/ou_edit.php:202 ../templates/ou_edit.php:267 -msgid "Unable to delete OU!" -msgstr "No se pudo borrar la OU!" - -#: ../templates/pdfedit/pdfdelete.php:56 -msgid "Unable to delete PDF structure!" -msgstr "No se pudo borrar la estructura de PDF!" - -#: ../templates/domain.php:314 -msgid "Unable to delete domain!" -msgstr "No se pudo eliminar el Dominio!" - -#: ../templates/config/profmanage.php:108 -#: ../templates/profedit/profiledelete.php:60 -msgid "Unable to delete profile!" -msgstr "No se pudo borrar el perfil!" - -#: ../lib/modules/posixAccount.inc:1260 -msgid "Unable to find group in LDAP." -msgstr "No se pudo encontrar el grupo en LDAP." - -#: ../templates/login.php:100 ../templates/config/confmain.php:355 -msgid "" -"Unable to load available languages. Setting English as default language. For " -"further instructions please contact the Admin of this site." -msgstr "No se pudieron cargar los idiomas disponibles. Estableciendo Inglés como idioma por defecto. Para más información, por favor, contacte con el Administrador del sistema." - -#: ../lib/profiles.inc:91 ../lib/profiles.inc:95 -msgid "Unable to load profile!" -msgstr "No se pudo cargar el perfil!" - -#: ../templates/profedit/profilecreate.php:114 -msgid "Unable to save profile!" -msgstr "No se pudo gravar el perfil!" - -#: ../lib/modules/posixGroup.inc:226 ../lib/modules/posixAccount.inc:114 -msgid "Unix" -msgstr "Unix" - -#: ../lib/modules/inetOrgPerson.inc:51 ../lib/modules/inetOrgPerson.inc:400 -#: ../lib/modules/inetOrgPerson.inc:462 ../help/help.inc:227 -msgid "Unix workstations" -msgstr "Estaciones de trabajo Unix" - -#: ../lib/modules/inetOrgPerson.inc:51 -msgid "Unix workstations is invalid." -msgstr "Las estaciones de trabajo Unix són inválidas." - -#: ../templates/config/confmodules.php:245 -#: ../templates/config/confmodules.php:348 -#: ../templates/config/confmodules.php:451 -msgid "Unsolved dependency:" -msgstr "Dependencia fallidas:" - -#: ../templates/pdfedit/pdfpage.php:581 -msgid "Up" -msgstr "Arriba" - -#: ../templates/massBuildAccounts.php:193 -msgid "Upload accounts to LDAP" -msgstr "Subir cuentas al LDAP" - -#: ../templates/masscreate.php:128 -msgid "Upload file and create accounts" -msgstr "Subir archivo y crear cuentas" - -#: ../lib/modules.inc:472 -#, php-format -msgid "Upload was stopped after errors in %s module!" -msgstr "Se abortó la transferencia debido a errores en el módulo %s!" - -#: ../lib/modules/sambaAccount.inc:100 ../lib/modules/sambaAccount.inc:203 -#: ../lib/modules/sambaAccount.inc:318 ../lib/modules/sambaAccount.inc:321 -#: ../lib/modules/sambaSamAccount.inc:131 -#: ../lib/modules/sambaSamAccount.inc:134 -#: ../lib/modules/sambaSamAccount.inc:217 -msgid "Use Unix password" -msgstr "Usar la constraseña Unix" - -#: ../templates/pdfedit/pdfpage.php:442 ../templates/pdfedit/pdfpage.php:487 -#: ../templates/pdfedit/pdfpage.php:501 ../templates/pdfedit/pdfpage.php:519 -#: ../templates/pdfedit/pdfpage.php:530 ../templates/pdfedit/pdfpage.php:541 -#: ../templates/pdfedit/pdfpage.php:552 -msgid "Use default" -msgstr "Usar predefinido(a)" - -#: ../help/help.inc:93 ../help/help.inc:98 -msgid "" -"Use it at your own risk and read the documentation for lamdaemon before you " -"use it!" -msgstr "Uselo bajo su responsabilidad y lea la documentación de lamdaemon antes de usarlo!" - -#: ../lib/modules/posixGroup.inc:345 ../lib/modules/sambaAccount.inc:106 -#: ../lib/modules/sambaAccount.inc:211 ../lib/modules/sambaAccount.inc:324 -#: ../lib/modules/sambaAccount.inc:327 ../lib/modules/sambaAccount.inc:703 -#: ../lib/modules/sambaSamAccount.inc:137 -#: ../lib/modules/sambaSamAccount.inc:140 -#: ../lib/modules/sambaSamAccount.inc:225 -#: ../lib/modules/sambaSamAccount.inc:682 -#: ../lib/modules/sambaSamAccount.inc:833 ../lib/modules/posixAccount.inc:321 -#: ../help/help.inc:186 -msgid "Use no password" -msgstr "No utilizar ninguna contraseña" - -#: ../lib/modules/sambaAccount.inc:697 ../lib/modules/sambaSamAccount.inc:676 -#: ../lib/modules/sambaSamAccount.inc:827 ../help/help.inc:188 -msgid "Use unix password" -msgstr "Usar contraseña de Unix" - -#: ../lib/modules/quota.inc:68 ../lib/modules/quota.inc:292 -msgid "Used blocks" -msgstr "Bloques en uso" - -#: ../lib/modules/quota.inc:69 -msgid "Used blocks. 1000 blocks are usually 1MB" -msgstr "Bloques en uso. 1000 bloques son normalmente 1 Mega" - -#: ../help/help.inc:253 -msgid "Used for calculating RIDs from UID/GID. Do not change if unsure." -msgstr "Usado para calcular RIDs a partir de UIDs/GIDs. No lo cambie si no está seguro de lo que hace." - -#: ../lib/modules/quota.inc:84 ../lib/modules/quota.inc:296 -msgid "Used inodes" -msgstr "Inodos usados" - -#: ../lib/modules/quota.inc:85 -msgid "Used inodes (files)" -msgstr "Inodos usados (archivos)" - -#: ../lib/modules/sambaGroupMapping.inc:51 -msgid "User" -msgstr "Usuario" - -#: ../lib/lists.inc:177 -msgid "User ID" -msgstr "ID de usuario" - -#: ../lib/modules/sambaAccount.inc:235 ../lib/modules/sambaAccount.inc:342 -#: ../lib/modules/sambaAccount.inc:719 ../lib/modules/sambaSamAccount.inc:155 -#: ../lib/modules/sambaSamAccount.inc:249 -#: ../lib/modules/sambaSamAccount.inc:698 ../help/help.inc:192 -msgid "User can change password" -msgstr "El usuario puede cambiar la contraseña" - -#: ../lib/modules/posixAccount.inc:309 ../lib/modules/inetOrgPerson.inc:216 -#: ../help/help.inc:143 -msgid "User description. If left empty sur- and give name will be used." -msgstr "Descripcción del usuario. Si se deja en blanco, se usará el apellido y el \"givename\"" - -#: ../lib/pdf.inc:449 -msgid "User information page" -msgstr "Página de información del usuario" - -#: ../templates/initsuff.php:152 ../templates/initsuff.php:159 -#: ../templates/initsuff.php:167 -msgid "User list" -msgstr "Lista de usuarios" - -#: ../templates/config/confsave.php:126 -msgid "User list attributes are invalid!" -msgstr "La lista de atributos del usuario no es válida!" - -#: ../templates/config/confmodules.php:181 -#: ../templates/config/confmain.php:219 ../lib/config.inc:345 -msgid "User modules" -msgstr "Módulos de usuario" - -#: ../lib/modules/sambaAccount.inc:242 ../lib/modules/sambaAccount.inc:344 -#: ../lib/modules/sambaAccount.inc:727 ../lib/modules/sambaSamAccount.inc:157 -#: ../lib/modules/sambaSamAccount.inc:256 -#: ../lib/modules/sambaSamAccount.inc:706 ../help/help.inc:194 -msgid "User must change password" -msgstr "El usuario debe cambiar la contraseña" - -#: ../lib/modules/account.inc:64 ../lib/modules/posixAccount.inc:167 -msgid "User name" -msgstr "Nombre del usuario" - -#: ../templates/profedit/profilemain.php:132 -msgid "User profiles" -msgstr "Perfiles del usuario" - -#: ../lib/modules/quota.inc:400 -msgid "User quota" -msgstr "Quota del usuario" - -#: ../help/help.inc:60 -msgid "User/Group/Host suffix" -msgstr "Sufijo Usuario/Grupo/Host" - -#: ../templates/config/confmain.php:170 ../lib/config.inc:333 -msgid "UserSuffix" -msgstr "SufijoDeUsuario" - -#: ../templates/config/confsave.php:106 -msgid "UserSuffix is invalid!" -msgstr "SufijoDeUsuario es inválido!" - -#: ../templates/login.php:157 ../lib/modules/sambaAccount.inc:843 -#: ../lib/modules/sambaSamAccount.inc:915 ../lib/modules/posixAccount.inc:76 -#: ../lib/modules/posixAccount.inc:77 ../lib/modules/posixAccount.inc:80 -#: ../lib/modules/posixAccount.inc:304 ../lib/modules/posixAccount.inc:814 -#: ../lib/modules/posixAccount.inc:961 ../lib/lists.inc:180 -#: ../help/help.inc:134 -msgid "Username" -msgstr "Nombre del usuario" - -#: ../lib/modules/posixAccount.inc:77 ../lib/modules/posixAccount.inc:82 -msgid "" -"Username contains invalid characters. Valid characters are: a-z, A-Z, 0-9 " -"and .-_ !" -msgstr "El nombre del usuario contiene caracteres inválidos. Los caracteres válidos son: a-z, A-Z, 0-9,y .-_ !" - -#: ../lib/modules/posixAccount.inc:80 -msgid "Username in use. Selected next free username." -msgstr "El nombre del usuario ya está en uso. Se usó el próximo nombre disponible." - -#: ../lib/modules/posixAccount.inc:305 ../help/help.inc:135 -msgid "" -"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." -msgstr "Nombre del usuario a crear. Los caracteres válidos son: a-z,0-9,.-_. Lam no permite numeros como primer caracter porque useradd tampoco lo permite. Lam no permite mayúsculas porque pueden causar varios problemas. Si el nombre de la cuenta ya está en uso, se expandirá con el próximo numero disponible. Atención: Los sistemas antiguos pueden tener problemas con nombres de usuarios con más de 8 caracteres. No podrá entrar a Windows si el nombre de usuario tiene más de 16 caracteres." - -#: ../templates/ou_edit.php:339 ../templates/main_header.php:74 -#: ../lib/modules/posixAccount.inc:57 ../lib/modules/posixAccount.inc:58 -#: ../lib/modules/posixAccount.inc:61 ../lib/modules/posixAccount.inc:123 -#: ../help/help.inc:73 -msgid "Users" -msgstr "Usuarios" - -#: ../help/help.inc:232 -msgid "Users also being member of the current group." -msgstr "Otros usuarios del grupo." - -#: ../lib/modules/posixGroup.inc:334 -msgid "Users who are member of the current group." -msgstr "Usuarios que son miembros del grupo seleccionado." - -#: ../lib/modules/posixGroup.inc:338 -msgid "" -"Users who will become member of the current group. User names are separated " -"by semicolons." -msgstr "Usuarios que serán miembros del grupo seleccionado. Los nombres deben ser separados por comas." - -#: ../help/help.inc:173 -msgid "Users wich are also members of group." -msgstr "Usuarios que también son miembros del grupo." - -#: ../help/help.inc:81 -msgid "Valid users" -msgstr "Usuarios válidos" - -#: ../templates/delete.php:184 ../lib/modules.inc:1406 -#, php-format -msgid "Was unable to add attribtues to DN: %s." -msgstr "No se pudo añadir atributos al DN: %s." - -#: ../lib/modules.inc:1371 ../lib/modules.inc:1380 -#, php-format -msgid "Was unable to create DN: %s." -msgstr "No se pudo crear el DN: %s." - -#: ../lib/modules.inc:1364 -#, php-format -msgid "Was unable to delete DN: %s." -msgstr "No se pudo borrar el DN: %s." - -#: ../templates/delete.php:174 ../lib/modules.inc:1396 -#, php-format -msgid "Was unable to modify attribtues from DN: %s." -msgstr "No se pudieron modificar atributos del DN: %s." - -#: ../templates/delete.php:194 ../templates/delete.php:218 -#: ../lib/modules.inc:1416 -#, php-format -msgid "Was unable to remove attribtues from DN: %s." -msgstr "No se pudieron eliminar atributos del DN: %s." - -#: ../help/help.inc:59 -msgid "" -"When using ldaps:// be sure to use exactly the same IP/domain name as in " -"your certificate!" -msgstr "Si usa ldaps://, asegurese de usar la misma dirección IP/ nombre de dominio que en su certificado!" - -#: ../templates/pdfedit/pdfpage.php:460 -msgid "Width" -msgstr "Anchura" - -#: ../help/help.inc:175 -msgid "Windows clients will show display name as group description." -msgstr "Los clientes windows mostrarán el nombre como la descripción del grupo." - -#: ../help/help.inc:217 -msgid "Windows domain" -msgstr "Dominio de Windows" - -#: ../lib/modules/sambaAccount.inc:375 ../lib/modules/sambaSamAccount.inc:186 -msgid "Windows domain name of account." -msgstr "Nombre del dominio de windows de la cuenta." - -#: ../help/help.inc:218 -msgid "Windows domain of host." -msgstr "Domino de windows del host." - -#: ../lib/modules/sambaAccount.inc:279 ../lib/modules/sambaAccount.inc:763 -#: ../lib/modules/sambaSamAccount.inc:293 -#: ../lib/modules/sambaSamAccount.inc:742 -#: ../lib/modules/sambaSamAccount.inc:923 -#: ../lib/modules/sambaGroupMapping.inc:174 -#: ../lib/modules/sambaGroupMapping.inc:298 -msgid "Windows group" -msgstr "grupo de Windows" - -#: ../lib/modules/sambaAccount.inc:368 -msgid "Windows group RID" -msgstr "RID del grupo de Windows" - -#: ../lib/modules/sambaAccount.inc:365 ../help/help.inc:225 -msgid "Windows group name" -msgstr "Nombre del grupo de Windows" - -#: ../lib/modules/sambaGroupMapping.inc:284 -msgid "Windows group type." -msgstr "Tipo de grupo de Windows." - -#: ../lib/modules/sambaGroupMapping.inc:271 -msgid "Windows groupname" -msgstr "NombreDeGrupo de Windows" - -#: ../lib/modules/sambaSamAccount.inc:178 -msgid "Windows primary group SID" -msgstr "SID del grupo primario de Windows" - -#: ../lib/modules/sambaGroupMapping.inc:280 -msgid "Windows-Domain name of group." -msgstr "Nombre del grupo de Windows" - -#: ../help/help.inc:230 -msgid "Windows-Domain of group." -msgstr "Dominio de windows del grupo" - -#: ../help/help.inc:212 -msgid "Windows-Domain of user." -msgstr "Dominio de Windows del usuario." - -#: ../templates/login.php:331 -msgid "Wrong Password/Username combination. Try again." -msgstr "Combinación incorrecta de usuario/contraseña. Pruebe otra vez." - -#: ../templates/pdfedit/pdfdelete.php:89 -#: ../templates/profedit/profiledelete.php:118 -msgid "Wrong or missing type!" -msgstr "Tipo incorrecto o inexistente!" - -#: ../lib/modules.inc:618 -msgid "Wrong profilename given." -msgstr "Nombre del perfil especificado incorrecto." - -#: ../lib/modules/posixGroup.inc:408 ../lib/modules/posixAccount.inc:76 -#: ../lib/modules/posixAccount.inc:78 -msgid "" -"You are using a capital letters. This can cause problems because windows " -"isn't case-sensitive." -msgstr "Está usando letras mayúsculas. Esto puede causar problemas, ya que Windows no es sensitivo a mayúsculas." - -#: ../help/help.inc:177 -msgid "" -"You can select a previous defined profile here. This will set all fields to " -"the profile values." -msgstr "Aquí puede Ud. selecionar un perfil ya existente. Esto pondrá todos los campos a los valores del perfil." - -#: ../lib/modules/posixGroup.inc:399 ../lib/modules/posixAccount.inc:73 -msgid "You cannot use this password options at the same time." -msgstr "No puede usar esas opciones de contraseña a la vez." - -#: ../templates/logout.php:70 -msgid "You have been logged off from LDAP Account Manager." -msgstr "Ha sido Ud. desconectado de LDAP Account Manager." - -#: ../templates/login.php:201 -msgid "Your Language" -msgstr "Su Idioma" - -#: ../lib/modules/sambaAccount.inc:257 ../lib/modules/sambaSamAccount.inc:271 -msgid "\\\\server\\homes\\smiller" -msgstr "\\\\servidor\\directorio\\smiller" - -#: ../lib/modules/sambaAccount.inc:263 ../lib/modules/sambaSamAccount.inc:277 -msgid "\\\\server\\profiles\\smiller" -msgstr "\\\\servidor\\perfiles\\smiller" - -#: ../lib/modules/posixGroup.inc:289 -msgid "adminstrators" -msgstr "administradores" - -#: ../templates/config/confmodules.php:194 -#: ../templates/config/confmodules.php:222 -#: ../templates/config/confmodules.php:297 -#: ../templates/config/confmodules.php:325 -#: ../templates/config/confmodules.php:400 -#: ../templates/config/confmodules.php:428 -msgid "base module" -msgstr "módulo base" - -#: ../lib/modules/inetOrgPerson.inc:62 ../lib/modules/inetOrgPerson.inc:189 -#: ../lib/modules/inetOrgPerson.inc:259 ../lib/modules/inetOrgPerson.inc:260 -#: ../lib/modules/inetOrgPerson.inc:445 ../lib/modules/inetOrgPerson.inc:473 -msgid "eMail address" -msgstr "dirección de e-mail" - -#: ../lib/modules/posixAccount.inc:190 -msgid "group01,group02" -msgstr "group01,group02" - -#: ../lib/modules/quota.inc:120 ../lib/modules/quota.inc:122 -#: ../lib/modules/quota.inc:189 ../lib/modules/quota.inc:191 -msgid "hours" -msgstr "horas" - -#: ../help/help.inc:53 -msgid "" -"ldap://localhost:389 connects to localhost using a standard LDAP connection " -"on port 389" -msgstr "ldap://localhost:389 conecta a la misma maquina localhost, mediante una conexión LDAP estándard en el puerto 389." - -#: ../help/help.inc:55 -msgid "" -"ldaps://141.40.146.133 connects to 141.40.146.133 using an encrypted LDAP " -"connection." -msgstr "ldaps://141.40.146.133 conecta a 11.40.146.133 usando una conexión LDAP encriptada." - -#: ../lib/modules/posixAccount.inc:250 -msgid "machines" -msgstr "máquinas" - -#: ../lib/modules/sambaAccount.inc:295 ../lib/modules/sambaAccount.inc:305 -#: ../lib/modules/sambaSamAccount.inc:201 -#: ../lib/modules/sambaSamAccount.inc:319 -msgid "mydomain" -msgstr "midominio" - -#: ../help/help.inc:65 -msgid "" -"ou=People,dc=yourcompany,dc=com will read and store all accounts in this " -"subtree." -msgstr "ou=People,dc=suempresa,dc=com leerá y almacenará todas sus cuentas en ese subárbol." - -#: ../lib/modules/posixAccount.inc:236 -msgid "pc01$" -msgstr "pc01$" - -#: ../lib/modules/posixAccount.inc:257 -msgid "pc01,Room 2.34" -msgstr "pc01,Room 2.34" - -#: ../templates/config/confmain.php:431 -msgid "required" -msgstr "requerido" - -#: ../templates/config/confmain.php:433 -msgid "required for Samba 3 accounts" -msgstr "requerido para cuentas de Samba 3" - -#: ../templates/config/confmain.php:432 -msgid "required for Samba accounts" -msgstr "requerido para cuentas de Samba" - -#: ../templates/pdfedit/pdfpage.php:546 -msgid "right" -msgstr "derecha" - -#: ../lib/modules/posixGroup.inc:315 ../lib/modules/sambaAccount.inc:199 -#: ../lib/modules/sambaSamAccount.inc:213 ../lib/modules/posixAccount.inc:211 -msgid "secret" -msgstr "secreto" - -#: ../lib/modules/posixAccount.inc:169 -msgid "smiller" -msgstr "smiller" - -#: ../lib/modules/posixGroup.inc:309 -msgid "user01,user02,user03" -msgstr "user01,user02,user03" - -#: ../lib/modules/inetOrgPerson.inc:191 -msgid "user@company.com" -msgstr "usuario@empresa.com" - -#: ../lib/modules/posixAccount.inc:183 -msgid "users" -msgstr "usuarios" - diff --git a/lam/locale/fr_FR/LC_MESSAGES/messages.mo b/lam/locale/fr_FR/LC_MESSAGES/messages.mo deleted file mode 100644 index 91a30d9a754a55d00c52ba36b44ec0824115be8c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 91600 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�rpRD6ZI6mDW%HuTF*IvhT) zp>A!xNnBd0q&j_fqmp8o3^{4<*CqvAnLc9T-6XVk4N~%TH_4E;!^4_yCu``YQ&xue zn$x&n@3m^mT}ouay8fPft7Y|qYzBC^HEgLnIYSSLDWvs4)9)Xl5ZK#l*_`H&@RV6b}?jAd4e%suOr@+%o2`EW5^66ve%f#wbA zh4j-4L*Ar$I8Ip1Ge>$w4aNS8`RoCArD_ydYr!S?E*4%7Po;JVS3pw;xVjlb6D+zS zggXfgG?{>IR{l8CHM2<2u6t)5tSS%)7YFXP&L+#gF6QdfO<`hLm25%kuRPCGbLYU6 z{8-$u&fe;yDvgkx>!O??v8thR%BrtW7Vu*S|wgRX5)|lD_B_3H>psF#EfIJv)B( zJvZKL@9e=DkXAG|i^>m9&0ucqWiZlQ-TCujkBobT{WW{D(ru*oOF@BZ^)IyS61_uU zn7)@6Uj$TO3@Wji5+N?5m4><^H>!n6?E%P96K~LgRgkmO40UFZR)uA}z~XUj(O?Uz zRIs&7Pa$^|s(3vJO5Wfmy27=zN9PMJ8G3ZaMN_s)EVq(5?b2ow$#J>mJj(z;kbF-iNYvcLJb@$Qa!*fj{@%o2h|L(eb7b3N zFJM6F+bRN1Wg-P=m0_1nM1pc&y29zg#Vx~q>Bnq)5YgF+&$U$JeE%?o&T6pMzOdJ6 zeATgV7t+$H074NF1xQvExo5BqBLhz0&BSqR4R}R zsz(yAuVxmpyAd;`mkmUZfep8#TufKW}#TeAo+ z5Uje2(O5FcFNWJ|A-3M#jnAp-UHY2eM5hC=sS}b-QeYadcrffXU2A-XW|+O@hYod3 z5*VLNFts1((H)uJm$T`Oy-ksSd$Ui_Aur+jg{+JQ~$U-JQYssx{u18U{>4N zjq>A4igKJ6o|uX?te4}H+FpDtX{lM>{b(CD7*v-vj-;ZyEOd$9io0e@-J7ud!F`8M z%svzTVkfq~T9VJhyAOU>&jjnmKf3(vFAxhjS5*|9 z)-E}SZ>wExI3eG_jJm|m??`+ErMrS_Oau-q9ffIS=I;#GLy*3Vp0#n-4m0aOnVYojKqNHqiQS5i71wwG>Dfn(*cP_j+8IR5*)A23;!0Hq zzF$97kxPGdE5C}K2s`PvpH``e;oYE&RQx$apwHyTCc%s5A-A}tXLI}3?XCQO`eT-n zBpS1MMrMzx73OLO2!XIcQffpx9$4=OnR)^;C?``%4OPLUK^TJap)SJaOOu5x195~-+)Qm9A@b~fb!i6eRgnS#>rcVtA; zh>9_=ep#nG*OpjEx$WgDn*wv18lXx=+QvE;qGTn+ht%`6Z^XyjR?rGe2RMr5yRHv?sQU3YpLJ|1FTNM zWmz$RoDh{}=l0?RWZ`bdRQy%4kiA{xmA{k7$i8{78 z4E~Dc?s(wdO>o>P`GTAYxlrjTK_l3adj+Nw>9<4^-H!}Pa=+1^<17B{LfJyobWqOx zywr`iG#bx^fn|=m>|0R|EMNBPcU`w-MZ#%V(5g639NHOQcY!#KN-6XQdm2aZ92P8Zu zlp|yQ=aEUXeILX{#V^HP{r_5$7U~>*F1=;#lCxRnUX9JkMEj#3kYqM#85vD@bxcu8Q$?wOOq6{_L;UTjqdB(Q* z=FLeD(4-TM&eC!qQ|P+e-Ub5&6oqxz)quJ(6W*hBcK+J15=<%yQNHksZp=NcPqe4Z z10IMRB(Vhekkqmjrt4sp^0QnUcesX0p=$zivpY^l6Q^&U|A?~2D6AkZV1rGQaOAz? zNnO=~j+Zygah%OIIkvD=#ObWIV0mGzM(0yT&?`m?#cwHexPMC$dzV@Uhr^F57gzt4Q(BwU?LggMiR%jptZUtIpfC(%{ zXoO_Q_QVyDvhOYBFHi$-KHR*ygQM%_t)08~cJBRdXZzP!7_!eWY|`$&jU{AAhVNo1 z;ZDPB^s-FXG^@scNYgqiZFxlWWK@v@d)Usj`K7t2G$dgUm1PJNwULyK&72Gfmgou_ zU|X~IoF7#)Zc3rLsZS)#w${4Qaoin%z@i6EY3*)EA>mp>zffsdDrwecO`Gv~!bYS0 zUvWeV&&&bqd$i50`ILTz&**CD>{WL2se|0#&Cl`pt+3@3v^oWEj026R4G&Isu z4z%cCprE0lB&i7^#}CNlaFrUqS5=e`>y6_bViC2I{^a14`$-$#aR4I$X_QxVAVQK* zuR>|7@A{E%WcL(*h)V3?!cT$?)>rw3;8i9{!EHF^WNwFqpIrS(jeJ!KF}m*&=E=C| zs(-r!rd3$|)upk<>XUG4QMGpypT}kU6bXq0%n^ONbpm=F=tK1+!EkPrf*^N{(_*)j zmZX}-mu^<>Rku|{RYz8TY3J|{O+1AFZA?2IOCQ=5R^?m+wal8ZU=?%*9cBS@d4aSL zXbLV>u0QAA=@QxGPjts5FaFBo|6IuEkWbY zA_qN&r#&k0sEdn8>lK2>G4=rQKwaWsxbK9oi9oc5LaHzl;Hdu_p>)rxMnB54{5uPy z<$XcCy_C2t){OITZ9bW-5vlSeMr^Y8G5{n3!>{rHyiP(O{ALmpa7S0hdLJ|JLQHHz zLA5%`x5at9^HYF&jdfaEp!`->rWliEJo3ZcPoplk3^NcJwwkFZh$%NdKz}~msCZi{n+q$qN*$8)L$I=1t1eaCEPqN9Y!LhW*!Qlysl}AbiD~#>WbG3 zgJxjRqN)x!hHRqJTHdry=$sI3S6p==EIX_84(*9Pid2nG<6|0Y%$HLs!N4t9*@kCg zzADz(ssWgS=QtKMYE?!|hlkzz`A>gUW0>)b;bG=#^h)#XU;dipBsL;cD8Ldgvfpzm zx3=kk1mauUKm9d{NqkG-IMZeF9^;^5I)O~B1w4oAPU>fCOSG3C|R5+Qf; zn(hP&j-z5}WApLDwBSRO^1D$^7aq&|0X$8C&k+=cz-F{`z-CCiK_fS)n-RpmW)S^& zn*og+tprpUN7(cQCmF*!U|8QAvh*=G2N1v}<^kqAmpp;Wc#otOYziUd2H96Pp5u(t z9+l86`NO0Ff+s5m;4C3+|0F~7Zp2H{*wl~ij?z`oPtNzDR74svB>_ko&b-8sq|{Bw zP30+^@V40(jMOu`*>2DI9*3`I?ZaMgRxr#ASx)~4afHKj5sEK~3t}l0TMbY8#4RQ; zp9`5I6?V@>!ML(LIoz@bPdb?PEmem6s-5D9>dh0X$wG%pz|p)VWXQNB;p7Vma|%Ue zYjvx;gDpkxlppslSxbU|1YCLNM~Q3G4>7|ykWcr$FZHoeZ(z?;m)T`quzTs(TKb}T8tKdQ z12_(gm0U{~sec%|EPpSrEH7}=eus4xq^58i@f8vkq9zY?arg9v^n{R`Vsnu#;Bsk_ zwJ|Zx#)FAUs)6_t?IFaN3q=u4g3<^?(G=v4;cZH=<;^3OS6-pXW#fRS@0l|x1KxFE z_8828;9v7gY?2Gobj^0`zivX8&!H&o^1fpLz?V187ubE z<{%Qt#`vaezYxDTx#VRRc>>aj*%MMDlaunbk))K3%hU*(xj5XZB4;69C2u1Pjdq5Z@p2zY@`Cwn4|~6b zGI{azVbB$zm;Gq5=A8qB_@)H#_DPW2GGCY=V!p6B2b9q5;6ioi@(tWo^Wjq@N_$7X zWp6>}g{*-Vek7$bIp9Zvsx1XnucQJdc%e$R{i>HAbfIH8G2{3QZcxyG(mH$Co7uy~ zTzrU;`^}zQORH(s8HNrv$d-Yyw&}&00XP&ewats#TI3y@Yl&iO(Pq8S414Xi-QzTA zr=M$TP*TGp(m_b4S{8eK-HjMFR?Z7+$ldZ)e82l7B!^4ZFS8M6-F;4!zhuyfS3j!{ z_g|$n)NlKZ`{sq@li0r5WUOv#>z=Jr8DY=Lv{s&&=3Cbk%#1N53T%X2acZ{POkd>- z+YXl#-9dORy;?W8WU1*DMxM=)s;61I&j6FD#xP%9#R`Oh19&c7yv(&B!Z8@)cfX`H z^B(UR;q#~v8a8o6Jw*aFDH!Z46?5!T8#Y|XTJh{1*K)0PEs*T4EKyH!|CVn#;S#R? zsvY=He+w6s`*itiOI+=@cq|9S-d9!oFt$K1`wK)E0O01Xn{_vd*o2l?3NtUymuUG; z=t|gyxlvMrp~?w!FEJiD+T@ zWEQ@WW&P%O1f1S4Of$EC*@Jsgc+-O->G7lBwv}^jjv8bo40F?_hDB?MtKXM?*;8Gq zkO1!?wWKMRBBA;6cHqmXu?HubXzQ2FBoS|=V-ZA$lm|`X+VbhlQeGh!tP}UJ>*(GD zz_U0Y$BqAY=bCs=_aWQ~xrXoJI@jsTQ5awMR_rC~w$&iuqDMiIxvZzPpEjFhBhLz4 z0NzHUHMXU!l-qb|Y)FVLk(yb4)CZ4l7`mGLZ(s@&fcP;?92t$kS3(sf6^oIIvL1`b zE{60U6oxcJ9<%WwG))5pfy()$DVLg5c_ZZ)1TOTt0_|#yX4rr~XPQfUB~w6&tn*pw zA=RHeD)}fI1QD(o6t=bM9`E&Wx_|TA7S_8o!kR@yi*XS-O##HEua;#H5_T?-*D>4b zHeoz|{@Y>*azVV~_^^1840Z(mP6V7d@&-XR>0|hpJ!|+}cA*G>ef$NrO+ULhB8vk8 z)nG^_vn;642!3CJ9)mDgvP3M!4{~cv+0oR9A2gp#&x1mUNmbNP5JwpnI*S(_jv6TV z@7sQ473HS4XNOo>AvC&_Vz4>RA>)pL3oikzK$ddVe}x9HTw@=k9GPZ5dqQ$I1X(0M z*C^IS1g>w6Fw^X%!}OFWAwH)|L<9!^pyl11QCWfFke!?8oDwr)g-zM>^Fu;QsNtcD z>##FXY)hqNdEIpsFWL4S&x6JN*la~Iju>s7Z0M*?S4V>hzHo)!w`)UJQ^so!56yVu^5+%$8!u$gRE3hvSGA0d}PdsU}f0z|}AF6N&{ju%_{ z^3@!@eN?BU)8p+pr1JW|6oIT1(?86@Us^NH@XhvB}Tp=d-Ysv`wDz2D=8J2h|+=cVN_TxOK8m@(zmU z*FmgqZf_d*Z{C`P&tg^@uB3rKy*hmHh=BjIS-LSDtpAeS-JRRN{(Bsb_6vJ=Gm=fM z+D8JdfNaHfO`V4ZnCAO*GYKbTtJAZGlOuHd=iBq2-z0zIm-Fr0w=WxT>8p2*nvPVU zx@-+fNlMZ_!zUWla3)pJe^6(_7O&b(nHunP9K)Z`h@k0clumk4X#b4+haMfCkvOFD z`35AD5n})J8~x;;=<#?*K(r(lQurrk3UtxYmpGrjI=H$0k^kKME$LRs2)E|9e?B`` zV*Vok3gm`Rg)t@)A&1*D+c*zr1i^!JvjWP;70iC@gx;A1Z{Wax-HN|%&+^=4iT}q2 NaTMz~>EA47{{y&sRn-6h diff --git a/lam/locale/fr_FR/LC_MESSAGES/messages.po b/lam/locale/fr_FR/LC_MESSAGES/messages.po deleted file mode 100644 index 13e70621..00000000 --- a/lam/locale/fr_FR/LC_MESSAGES/messages.po +++ /dev/null @@ -1,4720 +0,0 @@ -# translation of messages.po to francais -# translation of messages.po to Française -# $Id: messages.po,v 1.1 2004/10/02 11:26:18 gruberroland Exp $ -# -# -# LDAP Account Manager -# Poirier , 2004. -# Emmanuel Seyman , 2004. -# poirier , 2004, 2005. -# -msgid "" -msgstr "" -"Project-Id-Version: messages\n" -"Report-Msgid-Bugs-To: post@rolandgruber.de \n" -"POT-Creation-Date: 2004-01-14 17:45+0200\n" -"PO-Revision-Date: 2005-05-30 09:33+0200\n" -"Last-Translator: poirier \n" -"Language-Team: francais \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: KBabel 1.0.2\n" - -#: ../lib/modules/posixAccount.inc:320 -msgid "$user and $group are replaced with username or primary groupname." -msgstr "$user et $group sont remplacés par le nom utilisateur ou groupe primaire." - -#: ../templates/lists/listdomains.php:145 -#: ../templates/lists/listdomains.php:195 -#, php-format -msgid "%s Samba domain(s) found" -msgstr "%s Domaine(s) Samba trouvé(s)" - -#: ../templates/lists/listgroups.php:148 ../templates/lists/listgroups.php:224 -#, php-format -msgid "%s group(s) found" -msgstr "%s Groupe(s) trouvés" - -#: ../templates/lists/listhosts.php:148 ../templates/lists/listhosts.php:208 -#, php-format -msgid "%s host(s) found" -msgstr "%s Machine(s) Samba trouvé(s)" - -#: ../templates/lists/listusers.php:179 ../templates/lists/listusers.php:254 -#, php-format -msgid "%s user(s) found" -msgstr "%s Utilisateur(s) trouvé(s)" - -#: ../templates/tree/templates/creation/custom.php:63 -msgid "(example: cn=MyNewPerson)" -msgstr "(exemple: cn=MaNvlePersonne)" - -#: ../templates/tree/templates/creation/new_ou_template.php:60 -msgid "(hint: do not include \"ou=\")" -msgstr "(Astuce: ne pas inclure \"ou=\")" - -#: ../templates/tree/add_attr_form.php:135 -msgid "(no new attributes available for this entry)" -msgstr "(pas de nouveaux attributs valides pour cette entrée)" - -#: ../templates/tree/add_attr_form.php:173 -msgid "(no new binary attributes available for this entry)" -msgstr "(pas de nouveaux attributs binaires pour cette entrée)" - -#: ../lib/modules/posixAccount.inc:199 -msgid "/home/smiller" -msgstr "/home/smiller" - -#: ../templates/massBuildAccounts.php:113 -msgid "A required column is missing in your CSV file." -msgstr "Une colonne obligatoire semble manquer dans le fichier CVS" - -#: ../templates/ou_edit.php:95 ../templates/ou_edit.php:160 -#: ../templates/ou_edit.php:225 ../templates/ou_edit.php:290 -#: ../templates/config/confmodules.php:104 -#: ../templates/config/confmain.php:485 ../templates/pdfedit/pdfdelete.php:82 -#: ../templates/pdfedit/pdfpage.php:834 ../templates/pdfedit/pdfmain.php:144 -#: ../templates/profedit/profiledelete.php:85 -#: ../templates/profedit/profilepage.php:164 -#: ../templates/profedit/profilemain.php:157 -msgid "Abort" -msgstr "Abandon" - -#: ../lib/modules/account.inc:35 -msgid "Account" -msgstr "Compte" - -#: ../templates/massBuildAccounts.php:164 ../lib/modules/ieee802device.inc:84 -#: ../lib/modules/posixGroup.inc:470 ../lib/modules/posixGroup.inc:474 -#: ../lib/modules/posixGroup.inc:475 ../lib/modules/sambaAccount.inc:48 -#: ../lib/modules/sambaAccount.inc:51 ../lib/modules/sambaAccount.inc:54 -#: ../lib/modules/sambaAccount.inc:56 ../lib/modules/sambaAccount.inc:58 -#: ../lib/modules/sambaAccount.inc:61 ../lib/modules/sambaAccount.inc:64 -#: ../lib/modules/sambaAccount.inc:65 ../lib/modules/sambaAccount.inc:66 -#: ../lib/modules/sambaAccount.inc:67 ../lib/modules/sambaAccount.inc:68 -#: ../lib/modules/sambaAccount.inc:69 ../lib/modules/sambaAccount.inc:70 -#: ../lib/modules/sambaAccount.inc:71 ../lib/modules/sambaAccount.inc:72 -#: ../lib/modules/sambaAccount.inc:73 ../lib/modules/sambaSamAccount.inc:46 -#: ../lib/modules/sambaSamAccount.inc:49 ../lib/modules/sambaSamAccount.inc:52 -#: ../lib/modules/sambaSamAccount.inc:54 ../lib/modules/sambaSamAccount.inc:57 -#: ../lib/modules/sambaSamAccount.inc:60 ../lib/modules/sambaSamAccount.inc:61 -#: ../lib/modules/sambaSamAccount.inc:62 ../lib/modules/sambaSamAccount.inc:63 -#: ../lib/modules/sambaSamAccount.inc:64 ../lib/modules/sambaSamAccount.inc:65 -#: ../lib/modules/sambaSamAccount.inc:66 ../lib/modules/sambaSamAccount.inc:67 -#: ../lib/modules/sambaSamAccount.inc:68 ../lib/modules/sambaSamAccount.inc:69 -#: ../lib/modules/sambaSamAccount.inc:70 ../lib/modules/sambaSamAccount.inc:71 -#: ../lib/modules/sambaSamAccount.inc:72 ../lib/modules/posixAccount.inc:66 -#: ../lib/modules/posixAccount.inc:70 ../lib/modules/posixAccount.inc:74 -#: ../lib/modules/posixAccount.inc:82 ../lib/modules/posixAccount.inc:83 -#: ../lib/modules/posixAccount.inc:84 ../lib/modules/posixAccount.inc:85 -#: ../lib/modules/posixAccount.inc:86 ../lib/modules/posixAccount.inc:87 -#: ../lib/modules/posixAccount.inc:88 ../lib/modules/sambaGroupMapping.inc:352 -#: ../lib/modules/sambaGroupMapping.inc:353 -#: ../lib/modules/shadowAccount.inc:40 ../lib/modules/shadowAccount.inc:42 -#: ../lib/modules/shadowAccount.inc:44 ../lib/modules/shadowAccount.inc:46 -#: ../lib/modules/shadowAccount.inc:48 ../lib/modules/shadowAccount.inc:49 -#: ../lib/modules/inetOrgPerson.inc:53 ../lib/modules/inetOrgPerson.inc:55 -#: ../lib/modules/inetOrgPerson.inc:57 ../lib/modules/inetOrgPerson.inc:59 -#: ../lib/modules/inetOrgPerson.inc:61 ../lib/modules/inetOrgPerson.inc:63 -#: ../lib/modules/inetOrgPerson.inc:65 ../lib/modules/inetOrgPerson.inc:67 -#: ../lib/modules/inetOrgPerson.inc:69 ../lib/modules/inetOrgPerson.inc:71 -#: ../lib/modules/inetOrgPerson.inc:73 ../lib/modules/inetOrgPerson.inc:74 -#: ../lib/modules/inetLocalMailRecipient.inc:120 -#: ../lib/modules/inetLocalMailRecipient.inc:122 -#: ../lib/modules/inetLocalMailRecipient.inc:124 -#: ../lib/modules/nisMailAlias.inc:99 ../lib/modules/nisMailAlias.inc:101 -#, php-format -msgid "Account %s:" -msgstr "Compte %s" - -#: ../templates/masscreate.php:78 -msgid "Account creation via file upload" -msgstr "Création de Compte par upload fichier" - -#: ../lib/modules/shadowAccount.inc:163 -msgid "Account expiration date. Format: DD-MM-YYYY" -msgstr "Date expiration du compte. Format: JJ-MM-AAAA" - -#: ../help/help.inc:181 -msgid "Account expire date. Format: DD-MM-YYYY" -msgstr "Date d'expiration du compte. Format: JJ-MM-AAAA" - -#: ../lib/modules/shadowAccount.inc:340 -msgid "Account inactive" -msgstr "Compte inactif" - -#: ../lib/modules/sambaAccount.inc:116 ../lib/modules/sambaAccount.inc:234 -#: ../lib/modules/sambaAccount.inc:343 ../lib/modules/sambaAccount.inc:346 -#: ../lib/modules/sambaAccount.inc:704 ../lib/modules/sambaSamAccount.inc:158 -#: ../lib/modules/sambaSamAccount.inc:161 -#: ../lib/modules/sambaSamAccount.inc:250 -#: ../lib/modules/sambaSamAccount.inc:690 -#: ../lib/modules/sambaSamAccount.inc:843 ../help/help.inc:206 -msgid "Account is deactivated" -msgstr "Le compte est desactivé" - -#: ../help/help.inc:130 -msgid "Account lists - Filters" -msgstr "Liste de Logins - Filtres" - -#: ../templates/config/confmain.php:252 ../help/help.inc:112 -msgid "Account modules" -msgstr "Modules du Compte " - -#: ../templates/delete.php:85 -msgid "Account name:" -msgstr "Nom de Compte" - -#: ../lib/modules.inc:940 -msgid "Account was created successfully." -msgstr "Compte créé avec succès." - -#: ../lib/modules.inc:943 -msgid "Account was modified successfully." -msgstr "Compte modifié avec succès." - -#: ../templates/tree/add_value_form.php:156 -#: ../templates/tree/add_value_form.php:181 -#: ../templates/tree/add_oclass_form.php:137 -#: ../templates/tree/add_attr_form.php:129 -#: ../templates/tree/add_attr_form.php:161 -#: ../templates/pdfedit/pdfpage.php:725 ../lib/modules/ieee802device.inc:153 -#: ../lib/modules/inetLocalMailRecipient.inc:215 -#: ../lib/modules/nisMailAlias.inc:181 -msgid "Add" -msgstr "Ajout" - -#: ../templates/pdfedit/pdfpage.php:713 -msgid "Add after" -msgstr "Ajout après" - -#: ../templates/tree/edit.php:123 ../templates/tree/add_value_form.php:94 -#: ../templates/tree/add_attr_form.php:71 -#: ../templates/tree/add_attr_form.php:108 -#, php-format -msgid "Add new attribute" -msgstr "Ajout nouvel Attribut" - -#: ../templates/tree/add_attr_form.php:141 -msgid "Add new binary attribute" -msgstr "Ajout nouveau attribut binaire" - -#: ../templates/config/profmanage.php:172 ../help/help.inc:114 -msgid "Add profile" -msgstr "Ajouter un profil" - -#: ../templates/pdfedit/pdfpage.php:699 -msgid "Add section or static text" -msgstr "Ajout section ou texte statique" - -#: ../templates/tree/add_value.php:93 -msgid "Adding attribute failed!" -msgstr "Ajout attribut échoué!" - -#: ../lib/modules/posixAccount.inc:191 ../lib/modules/posixAccount.inc:336 -#: ../lib/modules/posixAccount.inc:856 ../lib/modules/posixAccount.inc:944 -#: ../lib/modules/posixAccount.inc:1008 ../lib/modules/posixAccount.inc:1085 -#: ../help/help.inc:148 -msgid "Additional groups" -msgstr "Groupes supplémentaires" - -#: ../templates/massDoUpload.php:98 -msgid "Additional tasks for module:" -msgstr "Tâches additionnelles pour module" - -#: ../lib/modules/sambaSamAccount.inc:545 -#: ../lib/modules/sambaSamAccount.inc:748 -#: ../lib/modules/sambaSamAccount.inc:751 -msgid "Administrator" -msgstr "Administrateur" - -#: ../lib/modules/posixGroup.inc:366 -msgid "Administrators group" -msgstr "Groupe administrateur" - -#: ../templates/domain.php:171 ../help/help.inc:259 -msgid "Algorithmic RID Base" -msgstr "Base Algorithmique du RID" - -#: ../templates/domain.php:287 -msgid "Algorithmic RID base is not a number!" -msgstr "La base algorithmique du RID n'est pas un nombre !" - -#: ../lib/modules/nisMailAlias.inc:60 ../lib/modules/nisMailAlias.inc:75 -#: ../lib/modules/nisMailAlias.inc:166 ../lib/modules/nisMailAlias.inc:305 -msgid "Alias name" -msgstr "Nom d' Alias" - -#: ../templates/schema/schema.php:232 -msgid "Aliases" -msgstr "Aliases" - -#: ../templates/initsuff.php:155 -msgid "All changes were successful." -msgstr "Toutes les modifications ont été faites." - -#: ../lib/lists.inc:306 -msgid "Allowed hosts" -msgstr "Machines autorisés" - -#: ../lib/modules/sambaAccount.inc:810 ../lib/modules/sambaAccount.inc:811 -#: ../lib/modules/sambaSamAccount.inc:798 -#: ../lib/modules/sambaSamAccount.inc:799 -msgid "Allowed workstations" -msgstr "Stations autorisées" - -#: ../templates/tree/edit.php:135 -#, php-format -msgid "An attribute (%s) was modified and is highlighted below." -msgstr "Un attribut (%s) a été modifié ci dessous en surbrillance" - -#: ../templates/lists/listusers.php:274 -msgid "Apply" -msgstr "Appliquer" - -#: ../templates/tree/delete_form.php:148 -msgid "Are you sure you want to permanently delete this object?" -msgstr "Voulez vous vraiment effacer cet objet définitivement ?" - -#: ../templates/tree/update_confirm.php:148 -msgid "Attribute" -msgstr "Attribut" - -#: ../templates/schema/schema.php:75 ../templates/schema/schema.php:76 -msgid "Attribute types" -msgstr "Type Attributs" - -#: ../templates/config/confmain.php:323 ../lib/config.inc:364 -msgid "Attributes in Group List" -msgstr "Attributs dans la liste Groupes" - -#: ../templates/config/confmain.php:333 ../lib/config.inc:365 -msgid "Attributes in Host List" -msgstr "Attributs dans la liste Machines" - -#: ../templates/config/confmain.php:313 ../lib/config.inc:363 -msgid "Attributes in User List" -msgstr "Attributs dans la liste Utilisateurs" - -#: ../templates/pdfedit/pdfpage.php:852 -msgid "Available PDF fields" -msgstr "Champs PDF disponibles" - -#: ../lib/modules/posixAccount.inc:956 -msgid "Available groups" -msgstr "Groupes disponibles" - -#: ../templates/config/confmodules.php:197 -msgid "Available modules" -msgstr "Modules disponibles" - -#: ../lib/modules/posixGroup.inc:238 -msgid "Available users" -msgstr "Utilisateurs disponibles" - -#: ../lib/modules/sambaAccount.inc:816 ../lib/modules/sambaSamAccount.inc:804 -msgid "Available workstations" -msgstr "Stations disponibles" - -#: ../templates/tree/update_confirm.php:251 ../lib/modules/posixGroup.inc:244 -#: ../lib/modules/posixGroup.inc:268 ../lib/modules/sambaAccount.inc:820 -#: ../lib/modules/sambaSamAccount.inc:808 ../lib/modules/posixAccount.inc:962 -#: ../lib/modules/posixAccount.inc:988 -msgid "Back" -msgstr "Retour" - -#: ../templates/config/confsave.php:254 ../templates/config/conflogin.php:151 -#: ../templates/logout.php:71 -msgid "Back to Login" -msgstr "Retour vers Connection" - -#: ../templates/ou_edit.php:309 ../templates/ou_edit.php:313 -msgid "Back to OU-Editor" -msgstr "Retour à l'éditeur OU" - -#: ../templates/pdfedit/pdfdelete.php:61 ../templates/pdfedit/pdfdelete.php:69 -#: ../templates/pdfedit/pdfdelete.php:90 -msgid "Back to PDF Editor" -msgstr "Retour à l'éditeur PDF" - -#: ../templates/profedit/profilecreate.php:115 -#: ../templates/profedit/profiledelete.php:63 -#: ../templates/profedit/profiledelete.php:71 -#: ../templates/profedit/profiledelete.php:93 -msgid "Back to Profile Editor" -msgstr "Retour à l'éditeur de profils" - -#: ../lib/modules.inc:953 -msgid "Back to account list" -msgstr "Retour à la liste des comptes" - -#: ../templates/domain.php:325 ../templates/domain.php:352 -msgid "Back to domain list" -msgstr "Retour à la liste des domaines" - -#: ../templates/lists/userlink.php:65 -msgid "Back to group list" -msgstr "Retour à la liste des groupes" - -#: ../templates/delete.php:236 -msgid "Back to list" -msgstr "Retour vers liste" - -#: ../templates/config/confsave.php:93 ../templates/config/confsave.php:98 -#: ../templates/config/confsave.php:103 ../templates/config/confsave.php:108 -#: ../templates/config/confsave.php:113 ../templates/config/confsave.php:118 -#: ../templates/config/confsave.php:123 ../templates/config/confsave.php:128 -#: ../templates/config/confsave.php:133 ../templates/config/confsave.php:138 -#: ../templates/config/confsave.php:143 ../templates/config/confsave.php:148 -#: ../templates/config/confsave.php:154 ../templates/config/confsave.php:160 -#: ../templates/config/confsave.php:166 ../templates/config/confsave.php:172 -#: ../templates/config/confsave.php:178 ../templates/config/confsave.php:184 -#: ../templates/config/confsave.php:231 -msgid "Back to preferences..." -msgstr "Retour vers les préférences..." - -#: ../templates/config/profmanage.php:417 -msgid "Back to profile login" -msgstr "Retour vers le login de profil" - -#: ../templates/config/confmodules.php:108 ../help/help.inc:128 -msgid "Base module" -msgstr "Module base" - -#: ../templates/pdfedit/pdfpage.php:577 -msgid "Beginning" -msgstr "Début" - -#: ../templates/tree/edit.php:168 ../templates/tree/edit.php:297 -msgid "Binary value" -msgstr "Valeur binaire" - -#: ../lib/modules/quota.inc:31 -msgid "Block hard quota" -msgstr "Bloquer le quota dur" - -#: ../lib/modules/quota.inc:31 -msgid "" -"Block hard quota contains invalid characters. Only natural numbers are " -"allowed." -msgstr "" -"la section quota dur contient des caratères invalides. Seuls les nombres " -"naturels sont autorisés" - -#: ../lib/modules/quota.inc:34 -msgid "Block quota" -msgstr "Section quota" - -#: ../lib/modules/quota.inc:30 -msgid "Block soft quota" -msgstr "Bloquer le quota souple" - -#: ../lib/modules/quota.inc:30 -msgid "" -"Block soft quota contains invalid characters. Only natural numbers are " -"allowed." -msgstr "" -"la section quota souple contient des caratères invalides. Seuls les nombres " -"naturels sont autorisés" - -#: ../lib/modules/quota.inc:34 -msgid "Block soft quota must be smaller than block hard quota." -msgstr "le quota soft doit être plus petit que le quota dur" - -#: ../templates/pdfedit/pdfpage.php:524 -msgid "Bottom" -msgstr "Bas" - -#: ../lib/modules/sambaGroupMapping.inc:55 -msgid "Builtin Group" -msgstr "Groupes intrinsèques" - -#: ../templates/masscreate.php:127 -msgid "CSV file:" -msgstr "Fichier CVS:" - -#: ../templates/config/confmain.php:231 ../lib/config.inc:357 -#: ../help/help.inc:108 -msgid "Cache timeout" -msgstr "Timeout du cache" - -#: ../templates/config/confsave.php:97 -msgid "Cache timeout is invalid!" -msgstr "Le timeout du cache n'est pas valable !" - -#: ../lib/modules/posixGroup.inc:397 ../lib/modules/sambaAccount.inc:358 -#: ../lib/modules/sambaAccount.inc:361 ../lib/modules/sambaAccount.inc:364 -#: ../lib/modules/sambaAccount.inc:367 ../lib/modules/sambaAccount.inc:379 -#: ../lib/modules/sambaSamAccount.inc:173 -#: ../lib/modules/sambaSamAccount.inc:176 -#: ../lib/modules/sambaSamAccount.inc:179 -#: ../lib/modules/sambaSamAccount.inc:182 ../lib/modules/posixAccount.inc:337 -#: ../lib/modules/sambaGroupMapping.inc:282 -#: ../lib/modules/shadowAccount.inc:147 ../lib/modules/shadowAccount.inc:151 -#: ../lib/modules/shadowAccount.inc:155 ../lib/modules/shadowAccount.inc:159 -#: ../help/help.inc:149 ../help/help.inc:173 ../help/help.inc:175 -#: ../help/help.inc:177 ../help/help.inc:179 ../help/help.inc:211 -#: ../help/help.inc:213 ../help/help.inc:215 ../help/help.inc:217 -#: ../help/help.inc:219 ../help/help.inc:225 ../help/help.inc:235 -#: ../help/help.inc:237 ../help/help.inc:239 -msgid "Can be left empty." -msgstr "Champ vide autorisé." - -#: ../templates/tree/update_confirm.php:237 -#: ../templates/tree/delete_form.php:118 ../templates/tree/delete_form.php:167 -#: ../templates/domain.php:223 ../templates/domain.php:254 -#: ../templates/delete.php:104 ../templates/initsuff.php:188 -msgid "Cancel" -msgstr "Annuler" - -#: ../templates/login.php:356 ../templates/login.php:361 -msgid "Cannot connect to specified LDAP server. Please try again." -msgstr "Impossible de se connecter au serveur LDAP spécifié. Reéssayez SVP." - -#: ../lib/config.inc:348 ../lib/config.inc:883 -msgid "Cannot open config file!" -msgstr "Impossible d'ouvrir le fichier de configuration !" - -#: ../templates/pdfedit/pdfpage.php:605 ../templates/pdfedit/pdfpage.php:611 -msgid "Change" -msgstr "Changer" - -#: ../lib/modules/posixGroup.inc:188 -msgid "Change GID number of users and hosts" -msgstr "Changer le nombre GID des utilisateurs et machine" - -#: ../templates/config/profmanage.php:339 ../help/help.inc:122 -msgid "Change default profile" -msgstr "Changer le profil standard" - -#: ../templates/config/profmanage.php:364 ../help/help.inc:124 -msgid "Change master password" -msgstr "Changer le mot de passe Principal" - -#: ../lib/modules/posixGroup.inc:170 ../lib/modules/posixAccount.inc:884 -#: ../help/help.inc:106 -msgid "Change password" -msgstr "Changer le mot de passe" - -#: ../templates/login.php:292 -msgid "Change profile" -msgstr "Changer de profil" - -#: ../lib/lists.inc:356 -msgid "Change suffix" -msgstr "Changer suffixe" - -#: ../lib/baseModule.inc:538 -#, php-format -msgid "Changed value %s because only numeric values are allowed." -msgstr "Valeur %s changée car seul les valeurs numériques sont autorisées" - -#: ../lib/baseModule.inc:555 -msgid "Changed value because only ASCII characters are allowed." -msgstr "Valeur changée car seul les caractères ASCII sont autorisés" - -#: ../templates/tree/create_form.php:75 -msgid "Choose a template" -msgstr "Choisir un modèle" - -#: ../templates/tree/create.php:165 ../lib/config.inc:108 -msgid "Click here if you are not directed to the next page." -msgstr "Cliquer ici si vous n'etes pas dirigés vers la page suivante." - -#: ../templates/schema/schema.php:205 -msgid "Collective" -msgstr "Collectif" - -#: ../templates/masscreate.php:135 -msgid "Columns:" -msgstr "Colonnes:" - -#: ../lib/modules/sambaAccount.inc:367 ../lib/modules/sambaSamAccount.inc:182 -msgid "" -"Comma separated list of Samba workstations the user is allowed to login. " -"Empty means every workstation." -msgstr "" -"Liste séparée par des virgules des stations de travail samba sur lesquelles " -"l'utilisateur peut se connecter. Vide veut dire toute station de travail." - -#: ../help/help.inc:235 -msgid "Comma separated list of unix workstations the user is allowed to login." -msgstr "" -"La liste séparée par des virgules des stations sur lesquelles l'utilisateur " -"peut se connecter" - -#: ../templates/tree/update_confirm.php:230 -msgid "Commit" -msgstr "Valider" - -#: ../lib/modules/inetOrgPerson.inc:123 -msgid "Common name" -msgstr "Nom courant" - -#: ../templates/login.php:130 -msgid "Configuration login" -msgstr "Configuration du login" - -#: ../templates/login.php:274 -msgid "Configuration profile" -msgstr "Profil de configuration" - -#: ../help/help.inc:46 ../help/help.inc:48 ../help/help.inc:60 -#: ../help/help.inc:66 ../help/help.inc:72 ../help/help.inc:87 -#: ../help/help.inc:92 ../help/help.inc:94 ../help/help.inc:96 -#: ../help/help.inc:101 ../help/help.inc:106 ../help/help.inc:108 -#: ../help/help.inc:110 ../help/help.inc:112 ../help/help.inc:128 -msgid "Configuration wizard" -msgstr "Assistant de configuration" - -#: ../templates/config/confmodules.php:238 -msgid "Conflicting module:" -msgstr "Module en conflit" - -#: ../templates/tree/templates/creation/custom.php:66 -#: ../templates/tree/templates/creation/new_ou_template.php:105 -msgid "Container" -msgstr "Conteneur" - -#: ../templates/tree/templates/creation/new_ou_template.php:64 -msgid "Container DN" -msgstr "Conteneur DN" - -#: ../templates/tree/delete_attr.php:78 -msgid "Could not perform ldap_modify operation." -msgstr "Impossible d' aboutir à l' opération ldap_modify" - -#: ../templates/config/profmanage.php:99 -msgid "Could not rename file!" -msgstr "Impossible de renommer le fichier !" - -#: ../templates/tree/templates/creation/custom.php:234 -#: ../templates/tree/templates/creation/new_ou_template.php:107 -#: ../templates/initsuff.php:187 -msgid "Create" -msgstr "Créer" - -#: ../lib/modules.inc:993 -msgid "Create Account" -msgstr "Créer un compte" - -#: ../templates/tree/creation_template.php:84 -#: ../templates/tree/create_form.php:74 -msgid "Create Object" -msgstr "Créer un Objet" - -#: ../lib/modules.inc:952 -msgid "Create PDF file" -msgstr "Créer un fichier PDF" - -#: ../templates/lists/listgroups.php:249 -msgid "Create PDF for all groups" -msgstr "Créer un PDF pour tout les groupes" - -#: ../templates/lists/listhosts.php:234 -msgid "Create PDF for all hosts" -msgstr "Créer un PDF pour tout les machines" - -#: ../templates/lists/listusers.php:294 -msgid "Create PDF for all users" -msgstr "Créer un PDF pour tout les utilisateurs" - -#: ../templates/lists/listgroups.php:247 -msgid "Create PDF for selected group(s)" -msgstr "Créer un PDF pour le(s) groupe(s) séléctionné(s)" - -#: ../templates/lists/listhosts.php:232 -msgid "Create PDF for selected host(s)" -msgstr "Créer un PDF pour le(s) machines(s) séléctionnée(s)" - -#: ../templates/lists/listusers.php:292 -msgid "Create PDF for selected user(s)" -msgstr "Créer un PDF pour le(s) utilisateur(s) séléctionné(s)" - -#: ../templates/pdfedit/pdfmain.php:109 -msgid "Create a new PDF structure for scope: " -msgstr "Créer une nouvelle structure PDF" - -#: ../templates/profedit/profilemain.php:119 -msgid "Create a new profile" -msgstr "Créer un nouveau profil" - -#: ../lib/modules.inc:951 -msgid "Create another account" -msgstr "Créer un nouveau compte" - -#: ../templates/masscreate.php:99 -msgid "Create group accounts" -msgstr "Création groupes" - -#: ../lib/modules/posixAccount.inc:865 -msgid "Create home directory" -msgstr "Création répertoire home" - -#: ../templates/masscreate.php:102 -msgid "Create host accounts" -msgstr "Création machines" - -#: ../lib/modules.inc:855 -msgid "Create new Account" -msgstr "Créer un nouveau Compte" - -#: ../templates/tree/edit.php:121 ../templates/tree/tree.php:185 -#: ../templates/tree/tree.php:187 ../templates/tree/tree.php:188 -#: ../lib/tree.inc:66 ../lib/tree.inc:67 ../lib/tree.inc:129 -#: ../lib/tree.inc:131 ../lib/tree.inc:132 -msgid "Create new entry" -msgstr "Créer une nouvelle entrée" - -#: ../templates/masscreate.php:96 -msgid "Create user accounts" -msgstr "Création utilisateurs" - -#: ../templates/config/profmanage.php:84 -msgid "Created new profile." -msgstr "Nouveau profil créé." - -#: ../templates/tools.php:70 -msgid "Creates accounts by uploading a CSV formated file." -msgstr "Création de comptes par upload fichier CSV formatté" - -#: ../templates/tree/add_value_form.php:100 -msgid "Current list of values for attribute:" -msgstr "Liste des valeurs pour attribut:" - -#: ../templates/tree/templates/templates.inc:51 -msgid "Custom" -msgstr "Optimisation" - -#: ../templates/tree/edit.php:91 ../templates/tree/add_value_form.php:98 -#: ../templates/tree/add_oclass_form.php:117 -#: ../templates/tree/update_confirm.php:75 -#: ../templates/tree/add_attr_form.php:72 ../templates/tree/delete_form.php:76 -#: ../templates/tree/delete_form.php:150 ../templates/delete.php:86 -#: ../lib/modules.inc:1605 -msgid "DN" -msgstr "DN" - -#: ../templates/masscreate.php:138 -msgid "DN settings" -msgstr "Paramètres DN" - -#: ../templates/masscreate.php:142 ../help/help.inc:139 -msgid "DN suffix" -msgstr "Suffixe DN" - -#: ../templates/tree/templates/creation/custom.php:96 -#: ../templates/massBuildAccounts.php:164 -msgid "Data field for RDN is empty!" -msgstr "La valeur de RDN est vide!" - -#: ../lib/modules/sambaAccount.inc:350 ../lib/modules/sambaSamAccount.inc:165 -#: ../help/help.inc:203 -msgid "Date after the user is able to change his password. Format: DD-MM-YYYY" -msgstr "" -"Date après laquelle l'utilisateur sera capable de changer son mot de passe. " -"Format: DD-MM-AAAA" - -#: ../lib/modules/sambaAccount.inc:352 ../lib/modules/sambaSamAccount.inc:167 -#: ../help/help.inc:205 -msgid "Date after the user must change his password. Format: DD-MM-YYYY" -msgstr "" -"Date après laquelle l'utilisateur sera obligé de changer son mot de passe. " -"Format: DD-MM-AAAA" - -#: ../lib/modules/shadowAccount.inc:147 ../help/help.inc:173 -msgid "" -"Days before password is to expire that user is warned of pending password " -"expiration. If set value must be 0<." -msgstr "" -"Jours avant l'expiration du mot de passe que l'utilisateur en sera averti. " -"Si fixée, la valeur doit étre 0<." - -#: ../templates/config/confmain.php:371 ../lib/config.inc:367 -#: ../help/help.inc:94 -msgid "Default language" -msgstr "Langue par défaut" - -#: ../templates/masscreate.php:151 ../templates/masscreate.php:308 -msgid "Default value" -msgstr "Valeur par défaut" - -#: ../templates/tree/edit.php:113 ../templates/tree/delete_form.php:158 -#: ../templates/domain.php:253 ../templates/delete.php:103 -#: ../lib/tree.inc:1185 -msgid "Delete" -msgstr "effacer" - -#: ../templates/tree/delete_form.php:75 -#, php-format -msgid "Delete %s" -msgstr "Effacer %s" - -#: ../templates/delete.php:71 ../templates/delete.php:120 -msgid "Delete Account" -msgstr "effacer le compte" - -#: ../templates/lists/listdomains.php:209 -msgid "Delete Domain(s)" -msgstr "effacer le(s) Domaine(s)" - -#: ../templates/lists/listgroups.php:238 -msgid "Delete Group(s)" -msgstr "effacer le(s) Groupe(s)" - -#: ../templates/lists/listhosts.php:223 -msgid "Delete Host(s)" -msgstr "effacer le(s) Machine(s)" - -#: ../templates/pdfedit/pdfdelete.php:48 ../templates/pdfedit/pdfmain.php:133 -msgid "Delete PDF structure" -msgstr "Effacer la structure PDF" - -#: ../templates/tree/delete_form.php:110 -#, php-format -msgid "Delete all %s objects" -msgstr "Effacer tout %s Objets" - -#: ../templates/domain.php:244 -msgid "Delete domain(s)" -msgstr "effacer le(s) Domaine(s)" - -#: ../lib/modules/posixAccount.inc:913 -msgid "Delete home directory" -msgstr "Effacer le répertoire home" - -#: ../templates/pdfedit/pdfdelete.php:68 -#: ../templates/profedit/profiledelete.php:70 -msgid "Delete operation canceled." -msgstr "Opération de suppresion annulée." - -#: ../templates/ou_edit.php:354 ../templates/ou_edit.php:391 -#: ../templates/ou_edit.php:428 ../templates/ou_edit.php:465 -#: ../help/help.inc:245 -msgid "Delete organizational unit" -msgstr "effacer une unité organisationnelle" - -#: ../templates/config/profmanage.php:258 -#: ../templates/profedit/profiledelete.php:52 -#: ../templates/profedit/profilemain.php:145 ../help/help.inc:118 -msgid "Delete profile" -msgstr "effacer un profil" - -#: ../templates/lists/listusers.php:283 -msgid "Delete user(s)" -msgstr "effacer le(s) utilisateur(s)" - -#: ../lib/modules/sambaGroupMapping.inc:56 -msgid "Deleted Account" -msgstr "Compte effacé" - -#: ../templates/delete.php:225 -#, php-format -msgid "Deleted DN: %s" -msgstr "DN effacé: %s" - -#: ../templates/pdfedit/pdfdelete.php:59 -msgid "Deleted PDF structure:" -msgstr "Structure PDF effacée" - -#: ../templates/profedit/profiledelete.php:62 -msgid "Deleted profile:" -msgstr "effacer le profil:" - -#: ../templates/tree/rdelete.php:70 ../templates/tree/rdelete.php:132 -#: ../templates/tree/rdelete.php:144 -#, php-format -msgid "Deleting %s" -msgstr "Suppression %s" - -#: ../templates/delete.php:127 -msgid "Deleting. Please stand by ..." -msgstr "Effacement.Attendez SVP..." - -#: ../templates/tree/add_value_form.php:185 ../templates/schema/schema.php:95 -#: ../templates/schema/schema.php:149 ../templates/schema/schema.php:352 -#: ../lib/modules/account.inc:73 ../lib/modules/account.inc:149 -#: ../lib/modules/account.inc:166 ../lib/modules/posixGroup.inc:148 -#: ../lib/modules/posixGroup.inc:392 ../lib/modules/posixGroup.inc:434 -#: ../lib/modules/sambaAccount.inc:841 ../lib/modules/sambaSamAccount.inc:959 -#: ../lib/modules/posixAccount.inc:270 -#: ../lib/modules/sambaGroupMapping.inc:303 -#: ../lib/modules/shadowAccount.inc:342 ../lib/modules/inetOrgPerson.inc:143 -#: ../lib/modules/inetOrgPerson.inc:392 ../lib/modules/inetOrgPerson.inc:460 -#: ../lib/lists.inc:312 -msgid "Description" -msgstr "Description" - -#: ../lib/modules/sambaAccount.inc:198 ../lib/modules/sambaAccount.inc:319 -#: ../lib/modules/sambaAccount.inc:833 ../lib/modules/sambaSamAccount.inc:134 -#: ../lib/modules/sambaSamAccount.inc:214 -#: ../lib/modules/sambaSamAccount.inc:951 -#: ../lib/modules/sambaGroupMapping.inc:159 -#: ../lib/modules/sambaGroupMapping.inc:269 -#: ../lib/modules/sambaGroupMapping.inc:301 ../help/help.inc:184 -msgid "Display name" -msgstr "Nom pour l'affichage" - -#: ../lib/modules.inc:470 -msgid "" -"Displayed account numbers start at \"0\". Add 2 to get the row in your " -"spreadsheet." -msgstr "" -"Numéros de comptes affichés commencent à \"0\".Ajoute 2 pour obtenir la " -"ligne dans le tableur" - -#: ../templates/domain.php:245 -msgid "Do you really want to delete domain(s):" -msgstr "Voulez vous vraiment effacer le(s) domaine(s) ?" - -#: ../templates/ou_edit.php:87 ../templates/ou_edit.php:152 -#: ../templates/ou_edit.php:217 ../templates/ou_edit.php:282 -msgid "Do you really want to delete this OU?" -msgstr "Voulez vous vraiment effacer cette OU ?" - -#: ../templates/pdfedit/pdfdelete.php:77 -msgid "Do you really want to delete this PDF structure?" -msgstr "Veux-tu vraiment effacer cette structure PDF ?" - -#: ../templates/profedit/profiledelete.php:80 -msgid "Do you really want to delete this profile?" -msgstr "Voulez vous vraiment effacer ce profil ?" - -#: ../templates/delete.php:80 -msgid "Do you really want to remove the following accounts?" -msgstr "Veux-tu vraiment effacer le(s) compte(s) suivants ?" - -#: ../templates/tree/update_confirm.php:142 -msgid "Do you want to make these changes?" -msgstr "Voulez vous vraiment effectuer les changements ?" - -#: ../lib/modules/sambaAccount.inc:155 ../lib/modules/sambaAccount.inc:300 -#: ../lib/modules/sambaAccount.inc:310 ../lib/modules/sambaAccount.inc:378 -#: ../lib/modules/sambaAccount.inc:775 ../lib/modules/sambaAccount.inc:784 -#: ../lib/modules/sambaAccount.inc:840 ../lib/modules/sambaSamAccount.inc:194 -#: ../lib/modules/sambaSamAccount.inc:207 -#: ../lib/modules/sambaSamAccount.inc:326 -#: ../lib/modules/sambaSamAccount.inc:763 -#: ../lib/modules/sambaSamAccount.inc:771 -#: ../lib/modules/sambaSamAccount.inc:886 -#: ../lib/modules/sambaSamAccount.inc:899 -#: ../lib/modules/sambaSamAccount.inc:958 -#: ../lib/modules/sambaGroupMapping.inc:53 -#: ../lib/modules/sambaGroupMapping.inc:187 -#: ../lib/modules/sambaGroupMapping.inc:281 -#: ../lib/modules/sambaGroupMapping.inc:323 ../help/help.inc:218 -#: ../help/help.inc:236 -msgid "Domain" -msgstr "Domaine" - -#: ../lib/modules/sambaAccount.inc:33 ../lib/modules/sambaAccount.inc:295 -#: ../lib/modules/sambaSamAccount.inc:33 -#: ../lib/modules/sambaGroupMapping.inc:40 -#: ../lib/modules/sambaGroupMapping.inc:254 -msgid "Domain Admins" -msgstr "Administrateurs du Domaine" - -#: ../lib/modules/sambaAccount.inc:35 ../lib/modules/sambaSamAccount.inc:34 -#: ../lib/modules/sambaGroupMapping.inc:45 -msgid "Domain Certificate Admins" -msgstr "Certificats Administrateurs du Domaine" - -#: ../lib/modules/sambaAccount.inc:34 ../lib/modules/sambaAccount.inc:519 -#: ../lib/modules/sambaSamAccount.inc:34 -#: ../lib/modules/sambaSamAccount.inc:484 -#: ../lib/modules/sambaGroupMapping.inc:43 -msgid "Domain Computers" -msgstr "Ordinateurs du Domaine" - -#: ../lib/modules/sambaAccount.inc:35 ../lib/modules/sambaSamAccount.inc:34 -#: ../lib/modules/sambaGroupMapping.inc:44 -msgid "Domain Controllers" -msgstr "Controleurs du Domaine" - -#: ../lib/modules/sambaAccount.inc:36 ../lib/modules/sambaSamAccount.inc:35 -#: ../lib/modules/sambaGroupMapping.inc:47 -msgid "Domain Enterprise Admins" -msgstr "Administrateurs domaine de la société" - -#: ../lib/modules/sambaGroupMapping.inc:52 -#: ../lib/modules/sambaGroupMapping.inc:179 -msgid "Domain Group" -msgstr "Groupes du Domaine" - -#: ../lib/modules/sambaAccount.inc:34 ../lib/modules/sambaSamAccount.inc:33 -#: ../lib/modules/sambaGroupMapping.inc:42 -msgid "Domain Guests" -msgstr "Invités du Domaine" - -#: ../lib/modules/sambaAccount.inc:37 ../lib/modules/sambaSamAccount.inc:35 -#: ../lib/modules/sambaGroupMapping.inc:48 -msgid "Domain Policy Admins" -msgstr "Administrateurs de stratégies du Domaine" - -#: ../templates/lists/listdomains.php:100 ../templates/domain.php:109 -#: ../help/help.inc:251 -msgid "Domain SID" -msgstr "SID du Domaine" - -#: ../lib/modules/sambaAccount.inc:36 ../lib/modules/sambaSamAccount.inc:35 -#: ../lib/modules/sambaGroupMapping.inc:46 -msgid "Domain Schema Admins" -msgstr "Administrateur de Schema de Domaine" - -#: ../templates/domain.php:83 -msgid "Domain Settings" -msgstr "Paramètres du Domaine" - -#: ../lib/modules/sambaAccount.inc:33 ../lib/modules/sambaSamAccount.inc:33 -#: ../lib/modules/sambaSamAccount.inc:1202 -#: ../lib/modules/sambaGroupMapping.inc:41 -msgid "Domain Users" -msgstr "Utilisateurs du Domaine" - -#: ../lib/modules/sambaGroupMapping.inc:248 -msgid "Domain administrators" -msgstr "Administrateurs domaine" - -#: ../templates/domain.php:348 -msgid "Domain deleted successfully." -msgstr "OU éffacée avec succes." - -#: ../templates/domain.php:304 -msgid "Domain has been modified." -msgstr "Le Domaine a été modifié" - -#: ../templates/lists/listdomains.php:99 ../templates/domain.php:88 -#: ../lib/modules/sambaAccount.inc:57 ../help/help.inc:247 -msgid "Domain name" -msgstr "Nom du Domaine" - -#: ../lib/modules/sambaAccount.inc:57 ../lib/modules/sambaAccount.inc:58 -msgid "" -"Domain name contains invalid characters. Valid characters are: a-z, A-Z, 0-9 " -"and -." -msgstr "" -"Le nom de domaine contient des caractères non autorisés. Les caractères " -"valides sont a-z, A-Z, 0-9 et -." - -#: ../templates/domain.php:277 -msgid "Domain name is invalid!" -msgstr "Le nom de domaine n'est pas valable !" - -#: ../templates/config/confmain.php:207 ../lib/config.inc:361 -msgid "DomainSuffix" -msgstr "Suffixe de domaine" - -#: ../templates/config/confsave.php:122 -msgid "DomainSuffix is invalid!" -msgstr "Le suffixe de domaine n'est pas valable !" - -#: ../templates/ou_edit.php:447 -msgid "Domains" -msgstr "Domaines" - -#: ../templates/pdfedit/pdfpage.php:581 -msgid "Down" -msgstr "Descendre" - -#: ../templates/masscreate.php:263 -msgid "Download sample CSV file" -msgstr "Télécharger un exemple de fichier CSV" - -#: ../lib/modules/sambaAccount.inc:355 ../lib/modules/sambaSamAccount.inc:170 -msgid "Drive letter assigned on windows workstations as homedirectory." -msgstr "" -"Lettre de lecteur attribuée comme répertoire home utilisateur sur les " -"stations Windows." - -#: ../help/help.inc:209 -msgid "Driveletter assigned on windows workstations as homedirectory." -msgstr "" -"Lettre de lecteur attribuée comme répertoire utilisateur sur les stations " -"Windows." - -#: ../lib/lists.inc:311 -msgid "E-Mail" -msgstr "E-Mail" - -#: ../templates/lists/listhosts.php:175 ../templates/lists/listgroups.php:175 -#: ../templates/lists/listdomains.php:175 ../templates/lists/listusers.php:221 -msgid "Edit" -msgstr "éditer" - -#: ../templates/pdfedit/pdfmain.php:121 -msgid "Edit PDF structure" -msgstr "Editer la structure PDF" - -#: ../lib/modules/posixAccount.inc:857 -msgid "Edit groups" -msgstr "éditer les groupes" - -#: ../lib/modules/posixGroup.inc:153 -msgid "Edit members" -msgstr "éditer les membres" - -#: ../templates/config/confmain.php:260 -msgid "Edit modules" -msgstr "éditer les modules" - -#: ../templates/profedit/profilemain.php:132 -msgid "Edit profile" -msgstr "éditer le Profil" - -#: ../lib/modules/sambaAccount.inc:740 ../lib/modules/sambaSamAccount.inc:726 -msgid "Edit workstations" -msgstr "éditer les machines de travail" - -#: ../lib/modules/inetOrgPerson.inc:72 ../lib/modules/inetOrgPerson.inc:101 -#: ../lib/modules/inetOrgPerson.inc:155 ../lib/modules/inetOrgPerson.inc:239 -#: ../lib/modules/inetOrgPerson.inc:416 ../lib/modules/inetOrgPerson.inc:465 -msgid "Employee type" -msgstr "Type d'employé" - -#: ../lib/modules/inetOrgPerson.inc:240 -msgid "Employee type: Contractor, Employee, Intern, Temp, External, ..." -msgstr "Type employé: Contrat,Employé,Interne,Temporaire,Externe,..." - -#: ../templates/login.php:329 -msgid "Empty password submitted. Please try again." -msgstr "Mot de passe vide soumis. Réessayez SVP." - -#: ../templates/tree/download_binary_attr.php:70 -msgid "Encountered an error while performing search." -msgstr "Une erreur à été rencontrée lors de la recherche." - -#: ../templates/tree/add_value_form.php:136 -msgid "Enter the value you would like to add:" -msgstr "Entrez la valeur que vous souhaitez ajouter:" - -#: ../templates/tree/rdelete.php:114 -#, php-format -msgid "Entry %s and sub-tree deleted successfully." -msgstr "Entrée %s et sous-arbre effacée correctement." - -#: ../templates/tree/delete.php:103 -#, php-format -msgid "Entry %s deleted successfully." -msgstr "Entrée %s effacée avec succès." - -#: ../templates/schema/schema.php:172 -msgid "Equality" -msgstr "Egalité" - -#: ../templates/delete.php:230 -#, php-format -msgid "Error while deleting DN: %s" -msgstr "Erreur à l' effacement de DN: %s" - -#: ../help/help.inc:129 -msgid "" -"Every account type needs exactly one base module. This module provides a " -"structural object class." -msgstr "" -"Chaque type de compte a besoin exactement d' un module de base.Ce module a " -"une classe d' objet structurée" - -#: ../help/help.inc:69 ../help/help.inc:75 ../help/help.inc:90 -msgid "Example" -msgstr "Exemple" - -#: ../templates/masscreate.php:150 ../templates/masscreate.php:164 -#: ../templates/masscreate.php:304 -msgid "Example value" -msgstr "Valeur Exemple" - -#: ../help/help.inc:51 ../help/help.inc:63 -msgid "Examples" -msgstr "Exemples" - -#: ../help/help.inc:188 -msgid "Expand suffix with primary groupname" -msgstr "Suffix developpé avec le nom de Groupe primaire" - -#: ../lib/modules/shadowAccount.inc:93 ../lib/modules/shadowAccount.inc:162 -#: ../lib/modules/shadowAccount.inc:194 ../lib/modules/shadowAccount.inc:317 -msgid "Expiration date" -msgstr "Date expiration" - -#: ../help/help.inc:180 -msgid "Expire date" -msgstr "Date d'expiration" - -#: ../templates/domain.php:322 -msgid "Failed to add domain!" -msgstr "Echec de l'ajout de domaine !" - -#: ../templates/tree/add_attr.php:128 -msgid "Failed to add the attribute." -msgstr "Echec ajout attribut." - -#: ../templates/initsuff.php:149 -msgid "Failed to create entry!" -msgstr "Echec de la création d'entrée !" - -#: ../templates/tree/rdelete.php:117 ../templates/tree/rdelete.php:138 -#: ../templates/tree/rdelete.php:150 -#, php-format -msgid "Failed to delete entry %s" -msgstr "Echec effacement entrée %s " - -#: ../templates/domain.php:305 -msgid "Failed to modify domain!" -msgstr "Echec de modification du Domaine!" - -#: ../lib/modules/inetOrgPerson.inc:60 ../lib/modules/inetOrgPerson.inc:191 -#: ../lib/modules/inetOrgPerson.inc:263 ../lib/modules/inetOrgPerson.inc:264 -#: ../lib/modules/inetOrgPerson.inc:440 ../lib/modules/inetOrgPerson.inc:471 -msgid "Fax number" -msgstr "Numéro de fax" - -#: ../templates/tools.php:69 -msgid "File upload" -msgstr "Upload fichier" - -#: ../templates/tree/add_attr.php:91 -msgid "File upload failed!" -msgstr "Upload de fichier échoué!" - -#: ../lib/modules/sambaAccount.inc:364 ../lib/modules/sambaSamAccount.inc:179 -#: ../help/help.inc:211 -msgid "" -"Filename and -path relative to netlogon-share which should be executed on " -"logon. $user and $group are replaced with user- and groupname." -msgstr "" -"Nom de fichier et de chemin relatif au partage netlogon qui doit etre " -"exécuté au login. $user et $group sont remplacés avec les noms d'utilisateur " -"et de groupe." - -#: ../lib/lists.inc:217 -msgid "Filter" -msgstr "Filtre" - -#: ../lib/modules/inetOrgPerson.inc:52 ../lib/modules/inetOrgPerson.inc:130 -#: ../lib/modules/inetOrgPerson.inc:231 ../lib/modules/inetOrgPerson.inc:408 -#: ../lib/modules/inetOrgPerson.inc:463 ../lib/lists.inc:307 -#: ../help/help.inc:194 -msgid "First name" -msgstr "Prénom" - -#: ../lib/modules/inetOrgPerson.inc:52 ../lib/modules/inetOrgPerson.inc:53 -msgid "First name contains invalid characters!" -msgstr "Le nom de famille contient des caractères non valides!" - -#: ../lib/modules/inetOrgPerson.inc:232 ../help/help.inc:195 -msgid "First name of user. Only letters, - and spaces are allowed." -msgstr "Le nom de famille de l'utilisateur. lettres uniquement, espaces autorisés." - -#: ../lib/modules/posixGroup.inc:144 ../lib/modules/posixGroup.inc:358 -#: ../lib/modules/posixGroup.inc:388 ../lib/modules/posixGroup.inc:413 -#: ../lib/modules/posixGroup.inc:432 ../lib/modules/posixGroup.inc:463 -#: ../lib/modules/posixAccount.inc:41 ../lib/modules/posixAccount.inc:1082 -#: ../lib/modules/sambaGroupMapping.inc:299 ../lib/lists.inc:304 -#: ../lib/lists.inc:318 ../lib/lists.inc:331 ../help/help.inc:160 -msgid "GID number" -msgstr "Nombre GID" - -#: ../lib/modules/posixGroup.inc:463 -msgid "" -"GID number has changed. Please select checkbox to change GID number of users " -"and hosts." -msgstr "" -"Le nombre GID à changé.Veuillez SVP cocher pour changer le GID des " -"Utilisateurs et Machines" - -#: ../lib/modules/posixAccount.inc:41 -#, php-format -msgid "" -"GID number has changed. To keep file ownership you have to run the following " -"command as root: 'find / -gid %s -uid %s -exec chgrp %s {} \\;'" -msgstr "" -"Le numero GID a changé. Vous devez lancer les commandes suivantes en tant " -"que root afin de changer les droits fichiers existants : 'find / -gid %s -" -"uid %s -exec chgrp %s {} \\;'" - -#: ../lib/modules/posixGroup.inc:470 -msgid "GID number has to be a numeric value!" -msgstr "Le GID doit être une valeur numérique!" - -#: ../lib/modules/posixGroup.inc:314 -msgid "GID ranges for Unix groups" -msgstr "Rang GID pour groupes Unix" - -#: ../lib/modules/account.inc:48 ../lib/modules/posixAccount.inc:226 -#: ../lib/modules/posixAccount.inc:258 ../lib/modules/posixAccount.inc:311 -#: ../lib/modules/posixAccount.inc:346 ../lib/modules/posixAccount.inc:845 -#: ../lib/modules/posixAccount.inc:1083 ../lib/modules/inetOrgPerson.inc:223 -#: ../lib/modules/inetOrgPerson.inc:273 ../help/help.inc:152 -#: ../help/help.inc:162 ../help/help.inc:170 -msgid "Gecos" -msgstr "Gecos" - -#: ../lib/modules/posixGroup.inc:159 ../lib/modules/posixAccount.inc:873 -msgid "Generate password" -msgstr "Générer un mot de passe" - -#: ../templates/schema/schema.php:134 ../templates/schema/schema.php:271 -#: ../templates/schema/schema.php:302 ../templates/schema/schema.php:327 -msgid "Go" -msgstr "Aller" - -#: ../lib/modules/quota.inc:80 ../lib/modules/quota.inc:295 -msgid "Grace block period" -msgstr "Periode de grace d'un blocage" - -#: ../lib/modules/quota.inc:81 -msgid "Grace block period. Most filesystems use a fixed maximum value of 7 days." -msgstr "" -"Periode de grace d'un blocage. La plupart des systémes de fichiers utilisent " -"une valeur fixe de 7 jours." - -#: ../lib/modules/quota.inc:97 -msgid "" -"Grace inode (files) period. Most filesystems use a fixed maximum value of 7 " -"days." -msgstr "" -"Periode de grace inode (fichiers). La plupart des systèmes de fichiers " -"utilisent une valeur fixe de 7 jours." - -#: ../lib/modules/quota.inc:96 ../lib/modules/quota.inc:299 -msgid "Grace inode period" -msgstr "Période de grace inode" - -#: ../lib/modules/posixGroup.inc:364 ../lib/lists.inc:321 -msgid "Group description" -msgstr "Description de groupe" - -#: ../lib/modules/posixGroup.inc:393 ../help/help.inc:163 -msgid "Group description. If left empty group name will be used." -msgstr "Description de groupe. Si laissé vide, un nom vide sera utilisé." - -#: ../lib/pdf.inc:452 -msgid "Group information page" -msgstr "Page d'information de groupe" - -#: ../templates/config/confsave.php:137 -msgid "Group list attributes are invalid!" -msgstr "La liste des attributs de groupe est invalide !" - -#: ../lib/lists.inc:320 -msgid "Group member DNs" -msgstr "DNs du membre de groupe" - -#: ../lib/modules/posixGroup.inc:152 ../lib/modules/posixGroup.inc:226 -#: ../lib/modules/posixGroup.inc:370 ../lib/modules/posixGroup.inc:396 -#: ../lib/modules/posixGroup.inc:400 ../lib/modules/posixGroup.inc:433 -#: ../lib/lists.inc:319 ../help/help.inc:182 ../help/help.inc:238 -msgid "Group members" -msgstr "Membres de groupe" - -#: ../templates/config/confmodules.php:80 ../templates/config/confmain.php:257 -#: ../lib/config.inc:372 -msgid "Group modules" -msgstr "Modules de groupes" - -#: ../lib/modules/posixGroup.inc:350 ../lib/lists.inc:317 -msgid "Group name" -msgstr "Nom de groupe" - -#: ../lib/modules/posixGroup.inc:385 ../help/help.inc:159 -msgid "" -"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." -msgstr "" -"Nom de groupe du groupe qui devra etre créée. Les caractères valides sont : " -"a-z, 0-9 et .-_. Lam ne permet pas de mettre une lettre en premier caractère " -"parce que groupadd ne l'autorise pas non plus. Lam n'autorise pas non plus " -"lettres majuscules A-Z parce que cela pose plusieurs problèmes. Si un nom de " -"groupe est déjà utilisé, il sera developpé avec un nombre. Le prochain " -"nombre disponible sera utilsé" - -#: ../lib/modules/posixGroup.inc:376 ../lib/modules/posixGroup.inc:404 -msgid "Group password" -msgstr "Mot de passe de groupe" - -#: ../templates/profedit/profilemain.php:46 -msgid "Group profiles" -msgstr "Profils de Groupe" - -#: ../help/help.inc:190 -msgid "Group suffix" -msgstr "Suffixe de groupe" - -#: ../lib/modules/sambaGroupMapping.inc:184 -msgid "Group type" -msgstr "Type de groupe" - -#: ../templates/config/confmain.php:187 ../lib/config.inc:359 -msgid "GroupSuffix" -msgstr "Suffixe de Groupe" - -#: ../templates/config/confsave.php:112 -msgid "GroupSuffix is invalid!" -msgstr "Suffixe de Groupe est invalide !" - -#: ../lib/modules/posixGroup.inc:140 ../lib/modules/posixGroup.inc:384 -#: ../lib/modules/posixGroup.inc:431 ../lib/modules/posixGroup.inc:471 -#: ../lib/modules/posixGroup.inc:472 ../lib/modules/posixGroup.inc:473 -#: ../help/help.inc:158 -msgid "Groupname" -msgstr "Nom de groupe" - -#: ../lib/modules/posixGroup.inc:473 ../lib/modules/posixGroup.inc:474 -msgid "" -"Groupname contains invalid characters. Valid characters are: a-z, A-Z, 0-9 " -"and .-_ !" -msgstr "" -"Le nom de groupe contient des caractères invalables. Les caractères valables " -"sont: a-z, A-Z, 0-9 et .-_ !" - -#: ../lib/modules/posixGroup.inc:472 -msgid "Groupname in use. Selected next free groupname." -msgstr "Nom de groupe déjà utilisé. Sélectionner le groupe libre suivant." - -#: ../templates/ou_edit.php:373 ../templates/main_header.php:84 -#: ../help/help.inc:82 -msgid "Groups" -msgstr "Groupes" - -#: ../lib/modules/sambaSamAccount.inc:551 -#: ../lib/modules/sambaSamAccount.inc:753 -#: ../lib/modules/sambaSamAccount.inc:756 -msgid "Guest" -msgstr "Anonyme" - -#: ../lib/modules/quota.inc:422 -msgid "Hard block" -msgstr "Bloc dur" - -#: ../lib/modules/quota.inc:76 ../lib/modules/quota.inc:77 -#: ../lib/modules/quota.inc:294 ../lib/modules/quota.inc:351 -msgid "Hard block limit" -msgstr "Limite de bloc dur" - -#: ../lib/modules/quota.inc:422 -msgid "Hard inode" -msgstr "Inode dur" - -#: ../lib/modules/quota.inc:93 -msgid "Hard inode (files) limit" -msgstr "Limite d'inode (fichiers) dur" - -#: ../lib/modules/quota.inc:92 ../lib/modules/quota.inc:298 -#: ../lib/modules/quota.inc:353 -msgid "Hard inode limit" -msgstr "Limite d'inode dur" - -#: ../templates/pdfedit/pdfpage.php:495 -msgid "Headline" -msgstr "Début de ligne" - -#: ../templates/pdfedit/pdfpage.php:468 -msgid "Height" -msgstr "Taille" - -#: ../templates/ou_edit.php:349 ../templates/ou_edit.php:362 -#: ../templates/ou_edit.php:386 ../templates/ou_edit.php:399 -#: ../templates/ou_edit.php:423 ../templates/ou_edit.php:436 -#: ../templates/ou_edit.php:460 ../templates/ou_edit.php:473 -#: ../templates/domain.php:99 ../templates/domain.php:120 -#: ../templates/domain.php:136 ../templates/domain.php:149 -#: ../templates/domain.php:162 ../templates/domain.php:179 -#: ../templates/domain.php:202 ../templates/masscreate.php:145 -#: ../templates/masscreate.php:158 ../templates/masscreate.php:291 -#: ../templates/config/profmanage.php:183 -#: ../templates/config/profmanage.php:235 -#: ../templates/config/profmanage.php:265 -#: ../templates/config/profmanage.php:299 -#: ../templates/config/profmanage.php:347 -#: ../templates/config/profmanage.php:375 -#: ../templates/config/profmanage.php:408 -#: ../templates/config/confmodules.php:111 -#: ../templates/config/confmain.php:167 ../templates/config/confmain.php:181 -#: ../templates/config/confmain.php:191 ../templates/config/confmain.php:201 -#: ../templates/config/confmain.php:211 ../templates/config/confmain.php:221 -#: ../templates/config/confmain.php:243 ../templates/config/confmain.php:262 -#: ../templates/config/confmain.php:317 ../templates/config/confmain.php:327 -#: ../templates/config/confmain.php:337 ../templates/config/confmain.php:358 -#: ../templates/config/confmain.php:403 ../templates/config/confmain.php:422 -#: ../templates/config/confmain.php:431 ../templates/config/confmain.php:449 -#: ../templates/config/confmain.php:463 ../templates/config/conflogin.php:127 -#: ../templates/pdfedit/pdfpage.php:811 -#: ../templates/profedit/profilepage.php:106 -#: ../templates/profedit/profilepage.php:126 -#: ../templates/profedit/profilepage.php:157 ../lib/lists.inc:213 -#: ../lib/modules.inc:651 -msgid "Help" -msgstr "Aide" - -#: ../templates/tools.php:91 -msgid "Here you can browse LDAP object classes and attributes." -msgstr "Ici vous pouvez naviguer dans les classes et attributs d' objets LDAP" - -#: ../templates/masscreate.php:83 -msgid "Here you can create multiple accounts by providing a CSV file." -msgstr "Creation de comptes multiples à l' aide d' un fichier CSV" - -#: ../help/help.inc:131 -msgid "" -"Here you can input small filter expressions (e.g. 'value' or 'v*'). LAM will " -"filter case-insensitive." -msgstr "Mettre des expressions de filtres ici (ex: 'value' ou 'v*'). LAM filtrera." - -#: ../templates/tools.php:54 -msgid "Here you can manage your account profiles." -msgstr "Gérer ici le profil de compte" - -#: ../help/help.inc:113 -msgid "Here you can select which plugins you want to use for account management." -msgstr "Gérer ici les plugins à utiliser pour administrer le compte" - -#: ../templates/tree/edit.php:103 -msgid "Hide internal attributes" -msgstr "Cache les attributs internes" - -#: ../templates/tree/edit.php:117 -msgid "Hint: To delete an attribute, empty the text field and click save." -msgstr "Astuce: Pour effacer un attribut, vider le champ texte et cliquez sauvegarder" - -#: ../lib/modules/posixAccount.inc:337 ../help/help.inc:149 -msgid "Hold the CTRL-key to (de)select multiple groups." -msgstr "Maintenez enfoncée la touche Ctrl pour (dé)selectionner plusieurs groupes." - -#: ../lib/modules/posixAccount.inc:36 ../lib/modules/posixAccount.inc:64 -#: ../lib/modules/posixAccount.inc:65 ../lib/modules/posixAccount.inc:197 -#: ../lib/modules/posixAccount.inc:319 ../lib/modules/posixAccount.inc:709 -#: ../lib/modules/posixAccount.inc:860 ../lib/modules/posixAccount.inc:1013 -#: ../lib/modules/posixAccount.inc:1086 ../lib/lists.inc:309 -#: ../help/help.inc:150 -msgid "Home directory" -msgstr "Répertoire utilisateur" - -#: ../lib/modules/posixAccount.inc:36 -#, php-format -msgid "" -"Home directory changed. To keep home directory you have to run the following " -"command as root: 'mv %s %s'" -msgstr "" -"Le Répertoire home Utilisateur a changé. Vous devez lancer la commande " -"suivante en tant que root pour garder le répertoire utilisateur : 'mv %s %s'" - -#: ../lib/modules/sambaAccount.inc:124 ../lib/modules/sambaAccount.inc:256 -#: ../lib/modules/sambaAccount.inc:354 ../lib/modules/sambaAccount.inc:727 -#: ../lib/modules/sambaAccount.inc:836 ../lib/modules/sambaSamAccount.inc:169 -#: ../lib/modules/sambaSamAccount.inc:272 -#: ../lib/modules/sambaSamAccount.inc:713 -#: ../lib/modules/sambaSamAccount.inc:851 -#: ../lib/modules/sambaSamAccount.inc:954 ../help/help.inc:208 -msgid "Home drive" -msgstr "Lecteur Utilisateur" - -#: ../lib/modules/sambaAccount.inc:46 ../lib/modules/sambaAccount.inc:47 -#: ../lib/modules/sambaAccount.inc:130 ../lib/modules/sambaAccount.inc:262 -#: ../lib/modules/sambaAccount.inc:357 ../lib/modules/sambaAccount.inc:730 -#: ../lib/modules/sambaAccount.inc:835 ../lib/modules/sambaSamAccount.inc:44 -#: ../lib/modules/sambaSamAccount.inc:45 -#: ../lib/modules/sambaSamAccount.inc:172 -#: ../lib/modules/sambaSamAccount.inc:278 -#: ../lib/modules/sambaSamAccount.inc:716 -#: ../lib/modules/sambaSamAccount.inc:857 -#: ../lib/modules/sambaSamAccount.inc:953 ../help/help.inc:216 -msgid "Home path" -msgstr "Chemin utilisateur" - -#: ../lib/modules/sambaAccount.inc:46 ../lib/modules/sambaSamAccount.inc:44 -#: ../lib/modules/sambaSamAccount.inc:46 -msgid "Home path is invalid." -msgstr "Le chemin utilisateur n'est pas valable." - -#: ../lib/modules/posixAccount.inc:64 ../lib/modules/posixAccount.inc:66 -msgid "Homedirectory contains invalid characters." -msgstr "Le répertoire utilisateur contient des caractères non valables." - -#: ../lib/lists.inc:329 -msgid "Host description" -msgstr "Description Machine" - -#: ../lib/modules/account.inc:49 ../lib/modules/posixAccount.inc:347 -#: ../lib/modules/inetOrgPerson.inc:274 ../help/help.inc:171 -msgid "Host description. If left empty host name will be used." -msgstr "Description de machine. Si laissé vide, un nom vide sera utilisé." - -#: ../lib/modules/account.inc:58 -msgid "Host list" -msgstr "Liste de Machines" - -#: ../templates/config/confsave.php:142 -msgid "Host list attributes are invalid!" -msgstr "Les attributs de liste de machines ne sont pas valables !" - -#: ../templates/config/confmodules.php:81 ../templates/config/confmain.php:258 -#: ../lib/config.inc:373 -msgid "Host modules" -msgstr "Modules Machines" - -#: ../lib/modules/posixAccount.inc:237 ../lib/modules/posixAccount.inc:342 -#: ../lib/lists.inc:327 ../help/help.inc:164 -msgid "Host name" -msgstr "Nom de machine" - -#: ../lib/modules/posixAccount.inc:343 ../help/help.inc:165 -msgid "" -"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." -msgstr "" -"Nom de la machine qui doit étre créée. Les caractères valables sont: a-z, 0-" -"9 et .-_$. Lam ne peut pas autoriser les lettres majuscules A-Z parce que " -"cela peut créer plusieurs problèmes. Les noms de machines se terminent " -"toujours avec $. Si le dernier caractère n'est pas $, il sera rajouté. Si le " -"nom de machine est déjà utilisé, il sera developpé avec un chiffre. Le " -"chiffre disponible suivant sera utilisé." - -#: ../templates/profedit/profilemain.php:47 -msgid "Host profiles" -msgstr "Profils Machines" - -#: ../lib/lists.inc:326 -msgid "Host username" -msgstr "Nom d'utiliseur machine" - -#: ../templates/config/confmain.php:197 ../lib/config.inc:360 -msgid "HostSuffix" -msgstr "Suffix Machine" - -#: ../templates/config/confsave.php:117 -msgid "HostSuffix is invalid!" -msgstr "Suffix Machine n'est pas valable !" - -#: ../lib/modules/posixAccount.inc:78 ../lib/modules/posixAccount.inc:79 -#: ../lib/modules/posixAccount.inc:81 -msgid "Hostname" -msgstr "Nom de machine" - -#: ../lib/modules/posixAccount.inc:83 -msgid "" -"Hostname contains invalid characters. Valid characters are: a-z, A-Z, 0-9 " -"and .-_ !" -msgstr "" -"Le nom de machine contient des caractères non valables. Les caractères " -"valables sont: a-z, A-Z, 0-9 et .-_ !" - -#: ../lib/modules/posixAccount.inc:79 -msgid "" -"Hostname contains invalid characters. Valid characters are: a-z, A-Z, 0-9 " -"and .-_ ! Hostname must end with $ !" -msgstr "" -"Le nom de machine contient des caractères non valides. Les caractères " -"valides sont: a-z, A-Z, 0-9 et .-_ ! Le nom doit finir par $ !" - -#: ../lib/modules/posixAccount.inc:81 -msgid "Hostname in use. Selected next free hostname." -msgstr "Nom de machine déjà utilisé. Sélectionnez le nom libre suivant." - -#: ../templates/main_header.php:87 ../lib/modules/posixAccount.inc:59 -#: ../lib/modules/posixAccount.inc:60 ../lib/modules/posixAccount.inc:62 -#: ../lib/modules/posixAccount.inc:135 ../help/help.inc:85 -msgid "Hosts" -msgstr "Machines" - -#: ../lib/modules/posixGroup.inc:466 ../lib/modules/posixGroup.inc:581 -#: ../lib/modules/posixAccount.inc:69 ../lib/modules/posixAccount.inc:655 -msgid "ID is already in use" -msgstr "L'ID est déjà utilisé" - -#: ../lib/modules/posixGroup.inc:464 ../lib/modules/posixGroup.inc:465 -#: ../lib/modules/posixGroup.inc:466 ../lib/modules/posixGroup.inc:577 -#: ../lib/modules/posixGroup.inc:581 ../lib/modules/posixAccount.inc:67 -#: ../lib/modules/posixAccount.inc:68 ../lib/modules/posixAccount.inc:69 -#: ../lib/modules/posixAccount.inc:651 ../lib/modules/posixAccount.inc:655 -msgid "ID-Number" -msgstr "Numéro ID" - -#: ../templates/masscreate.php:149 ../templates/masscreate.php:162 -#: ../templates/masscreate.php:296 -msgid "Identifier" -msgstr "Identifieur" - -#: ../help/help.inc:191 -msgid "" -"If a not yet existing group is defined in csv-file, a new group in the " -"selected group suffix will be created." -msgstr "" -"Si un groupe qui n'existe pas encore est défini dans le fichier csv, un " -"nouveau groupe dans le suffixe groupe sera créé." - -#: ../help/help.inc:223 -msgid "" -"If a not yet existing group is defined in csv-file, a new group with the " -"selected group profile will be created." -msgstr "" -"Si un groupe qui n'existe pas encore est défini dans le fichier csv, " -"unnouveau groupe avec le profil groupe sélectionné sera créé." - -#: ../lib/modules/sambaAccount.inc:326 ../lib/modules/sambaSamAccount.inc:141 -msgid "If checked Unix password will also be used as Samba password." -msgstr "" -"Si selectionné, le mot de passe unix sera aussi utilisé comme mot de passe " -"samba." - -#: ../lib/modules/sambaAccount.inc:344 ../lib/modules/sambaSamAccount.inc:159 -#: ../help/help.inc:207 -msgid "If checked account will be deactivated. (Setting D-Flag)" -msgstr "Si sélectionné, le compte sera desactivé. (paramètre D-Flag)" - -#: ../lib/modules/posixGroup.inc:409 ../lib/modules/sambaAccount.inc:332 -#: ../lib/modules/sambaSamAccount.inc:147 ../lib/modules/posixAccount.inc:328 -#: ../help/help.inc:197 -msgid "If checked no password will be used." -msgstr "Si sélectionné, aucun mot de passe sera utilisé." - -#: ../lib/modules/sambaAccount.inc:338 ../lib/modules/sambaSamAccount.inc:153 -#: ../help/help.inc:201 -msgid "If checked password does not expire. (Setting X-Flag)" -msgstr "Si sélectionné, le mot de passe n'expirera pas (paramètre X-Flag)" - -#: ../help/help.inc:199 -msgid "If checked unix password will also be used as samba password." -msgstr "" -"Si sélectionné, le mot de passe unix sera aussi utilisé comme mot de passe " -"samba." - -#: ../lib/modules/posixGroup.inc:389 ../help/help.inc:161 -msgid "" -"If empty GID number will be generated automaticly depending on your " -"configuration settings." -msgstr "" -"Si vide, le numéro GID sera généré automatiquement. En fonction des " -"paramètres de Configuration" - -#: ../lib/modules/posixAccount.inc:303 ../help/help.inc:147 -#: ../help/help.inc:167 -msgid "If empty UID number will be generated automaticly." -msgstr "Si vide, le numéro UID sera généré automatiquement." - -#: ../help/help.inc:189 -msgid "" -"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." -msgstr "" -"Si sélectionné, les utilisateurs seront ajoutés avec les OUs développés avec " -"leurs groupes primaires. E.g. si un utilisateur est dans le groupe admin, " -"son suffixe utilisateur sera ou=admin,+ suffixe utilisateur." - -#: ../lib/modules/sambaAccount.inc:329 ../lib/modules/sambaSamAccount.inc:144 -msgid "If set to \"true\" Unix password will also be used as Samba password." -msgstr "Si Vrai, le mot de passe unix sera aussi utilisé comme mot de passe Samba." - -#: ../lib/modules/sambaAccount.inc:347 ../lib/modules/sambaSamAccount.inc:162 -msgid "If set to \"true\" account will be deactivated. (Setting D-Flag)" -msgstr "Si sélectionné à \"vrai\" , le compte sera desactivé. (paramètre D-Flag)" - -#: ../lib/modules/sambaAccount.inc:335 ../lib/modules/sambaSamAccount.inc:150 -msgid "If set to \"true\" no password will be used." -msgstr "Si sélectionné à \"vrai\" , aucun mot de passe sera utilisé." - -#: ../lib/modules/sambaAccount.inc:341 ../lib/modules/sambaSamAccount.inc:156 -msgid "If set to \"true\" password does not expire. (Setting X-Flag)" -msgstr "Si sélectionné à \"vrai\" , le mot de passe n'expirera pas (paramètre X-Flag)" - -#: ../lib/modules/sambaSamAccount.inc:189 -msgid "If you leave this empty LAM will use: uidNumber*2 + sambaAlgorithmicRidBase." -msgstr "Si vous laissez vide LAM utilisera: uidNumber*2 + sambaAlgorithmicRidBase" - -#: ../help/help.inc:107 -msgid "If you want to change the current preferences password, please enter it here." -msgstr "Si vous voulez changer le mot de passe actuel des préférences, entrez le ici." - -#: ../help/help.inc:125 -msgid "" -"If you want to change your master configuration password, please enter it " -"here." -msgstr "Si vous voulez changer le mot de passe principal actuel, entrez le ici." - -#: ../lib/modules/sambaAccount.inc:376 -msgid "" -"If you want to create domain administrators or other special users use this " -"option." -msgstr "" -"Si tu veux créer des administrateurs du domaine ou des utilisateurs spéciaux " -"utilises cette option." - -#: ../lib/modules/sambaAccount.inc:370 -#: ../lib/modules/sambaGroupMapping.inc:274 ../help/help.inc:233 -msgid "If you want to use a well known RID you can selcet a well known group." -msgstr "" -"Si vous voulez utiliser une RID connue, vous devrez sélectionner un groupe " -"connu." - -#: ../templates/schema/schema.php:402 ../templates/schema/schema.php:423 -msgid "Inherited from" -msgstr "Hérité de" - -#: ../templates/schema/schema.php:163 ../templates/schema/schema.php:359 -msgid "Inherits from" -msgstr "hérite de" - -#: ../lib/modules/quota.inc:33 -msgid "Inode hard quota" -msgstr "Quota dur d'inode" - -#: ../lib/modules/quota.inc:33 -msgid "" -"Inode hard quota contains invalid characters. Only natural numbers are " -"allowed." -msgstr "" -"Quota dur d'inode contient des caractères invalides. Seuls les nombres sont " -"autorisés" - -#: ../lib/modules/quota.inc:35 -msgid "Inode quota" -msgstr "Quota inode" - -#: ../lib/modules/quota.inc:32 -msgid "Inode soft quota" -msgstr "Quota souple d'inode" - -#: ../lib/modules/quota.inc:32 -msgid "" -"Inode soft quota contains invalid characters. Only natural numbers are " -"allowed." -msgstr "" -"Quota souple contient des caractères invalides. Seuls les nombres naturels " -"sont autorisés" - -#: ../lib/modules/quota.inc:35 -msgid "Inode soft quota must be smaller than inode hard quota." -msgstr "Quota souple doit être plus petit que quota dur." - -#: ../lib/modules/sambaAccount.inc:47 ../lib/modules/sambaAccount.inc:48 -#: ../lib/modules/sambaSamAccount.inc:45 -msgid "Inserted user- or groupname in HomePath." -msgstr "Nom d'utilisateur ou groupe inséré dans HomePath." - -#: ../lib/modules/sambaAccount.inc:53 -msgid "Inserted user- or groupname in logon script." -msgstr "Nom d'utilisateur ou groupe inséré dans script de login." - -#: ../lib/modules/sambaAccount.inc:50 ../lib/modules/sambaAccount.inc:51 -#: ../lib/modules/sambaSamAccount.inc:48 -msgid "Inserted user- or groupname in profilepath." -msgstr "Nom d'utilisateur ou groupe inséré dans chemin profil." - -#: ../lib/modules/sambaSamAccount.inc:51 -msgid "Inserted user- or groupname in scriptpath." -msgstr "Nom d'utilisateur ou groupe inséré dans chemin script." - -#: ../lib/modules/sambaGroupMapping.inc:57 -msgid "Invalid Account" -msgstr "Compte invalide" - -#: ../lib/modules/posixGroup.inc:177 ../lib/modules/posixAccount.inc:891 -msgid "Invalid password" -msgstr "Password invalide" - -#: ../lib/status.inc:61 -msgid "Invalid/Missing Message type" -msgstr "Type de message non valable/manquant" - -#: ../lib/modules/posixGroup.inc:464 ../lib/modules/posixAccount.inc:68 -msgid "" -"It is possible that this ID-number is reused. This can cause several " -"problems because files with old permissions might still exist. To avoid this " -"warning set maxUID to a higher value." -msgstr "" -"Il est possible que ce numéro soit ré-utilisé. Ceci peut créer plusieurs " -"problèmes parce que des fichiers avec des vielles permissions peuvent encore " -"exister. Pour éviter cet avertissement, mettez maxUID à une plus grande " -"valeur." - -#: ../lib/modules/inetOrgPerson.inc:70 ../lib/modules/inetOrgPerson.inc:97 -#: ../lib/modules/inetOrgPerson.inc:149 ../lib/modules/inetOrgPerson.inc:227 -#: ../lib/modules/inetOrgPerson.inc:404 ../lib/modules/inetOrgPerson.inc:462 -msgid "Job title" -msgstr "Profession" - -#: ../lib/modules/inetOrgPerson.inc:228 -msgid "Job title of user: President, department manager, ..." -msgstr "Titre utilisateur: Président,responsable,chef de projet,..." - -#: ../templates/schema/schema.php:261 -msgid "Jump to a matching rule" -msgstr "Aller à une règle correspondante" - -#: ../templates/schema/schema.php:120 -msgid "Jump to an attribute type" -msgstr "Aller à un type attribut" - -#: ../templates/schema/schema.php:314 ../templates/schema/schema.php:364 -#: ../templates/schema/schema.php:379 -msgid "Jump to an object class" -msgstr "Aller à une classe d' objet" - -#: ../lib/status.inc:60 -msgid "LAM Internal Error" -msgstr "Erreur interne LAM" - -#: ../templates/tree/delete_form.php:99 -#, php-format -msgid "" -"LAM can recursively delete this entry and all of its children. See below for " -"a list of all the entries that this action will delete. Do you want to do " -"this?" -msgstr "" -"LAM peut effacer récursivement cette entrée et tous les fils. Voir ci-" -"dessous pour une liste de toutes les entrées que cette action effacera. " -"Voulez-vous vraiment faire cela ?" - -#: ../templates/massBuildAccounts.php:188 -msgid "LAM has checked your input and is now ready to create the accounts." -msgstr "LAM à contrôlé vos données et est prêt à créer les comptes." - -#: ../lib/modules/posixGroup.inc:418 ../lib/modules/posixAccount.inc:299 -msgid "" -"LAM supports CRYPT, SHA, SSHA, MD5 and SMD5 to generate the hash value of " -"passwords. 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." -msgstr "" -"LAM supporte CRYPT, SHA, SSHA, MD5 et SMD5 pour générer la valeur hash d'un " -"mot de passe utilisateur. SSHA et CRYPT sont les plus utilisés mais CRYPT ne " -"supporte pas les mots de passe de plus de 8 caractères. Nous ne recommandons " -"pas d'utiliser des mots de passe en clair." - -#: ../templates/tree/create.php:180 ../templates/massDoUpload.php:82 -#, php-format -msgid "LAM was unable to create account %s! An LDAP error occured." -msgstr "LAM n'a pas pu créer le compte %s ! Une erreur LDAP s' est produite." - -#: ../lib/modules/sambaGroupMapping.inc:352 -msgid "LAM was unable to find a Samba 3 domain with this name!" -msgstr "LAM n'a pu trouver un Domaine SAMBA3 avec ce nom!" - -#: ../lib/modules/sambaSamAccount.inc:70 -msgid "LAM was unable to find a domain with this name!" -msgstr "LAM n'a pas trouvé de domaine avec ce nom!" - -#: ../lib/modules/posixAccount.inc:84 -msgid "LAM was unable to find a group with this name!" -msgstr "LAM n'a pu trouver de groupe avec ce nom!" - -#: ../lib/modules/posixAccount.inc:1381 -#, php-format -msgid "LAM was unable to modify group memberships for group: %s" -msgstr "LAM n'a pas pu modifier les membres de groupes du groupe: %s" - -#: ../templates/profedit/profilepage.php:87 -msgid "LDAP" -msgstr "LDAP" - -#: ../templates/config/confmodules.php:67 ../templates/config/confsave.php:75 -#: ../templates/config/confmain.php:148 -msgid "LDAP Account Manager Configuration" -msgstr "Configuration LDAP Account Manager" - -#: ../templates/config/confmain.php:308 -msgid "LDAP List settings" -msgstr "Paramètres de liste LDAP" - -#: ../templates/lists/listhosts.php:119 ../templates/lists/listgroups.php:119 -#: ../templates/lists/listdomains.php:132 ../templates/lists/listusers.php:147 -msgid "LDAP Search failed! Please check your preferences." -msgstr "Recherche LDAP échouée ! Vérifiez vos préférences." - -#: ../templates/login.php:371 -msgid "LDAP error, server says:" -msgstr "Erreur LDAP, le serveur dit :" - -#: ../lib/modules.inc:946 -msgid "LDAP operation successful." -msgstr "Opération LDAP réussie" - -#: ../templates/login.php:266 -msgid "LDAP server" -msgstr "Serveur LDAP" - -#: ../templates/lists/listhosts.php:104 ../templates/lists/listgroups.php:104 -#: ../templates/lists/listdomains.php:121 ../templates/lists/listusers.php:131 -msgid "LDAP sizelimit exceeded, not all entries are shown." -msgstr "limite de taille LDAP surpassée, toutes les entrées ne sont pas affichées." - -#: ../templates/profedit/profilepage.php:91 -msgid "LDAP suffix" -msgstr "Suffixe LDAP" - -#: ../templates/massDoUpload.php:117 -msgid "LDAP upload has finished" -msgstr "Upload LDAP terminé" - -#: ../templates/massDoUpload.php:66 -msgid "LDAP upload in progress. Please wait." -msgstr "Upload LDAP en cours. Attendez SVP." - -#: ../templates/login.php:212 -msgid "Language" -msgstr "Langue" - -#: ../templates/config/confsave.php:153 -msgid "Language is not defined!" -msgstr "La langue n'est pas définie !" - -#: ../templates/config/confmain.php:366 -msgid "Language settings" -msgstr "Paramètres de langue" - -#: ../lib/modules/inetOrgPerson.inc:54 ../lib/modules/inetOrgPerson.inc:136 -#: ../lib/modules/inetOrgPerson.inc:235 ../lib/modules/inetOrgPerson.inc:412 -#: ../lib/modules/inetOrgPerson.inc:464 ../lib/lists.inc:308 -#: ../help/help.inc:192 -msgid "Last name" -msgstr "Nom de famille" - -#: ../lib/modules/inetOrgPerson.inc:54 ../lib/modules/inetOrgPerson.inc:55 -msgid "Last name contains invalid characters!" -msgstr "Le Prénom contient des caractères invalides!" - -#: ../lib/modules/inetOrgPerson.inc:236 ../help/help.inc:193 -msgid "Last name of user. Only letters, - and spaces are allowed." -msgstr "" -"Le Prénom de l'utilisateur. Seuls les lettres, - et les espaces sont " -"autorisés." - -#: ../lib/modules/shadowAccount.inc:338 -msgid "Last password change" -msgstr "Dernier changement de mot de passe" - -#: ../templates/pdfedit/pdfpage.php:535 -msgid "Left" -msgstr "Gauche" - -#: ../help/help.inc:72 -msgid "List attributes" -msgstr "Attributs de liste" - -#: ../help/help.inc:215 -msgid "" -"List of Samba workstations the user is allowed to login. Empty means every " -"workstation." -msgstr "" -"Liste des stations de travail samba sur lesquelles l'utilisateur peut se " -"connecter. Vide veut dire toutes stations de travail." - -#: ../templates/config/confsave.php:102 -msgid "List of admin users is empty or invalid!" -msgstr "La liste des utilisateurs administrateur est vide ou non valable !" - -#: ../templates/tree/delete_form.php:129 -msgid "List of entries to be deleted:" -msgstr "Liste des entrées à effacer" - -#: ../templates/config/confmain.php:445 ../lib/config.inc:370 -msgid "List of valid users" -msgstr "Liste des utilisateurs valides" - -#: ../lib/modules.inc:984 ../lib/modules.inc:987 ../help/help.inc:186 -msgid "Load profile" -msgstr "Chargement de profil" - -#: ../lib/modules/sambaGroupMapping.inc:54 -msgid "Local Group" -msgstr "Groupe local" - -#: ../lib/modules/inetLocalMailRecipient.inc:60 -#: ../lib/modules/inetLocalMailRecipient.inc:206 -msgid "Local address" -msgstr "Adresse locale" - -#: ../lib/modules/inetLocalMailRecipient.inc:64 -#: ../lib/modules/inetLocalMailRecipient.inc:97 -#: ../lib/modules/inetLocalMailRecipient.inc:372 -msgid "Local address list" -msgstr "Liste adresse locale" - -#: ../lib/modules/posixGroup.inc:182 ../lib/modules/posixAccount.inc:218 -#: ../lib/modules/posixAccount.inc:896 ../lib/modules/posixAccount.inc:1025 -msgid "Lock password" -msgstr "Blocage Mot de passe" - -#: ../templates/login.php:241 ../templates/config/conflogin.php:68 -#: ../help/help.inc:46 -msgid "Login" -msgstr "Connexion" - -#: ../lib/modules/posixAccount.inc:204 ../lib/modules/posixAccount.inc:332 -#: ../lib/modules/posixAccount.inc:902 ../lib/modules/posixAccount.inc:1017 -#: ../lib/modules/posixAccount.inc:1088 ../lib/lists.inc:310 -#: ../help/help.inc:154 -msgid "Login shell" -msgstr "Shell de connexion" - -#: ../templates/pdfedit/pdfpage.php:434 -msgid "Logo" -msgstr "Logo" - -#: ../lib/modules/sambaSamAccount.inc:197 -#: ../lib/modules/sambaSamAccount.inc:316 -msgid "Logon hours" -msgstr "heures de connexion" - -#: ../lib/modules/sambaAccount.inc:52 ../lib/modules/sambaAccount.inc:53 -#: ../lib/modules/sambaAccount.inc:142 ../lib/modules/sambaAccount.inc:274 -#: ../lib/modules/sambaAccount.inc:363 ../lib/modules/sambaAccount.inc:736 -#: ../lib/modules/sambaAccount.inc:837 ../lib/modules/sambaSamAccount.inc:178 -#: ../lib/modules/sambaSamAccount.inc:290 -#: ../lib/modules/sambaSamAccount.inc:722 -#: ../lib/modules/sambaSamAccount.inc:869 -#: ../lib/modules/sambaSamAccount.inc:955 -msgid "Logon script" -msgstr "Script de Connexion" - -#: ../lib/modules/sambaAccount.inc:52 ../lib/modules/sambaAccount.inc:54 -#: ../lib/modules/sambaSamAccount.inc:52 -msgid "Logon script is invalid!" -msgstr "Le chemin de script n'est pas valable !" - -#: ../templates/main_header.php:66 ../templates/logout.php:60 -msgid "Logout" -msgstr "Déconnexion" - -#: ../lib/modules/ieee802device.inc:50 ../lib/modules/ieee802device.inc:56 -#: ../lib/modules/ieee802device.inc:67 ../lib/modules/ieee802device.inc:144 -msgid "MAC address" -msgstr "MAC Adresse" - -#: ../lib/modules/ieee802device.inc:60 ../lib/modules/ieee802device.inc:257 -msgid "MAC address list" -msgstr "MAC Adresse - liste" - -#: ../lib/modules/nisMailAlias.inc:54 -msgid "Mail aliases" -msgstr "Alias mèl" - -#: ../lib/modules/inetLocalMailRecipient.inc:50 -msgid "Mail routing" -msgstr "Mèl routage" - -#: ../lib/modules/inetLocalMailRecipient.inc:68 -#: ../lib/modules/inetLocalMailRecipient.inc:74 -#: ../lib/modules/inetLocalMailRecipient.inc:103 -#: ../lib/modules/inetLocalMailRecipient.inc:200 -#: ../lib/modules/inetLocalMailRecipient.inc:375 -msgid "Mail server" -msgstr "Serveur de Mèl" - -#: ../lib/modules/nisMailAlias.inc:61 -msgid "Mails to this name are forwarded to the recipients." -msgstr "Courriels à ce nom sont redirigés aux destinataires." - -#: ../lib/modules.inc:901 ../lib/modules.inc:926 -msgid "Main" -msgstr "Principal" - -#: ../templates/config/conflogin.php:138 -msgid "Manage profiles" -msgstr "Gestion de profiles" - -#: ../templates/tools.php:77 -msgid "Manages OU objects in your LDAP tree." -msgstr "Gère les Objets OU dans l' arbre LDAP." - -#: ../templates/tools.php:62 -msgid "Manages Samba 3 domain accounts." -msgstr "Gère les comptes de domaine Samba3." - -#: ../templates/pdfedit/pdfpage.php:508 -msgid "Margin" -msgstr "Marge" - -#: ../templates/config/profmanage.php:398 -msgid "Master Password:" -msgstr "Mot de passe principal:" - -#: ../help/help.inc:126 -msgid "Master password" -msgstr "Mot de passe principal" - -#: ../templates/config/profmanage.php:68 -msgid "Master password is wrong!" -msgstr "Mot de passe principal érroné !" - -#: ../templates/config/profmanage.php:128 -msgid "Master passwords are different or empty!" -msgstr "Mots de passe principal différents ou vides !" - -#: ../templates/schema/schema.php:274 -msgid "Matching rule OID" -msgstr "Règle atteinte OID" - -#: ../templates/schema/schema.php:83 ../templates/schema/schema.php:84 -msgid "Matching rules" -msgstr "Règles de correspondance" - -#: ../templates/config/confsave.php:147 -msgid "Max list entries is invalid!" -msgstr "Nombre d'entrées de liste max est invalide !" - -#: ../templates/pdfedit/pdfpage.php:479 -msgid "Maximize with correct ratio" -msgstr "Agrandir avec le ratio correct" - -#: ../lib/modules/posixGroup.inc:300 ../lib/modules/posixGroup.inc:468 -#: ../lib/modules/posixGroup.inc:469 -msgid "Maximum GID number" -msgstr "Nombre GID maximum" - -#: ../lib/modules/posixGroup.inc:317 -msgid "Maximum GID number for Unix groups" -msgstr "Nombre GID maximum pour groupes unix" - -#: ../lib/modules/posixGroup.inc:468 -msgid "Maximum GID number is invalid or empty!" -msgstr "Nombre GID maximum invalide ou vide !" - -#: ../lib/modules/posixGroup.inc:469 -msgid "Maximum GID number must be greater than minimum GID number!" -msgstr "Nombre GID Maximum doit être plus grand que le Nombre GID Minimum ! " - -#: ../lib/modules/posixAccount.inc:58 ../lib/modules/posixAccount.inc:60 -#: ../lib/modules/posixAccount.inc:61 ../lib/modules/posixAccount.inc:62 -#: ../lib/modules/posixAccount.inc:129 ../lib/modules/posixAccount.inc:138 -msgid "Maximum UID number" -msgstr "Maximale UID-Nummer" - -#: ../lib/modules/posixAccount.inc:159 -msgid "Maximum UID number for Unix accounts (hosts)" -msgstr "Nombre UID Maximum pour les comptes Unix (Machines)" - -#: ../lib/modules/posixAccount.inc:157 -msgid "Maximum UID number for Unix accounts (users)" -msgstr "Nombre UID Maximum pour les comptes Unix (Utilisateurs)" - -#: ../lib/modules/posixAccount.inc:58 ../lib/modules/posixAccount.inc:60 -msgid "Maximum UID number is invalid!" -msgstr "Numéro maximum d'UID est invalide !" - -#: ../lib/modules/posixAccount.inc:61 ../lib/modules/posixAccount.inc:62 -msgid "Maximum UID number must be greater than minimum UID number!" -msgstr "Nombre UID Maximum doit être plus grand que le Nombre Minimum UID!" - -#: ../templates/tree/add_attr_form.php:166 -#, php-format -msgid "Maximum file size: %s" -msgstr "Taille de fichier Max: %s" - -#: ../templates/tree/add_value_form.php:193 ../templates/schema/schema.php:220 -msgid "Maximum length" -msgstr "Longueur Max." - -#: ../templates/config/confmain.php:346 ../lib/config.inc:366 -#: ../help/help.inc:92 -msgid "Maximum list entries" -msgstr "Nombre d'entrées de list maximum" - -#: ../lib/modules/shadowAccount.inc:88 ../lib/modules/shadowAccount.inc:158 -#: ../lib/modules/shadowAccount.inc:188 ../lib/modules/shadowAccount.inc:310 -#: ../help/help.inc:176 -msgid "Maximum password age" -msgstr "Longévité de mot de passe maximum" - -#: ../lib/modules/inetOrgPerson.inc:138 -msgid "Miller" -msgstr "Miller?" - -#: ../lib/modules/posixGroup.inc:297 ../lib/modules/posixGroup.inc:467 -msgid "Minimum GID number" -msgstr "Numéro GID minimum" - -#: ../lib/modules/posixGroup.inc:316 -msgid "Minimum GID number for Unix groups" -msgstr "Numéro GID minimum pour Groupes Unix" - -#: ../lib/modules/posixGroup.inc:467 -msgid "Minimum GID number is invalid or empty!" -msgstr "Le nombre GID minimal n'est pas valable ou vide!" - -#: ../lib/modules/posixAccount.inc:57 ../lib/modules/posixAccount.inc:59 -#: ../lib/modules/posixAccount.inc:126 ../lib/modules/posixAccount.inc:135 -msgid "Minimum UID number" -msgstr "Numéro UID minimum" - -#: ../lib/modules/posixAccount.inc:158 -msgid "Minimum UID number for Unix accounts (hosts)" -msgstr "Nombre Minimum UID pour les comptes Unix (Machines)" - -#: ../lib/modules/posixAccount.inc:156 -msgid "Minimum UID number for Unix accounts (users)" -msgstr "Nombre UID Minimum pour comptes Unix (Utilisateurs)" - -#: ../lib/modules/posixAccount.inc:57 ../lib/modules/posixAccount.inc:59 -msgid "Minimum UID number is invalid!" -msgstr "Numéro UID minimal non valable !" - -#: ../lib/modules/shadowAccount.inc:83 ../lib/modules/shadowAccount.inc:154 -#: ../lib/modules/shadowAccount.inc:182 ../lib/modules/shadowAccount.inc:307 -#: ../help/help.inc:178 -msgid "Minimum password age" -msgstr "Longévité de mot de passe minimum" - -#: ../lib/modules/inetOrgPerson.inc:58 ../lib/modules/inetOrgPerson.inc:185 -#: ../lib/modules/inetOrgPerson.inc:259 ../lib/modules/inetOrgPerson.inc:260 -#: ../lib/modules/inetOrgPerson.inc:436 ../lib/modules/inetOrgPerson.inc:470 -msgid "Mobile number" -msgstr "Numéro de portable" - -#: ../lib/modules.inc:854 ../lib/modules.inc:992 -msgid "Modify Account" -msgstr "Modifier un Compte" - -#: ../templates/config/confmodules.php:75 -msgid "Module selection" -msgstr "Sélection Module" - -#: ../lib/config.inc:374 -msgid "Module settings" -msgstr "Paramètres de module" - -#: ../lib/modules/quota.inc:64 ../lib/modules/quota.inc:291 -#: ../lib/modules/quota.inc:349 ../lib/modules/quota.inc:422 -msgid "Mountpoint" -msgstr "Point de montage" - -#: ../lib/modules/quota.inc:65 -msgid "Mountpoint of device with enabled quotas." -msgstr "Point de montage du périphérique avec quotas activés." - -#: ../lib/modules/inetOrgPerson.inc:175 -msgid "Mycity" -msgstr "Ma Ville" - -#: ../lib/modules/inetOrgPerson.inc:163 -msgid "Mystreetname 42" -msgstr "Ma Rue" - -#: ../templates/tree/templates/creation/new_ou_template.php:59 -#: ../templates/tree/templates/creation/new_ou_template.php:104 -#: ../templates/schema/schema.php:274 ../templates/pdfedit/pdfdelete.php:56 -#: ../templates/pdfedit/pdfdelete.php:59 ../templates/pdfedit/pdfdelete.php:78 -msgid "Name" -msgstr "Nom" - -#: ../help/help.inc:138 -msgid "" -"Name under which the profile will be saved. If a profile with the same name " -"exists, it will be overwritten." -msgstr "" -"Nom sous lequel un profil doit etre sauvegardé. Si un profil avec le même " -"nom existe, il sera écrasé." - -#: ../templates/lists/listdomains.php:208 -msgid "New Domain" -msgstr "Nouveau domaine" - -#: ../templates/lists/listgroups.php:236 -msgid "New Group" -msgstr "Nouveau groupe" - -#: ../templates/lists/listhosts.php:221 -msgid "New Host" -msgstr "Nouvelle machine" - -#: ../lib/modules/ieee802device.inc:151 -msgid "New MAC address" -msgstr "Nouvelle MAC Address" - -#: ../templates/ou_edit.php:52 ../templates/ou_edit.php:117 -#: ../templates/ou_edit.php:182 ../templates/ou_edit.php:247 -msgid "New OU created successfully." -msgstr "Nouvelle OU créée avec succès." - -#: ../templates/config/confmain.php:458 -msgid "New Password" -msgstr "Nouveau mot de passe" - -#: ../templates/config/profmanage.php:135 -msgid "New default profile set successfully." -msgstr "Nouveau profil par défaut créé avec succès." - -#: ../lib/modules/inetLocalMailRecipient.inc:213 -msgid "New local address" -msgstr "Nouvelle adresse locale" - -#: ../templates/config/profmanage.php:368 -msgid "New master password" -msgstr "Nouveau mot de passe principal" - -#: ../templates/config/profmanage.php:126 -msgid "New master password set successfully." -msgstr "Nouveau mot de passe principal créé avec succès." - -#: ../templates/tree/templates/creation/new_ou_template.php:47 -#: ../templates/ou_edit.php:341 ../templates/ou_edit.php:378 -#: ../templates/ou_edit.php:415 ../templates/ou_edit.php:452 -#: ../help/help.inc:243 -msgid "New organizational unit" -msgstr "Nouvelle unité organisationelle" - -#: ../templates/config/profmanage.php:116 -msgid "New password set successfully." -msgstr "Nouveau mot de passe rentré avec succès." - -#: ../lib/modules/nisMailAlias.inc:179 -msgid "New recipient" -msgstr "Nouveau destinataire" - -#: ../templates/tree/add_oclass_form.php:127 -msgid "New required attributes:" -msgstr "Nouveau attribut obligatoire" - -#: ../templates/lists/listusers.php:281 -msgid "New user" -msgstr "Nouvel utilisateur" - -#: ../templates/tree/update_confirm.php:150 -msgid "New value" -msgstr "Nouvelle valeur" - -#: ../templates/tree/create_form.php:137 -#: ../templates/tree/templates/creation/custom.php:86 -#: ../templates/tree/templates/creation/new_ou_template.php:69 -msgid "Next" -msgstr "Suivant" - -#: ../templates/domain.php:155 ../help/help.inc:257 -msgid "Next Group RID" -msgstr "Groupe RID suivant" - -#: ../templates/domain.php:129 ../help/help.inc:253 -msgid "Next RID" -msgstr "RID Suivant" - -#: ../templates/domain.php:284 -msgid "Next RID is not a number!" -msgstr "RID suivant n'est pas un numéro !" - -#: ../help/help.inc:254 -msgid "Next RID to use when creating accounts." -msgstr "RID suivant à utiliser lors de la création de comptes." - -#: ../help/help.inc:258 -msgid "Next RID to use when creating groups." -msgstr "RID suivant à utiliser lors de la création de groupes." - -#: ../help/help.inc:256 -msgid "Next RID to use when creating user accounts." -msgstr "RID suivant à utiliser pour la création de comptes utilisateurs." - -#: ../templates/domain.php:142 ../help/help.inc:255 -msgid "Next User RID" -msgstr "RID Utilisateur suivant" - -#: ../templates/domain.php:286 -msgid "Next group RID is not a number!" -msgstr "Rid de groupe suivant n'est pas un numéro !" - -#: ../templates/domain.php:285 -msgid "Next user RID is not a number!" -msgstr "RID utilisateur suivant n'est pas un numéro !" - -#: ../templates/schema/schema.php:159 ../templates/schema/schema.php:201 -#: ../templates/schema/schema.php:206 ../templates/schema/schema.php:211 -msgid "No" -msgstr "Non" - -#: ../templates/lists/listdomains.php:126 -#: ../templates/lists/listdomains.php:132 -#: ../templates/lists/listdomains.php:136 -msgid "No Samba domains found!" -msgstr "Aucun domaine Samba trouvé!" - -#: ../lib/modules/posixAccount.inc:366 ../lib/modules/posixAccount.inc:597 -#: ../lib/modules/posixAccount.inc:830 -msgid "No Unix groups found in LDAP! Please create one first." -msgstr "Pas de groupes Unix trouvés dans LDAP! Créez-en un d' abord." - -#: ../templates/initsuff.php:161 -msgid "No changes were made." -msgstr "Aucune modification effectuée." - -#: ../templates/config/conflogin.php:93 -msgid "No configuration profiles found. Please create one." -msgstr "Pas de configuration de profil trouvé. Crée en un." - -#: ../templates/schema/schema.php:150 -msgid "No description" -msgstr "Pas de description" - -#: ../lib/modules/posixGroup.inc:465 ../lib/modules/posixAccount.inc:67 -msgid "No free ID-Number!" -msgstr "Pas de numéro ID libre !" - -#: ../templates/lists/listgroups.php:119 ../templates/lists/listgroups.php:125 -msgid "No groups found!" -msgstr "Aucun groupe trouvé!" - -#: ../templates/lists/listhosts.php:119 ../templates/lists/listhosts.php:125 -msgid "No hosts found!" -msgstr "Pas de machines trouvés !" - -#: ../templates/tree/edit.php:185 -msgid "No internal attributes" -msgstr "Pas d' attributs internes" - -#: ../templates/pdfedit/pdfpage.php:409 -msgid "No logo" -msgstr "Pas de logo" - -#: ../templates/config/confmodules.php:254 -msgid "No or more than one base module selected!" -msgstr "Pas ou trops de module de base sélectionné !" - -#: ../templates/config/confmain.php:97 -msgid "No password was entered!" -msgstr "Pas de mot de passe rentré !" - -#: ../templates/pdfedit/pdfpage.php:73 -msgid "No section text specified" -msgstr "Pas de section texte spécifié !" - -#: ../templates/pdfedit/pdfpage.php:77 -msgid "No static text specified" -msgstr "Pas de texte static spécifié !" - -#: ../templates/tree/edit.php:80 -msgid "No such entry!" -msgstr "Entrée erronée!" - -#: ../templates/schema/schema.php:443 -#, php-format -msgid "No such schema item: \"%s\"" -msgstr "Schema invalide: \"%s\"" - -#: ../templates/lists/listusers.php:148 ../templates/lists/listusers.php:154 -msgid "No users found!" -msgstr "Aucun utilisateur trouvé!" - -#: ../help/help.inc:57 -msgid "Note" -msgstr "Note" - -#: ../templates/tree/add_value_form.php:114 -msgid "" -"Note: You will get an \"inappropriate matching\" error if you have not setup " -"an EQUALITY rule on your LDAP server for this attribute." -msgstr "" -"Note: Vous aurez une erreur \"correspondance inapproprié\" si vous n' avez " -"pas paramétré une règle d' EGALITE sur votre serveur LDAP pour cet attribut." - -#: ../lib/modules/shadowAccount.inc:151 ../help/help.inc:175 -msgid "Number of days a user can login even his password has expired. -1=always." -msgstr "" -"Nombre de jours pendant lesquels un utilisateur paut se connecter bien que " -"son mot de passe ait expiré. -1 = toujours." - -#: ../lib/modules/shadowAccount.inc:155 ../help/help.inc:179 -msgid "" -"Number of days a user has to wait until he\\'s allowed to change his " -"password again. If set value must be 0<." -msgstr "" -"Nombre de jours que l\\'utilisateur doit attendre avant de pouvoir changer " -"son mot de passe à nouveau. Si défini, la valeur doit étre 0<." - -#: ../lib/modules/shadowAccount.inc:159 ../help/help.inc:177 -msgid "" -"Number of days after a user has to change his password again. If set value " -"must be 0<." -msgstr "" -"Nombre de jours au bout desquels un utilisateur doit changer à nouveau son " -"mot de passe. Si défini, la valeur doit etre 0<." - -#: ../templates/schema/schema.php:153 ../templates/schema/schema.php:350 -msgid "OID" -msgstr "OID" - -#: ../templates/ou_edit.php:58 ../templates/ou_edit.php:123 -#: ../templates/ou_edit.php:188 ../templates/ou_edit.php:253 -msgid "OU already exists!" -msgstr "OU existe déjà !" - -#: ../templates/ou_edit.php:69 ../templates/ou_edit.php:134 -#: ../templates/ou_edit.php:199 ../templates/ou_edit.php:264 -msgid "OU deleted successfully." -msgstr "OU éffacée avec succès." - -#: ../templates/tools.php:76 -msgid "OU editor" -msgstr "éditeur d' OU" - -#: ../templates/ou_edit.php:62 ../templates/ou_edit.php:127 -#: ../templates/ou_edit.php:192 ../templates/ou_edit.php:257 -msgid "OU is invalid!" -msgstr "OU n'est pas valable !" - -#: ../templates/ou_edit.php:99 ../templates/ou_edit.php:164 -#: ../templates/ou_edit.php:229 ../templates/ou_edit.php:294 -msgid "OU is not empty or invalid!" -msgstr "OU n'est pas vide ou non valable !" - -#: ../help/help.inc:243 ../help/help.inc:245 -msgid "OU-Editor" -msgstr "éditeur OU" - -#: ../templates/tree/templates/creation/custom.php:70 -#: ../templates/schema/schema.php:71 ../templates/schema/schema.php:72 -msgid "Object classes" -msgstr "Classes d' objets" - -#: ../lib/modules.inc:1021 ../lib/modules.inc:1059 ../lib/modules.inc:1174 -#, php-format -msgid "ObjectClass %s required but not defined in LDAP." -msgstr "ObjectClass %s obligatoire mais non définie dans LDAP" - -#: ../templates/schema/schema.php:158 ../templates/schema/schema.php:289 -msgid "Obsolete" -msgstr "Obsolète" - -#: ../templates/config/conflogin.php:123 ../templates/config/conflogin.php:124 -msgid "Ok" -msgstr "Ok" - -#: ../templates/tree/update_confirm.php:149 -msgid "Old value" -msgstr "Ancienne Valeur" - -#: ../templates/tree/templates/creation/custom.php:209 -#: ../templates/schema/schema.php:390 -msgid "Optional attributes" -msgstr "Attributs optionnels" - -#: ../templates/tree/templates/creation/custom.php:225 -msgid "Optional binary attributes" -msgstr "Attributs binaires optionnels" - -#: ../templates/schema/schema.php:177 -msgid "Ordering" -msgstr "Commande" - -#: ../templates/tree/templates/templates.inc:46 -msgid "Organizational unit" -msgstr "Unité Organisationelle" - -#: ../templates/tools.php:83 -msgid "PDF editor" -msgstr "Editeur PDF" - -#: ../templates/lists/listhosts.php:226 ../templates/lists/listgroups.php:241 -#: ../templates/lists/listusers.php:286 ../templates/pdfedit/pdfpage.php:573 -msgid "PDF structure" -msgstr "Structure PDF" - -#: ../templates/pdfedit/pdfmain.php:101 -msgid "PDF structures" -msgstr "Structures PDF" - -#: ../templates/pdfedit/pdfpage.php:61 -msgid "PDF-structure name not valid" -msgstr "Nom de Structure PDF non valide" - -#: ../templates/pdfedit/pdfpage.php:429 -msgid "Page settings" -msgstr "Paramètres de page" - -#: ../templates/schema/schema.php:372 -msgid "Parent to" -msgstr "Parent à" - -#: ../templates/login.php:189 ../lib/modules/posixGroup.inc:157 -#: ../lib/modules/posixGroup.inc:169 ../lib/modules/posixGroup.inc:258 -#: ../lib/modules/posixGroup.inc:460 ../lib/modules/posixGroup.inc:461 -#: ../lib/modules/posixGroup.inc:462 ../lib/modules/sambaAccount.inc:59 -#: ../lib/modules/sambaAccount.inc:60 ../lib/modules/sambaAccount.inc:204 -#: ../lib/modules/sambaSamAccount.inc:55 ../lib/modules/sambaSamAccount.inc:56 -#: ../lib/modules/sambaSamAccount.inc:220 ../lib/modules/posixAccount.inc:71 -#: ../lib/modules/posixAccount.inc:72 ../lib/modules/posixAccount.inc:73 -#: ../lib/modules/posixAccount.inc:212 ../lib/modules/posixAccount.inc:323 -#: ../lib/modules/posixAccount.inc:871 ../lib/modules/posixAccount.inc:883 -#: ../lib/modules/posixAccount.inc:976 ../lib/modules/posixAccount.inc:1087 -msgid "Password" -msgstr "Mot de passe" - -#: ../templates/config/confsave.php:246 -msgid "Password changed!" -msgstr "Mot de passe modifié !" - -#: ../lib/modules/posixGroup.inc:461 ../lib/modules/sambaAccount.inc:60 -#: ../lib/modules/sambaAccount.inc:61 ../lib/modules/sambaSamAccount.inc:56 -#: ../lib/modules/sambaSamAccount.inc:57 ../lib/modules/posixAccount.inc:72 -#: ../lib/modules/posixAccount.inc:74 -msgid "" -"Password contains invalid characters. Valid characters are: a-z, A-Z, 0-9 " -"and #*,.;:_-+!$%&/|?{[()]}= !" -msgstr "" -"Le mot de passe contient des caractères invalides. Les caractères valides " -"sont: a-z, A-Z, 0-9 and #*,.;:_-+!$%&/|?{[()]}= !" - -#: ../lib/modules/sambaAccount.inc:110 ../lib/modules/sambaAccount.inc:226 -#: ../lib/modules/sambaAccount.inc:337 ../lib/modules/sambaAccount.inc:340 -#: ../lib/modules/sambaAccount.inc:701 ../lib/modules/sambaSamAccount.inc:152 -#: ../lib/modules/sambaSamAccount.inc:155 -#: ../lib/modules/sambaSamAccount.inc:242 -#: ../lib/modules/sambaSamAccount.inc:687 -#: ../lib/modules/sambaSamAccount.inc:837 ../help/help.inc:200 -msgid "Password does not expire" -msgstr "Le mot de passe n'expire pas" - -#: ../lib/modules/shadowAccount.inc:43 ../lib/modules/shadowAccount.inc:78 -#: ../lib/modules/shadowAccount.inc:150 ../lib/modules/shadowAccount.inc:176 -#: ../lib/modules/shadowAccount.inc:304 ../lib/modules/shadowAccount.inc:341 -msgid "Password expiration" -msgstr "Expiration mot de passe" - -#: ../lib/modules/shadowAccount.inc:43 ../lib/modules/shadowAccount.inc:44 -msgid "Password expiration must be are natural number or -1." -msgstr "L'expiration du mot de passe doit etre un nombre ou -1." - -#: ../help/help.inc:174 -msgid "Password expire" -msgstr "Expiration du mot de passe" - -#: ../lib/modules/posixGroup.inc:304 ../lib/modules/posixGroup.inc:417 -#: ../lib/modules/posixAccount.inc:144 ../lib/modules/posixAccount.inc:298 -msgid "Password hash type" -msgstr "Le type de hash du mot de passe" - -#: ../lib/modules/posixAccount.inc:160 -msgid "Password hash type for Unix accounts" -msgstr "Le type de hash du mot de passe pour comptes Unix" - -#: ../lib/modules/posixGroup.inc:318 -msgid "Password hash type for Unix groups" -msgstr "Type de hash du mot de passe pour groupes Unix" - -#: ../lib/modules/shadowAccount.inc:41 ../lib/modules/shadowAccount.inc:47 -msgid "Password maxage" -msgstr "Longévité Max. du mot de passe" - -#: ../lib/modules/shadowAccount.inc:41 ../lib/modules/shadowAccount.inc:42 -msgid "Password maximum age must be are natural number." -msgstr "Longévité Max. du mot de passe doit etre un nombre." - -#: ../lib/modules/shadowAccount.inc:47 ../lib/modules/shadowAccount.inc:48 -msgid "Password maximum age must be bigger as password minimum age." -msgstr "" -"Longévité Max. du mot de passe doit etre plus grand que Longévité Min. du " -"mot de passe" - -#: ../lib/modules/shadowAccount.inc:39 -msgid "Password minage" -msgstr "Longévité Min. mot de passe" - -#: ../lib/modules/shadowAccount.inc:39 ../lib/modules/shadowAccount.inc:40 -msgid "Password minimum age must be are natural number." -msgstr "Longévité minimale du mot de passe doit etre un nombre." - -#: ../help/help.inc:172 -msgid "Password warn" -msgstr "Avertissement mot de passe" - -#: ../lib/modules/shadowAccount.inc:45 ../lib/modules/shadowAccount.inc:73 -#: ../lib/modules/shadowAccount.inc:146 ../lib/modules/shadowAccount.inc:170 -#: ../lib/modules/shadowAccount.inc:301 ../lib/modules/shadowAccount.inc:339 -msgid "Password warning" -msgstr "Avertissement du mot de passe" - -#: ../lib/modules/shadowAccount.inc:45 ../lib/modules/shadowAccount.inc:46 -msgid "Password warning must be are natural number." -msgstr "L'avertissement mot de passe doit etre un nombre." - -#: ../templates/config/confsave.php:240 -msgid "Passwords are different!" -msgstr "Les mots de passe sont différents !" - -#: ../lib/modules/sambaAccount.inc:361 ../lib/modules/sambaSamAccount.inc:176 -#: ../help/help.inc:213 -msgid "" -"Path of the user profile. Can be a local absolute path or a UNC-path (\\" -"\\server\\share). $user and $group are replaced with user- and groupname." -msgstr "" -"Chemin du profil utilisateur. Peut etre un chemin absolu local ou un chemin " -"UNC (\\serveur\\partage). $user et $group seront remplacés par les noms " -"d'utilisateur et de groupe." - -#: ../templates/config/confmain.php:426 ../lib/config.inc:368 -msgid "Path to external script" -msgstr "Chemin vers le script externe" - -#: ../templates/tree/delete_form.php:80 -msgid "Permanently delete all children, too?" -msgstr "Effacer définitivement tous les fils également ?" - -#: ../lib/modules/inetOrgPerson.inc:87 -msgid "Personal" -msgstr "Personnel" - -#: ../templates/delete.php:77 -msgid "Please confirm:" -msgstr "Confirmez:" - -#: ../lib/modules/sambaSamAccount.inc:60 -msgid "Please enter a RID number or the name of a special account!" -msgstr "Entrez un numéro RID pour le nom du compte spécial!" - -#: ../lib/modules/sambaAccount.inc:55 ../lib/modules/sambaAccount.inc:56 -#: ../lib/modules/sambaSamAccount.inc:53 ../lib/modules/sambaSamAccount.inc:54 -msgid "Please enter a comma separated list of host names!" -msgstr "Entrez une liste de machines séparée par des virgules!" - -#: ../lib/modules/inetOrgPerson.inc:74 -msgid "Please enter a valid common name!" -msgstr "Entrez un nom valide!" - -#: ../lib/modules/sambaAccount.inc:69 ../lib/modules/sambaAccount.inc:70 -#: ../lib/modules/sambaSamAccount.inc:67 ../lib/modules/sambaSamAccount.inc:68 -msgid "Please enter a valid date in format DD-MM-YYYY." -msgstr "Entrez une date au format JJ-MM-AAAA." - -#: ../lib/modules/sambaAccount.inc:64 ../lib/modules/sambaSamAccount.inc:62 -msgid "Please enter a valid display name!" -msgstr "Entrez un nom d' affichage valide!" - -#: ../lib/modules/sambaAccount.inc:71 ../lib/modules/sambaSamAccount.inc:69 -msgid "Please enter a valid drive letter." -msgstr "Entrez une lettre de lecteur valide." - -#: ../lib/modules/inetOrgPerson.inc:62 ../lib/modules/inetOrgPerson.inc:63 -msgid "Please enter a valid eMail address!" -msgstr "Entrez une adresse mail valable, s'il vous plait !" - -#: ../lib/modules/inetOrgPerson.inc:72 ../lib/modules/inetOrgPerson.inc:73 -msgid "Please enter a valid employee type!" -msgstr "Entrez un type d'employé valable, s'il vous plait !" - -#: ../lib/modules/inetOrgPerson.inc:60 ../lib/modules/inetOrgPerson.inc:61 -msgid "Please enter a valid fax number!" -msgstr "Entrez un numéro de fax valable, s'il vous plait !" - -#: ../lib/modules/sambaAccount.inc:72 -msgid "Please enter a valid group RID." -msgstr "Entrez un groupe GID valide" - -#: ../lib/modules/sambaSamAccount.inc:72 -msgid "Please enter a valid group name!" -msgstr "Entrez un nom de groupe valide!" - -#: ../lib/modules/inetOrgPerson.inc:70 ../lib/modules/inetOrgPerson.inc:71 -msgid "Please enter a valid job title!" -msgstr "Entrez une profession valide !" - -#: ../lib/modules/inetOrgPerson.inc:58 ../lib/modules/inetOrgPerson.inc:59 -msgid "Please enter a valid mobile number!" -msgstr "Entrez un numéro de portable valable, s'il vous plait !" - -#: ../lib/modules/inetOrgPerson.inc:66 ../lib/modules/inetOrgPerson.inc:67 -msgid "Please enter a valid postal address!" -msgstr "Entrez une adresse valable, s'il vous plait !" - -#: ../lib/modules/inetOrgPerson.inc:68 ../lib/modules/inetOrgPerson.inc:69 -msgid "Please enter a valid postal code!" -msgstr "Entrez un code postal valable, s'il vous plait !" - -#: ../lib/modules/sambaAccount.inc:73 -msgid "Please enter a valid special user name." -msgstr "Entrez un nom utilisateur spécial valide." - -#: ../lib/modules/inetOrgPerson.inc:64 ../lib/modules/inetOrgPerson.inc:65 -msgid "Please enter a valid street name!" -msgstr "Entrez un nom de rue valable, s'il vous plait !" - -#: ../lib/modules/inetOrgPerson.inc:56 ../lib/modules/inetOrgPerson.inc:57 -msgid "Please enter a valid telephone number!" -msgstr "Entrez un numéro de téléphone valable, s'il vous plait !" - -#: ../lib/modules/posixGroup.inc:577 ../lib/modules/posixAccount.inc:651 -#, php-format -msgid "Please enter a value between %s and %s!" -msgstr "Entrez un numéro entre %s et %s, s'il vous plait !" - -#: ../templates/config/conflogin.php:87 -msgid "Please enter password to change preferences:" -msgstr "Entrez votre mot de passe pour modifier les preférences :" - -#: ../help/help.inc:47 -msgid "" -"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\"." -msgstr "" -"Entrez le mot de passe de configuration. Ceci n'est PAS votre mot de passe " -"LDAP. Il est stoqué dans votre fichier .conf. Si ceci est la première fois " -"que vous vous connectez, entrez \"lam\"." - -#: ../help/help.inc:127 -msgid "" -"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\"." -msgstr "" -"Entrez le mot de passe de configuration. Ceci n'est PAS votre mot de passe " -"LDAP. Il est stoqué dans votre fichier config.cfg. Si ceci est la première " -"fois que vous vous connectez, entrez \"lam\"." - -#: ../help/help.inc:115 -msgid "" -"Please enter the name of the new profile and the password to change its " -"settings. Profile names may contain letters, numbers and -/_." -msgstr "" -"Entrez le nom du nouveau profil et le mot de passe pour changer ses " -"paramètres. Les noms de profil peuvent contenir des lettres, des nombres et " -"-/_." - -#: ../help/help.inc:117 -msgid "" -"Please enter the new name of the profile. The name may contain letters, " -"numbers and -/_." -msgstr "" -"Entrez le nom du nouveau profil. Les noms de profil peuvent contenir des " -"lettres, des nombres et -/_." - -#: ../lib/modules/posixAccount.inc:324 -msgid "Please enter the password which you want to set for this account." -msgstr "Entrez le mot de passe que vous souhaitez pour ce login." - -#: ../lib/modules/posixGroup.inc:460 ../lib/modules/sambaAccount.inc:59 -#: ../lib/modules/sambaSamAccount.inc:55 ../lib/modules/posixAccount.inc:71 -msgid "Please enter the same password in both password-fields." -msgstr "Entrez le même mot de passe dans les deux champs mot de passe." - -#: ../templates/masscreate.php:120 -msgid "" -"Please provide a CSV formated file with your account data. The cells in the " -"first row must be filled with the column identifiers. The following rows " -"represent one account for each row." -msgstr "" -"Indique un fichier CSV contenant les valeurs des comptes.Les cellules de la " -"première ligne doivent être remplies avec les noms de colonnes.Les lignes " -"suivantes représentent un compte pour chaque ligne." - -#: ../lib/status.inc:62 -msgid "" -"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." -msgstr "" -"Faites un rapport de cette erreur au Bug-Tracker à {link=http://lam.sf.net}" -"l'equipe de developeurs LDAP Account Manager{endlink}. Le numéro d'erreur " -"est {bold}0001:Message de type Invalid/Manquant.{endbold} Merci." - -#: ../lib/modules.inc:896 -msgid "Please select page:" -msgstr "Sélectionnez une page :" - -#: ../templates/masscreate.php:89 -msgid "Please select your account type:" -msgstr "Sélectionne un type de compte:" - -#: ../templates/login.php:162 -msgid "Please select your user name and enter your password to log in" -msgstr "Sélectionnez votre nom et entrez votre mot de passe pour vous connecter" - -#: ../lib/modules.inc:887 -#, php-format -msgid "Please set up all required attributes on page: %s" -msgstr "Remplis tous les champs obligatoires sur la page: %s" - -#: ../templates/config/profmanage.php:148 -msgid "Please set up your master configuration file (config/config.cfg) first!" -msgstr "Indique le fichier de configuration principal (config/config.cfg) first!" - -#: ../templates/pdfedit/pdfpage.php:708 -msgid "Position" -msgstr "Position" - -#: ../help/help.inc:229 -msgid "Position in ldap-tree where the group should be created." -msgstr "Position dans l'arbre LDAP ou le groupe doit etre créé." - -#: ../help/help.inc:231 -msgid "Position in ldap-tree where the host should be created." -msgstr "Position dans l'arbre ou la machine doit etre créée." - -#: ../help/help.inc:227 -msgid "Position in ldap-tree where the user should be created." -msgstr "Position dans l'arbre ou l'utilisateur doit etre créé." - -#: ../templates/masscreate.php:163 ../templates/masscreate.php:300 -#: ../lib/modules/sambaGroupMapping.inc:353 -msgid "Possible values" -msgstr "Valeurs possibles" - -#: ../lib/modules/inetOrgPerson.inc:66 ../lib/modules/inetOrgPerson.inc:173 -#: ../lib/modules/inetOrgPerson.inc:251 ../lib/modules/inetOrgPerson.inc:428 -#: ../lib/modules/inetOrgPerson.inc:468 -msgid "Postal address" -msgstr "Adresse postale" - -#: ../lib/modules/inetOrgPerson.inc:252 -msgid "Postal address, city" -msgstr "Adresse postale, ville." - -#: ../lib/modules/inetOrgPerson.inc:68 ../lib/modules/inetOrgPerson.inc:167 -#: ../lib/modules/inetOrgPerson.inc:247 ../lib/modules/inetOrgPerson.inc:248 -#: ../lib/modules/inetOrgPerson.inc:424 ../lib/modules/inetOrgPerson.inc:467 -msgid "Postal code" -msgstr "Code postal" - -#: ../help/help.inc:77 -msgid "Predefined values" -msgstr "Valeurs prédéfinies" - -#: ../lib/modules/inetOrgPerson.inc:151 -msgid "President" -msgstr "President" - -#: ../lib/modules/posixGroup.inc:129 ../lib/modules/posixAccount.inc:184 -#: ../lib/modules/posixAccount.inc:251 ../lib/modules/posixAccount.inc:315 -#: ../lib/modules/posixAccount.inc:350 ../lib/modules/posixAccount.inc:850 -#: ../lib/modules/posixAccount.inc:1004 ../lib/modules/posixAccount.inc:1032 -#: ../lib/modules/posixAccount.inc:1084 ../help/help.inc:156 -#: ../help/help.inc:168 -msgid "Primary group" -msgstr "Groupe primaire" - -#: ../templates/config/profmanage.php:106 -msgid "Profile deleted." -msgstr "Profil effacé." - -#: ../templates/tools.php:53 -msgid "Profile editor" -msgstr "Editeur de profil" - -#: ../templates/config/profmanage.php:50 -#: ../templates/config/profmanage.php:161 ../help/help.inc:114 -#: ../help/help.inc:116 ../help/help.inc:118 ../help/help.inc:120 -#: ../help/help.inc:122 ../help/help.inc:124 ../help/help.inc:126 -msgid "Profile management" -msgstr "Gestion de profil" - -#: ../templates/config/profmanage.php:176 -#: ../templates/config/profmanage.php:228 -#: ../templates/profedit/profilepage.php:152 ../help/help.inc:137 -msgid "Profile name" -msgstr "Nom de profil" - -#: ../templates/config/profmanage.php:90 -#: ../templates/config/profmanage.php:101 -msgid "Profile name is invalid!" -msgstr "Le nom de profil n'est pas valable !" - -#: ../templates/config/profmanage.php:192 -#: ../templates/config/profmanage.php:292 -msgid "Profile password" -msgstr "Mot de passe profil" - -#: ../templates/config/profmanage.php:88 -#: ../templates/config/profmanage.php:118 -msgid "Profile passwords are different or empty!" -msgstr "Les mots de passe profil sont différents ou vides !" - -#: ../lib/modules/sambaAccount.inc:49 ../lib/modules/sambaAccount.inc:50 -#: ../lib/modules/sambaAccount.inc:136 ../lib/modules/sambaAccount.inc:268 -#: ../lib/modules/sambaAccount.inc:360 ../lib/modules/sambaAccount.inc:733 -#: ../lib/modules/sambaAccount.inc:838 ../lib/modules/sambaSamAccount.inc:47 -#: ../lib/modules/sambaSamAccount.inc:48 -#: ../lib/modules/sambaSamAccount.inc:175 -#: ../lib/modules/sambaSamAccount.inc:284 -#: ../lib/modules/sambaSamAccount.inc:719 -#: ../lib/modules/sambaSamAccount.inc:863 -#: ../lib/modules/sambaSamAccount.inc:956 ../help/help.inc:212 -msgid "Profile path" -msgstr "Chemin de profil" - -#: ../lib/modules/sambaAccount.inc:49 ../lib/modules/sambaSamAccount.inc:47 -#: ../lib/modules/sambaSamAccount.inc:49 -msgid "Profile path is invalid!" -msgstr "Le chemin de profil n'est pas valable !" - -#: ../templates/profedit/profilecreate.php:112 -msgid "Profile was saved." -msgstr "Le profil a été sauvegardé." - -#: ../lib/modules/quota.inc:48 -msgid "Quota" -msgstr "Quota" - -#: ../templates/tree/templates/creation/custom.php:62 -msgid "RDN" -msgstr "RDN" - -#: ../templates/masscreate.php:155 ../templates/profedit/profilepage.php:111 -#: ../lib/modules.inc:976 ../help/help.inc:135 -msgid "RDN identifier" -msgstr "Identificateur RDN" - -#: ../lib/lists.inc:328 -msgid "RID (Windows UID)" -msgstr "RID (Windows UID)" - -#: ../templates/tree/templates/creation/new_ou_template.php:99 -msgid "Really create this new OU?" -msgstr "Vraiment créer cette nouvelle OU?" - -#: ../templates/tree/edit.php:519 -msgid "Really delete attribute?" -msgstr "Vraiment effacer attribut?" - -#: ../lib/modules/nisMailAlias.inc:64 ../lib/modules/nisMailAlias.inc:172 -msgid "Recipient" -msgstr "Destinataire" - -#: ../lib/modules/nisMailAlias.inc:68 ../lib/modules/nisMailAlias.inc:82 -#: ../lib/modules/nisMailAlias.inc:308 -msgid "Recipient list" -msgstr "Liste de destinataire" - -#: ../templates/tree/rdelete.php:71 -msgid "Recursive delete progress" -msgstr "Effacement récursif en cours" - -#: ../templates/config/confmain.php:468 -msgid "Reenter Password" -msgstr "Redonnez le mot de passe" - -#: ../templates/config/profmanage.php:384 -msgid "Reenter new master password" -msgstr "Donnez un nouveau mot de passe principal" - -#: ../templates/config/profmanage.php:201 -#: ../templates/config/profmanage.php:308 -msgid "Reenter profile password" -msgstr "Redonnez le mot de passe profil" - -#: ../templates/tree/edit.php:100 ../lib/tree.inc:64 ../lib/tree.inc:65 -#: ../lib/lists.inc:150 -msgid "Refresh" -msgstr "Actualisez" - -#: ../templates/tree/templates/creation/custom.php:62 -msgid "Relative distinguished name" -msgstr "Nom relatif" - -#: ../templates/pdfedit/pdfpage.php:581 ../lib/modules/ieee802device.inc:146 -#: ../lib/modules/inetLocalMailRecipient.inc:208 -#: ../lib/modules/nisMailAlias.inc:174 -msgid "Remove" -msgstr "Efface" - -#: ../templates/config/profmanage.php:224 ../help/help.inc:116 -msgid "Rename profile" -msgstr "Renommer le profil" - -#: ../templates/config/profmanage.php:97 -msgid "Renamed profile." -msgstr "Profil renommé." - -#: ../lib/modules/posixGroup.inc:163 ../lib/modules/posixGroup.inc:262 -#: ../lib/modules/sambaAccount.inc:690 ../lib/modules/sambaSamAccount.inc:676 -#: ../lib/modules/posixAccount.inc:877 ../lib/modules/posixAccount.inc:982 -msgid "Repeat password" -msgstr "Repetez le mot de passe" - -#: ../lib/modules/posixAccount.inc:65 ../lib/modules/posixAccount.inc:709 -msgid "Replaced $user or $group in homedir." -msgstr "$user ou $group remplacés dans le répertoire home utilisateur." - -#: ../templates/tree/edit.php:238 -#, php-format -msgid "Required attribute for objectClass(es) %s" -msgstr "Attribut obligatoire pour l' objectClass %s" - -#: ../templates/tree/templates/creation/custom.php:187 -#: ../templates/schema/schema.php:389 -msgid "Required attributes" -msgstr "Attributs obligatoire" - -#: ../templates/domain.php:222 ../templates/config/confmain.php:483 -#: ../templates/profedit/profilepage.php:162 -msgid "Reset" -msgstr "Réinitialisation" - -#: ../lib/modules.inc:918 -msgid "Reset changes" -msgstr "Réinitialisation des changements." - -#: ../lib/modules/sambaAccount.inc:780 ../lib/modules/sambaSamAccount.inc:768 -msgid "Reset password" -msgstr "Réinitialisation du mot de passe" - -#: ../lib/modules/inetLocalMailRecipient.inc:56 -#: ../lib/modules/inetLocalMailRecipient.inc:91 -#: ../lib/modules/inetLocalMailRecipient.inc:195 -#: ../lib/modules/inetLocalMailRecipient.inc:369 -msgid "Routing address" -msgstr "Adresse de routage" - -#: ../lib/modules/sambaAccount.inc:91 -msgid "Samba 2" -msgstr "Samba2" - -#: ../lib/modules/sambaSamAccount.inc:89 -#: ../lib/modules/sambaGroupMapping.inc:218 -msgid "Samba 3" -msgstr "Samba3" - -#: ../templates/domain.php:279 -msgid "Samba 3 domain SID is invalid!" -msgstr "Le SID domaine de Samba 3 n'est pas valable !" - -#: ../templates/tools.php:61 -msgid "Samba 3 domains" -msgstr "Samba 3 Domaines" - -#: ../templates/ou_edit.php:410 -msgid "Samba Hosts" -msgstr "Machines Samba" - -#: ../lib/modules/sambaSamAccount.inc:187 -#: ../lib/modules/sambaSamAccount.inc:191 -#: ../lib/modules/sambaSamAccount.inc:309 -#: ../lib/modules/sambaSamAccount.inc:333 -msgid "Samba RID" -msgstr "Samba RID" - -#: ../lib/modules/sambaGroupMapping.inc:252 -#: ../lib/modules/sambaGroupMapping.inc:277 -msgid "Samba RID number" -msgstr "Nombre RID Samba" - -#: ../lib/modules/sambaGroupMapping.inc:246 -msgid "Samba display name" -msgstr "Nom Affichage Samba" - -#: ../lib/modules/sambaGroupMapping.inc:238 -msgid "Samba domain name" -msgstr "Nom du Domaine Samba" - -#: ../lib/modules/sambaGroupMapping.inc:258 -#: ../lib/modules/sambaGroupMapping.inc:285 -#: ../lib/modules/sambaGroupMapping.inc:302 -msgid "Samba group type" -msgstr "Type groupe Samba" - -#: ../lib/modules/sambaAccount.inc:322 ../lib/modules/sambaAccount.inc:687 -#: ../lib/modules/sambaSamAccount.inc:137 -#: ../lib/modules/sambaSamAccount.inc:674 -msgid "Samba password" -msgstr "Mot de passe Samba" - -#: ../lib/modules/sambaAccount.inc:55 ../lib/modules/sambaAccount.inc:148 -#: ../lib/modules/sambaAccount.inc:280 ../lib/modules/sambaAccount.inc:366 -#: ../lib/modules/sambaAccount.inc:739 ../lib/modules/sambaAccount.inc:839 -#: ../lib/modules/sambaSamAccount.inc:53 -#: ../lib/modules/sambaSamAccount.inc:181 -#: ../lib/modules/sambaSamAccount.inc:296 -#: ../lib/modules/sambaSamAccount.inc:725 -#: ../lib/modules/sambaSamAccount.inc:875 -#: ../lib/modules/sambaSamAccount.inc:957 ../help/help.inc:214 -msgid "Samba workstations" -msgstr "Samba PCs" - -#: ../lib/pdf.inc:455 -msgid "Samba-Host information page" -msgstr "Page d'informations de machines Samba" - -#: ../templates/tree/edit.php:506 ../templates/pdfedit/pdfpage.php:831 -#: ../templates/profedit/profilepage.php:160 -msgid "Save" -msgstr "Sauvegarder" - -#: ../help/help.inc:220 -msgid "Save profile" -msgstr "Sauvegarder le profil" - -#: ../templates/config/confsave.php:177 -msgid "Saving group modules failed!" -msgstr "Echec de l' enregistrement du module groupe !" - -#: ../templates/config/confsave.php:183 -msgid "Saving host modules failed!" -msgstr "Enregistrement des modules machine echoué!" - -#: ../templates/config/confsave.php:171 -msgid "Saving user modules failed!" -msgstr "La sauveagrde des modules Utilisateurs a échouée !" - -#: ../templates/tools.php:90 -msgid "Schema browser" -msgstr "Navigateur de Schema" - -#: ../templates/pdfedit/pdfdelete.php:56 ../templates/pdfedit/pdfdelete.php:59 -#: ../templates/pdfedit/pdfdelete.php:78 -msgid "Scope" -msgstr "Etendue" - -#: ../lib/modules/sambaSamAccount.inc:50 ../lib/modules/sambaSamAccount.inc:51 -#: ../help/help.inc:96 ../help/help.inc:210 -msgid "Script path" -msgstr "Chemin de script" - -#: ../templates/config/confsave.php:159 ../lib/modules/sambaSamAccount.inc:50 -msgid "Script path is invalid!" -msgstr "Le chemin de script n'est pas valable !" - -#: ../help/help.inc:101 -msgid "Script server" -msgstr "Serveur de script" - -#: ../templates/config/confsave.php:165 -msgid "Script server is invalid!" -msgstr "Le serveur de script n'est pas valable !" - -#: ../templates/config/confmain.php:413 -msgid "Script settings" -msgstr "Paramètres de scripts" - -#: ../templates/pdfedit/pdfpage.php:740 -msgid "Section" -msgstr "Section" - -#: ../templates/config/confmain.php:441 -msgid "Security settings" -msgstr "Paramètres de sécurité" - -#: ../templates/lists/listhosts.php:104 ../templates/lists/listgroups.php:104 -#: ../templates/lists/listdomains.php:121 ../templates/lists/listusers.php:131 -msgid "See README.openldap.txt to solve this problem." -msgstr "Voir README.openldap.txt pour résoudre ce problème" - -#: ../templates/help.php:112 -msgid "See also" -msgstr "Voir aussi" - -#: ../templates/tree/create_form.php:76 -msgid "Select a template for the creation process" -msgstr "Sélectionne un modèle pour le process de création" - -#: ../templates/lists/listhosts.php:199 ../templates/lists/listgroups.php:216 -#: ../templates/lists/listusers.php:246 -msgid "Select all" -msgstr "Tout sélectionner" - -#: ../help/help.inc:222 -msgid "Select group profile" -msgstr "Sélectionnez le profil de groupe" - -#: ../lib/modules/posixAccount.inc:946 -msgid "Selected groups" -msgstr "Groupes sélectionnés" - -#: ../templates/config/confmodules.php:169 -msgid "Selected modules" -msgstr "Modules sélectionnés" - -#: ../lib/modules/posixGroup.inc:228 -msgid "Selected users" -msgstr "Utilisateur(s) Sélectionné(s)" - -#: ../templates/config/confsave.php:92 -msgid "Server Address is empty!" -msgstr "Le serveur d'adresse est vide !" - -#: ../templates/config/confmain.php:161 ../lib/config.inc:356 -#: ../help/help.inc:48 -msgid "Server address" -msgstr "Serveur d'adresse" - -#: ../templates/config/confmain.php:417 ../lib/config.inc:369 -msgid "Server of external script" -msgstr "Serveur de scripte externe" - -#: ../templates/config/confmain.php:158 -msgid "Server settings" -msgstr "Paramètres de serveur" - -#: ../lib/modules/posixGroup.inc:173 ../lib/modules/posixAccount.inc:887 -#: ../lib/modules/posixAccount.inc:1021 -msgid "Set no password" -msgstr "Config. Pas de mot de passe" - -#: ../templates/config/profmanage.php:288 ../help/help.inc:120 -msgid "Set profile password" -msgstr "Donnez le mot de passe profil" - -#: ../lib/modules/posixGroup.inc:405 -msgid "Sets the group password." -msgstr "Configure le mot de passe Groupe" - -#: ../lib/modules/shadowAccount.inc:62 -msgid "Shadow" -msgstr "Ombre" - -#: ../templates/massBuildAccounts.php:196 -msgid "Show LDIF file" -msgstr "Montre fichier LDIF" - -#: ../templates/tree/edit.php:106 -msgid "Show internal attributes" -msgstr "Montre les attributs internes" - -#: ../templates/schema/schema.php:200 -msgid "Single valued" -msgstr "Valeur seule" - -#: ../templates/pdfedit/pdfpage.php:455 -msgid "Size" -msgstr "Taille" - -#: ../lib/modules/quota.inc:422 -msgid "Soft block" -msgstr "Bloc souple" - -#: ../lib/modules/quota.inc:72 ../lib/modules/quota.inc:293 -#: ../lib/modules/quota.inc:350 -msgid "Soft block limit" -msgstr "Limite de bloc souple" - -#: ../lib/modules/quota.inc:73 -msgid "Soft block limit." -msgstr "Limite de bloc souple" - -#: ../lib/modules/quota.inc:422 -msgid "Soft inode" -msgstr "Inode souple" - -#: ../lib/modules/quota.inc:89 -msgid "Soft inode (files) limit." -msgstr "Limite souple d'inodes (fichiers)." - -#: ../lib/modules/quota.inc:88 ../lib/modules/quota.inc:297 -#: ../lib/modules/quota.inc:352 -msgid "Soft inode limit" -msgstr "Limite d'inode souple" - -#: ../templates/tree/edit.php:133 -#, php-format -msgid "Some attributes (%s) were modified and are highlighted below." -msgstr "Des attributs (%s) ont étés modifiés et sont surlignés ci-dessous." - -#: ../lib/modules.inc:886 -msgid "Some required information is missing" -msgstr "Des informations obligatoires sont manquantes" - -#: ../templates/help.php:144 -#, php-format -msgid "" -"Sorry this help id ({bold}%s{endbold}) is not available for this module " -"({bold}%s{endbold})." -msgstr "" -"Désolé, le numéro d'aide: ({bold}%s{endbold}) n'est pas disponible pour ce " -"module ({bold}%s{endbold})" - -#: ../templates/help.php:157 -#, php-format -msgid "Sorry this help number ({bold}%d{endbold}) is not available." -msgstr "Désolé, le numéro d'aide: {bold}%d{endbold} n'est pas disponible" - -#: ../lib/modules/sambaAccount.inc:62 ../lib/modules/sambaAccount.inc:63 -#: ../lib/modules/sambaAccount.inc:293 ../lib/modules/sambaAccount.inc:375 -#: ../lib/modules/sambaAccount.inc:771 ../lib/modules/sambaSamAccount.inc:58 -#: ../lib/modules/sambaSamAccount.inc:59 -#: ../lib/modules/sambaSamAccount.inc:759 -msgid "Special user" -msgstr "Utilisateurs Spécial" - -#: ../templates/pdfedit/pdfpage.php:645 ../templates/pdfedit/pdfpage.php:651 -#: ../templates/pdfedit/pdfpage.php:777 -msgid "Static text" -msgstr "Texte Static" - -#: ../templates/tree/templates/creation/custom.php:54 -msgid "Step 1 of 2: Name and object class(es)" -msgstr "Etape 1 de 2: Nom et object class(es)" - -#: ../templates/tree/templates/creation/custom.php:177 -msgid "Step 2 of 2: Specify attributes and values" -msgstr "Etape 2 de 2: Spécifie attributs et valeurs" - -#: ../lib/modules/inetOrgPerson.inc:132 -msgid "Steve" -msgstr "Steve" - -#: ../lib/modules/sambaAccount.inc:200 ../lib/modules/sambaSamAccount.inc:216 -#: ../lib/modules/inetOrgPerson.inc:125 -msgid "Steve Miller" -msgstr "Steve Miller" - -#: ../lib/modules/posixAccount.inc:228 -msgid "Steve Miller,Room 2.14,123-123-1234,123-123-1234" -msgstr "Steve Miller,Chambre 2.14,123-123-1234,123-123-1234" - -#: ../lib/modules/inetOrgPerson.inc:64 ../lib/modules/inetOrgPerson.inc:161 -#: ../lib/modules/inetOrgPerson.inc:243 ../lib/modules/inetOrgPerson.inc:244 -#: ../lib/modules/inetOrgPerson.inc:420 ../lib/modules/inetOrgPerson.inc:466 -msgid "Street" -msgstr "Rue" - -#: ../templates/pdfedit/pdfpage.php:805 -msgid "Structure name" -msgstr "Nom de Structure" - -#: ../templates/ou_edit.php:94 ../templates/ou_edit.php:159 -#: ../templates/ou_edit.php:224 ../templates/ou_edit.php:289 -#: ../templates/ou_edit.php:480 ../templates/domain.php:221 -#: ../templates/config/profmanage.php:403 -#: ../templates/config/confmodules.php:98 -#: ../templates/config/confmodules.php:101 -#: ../templates/config/confmain.php:481 ../templates/pdfedit/pdfdelete.php:81 -#: ../templates/pdfedit/pdfpage.php:797 ../templates/pdfedit/pdfmain.php:143 -#: ../templates/profedit/profiledelete.php:84 -#: ../templates/profedit/profilemain.php:156 ../lib/modules/posixGroup.inc:267 -#: ../lib/modules/posixAccount.inc:987 -msgid "Submit" -msgstr "Soumettre" - -#: ../templates/pdfedit/pdfpage.php:445 ../templates/pdfedit/pdfpage.php:490 -msgid "Submit page settings" -msgstr "Soumettre les paramètres de page" - -#: ../templates/schema/schema.php:182 -msgid "Substring Rule" -msgstr "Règle suffixe" - -#: ../templates/tree/rdelete.php:135 ../templates/tree/rdelete.php:147 -msgid "Success" -msgstr "Succès" - -#: ../templates/domain.php:189 ../lib/lists.inc:349 ../lib/modules.inc:963 -#: ../help/help.inc:226 ../help/help.inc:228 ../help/help.inc:230 -#: ../help/help.inc:249 -msgid "Suffix" -msgstr "Suffixe" - -#: ../templates/tree/add_value_form.php:189 ../templates/schema/schema.php:187 -msgid "Syntax" -msgstr "Syntaxe" - -#: ../templates/schema/schema.php:95 -msgid "Syntax OID" -msgstr "Syntaxe OID" - -#: ../templates/schema/schema.php:79 ../templates/schema/schema.php:80 -msgid "Syntaxes" -msgstr "Syntaxes" - -#: ../lib/modules/inetOrgPerson.inc:56 ../lib/modules/inetOrgPerson.inc:179 -#: ../lib/modules/inetOrgPerson.inc:255 ../lib/modules/inetOrgPerson.inc:256 -#: ../lib/modules/inetOrgPerson.inc:432 ../lib/modules/inetOrgPerson.inc:469 -msgid "Telephone number" -msgstr "Numéro de téléphone" - -#: ../lib/modules/inetOrgPerson.inc:157 -msgid "Temp" -msgstr "Temp" - -#: ../lib/modules/inetOrgPerson.inc:145 -msgid "Temp, contract until december" -msgstr "Temp,Contrat jusque Décembre" - -#: ../templates/tree/create_form.php:82 -msgid "Template" -msgstr "Modèle" - -#: ../help/help.inc:110 -msgid "Text for user PDF" -msgstr "Texte pour le PDF utilisateur" - -#: ../lib/modules/posixAccount.inc:316 ../help/help.inc:157 -msgid "The Primary Group the user should be member of." -msgstr "Le groupe primaire dont l'utilisateur doit etre membre." - -#: ../lib/modules/posixAccount.inc:351 ../help/help.inc:169 -msgid "The Primary group the host should be member of." -msgstr "Le groupe primaire dont l'hote doit etre membre" - -#: ../help/help.inc:252 -msgid "The SID of your Samba server. Get it with \"net getlocalsid\"." -msgstr "Le SID de votre serveur Samba. Récuperez le avec \"net getlocalsid\"." - -#: ../lib/modules/posixAccount.inc:63 -msgid "" -"The UID ranges for users and hosts overlap! This is a problem because LAM " -"uses the highest UID in use + 1 for new accounts. Please set the minimum UID " -"to equal values or use independent ranges." -msgstr "" -"L' intervale UID pour Utilisateurs et Machines dépasse! LAM utilise le plus " -"haut UID en utilisation +1 pour les nouveaux comptes. Mettre le Minimum UID " -"à une valeur égale ou utilise un intervale independant." - -#: ../templates/tree/templates/creation/custom.php:99 -#, php-format -msgid "The container you specified (%s) does not exist. Please try again." -msgstr "Le container spécifié (%s) n' existe pas. essayez de nouveau." - -#: ../help/help.inc:250 -msgid "The domain entry will be saved under this suffix." -msgstr "L'entrée domaine sera sauvegardée sous ce suffixe." - -#: ../lib/modules/shadowAccount.inc:49 -msgid "The expiration date is invalid." -msgstr "La date d' expiration est invalide!" - -#: ../templates/config/confsave.php:252 -msgid "The following settings were saved to profile:" -msgstr "Les paramètres suivants ont été sauvegardés dans le profile :" - -#: ../templates/initsuff.php:178 -msgid "The following suffix(es) are missing in LDAP. LAM can create them for you." -msgstr "Les suffixes suivants ne sont pas dans le LDAP. LAM peut les créer pour vous." - -#: ../lib/modules/sambaSamAccount.inc:71 -msgid "The format of the logon hours field is invalid!" -msgstr "Le format des heures de connexion est invalide !" - -#: ../templates/pdfedit/pdfpage.php:73 -msgid "The headline for a new section must contain at least one character." -msgstr "" -"Le début de ligne pour une nouvelle section doit contenir au moins un " -"caractère." - -#: ../templates/pdfedit/pdfpage.php:61 -msgid "" -"The name for that PDF-structure you submitted is not valid. A valid name " -"must constist at least of one of the following characters 'a-z','A-Z','0-" -"9','_','-','.'." -msgstr "" -"Le nom soumis pour cette structure PDF n' est pas valide.Un nom valide doit " -"contenir les caractères suivants 'a-z','A-Z','0-9','_','-','.'." - -#: ../help/help.inc:248 -msgid "The name of your Windows domain or workgroup." -msgstr "Le nom de votre domaine Windows ou groupe de travail." - -#: ../help/help.inc:140 -msgid "The new account will be saved under this LDAP suffix." -msgstr "Le nouveau compte sera sauvegardé sous ce suffixe LDAP." - -#: ../templates/config/confmain.php:110 -msgid "The password is invalid! Please try again." -msgstr "Le mot de passe n'est pas valable. Essayez encore, s'il vous plait." - -#: ../templates/pdfedit/pdfpage.php:77 -msgid "The static text must contain at least one character." -msgstr "Ce texte static doit contenir au moins un caractère." - -#: ../templates/tree/add_oclass_form.php:118 -msgid "There are new required attributes which need to be set." -msgstr "De nouveau attributs obligatoires doivent etre renseignés." - -#: ../lib/modules/posixGroup.inc:129 -msgid "There are still users who have this group as their primary group." -msgstr "Il y a encore des Utilisateurs qui ont ce groupe comme groupe primaire." - -#: ../lib/modules/sambaAccount.inc:62 ../lib/modules/sambaSamAccount.inc:58 -msgid "There can be only one administrator per domain." -msgstr "Il ne peut y avoir qu'un administrateur par Domaine." - -#: ../lib/modules/sambaGroupMapping.inc:351 -msgid "There can be only one group of this type." -msgstr "Il ne peut y avoir qu'un groupe de ce type." - -#: ../lib/modules/sambaAccount.inc:63 ../lib/modules/sambaSamAccount.inc:59 -msgid "There can be only one guest per domain." -msgstr "Il ne peut y avoir qu' un Invité par Domaine" - -#: ../templates/massDoUpload.php:119 -msgid "There were errors while uploading:" -msgstr "Il y a eu des erreurs à l' Upload:" - -#: ../lib/modules/posixGroup.inc:414 -msgid "" -"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." -msgstr "" -"Ceux-ci sont les nombres minimum et maximum à utiliser pour les IDs de " -"groupes pour la création de comptes groupes nouveaux. Un nouveau groupe aura " -"toujours le nombre utilisé le plus élévé plus un." - -#: ../lib/modules/posixAccount.inc:295 -msgid "" -"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." -msgstr "" -"Ceux-ci sont les nombres minimum et maximum à utiliser pour les IDs de " -"groupes pour la création de comptes groupes nouveaux. Un nouveau groupe aura " -"toujours le nombre utilisé le plus élévé plus un." - -#: ../lib/modules/posixAccount.inc:291 -msgid "" -"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." -msgstr "" -"Ceux-ci sont les nombres minimum et maximum à utiliser pour les IDs " -"d'utilisateurs pour la création de nouveaux comptes utilisateurs. Un nouveau " -"groupe aura toujours le nombre utilisé le plus élévé plus un." - -#: ../lib/modules/posixAccount.inc:85 -msgid "This GID number is invalid! Please provide either a number or a group name." -msgstr "Ce Nombre GID est invalide! Entre un Nombre ou un nom de groupe STP" - -#: ../templates/domain.php:282 -msgid "This Samba 3 domain is already present!" -msgstr "Ce domaine Samba 3 est déjà présent !" - -#: ../help/help.inc:121 -msgid "This changes the password of the selected profile." -msgstr "Ceci change le mot de passe du profil sélectionné." - -#: ../help/help.inc:123 -msgid "This changes the profile which is selected by default at login." -msgstr "Ceci change le profil qui sera sélectionné par défaut." - -#: ../templates/massBuildAccounts.php:148 -msgid "This column is defined to include unique entries but duplicates were found:" -msgstr "Cette colonne est définie pour inclure des entrées unique,doublons trouvés:" - -#: ../help/help.inc:95 -msgid "" -"This defines the language of the login window and sets this language as the " -"default language. Users can change the language at login." -msgstr "" -"Ceci définit la langue de la fenetre de connexion et rend cette langue la " -"langue par défaut. Les utilisateurs peuvent changer cette langue a la " -"connexion." - -#: ../lib/pdf.inc:511 -msgid "This document was automatically created by LDAP Account Manager" -msgstr "Ce document a été créé automatiquement par LDAP Account Manager." - -#: ../templates/tree/edit.php:202 -msgid "This entry has no attributes" -msgstr "Cette entrée n'a pas d' attributs" - -#: ../templates/tree/delete_form.php:95 -#, php-format -msgid "This entry is the root of a sub-tree containing %s entries." -msgstr "Cette entrée est la racine d' un sous-arbre contenant %s entrées." - -#: ../lib/modules/posixAccount.inc:86 -msgid "This gecos value is invalid!" -msgstr "Cette valeur est invalide!" - -#: ../lib/modules/ieee802device.inc:61 -msgid "This is a comma separated list of MAC addresses." -msgstr "C'est une liste de MAC Adresses séparée par des virgules" - -#: ../lib/modules/nisMailAlias.inc:69 -msgid "This is a comma separated list of recipients." -msgstr "Liste de destinataires séparés par des virgules" - -#: ../lib/modules/inetLocalMailRecipient.inc:65 -msgid "This is a comma separated list of the users public email addresses." -msgstr "Liste d' adresses mèl publiques d' utilisateurs séparées par des virgules" - -#: ../help/help.inc:88 -msgid "" -"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." -msgstr "" -"Ceci est la liste des entrées DNs valables de tout les utilisateurs qui sont " -"autorisés à se connecter à LDAP Account Manager. Les noms d'utilisateurs " -"doivent etre séparés par des point-virgules." - -#: ../templates/masscreate.php:211 -msgid "" -"This is an example how it would look in your spreadsheet program before you " -"convert to CSV:" -msgstr "" -"Ceci est un exemple de ce cela donne dans un Tableur avant que tu le " -"convertisse en CSV" - -#: ../lib/modules/sambaSamAccount.inc:61 -msgid "This is not a valid RID number!" -msgstr "Nombre RID invalide !" - -#: ../lib/modules/sambaGroupMapping.inc:353 -msgid "This is not a valid Samba 3 group type!" -msgstr "Ce n' est pas un groupe Samba3 valide!" - -#: ../lib/modules/inetLocalMailRecipient.inc:61 -msgid "This is one of the users public email addresses." -msgstr "Une des adresses mèl publique utilisateurs." - -#: ../lib/modules/nisMailAlias.inc:65 -msgid "This is one recipient for this alias." -msgstr "Un destinataire pour cet alias." - -#: ../lib/modules/ieee802device.inc:57 -msgid "" -"This is the MAC address of the network card of the device (e.g. 00:01:02:DE:" -"EF:18)." -msgstr "" -"C'est la MAC adresse de la carte réseau du périphérique (ex. 00:01:02:DE:" -"EF:18)." - -#: ../lib/modules/sambaAccount.inc:373 -msgid "This is the RID of the user's primary Windows group." -msgstr "C'est le RID du Groupe Primaire Windows de l' Utilisateur." - -#: ../lib/modules/sambaSamAccount.inc:185 -msgid "This is the SID of the user's primary Windows group." -msgstr "C'est le SID du Groupe Primaire Windows de l' Utilisateur." - -#: ../help/help.inc:97 -msgid "" -"This is the absolute path to an external script for setting quotas and " -"creating home directories." -msgstr "" -"Ceci est le chemin absolu vers un script externe pour le paramétrage des " -"quotas et la création des répertoires utilisateurs." - -#: ../lib/modules/sambaAccount.inc:323 ../lib/modules/sambaSamAccount.inc:138 -msgid "This is the account's Windows password." -msgstr "C'est le mot de passe Windows du Compte" - -#: ../lib/modules/sambaAccount.inc:320 ../lib/modules/sambaSamAccount.inc:135 -msgid "This is the account's full name on Windows systems." -msgstr "C'est le Nom complet du compte sur le système Windows" - -#: ../lib/modules/sambaGroupMapping.inc:270 -msgid "This is the group name which will be shown in Windows." -msgstr "C'est le Nom du groupe qui sera vu dans Windows" - -#: ../help/help.inc:136 -msgid "" -"This is the identifier for the relative DN value. It must be one of the " -"given allowed LDAP attributes (e.g. user accounts usually use \"uid\" while " -"groups use \"cn\")." -msgstr "" -"C'est l' identificateur pour la Valeur DN relative.Elle doit être une de " -"celles autorisées des Attributs LDAP (ex. comptes utilisateurs utilisent " -"\"uid\" tandis que groupes utilisent \"cn\")" - -#: ../help/help.inc:73 -msgid "" -"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." -msgstr "" -"Ceci est la liste des attributs à afficher dans la liste utilisateurs/" -"groupes/machines. Les entrées peuvent etre des valeurs prédéfinies, " -"\"#attribut\" ou individuelles, \"#attribut:description\". Les entrées " -"multiples seront séparés par des point-virgules." - -#: ../lib/modules/inetLocalMailRecipient.inc:69 -msgid "This is the mail server for the user." -msgstr "Serveur de courriel pour cet utilisateur." - -#: ../help/help.inc:93 -msgid "" -"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." -msgstr "" -"Ceci est le nombre de rangées à montrer dans la liste utilisateur/groupe/" -"machines. Si plus d'entrées sont trouvées, la liste sera divisée en " -"plusieurs pages." - -#: ../lib/modules/sambaGroupMapping.inc:278 -msgid "" -"This is the relative ID (similar to UID on Unix) for Windows accounts. If " -"you leave this empty LAM will calculate the RID from the UID. This can be " -"either a number or the name of a special group:" -msgstr "" -"Il s' agit de l' ID relative (équivalent a UID sous UNIX) pour les comptes " -"Windows. Si tu laisses cette entrée vide LAM calculera le RID depuis le UID. " -"Il est soit un nombre soit le nom d' un groupe spécial:" - -#: ../lib/modules/sambaSamAccount.inc:188 -msgid "" -"This is the relative ID number for your Windows account. You can either " -"enter a number or one of these special accounts: " -msgstr "" -"Nombre ID relatif pour le compte windows.Entrez soit un nombre soit l' un " -"des comptes spéciaux:" - -#: ../lib/modules/sambaSamAccount.inc:192 -msgid "" -"This is the relative ID number for your host account. If you leave this " -"empty LAM will use: uidNumber*2 + sambaAlgorithmicRidBase." -msgstr "" -"Nombre ID relatif pour le compte machine.Si vous laissez vide LAM utilisera: " -"uidNumber*2 + sambaAlgorithmicRidBase." - -#: ../help/help.inc:49 -msgid "" -"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." -msgstr "" -"Ceci est l'adresse serveur du serveur LDAP. Utilisez ldap:// pour les " -"connexions LDAP standard et ldaps:// pour les connexions cryptés. Le numéro " -"de port est facultatif." - -#: ../help/help.inc:102 -msgid "" -"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." -msgstr "" -"Ceci est le server ou le script lamdaemon.pl est conservé. LDAP Account " -"Manager fera une connexion SSH à ce serveur avec le nom d'utilisateur et le " -"mot de passe fourni à la connexion." - -#: ../help/help.inc:67 -msgid "This is the suffix for the LDAP tree viewer." -msgstr "Suffixe pour le navigateur d' arborescence LDAP" - -#: ../help/help.inc:61 -msgid "" -"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." -msgstr "" -"Ceci est le suffixe de l'arbre LDAP dans lequel on cherchera les entrées " -"d'utilisateur/groupes/machines. Seules les entrées dans ces sous-arbres " -"seront affichées dans la liste utilisateurs/groupes/machines. Lors de la " -"création d'un nouveau compte, ceci sera le DN avec lequel il sera sauvegardé." - -#: ../lib/modules/inetLocalMailRecipient.inc:57 -msgid "This is the target email address for the user's mails." -msgstr "Cible d' adresse de courriel pour les mèls utilisateur." - -#: ../help/help.inc:109 -msgid "" -"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." -msgstr "" -"Ceci est le temps en minutes pendant lequel LAN mettra en cache ses " -"recherches LDAP. Des temps plus courts chargeront plus LDAP mais reduiront " -"la possibilité que les changements ne soient pas identifiés." - -#: ../lib/modules/posixAccount.inc:87 -msgid "This login shell is invalid!" -msgstr "Le shell de login est invalide !" - -#: ../templates/schema/schema.php:356 -msgid "This object class is obsolete." -msgstr "Cette classe d' objet est obsolète." - -#: ../lib/modules/sambaSamAccount.inc:198 -msgid "" -"This option defines the allowed logon hours for this account. The format is " -"the same as for the LDAP attribute. The 24*7 hours are represented as 168 " -"bit which are saved as 21 hex (21*8 = 168) values. The first bit represents " -"Sunday 0:00 - 0:59 in GMT." -msgstr "" -"Cette option définit les heures de connexions autorisées pour ce compte.Le " -"format est le meme que l' attribut LDAP.Les 24*7 heures sont représentées " -"comme 168 bits valeurs sauvées en 21 hex (21*8 = 168). Le premier bit " -"représente Dimanche 0:00 - 0:59 en GMT." - -#: ../help/help.inc:111 -msgid "This text will appear on top of every user PDF file." -msgstr "Ce texte apparaitra sur chaque fichier PDF utilisateur." - -#: ../templates/tools.php:84 -msgid "This tool allows you to customize the PDF pages." -msgstr "Cet outil vous permet de configurer les pages PDF" - -#: ../templates/lists/userlink.php:63 -msgid "This user was not found!" -msgstr "Cet utilisateur est introuvable !" - -#: ../lib/modules/sambaAccount.inc:65 ../lib/modules/sambaAccount.inc:66 -#: ../lib/modules/sambaAccount.inc:67 ../lib/modules/sambaAccount.inc:68 -#: ../lib/modules/sambaSamAccount.inc:63 ../lib/modules/sambaSamAccount.inc:64 -#: ../lib/modules/sambaSamAccount.inc:65 ../lib/modules/sambaSamAccount.inc:66 -msgid "This value can only be \\\"true\\\" or \\\"false\\\"!" -msgstr "Cette valeur est \"vraie\" ou \"fausse\"!" - -#: ../lib/modules/posixAccount.inc:88 -msgid "This value can only be \\\"true\\\" or \\\"false\\\"." -msgstr "Cette valeur est \"vraie\" ou \"fausse\"." - -#: ../lib/modules/posixGroup.inc:475 -msgid "This value must be a list of user names separated by semicolons." -msgstr "Cette valeur doit être une liste de noms séparée par des point-virgules." - -#: ../help/help.inc:244 -msgid "This will create a new organizational unit under the selected one." -msgstr "Ceci va créer une nouvelle unité organisationnelle sous celle sélectionnée." - -#: ../help/help.inc:246 -msgid "This will delete the selected organizational unit. The OU has to be empty." -msgstr "Ceci va effacer l'unité organisationnelle selectionnée. L'OU doit etre vide." - -#: ../help/help.inc:119 -msgid "This will delete the selected profile." -msgstr "Ceci va effacer le profil sélectionné." - -#: ../help/help.inc:221 -msgid "" -"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 -_." -msgstr "" -"Ceci va créer un profil du compte courant. Les valeurs sauvegardées sont les " -"mêmes que dans l'editeur de profil. Les noms de profil peuvent contenir les " -"lettres a-z, 0-9 et -_." - -#: ../lib/modules/posixAccount.inc:333 ../help/help.inc:155 -msgid "" -"To disable login use /bin/false. List of shells is read from lam/config/" -"shells" -msgstr "" -"Pour désactiver les logins, utilisez /bin/false. La liste des shells est lue " -"de lam/config/shells." - -#: ../templates/main_header.php:59 -msgid "Tools" -msgstr "Outils" - -#: ../templates/pdfedit/pdfpage.php:513 -msgid "Top" -msgstr "Debut" - -#: ../templates/lists/listusers.php:269 -msgid "Translate GID number to group name" -msgstr "Traduisez le nombre GID dans un nom de groupe" - -#: ../help/help.inc:66 -msgid "Tree suffix" -msgstr "Suffixe arborescence" - -#: ../templates/main_header.php:78 -msgid "Tree view" -msgstr "Vue arborescence" - -#: ../templates/config/confmain.php:217 ../lib/config.inc:362 -msgid "TreeSuffix" -msgstr "Arborescence Suffixe" - -#: ../templates/config/confsave.php:127 -msgid "TreeSuffix is invalid!" -msgstr "Arborescence Suffixe invalide !" - -#: ../templates/schema/schema.php:354 -msgid "Type" -msgstr "Type" - -#: ../lib/modules/posixAccount.inc:75 -msgid "UID" -msgstr "UID" - -#: ../lib/modules/posixAccount.inc:75 -msgid "UID has changed. Do you want to change home directory?" -msgstr "UID changé.Veux-tu changer le répertoire home ?" - -#: ../lib/modules/posixAccount.inc:70 -msgid "" -"UID must be a number. It has to be inside the UID range which is defined in " -"your configuration profile." -msgstr "" -"UID doit être un nombre.Il doit être compris dans l' intervale UID qui est " -"défini dans le profil de configu" - -#: ../lib/modules/posixAccount.inc:46 ../lib/modules/posixAccount.inc:178 -#: ../lib/modules/posixAccount.inc:245 ../lib/modules/posixAccount.inc:290 -#: ../lib/modules/posixAccount.inc:294 ../lib/modules/posixAccount.inc:302 -#: ../lib/modules/posixAccount.inc:840 ../lib/modules/posixAccount.inc:1081 -#: ../lib/lists.inc:303 ../lib/lists.inc:330 ../help/help.inc:146 -#: ../help/help.inc:166 -msgid "UID number" -msgstr "Numéro UID" - -#: ../lib/modules/posixAccount.inc:46 -#, php-format -msgid "" -"UID number has changed. To keep file ownership you have to run the following " -"command as root: 'find / -uid %s -exec chown %s {} \\;'" -msgstr "" -"Le numéro UID à changé. Vous devez lancer la commande suivante en tant que " -"root pour changer les droits fichiers existants: 'find / -uid %s -exec chown " -"%s {} \\;'" - -#: ../lib/modules/posixAccount.inc:63 ../lib/modules/posixAccount.inc:154 -msgid "UID ranges for Unix accounts" -msgstr "Intervale UID pour les comptes Unix" - -#: ../lib/modules/sambaAccount.inc:358 ../lib/modules/sambaSamAccount.inc:173 -#: ../help/help.inc:217 -msgid "" -"UNC-path (\\\\server\\share) of homedirectory. $user and $group are replaced " -"with user- and groupname." -msgstr "" -"Chemin UNC (\\\\Serveur\\partage) des homedirectory. $user et $group sont " -"remplacés par les noms utilisateurs et groupe." - -#: ../templates/pdfedit/pdfpage.php:581 -msgid "UP" -msgstr "UP" - -#: ../templates/ou_edit.php:55 ../templates/ou_edit.php:120 -#: ../templates/ou_edit.php:185 ../templates/ou_edit.php:250 -msgid "Unable to create new OU!" -msgstr "Impossible de créer un nouveau OU !" - -#: ../templates/config/profmanage.php:86 -msgid "Unable to create new profile!" -msgstr "Impossible de créer un nouveau profil !" - -#: ../templates/ou_edit.php:72 ../templates/ou_edit.php:137 -#: ../templates/ou_edit.php:202 ../templates/ou_edit.php:267 -msgid "Unable to delete OU!" -msgstr "Impossible d' effacer OU !" - -#: ../templates/pdfedit/pdfdelete.php:56 -msgid "Unable to delete PDF structure!" -msgstr "Impossible d'effacer la structure PDF !" - -#: ../templates/domain.php:349 -msgid "Unable to delete domain!" -msgstr "Impossible d' effacer le domaine!" - -#: ../templates/config/profmanage.php:108 -#: ../templates/profedit/profiledelete.php:60 -msgid "Unable to delete profile!" -msgstr "Impossible d'effacer un profil !" - -#: ../lib/modules/posixAccount.inc:1398 -msgid "Unable to find group in LDAP." -msgstr "Impossible de trouver le groupe dans LDAP." - -#: ../templates/config/confmain.php:398 -msgid "" -"Unable to load available languages. Setting English as default language. For " -"further instructions please contact the Admin of this site." -msgstr "" -"Impossible de charger des langues supplémentaires. L'Anglais sera utilisé en " -"langue par défaut. Pour plus d'instructions, contactez l'administrateur de " -"votre site." - -#: ../templates/login.php:100 -msgid "" -"Unable to load available languages. Setting English as default language. For " -"further instructions please contact the admin of this site." -msgstr "Impossible de charger les langues disponibles. Anglais définit par défaut. Pour plus d'instructions, contactez l'administrateur ." - -#: ../lib/profiles.inc:91 ../lib/profiles.inc:95 -msgid "Unable to load profile!" -msgstr "Impossible de charger le profil !" - -#: ../templates/schema/schema.php:99 ../templates/schema/schema.php:117 -#: ../templates/schema/schema.php:278 ../templates/schema/schema.php:312 -msgid "Unable to retrieve schema!" -msgstr "Impossible de récupérer le schema!" - -#: ../templates/profedit/profilecreate.php:114 -msgid "Unable to save profile!" -msgstr "Impossible de sauvegarder le profil !" - -#: ../lib/modules/posixGroup.inc:289 ../lib/modules/posixAccount.inc:112 -msgid "Unix" -msgstr "Unix" - -#: ../lib/modules/inetOrgPerson.inc:51 ../lib/modules/inetOrgPerson.inc:399 -#: ../lib/modules/inetOrgPerson.inc:461 ../help/help.inc:234 -msgid "Unix workstations" -msgstr "Machines de travail Unix" - -#: ../lib/modules/inetOrgPerson.inc:51 -msgid "Unix workstations is invalid." -msgstr "Les machines de travail Unix n'est pas valable." - -#: ../templates/config/confmodules.php:226 -msgid "Unsolved dependency:" -msgstr "Dépendance non résolue:" - -#: ../templates/massBuildAccounts.php:193 -msgid "Upload accounts to LDAP" -msgstr "Upload comptes dans LDAP" - -#: ../templates/masscreate.php:128 -msgid "Upload file and create accounts" -msgstr "Upload fichier et creation de comptes" - -#: ../lib/modules.inc:471 -#, php-format -msgid "Upload was stopped after errors in %s module!" -msgstr "Upload interrompu après erreurs dans %s module !" - -#: ../templates/schema/schema.php:215 -msgid "Usage" -msgstr "Utilisation" - -#: ../lib/modules/sambaAccount.inc:98 ../lib/modules/sambaAccount.inc:210 -#: ../lib/modules/sambaAccount.inc:325 ../lib/modules/sambaAccount.inc:328 -#: ../lib/modules/sambaSamAccount.inc:140 -#: ../lib/modules/sambaSamAccount.inc:143 -#: ../lib/modules/sambaSamAccount.inc:226 -msgid "Use Unix password" -msgstr "Utilisez le mot de passe unix" - -#: ../templates/pdfedit/pdfpage.php:442 ../templates/pdfedit/pdfpage.php:487 -#: ../templates/pdfedit/pdfpage.php:501 ../templates/pdfedit/pdfpage.php:519 -#: ../templates/pdfedit/pdfpage.php:530 ../templates/pdfedit/pdfpage.php:541 -#: ../templates/pdfedit/pdfpage.php:552 -msgid "Use default" -msgstr "Utilise Defaut" - -#: ../help/help.inc:99 ../help/help.inc:104 -msgid "" -"Use it at your own risk and read the documentation for lamdaemon before you " -"use it!" -msgstr "" -"Utilisez le à vos risques et périls et lisez la documentation pour lamdaemon " -"avant de l'utiliser !" - -#: ../lib/modules/posixGroup.inc:408 ../lib/modules/sambaAccount.inc:104 -#: ../lib/modules/sambaAccount.inc:218 ../lib/modules/sambaAccount.inc:331 -#: ../lib/modules/sambaAccount.inc:334 ../lib/modules/sambaAccount.inc:698 -#: ../lib/modules/sambaSamAccount.inc:146 -#: ../lib/modules/sambaSamAccount.inc:149 -#: ../lib/modules/sambaSamAccount.inc:234 -#: ../lib/modules/sambaSamAccount.inc:684 -#: ../lib/modules/sambaSamAccount.inc:831 ../lib/modules/posixAccount.inc:327 -#: ../help/help.inc:196 -msgid "Use no password" -msgstr "N'utilisez pas de mot de passe !" - -#: ../lib/modules/sambaAccount.inc:694 ../lib/modules/sambaSamAccount.inc:680 -#: ../lib/modules/sambaSamAccount.inc:825 ../help/help.inc:198 -msgid "Use unix password" -msgstr "Utilisez un mot de passe unix" - -#: ../lib/modules/quota.inc:68 ../lib/modules/quota.inc:292 -msgid "Used blocks" -msgstr "Blocs utilisés" - -#: ../lib/modules/quota.inc:69 -msgid "Used blocks. 1000 blocks are usually 1MB" -msgstr "Blocs utilisés. 1000 blocs representent d'habitude 1 MB." - -#: ../templates/schema/schema.php:274 -msgid "Used by attributes" -msgstr "Utilisés par les attributs" - -#: ../templates/schema/schema.php:243 -msgid "Used by object classes" -msgstr "Utilisés par les classes d' objet" - -#: ../help/help.inc:260 -msgid "Used for calculating RIDs from UID/GID. Do not change if unsure." -msgstr "" -"Utilisé pour calculer les RIDs à partir des UID/GID. Ne changez rien sans " -"etre sur de ce que vous faites." - -#: ../lib/modules/quota.inc:84 ../lib/modules/quota.inc:296 -msgid "Used inodes" -msgstr "Inodes utilisés" - -#: ../lib/modules/quota.inc:85 -msgid "Used inodes (files)" -msgstr "Inodes utilisés (fichiers)" - -#: ../lib/modules/sambaGroupMapping.inc:51 -msgid "User" -msgstr "Utilisateur" - -#: ../lib/lists.inc:302 -msgid "User ID" -msgstr "ID Utilisateur" - -#: ../lib/modules/sambaAccount.inc:242 ../lib/modules/sambaAccount.inc:349 -#: ../lib/modules/sambaAccount.inc:710 ../lib/modules/sambaSamAccount.inc:164 -#: ../lib/modules/sambaSamAccount.inc:258 -#: ../lib/modules/sambaSamAccount.inc:696 ../help/help.inc:202 -msgid "User can change password" -msgstr "L'utilisateur peut changer de mot de passe." - -#: ../lib/modules/posixAccount.inc:312 ../lib/modules/inetOrgPerson.inc:224 -#: ../help/help.inc:153 -msgid "User description. If left empty sur- and give name will be used." -msgstr "Description de l'utilisateur. Si vide, des noms vide seront utilisés." - -#: ../lib/pdf.inc:449 -msgid "User information page" -msgstr "Page d'information utilisateur" - -#: ../templates/config/confsave.php:132 -msgid "User list attributes are invalid!" -msgstr "Les attributs de la liste d'utilisateurs ne sont pas valables !" - -#: ../templates/schema/schema.php:210 -msgid "User modification" -msgstr "Modification utilisateur" - -#: ../templates/config/confmodules.php:79 ../templates/config/confmain.php:256 -#: ../lib/config.inc:371 -msgid "User modules" -msgstr "Modules Utilisateurs" - -#: ../lib/modules/sambaAccount.inc:249 ../lib/modules/sambaAccount.inc:351 -#: ../lib/modules/sambaAccount.inc:718 ../lib/modules/sambaSamAccount.inc:166 -#: ../lib/modules/sambaSamAccount.inc:265 -#: ../lib/modules/sambaSamAccount.inc:704 ../help/help.inc:204 -msgid "User must change password" -msgstr "L'utilisateur doit changer de mot de passe" - -#: ../templates/login.php:168 ../lib/modules/account.inc:66 -#: ../lib/modules/posixAccount.inc:170 -msgid "User name" -msgstr "Nom d'utilisateur" - -#: ../templates/profedit/profilemain.php:45 -msgid "User profiles" -msgstr "Profils Utilisateur" - -#: ../lib/modules/quota.inc:422 -msgid "User quota" -msgstr "Quota utilisateur" - -#: ../help/help.inc:60 -msgid "User/Group/Host suffix" -msgstr "Suffixe Utilisateur/Groupe/Machine" - -#: ../templates/config/confmain.php:177 ../lib/config.inc:358 -msgid "UserSuffix" -msgstr "Suffixe Utilisateur" - -#: ../templates/config/confsave.php:107 -msgid "UserSuffix is invalid!" -msgstr "Suffixe Utilisateur n'est pas valable !" - -#: ../lib/modules/sambaAccount.inc:834 ../lib/modules/sambaSamAccount.inc:952 -#: ../lib/modules/posixAccount.inc:76 ../lib/modules/posixAccount.inc:77 -#: ../lib/modules/posixAccount.inc:80 ../lib/modules/posixAccount.inc:307 -#: ../lib/modules/posixAccount.inc:836 ../lib/modules/posixAccount.inc:1080 -#: ../lib/lists.inc:305 ../help/help.inc:144 -msgid "Username" -msgstr "Nom d'utilisateur" - -#: ../lib/modules/posixAccount.inc:77 ../lib/modules/posixAccount.inc:82 -msgid "" -"Username contains invalid characters. Valid characters are: a-z, A-Z, 0-9 " -"and .-_ !" -msgstr "" -"Nom d'utilisateur contient des caractères invalides. Les caractères valides " -"sont: a-z, A-Z, 0-9 et .-_ !" - -#: ../lib/modules/posixAccount.inc:80 -msgid "Username in use. Selected next free username." -msgstr "Nom d'utilisateur déjà utilisé. Nom disponible suivant sélectionné." - -#: ../lib/modules/posixAccount.inc:308 ../help/help.inc:145 -msgid "" -"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." -msgstr "" -"Nom d'utilisateur de l'utilisateur qui doit étre créé. Les caractères " -"valides sont: a-z, 0-9 et .-_. LAM n'autorise pas de nombre en premier " -"caractère car useradd ne l'autorise pas non plus. LAM n'autorise pas les " -"majuscules car cela peut poser plusieurs problèmes. Si le nom d'utilisateur " -"est déjà utilisé, il sera développé avec un chiffre. Le prochain chiffre " -"disponible sera utilisé. Avertissement: Les vieux systèmes auront des " -"problèmes avec les nom d'utilisateur de plus de 8 caractères. Vous ne " -"pourrez pas vous connecter sur Windows si le nom d'utilisateur est plus long " -"que 16 caractères." - -#: ../templates/ou_edit.php:336 ../templates/main_header.php:81 -#: ../lib/modules/posixAccount.inc:57 ../lib/modules/posixAccount.inc:58 -#: ../lib/modules/posixAccount.inc:61 ../lib/modules/posixAccount.inc:126 -#: ../help/help.inc:79 -msgid "Users" -msgstr "Utilisateurs" - -#: ../help/help.inc:239 -msgid "Users also being member of the current group." -msgstr "Utilisateurs déjà membres du groupe actuel." - -#: ../lib/modules/posixGroup.inc:397 -msgid "Users who are member of the current group." -msgstr "Utilisateurs qui sont membres du groupe courant." - -#: ../lib/modules/posixGroup.inc:401 -msgid "" -"Users who will become member of the current group. User names are separated " -"by semicolons." -msgstr "" -"Utilisateurs qui deviendront membres du groupe courant.Noms séparés par " -"point-virgule." - -#: ../help/help.inc:183 -msgid "Users wich are also members of group." -msgstr "Utilisateurs qui sont déjà membres du groupe" - -#: ../templates/tree/creation_template.php:85 -msgid "Using template:" -msgstr "Modèle utilisé:" - -#: ../help/help.inc:87 -msgid "Valid users" -msgstr "Utilisateurs valables" - -#: ../templates/delete.php:181 ../lib/modules.inc:1553 -#, php-format -msgid "Was unable to add attribtues to DN: %s." -msgstr "Impossible d' ajouter attribut au DN:%s." - -#: ../lib/modules.inc:1518 ../lib/modules.inc:1527 -#, php-format -msgid "Was unable to create DN: %s." -msgstr "Impossible de créer DN: %s." - -#: ../templates/tree/delete.php:109 ../templates/delete.php:218 -#: ../lib/modules.inc:1511 -#, php-format -msgid "Was unable to delete DN: %s." -msgstr "Impossible d' effacer DN: %s." - -#: ../templates/tree/update.php:105 ../templates/tree/add_oclass.php:89 -#: ../templates/tree/add_oclass_form.php:155 ../templates/delete.php:172 -#: ../lib/modules.inc:1543 -#, php-format -msgid "Was unable to modify attribtues from DN: %s." -msgstr "Impossible de modifier attributs du DN: %s." - -#: ../templates/delete.php:190 ../lib/modules.inc:1563 -#, php-format -msgid "Was unable to remove attribtues from DN: %s." -msgstr "Impossible d' effacer attributs du DN: %s." - -#: ../help/help.inc:59 -msgid "" -"When using ldaps:// be sure to use exactly the same IP/domain name as in " -"your certificate!" -msgstr "" -"Lors de l'utilisation de ldaps:// vérifiez que vous utilisez la même " -"adresse IP/nom de domaine que dans le certificat !" - -#: ../templates/pdfedit/pdfpage.php:460 -msgid "Width" -msgstr "Largeur" - -#: ../help/help.inc:185 -msgid "Windows clients will show display name as group description." -msgstr "" -"Les clients windows auront le nom d'affichage en tant que description de " -"groupe." - -#: ../help/help.inc:224 -msgid "Windows domain" -msgstr "Domaine Windows" - -#: ../lib/modules/sambaAccount.inc:379 ../lib/modules/sambaSamAccount.inc:195 -msgid "Windows domain name of account." -msgstr "Nom de domaine windows du compte." - -#: ../help/help.inc:225 -msgid "Windows domain of host." -msgstr "Domaine windows de la machine." - -#: ../lib/modules/sambaAccount.inc:286 ../lib/modules/sambaAccount.inc:756 -#: ../lib/modules/sambaSamAccount.inc:302 -#: ../lib/modules/sambaSamAccount.inc:740 -#: ../lib/modules/sambaSamAccount.inc:960 -#: ../lib/modules/sambaGroupMapping.inc:174 -#: ../lib/modules/sambaGroupMapping.inc:300 -msgid "Windows group" -msgstr "groupe Windows" - -#: ../lib/modules/sambaAccount.inc:372 -msgid "Windows group RID" -msgstr "RID groupe windows" - -#: ../lib/modules/sambaAccount.inc:369 ../help/help.inc:232 -msgid "Windows group name" -msgstr "Nom de groupe Windows" - -#: ../lib/modules/sambaGroupMapping.inc:286 -msgid "Windows group type." -msgstr "Type de groupe windows" - -#: ../lib/modules/sambaGroupMapping.inc:273 -msgid "Windows groupname" -msgstr "Nom de groupe Windows" - -#: ../lib/modules/sambaSamAccount.inc:184 -msgid "Windows primary group SID" -msgstr "SID du groupe primaire windows" - -#: ../lib/modules/sambaGroupMapping.inc:282 -msgid "Windows-Domain name of group." -msgstr "Nom de domaine windows du groupe." - -#: ../help/help.inc:237 -msgid "Windows-Domain of group." -msgstr "Domaine Windows du groupe." - -#: ../help/help.inc:219 -msgid "Windows-Domain of user." -msgstr "Domaine Windows de l'utilisateur." - -#: ../templates/pdfedit/pdfdelete.php:89 -#: ../templates/profedit/profiledelete.php:92 -msgid "Wrong or missing type!" -msgstr "Mauvais type ou type vide !" - -#: ../templates/login.php:366 -msgid "Wrong password/user name combination. Please try again." -msgstr "Mauvaise combinaison mot de passe/nom d'utilisateur donnée. Réessayez SVP." - -#: ../templates/schema/schema.php:159 ../templates/schema/schema.php:201 -#: ../templates/schema/schema.php:206 ../templates/schema/schema.php:211 -msgid "Yes" -msgstr "Oui" - -#: ../lib/modules/posixGroup.inc:471 ../lib/modules/posixAccount.inc:76 -#: ../lib/modules/posixAccount.inc:78 -msgid "" -"You are using a capital letters. This can cause problems because windows " -"isn't case-sensitive." -msgstr "" -"Vous utilisez une lettre majuscule. Ceci peut poser des problèmes car " -"windows est insensible à la casse." - -#: ../help/help.inc:187 -msgid "" -"You can select a previous defined profile here. This will set all fields to " -"the profile values." -msgstr "" -"Vous pouvez sélectionner un profil défini précédemment ici. Ceci mettra tous " -"les champs aux valeurs du profil." - -#: ../lib/modules/posixGroup.inc:462 ../lib/modules/posixAccount.inc:73 -msgid "You cannot use this password options at the same time." -msgstr "Tu ne peux utiliser ces options de mot de passe à la fois." - -#: ../templates/tree/templates/creation/custom.php:106 -msgid "" -"You did not select any object classes for this object. Please go back and do " -"so." -msgstr "" -"Vous n' avez pas sélectionné de classe d' objet pour cet objet.retournez en " -"arrière et sélectionnez en une." - -#: ../templates/logout.php:70 -msgid "You have been logged off from LDAP Account Manager." -msgstr "Vous avez été déconnecté de LDAP Account Manager." - -#: ../templates/tree/add_attr.php:75 -msgid "You left the attribute value blank. Please go back and try again." -msgstr "Valeur attribut vide.retournez et renseignez svp." - -#: ../templates/tree/create.php:81 -#, php-format -msgid "You left the value blank for required attribute: %s." -msgstr "Valeur vide pour l' attribut obligatoire: %s" - -#: ../templates/tree/update_confirm.php:250 -msgid "You made no changes." -msgstr "Vous n' avez pas fait de changement." - -#: ../templates/tree/add_attr_form.php:164 -msgid "" -"Your PHP configuration has disabled file uploads. Please check php.ini " -"before proceeding." -msgstr "" -"Votre configuration PHP interdit les Uploads.Regardez php.ini avant de " -"continuer." - -#: ../templates/tree/update_confirm.php:188 -#: ../templates/tree/update_confirm.php:200 -msgid "[attribute deleted]" -msgstr "[attribut effacé]" - -#: ../lib/modules/sambaAccount.inc:264 ../lib/modules/sambaSamAccount.inc:280 -msgid "\\\\server\\homes\\smiller" -msgstr "\\\\serveur\\homes\\smiller" - -#: ../lib/modules/sambaAccount.inc:270 ../lib/modules/sambaSamAccount.inc:286 -msgid "\\\\server\\profiles\\smiller" -msgstr "\\\\serveur\\profiles\\smiller" - -#: ../templates/tree/edit.php:488 -msgid "add value" -msgstr "Ajout valeur" - -#: ../lib/modules/posixGroup.inc:352 -msgid "adminstrators" -msgstr "Administrateurs" - -#: ../templates/schema/schema.php:226 -msgid "character" -msgstr "caractère" - -#: ../templates/schema/schema.php:225 -msgid "characters" -msgstr "caractères" - -#: ../help/help.inc:71 -msgid "dc=yourcompany,dc=com" -msgstr "dc=masociété,dc=fr" - -#: ../templates/tree/edit.php:306 -msgid "delete attribute" -msgstr "efface attribut" - -#: ../templates/tree/edit.php:171 ../templates/tree/edit.php:173 -#: ../templates/tree/edit.php:300 ../templates/tree/edit.php:302 -#: ../templates/tree/add_value_form.php:106 -#: ../templates/tree/add_value_form.php:109 -msgid "download value" -msgstr "télécharge valeur" - -#: ../lib/modules/inetOrgPerson.inc:62 ../lib/modules/inetOrgPerson.inc:197 -#: ../lib/modules/inetOrgPerson.inc:267 ../lib/modules/inetOrgPerson.inc:268 -#: ../lib/modules/inetOrgPerson.inc:444 ../lib/modules/inetOrgPerson.inc:472 -msgid "eMail address" -msgstr "Adresse e-mail" - -#: ../templates/tree/edit.php:385 -msgid "false" -msgstr "faux" - -#: ../lib/modules/posixAccount.inc:193 -msgid "group01,group02" -msgstr "group01,group02" - -#: ../lib/modules/quota.inc:120 ../lib/modules/quota.inc:122 -#: ../lib/modules/quota.inc:189 ../lib/modules/quota.inc:191 -msgid "hours" -msgstr "heures" - -#: ../lib/tree.inc:1184 -msgid "jpegPhoto contains errors" -msgstr "erreurs sur jpegPhoto" - -#: ../help/help.inc:53 -msgid "" -"ldap://localhost:389 connects to localhost using a standard LDAP connection " -"on port 389" -msgstr "" -"ldap://localhost:389 fait une connexion sur localhost en utilisant une " -"connexion LDAP standard sur le port 389" - -#: ../help/help.inc:55 -msgid "" -"ldaps://141.40.146.133 connects to 141.40.146.133 using an encrypted LDAP " -"connection." -msgstr "" -"ldaps://141.40.146.133 fait une connexion sur 141.40.146.133 en utilisant " -"une connexion LDAP cryptée." - -#: ../lib/modules/posixAccount.inc:253 -msgid "machines" -msgstr "machines" - -#: ../lib/modules/sambaAccount.inc:302 ../lib/modules/sambaAccount.inc:312 -#: ../lib/modules/sambaSamAccount.inc:210 -#: ../lib/modules/sambaSamAccount.inc:329 -msgid "mydomain" -msgstr "MonDomaine" - -#: ../lib/modules/sambaSamAccount.inc:304 -msgid "mygroup" -msgstr "mongroupe" - -#: ../templates/tree/templates/creation/custom.php:189 -#: ../templates/tree/templates/creation/custom.php:212 -#: ../templates/schema/schema.php:166 ../templates/schema/schema.php:235 -#: ../templates/schema/schema.php:246 ../templates/schema/schema.php:295 -#: ../templates/schema/schema.php:361 ../templates/schema/schema.php:376 -#: ../templates/schema/schema.php:410 ../templates/schema/schema.php:432 -msgid "none" -msgstr "rien" - -#: ../templates/tree/edit.php:386 -msgid "none, remove value" -msgstr "rien, efface valeur" - -#: ../templates/schema/schema.php:222 -msgid "not applicable" -msgstr "non applicable" - -#: ../templates/schema/schema.php:173 ../templates/schema/schema.php:178 -#: ../templates/schema/schema.php:183 ../templates/schema/schema.php:216 -msgid "not specified" -msgstr "Non spécifié" - -#: ../help/help.inc:65 -msgid "" -"ou=People,dc=yourcompany,dc=com will read and store all accounts in this " -"subtree." -msgstr "" -"ou=People,dc=yourcompany,dc=com lira et mettra vos comptes dans ce sous-" -"arbre." - -#: ../lib/modules/posixAccount.inc:239 -msgid "pc01$" -msgstr "pc01$" - -#: ../lib/modules/posixAccount.inc:260 -msgid "pc01,Room 2.34" -msgstr "pc01,Bureau 2.34" - -#: ../templates/tree/edit.php:238 ../templates/config/confmain.php:494 -msgid "required" -msgstr "requis" - -#: ../templates/config/confmain.php:495 -msgid "required for Samba 3 accounts" -msgstr "requis pour un schema Samba 3" - -#: ../templates/pdfedit/pdfpage.php:546 -msgid "right" -msgstr "droite" - -#: ../lib/modules/posixGroup.inc:378 ../lib/modules/sambaAccount.inc:206 -#: ../lib/modules/sambaSamAccount.inc:222 ../lib/modules/posixAccount.inc:214 -msgid "secret" -msgstr "secret" - -#: ../lib/modules/posixAccount.inc:172 ../lib/modules/nisMailAlias.inc:84 -msgid "smiller" -msgstr "smiller" - -#: ../templates/tree/edit.php:431 -msgid "structural" -msgstr "Structurel" - -#: ../templates/tree/edit.php:383 -msgid "true" -msgstr "Vrai" - -#: ../lib/modules/posixGroup.inc:372 -msgid "user01,user02,user03" -msgstr "user01,user02,user03" - -#: ../lib/modules/inetOrgPerson.inc:199 -msgid "user@company.com" -msgstr "utilisateur@société.com" - -#: ../lib/modules/posixAccount.inc:186 -msgid "users" -msgstr "utilisateurs" - -#~ msgid "Attribute not defined in LDAP." -#~ msgstr "Attribut non définit dans LDAP" - -#~ msgid "Enter Username and Password for Account" -#~ msgstr "Entrez le nom d'utilisateur et son mot de passe pour le Compte" - -#~ msgid "No groups found in ldap." -#~ msgstr "Pas de groupes trouvés dans LDAP!" - diff --git a/lam/locale/hu_HU/LC_MESSAGES/messages.mo b/lam/locale/hu_HU/LC_MESSAGES/messages.mo deleted file mode 100644 index 28ec252f7019d85a39b0a82bcd831e5bbdf0db1d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 95290 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�{??B+)FdK(KNBXlelI;qkhWz^ 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 diff --git a/lam/locale/hu_HU/LC_MESSAGES/messages.po b/lam/locale/hu_HU/LC_MESSAGES/messages.po deleted file mode 100644 index 1d513f18..00000000 --- a/lam/locale/hu_HU/LC_MESSAGES/messages.po +++ /dev/null @@ -1,4899 +0,0 @@ -# $Id: messages.po,v 1.2 2004/10/01 12:29:59 gruberroland Exp $ -# -# -# LDAP Account Manager -# -# Ezt a verziot forditotta: Kakasy Gergely -# Utolso modositas: 2005. jun. 14. -# Kodolas: utf-8 -# -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: 2005-06-14 16:29+0100\n" -"Last-Translator: Kakasy Gergely \n" -"Language-Team: Hungarian \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Poedit-Language: Hungarian\n" -"X-Poedit-Country: HUNGARY\n" - -#: ../lib/modules/posixAccount.inc:320 -msgid "$user and $group are replaced with username or primary groupname." -msgstr "a $user és a $group a felhasználónévvel vagy az elsÅ‘dleges csoportnévvel helyettesítve." - -#: ../templates/lists/listdomains.php:145 -#: ../templates/lists/listdomains.php:195 -#, php-format -msgid "%s Samba domain(s) found" -msgstr "%s Samba tartományt találtam" - -#: ../templates/lists/listgroups.php:148 -#: ../templates/lists/listgroups.php:224 -#, php-format -msgid "%s group(s) found" -msgstr "%s csoportot találtam" - -#: ../templates/lists/listhosts.php:148 -#: ../templates/lists/listhosts.php:208 -#, php-format -msgid "%s host(s) found" -msgstr "%s gazdaállomást találtam" - -#: ../templates/lists/listusers.php:179 -#: ../templates/lists/listusers.php:254 -#, php-format -msgid "%s user(s) found" -msgstr "%s felhasználót találtam" - -#: ../templates/tree/templates/creation/custom.php:63 -msgid "(example: cn=MyNewPerson)" -msgstr "(példa: cn=AzÚjSzemélyem)" - -#: ../templates/tree/templates/creation/new_ou_template.php:60 -msgid "(hint: do not include \"ou=\")" -msgstr "(tanács: ne használja az \"ou=\"-t)" - -#: ../templates/tree/add_attr_form.php:135 -msgid "(no new attributes available for this entry)" -msgstr "(ehhez a bejegyzéshez nincsenek új attribútumok)" - -#: ../templates/tree/add_attr_form.php:173 -msgid "(no new binary attributes available for this entry)" -msgstr "(ehhez a bejegyzéshez nincsenek új bináris attribútumok)" - -#: ../lib/modules/posixAccount.inc:199 -msgid "/home/smiller" -msgstr "/home/imolnar" - -#: ../templates/massBuildAccounts.php:113 -msgid "A required column is missing in your CSV file." -msgstr "Egy szükséges oszlop hiányzik az Ön CSV file-jából." - -#: ../templates/ou_edit.php:95 -#: ../templates/ou_edit.php:160 -#: ../templates/ou_edit.php:225 -#: ../templates/ou_edit.php:290 -#: ../templates/config/confmodules.php:104 -#: ../templates/config/confmain.php:485 -#: ../templates/pdfedit/pdfdelete.php:82 -#: ../templates/pdfedit/pdfpage.php:834 -#: ../templates/pdfedit/pdfmain.php:144 -#: ../templates/profedit/profiledelete.php:85 -#: ../templates/profedit/profilepage.php:164 -#: ../templates/profedit/profilemain.php:157 -msgid "Abort" -msgstr "Megszakítás" - -#: ../lib/modules/account.inc:35 -msgid "Account" -msgstr "Témaszám" - -#: ../templates/massBuildAccounts.php:164 -#: ../lib/modules/ieee802device.inc:84 -#: ../lib/modules/posixGroup.inc:470 -#: ../lib/modules/posixGroup.inc:474 -#: ../lib/modules/posixGroup.inc:475 -#: ../lib/modules/sambaAccount.inc:48 -#: ../lib/modules/sambaAccount.inc:51 -#: ../lib/modules/sambaAccount.inc:54 -#: ../lib/modules/sambaAccount.inc:56 -#: ../lib/modules/sambaAccount.inc:58 -#: ../lib/modules/sambaAccount.inc:61 -#: ../lib/modules/sambaAccount.inc:64 -#: ../lib/modules/sambaAccount.inc:65 -#: ../lib/modules/sambaAccount.inc:66 -#: ../lib/modules/sambaAccount.inc:67 -#: ../lib/modules/sambaAccount.inc:68 -#: ../lib/modules/sambaAccount.inc:69 -#: ../lib/modules/sambaAccount.inc:70 -#: ../lib/modules/sambaAccount.inc:71 -#: ../lib/modules/sambaAccount.inc:72 -#: ../lib/modules/sambaAccount.inc:73 -#: ../lib/modules/sambaSamAccount.inc:46 -#: ../lib/modules/sambaSamAccount.inc:49 -#: ../lib/modules/sambaSamAccount.inc:52 -#: ../lib/modules/sambaSamAccount.inc:54 -#: ../lib/modules/sambaSamAccount.inc:57 -#: ../lib/modules/sambaSamAccount.inc:60 -#: ../lib/modules/sambaSamAccount.inc:61 -#: ../lib/modules/sambaSamAccount.inc:62 -#: ../lib/modules/sambaSamAccount.inc:63 -#: ../lib/modules/sambaSamAccount.inc:64 -#: ../lib/modules/sambaSamAccount.inc:65 -#: ../lib/modules/sambaSamAccount.inc:66 -#: ../lib/modules/sambaSamAccount.inc:67 -#: ../lib/modules/sambaSamAccount.inc:68 -#: ../lib/modules/sambaSamAccount.inc:69 -#: ../lib/modules/sambaSamAccount.inc:70 -#: ../lib/modules/sambaSamAccount.inc:71 -#: ../lib/modules/sambaSamAccount.inc:72 -#: ../lib/modules/posixAccount.inc:66 -#: ../lib/modules/posixAccount.inc:70 -#: ../lib/modules/posixAccount.inc:74 -#: ../lib/modules/posixAccount.inc:82 -#: ../lib/modules/posixAccount.inc:83 -#: ../lib/modules/posixAccount.inc:84 -#: ../lib/modules/posixAccount.inc:85 -#: ../lib/modules/posixAccount.inc:86 -#: ../lib/modules/posixAccount.inc:87 -#: ../lib/modules/posixAccount.inc:88 -#: ../lib/modules/sambaGroupMapping.inc:352 -#: ../lib/modules/sambaGroupMapping.inc:353 -#: ../lib/modules/shadowAccount.inc:40 -#: ../lib/modules/shadowAccount.inc:42 -#: ../lib/modules/shadowAccount.inc:44 -#: ../lib/modules/shadowAccount.inc:46 -#: ../lib/modules/shadowAccount.inc:48 -#: ../lib/modules/shadowAccount.inc:49 -#: ../lib/modules/inetOrgPerson.inc:53 -#: ../lib/modules/inetOrgPerson.inc:55 -#: ../lib/modules/inetOrgPerson.inc:57 -#: ../lib/modules/inetOrgPerson.inc:59 -#: ../lib/modules/inetOrgPerson.inc:61 -#: ../lib/modules/inetOrgPerson.inc:63 -#: ../lib/modules/inetOrgPerson.inc:65 -#: ../lib/modules/inetOrgPerson.inc:67 -#: ../lib/modules/inetOrgPerson.inc:69 -#: ../lib/modules/inetOrgPerson.inc:71 -#: ../lib/modules/inetOrgPerson.inc:73 -#: ../lib/modules/inetOrgPerson.inc:74 -#: ../lib/modules/inetLocalMailRecipient.inc:120 -#: ../lib/modules/inetLocalMailRecipient.inc:122 -#: ../lib/modules/inetLocalMailRecipient.inc:124 -#: ../lib/modules/nisMailAlias.inc:99 -#: ../lib/modules/nisMailAlias.inc:101 -#, php-format -msgid "Account %s:" -msgstr "%s témaszám:" - -#: ../templates/masscreate.php:78 -msgid "Account creation via file upload" -msgstr "Témaszám létrehozása file feltöltésével" - -#: ../lib/modules/shadowAccount.inc:163 -msgid "Account expiration date. Format: DD-MM-YYYY" -msgstr "Témaszám lejáratának dátuma. Formátum: NN-HH-ÉÉÉÉ" - -#: ../help/help.inc:181 -msgid "Account expire date. Format: DD-MM-YYYY" -msgstr "Témaszám lejáratának dátuma. Formátum: NN-HH-ÉÉÉÉ" - -#: ../lib/modules/shadowAccount.inc:340 -msgid "Account inactive" -msgstr "Használaton kívüli témaszám" - -#: ../lib/modules/sambaAccount.inc:116 -#: ../lib/modules/sambaAccount.inc:234 -#: ../lib/modules/sambaAccount.inc:343 -#: ../lib/modules/sambaAccount.inc:346 -#: ../lib/modules/sambaAccount.inc:704 -#: ../lib/modules/sambaSamAccount.inc:158 -#: ../lib/modules/sambaSamAccount.inc:161 -#: ../lib/modules/sambaSamAccount.inc:250 -#: ../lib/modules/sambaSamAccount.inc:690 -#: ../lib/modules/sambaSamAccount.inc:843 -#: ../help/help.inc:206 -msgid "Account is deactivated" -msgstr "Témaszám letiltva" - -#: ../help/help.inc:130 -msgid "Account lists - Filters" -msgstr "Témaszámlisták - SzűrÅ‘k" - -#: ../templates/config/confmain.php:252 -#: ../help/help.inc:112 -msgid "Account modules" -msgstr "Témaszám-modulok" - -#: ../templates/delete.php:85 -msgid "Account name:" -msgstr "Témaszám neve" - -#: ../lib/modules.inc:940 -msgid "Account was created successfully." -msgstr "Témaszám sikeresen létrehozva." - -#: ../lib/modules.inc:943 -msgid "Account was modified successfully." -msgstr "Témaszám sikeresen módosítva." - -#: ../templates/tree/add_value_form.php:156 -#: ../templates/tree/add_value_form.php:181 -#: ../templates/tree/add_oclass_form.php:137 -#: ../templates/tree/add_attr_form.php:129 -#: ../templates/tree/add_attr_form.php:161 -#: ../templates/pdfedit/pdfpage.php:725 -#: ../lib/modules/ieee802device.inc:153 -#: ../lib/modules/inetLocalMailRecipient.inc:215 -#: ../lib/modules/nisMailAlias.inc:181 -msgid "Add" -msgstr "Hozzáadás" - -#: ../templates/pdfedit/pdfpage.php:713 -msgid "Add after" -msgstr "KövetkezÅ‘ként hozzáadás" - -#: ../templates/tree/edit.php:123 -#: ../templates/tree/add_value_form.php:94 -#: ../templates/tree/add_attr_form.php:71 -#: ../templates/tree/add_attr_form.php:108 -#, php-format -msgid "Add new attribute" -msgstr "Új attribútumok hozzáadása" - -#: ../templates/tree/add_attr_form.php:141 -msgid "Add new binary attribute" -msgstr "Új bináris attribútium hozzáadása" - -#: ../templates/config/profmanage.php:172 -#: ../help/help.inc:114 -msgid "Add profile" -msgstr "Profil hozzáadása" - -#: ../templates/pdfedit/pdfpage.php:699 -msgid "Add section or static text" -msgstr "Szekció vagy statikus szöveg hozzáadása" - -#: ../templates/tree/add_value.php:93 -msgid "Adding attribute failed!" -msgstr "Az attribútum hozzáadása nem sikerült!" - -#: ../lib/modules/posixAccount.inc:191 -#: ../lib/modules/posixAccount.inc:336 -#: ../lib/modules/posixAccount.inc:856 -#: ../lib/modules/posixAccount.inc:944 -#: ../lib/modules/posixAccount.inc:1008 -#: ../lib/modules/posixAccount.inc:1085 -#: ../help/help.inc:148 -msgid "Additional groups" -msgstr "További csoportok" - -#: ../templates/massDoUpload.php:98 -msgid "Additional tasks for module:" -msgstr "A modul további feladatai:" - -#: ../lib/modules/sambaSamAccount.inc:545 -#: ../lib/modules/sambaSamAccount.inc:748 -#: ../lib/modules/sambaSamAccount.inc:751 -msgid "Administrator" -msgstr "Adminisztrátor" - -#: ../lib/modules/posixGroup.inc:366 -msgid "Administrators group" -msgstr "Adminisztrátor csoportja" - -#: ../templates/domain.php:171 -#: ../help/help.inc:259 -msgid "Algorithmic RID Base" -msgstr "Algoritmikus RID alap" - -#: ../templates/domain.php:287 -msgid "Algorithmic RID base is not a number!" -msgstr "Az algoritmikus RID alap nem szám!" - -#: ../lib/modules/nisMailAlias.inc:60 -#: ../lib/modules/nisMailAlias.inc:75 -#: ../lib/modules/nisMailAlias.inc:166 -#: ../lib/modules/nisMailAlias.inc:305 -msgid "Alias name" -msgstr "Alias név" - -#: ../templates/schema/schema.php:232 -msgid "Aliases" -msgstr "Alias-ok" - -#: ../templates/initsuff.php:155 -msgid "All changes were successful." -msgstr "Minden változtatás sikeres volt." - -#: ../lib/lists.inc:306 -msgid "Allowed hosts" -msgstr "Engedélyezett gazdagépek" - -#: ../lib/modules/sambaAccount.inc:810 -#: ../lib/modules/sambaAccount.inc:811 -#: ../lib/modules/sambaSamAccount.inc:798 -#: ../lib/modules/sambaSamAccount.inc:799 -msgid "Allowed workstations" -msgstr "Engedélyezett munkaállomások" - -#: ../templates/tree/edit.php:135 -#, php-format -msgid "An attribute (%s) was modified and is highlighted below." -msgstr "Egy attribútum (%s) módosult, ez lentebb kiemelten látszik." - -#: ../templates/lists/listusers.php:274 -msgid "Apply" -msgstr "Alkalmaz" - -#: ../templates/tree/delete_form.php:148 -msgid "Are you sure you want to permanently delete this object?" -msgstr "Valóban véglegesen törlölni kívánja ezt az objektumot?" - -#: ../templates/tree/update_confirm.php:148 -msgid "Attribute" -msgstr "Attribútum" - -#: ../templates/schema/schema.php:75 -#: ../templates/schema/schema.php:76 -msgid "Attribute types" -msgstr "Attribútum típusok" - -#: ../templates/config/confmain.php:323 -#: ../lib/config.inc:364 -msgid "Attributes in Group List" -msgstr "Attribútumok a csoport-listában" - -#: ../templates/config/confmain.php:333 -#: ../lib/config.inc:365 -msgid "Attributes in Host List" -msgstr "Attribútumok a gazdaállomások listájában" - -#: ../templates/config/confmain.php:313 -#: ../lib/config.inc:363 -msgid "Attributes in User List" -msgstr "Attribútumok a felhasználói listában" - -#: ../templates/pdfedit/pdfpage.php:852 -msgid "Available PDF fields" -msgstr "Rendelkezésre álló PDF mezÅ‘k" - -#: ../lib/modules/posixAccount.inc:956 -msgid "Available groups" -msgstr "Rendelkezésre álló csoportok" - -#: ../templates/config/confmodules.php:197 -msgid "Available modules" -msgstr "Rendelkezésre álló modulok" - -#: ../lib/modules/posixGroup.inc:238 -msgid "Available users" -msgstr "Rendelkezésre álló felhasználók" - -#: ../lib/modules/sambaAccount.inc:816 -#: ../lib/modules/sambaSamAccount.inc:804 -msgid "Available workstations" -msgstr "Rendelkezésre álló munkaállomások" - -#: ../templates/tree/update_confirm.php:251 -#: ../lib/modules/posixGroup.inc:244 -#: ../lib/modules/posixGroup.inc:268 -#: ../lib/modules/sambaAccount.inc:820 -#: ../lib/modules/sambaSamAccount.inc:808 -#: ../lib/modules/posixAccount.inc:962 -#: ../lib/modules/posixAccount.inc:988 -msgid "Back" -msgstr "Vissza" - -#: ../templates/config/confsave.php:254 -#: ../templates/config/conflogin.php:151 -#: ../templates/logout.php:71 -msgid "Back to Login" -msgstr "Vissza a bejelentkezéshez" - -#: ../templates/ou_edit.php:309 -#: ../templates/ou_edit.php:313 -msgid "Back to OU-Editor" -msgstr "Vissza az OU szerkesztÅ‘be" - -#: ../templates/pdfedit/pdfdelete.php:61 -#: ../templates/pdfedit/pdfdelete.php:69 -#: ../templates/pdfedit/pdfdelete.php:90 -msgid "Back to PDF Editor" -msgstr "Vissza a PDF szerkesztÅ‘be" - -#: ../templates/profedit/profilecreate.php:115 -#: ../templates/profedit/profiledelete.php:63 -#: ../templates/profedit/profiledelete.php:71 -#: ../templates/profedit/profiledelete.php:93 -msgid "Back to Profile Editor" -msgstr "Vissza a profilszerkesztÅ‘be" - -#: ../lib/modules.inc:953 -msgid "Back to account list" -msgstr "Vissza a témaszámlistához" - -#: ../templates/domain.php:325 -#: ../templates/domain.php:352 -msgid "Back to domain list" -msgstr "Vissza a tartománylistához" - -#: ../templates/lists/userlink.php:65 -msgid "Back to group list" -msgstr "Vissza a csoportlistához" - -#: ../templates/delete.php:236 -msgid "Back to list" -msgstr "Vissza a listához" - -#: ../templates/config/confsave.php:93 -#: ../templates/config/confsave.php:98 -#: ../templates/config/confsave.php:103 -#: ../templates/config/confsave.php:108 -#: ../templates/config/confsave.php:113 -#: ../templates/config/confsave.php:118 -#: ../templates/config/confsave.php:123 -#: ../templates/config/confsave.php:128 -#: ../templates/config/confsave.php:133 -#: ../templates/config/confsave.php:138 -#: ../templates/config/confsave.php:143 -#: ../templates/config/confsave.php:148 -#: ../templates/config/confsave.php:154 -#: ../templates/config/confsave.php:160 -#: ../templates/config/confsave.php:166 -#: ../templates/config/confsave.php:172 -#: ../templates/config/confsave.php:178 -#: ../templates/config/confsave.php:184 -#: ../templates/config/confsave.php:231 -msgid "Back to preferences..." -msgstr "Vissza a beállításokhoz..." - -#: ../templates/config/profmanage.php:417 -msgid "Back to profile login" -msgstr "Vissza a belépés profilhoz" - -#: ../templates/config/confmodules.php:108 -#: ../help/help.inc:128 -msgid "Base module" -msgstr "Alapmodul" - -#: ../templates/pdfedit/pdfpage.php:577 -msgid "Beginning" -msgstr "Kezdet" - -#: ../templates/tree/edit.php:168 -#: ../templates/tree/edit.php:297 -msgid "Binary value" -msgstr "Bináris érték" - -#: ../lib/modules/quota.inc:31 -msgid "Block hard quota" -msgstr "Blokk keménykvóta" - -#: ../lib/modules/quota.inc:31 -msgid "Block hard quota contains invalid characters. Only natural numbers are allowed." -msgstr "A blokk keménykvóta érvénytelen karaktereket tartalmaz. Csak természetes számok használhatóak." - -#: ../lib/modules/quota.inc:34 -msgid "Block quota" -msgstr "Blokk kvóta" - -#: ../lib/modules/quota.inc:30 -msgid "Block soft quota" -msgstr "Blokk lágykvóta" - -#: ../lib/modules/quota.inc:30 -msgid "Block soft quota contains invalid characters. Only natural numbers are allowed." -msgstr "A blokk lágykvóta érvénytelen karaktereket tartalmaz. Csak természetes számok használhatóak." - -#: ../lib/modules/quota.inc:34 -msgid "Block soft quota must be smaller than block hard quota." -msgstr "A blokk lágykvóta kisebb kell legyen, mint a blokk keménykvóta." - -#: ../templates/pdfedit/pdfpage.php:524 -msgid "Bottom" -msgstr "Alja" - -#: ../lib/modules/sambaGroupMapping.inc:55 -msgid "Builtin Group" -msgstr "Beépített csoport" - -#: ../templates/masscreate.php:127 -msgid "CSV file:" -msgstr "CSV file:" - -#: ../templates/config/confmain.php:231 -#: ../lib/config.inc:357 -#: ../help/help.inc:108 -msgid "Cache timeout" -msgstr "Cache idÅ‘túllépés" - -#: ../templates/config/confsave.php:97 -msgid "Cache timeout is invalid!" -msgstr "A cache idÅ‘túllépés értéke érvénytelen!" - -#: ../lib/modules/posixGroup.inc:397 -#: ../lib/modules/sambaAccount.inc:358 -#: ../lib/modules/sambaAccount.inc:361 -#: ../lib/modules/sambaAccount.inc:364 -#: ../lib/modules/sambaAccount.inc:367 -#: ../lib/modules/sambaAccount.inc:379 -#: ../lib/modules/sambaSamAccount.inc:173 -#: ../lib/modules/sambaSamAccount.inc:176 -#: ../lib/modules/sambaSamAccount.inc:179 -#: ../lib/modules/sambaSamAccount.inc:182 -#: ../lib/modules/posixAccount.inc:337 -#: ../lib/modules/sambaGroupMapping.inc:282 -#: ../lib/modules/shadowAccount.inc:147 -#: ../lib/modules/shadowAccount.inc:151 -#: ../lib/modules/shadowAccount.inc:155 -#: ../lib/modules/shadowAccount.inc:159 -#: ../help/help.inc:149 -#: ../help/help.inc:173 -#: ../help/help.inc:175 -#: ../help/help.inc:177 -#: ../help/help.inc:179 -#: ../help/help.inc:211 -#: ../help/help.inc:213 -#: ../help/help.inc:215 -#: ../help/help.inc:217 -#: ../help/help.inc:219 -#: ../help/help.inc:225 -#: ../help/help.inc:235 -#: ../help/help.inc:237 -#: ../help/help.inc:239 -msgid "Can be left empty." -msgstr "Ãœresen hagyható." - -#: ../templates/tree/update_confirm.php:237 -#: ../templates/tree/delete_form.php:118 -#: ../templates/tree/delete_form.php:167 -#: ../templates/domain.php:223 -#: ../templates/domain.php:254 -#: ../templates/delete.php:104 -#: ../templates/initsuff.php:188 -msgid "Cancel" -msgstr "Mégsem" - -#: ../templates/login.php:356 -#: ../templates/login.php:361 -msgid "Cannot connect to specified LDAP server. Please try again." -msgstr "Nem tudok csatlakozni a megadott LDAP szerverhez. Kérem, próbálja újra." - -#: ../lib/config.inc:348 -#: ../lib/config.inc:883 -msgid "Cannot open config file!" -msgstr "Nem tudom megnyitni a konfigurációs fájlt!" - -#: ../templates/pdfedit/pdfpage.php:605 -#: ../templates/pdfedit/pdfpage.php:611 -msgid "Change" -msgstr "Változtatás" - -#: ../lib/modules/posixGroup.inc:188 -msgid "Change GID number of users and hosts" -msgstr "Felhasználók és gazdaállomások GID-értékének megváltoztatása" - -#: ../templates/config/profmanage.php:339 -#: ../help/help.inc:122 -msgid "Change default profile" -msgstr "Alapértelmezett profil módosítása" - -#: ../templates/config/profmanage.php:364 -#: ../help/help.inc:124 -msgid "Change master password" -msgstr "Master jelszó módosítása" - -#: ../lib/modules/posixGroup.inc:170 -#: ../lib/modules/posixAccount.inc:884 -#: ../help/help.inc:106 -msgid "Change password" -msgstr "Jelszó módosítása" - -#: ../templates/login.php:292 -msgid "Change profile" -msgstr "Profil megváltoztatása" - -#: ../lib/lists.inc:356 -msgid "Change suffix" -msgstr "Utótag megváltoztatása" - -#: ../lib/baseModule.inc:538 -#, php-format -msgid "Changed value %s because only numeric values are allowed." -msgstr "A %s érték megváltozott, mert csak numerikus értékek elfogadhatóak." - -#: ../lib/baseModule.inc:555 -msgid "Changed value because only ASCII characters are allowed." -msgstr "Az érték megváltozott, mert csak ASCII karakterek elfogadhatóak." - -#: ../templates/tree/create_form.php:75 -msgid "Choose a template" -msgstr "Válasszon egy sablont" - -#: ../templates/tree/create.php:165 -#: ../lib/config.inc:108 -msgid "Click here if you are not directed to the next page." -msgstr "Kattintson ide, ha nem irányítódik automatikusan a következÅ‘ oldalra." - -#: ../templates/schema/schema.php:205 -msgid "Collective" -msgstr "Kollektíva" - -#: ../templates/masscreate.php:135 -msgid "Columns:" -msgstr "Oszlopok:" - -#: ../lib/modules/sambaAccount.inc:367 -#: ../lib/modules/sambaSamAccount.inc:182 -msgid "Comma separated list of Samba workstations the user is allowed to login. Empty means every workstation." -msgstr "Azon samba munkaállomások listája, melyekre a felhasználó bejelentkezhet. Ha üresen marad, minden munkaállomásra való bejelentkezés engedélyezett." - -#: ../help/help.inc:235 -msgid "Comma separated list of unix workstations the user is allowed to login." -msgstr "Azon unix munkaállomások vesszÅ‘vel elválasztott nevének listája, melyekre a felhasználó bejelentkezhet." - -#: ../templates/tree/update_confirm.php:230 -msgid "Commit" -msgstr "Elküldés" - -#: ../lib/modules/inetOrgPerson.inc:123 -msgid "Common name" -msgstr "Szokványos név" - -#: ../templates/login.php:130 -msgid "Configuration login" -msgstr "Belépés beállítás" - -#: ../templates/login.php:274 -msgid "Configuration profile" -msgstr "Profil beállítás" - -#: ../help/help.inc:46 -#: ../help/help.inc:48 -#: ../help/help.inc:60 -#: ../help/help.inc:66 -#: ../help/help.inc:72 -#: ../help/help.inc:87 -#: ../help/help.inc:92 -#: ../help/help.inc:94 -#: ../help/help.inc:96 -#: ../help/help.inc:101 -#: ../help/help.inc:106 -#: ../help/help.inc:108 -#: ../help/help.inc:110 -#: ../help/help.inc:112 -#: ../help/help.inc:128 -msgid "Configuration wizard" -msgstr "Beállításvarázsló" - -#: ../templates/config/confmodules.php:238 -msgid "Conflicting module:" -msgstr "ÃœtközÅ‘ modul:" - -#: ../templates/tree/templates/creation/custom.php:66 -#: ../templates/tree/templates/creation/new_ou_template.php:105 -msgid "Container" -msgstr "Konténer" - -#: ../templates/tree/templates/creation/new_ou_template.php:64 -msgid "Container DN" -msgstr "Konténer DN" - -#: ../templates/tree/delete_attr.php:78 -msgid "Could not perform ldap_modify operation." -msgstr "Nem sikerült végrehajtani az ldap_modify műveletet." - -#: ../templates/config/profmanage.php:99 -msgid "Could not rename file!" -msgstr "Nem tudom átnevezni a fájlt!" - -#: ../templates/tree/templates/creation/custom.php:234 -#: ../templates/tree/templates/creation/new_ou_template.php:107 -#: ../templates/initsuff.php:187 -msgid "Create" -msgstr "Létrehoz" - -#: ../lib/modules.inc:993 -msgid "Create Account" -msgstr "Témaszám létrehozása" - -#: ../templates/tree/creation_template.php:84 -#: ../templates/tree/create_form.php:74 -msgid "Create Object" -msgstr "Objektum létrehozása" - -#: ../lib/modules.inc:952 -msgid "Create PDF file" -msgstr "PDF file létrehozása" - -#: ../templates/lists/listgroups.php:249 -msgid "Create PDF for all groups" -msgstr "PDF létrehozása az összes csoporthoz" - -#: ../templates/lists/listhosts.php:234 -msgid "Create PDF for all hosts" -msgstr "PDF létrehozása az összes gazdaállomáshoz" - -#: ../templates/lists/listusers.php:294 -msgid "Create PDF for all users" -msgstr "PDF létrehozása az összes felhasználóhoz" - -#: ../templates/lists/listgroups.php:247 -msgid "Create PDF for selected group(s)" -msgstr "PDF létrehozása a kiválasztott csoport(ok)hoz" - -#: ../templates/lists/listhosts.php:232 -msgid "Create PDF for selected host(s)" -msgstr "PDF létrehozása a kiválasztott gazdaállomás(ok)hoz" - -#: ../templates/lists/listusers.php:292 -msgid "Create PDF for selected user(s)" -msgstr "PDF létrehozása a kiválasztott felhaszáló(k)hoz" - -#: ../templates/pdfedit/pdfmain.php:109 -msgid "Create a new PDF structure for scope: " -msgstr "Új PDF szerkezet létrehozása a következÅ‘ céllal:" - -#: ../templates/profedit/profilemain.php:119 -msgid "Create a new profile" -msgstr "Új profil létrehozása" - -#: ../lib/modules.inc:951 -msgid "Create another account" -msgstr "Másik témaszám létrehozása" - -#: ../templates/masscreate.php:99 -msgid "Create group accounts" -msgstr "Csoport-témaszámok létrehozása" - -#: ../lib/modules/posixAccount.inc:865 -msgid "Create home directory" -msgstr "Home könyvtár létrehozása" - -#: ../templates/masscreate.php:102 -msgid "Create host accounts" -msgstr "Gazdaállomás-témaszámok létrehozása" - -#: ../lib/modules.inc:855 -msgid "Create new Account" -msgstr "Új témaszám létrehozása" - -#: ../templates/tree/edit.php:121 -#: ../templates/tree/tree.php:185 -#: ../templates/tree/tree.php:187 -#: ../templates/tree/tree.php:188 -#: ../lib/tree.inc:66 -#: ../lib/tree.inc:67 -#: ../lib/tree.inc:129 -#: ../lib/tree.inc:131 -#: ../lib/tree.inc:132 -msgid "Create new entry" -msgstr "Új bejegyzés létrehozása" - -#: ../templates/masscreate.php:96 -msgid "Create user accounts" -msgstr "Felhasználói témaszámok létrehozása" - -#: ../templates/config/profmanage.php:84 -msgid "Created new profile." -msgstr "Új profil létrehozva." - -#: ../templates/tools.php:70 -msgid "Creates accounts by uploading a CSV formated file." -msgstr "Témaszámok létrehozása CSV formátumú file feltöltésével." - -#: ../templates/tree/add_value_form.php:100 -msgid "Current list of values for attribute:" -msgstr "Az attribútum értékeinek jelenlegi listája:" - -#: ../templates/tree/templates/templates.inc:51 -msgid "Custom" -msgstr "Egyedi" - -#: ../templates/tree/edit.php:91 -#: ../templates/tree/add_value_form.php:98 -#: ../templates/tree/add_oclass_form.php:117 -#: ../templates/tree/update_confirm.php:75 -#: ../templates/tree/add_attr_form.php:72 -#: ../templates/tree/delete_form.php:76 -#: ../templates/tree/delete_form.php:150 -#: ../templates/delete.php:86 -#: ../lib/modules.inc:1605 -msgid "DN" -msgstr "DN" - -#: ../templates/masscreate.php:138 -msgid "DN settings" -msgstr "DN beállítások" - -#: ../templates/masscreate.php:142 -#: ../help/help.inc:139 -msgid "DN suffix" -msgstr "DN utótag" - -#: ../templates/tree/templates/creation/custom.php:96 -#: ../templates/massBuildAccounts.php:164 -msgid "Data field for RDN is empty!" -msgstr "Az RDN adatmezeje üres!" - -#: ../lib/modules/sambaAccount.inc:350 -#: ../lib/modules/sambaSamAccount.inc:165 -#: ../help/help.inc:203 -msgid "Date after the user is able to change his password. Format: DD-MM-YYYY" -msgstr "Az a dátum, mely után a felhasználó meg tudja változtatni jelszavát. Formátuma: NN-HH-ÉÉÉÉ" - -#: ../lib/modules/sambaAccount.inc:352 -#: ../lib/modules/sambaSamAccount.inc:167 -#: ../help/help.inc:205 -msgid "Date after the user must change his password. Format: DD-MM-YYYY" -msgstr "Az a dátum, mely után a felhasználónak meg _kell_ változtatnia jelszavát. Formátuma: NN-HH-ÉÉÉÉ" - -#: ../lib/modules/shadowAccount.inc:147 -#: ../help/help.inc:173 -msgid "Days before password is to expire that user is warned of pending password expiration. If set value must be 0<." -msgstr "Az a szám, ahány nappal korábban a felhasználó értesítést kap arról, hogy jelszava lejár. Ha beállítja, értéke 0-nál nagyobb legyen." - -#: ../templates/config/confmain.php:371 -#: ../lib/config.inc:367 -#: ../help/help.inc:94 -msgid "Default language" -msgstr "Alapértelmezett nyelv" - -#: ../templates/masscreate.php:151 -#: ../templates/masscreate.php:308 -msgid "Default value" -msgstr "Alapértelmezett érték" - -#: ../templates/tree/edit.php:113 -#: ../templates/tree/delete_form.php:158 -#: ../templates/domain.php:253 -#: ../templates/delete.php:103 -#: ../lib/tree.inc:1185 -msgid "Delete" -msgstr "Törlés" - -#: ../templates/tree/delete_form.php:75 -#, php-format -msgid "Delete %s" -msgstr "%s törlése" - -#: ../templates/delete.php:71 -#: ../templates/delete.php:120 -msgid "Delete Account" -msgstr "Témaszám törlése" - -#: ../templates/lists/listdomains.php:209 -msgid "Delete Domain(s)" -msgstr "Tartomány(ok) törlése" - -#: ../templates/lists/listgroups.php:238 -msgid "Delete Group(s)" -msgstr "Csoport(ok) törlése" - -#: ../templates/lists/listhosts.php:223 -msgid "Delete Host(s)" -msgstr "Gazdaállomás(ok) törlése" - -#: ../templates/pdfedit/pdfdelete.php:48 -#: ../templates/pdfedit/pdfmain.php:133 -msgid "Delete PDF structure" -msgstr "PDF szerkezet törlése" - -#: ../templates/tree/delete_form.php:110 -#, php-format -msgid "Delete all %s objects" -msgstr "Az összes %s objektum törlése" - -#: ../templates/domain.php:244 -msgid "Delete domain(s)" -msgstr "Tartomány(ok) törlése" - -#: ../lib/modules/posixAccount.inc:913 -msgid "Delete home directory" -msgstr "A Home könyvtár törlése" - -#: ../templates/pdfedit/pdfdelete.php:68 -#: ../templates/profedit/profiledelete.php:70 -msgid "Delete operation canceled." -msgstr "A törlési művelet megszakítva." - -#: ../templates/ou_edit.php:354 -#: ../templates/ou_edit.php:391 -#: ../templates/ou_edit.php:428 -#: ../templates/ou_edit.php:465 -#: ../help/help.inc:245 -msgid "Delete organizational unit" -msgstr "Szervezeti egység törlése" - -#: ../templates/config/profmanage.php:258 -#: ../templates/profedit/profiledelete.php:52 -#: ../templates/profedit/profilemain.php:145 -#: ../help/help.inc:118 -msgid "Delete profile" -msgstr "Profil törlése" - -#: ../templates/lists/listusers.php:283 -msgid "Delete user(s)" -msgstr "Felhasználó(k) törlése" - -#: ../lib/modules/sambaGroupMapping.inc:56 -msgid "Deleted Account" -msgstr "Törölt témaszám" - -#: ../templates/delete.php:225 -#, php-format -msgid "Deleted DN: %s" -msgstr "Törölt DN: %s" - -#: ../templates/pdfedit/pdfdelete.php:59 -msgid "Deleted PDF structure:" -msgstr "Törölt PDF szerkezet:" - -#: ../templates/profedit/profiledelete.php:62 -msgid "Deleted profile:" -msgstr "Törölt profil:" - -#: ../templates/tree/rdelete.php:70 -#: ../templates/tree/rdelete.php:132 -#: ../templates/tree/rdelete.php:144 -#, php-format -msgid "Deleting %s" -msgstr "%s törlése" - -#: ../templates/delete.php:127 -msgid "Deleting. Please stand by ..." -msgstr "Törlés folyamatban. Kérem várjon ..." - -#: ../templates/tree/add_value_form.php:185 -#: ../templates/schema/schema.php:95 -#: ../templates/schema/schema.php:149 -#: ../templates/schema/schema.php:352 -#: ../lib/modules/account.inc:73 -#: ../lib/modules/account.inc:149 -#: ../lib/modules/account.inc:166 -#: ../lib/modules/posixGroup.inc:148 -#: ../lib/modules/posixGroup.inc:392 -#: ../lib/modules/posixGroup.inc:434 -#: ../lib/modules/sambaAccount.inc:841 -#: ../lib/modules/sambaSamAccount.inc:959 -#: ../lib/modules/posixAccount.inc:270 -#: ../lib/modules/sambaGroupMapping.inc:303 -#: ../lib/modules/shadowAccount.inc:342 -#: ../lib/modules/inetOrgPerson.inc:143 -#: ../lib/modules/inetOrgPerson.inc:392 -#: ../lib/modules/inetOrgPerson.inc:460 -#: ../lib/lists.inc:312 -msgid "Description" -msgstr "Leírás" - -#: ../lib/modules/sambaAccount.inc:198 -#: ../lib/modules/sambaAccount.inc:319 -#: ../lib/modules/sambaAccount.inc:833 -#: ../lib/modules/sambaSamAccount.inc:134 -#: ../lib/modules/sambaSamAccount.inc:214 -#: ../lib/modules/sambaSamAccount.inc:951 -#: ../lib/modules/sambaGroupMapping.inc:159 -#: ../lib/modules/sambaGroupMapping.inc:269 -#: ../lib/modules/sambaGroupMapping.inc:301 -#: ../help/help.inc:184 -msgid "Display name" -msgstr "KépernyÅ‘név" - -#: ../lib/modules.inc:470 -msgid "Displayed account numbers start at \"0\". Add 2 to get the row in your spreadsheet." -msgstr "A kijelzett témaszámok \"0\"-nál kezdÅ‘dnek. Adjon 2-Å‘t az értékhez, hogy megkapja a táblázatban az ennek megfelelÅ‘ sor számát." - -#: ../templates/domain.php:245 -msgid "Do you really want to delete domain(s):" -msgstr "Valóban törli a tartomány(oka)t:" - -#: ../templates/ou_edit.php:87 -#: ../templates/ou_edit.php:152 -#: ../templates/ou_edit.php:217 -#: ../templates/ou_edit.php:282 -msgid "Do you really want to delete this OU?" -msgstr "Valóban törli ezt az OU-t?" - -#: ../templates/pdfedit/pdfdelete.php:77 -msgid "Do you really want to delete this PDF structure?" -msgstr "Valóban törli ezt a PDF szerkezetet?" - -#: ../templates/profedit/profiledelete.php:80 -msgid "Do you really want to delete this profile?" -msgstr "Valóban törli ezt a profilt?" - -#: ../templates/delete.php:80 -msgid "Do you really want to remove the following accounts?" -msgstr "Valóban törli a következÅ‘ témaszámokat?" - -#: ../templates/tree/update_confirm.php:142 -msgid "Do you want to make these changes?" -msgstr "Valóban érvényesíti ezeket a változásokat?" - -#: ../lib/modules/sambaAccount.inc:155 -#: ../lib/modules/sambaAccount.inc:300 -#: ../lib/modules/sambaAccount.inc:310 -#: ../lib/modules/sambaAccount.inc:378 -#: ../lib/modules/sambaAccount.inc:775 -#: ../lib/modules/sambaAccount.inc:784 -#: ../lib/modules/sambaAccount.inc:840 -#: ../lib/modules/sambaSamAccount.inc:194 -#: ../lib/modules/sambaSamAccount.inc:207 -#: ../lib/modules/sambaSamAccount.inc:326 -#: ../lib/modules/sambaSamAccount.inc:763 -#: ../lib/modules/sambaSamAccount.inc:771 -#: ../lib/modules/sambaSamAccount.inc:886 -#: ../lib/modules/sambaSamAccount.inc:899 -#: ../lib/modules/sambaSamAccount.inc:958 -#: ../lib/modules/sambaGroupMapping.inc:53 -#: ../lib/modules/sambaGroupMapping.inc:187 -#: ../lib/modules/sambaGroupMapping.inc:281 -#: ../lib/modules/sambaGroupMapping.inc:323 -#: ../help/help.inc:218 -#: ../help/help.inc:236 -msgid "Domain" -msgstr "Tartomány" - -#: ../lib/modules/sambaAccount.inc:33 -#: ../lib/modules/sambaAccount.inc:295 -#: ../lib/modules/sambaSamAccount.inc:33 -#: ../lib/modules/sambaGroupMapping.inc:40 -#: ../lib/modules/sambaGroupMapping.inc:254 -msgid "Domain Admins" -msgstr "Tartomány adminisztrátorok" - -#: ../lib/modules/sambaAccount.inc:35 -#: ../lib/modules/sambaSamAccount.inc:34 -#: ../lib/modules/sambaGroupMapping.inc:45 -msgid "Domain Certificate Admins" -msgstr "Tartomány bizonyítványának adminisztrátorai" - -#: ../lib/modules/sambaAccount.inc:34 -#: ../lib/modules/sambaAccount.inc:519 -#: ../lib/modules/sambaSamAccount.inc:34 -#: ../lib/modules/sambaSamAccount.inc:484 -#: ../lib/modules/sambaGroupMapping.inc:43 -msgid "Domain Computers" -msgstr "Tartomány gépei" - -#: ../lib/modules/sambaAccount.inc:35 -#: ../lib/modules/sambaSamAccount.inc:34 -#: ../lib/modules/sambaGroupMapping.inc:44 -msgid "Domain Controllers" -msgstr "Tartomány ellenÅ‘rei" - -#: ../lib/modules/sambaAccount.inc:36 -#: ../lib/modules/sambaSamAccount.inc:35 -#: ../lib/modules/sambaGroupMapping.inc:47 -msgid "Domain Enterprise Admins" -msgstr "Tartomány Enterprise adminisztrátorok" - -#: ../lib/modules/sambaGroupMapping.inc:52 -#: ../lib/modules/sambaGroupMapping.inc:179 -msgid "Domain Group" -msgstr "Tartomány csoport" - -#: ../lib/modules/sambaAccount.inc:34 -#: ../lib/modules/sambaSamAccount.inc:33 -#: ../lib/modules/sambaGroupMapping.inc:42 -msgid "Domain Guests" -msgstr "Tartomány vendégek" - -#: ../lib/modules/sambaAccount.inc:37 -#: ../lib/modules/sambaSamAccount.inc:35 -#: ../lib/modules/sambaGroupMapping.inc:48 -msgid "Domain Policy Admins" -msgstr "Tartomány irányelveinek adminisztrátorai" - -#: ../templates/lists/listdomains.php:100 -#: ../templates/domain.php:109 -#: ../help/help.inc:251 -msgid "Domain SID" -msgstr "Tartomány-SID" - -#: ../lib/modules/sambaAccount.inc:36 -#: ../lib/modules/sambaSamAccount.inc:35 -#: ../lib/modules/sambaGroupMapping.inc:46 -msgid "Domain Schema Admins" -msgstr "Tartomány Séma adminisztrátorai" - -#: ../templates/domain.php:83 -msgid "Domain Settings" -msgstr "Tartomány beállítások" - -#: ../lib/modules/sambaAccount.inc:33 -#: ../lib/modules/sambaSamAccount.inc:33 -#: ../lib/modules/sambaSamAccount.inc:1202 -#: ../lib/modules/sambaGroupMapping.inc:41 -msgid "Domain Users" -msgstr "Tartomány felhasználók" - -#: ../lib/modules/sambaGroupMapping.inc:248 -msgid "Domain administrators" -msgstr "Tartomány adminisztrátorok" - -#: ../templates/domain.php:348 -msgid "Domain deleted successfully." -msgstr "A tartomány sikeresen törölve." - -#: ../templates/domain.php:304 -msgid "Domain has been modified." -msgstr "A tartomány módosítva." - -#: ../templates/lists/listdomains.php:99 -#: ../templates/domain.php:88 -#: ../lib/modules/sambaAccount.inc:57 -#: ../help/help.inc:247 -msgid "Domain name" -msgstr "Tartománynév" - -#: ../lib/modules/sambaAccount.inc:57 -#: ../lib/modules/sambaAccount.inc:58 -msgid "Domain name contains invalid characters. Valid characters are: a-z, A-Z, 0-9 and -." -msgstr "A tartománynév érvénytelen karaktert tartalmaz. Érvényes karakterek: a-z, A-Z, 0-9 és -." - -#: ../templates/domain.php:277 -msgid "Domain name is invalid!" -msgstr "Érvénytelen tartománynév!" - -#: ../templates/config/confmain.php:207 -#: ../lib/config.inc:361 -msgid "DomainSuffix" -msgstr "Tartomány utótag" - -#: ../templates/config/confsave.php:122 -msgid "DomainSuffix is invalid!" -msgstr "Tartomány utótag érvénytelen!" - -#: ../templates/ou_edit.php:447 -msgid "Domains" -msgstr "Tartományok" - -#: ../templates/pdfedit/pdfpage.php:581 -msgid "Down" -msgstr "Lefelé" - -#: ../templates/masscreate.php:263 -msgid "Download sample CSV file" -msgstr "Minta CSV file letöltése" - -#: ../lib/modules/sambaAccount.inc:355 -#: ../lib/modules/sambaSamAccount.inc:170 -msgid "Drive letter assigned on windows workstations as homedirectory." -msgstr "A Windows munkaállomásokon ennek megfelelÅ‘ betűjelű meghajtó lesz a home könyvtár." - -#: ../help/help.inc:209 -msgid "Driveletter assigned on windows workstations as homedirectory." -msgstr "A Windows munkaállomásokon ennek megfelelÅ‘ betűjelű meghajtó lesz a home könyvtár." - -#: ../lib/lists.inc:311 -msgid "E-Mail" -msgstr "E-Mail" - -#: ../templates/lists/listhosts.php:175 -#: ../templates/lists/listgroups.php:175 -#: ../templates/lists/listdomains.php:175 -#: ../templates/lists/listusers.php:221 -msgid "Edit" -msgstr "Szerkesztés" - -#: ../templates/pdfedit/pdfmain.php:121 -msgid "Edit PDF structure" -msgstr "PDF szerkezet szerkesztése" - -#: ../lib/modules/posixAccount.inc:857 -msgid "Edit groups" -msgstr "Csoportok szerkesztése" - -#: ../lib/modules/posixGroup.inc:153 -msgid "Edit members" -msgstr "Tagok szerkesztése" - -#: ../templates/config/confmain.php:260 -msgid "Edit modules" -msgstr "Modulok szerkesztése" - -#: ../templates/profedit/profilemain.php:132 -msgid "Edit profile" -msgstr "Profil szerkesztése" - -#: ../lib/modules/sambaAccount.inc:740 -#: ../lib/modules/sambaSamAccount.inc:726 -msgid "Edit workstations" -msgstr "Munkaállomások szerkesztése" - -#: ../lib/modules/inetOrgPerson.inc:72 -#: ../lib/modules/inetOrgPerson.inc:101 -#: ../lib/modules/inetOrgPerson.inc:155 -#: ../lib/modules/inetOrgPerson.inc:239 -#: ../lib/modules/inetOrgPerson.inc:416 -#: ../lib/modules/inetOrgPerson.inc:465 -msgid "Employee type" -msgstr "Alkalmazott típusa" - -#: ../lib/modules/inetOrgPerson.inc:240 -msgid "Employee type: Contractor, Employee, Intern, Temp, External, ..." -msgstr "Alkalmazott típusa: szállító, alkalmazott, belÅ‘, ideiglenes, külsÅ‘, ..." - -#: ../templates/login.php:329 -msgid "Empty password submitted. Please try again." -msgstr "Ãœres jelszó. Kérem, próbálja újra." - -#: ../templates/tree/download_binary_attr.php:70 -msgid "Encountered an error while performing search." -msgstr "Hiba történt a keresés közben." - -#: ../templates/tree/add_value_form.php:136 -msgid "Enter the value you would like to add:" -msgstr "Adja meg az értéket, amit hozzá kíván adni:" - -#: ../templates/tree/rdelete.php:114 -#, php-format -msgid "Entry %s and sub-tree deleted successfully." -msgstr "A %s bejegyzés és az al-fa sikeresen törölve." - -#: ../templates/tree/delete.php:103 -#, php-format -msgid "Entry %s deleted successfully." -msgstr "A %s bejegyzés sikeresen törölve." - -#: ../templates/schema/schema.php:172 -msgid "Equality" -msgstr "EgyenlÅ‘ség" - -#: ../templates/delete.php:230 -#, php-format -msgid "Error while deleting DN: %s" -msgstr "Hiba a következÅ‘ DN törlésekor: %s" - -#: ../help/help.inc:129 -msgid "Every account type needs exactly one base module. This module provides a structural object class." -msgstr "Minden témaszámtípushoz pontosan egy alapmodul szükséges. Ez a modul struktúrális objektumosztályt képez." - -#: ../help/help.inc:69 -#: ../help/help.inc:75 -#: ../help/help.inc:90 -msgid "Example" -msgstr "Minta" - -#: ../templates/masscreate.php:150 -#: ../templates/masscreate.php:164 -#: ../templates/masscreate.php:304 -msgid "Example value" -msgstr "Mintaérték" - -#: ../help/help.inc:51 -#: ../help/help.inc:63 -msgid "Examples" -msgstr "Minták" - -#: ../help/help.inc:188 -msgid "Expand suffix with primary groupname" -msgstr "Az utótag bÅ‘vítése az elsÅ‘dleges csoportnévvel" - -#: ../lib/modules/shadowAccount.inc:93 -#: ../lib/modules/shadowAccount.inc:162 -#: ../lib/modules/shadowAccount.inc:194 -#: ../lib/modules/shadowAccount.inc:317 -msgid "Expiration date" -msgstr "Lejárat dátuma" - -#: ../help/help.inc:180 -msgid "Expire date" -msgstr "Lejárat dátuma" - -#: ../templates/domain.php:322 -msgid "Failed to add domain!" -msgstr "Nem sikerült a tartományt hozzáadni!" - -#: ../templates/tree/add_attr.php:128 -msgid "Failed to add the attribute." -msgstr "Nem sikerült az attribútumot hozzáadni!" - -#: ../templates/initsuff.php:149 -msgid "Failed to create entry!" -msgstr "Nem sikerült a bejegyzést létrehozni!" - -#: ../templates/tree/rdelete.php:117 -#: ../templates/tree/rdelete.php:138 -#: ../templates/tree/rdelete.php:150 -#, php-format -msgid "Failed to delete entry %s" -msgstr "Nem sikerült a %s bejegyzést törölni!" - -#: ../templates/domain.php:305 -msgid "Failed to modify domain!" -msgstr "Nem sikerült a módosítani a tartományt!" - -#: ../lib/modules/inetOrgPerson.inc:60 -#: ../lib/modules/inetOrgPerson.inc:191 -#: ../lib/modules/inetOrgPerson.inc:263 -#: ../lib/modules/inetOrgPerson.inc:264 -#: ../lib/modules/inetOrgPerson.inc:440 -#: ../lib/modules/inetOrgPerson.inc:471 -msgid "Fax number" -msgstr "Fax-szám" - -#: ../templates/tools.php:69 -msgid "File upload" -msgstr "Fájl feltöltése" - -#: ../templates/tree/add_attr.php:91 -msgid "File upload failed!" -msgstr "A file feltöltése nem sikerült!" - -#: ../lib/modules/sambaAccount.inc:364 -#: ../lib/modules/sambaSamAccount.inc:179 -#: ../help/help.inc:211 -msgid "Filename and -path relative to netlogon-share which should be executed on logon. $user and $group are replaced with user- and groupname." -msgstr "A belépéskor végrehajtandó file neve és elérési útja a netlogon-share-hez viszonyítva. A $user és $group változók a felhasználó- és csoportnévvel lesznek helyettesítve." - -#: ../lib/lists.inc:217 -msgid "Filter" -msgstr "SzűrÅ‘" - -#: ../lib/modules/inetOrgPerson.inc:52 -#: ../lib/modules/inetOrgPerson.inc:130 -#: ../lib/modules/inetOrgPerson.inc:231 -#: ../lib/modules/inetOrgPerson.inc:408 -#: ../lib/modules/inetOrgPerson.inc:463 -#: ../lib/lists.inc:307 -#: ../help/help.inc:194 -msgid "First name" -msgstr "Keresztnév" - -#: ../lib/modules/inetOrgPerson.inc:52 -#: ../lib/modules/inetOrgPerson.inc:53 -msgid "First name contains invalid characters!" -msgstr "A keresztnév érvénytelen karaktereket tartalmaz" - -#: ../lib/modules/inetOrgPerson.inc:232 -#: ../help/help.inc:195 -msgid "First name of user. Only letters, - and spaces are allowed." -msgstr "A felhasználó keresztneve. Csak betűk, a \"-\", és szóközök használhatóak." - -#: ../lib/modules/posixGroup.inc:144 -#: ../lib/modules/posixGroup.inc:358 -#: ../lib/modules/posixGroup.inc:388 -#: ../lib/modules/posixGroup.inc:413 -#: ../lib/modules/posixGroup.inc:432 -#: ../lib/modules/posixGroup.inc:463 -#: ../lib/modules/posixAccount.inc:41 -#: ../lib/modules/posixAccount.inc:1082 -#: ../lib/modules/sambaGroupMapping.inc:299 -#: ../lib/lists.inc:304 -#: ../lib/lists.inc:318 -#: ../lib/lists.inc:331 -#: ../help/help.inc:160 -msgid "GID number" -msgstr "GID-érték (Csoportazonosító)" - -#: ../lib/modules/posixGroup.inc:463 -msgid "GID number has changed. Please select checkbox to change GID number of users and hosts." -msgstr "A GID-érték megváltozott. Kérem, jelölje be a megfelelÅ‘ jelölÅ‘négyzetet a felhasználók és gazdaállomások csoporazonosító számának megváltoztatásához." - -#: ../lib/modules/posixAccount.inc:41 -#, php-format -msgid "GID number has changed. To keep file ownership you have to run the following command as root: 'find / -gid %s -uid %s -exec chgrp %s {} \\;'" -msgstr "A GID-érték megváltozott. Root-ként kell futtatnia a következÅ‘ utasítást, hogy a jelenleg érvényes file-engedélyeket megtartsa: 'find / -gid %s -uid %s -exec chgrp %s {} \\;' " - -#: ../lib/modules/posixGroup.inc:470 -msgid "GID number has to be a numeric value!" -msgstr "A GID-értéknek numerikus értéknek kell lennie!" - -#: ../lib/modules/posixGroup.inc:314 -msgid "GID ranges for Unix groups" -msgstr "GID-érték tartományok a Unix csoportok részére" - -#: ../lib/modules/account.inc:48 -#: ../lib/modules/posixAccount.inc:226 -#: ../lib/modules/posixAccount.inc:258 -#: ../lib/modules/posixAccount.inc:311 -#: ../lib/modules/posixAccount.inc:346 -#: ../lib/modules/posixAccount.inc:845 -#: ../lib/modules/posixAccount.inc:1083 -#: ../lib/modules/inetOrgPerson.inc:223 -#: ../lib/modules/inetOrgPerson.inc:273 -#: ../help/help.inc:152 -#: ../help/help.inc:162 -#: ../help/help.inc:170 -msgid "Gecos" -msgstr "Gecos" - -#: ../lib/modules/posixGroup.inc:159 -#: ../lib/modules/posixAccount.inc:873 -msgid "Generate password" -msgstr "Jelszó generálása" - -#: ../templates/schema/schema.php:134 -#: ../templates/schema/schema.php:271 -#: ../templates/schema/schema.php:302 -#: ../templates/schema/schema.php:327 -msgid "Go" -msgstr "Mehet" - -#: ../lib/modules/quota.inc:80 -#: ../lib/modules/quota.inc:295 -msgid "Grace block period" -msgstr "Grace blokk periódus" - -#: ../lib/modules/quota.inc:81 -msgid "Grace block period. Most filesystems use a fixed maximum value of 7 days." -msgstr "Grace blokk periódus. A legtöbb filerendszer rögzített maximum értéke 7 nap." - -#: ../lib/modules/quota.inc:97 -msgid "Grace inode (files) period. Most filesystems use a fixed maximum value of 7 days." -msgstr "Grace inode (file-ok) periódus. A legtöbb filerendszer rögzített maximum értéke 7 nap." - -#: ../lib/modules/quota.inc:96 -#: ../lib/modules/quota.inc:299 -msgid "Grace inode period" -msgstr "Grace inode periódus" - -#: ../lib/modules/posixGroup.inc:364 -#: ../lib/lists.inc:321 -msgid "Group description" -msgstr "Csoport leírása" - -#: ../lib/modules/posixGroup.inc:393 -#: ../help/help.inc:163 -msgid "Group description. If left empty group name will be used." -msgstr "Csoport leírása. Ha üresen hagyja, a csoport nevének felel majd meg." - -#: ../lib/pdf.inc:452 -msgid "Group information page" -msgstr "Csoport információs lapja" - -#: ../templates/config/confsave.php:137 -msgid "Group list attributes are invalid!" -msgstr "A csoportlista attribútumai érvénytelenek!" - -#: ../lib/lists.inc:320 -msgid "Group member DNs" -msgstr "Csoporttagok DN-jei" - -#: ../lib/modules/posixGroup.inc:152 -#: ../lib/modules/posixGroup.inc:226 -#: ../lib/modules/posixGroup.inc:370 -#: ../lib/modules/posixGroup.inc:396 -#: ../lib/modules/posixGroup.inc:400 -#: ../lib/modules/posixGroup.inc:433 -#: ../lib/lists.inc:319 -#: ../help/help.inc:182 -#: ../help/help.inc:238 -msgid "Group members" -msgstr "A csoport tagjai" - -#: ../templates/config/confmodules.php:80 -#: ../templates/config/confmain.php:257 -#: ../lib/config.inc:372 -msgid "Group modules" -msgstr "Csoportmodulok" - -#: ../lib/modules/posixGroup.inc:350 -#: ../lib/lists.inc:317 -msgid "Group name" -msgstr "Csoportnév" - -#: ../lib/modules/posixGroup.inc:385 -#: ../help/help.inc:159 -msgid "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." -msgstr "A létrehozásra kerülÅ‘ csoport neve. Érvényes karakterek: a-z, 0-9, .-_. A Lam nem fogad el elsÅ‘ karakterként számot, mert a csoport hozzáadása parancs sem fogadja el. A Lam nem engedi a nagybetűs A-Z karakterek használatát, mert ez különbözÅ‘ problémák forrása lehet. Ha a csoportnév már létezik, egy számmmal lesz kiegészítve. A legközelebbi, még nem használt számmal." - -#: ../lib/modules/posixGroup.inc:376 -#: ../lib/modules/posixGroup.inc:404 -msgid "Group password" -msgstr "Csoportjelszó" - -#: ../templates/profedit/profilemain.php:46 -msgid "Group profiles" -msgstr "Csoportprofilok" - -#: ../help/help.inc:190 -msgid "Group suffix" -msgstr "Csoport utótag" - -#: ../lib/modules/sambaGroupMapping.inc:184 -msgid "Group type" -msgstr "Csoporttípus" - -#: ../templates/config/confmain.php:187 -#: ../lib/config.inc:359 -msgid "GroupSuffix" -msgstr "Csoportutótag" - -#: ../templates/config/confsave.php:112 -msgid "GroupSuffix is invalid!" -msgstr "Csoportutótag érvénytelen!" - -#: ../lib/modules/posixGroup.inc:140 -#: ../lib/modules/posixGroup.inc:384 -#: ../lib/modules/posixGroup.inc:431 -#: ../lib/modules/posixGroup.inc:471 -#: ../lib/modules/posixGroup.inc:472 -#: ../lib/modules/posixGroup.inc:473 -#: ../help/help.inc:158 -msgid "Groupname" -msgstr "Csoportnév" - -#: ../lib/modules/posixGroup.inc:473 -#: ../lib/modules/posixGroup.inc:474 -msgid "Groupname contains invalid characters. Valid characters are: a-z, A-Z, 0-9 and .-_ !" -msgstr "A csoportnév érvénytelen karaktert tartalmaz. Érvényes karakterek: a-z, A-Z, 0-9 és .-_!" - -#: ../lib/modules/posixGroup.inc:472 -msgid "Groupname in use. Selected next free groupname." -msgstr "A csoportnév már létezik. A legközelebbi, még nem használt csoportnevet választom helyette." - -#: ../templates/ou_edit.php:373 -#: ../templates/main_header.php:84 -#: ../help/help.inc:82 -msgid "Groups" -msgstr "Csoportok" - -#: ../lib/modules/sambaSamAccount.inc:551 -#: ../lib/modules/sambaSamAccount.inc:753 -#: ../lib/modules/sambaSamAccount.inc:756 -msgid "Guest" -msgstr "Vendég" - -#: ../lib/modules/quota.inc:422 -msgid "Hard block" -msgstr "Kemény blokk" - -#: ../lib/modules/quota.inc:76 -#: ../lib/modules/quota.inc:77 -#: ../lib/modules/quota.inc:294 -#: ../lib/modules/quota.inc:351 -msgid "Hard block limit" -msgstr "Kemény blokk határa" - -#: ../lib/modules/quota.inc:422 -msgid "Hard inode" -msgstr "Kemény inode" - -#: ../lib/modules/quota.inc:93 -msgid "Hard inode (files) limit" -msgstr "Kemény inode (file-ok) határa" - -#: ../lib/modules/quota.inc:92 -#: ../lib/modules/quota.inc:298 -#: ../lib/modules/quota.inc:353 -msgid "Hard inode limit" -msgstr "Kemény inode határa" - -#: ../templates/pdfedit/pdfpage.php:495 -msgid "Headline" -msgstr "Fejléc" - -#: ../templates/pdfedit/pdfpage.php:468 -msgid "Height" -msgstr "Magasság" - -#: ../templates/ou_edit.php:349 -#: ../templates/ou_edit.php:362 -#: ../templates/ou_edit.php:386 -#: ../templates/ou_edit.php:399 -#: ../templates/ou_edit.php:423 -#: ../templates/ou_edit.php:436 -#: ../templates/ou_edit.php:460 -#: ../templates/ou_edit.php:473 -#: ../templates/domain.php:99 -#: ../templates/domain.php:120 -#: ../templates/domain.php:136 -#: ../templates/domain.php:149 -#: ../templates/domain.php:162 -#: ../templates/domain.php:179 -#: ../templates/domain.php:202 -#: ../templates/masscreate.php:145 -#: ../templates/masscreate.php:158 -#: ../templates/masscreate.php:291 -#: ../templates/config/profmanage.php:183 -#: ../templates/config/profmanage.php:235 -#: ../templates/config/profmanage.php:265 -#: ../templates/config/profmanage.php:299 -#: ../templates/config/profmanage.php:347 -#: ../templates/config/profmanage.php:375 -#: ../templates/config/profmanage.php:408 -#: ../templates/config/confmodules.php:111 -#: ../templates/config/confmain.php:167 -#: ../templates/config/confmain.php:181 -#: ../templates/config/confmain.php:191 -#: ../templates/config/confmain.php:201 -#: ../templates/config/confmain.php:211 -#: ../templates/config/confmain.php:221 -#: ../templates/config/confmain.php:243 -#: ../templates/config/confmain.php:262 -#: ../templates/config/confmain.php:317 -#: ../templates/config/confmain.php:327 -#: ../templates/config/confmain.php:337 -#: ../templates/config/confmain.php:358 -#: ../templates/config/confmain.php:403 -#: ../templates/config/confmain.php:422 -#: ../templates/config/confmain.php:431 -#: ../templates/config/confmain.php:449 -#: ../templates/config/confmain.php:463 -#: ../templates/config/conflogin.php:127 -#: ../templates/pdfedit/pdfpage.php:811 -#: ../templates/profedit/profilepage.php:106 -#: ../templates/profedit/profilepage.php:126 -#: ../templates/profedit/profilepage.php:157 -#: ../lib/lists.inc:213 -#: ../lib/modules.inc:651 -msgid "Help" -msgstr "Segítség" - -#: ../templates/tools.php:91 -msgid "Here you can browse LDAP object classes and attributes." -msgstr "Itt megtekintheti az LDAP objektumosztályokat és attribútumokat." - -#: ../templates/masscreate.php:83 -msgid "Here you can create multiple accounts by providing a CSV file." -msgstr "Itt egy CSV file megadásával több témaszámot hozhat létre." - -#: ../help/help.inc:131 -msgid "Here you can input small filter expressions (e.g. 'value' or 'v*'). LAM will filter case-insensitive." -msgstr "Itt kis szűrÅ‘ket adhat meg (pl. 'érték' vagy 'é*'). A LAM nem különböztet meg kis- és nagybetűket a szűrés során." - -#: ../templates/tools.php:54 -msgid "Here you can manage your account profiles." -msgstr "Itt beállíthatja témaszámához tartozó profiljait." - -#: ../help/help.inc:113 -msgid "Here you can select which plugins you want to use for account management." -msgstr "Itt kiválaszthatja, mely plugin-okat szeretné használni témaszámának beállításai során." - -#: ../templates/tree/edit.php:103 -msgid "Hide internal attributes" -msgstr "A belsÅ‘ attribútumok elrejtése" - -#: ../templates/tree/edit.php:117 -msgid "Hint: To delete an attribute, empty the text field and click save." -msgstr "Tanács: attribútum törléséhez ürítse ki a szövegmezÅ‘t és kattintson a Mentés-re." - -#: ../lib/modules/posixAccount.inc:337 -#: ../help/help.inc:149 -msgid "Hold the CTRL-key to (de)select multiple groups." -msgstr "Tartsa lenyomva a CTRL-billentyűt több csoport kijelöléséhez, illetve a kijelölés megszűntetéséhez." - -#: ../lib/modules/posixAccount.inc:36 -#: ../lib/modules/posixAccount.inc:64 -#: ../lib/modules/posixAccount.inc:65 -#: ../lib/modules/posixAccount.inc:197 -#: ../lib/modules/posixAccount.inc:319 -#: ../lib/modules/posixAccount.inc:709 -#: ../lib/modules/posixAccount.inc:860 -#: ../lib/modules/posixAccount.inc:1013 -#: ../lib/modules/posixAccount.inc:1086 -#: ../lib/lists.inc:309 -#: ../help/help.inc:150 -msgid "Home directory" -msgstr "Home könyvtár" - -#: ../lib/modules/posixAccount.inc:36 -#, php-format -msgid "Home directory changed. To keep home directory you have to run the following command as root: 'mv %s %s'" -msgstr "A home könyvtár megváltozott. Hogy megtartsa azt, root-ként kell futtatnia a következÅ‘ utasítást: 'mv %s %s'" - -#: ../lib/modules/sambaAccount.inc:124 -#: ../lib/modules/sambaAccount.inc:256 -#: ../lib/modules/sambaAccount.inc:354 -#: ../lib/modules/sambaAccount.inc:727 -#: ../lib/modules/sambaAccount.inc:836 -#: ../lib/modules/sambaSamAccount.inc:169 -#: ../lib/modules/sambaSamAccount.inc:272 -#: ../lib/modules/sambaSamAccount.inc:713 -#: ../lib/modules/sambaSamAccount.inc:851 -#: ../lib/modules/sambaSamAccount.inc:954 -#: ../help/help.inc:208 -msgid "Home drive" -msgstr "Home meghajtó" - -#: ../lib/modules/sambaAccount.inc:46 -#: ../lib/modules/sambaAccount.inc:47 -#: ../lib/modules/sambaAccount.inc:130 -#: ../lib/modules/sambaAccount.inc:262 -#: ../lib/modules/sambaAccount.inc:357 -#: ../lib/modules/sambaAccount.inc:730 -#: ../lib/modules/sambaAccount.inc:835 -#: ../lib/modules/sambaSamAccount.inc:44 -#: ../lib/modules/sambaSamAccount.inc:45 -#: ../lib/modules/sambaSamAccount.inc:172 -#: ../lib/modules/sambaSamAccount.inc:278 -#: ../lib/modules/sambaSamAccount.inc:716 -#: ../lib/modules/sambaSamAccount.inc:857 -#: ../lib/modules/sambaSamAccount.inc:953 -#: ../help/help.inc:216 -msgid "Home path" -msgstr "A home könyvtár elérési útvonala" - -#: ../lib/modules/sambaAccount.inc:46 -#: ../lib/modules/sambaSamAccount.inc:44 -#: ../lib/modules/sambaSamAccount.inc:46 -msgid "Home path is invalid." -msgstr "A home könyvtár elérési útvonala érvénytelen!" - -#: ../lib/modules/posixAccount.inc:64 -#: ../lib/modules/posixAccount.inc:66 -msgid "Homedirectory contains invalid characters." -msgstr "A home könyvtár neve érvénytelen karaktereket tartalmaz." - -#: ../lib/lists.inc:329 -msgid "Host description" -msgstr "Gazdaállomás leírása" - -#: ../lib/modules/account.inc:49 -#: ../lib/modules/posixAccount.inc:347 -#: ../lib/modules/inetOrgPerson.inc:274 -#: ../help/help.inc:171 -msgid "Host description. If left empty host name will be used." -msgstr "A gazdaállomás leírása. Ha üresen hagyja, a gazda nevét használom helyette." - -#: ../lib/modules/account.inc:58 -msgid "Host list" -msgstr "Gazdaállomások listája" - -#: ../templates/config/confsave.php:142 -msgid "Host list attributes are invalid!" -msgstr "A gazdaállomás listájának attribútumai érvénytelenek!" - -#: ../templates/config/confmodules.php:81 -#: ../templates/config/confmain.php:258 -#: ../lib/config.inc:373 -msgid "Host modules" -msgstr "Gazdaállomás-modulok" - -#: ../lib/modules/posixAccount.inc:237 -#: ../lib/modules/posixAccount.inc:342 -#: ../lib/lists.inc:327 -#: ../help/help.inc:164 -msgid "Host name" -msgstr "Gazdaállomás neve" - -#: ../lib/modules/posixAccount.inc:343 -#: ../help/help.inc:165 -msgid "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." -msgstr "A létrehozásra kerülÅ‘ gazdaállomás neve. Érvényes karakterek: a-z, 0-9, .-_$. A Lam nem fogad el elsÅ‘ karakterként számot, mert a felhasználó hozzáadása parancs sem fogadja el. A Lam nem engedi a nagybetűs A-Z karakterek használatát, mert ez különbözÅ‘ problémák forrása lehet. A gazdanevek mindig $ karakterrel végzÅ‘dnek. Ha az utolsó karakter nem \"$\", akkor ez automatikusan hozzáadódik. Ha a gazdanév már létezik, a név egy számmmal lesz kiegészítve. A legközelebbi, még nem használt számmal." - -#: ../templates/profedit/profilemain.php:47 -msgid "Host profiles" -msgstr "Gazdaállomás-profilok" - -#: ../lib/lists.inc:326 -msgid "Host username" -msgstr "A gazdaállomáson használt felhasználónév" - -#: ../templates/config/confmain.php:197 -#: ../lib/config.inc:360 -msgid "HostSuffix" -msgstr "Gazda utótag" - -#: ../templates/config/confsave.php:117 -msgid "HostSuffix is invalid!" -msgstr "Gazda utótag érvénytelen!" - -#: ../lib/modules/posixAccount.inc:78 -#: ../lib/modules/posixAccount.inc:79 -#: ../lib/modules/posixAccount.inc:81 -msgid "Hostname" -msgstr "Gazdaállomás neve" - -#: ../lib/modules/posixAccount.inc:83 -msgid "Hostname contains invalid characters. Valid characters are: a-z, A-Z, 0-9 and .-_ !" -msgstr "A gazdaállomás neve érvénytelen karaktereket tartalmaz. Érvényes karaketerek:a-z, A-Z, 0-9 és .-_ !" - -#: ../lib/modules/posixAccount.inc:79 -msgid "Hostname contains invalid characters. Valid characters are: a-z, A-Z, 0-9 and .-_ ! Hostname must end with $ !" -msgstr "A gazdaállomás neve érvénytelen karaktereket tartalmaz. Érvényes karaketerek:a-z, A-Z, 0-9 és .-_ ! A gazdaállomás neve $-ra kell végzÅ‘djön!" - -#: ../lib/modules/posixAccount.inc:81 -msgid "Hostname in use. Selected next free hostname." -msgstr "A gazdanév már létezik. A legközelebbi, nem használt gazdanevet választom helyette." - -#: ../templates/main_header.php:87 -#: ../lib/modules/posixAccount.inc:59 -#: ../lib/modules/posixAccount.inc:60 -#: ../lib/modules/posixAccount.inc:62 -#: ../lib/modules/posixAccount.inc:135 -#: ../help/help.inc:85 -msgid "Hosts" -msgstr "Gazdaállomások" - -#: ../lib/modules/posixGroup.inc:466 -#: ../lib/modules/posixGroup.inc:581 -#: ../lib/modules/posixAccount.inc:69 -#: ../lib/modules/posixAccount.inc:655 -msgid "ID is already in use" -msgstr "Az ID már foglalt" - -#: ../lib/modules/posixGroup.inc:464 -#: ../lib/modules/posixGroup.inc:465 -#: ../lib/modules/posixGroup.inc:466 -#: ../lib/modules/posixGroup.inc:577 -#: ../lib/modules/posixGroup.inc:581 -#: ../lib/modules/posixAccount.inc:67 -#: ../lib/modules/posixAccount.inc:68 -#: ../lib/modules/posixAccount.inc:69 -#: ../lib/modules/posixAccount.inc:651 -#: ../lib/modules/posixAccount.inc:655 -msgid "ID-Number" -msgstr "ID-érték" - -#: ../templates/masscreate.php:149 -#: ../templates/masscreate.php:162 -#: ../templates/masscreate.php:296 -msgid "Identifier" -msgstr "Azonosító" - -#: ../help/help.inc:191 -msgid "If a not yet existing group is defined in csv-file, a new group in the selected group suffix will be created." -msgstr "Ha még nem létezÅ‘ csoport szerepel a csv-file-ban, a kijelölt csoport utótagban egy új csoport kerül létrehozásra." - -#: ../help/help.inc:223 -msgid "If a not yet existing group is defined in csv-file, a new group with the selected group profile will be created." -msgstr "Ha a csv-file-ban még nem létezÅ‘ csoport szerepel, egy új csoportot hozok létre a kijelölt csoport-profillal." - -#: ../lib/modules/sambaAccount.inc:326 -#: ../lib/modules/sambaSamAccount.inc:141 -msgid "If checked Unix password will also be used as Samba password." -msgstr "Ha bejelöli, a Unix jelszó szolgál majd samba jelszóként is." - -#: ../lib/modules/sambaAccount.inc:344 -#: ../lib/modules/sambaSamAccount.inc:159 -#: ../help/help.inc:207 -msgid "If checked account will be deactivated. (Setting D-Flag)" -msgstr "Ha bejelöli, a témaszámot letiltom. (A D-Flag beállítása)" - -#: ../lib/modules/posixGroup.inc:409 -#: ../lib/modules/sambaAccount.inc:332 -#: ../lib/modules/sambaSamAccount.inc:147 -#: ../lib/modules/posixAccount.inc:328 -#: ../help/help.inc:197 -msgid "If checked no password will be used." -msgstr "Ha bejelöli, akkor ide nem tartozik majd jelszó." - -#: ../lib/modules/sambaAccount.inc:338 -#: ../lib/modules/sambaSamAccount.inc:153 -#: ../help/help.inc:201 -msgid "If checked password does not expire. (Setting X-Flag)" -msgstr "Ha bejelöli, a jelszavak nem járnak le sohasem. (Az X-Flag beállítása)" - -#: ../help/help.inc:199 -msgid "If checked unix password will also be used as samba password." -msgstr "Ha bejelöli, a unix jelszó szolgál majd samba jelszóként is." - -#: ../lib/modules/posixGroup.inc:389 -#: ../help/help.inc:161 -msgid "If empty GID number will be generated automaticly depending on your configuration settings." -msgstr "Ha üresen hagyja, a GID-érték az Ön beállításaitól függÅ‘en automatikusan keletkezik." - -#: ../lib/modules/posixAccount.inc:303 -#: ../help/help.inc:147 -#: ../help/help.inc:167 -msgid "If empty UID number will be generated automaticly." -msgstr "Ha üresen hagyja, az UID-érték automatikusan keletkezik." - -#: ../help/help.inc:189 -msgid "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." -msgstr "Ha kijelöli, a felhasználók OU-jának létrehozása elsÅ‘dleges csoportnevükkel kibÅ‘vítve történik. Pl. ha egy felhasználó az admin csoport tagja, a felhasználói utótag ou=admin,+user utótag lesz." - -#: ../lib/modules/sambaAccount.inc:329 -#: ../lib/modules/sambaSamAccount.inc:144 -msgid "If set to \"true\" Unix password will also be used as Samba password." -msgstr "Ha értéke \"true\", a Unix jelszó szolgál majd samba jelszóként is." - -#: ../lib/modules/sambaAccount.inc:347 -#: ../lib/modules/sambaSamAccount.inc:162 -msgid "If set to \"true\" account will be deactivated. (Setting D-Flag)" -msgstr "Ha bejelöli, a témaszámot letiltja. (A D-Flag beállítása)" - -#: ../lib/modules/sambaAccount.inc:335 -#: ../lib/modules/sambaSamAccount.inc:150 -msgid "If set to \"true\" no password will be used." -msgstr "Ha értéke \"true\", akkor semmilyen jelszó nem lesz használatos." - -#: ../lib/modules/sambaAccount.inc:341 -#: ../lib/modules/sambaSamAccount.inc:156 -msgid "If set to \"true\" password does not expire. (Setting X-Flag)" -msgstr "Ha értéke \"true\", a jelszavak nem járnak le sohasem. (Az X-Flag beállítása)" - -#: ../lib/modules/sambaSamAccount.inc:189 -msgid "If you leave this empty LAM will use: uidNumber*2 + sambaAlgorithmicRidBase." -msgstr "Ha üresen hagyja, a LAM a következÅ‘t veszi figyelembe: uidSzám*2+sambaAlgoritmikusRidAlap" - -#: ../help/help.inc:107 -msgid "If you want to change the current preferences password, please enter it here." -msgstr "Ha a jelenlegi beállításokat védÅ‘ jelszót meg akarja változtatni, kérem, most adja meg." - -#: ../help/help.inc:125 -msgid "If you want to change your master configuration password, please enter it here." -msgstr "Ha a mester beállításokat védÅ‘ jelszót meg akarja változtatni, kérem, most adja meg." - -#: ../lib/modules/sambaAccount.inc:376 -msgid "If you want to create domain administrators or other special users use this option." -msgstr "Ha tartományi adminisztrátorokat vagy egyéb, különleges felhasználókat akar létrehozni, használja ezt az opciót." - -#: ../lib/modules/sambaAccount.inc:370 -#: ../lib/modules/sambaGroupMapping.inc:274 -#: ../help/help.inc:233 -msgid "If you want to use a well known RID you can selcet a well known group." -msgstr "Ha egy jól ismert RID-et akar használni, egy jól ismert csoportot választhat." - -#: ../templates/schema/schema.php:402 -#: ../templates/schema/schema.php:423 -msgid "Inherited from" -msgstr "Innen örökölve" - -#: ../templates/schema/schema.php:163 -#: ../templates/schema/schema.php:359 -msgid "Inherits from" -msgstr "Innen örököl" - -#: ../lib/modules/quota.inc:33 -msgid "Inode hard quota" -msgstr "Inode keménykvóta" - -#: ../lib/modules/quota.inc:33 -msgid "Inode hard quota contains invalid characters. Only natural numbers are allowed." -msgstr "Az inode keménykvóta érvénytelen karaktereket tartalmaz. Csak természetes számok használhatóak." - -#: ../lib/modules/quota.inc:35 -msgid "Inode quota" -msgstr "Inode kvóta" - -#: ../lib/modules/quota.inc:32 -msgid "Inode soft quota" -msgstr "Inode lágykvóta" - -#: ../lib/modules/quota.inc:32 -msgid "Inode soft quota contains invalid characters. Only natural numbers are allowed." -msgstr "Az inode lágykvóta érvénytelen karaktereket tartalmaz. Csak természetes számok használhatóak." - -#: ../lib/modules/quota.inc:35 -msgid "Inode soft quota must be smaller than inode hard quota." -msgstr "Az inode lágykvóta mindig kisebb kell legyen, mint az inode keménykvóta." - -#: ../lib/modules/sambaAccount.inc:47 -#: ../lib/modules/sambaAccount.inc:48 -#: ../lib/modules/sambaSamAccount.inc:45 -msgid "Inserted user- or groupname in HomePath." -msgstr "A felhasználó- vagy csoportnév a home könyvtár elérési útvonalába illesztve." - -#: ../lib/modules/sambaAccount.inc:53 -msgid "Inserted user- or groupname in logon script." -msgstr "A felhasználó- vagy csoportnév a logon szkriptbe illesztve." - -#: ../lib/modules/sambaAccount.inc:50 -#: ../lib/modules/sambaAccount.inc:51 -#: ../lib/modules/sambaSamAccount.inc:48 -msgid "Inserted user- or groupname in profilepath." -msgstr "A felhasználó- vagy csoportnév a profil elérési útvonalába illesztve." - -#: ../lib/modules/sambaSamAccount.inc:51 -msgid "Inserted user- or groupname in scriptpath." -msgstr "A felhasználó- vagy csoportnév a szkript elérési útvonalába illesztve." - -#: ../lib/modules/sambaGroupMapping.inc:57 -msgid "Invalid Account" -msgstr "Érvénytelen témaszám" - -#: ../lib/modules/posixGroup.inc:177 -#: ../lib/modules/posixAccount.inc:891 -msgid "Invalid password" -msgstr "Érvénytelen jelszó" - -#: ../lib/status.inc:61 -msgid "Invalid/Missing Message type" -msgstr "Érvénytelen/hiányzó üzenettípus" - -#: ../lib/modules/posixGroup.inc:464 -#: ../lib/modules/posixAccount.inc:68 -msgid "It is possible that this ID-number is reused. This can cause several problems because files with old permissions might still exist. To avoid this warning set maxUID to a higher value." -msgstr "Lehetséges, hogy ez az ID-érték egyszer már használatban volt. Ez különbözÅ‘ problémákat okozhat, mert lehetséges, hogy léteznek file-ok régi engedélyekkel. Hogy ne legyen szükség ilyen figyelmeztetésre, állítsa a maxUID értékét magasabbra." - -#: ../lib/modules/inetOrgPerson.inc:70 -#: ../lib/modules/inetOrgPerson.inc:97 -#: ../lib/modules/inetOrgPerson.inc:149 -#: ../lib/modules/inetOrgPerson.inc:227 -#: ../lib/modules/inetOrgPerson.inc:404 -#: ../lib/modules/inetOrgPerson.inc:462 -msgid "Job title" -msgstr "Munka címe" - -#: ../lib/modules/inetOrgPerson.inc:228 -msgid "Job title of user: President, department manager, ..." -msgstr "A felhasználó munkavégzés szerinti megszółítása: elnök, részlegvezetÅ‘, ..." - -#: ../templates/schema/schema.php:261 -msgid "Jump to a matching rule" -msgstr "IlleszkedÅ‘ szabályra ugrás" - -#: ../templates/schema/schema.php:120 -msgid "Jump to an attribute type" -msgstr "Attribútum típusra ugrás" - -#: ../templates/schema/schema.php:314 -#: ../templates/schema/schema.php:364 -#: ../templates/schema/schema.php:379 -msgid "Jump to an object class" -msgstr "Objektumosztályra ugrás" - -#: ../lib/status.inc:60 -msgid "LAM Internal Error" -msgstr "LAM belsÅ‘ hiba" - -#: ../templates/tree/delete_form.php:99 -#, php-format -msgid "LAM can recursively delete this entry and all of its children. See below for a list of all the entries that this action will delete. Do you want to do this?" -msgstr "Az LAM rekurzív módon törölheti ezt a bejegyzést és ennek minden gyermekét. Tekintse meg az alábbi listát azokról a bejegyzésekrÅ‘l, amit most törölni készül. Ezt kívánja?" - -#: ../templates/massBuildAccounts.php:188 -msgid "LAM has checked your input and is now ready to create the accounts." -msgstr "A LAM ellenÅ‘rízte az Ön által bevitt adatokat, és készen áll a témaszámok létrehozására." - -#: ../lib/modules/posixGroup.inc:418 -#: ../lib/modules/posixAccount.inc:299 -msgid "LAM supports CRYPT, SHA, SSHA, MD5 and SMD5 to generate the hash value of passwords. 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." -msgstr "A LAM támogatja a CRYPT-et, az SHA-t, az SSHA-t, az MD5-öt és az SMD5-öt a jelszavak hash értékének létrehozásához. Az SSHA és a CRYPT a legelterjedtebbek, ám a CRYPT nem támogat 8 betűnél hosszabb jelszavakat. Nem javasoljuk a sima szöveges, úgynevezett plain text jelszavak használatát." - -#: ../templates/tree/create.php:180 -#: ../templates/massDoUpload.php:82 -#, php-format -msgid "LAM was unable to create account %s! An LDAP error occured." -msgstr "A LAM nem tudta létrehozni a %s témaszámot! LDAP hiba történt." - -#: ../lib/modules/sambaGroupMapping.inc:352 -msgid "LAM was unable to find a Samba 3 domain with this name!" -msgstr "A LAM nem talált ilyen nevű Samba 3 tartományt!" - -#: ../lib/modules/sambaSamAccount.inc:70 -msgid "LAM was unable to find a domain with this name!" -msgstr "A LAM nem talált ilyen nevű tartományt!" - -#: ../lib/modules/posixAccount.inc:84 -msgid "LAM was unable to find a group with this name!" -msgstr "A LAM nem talált ilyen nevű csoportot!" - -#: ../lib/modules/posixAccount.inc:1381 -#, php-format -msgid "LAM was unable to modify group memberships for group: %s" -msgstr "A LAM nem tudta a %s csoport tagsági viszonyait megváltoztatni!" - -#: ../templates/profedit/profilepage.php:87 -msgid "LDAP" -msgstr "LDAP" - -#: ../templates/config/confmodules.php:67 -#: ../templates/config/confsave.php:75 -#: ../templates/config/confmain.php:148 -msgid "LDAP Account Manager Configuration" -msgstr "Az LDAP Account Manager beállítása" - -#: ../templates/config/confmain.php:308 -msgid "LDAP List settings" -msgstr "LDAP listázási beállítások" - -#: ../templates/lists/listhosts.php:119 -#: ../templates/lists/listgroups.php:119 -#: ../templates/lists/listdomains.php:132 -#: ../templates/lists/listusers.php:147 -msgid "LDAP Search failed! Please check your preferences." -msgstr "Az LDAP keresés sikertelen! Kérem, ellenÅ‘rízze a beállításait." - -#: ../templates/login.php:371 -msgid "LDAP error, server says:" -msgstr "LDAP hiba, a szerver azt válaszolja:" - -#: ../lib/modules.inc:946 -msgid "LDAP operation successful." -msgstr "Sikeres LDAP mûvelet." - -#: ../templates/login.php:266 -msgid "LDAP server" -msgstr "LDAP szerver" - -#: ../templates/lists/listhosts.php:104 -#: ../templates/lists/listgroups.php:104 -#: ../templates/lists/listdomains.php:121 -#: ../templates/lists/listusers.php:131 -msgid "LDAP sizelimit exceeded, not all entries are shown." -msgstr "Túlléptük az LDAP mérethatárt, nem látszik minden bejegyzés." - -#: ../templates/profedit/profilepage.php:91 -msgid "LDAP suffix" -msgstr "LDAP utótag" - -#: ../templates/massDoUpload.php:117 -msgid "LDAP upload has finished" -msgstr "Az LDAP feltöltési folyamat befejezÅ‘dött." - -#: ../templates/massDoUpload.php:66 -msgid "LDAP upload in progress. Please wait." -msgstr "Az LDAP feltöltés folyamatban van. Kérem várjon." - -#: ../templates/login.php:212 -msgid "Language" -msgstr "Nyelv" - -#: ../templates/config/confsave.php:153 -msgid "Language is not defined!" -msgstr "Nincs megadva a nyelv!" - -#: ../templates/config/confmain.php:366 -msgid "Language settings" -msgstr "Nyelvi beállítások" - -#: ../lib/modules/inetOrgPerson.inc:54 -#: ../lib/modules/inetOrgPerson.inc:136 -#: ../lib/modules/inetOrgPerson.inc:235 -#: ../lib/modules/inetOrgPerson.inc:412 -#: ../lib/modules/inetOrgPerson.inc:464 -#: ../lib/lists.inc:308 -#: ../help/help.inc:192 -msgid "Last name" -msgstr "Vezetéknév" - -#: ../lib/modules/inetOrgPerson.inc:54 -#: ../lib/modules/inetOrgPerson.inc:55 -msgid "Last name contains invalid characters!" -msgstr "A vezetéknév érvénytelen karaktereket tartalmaz" - -#: ../lib/modules/inetOrgPerson.inc:236 -#: ../help/help.inc:193 -msgid "Last name of user. Only letters, - and spaces are allowed." -msgstr "A felhasználó vezetékneve. Csak betűk, a - és szóközök használhatóak." - -#: ../lib/modules/shadowAccount.inc:338 -msgid "Last password change" -msgstr "A jelszó utolsó megváltoztatása" - -#: ../templates/pdfedit/pdfpage.php:535 -msgid "Left" -msgstr "Balra" - -#: ../help/help.inc:72 -msgid "List attributes" -msgstr "Lista attribútumok" - -#: ../help/help.inc:215 -msgid "List of Samba workstations the user is allowed to login. Empty means every workstation." -msgstr "Azon Samba munkaállomások listája, melyekre a felhasználó bejelentkezhet. Ha üresen marad, minden munkaállomásra való bejelentkezés engedélyezett." - -#: ../templates/config/confsave.php:102 -msgid "List of admin users is empty or invalid!" -msgstr "Az adminisztrátor felhasználók listája üres vagy érvénytelen!" - -#: ../templates/tree/delete_form.php:129 -msgid "List of entries to be deleted:" -msgstr "A törlésre kerülÅ‘ bejegyzések listája:" - -#: ../templates/config/confmain.php:445 -#: ../lib/config.inc:370 -msgid "List of valid users" -msgstr "Az érvényes felhasználók listája" - -#: ../lib/modules.inc:984 -#: ../lib/modules.inc:987 -#: ../help/help.inc:186 -msgid "Load profile" -msgstr "Profil betöltése" - -#: ../lib/modules/sambaGroupMapping.inc:54 -msgid "Local Group" -msgstr "Helyi csoport" - -#: ../lib/modules/inetLocalMailRecipient.inc:60 -#: ../lib/modules/inetLocalMailRecipient.inc:206 -msgid "Local address" -msgstr "Helyi cím" - -#: ../lib/modules/inetLocalMailRecipient.inc:64 -#: ../lib/modules/inetLocalMailRecipient.inc:97 -#: ../lib/modules/inetLocalMailRecipient.inc:372 -msgid "Local address list" -msgstr "Helyi cím-lista" - -#: ../lib/modules/posixGroup.inc:182 -#: ../lib/modules/posixAccount.inc:218 -#: ../lib/modules/posixAccount.inc:896 -#: ../lib/modules/posixAccount.inc:1025 -msgid "Lock password" -msgstr "Zárolt jelszó" - -#: ../templates/login.php:241 -#: ../templates/config/conflogin.php:68 -#: ../help/help.inc:46 -msgid "Login" -msgstr "Bejelentkezés" - -#: ../lib/modules/posixAccount.inc:204 -#: ../lib/modules/posixAccount.inc:332 -#: ../lib/modules/posixAccount.inc:902 -#: ../lib/modules/posixAccount.inc:1017 -#: ../lib/modules/posixAccount.inc:1088 -#: ../lib/lists.inc:310 -#: ../help/help.inc:154 -msgid "Login shell" -msgstr "BejelentkezÅ‘ shell" - -#: ../templates/pdfedit/pdfpage.php:434 -msgid "Logo" -msgstr "Logó" - -#: ../lib/modules/sambaSamAccount.inc:197 -#: ../lib/modules/sambaSamAccount.inc:316 -msgid "Logon hours" -msgstr "Belépési órák" - -#: ../lib/modules/sambaAccount.inc:52 -#: ../lib/modules/sambaAccount.inc:53 -#: ../lib/modules/sambaAccount.inc:142 -#: ../lib/modules/sambaAccount.inc:274 -#: ../lib/modules/sambaAccount.inc:363 -#: ../lib/modules/sambaAccount.inc:736 -#: ../lib/modules/sambaAccount.inc:837 -#: ../lib/modules/sambaSamAccount.inc:178 -#: ../lib/modules/sambaSamAccount.inc:290 -#: ../lib/modules/sambaSamAccount.inc:722 -#: ../lib/modules/sambaSamAccount.inc:869 -#: ../lib/modules/sambaSamAccount.inc:955 -msgid "Logon script" -msgstr "Bejelentkezési script" - -#: ../lib/modules/sambaAccount.inc:52 -#: ../lib/modules/sambaAccount.inc:54 -#: ../lib/modules/sambaSamAccount.inc:52 -msgid "Logon script is invalid!" -msgstr "A logon script érvénytelen!" - -#: ../templates/main_header.php:66 -#: ../templates/logout.php:60 -msgid "Logout" -msgstr "Kijelentkezés" - -#: ../lib/modules/ieee802device.inc:50 -#: ../lib/modules/ieee802device.inc:56 -#: ../lib/modules/ieee802device.inc:67 -#: ../lib/modules/ieee802device.inc:144 -msgid "MAC address" -msgstr "MAC-cím" - -#: ../lib/modules/ieee802device.inc:60 -#: ../lib/modules/ieee802device.inc:257 -msgid "MAC address list" -msgstr "MAC-cím lista" - -#: ../lib/modules/nisMailAlias.inc:54 -msgid "Mail aliases" -msgstr "Levél alias-ok" - -#: ../lib/modules/inetLocalMailRecipient.inc:50 -msgid "Mail routing" -msgstr "levelezÅ‘ útvonal" - -#: ../lib/modules/inetLocalMailRecipient.inc:68 -#: ../lib/modules/inetLocalMailRecipient.inc:74 -#: ../lib/modules/inetLocalMailRecipient.inc:103 -#: ../lib/modules/inetLocalMailRecipient.inc:200 -#: ../lib/modules/inetLocalMailRecipient.inc:375 -msgid "Mail server" -msgstr "Levélszerver" - -#: ../lib/modules/nisMailAlias.inc:61 -msgid "Mails to this name are forwarded to the recipients." -msgstr "Az erre a névre érkezÅ‘ levelek a címzetteknek továbbítódnak." - -#: ../lib/modules.inc:901 -#: ../lib/modules.inc:926 -msgid "Main" -msgstr "FÅ‘oldal" - -#: ../templates/config/conflogin.php:138 -msgid "Manage profiles" -msgstr "Profilok beállítása" - -#: ../templates/tools.php:77 -msgid "Manages OU objects in your LDAP tree." -msgstr "Az LDAP fában levÅ‘ OU objektumok beállítása." - -#: ../templates/tools.php:62 -msgid "Manages Samba 3 domain accounts." -msgstr "Samba 3 tartomány témaszámainak beállítása." - -#: ../templates/pdfedit/pdfpage.php:508 -msgid "Margin" -msgstr "Margó" - -#: ../templates/config/profmanage.php:398 -msgid "Master Password:" -msgstr "Mesterjelszó:" - -#: ../help/help.inc:126 -msgid "Master password" -msgstr "Mesterjelszó" - -#: ../templates/config/profmanage.php:68 -msgid "Master password is wrong!" -msgstr "Hibás mesterjelszó!" - -#: ../templates/config/profmanage.php:128 -msgid "Master passwords are different or empty!" -msgstr "A mester jelszavak nem egyeznek vagy üres(ek)!" - -#: ../templates/schema/schema.php:274 -msgid "Matching rule OID" -msgstr "IlleszkedÅ‘ szabály OID" - -#: ../templates/schema/schema.php:83 -#: ../templates/schema/schema.php:84 -msgid "Matching rules" -msgstr "IlleszkedÅ‘ szabályok" - -#: ../templates/config/confsave.php:147 -msgid "Max list entries is invalid!" -msgstr "A maximális listabejegyzés érvénytelen!" - -#: ../templates/pdfedit/pdfpage.php:479 -msgid "Maximize with correct ratio" -msgstr "Pontos arány megtartásával maximalizálás" - -#: ../lib/modules/posixGroup.inc:300 -#: ../lib/modules/posixGroup.inc:468 -#: ../lib/modules/posixGroup.inc:469 -msgid "Maximum GID number" -msgstr "A legnagyobb GID-érték" - -#: ../lib/modules/posixGroup.inc:317 -msgid "Maximum GID number for Unix groups" -msgstr "A legnagyobb GID-érték a Unix csoportok számára" - -#: ../lib/modules/posixGroup.inc:468 -msgid "Maximum GID number is invalid or empty!" -msgstr "A legnagyobb GID-érték érvénytelen vagy üres!" - -#: ../lib/modules/posixGroup.inc:469 -msgid "Maximum GID number must be greater than minimum GID number!" -msgstr "A legnagyobb GID-érték nagyobb kell legyen, mint a minimális GID-érték!" - -#: ../lib/modules/posixAccount.inc:58 -#: ../lib/modules/posixAccount.inc:60 -#: ../lib/modules/posixAccount.inc:61 -#: ../lib/modules/posixAccount.inc:62 -#: ../lib/modules/posixAccount.inc:129 -#: ../lib/modules/posixAccount.inc:138 -msgid "Maximum UID number" -msgstr "Legnagyobb UID-érték" - -#: ../lib/modules/posixAccount.inc:159 -msgid "Maximum UID number for Unix accounts (hosts)" -msgstr "A legnagyobb UID-érték a Unix témaszámokhoz (gazdaállomásokhoz)" - -#: ../lib/modules/posixAccount.inc:157 -msgid "Maximum UID number for Unix accounts (users)" -msgstr "Legnagyobb UID-érték a Unix témaszámokhoz (felhasználókhoz)" - -#: ../lib/modules/posixAccount.inc:58 -#: ../lib/modules/posixAccount.inc:60 -msgid "Maximum UID number is invalid!" -msgstr "A legnagyobb UID-érték érvénytelen!" - -#: ../lib/modules/posixAccount.inc:61 -#: ../lib/modules/posixAccount.inc:62 -msgid "Maximum UID number must be greater than minimum UID number!" -msgstr "A legnagyobb UID-érték nagyobb kell legyen, mint a minimális UID-érték!" - -#: ../templates/tree/add_attr_form.php:166 -#, php-format -msgid "Maximum file size: %s" -msgstr "Maximális fileméret: %s" - -#: ../templates/tree/add_value_form.php:193 -#: ../templates/schema/schema.php:220 -msgid "Maximum length" -msgstr "Maximális hossz" - -#: ../templates/config/confmain.php:346 -#: ../lib/config.inc:366 -#: ../help/help.inc:92 -msgid "Maximum list entries" -msgstr "Legtöbb listabejegyzés száma" - -#: ../lib/modules/shadowAccount.inc:88 -#: ../lib/modules/shadowAccount.inc:158 -#: ../lib/modules/shadowAccount.inc:188 -#: ../lib/modules/shadowAccount.inc:310 -#: ../help/help.inc:176 -msgid "Maximum password age" -msgstr "A jelszó lejárásának legkésÅ‘bbi idÅ‘pontja" - -#: ../lib/modules/inetOrgPerson.inc:138 -msgid "Miller" -msgstr "Molnár" - -#: ../lib/modules/posixGroup.inc:297 -#: ../lib/modules/posixGroup.inc:467 -msgid "Minimum GID number" -msgstr "A minimális GID-érték" - -#: ../lib/modules/posixGroup.inc:316 -msgid "Minimum GID number for Unix groups" -msgstr "A minimális GID-érték a Unix csoportok számára" - -#: ../lib/modules/posixGroup.inc:467 -msgid "Minimum GID number is invalid or empty!" -msgstr "A minimális GID-érték érvénytelen vagy üres!" - -#: ../lib/modules/posixAccount.inc:57 -#: ../lib/modules/posixAccount.inc:59 -#: ../lib/modules/posixAccount.inc:126 -#: ../lib/modules/posixAccount.inc:135 -msgid "Minimum UID number" -msgstr "Minimális UID-érték" - -#: ../lib/modules/posixAccount.inc:158 -msgid "Minimum UID number for Unix accounts (hosts)" -msgstr "Minimális UID-érték a Unix témaszámok (gazdaállomások) számára" - -#: ../lib/modules/posixAccount.inc:156 -msgid "Minimum UID number for Unix accounts (users)" -msgstr "Minimális UID-érték a Unix témaszámok (felhasználók) részére" - -#: ../lib/modules/posixAccount.inc:57 -#: ../lib/modules/posixAccount.inc:59 -msgid "Minimum UID number is invalid!" -msgstr "A legkisebb UID-érték érvénytelen!" - -#: ../lib/modules/shadowAccount.inc:83 -#: ../lib/modules/shadowAccount.inc:154 -#: ../lib/modules/shadowAccount.inc:182 -#: ../lib/modules/shadowAccount.inc:307 -#: ../help/help.inc:178 -msgid "Minimum password age" -msgstr "A jelszót minimum eddig kell használni" - -#: ../lib/modules/inetOrgPerson.inc:58 -#: ../lib/modules/inetOrgPerson.inc:185 -#: ../lib/modules/inetOrgPerson.inc:259 -#: ../lib/modules/inetOrgPerson.inc:260 -#: ../lib/modules/inetOrgPerson.inc:436 -#: ../lib/modules/inetOrgPerson.inc:470 -msgid "Mobile number" -msgstr "Mobiltelefon száma" - -#: ../lib/modules.inc:854 -#: ../lib/modules.inc:992 -msgid "Modify Account" -msgstr "Témaszám módosítása" - -#: ../templates/config/confmodules.php:75 -msgid "Module selection" -msgstr "Modul kiválasztása" - -#: ../lib/config.inc:374 -msgid "Module settings" -msgstr "Modul beállítások" - -#: ../lib/modules/quota.inc:64 -#: ../lib/modules/quota.inc:291 -#: ../lib/modules/quota.inc:349 -#: ../lib/modules/quota.inc:422 -msgid "Mountpoint" -msgstr "Csatolási pont" - -#: ../lib/modules/quota.inc:65 -msgid "Mountpoint of device with enabled quotas." -msgstr "Kvótákkal szabályozott eszköz csatolási pontja." - -#: ../lib/modules/inetOrgPerson.inc:175 -msgid "Mycity" -msgstr "Lakhelyem" - -#: ../lib/modules/inetOrgPerson.inc:163 -msgid "Mystreetname 42" -msgstr "Utcanév 42" - -#: ../templates/tree/templates/creation/new_ou_template.php:59 -#: ../templates/tree/templates/creation/new_ou_template.php:104 -#: ../templates/schema/schema.php:274 -#: ../templates/pdfedit/pdfdelete.php:56 -#: ../templates/pdfedit/pdfdelete.php:59 -#: ../templates/pdfedit/pdfdelete.php:78 -msgid "Name" -msgstr "Név" - -#: ../help/help.inc:138 -msgid "Name under which the profile will be saved. If a profile with the same name exists, it will be overwritten." -msgstr "Név, mellyel a profil el lesz mentve. Ha már van ilyen nevű profil, az új profil felülírja azt." - -#: ../templates/lists/listdomains.php:208 -msgid "New Domain" -msgstr "Új tartomány" - -#: ../templates/lists/listgroups.php:236 -msgid "New Group" -msgstr "Új csoport" - -#: ../templates/lists/listhosts.php:221 -msgid "New Host" -msgstr "Új gazdaaállomás" - -#: ../lib/modules/ieee802device.inc:151 -msgid "New MAC address" -msgstr "Új MAC-cím" - -#: ../templates/ou_edit.php:52 -#: ../templates/ou_edit.php:117 -#: ../templates/ou_edit.php:182 -#: ../templates/ou_edit.php:247 -msgid "New OU created successfully." -msgstr "Az új OU sikeresen létrehozva." - -#: ../templates/config/confmain.php:458 -msgid "New Password" -msgstr "Új jelszó" - -#: ../templates/config/profmanage.php:135 -msgid "New default profile set successfully." -msgstr "Az új alapértelmezett profil sikeresen beállítva." - -#: ../lib/modules/inetLocalMailRecipient.inc:213 -msgid "New local address" -msgstr "Új helyi cím" - -#: ../templates/config/profmanage.php:368 -msgid "New master password" -msgstr "Új mester jelszó" - -#: ../templates/config/profmanage.php:126 -msgid "New master password set successfully." -msgstr "Az új mester jelszó sikeresen beállítva." - -#: ../templates/tree/templates/creation/new_ou_template.php:47 -#: ../templates/ou_edit.php:341 -#: ../templates/ou_edit.php:378 -#: ../templates/ou_edit.php:415 -#: ../templates/ou_edit.php:452 -#: ../help/help.inc:243 -msgid "New organizational unit" -msgstr "Új szervezeti egység" - -#: ../templates/config/profmanage.php:116 -msgid "New password set successfully." -msgstr "Az új jelszó sikeresen beállítva." - -#: ../lib/modules/nisMailAlias.inc:179 -msgid "New recipient" -msgstr "Új címzett" - -#: ../templates/tree/add_oclass_form.php:127 -msgid "New required attributes:" -msgstr "Új szükséges attribútumok:" - -#: ../templates/lists/listusers.php:281 -msgid "New user" -msgstr "Új felhasználó" - -#: ../templates/tree/update_confirm.php:150 -msgid "New value" -msgstr "Új érték" - -#: ../templates/tree/create_form.php:137 -#: ../templates/tree/templates/creation/custom.php:86 -#: ../templates/tree/templates/creation/new_ou_template.php:69 -msgid "Next" -msgstr "KövetkezÅ‘" - -#: ../templates/domain.php:155 -#: ../help/help.inc:257 -msgid "Next Group RID" -msgstr "KövetkezÅ‘ csoport RID" - -#: ../templates/domain.php:129 -#: ../help/help.inc:253 -msgid "Next RID" -msgstr "KövetkezÅ‘ RID" - -#: ../templates/domain.php:284 -msgid "Next RID is not a number!" -msgstr "A következÅ‘ RID értéke nem szám!" - -#: ../help/help.inc:254 -msgid "Next RID to use when creating accounts." -msgstr "A következÅ‘ RID, melyet témaszámok létrehozásakor használni kell." - -#: ../help/help.inc:258 -msgid "Next RID to use when creating groups." -msgstr "A következÅ‘ RID, melyet csoportok létrehozásakor használni kell." - -#: ../help/help.inc:256 -msgid "Next RID to use when creating user accounts." -msgstr "A következÅ‘ RID, melyet felhasználói témaszámok létrehozásakor használni kell." - -#: ../templates/domain.php:142 -#: ../help/help.inc:255 -msgid "Next User RID" -msgstr "KövetkezÅ‘ felhasználó RID" - -#: ../templates/domain.php:286 -msgid "Next group RID is not a number!" -msgstr "A következÅ‘ csoport RID-je nem szám!" - -#: ../templates/domain.php:285 -msgid "Next user RID is not a number!" -msgstr "A következÅ‘ felhasználó RID-je nem szám!" - -#: ../templates/schema/schema.php:159 -#: ../templates/schema/schema.php:201 -#: ../templates/schema/schema.php:206 -#: ../templates/schema/schema.php:211 -msgid "No" -msgstr "Nem" - -#: ../templates/lists/listdomains.php:126 -#: ../templates/lists/listdomains.php:132 -#: ../templates/lists/listdomains.php:136 -msgid "No Samba domains found!" -msgstr "Nincsenek Samba tartományok!" - -#: ../lib/modules/posixAccount.inc:366 -#: ../lib/modules/posixAccount.inc:597 -#: ../lib/modules/posixAccount.inc:830 -msgid "No Unix groups found in LDAP! Please create one first." -msgstr "Nincsenek Unix csoportok az LDAP-ban! Kérem, készítsen egyet!" - -#: ../templates/initsuff.php:161 -msgid "No changes were made." -msgstr "Nem történt változtatás." - -#: ../templates/config/conflogin.php:93 -msgid "No configuration profiles found. Please create one." -msgstr "Nincs beállítási profil. Kérem, készítsen egyet!" - -#: ../templates/schema/schema.php:150 -msgid "No description" -msgstr "Nincs leírás" - -#: ../lib/modules/posixGroup.inc:465 -#: ../lib/modules/posixAccount.inc:67 -msgid "No free ID-Number!" -msgstr "Nincs szabad ID-érték!" - -#: ../templates/lists/listgroups.php:119 -#: ../templates/lists/listgroups.php:125 -msgid "No groups found!" -msgstr "Nincsenek csoportok!" - -#: ../templates/lists/listhosts.php:119 -#: ../templates/lists/listhosts.php:125 -msgid "No hosts found!" -msgstr "Nincsenek gazdaállomások!" - -#: ../templates/tree/edit.php:185 -msgid "No internal attributes" -msgstr "Nincsenek belsÅ‘ attribútumok" - -#: ../templates/pdfedit/pdfpage.php:409 -msgid "No logo" -msgstr "Nincs logo" - -#: ../templates/config/confmodules.php:254 -msgid "No or more than one base module selected!" -msgstr "Nem választott alapmodult, vagy egynél többet választott!" - -#: ../templates/config/confmain.php:97 -msgid "No password was entered!" -msgstr "Nem adott meg jelszót!" - -#: ../templates/pdfedit/pdfpage.php:73 -msgid "No section text specified" -msgstr "Nem határozott meg szekció szöveget!" - -#: ../templates/pdfedit/pdfpage.php:77 -msgid "No static text specified" -msgstr "Nem határozott meg statikus szöveget!" - -#: ../templates/tree/edit.php:80 -msgid "No such entry!" -msgstr "Nincs ilyen bejegyzés!" - -#: ../templates/schema/schema.php:443 -#, php-format -msgid "No such schema item: \"%s\"" -msgstr "Nincs ilyen sémaelem: \"%s\"" - -#: ../templates/lists/listusers.php:148 -#: ../templates/lists/listusers.php:154 -msgid "No users found!" -msgstr "Nincsenek felhasználók!" - -#: ../help/help.inc:57 -msgid "Note" -msgstr "Megjegyzés" - -#: ../templates/tree/add_value_form.php:114 -msgid "Note: You will get an \"inappropriate matching\" error if you have not setup an EQUALITY rule on your LDAP server for this attribute." -msgstr "Megjegyzés: \"Nem megfelelÅ‘ illeszkedés\" hibát okoz, ha nem állított be EGYENLÅSÉG szabályt ehhez az attribútumhoz az Ön LDAP szerverén." - -#: ../lib/modules/shadowAccount.inc:151 -#: ../help/help.inc:175 -msgid "Number of days a user can login even his password has expired. -1=always." -msgstr "Ahány napig a felhasználó beléphet jelszavának lejárta után. -1=mindig." - -#: ../lib/modules/shadowAccount.inc:155 -#: ../help/help.inc:179 -msgid "Number of days a user has to wait until he\\'s allowed to change his password again. If set value must be 0<." -msgstr "Ahány napig a felhasználónak várnia kell, hogy jelszavát újra megváltoztathassa. Ha beállítja, 0-nál nagyobb értéket kell megadnia." - -#: ../lib/modules/shadowAccount.inc:159 -#: ../help/help.inc:177 -msgid "Number of days after a user has to change his password again. If set value must be 0<." -msgstr "Ahány nap után a felhasználónak ismételten meg _kell_ változtatnia jelszavát. Ha beállítja, 0-nál nagyobb értéket kell megadnia." - -#: ../templates/schema/schema.php:153 -#: ../templates/schema/schema.php:350 -msgid "OID" -msgstr "OID" - -#: ../templates/ou_edit.php:58 -#: ../templates/ou_edit.php:123 -#: ../templates/ou_edit.php:188 -#: ../templates/ou_edit.php:253 -msgid "OU already exists!" -msgstr "Az OU már létezik!" - -#: ../templates/ou_edit.php:69 -#: ../templates/ou_edit.php:134 -#: ../templates/ou_edit.php:199 -#: ../templates/ou_edit.php:264 -msgid "OU deleted successfully." -msgstr "Az OU sikeresen törölve." - -#: ../templates/tools.php:76 -msgid "OU editor" -msgstr "OU szerkesztÅ‘" - -#: ../templates/ou_edit.php:62 -#: ../templates/ou_edit.php:127 -#: ../templates/ou_edit.php:192 -#: ../templates/ou_edit.php:257 -msgid "OU is invalid!" -msgstr "Az OU érvénytelen!" - -#: ../templates/ou_edit.php:99 -#: ../templates/ou_edit.php:164 -#: ../templates/ou_edit.php:229 -#: ../templates/ou_edit.php:294 -msgid "OU is not empty or invalid!" -msgstr "Az OU nem üres vagy érvénytelen!" - -#: ../help/help.inc:243 -#: ../help/help.inc:245 -msgid "OU-Editor" -msgstr "OU szerkesztÅ‘" - -#: ../templates/tree/templates/creation/custom.php:70 -#: ../templates/schema/schema.php:71 -#: ../templates/schema/schema.php:72 -msgid "Object classes" -msgstr "Objektumosztályok" - -#: ../lib/modules.inc:1021 -#: ../lib/modules.inc:1059 -#: ../lib/modules.inc:1174 -#, php-format -msgid "ObjectClass %s required but not defined in LDAP." -msgstr "A %s objektumOsztály szükséges, de nincs meghatározva az LDAP-ban." - -#: ../templates/schema/schema.php:158 -#: ../templates/schema/schema.php:289 -msgid "Obsolete" -msgstr "Elavult" - -#: ../templates/config/conflogin.php:123 -#: ../templates/config/conflogin.php:124 -msgid "Ok" -msgstr "Rendben" - -#: ../templates/tree/update_confirm.php:149 -msgid "Old value" -msgstr "Régi érték" - -#: ../templates/tree/templates/creation/custom.php:209 -#: ../templates/schema/schema.php:390 -msgid "Optional attributes" -msgstr "Szabadon választható attribútumok" - -#: ../templates/tree/templates/creation/custom.php:225 -msgid "Optional binary attributes" -msgstr "Szabadon választható attribútumok" - -#: ../templates/schema/schema.php:177 -msgid "Ordering" -msgstr "Hozzárendelés" - -#: ../templates/tree/templates/templates.inc:46 -msgid "Organizational unit" -msgstr "Szervezeti egység" - -#: ../templates/tools.php:83 -msgid "PDF editor" -msgstr "PDF szerkesztÅ‘" - -#: ../templates/lists/listhosts.php:226 -#: ../templates/lists/listgroups.php:241 -#: ../templates/lists/listusers.php:286 -#: ../templates/pdfedit/pdfpage.php:573 -msgid "PDF structure" -msgstr "PDF szerkezet" - -#: ../templates/pdfedit/pdfmain.php:101 -msgid "PDF structures" -msgstr "PDF szerkezetek" - -#: ../templates/pdfedit/pdfpage.php:61 -msgid "PDF-structure name not valid" -msgstr "A PDF-szerkezet neve érvénytelen" - -#: ../templates/pdfedit/pdfpage.php:429 -msgid "Page settings" -msgstr "Oldal beállításai" - -#: ../templates/schema/schema.php:372 -msgid "Parent to" -msgstr "Ennek a szülÅ‘je" - -#: ../templates/login.php:189 -#: ../lib/modules/posixGroup.inc:157 -#: ../lib/modules/posixGroup.inc:169 -#: ../lib/modules/posixGroup.inc:258 -#: ../lib/modules/posixGroup.inc:460 -#: ../lib/modules/posixGroup.inc:461 -#: ../lib/modules/posixGroup.inc:462 -#: ../lib/modules/sambaAccount.inc:59 -#: ../lib/modules/sambaAccount.inc:60 -#: ../lib/modules/sambaAccount.inc:204 -#: ../lib/modules/sambaSamAccount.inc:55 -#: ../lib/modules/sambaSamAccount.inc:56 -#: ../lib/modules/sambaSamAccount.inc:220 -#: ../lib/modules/posixAccount.inc:71 -#: ../lib/modules/posixAccount.inc:72 -#: ../lib/modules/posixAccount.inc:73 -#: ../lib/modules/posixAccount.inc:212 -#: ../lib/modules/posixAccount.inc:323 -#: ../lib/modules/posixAccount.inc:871 -#: ../lib/modules/posixAccount.inc:883 -#: ../lib/modules/posixAccount.inc:976 -#: ../lib/modules/posixAccount.inc:1087 -msgid "Password" -msgstr "Jelszó" - -#: ../templates/config/confsave.php:246 -msgid "Password changed!" -msgstr "Jelszó megváltozott!" - -#: ../lib/modules/posixGroup.inc:461 -#: ../lib/modules/sambaAccount.inc:60 -#: ../lib/modules/sambaAccount.inc:61 -#: ../lib/modules/sambaSamAccount.inc:56 -#: ../lib/modules/sambaSamAccount.inc:57 -#: ../lib/modules/posixAccount.inc:72 -#: ../lib/modules/posixAccount.inc:74 -msgid "Password contains invalid characters. Valid characters are: a-z, A-Z, 0-9 and #*,.;:_-+!$%&/|?{[()]}= !" -msgstr "A jelszó érvénytelen karaktert tartalmaz. Érvényes karakterek: a-z, A-Z, 0-9 és #*,.;:_-+!$%&/|?{[()]}= !" - -#: ../lib/modules/sambaAccount.inc:110 -#: ../lib/modules/sambaAccount.inc:226 -#: ../lib/modules/sambaAccount.inc:337 -#: ../lib/modules/sambaAccount.inc:340 -#: ../lib/modules/sambaAccount.inc:701 -#: ../lib/modules/sambaSamAccount.inc:152 -#: ../lib/modules/sambaSamAccount.inc:155 -#: ../lib/modules/sambaSamAccount.inc:242 -#: ../lib/modules/sambaSamAccount.inc:687 -#: ../lib/modules/sambaSamAccount.inc:837 -#: ../help/help.inc:200 -msgid "Password does not expire" -msgstr "A jelszó nem jár le" - -#: ../lib/modules/shadowAccount.inc:43 -#: ../lib/modules/shadowAccount.inc:78 -#: ../lib/modules/shadowAccount.inc:150 -#: ../lib/modules/shadowAccount.inc:176 -#: ../lib/modules/shadowAccount.inc:304 -#: ../lib/modules/shadowAccount.inc:341 -msgid "Password expiration" -msgstr "A jelszó lejárata" - -#: ../lib/modules/shadowAccount.inc:43 -#: ../lib/modules/shadowAccount.inc:44 -msgid "Password expiration must be are natural number or -1." -msgstr "A jelszó lejárásához megadott érték csak természetes szám lehet, vagy -1. " - -#: ../help/help.inc:174 -msgid "Password expire" -msgstr "Jelszó érvényessége" - -#: ../lib/modules/posixGroup.inc:304 -#: ../lib/modules/posixGroup.inc:417 -#: ../lib/modules/posixAccount.inc:144 -#: ../lib/modules/posixAccount.inc:298 -msgid "Password hash type" -msgstr "A jelszó hash-ének típusa" - -#: ../lib/modules/posixAccount.inc:160 -msgid "Password hash type for Unix accounts" -msgstr "A jelszó hash-ének típusa a Unix témaszámokhoz" - -#: ../lib/modules/posixGroup.inc:318 -msgid "Password hash type for Unix groups" -msgstr "A jelszó hash-ének típusa Unix csoportokhoz" - -#: ../lib/modules/shadowAccount.inc:41 -#: ../lib/modules/shadowAccount.inc:47 -msgid "Password maxage" -msgstr "A jelszó maximális érvényességi ideje" - -#: ../lib/modules/shadowAccount.inc:41 -#: ../lib/modules/shadowAccount.inc:42 -msgid "Password maximum age must be are natural number." -msgstr "A jelszó maximális érvényességi ideje csak természetes szám lehet." - -#: ../lib/modules/shadowAccount.inc:47 -#: ../lib/modules/shadowAccount.inc:48 -msgid "Password maximum age must be bigger as password minimum age." -msgstr "A jelszó maximális érvényességi idejének nagyobbnak kell lennie a minimális érvényességi idÅ‘nél." - -#: ../lib/modules/shadowAccount.inc:39 -msgid "Password minage" -msgstr "A jelszó minimális érvényességi ideje" - -#: ../lib/modules/shadowAccount.inc:39 -#: ../lib/modules/shadowAccount.inc:40 -msgid "Password minimum age must be are natural number." -msgstr "A jelszó minimális érvényességi ideje csak természetes szám lehet." - -#: ../help/help.inc:172 -msgid "Password warn" -msgstr "Jelszó figyelmeztetés" - -#: ../lib/modules/shadowAccount.inc:45 -#: ../lib/modules/shadowAccount.inc:73 -#: ../lib/modules/shadowAccount.inc:146 -#: ../lib/modules/shadowAccount.inc:170 -#: ../lib/modules/shadowAccount.inc:301 -#: ../lib/modules/shadowAccount.inc:339 -msgid "Password warning" -msgstr "Jelszó figyelmeztetés" - -#: ../lib/modules/shadowAccount.inc:45 -#: ../lib/modules/shadowAccount.inc:46 -msgid "Password warning must be are natural number." -msgstr "A jelszó figyelmeztetés-értéke csak természetes szám lehet." - -#: ../templates/config/confsave.php:240 -msgid "Passwords are different!" -msgstr "A két jelszó nem egyezik!" - -#: ../lib/modules/sambaAccount.inc:361 -#: ../lib/modules/sambaSamAccount.inc:176 -#: ../help/help.inc:213 -msgid "Path of the user profile. Can be a local absolute path or a UNC-path (\\\\server\\share). $user and $group are replaced with user- and groupname." -msgstr "A felhasználói profil elérési útvonala. Helyi abszolút elérési útvonal vagy UNC elérési útvonal is lehet (\\\\server\\share). A $user és $group változók a felhasználó-és csoportnévvel lesznek helyettesítve." - -#: ../templates/config/confmain.php:426 -#: ../lib/config.inc:368 -msgid "Path to external script" -msgstr "A külsÅ‘ script elérési útvonala" - -#: ../templates/tree/delete_form.php:80 -msgid "Permanently delete all children, too?" -msgstr "Az összes gyermeket is véglegesen törli?" - -#: ../lib/modules/inetOrgPerson.inc:87 -msgid "Personal" -msgstr "Személyes adatok" - -#: ../templates/delete.php:77 -msgid "Please confirm:" -msgstr "Kérem erÅ‘sítse meg:" - -#: ../lib/modules/sambaSamAccount.inc:60 -msgid "Please enter a RID number or the name of a special account!" -msgstr "Kérem, adjon meg RID számot vagy egy különleges témaszám nevét!" - -#: ../lib/modules/sambaAccount.inc:55 -#: ../lib/modules/sambaAccount.inc:56 -#: ../lib/modules/sambaSamAccount.inc:53 -#: ../lib/modules/sambaSamAccount.inc:54 -msgid "Please enter a comma separated list of host names!" -msgstr "Kérem, adjon meg gazdaállomások vesszÅ‘kkel elválasztott nevébÅ‘l álló listát!" - -#: ../lib/modules/inetOrgPerson.inc:74 -msgid "Please enter a valid common name!" -msgstr "Kérem, a szokványos elnevezést érvényes formában adja meg!" - -#: ../lib/modules/sambaAccount.inc:69 -#: ../lib/modules/sambaAccount.inc:70 -#: ../lib/modules/sambaSamAccount.inc:67 -#: ../lib/modules/sambaSamAccount.inc:68 -msgid "Please enter a valid date in format DD-MM-YYYY." -msgstr "Kérem, adjon meg érvényes dátumot NN-HH-ÉÉÉÉ formában." - -#: ../lib/modules/sambaAccount.inc:64 -#: ../lib/modules/sambaSamAccount.inc:62 -msgid "Please enter a valid display name!" -msgstr "Kérem, adjon meg érvényes képernyÅ‘nevet!" - -#: ../lib/modules/sambaAccount.inc:71 -#: ../lib/modules/sambaSamAccount.inc:69 -msgid "Please enter a valid drive letter." -msgstr "Kérem, adjon meg érvényes meghajtó-betűjelet!" - -#: ../lib/modules/inetOrgPerson.inc:62 -#: ../lib/modules/inetOrgPerson.inc:63 -msgid "Please enter a valid eMail address!" -msgstr "Kérem, adjon meg érvényes e-mail címet!" - -#: ../lib/modules/inetOrgPerson.inc:72 -#: ../lib/modules/inetOrgPerson.inc:73 -msgid "Please enter a valid employee type!" -msgstr "Kérem adjon meg érvényes alkalmazott-típust!" - -#: ../lib/modules/inetOrgPerson.inc:60 -#: ../lib/modules/inetOrgPerson.inc:61 -msgid "Please enter a valid fax number!" -msgstr "Kérem, adjon érvényes fax-számot!" - -#: ../lib/modules/sambaAccount.inc:72 -msgid "Please enter a valid group RID." -msgstr "Kérem, adjon meg érvényes csoport RID-t." - -#: ../lib/modules/sambaSamAccount.inc:72 -msgid "Please enter a valid group name!" -msgstr "Kérem, adjon meg érvényes csoportnevet!" - -#: ../lib/modules/inetOrgPerson.inc:70 -#: ../lib/modules/inetOrgPerson.inc:71 -msgid "Please enter a valid job title!" -msgstr "Kérem, adjon meg érvényes állásmegnevezést!" - -#: ../lib/modules/inetOrgPerson.inc:58 -#: ../lib/modules/inetOrgPerson.inc:59 -msgid "Please enter a valid mobile number!" -msgstr "Kérem, adjon meg érvényes mobiltelefonszámot!" - -#: ../lib/modules/inetOrgPerson.inc:66 -#: ../lib/modules/inetOrgPerson.inc:67 -msgid "Please enter a valid postal address!" -msgstr "Kérem, adjon meg érvényes levelezési címet!" - -#: ../lib/modules/inetOrgPerson.inc:68 -#: ../lib/modules/inetOrgPerson.inc:69 -msgid "Please enter a valid postal code!" -msgstr "Kérem, adjon meg érvényes irányítószámot!" - -#: ../lib/modules/sambaAccount.inc:73 -msgid "Please enter a valid special user name." -msgstr "Kérem, adjon meg érvényes különleges felhasználónevet!" - -#: ../lib/modules/inetOrgPerson.inc:64 -#: ../lib/modules/inetOrgPerson.inc:65 -msgid "Please enter a valid street name!" -msgstr "Kérem, adjon meg érvényes utcanévet!" - -#: ../lib/modules/inetOrgPerson.inc:56 -#: ../lib/modules/inetOrgPerson.inc:57 -msgid "Please enter a valid telephone number!" -msgstr "Kérem, adjon meg érvényes telefonszámot!" - -#: ../lib/modules/posixGroup.inc:577 -#: ../lib/modules/posixAccount.inc:651 -#, php-format -msgid "Please enter a value between %s and %s!" -msgstr "Kérem adjon meg %s és %s közötti értéket!" - -#: ../templates/config/conflogin.php:87 -msgid "Please enter password to change preferences:" -msgstr "Kérem adja meg a jelszót a beállítások módosításához:" - -#: ../help/help.inc:47 -msgid "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\"." -msgstr "Kérem adja meg a beállítást védÅ‘ jelszót. Ez NEM az ön LDAP jelszava. Ez az ön .conf-filejában tárolódik. Ha most lép be elÅ‘ször, akkor az \"lam\"-et használja." - -#: ../help/help.inc:127 -msgid "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\"." -msgstr "Kérem, adja meg a mester beállításokat védÅ‘ jelszót. Ez NEM az ön LDAP jelszava. Ez az ön config.cfg file-jában tárolódik. Ha most lép be elÅ‘ször, akkor az \"lam\"-et használja." - -#: ../help/help.inc:115 -msgid "Please enter the name of the new profile and the password to change its settings. Profile names may contain letters, numbers and -/_." -msgstr "Kérem adja meg az új profil nevét és a beállítások megváltoztatásához szükséges jelszót. A profilnevek betűket, számokat és -/_ karaktereket tartalmazhatnak. " - -#: ../help/help.inc:117 -msgid "Please enter the new name of the profile. The name may contain letters, numbers and -/_." -msgstr "Kérem adja meg az új profilnevet. A név betűket, számokat és a -/_ karaktereket tartalmazhatja." - -#: ../lib/modules/posixAccount.inc:324 -msgid "Please enter the password which you want to set for this account." -msgstr "Kérem, adja meg az ehhez a témaszámhoz szánt jelszót." - -#: ../lib/modules/posixGroup.inc:460 -#: ../lib/modules/sambaAccount.inc:59 -#: ../lib/modules/sambaSamAccount.inc:55 -#: ../lib/modules/posixAccount.inc:71 -msgid "Please enter the same password in both password-fields." -msgstr "Kérem, egyezÅ‘ jelszót írjon a két jelszó-mezÅ‘be." - -#: ../templates/masscreate.php:120 -msgid "Please provide a CSV formated file with your account data. The cells in the first row must be filled with the column identifiers. The following rows represent one account for each row." -msgstr "Kérem, adjon meg témaszámának adatait tartalmazó, CSV formátumú file-t. Az elsÅ‘ sor celláit az oszlopok azonosítóival kell kitölteni. A következÅ‘ sorok egyenként egy-egy témaszámot jelentenek." - -#: ../lib/status.inc:62 -msgid "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." -msgstr "Kérem jelezze ezt a hibát a Bug-Tracker-en a {link=http://lam.sf.net}LDAP Account Manager Development Team{endlink}-nél. A hiba száma {bold}0001:Invalid/Missing Message type.{endbold}. Köszönöm." - -#: ../lib/modules.inc:896 -msgid "Please select page:" -msgstr "Kérem, válassza ki az oldalt:" - -#: ../templates/masscreate.php:89 -msgid "Please select your account type:" -msgstr "Kérem, válassza ki témaszámának típusát:" - -#: ../templates/login.php:162 -msgid "Please select your user name and enter your password to log in" -msgstr "Kérem, válassza ki a felhasználónevet és adja meg jelszavát, amellyel belépni kíván" - -#: ../lib/modules.inc:887 -#, php-format -msgid "Please set up all required attributes on page: %s" -msgstr "Kérem, állítsa be az összes szükséges attribútumot a következÅ‘ oldalon: %s" - -#: ../templates/config/profmanage.php:148 -msgid "Please set up your master configuration file (config/config.cfg) first!" -msgstr "Kérem, elÅ‘ször állítsa be a mesterbeállítási file-ját (config/config.cfg) !" - -#: ../templates/pdfedit/pdfpage.php:708 -msgid "Position" -msgstr "Pozíció" - -#: ../help/help.inc:229 -msgid "Position in ldap-tree where the group should be created." -msgstr "A hely az ldap-fán, ahol a csoportot létre kell hozni." - -#: ../help/help.inc:231 -msgid "Position in ldap-tree where the host should be created." -msgstr "A hely az ldap-fán, ahol a gazdaállomást létre kell hozni." - -#: ../help/help.inc:227 -msgid "Position in ldap-tree where the user should be created." -msgstr "A hely az ldap-fán, ahol a felhasználót létre kell hozni." - -#: ../templates/masscreate.php:163 -#: ../templates/masscreate.php:300 -#: ../lib/modules/sambaGroupMapping.inc:353 -msgid "Possible values" -msgstr "Lehetséges értékek" - -#: ../lib/modules/inetOrgPerson.inc:66 -#: ../lib/modules/inetOrgPerson.inc:173 -#: ../lib/modules/inetOrgPerson.inc:251 -#: ../lib/modules/inetOrgPerson.inc:428 -#: ../lib/modules/inetOrgPerson.inc:468 -msgid "Postal address" -msgstr "Levelezési cím" - -#: ../lib/modules/inetOrgPerson.inc:252 -msgid "Postal address, city" -msgstr "Levelezési cím, Településnév" - -#: ../lib/modules/inetOrgPerson.inc:68 -#: ../lib/modules/inetOrgPerson.inc:167 -#: ../lib/modules/inetOrgPerson.inc:247 -#: ../lib/modules/inetOrgPerson.inc:248 -#: ../lib/modules/inetOrgPerson.inc:424 -#: ../lib/modules/inetOrgPerson.inc:467 -msgid "Postal code" -msgstr "Irányítószám" - -#: ../help/help.inc:77 -msgid "Predefined values" -msgstr "ElÅ‘re meghatározott értékek" - -#: ../lib/modules/inetOrgPerson.inc:151 -msgid "President" -msgstr "Elnök" - -#: ../lib/modules/posixGroup.inc:129 -#: ../lib/modules/posixAccount.inc:184 -#: ../lib/modules/posixAccount.inc:251 -#: ../lib/modules/posixAccount.inc:315 -#: ../lib/modules/posixAccount.inc:350 -#: ../lib/modules/posixAccount.inc:850 -#: ../lib/modules/posixAccount.inc:1004 -#: ../lib/modules/posixAccount.inc:1032 -#: ../lib/modules/posixAccount.inc:1084 -#: ../help/help.inc:156 -#: ../help/help.inc:168 -msgid "Primary group" -msgstr "ElsÅ‘dleges csoport" - -#: ../templates/config/profmanage.php:106 -msgid "Profile deleted." -msgstr "Profil törölve." - -#: ../templates/tools.php:53 -msgid "Profile editor" -msgstr "Profil szerkesztÅ‘" - -#: ../templates/config/profmanage.php:50 -#: ../templates/config/profmanage.php:161 -#: ../help/help.inc:114 -#: ../help/help.inc:116 -#: ../help/help.inc:118 -#: ../help/help.inc:120 -#: ../help/help.inc:122 -#: ../help/help.inc:124 -#: ../help/help.inc:126 -msgid "Profile management" -msgstr "Profil beállítások" - -#: ../templates/config/profmanage.php:176 -#: ../templates/config/profmanage.php:228 -#: ../templates/profedit/profilepage.php:152 -#: ../help/help.inc:137 -msgid "Profile name" -msgstr "Profilnév" - -#: ../templates/config/profmanage.php:90 -#: ../templates/config/profmanage.php:101 -msgid "Profile name is invalid!" -msgstr "A profilnév érvénytelen!" - -#: ../templates/config/profmanage.php:192 -#: ../templates/config/profmanage.php:292 -msgid "Profile password" -msgstr "Profiljelszó" - -#: ../templates/config/profmanage.php:88 -#: ../templates/config/profmanage.php:118 -msgid "Profile passwords are different or empty!" -msgstr "A profiljelszavak különböznek vagy üresek!" - -#: ../lib/modules/sambaAccount.inc:49 -#: ../lib/modules/sambaAccount.inc:50 -#: ../lib/modules/sambaAccount.inc:136 -#: ../lib/modules/sambaAccount.inc:268 -#: ../lib/modules/sambaAccount.inc:360 -#: ../lib/modules/sambaAccount.inc:733 -#: ../lib/modules/sambaAccount.inc:838 -#: ../lib/modules/sambaSamAccount.inc:47 -#: ../lib/modules/sambaSamAccount.inc:48 -#: ../lib/modules/sambaSamAccount.inc:175 -#: ../lib/modules/sambaSamAccount.inc:284 -#: ../lib/modules/sambaSamAccount.inc:719 -#: ../lib/modules/sambaSamAccount.inc:863 -#: ../lib/modules/sambaSamAccount.inc:956 -#: ../help/help.inc:212 -msgid "Profile path" -msgstr "Profil elérési útvonala" - -#: ../lib/modules/sambaAccount.inc:49 -#: ../lib/modules/sambaSamAccount.inc:47 -#: ../lib/modules/sambaSamAccount.inc:49 -msgid "Profile path is invalid!" -msgstr "A profil elérési útvonala érvénytelen!" - -#: ../templates/profedit/profilecreate.php:112 -msgid "Profile was saved." -msgstr "Profil elmentve." - -#: ../lib/modules/quota.inc:48 -msgid "Quota" -msgstr "Kvóta" - -#: ../templates/tree/templates/creation/custom.php:62 -msgid "RDN" -msgstr "RDN" - -#: ../templates/masscreate.php:155 -#: ../templates/profedit/profilepage.php:111 -#: ../lib/modules.inc:976 -#: ../help/help.inc:135 -msgid "RDN identifier" -msgstr "RDN azonosító" - -#: ../lib/lists.inc:328 -msgid "RID (Windows UID)" -msgstr "RID (Windows UID)" - -#: ../templates/tree/templates/creation/new_ou_template.php:99 -msgid "Really create this new OU?" -msgstr "Valóban létrehozza ezt az új OU-t?" - -#: ../templates/tree/edit.php:519 -msgid "Really delete attribute?" -msgstr "Valóban törli az összes attribútumot?" - -#: ../lib/modules/nisMailAlias.inc:64 -#: ../lib/modules/nisMailAlias.inc:172 -msgid "Recipient" -msgstr "Címzett" - -#: ../lib/modules/nisMailAlias.inc:68 -#: ../lib/modules/nisMailAlias.inc:82 -#: ../lib/modules/nisMailAlias.inc:308 -msgid "Recipient list" -msgstr "Címzettek listája" - -#: ../templates/tree/rdelete.php:71 -msgid "Recursive delete progress" -msgstr "Rekurzív törlési művelet" - -#: ../templates/config/confmain.php:468 -msgid "Reenter Password" -msgstr "Jelszó ismétlése" - -#: ../templates/config/profmanage.php:384 -msgid "Reenter new master password" -msgstr "Új mester jelszó megismétlése" - -#: ../templates/config/profmanage.php:201 -#: ../templates/config/profmanage.php:308 -msgid "Reenter profile password" -msgstr "Profil jelszó megismétlése" - -#: ../templates/tree/edit.php:100 -#: ../lib/tree.inc:64 -#: ../lib/tree.inc:65 -#: ../lib/lists.inc:150 -msgid "Refresh" -msgstr "Frissítés" - -#: ../templates/tree/templates/creation/custom.php:62 -msgid "Relative distinguished name" -msgstr "Relatív megkülönböztetett név" - -#: ../templates/pdfedit/pdfpage.php:581 -#: ../lib/modules/ieee802device.inc:146 -#: ../lib/modules/inetLocalMailRecipient.inc:208 -#: ../lib/modules/nisMailAlias.inc:174 -msgid "Remove" -msgstr "Törlés" - -#: ../templates/config/profmanage.php:224 -#: ../help/help.inc:116 -msgid "Rename profile" -msgstr "Profil átnevezése" - -#: ../templates/config/profmanage.php:97 -msgid "Renamed profile." -msgstr "Profil átnevezve." - -#: ../lib/modules/posixGroup.inc:163 -#: ../lib/modules/posixGroup.inc:262 -#: ../lib/modules/sambaAccount.inc:690 -#: ../lib/modules/sambaSamAccount.inc:676 -#: ../lib/modules/posixAccount.inc:877 -#: ../lib/modules/posixAccount.inc:982 -msgid "Repeat password" -msgstr "Ismételje meg a jelszót" - -#: ../lib/modules/posixAccount.inc:65 -#: ../lib/modules/posixAccount.inc:709 -msgid "Replaced $user or $group in homedir." -msgstr "A home könyvtárban a $user vagy $group értéke átállítva." - -#: ../templates/tree/edit.php:238 -#, php-format -msgid "Required attribute for objectClass(es) %s" -msgstr "A %s objektumOszály(ok)hoz szükséges attribútum" - -#: ../templates/tree/templates/creation/custom.php:187 -#: ../templates/schema/schema.php:389 -msgid "Required attributes" -msgstr "Szükséges attribútumok" - -#: ../templates/domain.php:222 -#: ../templates/config/confmain.php:483 -#: ../templates/profedit/profilepage.php:162 -msgid "Reset" -msgstr "Visszaállítás" - -#: ../lib/modules.inc:918 -msgid "Reset changes" -msgstr "Módosítások visszaállítása" - -#: ../lib/modules/sambaAccount.inc:780 -#: ../lib/modules/sambaSamAccount.inc:768 -msgid "Reset password" -msgstr "Jelszó visszaállítása" - -#: ../lib/modules/inetLocalMailRecipient.inc:56 -#: ../lib/modules/inetLocalMailRecipient.inc:91 -#: ../lib/modules/inetLocalMailRecipient.inc:195 -#: ../lib/modules/inetLocalMailRecipient.inc:369 -msgid "Routing address" -msgstr "Útvonal címe" - -#: ../lib/modules/sambaAccount.inc:91 -msgid "Samba 2" -msgstr "Samba 2" - -#: ../lib/modules/sambaSamAccount.inc:89 -#: ../lib/modules/sambaGroupMapping.inc:218 -msgid "Samba 3" -msgstr "Samba 3" - -#: ../templates/domain.php:279 -msgid "Samba 3 domain SID is invalid!" -msgstr "A Samba 3 tartomány SID érvénytelen!" - -#: ../templates/tools.php:61 -msgid "Samba 3 domains" -msgstr "Samba 3 tartományok" - -#: ../templates/ou_edit.php:410 -msgid "Samba Hosts" -msgstr "Samba gazdaállomások" - -#: ../lib/modules/sambaSamAccount.inc:187 -#: ../lib/modules/sambaSamAccount.inc:191 -#: ../lib/modules/sambaSamAccount.inc:309 -#: ../lib/modules/sambaSamAccount.inc:333 -msgid "Samba RID" -msgstr "Samba RID" - -#: ../lib/modules/sambaGroupMapping.inc:252 -#: ../lib/modules/sambaGroupMapping.inc:277 -msgid "Samba RID number" -msgstr "Samba RID-érték" - -#: ../lib/modules/sambaGroupMapping.inc:246 -msgid "Samba display name" -msgstr "Samba képernyÅ‘név" - -#: ../lib/modules/sambaGroupMapping.inc:238 -msgid "Samba domain name" -msgstr "Samba tartománynév" - -#: ../lib/modules/sambaGroupMapping.inc:258 -#: ../lib/modules/sambaGroupMapping.inc:285 -#: ../lib/modules/sambaGroupMapping.inc:302 -msgid "Samba group type" -msgstr "Samba csoporttípus" - -#: ../lib/modules/sambaAccount.inc:322 -#: ../lib/modules/sambaAccount.inc:687 -#: ../lib/modules/sambaSamAccount.inc:137 -#: ../lib/modules/sambaSamAccount.inc:674 -msgid "Samba password" -msgstr "Samba jelszó" - -#: ../lib/modules/sambaAccount.inc:55 -#: ../lib/modules/sambaAccount.inc:148 -#: ../lib/modules/sambaAccount.inc:280 -#: ../lib/modules/sambaAccount.inc:366 -#: ../lib/modules/sambaAccount.inc:739 -#: ../lib/modules/sambaAccount.inc:839 -#: ../lib/modules/sambaSamAccount.inc:53 -#: ../lib/modules/sambaSamAccount.inc:181 -#: ../lib/modules/sambaSamAccount.inc:296 -#: ../lib/modules/sambaSamAccount.inc:725 -#: ../lib/modules/sambaSamAccount.inc:875 -#: ../lib/modules/sambaSamAccount.inc:957 -#: ../help/help.inc:214 -msgid "Samba workstations" -msgstr "Samba munkaállomások" - -#: ../lib/pdf.inc:455 -msgid "Samba-Host information page" -msgstr "Samba-gazda információs lap" - -#: ../templates/tree/edit.php:506 -#: ../templates/pdfedit/pdfpage.php:831 -#: ../templates/profedit/profilepage.php:160 -msgid "Save" -msgstr "Mentés" - -#: ../help/help.inc:220 -msgid "Save profile" -msgstr "Profil mentése" - -#: ../templates/config/confsave.php:177 -msgid "Saving group modules failed!" -msgstr "A csoport-modulok elmentése nem sikerült!" - -#: ../templates/config/confsave.php:183 -msgid "Saving host modules failed!" -msgstr "A gazdaállomás-modulok elmentése nem sikerült!" - -#: ../templates/config/confsave.php:171 -msgid "Saving user modules failed!" -msgstr "A felhasználó-modulok elmentése nem sikerült!" - -#: ../templates/tools.php:90 -msgid "Schema browser" -msgstr "SémaáttekintÅ‘" - -#: ../templates/pdfedit/pdfdelete.php:56 -#: ../templates/pdfedit/pdfdelete.php:59 -#: ../templates/pdfedit/pdfdelete.php:78 -msgid "Scope" -msgstr "Cél" - -#: ../lib/modules/sambaSamAccount.inc:50 -#: ../lib/modules/sambaSamAccount.inc:51 -#: ../help/help.inc:96 -#: ../help/help.inc:210 -msgid "Script path" -msgstr "Script elérési útvonala" - -#: ../templates/config/confsave.php:159 -#: ../lib/modules/sambaSamAccount.inc:50 -msgid "Script path is invalid!" -msgstr "Script elérési útvonala érvénytelen!" - -#: ../help/help.inc:101 -msgid "Script server" -msgstr "Script szerver" - -#: ../templates/config/confsave.php:165 -msgid "Script server is invalid!" -msgstr "Script szerver érvénytelen!" - -#: ../templates/config/confmain.php:413 -msgid "Script settings" -msgstr "Script beállítások" - -#: ../templates/pdfedit/pdfpage.php:740 -msgid "Section" -msgstr "Szekció" - -#: ../templates/config/confmain.php:441 -msgid "Security settings" -msgstr "Biztonsági beállítások" - -#: ../templates/lists/listhosts.php:104 -#: ../templates/lists/listgroups.php:104 -#: ../templates/lists/listdomains.php:121 -#: ../templates/lists/listusers.php:131 -msgid "See README.openldap.txt to solve this problem." -msgstr "A probléma megoldásához olvassa el a README.openldap.txt-t." - -#: ../templates/help.php:112 -msgid "See also" -msgstr "Lásd még" - -#: ../templates/tree/create_form.php:76 -msgid "Select a template for the creation process" -msgstr "Válasszon sablont a létrehozási művelethez" - -#: ../templates/lists/listhosts.php:199 -#: ../templates/lists/listgroups.php:216 -#: ../templates/lists/listusers.php:246 -msgid "Select all" -msgstr "Összes kijelölése" - -#: ../help/help.inc:222 -msgid "Select group profile" -msgstr "Válassza ki a csoport profilt" - -#: ../lib/modules/posixAccount.inc:946 -msgid "Selected groups" -msgstr "Kiválasztott csoportok" - -#: ../templates/config/confmodules.php:169 -msgid "Selected modules" -msgstr "Kiválasztott modulok" - -#: ../lib/modules/posixGroup.inc:228 -msgid "Selected users" -msgstr "Kiválasztott felhasználók" - -#: ../templates/config/confsave.php:92 -msgid "Server Address is empty!" -msgstr "A szervercím üres!" - -#: ../templates/config/confmain.php:161 -#: ../lib/config.inc:356 -#: ../help/help.inc:48 -msgid "Server address" -msgstr "Szervercím" - -#: ../templates/config/confmain.php:417 -#: ../lib/config.inc:369 -msgid "Server of external script" -msgstr "A külsÅ‘ script szervere" - -#: ../templates/config/confmain.php:158 -msgid "Server settings" -msgstr "Szerverbeállítások" - -#: ../lib/modules/posixGroup.inc:173 -#: ../lib/modules/posixAccount.inc:887 -#: ../lib/modules/posixAccount.inc:1021 -msgid "Set no password" -msgstr "Jelszó beállítása nélkül" - -#: ../templates/config/profmanage.php:288 -#: ../help/help.inc:120 -msgid "Set profile password" -msgstr "A profilhoz tartozó jelszó beállítása" - -#: ../lib/modules/posixGroup.inc:405 -msgid "Sets the group password." -msgstr "A csoportjelszó beállítása" - -#: ../lib/modules/shadowAccount.inc:62 -msgid "Shadow" -msgstr "Ãrnyék (Shadow)" - -#: ../templates/massBuildAccounts.php:196 -msgid "Show LDIF file" -msgstr "Mutassa az LDIF file-t" - -#: ../templates/tree/edit.php:106 -msgid "Show internal attributes" -msgstr "A belsÅ‘ attribútumok mutatása" - -#: ../templates/schema/schema.php:200 -msgid "Single valued" -msgstr "Egy értékekkel ellátott" - -#: ../templates/pdfedit/pdfpage.php:455 -msgid "Size" -msgstr "Méret" - -#: ../lib/modules/quota.inc:422 -msgid "Soft block" -msgstr "Lágy blokk" - -#: ../lib/modules/quota.inc:72 -#: ../lib/modules/quota.inc:293 -#: ../lib/modules/quota.inc:350 -msgid "Soft block limit" -msgstr "Lágy blokk határa" - -#: ../lib/modules/quota.inc:73 -msgid "Soft block limit." -msgstr "Lágy blokk határa." - -#: ../lib/modules/quota.inc:422 -msgid "Soft inode" -msgstr "Lágy inode" - -#: ../lib/modules/quota.inc:89 -msgid "Soft inode (files) limit." -msgstr "Lágy inode (file-ok) határa." - -#: ../lib/modules/quota.inc:88 -#: ../lib/modules/quota.inc:297 -#: ../lib/modules/quota.inc:352 -msgid "Soft inode limit" -msgstr "Lágy inode határa" - -#: ../templates/tree/edit.php:133 -#, php-format -msgid "Some attributes (%s) were modified and are highlighted below." -msgstr "Néhány attribútum (%s) módosult, ezek vannak lejjebb kiemelve." - -#: ../lib/modules.inc:886 -msgid "Some required information is missing" -msgstr "Valamilyen szükséges információ hiányzik" - -#: ../templates/help.php:144 -#, php-format -msgid "Sorry this help id ({bold}%s{endbold}) is not available for this module ({bold}%s{endbold})." -msgstr "Sajnos ez a súgó-azonosító ({bold}%s{endbold}) nem áll rendelkezésreehhez a modulhoz({bold}%s{endbold})." - -#: ../templates/help.php:157 -#, php-format -msgid "Sorry this help number ({bold}%d{endbold}) is not available." -msgstr "Sajnos ez a súgó-szám ({bold}%d{endbold}) nem áll rendelkezésre." - -#: ../lib/modules/sambaAccount.inc:62 -#: ../lib/modules/sambaAccount.inc:63 -#: ../lib/modules/sambaAccount.inc:293 -#: ../lib/modules/sambaAccount.inc:375 -#: ../lib/modules/sambaAccount.inc:771 -#: ../lib/modules/sambaSamAccount.inc:58 -#: ../lib/modules/sambaSamAccount.inc:59 -#: ../lib/modules/sambaSamAccount.inc:759 -msgid "Special user" -msgstr "Különleges felhasználó" - -#: ../templates/pdfedit/pdfpage.php:645 -#: ../templates/pdfedit/pdfpage.php:651 -#: ../templates/pdfedit/pdfpage.php:777 -msgid "Static text" -msgstr "Statikus szöveg" - -#: ../templates/tree/templates/creation/custom.php:54 -msgid "Step 1 of 2: Name and object class(es)" -msgstr "ElsÅ‘ lépés a kettÅ‘bÅ‘l: Név és objektumosztály(ok)" - -#: ../templates/tree/templates/creation/custom.php:177 -msgid "Step 2 of 2: Specify attributes and values" -msgstr "Második lépés a kettÅ‘bÅ‘l: Az attribútumok és értékek meghatározása" - -#: ../lib/modules/inetOrgPerson.inc:132 -msgid "Steve" -msgstr "István" - -#: ../lib/modules/sambaAccount.inc:200 -#: ../lib/modules/sambaSamAccount.inc:216 -#: ../lib/modules/inetOrgPerson.inc:125 -msgid "Steve Miller" -msgstr "Molnár István" - -#: ../lib/modules/posixAccount.inc:228 -msgid "Steve Miller,Room 2.14,123-123-1234,123-123-1234" -msgstr "Molnár István, Szobaszám 2.14,123-123-1234,123-123-1234" - -#: ../lib/modules/inetOrgPerson.inc:64 -#: ../lib/modules/inetOrgPerson.inc:161 -#: ../lib/modules/inetOrgPerson.inc:243 -#: ../lib/modules/inetOrgPerson.inc:244 -#: ../lib/modules/inetOrgPerson.inc:420 -#: ../lib/modules/inetOrgPerson.inc:466 -msgid "Street" -msgstr "Utca" - -#: ../templates/pdfedit/pdfpage.php:805 -msgid "Structure name" -msgstr "Struktúranév" - -#: ../templates/ou_edit.php:94 -#: ../templates/ou_edit.php:159 -#: ../templates/ou_edit.php:224 -#: ../templates/ou_edit.php:289 -#: ../templates/ou_edit.php:480 -#: ../templates/domain.php:221 -#: ../templates/config/profmanage.php:403 -#: ../templates/config/confmodules.php:98 -#: ../templates/config/confmodules.php:101 -#: ../templates/config/confmain.php:481 -#: ../templates/pdfedit/pdfdelete.php:81 -#: ../templates/pdfedit/pdfpage.php:797 -#: ../templates/pdfedit/pdfmain.php:143 -#: ../templates/profedit/profiledelete.php:84 -#: ../templates/profedit/profilemain.php:156 -#: ../lib/modules/posixGroup.inc:267 -#: ../lib/modules/posixAccount.inc:987 -msgid "Submit" -msgstr "Elküld" - -#: ../templates/pdfedit/pdfpage.php:445 -#: ../templates/pdfedit/pdfpage.php:490 -msgid "Submit page settings" -msgstr "Az oldalbeállítások elküldése" - -#: ../templates/schema/schema.php:182 -msgid "Substring Rule" -msgstr "Substring szabály" - -#: ../templates/tree/rdelete.php:135 -#: ../templates/tree/rdelete.php:147 -msgid "Success" -msgstr "Sikerült" - -#: ../templates/domain.php:189 -#: ../lib/lists.inc:349 -#: ../lib/modules.inc:963 -#: ../help/help.inc:226 -#: ../help/help.inc:228 -#: ../help/help.inc:230 -#: ../help/help.inc:249 -msgid "Suffix" -msgstr "Utótag" - -#: ../templates/tree/add_value_form.php:189 -#: ../templates/schema/schema.php:187 -msgid "Syntax" -msgstr "Szintaxis" - -#: ../templates/schema/schema.php:95 -msgid "Syntax OID" -msgstr "Szintaxis OID" - -#: ../templates/schema/schema.php:79 -#: ../templates/schema/schema.php:80 -msgid "Syntaxes" -msgstr "Szintaxisok" - -#: ../lib/modules/inetOrgPerson.inc:56 -#: ../lib/modules/inetOrgPerson.inc:179 -#: ../lib/modules/inetOrgPerson.inc:255 -#: ../lib/modules/inetOrgPerson.inc:256 -#: ../lib/modules/inetOrgPerson.inc:432 -#: ../lib/modules/inetOrgPerson.inc:469 -msgid "Telephone number" -msgstr "Telefonszám" - -# -#: ../lib/modules/inetOrgPerson.inc:157 -msgid "Temp" -msgstr "SzerzÅ‘déses" - -# -#: ../lib/modules/inetOrgPerson.inc:145 -msgid "Temp, contract until december" -msgstr "SzerzÅ‘déses, decemberig szerzÅ‘dve" - -#: ../templates/tree/create_form.php:82 -msgid "Template" -msgstr "Sablon" - -#: ../help/help.inc:110 -msgid "Text for user PDF" -msgstr "Szöveg a felhasználók PDF-eihez" - -#: ../lib/modules/posixAccount.inc:316 -#: ../help/help.inc:157 -msgid "The Primary Group the user should be member of." -msgstr "A felhasználó elsÅ‘dleges csoportja." - -#: ../lib/modules/posixAccount.inc:351 -#: ../help/help.inc:169 -msgid "The Primary group the host should be member of." -msgstr "A gazdaállomás elsÅ‘dleges csoportja." - -#: ../help/help.inc:252 -msgid "The SID of your Samba server. Get it with \"net getlocalsid\"." -msgstr "Az ön Samba szerverének SID száma. A \"net getlocalsid\"-del kapja meg." - -#: ../lib/modules/posixAccount.inc:63 -msgid "The UID ranges for users and hosts overlap! This is a problem because LAM uses the highest UID in use + 1 for new accounts. Please set the minimum UID to equal values or use independent ranges." -msgstr "A felhasználókra és a gazdaállomásokra vonatkozó UID-értékektartományai átfedést mutatnak! Ez azért gond, mert a LAM új témaszámok létrehozásakor a használatban levÅ‘ UID-értéket 1-el megnöveli az új témaszám részére. Kérem, állítsa a minimális UID-értékeket egyenlÅ‘ értékre, vagy használjon egymástól független tartományokat!" - -#: ../templates/tree/templates/creation/custom.php:99 -#, php-format -msgid "The container you specified (%s) does not exist. Please try again." -msgstr "Az Ön által megadott konténer (%s) nem létezik. Kérem, próbálja újra." - -#: ../help/help.inc:250 -msgid "The domain entry will be saved under this suffix." -msgstr "A tartománybejegyzés ezzel az utótaggal lesz elmentve." - -#: ../lib/modules/shadowAccount.inc:49 -msgid "The expiration date is invalid." -msgstr "A lejárat dátuma érvénytelen!" - -#: ../templates/config/confsave.php:252 -msgid "The following settings were saved to profile:" -msgstr "A következÅ‘ beállítások lettek a profilba mentve:" - -#: ../templates/initsuff.php:178 -msgid "The following suffix(es) are missing in LDAP. LAM can create them for you." -msgstr "A következÅ‘ utótagok hiányoznak az LDAP-ban. A LAM elkészítheti ezeket önnek." - -#: ../lib/modules/sambaSamAccount.inc:71 -msgid "The format of the logon hours field is invalid!" -msgstr "A belépési órák formátuma érvénytelen!" - -#: ../templates/pdfedit/pdfpage.php:73 -msgid "The headline for a new section must contain at least one character." -msgstr "Az új szekció fejléce legalább egy karaktert kell tartalmazzon." - -#: ../templates/pdfedit/pdfpage.php:61 -msgid "The name for that PDF-structure you submitted is not valid. A valid name must constist at least of one of the following characters 'a-z','A-Z','0-9','_','-','.'." -msgstr "Az Ön által megadott PDF-struktúranév érvénytelen. Egy érvényes névnek legalább egy karaktert kell tartalmaznia a következÅ‘kbÅ‘l: 'a-z','A-Z','0-9','_','-','.'." - -#: ../help/help.inc:248 -msgid "The name of your Windows domain or workgroup." -msgstr "Az Ön Windows tartományának vagy munkacsoportjának neve." - -#: ../help/help.inc:140 -msgid "The new account will be saved under this LDAP suffix." -msgstr "Az új témaszám ezzel az LDAP-utótaggal lesz elmentve." - -#: ../templates/config/confmain.php:110 -msgid "The password is invalid! Please try again." -msgstr "Érvénytelen jelszó! Kérem próbálja újra." - -#: ../templates/pdfedit/pdfpage.php:77 -msgid "The static text must contain at least one character." -msgstr "A statikus szövegnek minimum egy karakterbÅ‘l kell állnia." - -#: ../templates/tree/add_oclass_form.php:118 -msgid "There are new required attributes which need to be set." -msgstr "Új, szükséges attribútumok vannak, melyeket be kell állítani." - -#: ../lib/modules/posixGroup.inc:129 -msgid "There are still users who have this group as their primary group." -msgstr "Még mindig vannak felhasználók, akiknek ez az elsÅ‘dleges csoportja." - -#: ../lib/modules/sambaAccount.inc:62 -#: ../lib/modules/sambaSamAccount.inc:58 -msgid "There can be only one administrator per domain." -msgstr "Minden tartománynak csak egy-egy adminisztrátora lehet." - -#: ../lib/modules/sambaGroupMapping.inc:351 -msgid "There can be only one group of this type." -msgstr "Csak egy ilyen csoport lehet." - -#: ../lib/modules/sambaAccount.inc:63 -#: ../lib/modules/sambaSamAccount.inc:59 -msgid "There can be only one guest per domain." -msgstr "Tartományonként csak egy vendég lehet." - -#: ../templates/massDoUpload.php:119 -msgid "There were errors while uploading:" -msgstr "Hibák történtek a feltöltés közben:" - -#: ../lib/modules/posixGroup.inc:414 -msgid "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." -msgstr "Ezek a minimális és maximális számértékek, melyek a csoport ID-khez használhatóak új csoport-témaszámok létrehozásakor. Az új csoport-témaszámok mindig a már felhasznált legnagyobb számot 1-el megnövelt értéket kapják." - -#: ../lib/modules/posixAccount.inc:295 -msgid "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." -msgstr "Ezek a minimális és maximális számértékek, melyek a gép ID-khez használhatóak új Samba gazdagépek létrehozásakor. A tartománynak a felhasználók esetében használt tartománytól el kell térnie. Az új gazdagép--témaszámok mindig a már felhasznált legnagyobb szám 1-el megnövelt értékét kapják." - -#: ../lib/modules/posixAccount.inc:291 -msgid "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." -msgstr "Ezek a minimális és maximális számértékek, melyek a felhasználói ID-khez használhatóak új felhasználói témaszámok létrehozásakor. A tartománynak a gépek esetében használt tartománytól el kell térnie. Az új felhasználói témaszámok mindig a már felhasznált legnagyobb szám 1-el megnövelt értékét kapják." - -#: ../lib/modules/posixAccount.inc:85 -msgid "This GID number is invalid! Please provide either a number or a group name." -msgstr "Ez a GID-érték érvénytelen! Kérem, adjon meg egy számot vagyegy csoportnevet!" - -#: ../templates/domain.php:282 -msgid "This Samba 3 domain is already present!" -msgstr "Ez a Samba 3 tartomány már létezik!" - -#: ../help/help.inc:121 -msgid "This changes the password of the selected profile." -msgstr "Ez a kiválasztott profil jelszavát változtatja meg." - -#: ../help/help.inc:123 -msgid "This changes the profile which is selected by default at login." -msgstr "Ez a belépéskor alapértelmezés szerint kiválasztott profilt változtatja meg." - -#: ../templates/massBuildAccounts.php:148 -msgid "This column is defined to include unique entries but duplicates were found:" -msgstr "Ez az oszlop egyedi bejegyzések részére szolgál, de a következÅ‘ egyezések jelentkeznek:" - -#: ../help/help.inc:95 -msgid "This defines the language of the login window and sets this language as the default language. Users can change the language at login." -msgstr "A login ablak nyelvének beállítása, mely egyben az alapértelmezett nyelv lesz. A felhasználók belépéskor ezt maguknak átállíthatják." - -#: ../lib/pdf.inc:511 -msgid "This document was automatically created by LDAP Account Manager" -msgstr "Ezt a dokumentumot az LDAP Account Manager automatikusan hozta létre." - -#: ../templates/tree/edit.php:202 -msgid "This entry has no attributes" -msgstr "Ehhez a bejegyzéshez nincs attribútum" - -#: ../templates/tree/delete_form.php:95 -#, php-format -msgid "This entry is the root of a sub-tree containing %s entries." -msgstr "Ez a bejegyzés egy olyan al-fa gyökere, mely %s bejegyzést tartalmaz." - -#: ../lib/modules/posixAccount.inc:86 -msgid "This gecos value is invalid!" -msgstr "A gecos értéke érvénytelen!" - -#: ../lib/modules/ieee802device.inc:61 -msgid "This is a comma separated list of MAC addresses." -msgstr "Ez vesszÅ‘vel elválasztott MAC-címekbÅ‘l álló lista." - -#: ../lib/modules/nisMailAlias.inc:69 -msgid "This is a comma separated list of recipients." -msgstr "A címzettek listája, vesszÅ‘vel elválasztva." - -#: ../lib/modules/inetLocalMailRecipient.inc:65 -msgid "This is a comma separated list of the users public email addresses." -msgstr "A nyilvános email címek listája, vesszÅ‘vel elválasztva." - -#: ../help/help.inc:88 -msgid "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." -msgstr "Ez azon felhasználók érvényes DN bejegyzéseinek listája, akik az LDAP Account Manager-be beléphetnek. A felhasználók nevét pontosvesszÅ‘vel kell elválasztani." - -#: ../templates/masscreate.php:211 -msgid "This is an example how it would look in your spreadsheet program before you convert to CSV:" -msgstr "Ez egy példa, hogy mi látszódna az Ön táblázatkezelÅ‘ programjában mielÅ‘tt CSV-re konvertálja:" - -#: ../lib/modules/sambaSamAccount.inc:61 -msgid "This is not a valid RID number!" -msgstr "Ez az RID szám nem érvényes!" - -#: ../lib/modules/sambaGroupMapping.inc:353 -msgid "This is not a valid Samba 3 group type!" -msgstr "Ez a Samba 3 csoporttípus nem érvényes!" - -#: ../lib/modules/inetLocalMailRecipient.inc:61 -msgid "This is one of the users public email addresses." -msgstr "Ez a felhasználók nyilvános email címeinek egyike." - -#: ../lib/modules/nisMailAlias.inc:65 -msgid "This is one recipient for this alias." -msgstr "Ez egy, ehhez az alias-hoz tartozó címzett." - -#: ../lib/modules/ieee802device.inc:57 -msgid "This is the MAC address of the network card of the device (e.g. 00:01:02:DE:EF:18)." -msgstr "Ez az eszköz hálózati kártyájának MAC-címe (pl. 00:01:02:DE:EF:18)." - -#: ../lib/modules/sambaAccount.inc:373 -msgid "This is the RID of the user's primary Windows group." -msgstr "Ez a felhasználó elsÅ‘dleges Windows csoportjának RID-je." - -#: ../lib/modules/sambaSamAccount.inc:185 -msgid "This is the SID of the user's primary Windows group." -msgstr "Ez a felhasználó elsÅ‘dleges Windows csoportjának SID-je." - -#: ../help/help.inc:97 -msgid "This is the absolute path to an external script for setting quotas and creating home directories." -msgstr "Ez az abszolút elérési útvonala a külsÅ‘ szkriptnek, mely a kvóták és a home könytvtárak beállítására szolgál." - -#: ../lib/modules/sambaAccount.inc:323 -#: ../lib/modules/sambaSamAccount.inc:138 -msgid "This is the account's Windows password." -msgstr "Ez a témaszám Windows-jelszava." - -#: ../lib/modules/sambaAccount.inc:320 -#: ../lib/modules/sambaSamAccount.inc:135 -msgid "This is the account's full name on Windows systems." -msgstr "Ez a témaszám teljes neve a Windows rendszerekben." - -#: ../lib/modules/sambaGroupMapping.inc:270 -msgid "This is the group name which will be shown in Windows." -msgstr "Ez a csoportnév, ami majd a Windows-ban látszik." - -#: ../help/help.inc:136 -msgid "This is the identifier for the relative DN value. It must be one of the given allowed LDAP attributes (e.g. user accounts usually use \"uid\" while groups use \"cn\")." -msgstr "Ez a relatív DN-érték azonosítója. A megadott LDAP attríbútumok egyike kell legyen (pl. a felhasználói témaszámok gyakran \"uid\"-ot használnak, míg a csoportok a \"cn\"-t)." - -#: ../help/help.inc:73 -msgid "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." -msgstr "Ez azon attribútumok listája, melyeknek látszódniuk kell a felhasználó/csoport/gazdaállomás listán. A bejegyzések lehetnek elÅ‘re meghatározott értékek , \"#attribute\", vagy egyedi értékek, \"attribútum:leírás\". A különbözÅ‘ bejegyzéseket pontosvesszÅ‘vel kell elválasztani." - -#: ../lib/modules/inetLocalMailRecipient.inc:69 -msgid "This is the mail server for the user." -msgstr "Ez a felhasználó levélszervere." - -#: ../help/help.inc:93 -msgid "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." -msgstr "Ennyi sor lesz majd látható a felhasználó/csoport/gazdaállomás listában. Ha ennél több bejegyzés létezik, a lista több oldalra lesz osztva." - -#: ../lib/modules/sambaGroupMapping.inc:278 -msgid "This is the relative ID (similar to UID on Unix) for Windows accounts. If you leave this empty LAM will calculate the RID from the UID. This can be either a number or the name of a special group:" -msgstr "Ez a relatív ID a Windows témaszámokhoz (a Unix UID-jéhez hasonló). Ha üresen hagyja, a LAM az RID-et az UID-bÅ‘l számítja majd ki. Lehet szám vagy a következÅ‘ különleges csoportok nevének egyike: " - -#: ../lib/modules/sambaSamAccount.inc:188 -msgid "This is the relative ID number for your Windows account. You can either enter a number or one of these special accounts: " -msgstr "Ez a relatív ID szám az Ön Windows témaszámához. Megadhat egy számot, vagy egyet ezek közül a különleges témaszámok közül:" - -#: ../lib/modules/sambaSamAccount.inc:192 -msgid "This is the relative ID number for your host account. If you leave this empty LAM will use: uidNumber*2 + sambaAlgorithmicRidBase." -msgstr "Ez az Ön gazdaállomásán levÅ‘ témaszámhoz tartozó relatív ID szám. Ha üresen hagyja, a LAM a következÅ‘t veszi figyelembe: uidSzám*2 + sambaAlgoritmikusRidAlap." - -#: ../help/help.inc:49 -msgid "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." -msgstr "Ez a szervercíme az ön LDAP szerverének. Használja az ldap:// formátumot a szokásos LDAP kapcsolatokhoz és az ldaps:// formátumot a titkosított kapcsolatokhoz (amikhez szerver bizonyítványok szükségesek). A port értéke elhagyható." - -#: ../help/help.inc:102 -msgid "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." -msgstr "Az a szerver, ahol a lamdaemon szkript található. Az LDAP Account Manager SSH kapcsolatot létesít ezzel a szerverrel, a belépéskor (login) megadott felhasználónév és jelszó használatával." - -#: ../help/help.inc:67 -msgid "This is the suffix for the LDAP tree viewer." -msgstr "Ez az LDAP fa-áttekintÅ‘ utótagja." - -#: ../help/help.inc:61 -msgid "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." -msgstr "Ez az utótagja az LDAP fának ahonnan a felhasználó/csoport/gazdaállomás bejegyzések keresése kezdÅ‘dik. Csak az ezekben az al-fákban található bejegyzések szerepelnek majd a felhasználó/csoport/gazdaállomás listán. Új témaszám létrehozásakor ez lesz a DN, ahová az témaszám elmentÅ‘dik." - -#: ../lib/modules/inetLocalMailRecipient.inc:57 -msgid "This is the target email address for the user's mails." -msgstr "Ez a felhasználó leveleihez tartozó email cím." - -#: ../help/help.inc:109 -msgid "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." -msgstr "Ez az a percekben mért idÅ‘, amennyit az LAM cache-el az LDAP keresés során. Rövidebb időértékek jobban terhelik az LDAP-t, de csökkentik annak valószínűségét, hogy a változások nem kerülnek felismerésre." - -#: ../lib/modules/posixAccount.inc:87 -msgid "This login shell is invalid!" -msgstr "A belépési (login) shell érvénytelen!" - -#: ../templates/schema/schema.php:356 -msgid "This object class is obsolete." -msgstr "Ez az objektumosztály elavult." - -#: ../lib/modules/sambaSamAccount.inc:198 -msgid "This option defines the allowed logon hours for this account. The format is the same as for the LDAP attribute. The 24*7 hours are represented as 168 bit which are saved as 21 hex (21*8 = 168) values. The first bit represents Sunday 0:00 - 0:59 in GMT." -msgstr "Ez a beállítás megadja a témaszámnak engedélyezett belépési idÅ‘t. Formátuma ugyanaz, mint az LDAP attribútumé. A 24*7 óra 168 bites értékként jelenik meg, amely 21 hex (21*8=168) értékként kerül elmentésre. Az elsÅ‘ bit jelenentése: vasárnap 0:00-0:59 GMT szerint." - -#: ../help/help.inc:111 -msgid "This text will appear on top of every user PDF file." -msgstr "Ez a szöveg jelenik majd meg minden felhasználó PDF file-jának tetején." - -#: ../templates/tools.php:84 -msgid "This tool allows you to customize the PDF pages." -msgstr "Ezzel az eszközzel testreszabhatja a PDF-oldalakat." - -#: ../templates/lists/userlink.php:63 -msgid "This user was not found!" -msgstr "A felhasználó nem található" - -#: ../lib/modules/sambaAccount.inc:65 -#: ../lib/modules/sambaAccount.inc:66 -#: ../lib/modules/sambaAccount.inc:67 -#: ../lib/modules/sambaAccount.inc:68 -#: ../lib/modules/sambaSamAccount.inc:63 -#: ../lib/modules/sambaSamAccount.inc:64 -#: ../lib/modules/sambaSamAccount.inc:65 -#: ../lib/modules/sambaSamAccount.inc:66 -msgid "This value can only be \\\"true\\\" or \\\"false\\\"!" -msgstr "Ez az érték csak \\\"true\\\" vagy \\\"false\\\" lehet." - -#: ../lib/modules/posixAccount.inc:88 -msgid "This value can only be \\\"true\\\" or \\\"false\\\"." -msgstr "Ez az érték csak \\\"true\\\" vagy \\\"false\\\" lehet." - -#: ../lib/modules/posixGroup.inc:475 -msgid "This value must be a list of user names separated by semicolons." -msgstr "Ennek pontosvesszÅ‘kkel elválasztott felhasználónevekbÅ‘ll álló listának kell lennie." - -#: ../help/help.inc:244 -msgid "This will create a new organizational unit under the selected one." -msgstr "Ezzel egy új szervezeti egység keletkezik a kijelölt alatt." - -#: ../help/help.inc:246 -msgid "This will delete the selected organizational unit. The OU has to be empty." -msgstr "Ezzel törli a kiválasztott szervezeti egységet. Az OU-nak üresnek kell lennie." - -#: ../help/help.inc:119 -msgid "This will delete the selected profile." -msgstr "Ezzel törli a kiválasztott profilt." - -#: ../help/help.inc:221 -msgid "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 -_." -msgstr "Ezzel profilt készít a jelenlegi azonosítóról. Az elmentett értékek ugyanazok, mint a profilszerkesztÅ‘ben. A profilnevek a következÅ‘ karaktereket tartalmazhatják: a-z, 0-9 és -_." - -#: ../lib/modules/posixAccount.inc:333 -#: ../help/help.inc:155 -msgid "To disable login use /bin/false. List of shells is read from lam/config/shells" -msgstr "A belépés letiltásához használja a /bin/false-ot. A shell-ek listája a /lam/config/shells file-ból olvasódik." - -#: ../templates/main_header.php:59 -msgid "Tools" -msgstr "Eszközök" - -#: ../templates/pdfedit/pdfpage.php:513 -msgid "Top" -msgstr "Teteje" - -#: ../templates/lists/listusers.php:269 -msgid "Translate GID number to group name" -msgstr "A GID-érték lefordítása csoportnévre" - -#: ../help/help.inc:66 -msgid "Tree suffix" -msgstr "Fa utótag" - -#: ../templates/main_header.php:78 -msgid "Tree view" -msgstr "Fa nézet" - -#: ../templates/config/confmain.php:217 -#: ../lib/config.inc:362 -msgid "TreeSuffix" -msgstr "FaUtótag" - -#: ../templates/config/confsave.php:127 -msgid "TreeSuffix is invalid!" -msgstr "A FaUtótag érvénytelen!" - -#: ../templates/schema/schema.php:354 -msgid "Type" -msgstr "Típus" - -#: ../lib/modules/posixAccount.inc:75 -msgid "UID" -msgstr "UID (Felhasználói azonosító)" - -#: ../lib/modules/posixAccount.inc:75 -msgid "UID has changed. Do you want to change home directory?" -msgstr "Az UID megváltozott. Szeretné a home könyvtárat megváltoztatni?" - -#: ../lib/modules/posixAccount.inc:70 -msgid "UID must be a number. It has to be inside the UID range which is defined in your configuration profile." -msgstr "Az UID-nak számnak kell lennie. Az értéknek azon a tartományon belülkell lennie, amit a beállítási profiljában meghatározott." - -#: ../lib/modules/posixAccount.inc:46 -#: ../lib/modules/posixAccount.inc:178 -#: ../lib/modules/posixAccount.inc:245 -#: ../lib/modules/posixAccount.inc:290 -#: ../lib/modules/posixAccount.inc:294 -#: ../lib/modules/posixAccount.inc:302 -#: ../lib/modules/posixAccount.inc:840 -#: ../lib/modules/posixAccount.inc:1081 -#: ../lib/lists.inc:303 -#: ../lib/lists.inc:330 -#: ../help/help.inc:146 -#: ../help/help.inc:166 -msgid "UID number" -msgstr "UID-érték" - -#: ../lib/modules/posixAccount.inc:46 -#, php-format -msgid "UID number has changed. To keep file ownership you have to run the following command as root: 'find / -uid %s -exec chown %s {} \\;'" -msgstr "Az UID-érték megváltozott. Root-ként kell futtatnia a következÅ‘ utasítást hogy megtartsa a jelenlegi file-engedélyeket.: 'find / -uid %s -exec chown %s {} \\;'" - -#: ../lib/modules/posixAccount.inc:63 -#: ../lib/modules/posixAccount.inc:154 -msgid "UID ranges for Unix accounts" -msgstr "Kérem, adja meg az UID-tartományokat a Unix-témaszámokhoz:" - -#: ../lib/modules/sambaAccount.inc:358 -#: ../lib/modules/sambaSamAccount.inc:173 -#: ../help/help.inc:217 -msgid "UNC-path (\\\\server\\share) of homedirectory. $user and $group are replaced with user- and groupname." -msgstr "A home könyvtár UNC elérési útvonala (\\\\server\\share). A $user és a $group a felhasználó-és csoportnévvel helyettesítÅ‘dnek." - -#: ../templates/pdfedit/pdfpage.php:581 -msgid "UP" -msgstr "UP" - -#: ../templates/ou_edit.php:55 -#: ../templates/ou_edit.php:120 -#: ../templates/ou_edit.php:185 -#: ../templates/ou_edit.php:250 -msgid "Unable to create new OU!" -msgstr "Nem tudok új OU-t létrehozni!" - -#: ../templates/config/profmanage.php:86 -msgid "Unable to create new profile!" -msgstr "Az új profilt nem lehet létrehozni!" - -#: ../templates/ou_edit.php:72 -#: ../templates/ou_edit.php:137 -#: ../templates/ou_edit.php:202 -#: ../templates/ou_edit.php:267 -msgid "Unable to delete OU!" -msgstr "Nem tudom törölni az OU-t!" - -#: ../templates/pdfedit/pdfdelete.php:56 -msgid "Unable to delete PDF structure!" -msgstr "A PDF-szerkezetet nem lehet törölni!" - -#: ../templates/domain.php:349 -msgid "Unable to delete domain!" -msgstr "Nem tudom törölni a tartományt!" - -#: ../templates/config/profmanage.php:108 -#: ../templates/profedit/profiledelete.php:60 -msgid "Unable to delete profile!" -msgstr "A profilt nem lehet törölni!" - -#: ../lib/modules/posixAccount.inc:1398 -msgid "Unable to find group in LDAP." -msgstr "Nem találom a csoportot az LDAP-ban." - -#: ../templates/config/confmain.php:398 -msgid "Unable to load available languages. Setting English as default language. For further instructions please contact the Admin of this site." -msgstr "Nem tudom betölteni az elérhetÅ‘ nyelveket. Az angolt állítom be alapértelmezett nyelvnek. További teendÅ‘kért kérem forduljon az oldal adminisztrátorához." - -#: ../templates/login.php:100 -msgid "Unable to load available languages. Setting English as default language. For further instructions please contact the admin of this site." -msgstr "Nem tudom betölteni az elérhetÅ‘ nyelveket. Az angolt állítom be alapértelmezett nyelvnek. További teendÅ‘kért kérem forduljon az oldal adminisztrátorához." - -#: ../lib/profiles.inc:91 -#: ../lib/profiles.inc:95 -msgid "Unable to load profile!" -msgstr "Nem tudom betölteni a profilt!" - -#: ../templates/schema/schema.php:99 -#: ../templates/schema/schema.php:117 -#: ../templates/schema/schema.php:278 -#: ../templates/schema/schema.php:312 -msgid "Unable to retrieve schema!" -msgstr "Nem érem el a sémát!" - -#: ../templates/profedit/profilecreate.php:114 -msgid "Unable to save profile!" -msgstr "Nem tudom elmenteni a profilt!" - -#: ../lib/modules/posixGroup.inc:289 -#: ../lib/modules/posixAccount.inc:112 -msgid "Unix" -msgstr "Unix" - -#: ../lib/modules/inetOrgPerson.inc:51 -#: ../lib/modules/inetOrgPerson.inc:399 -#: ../lib/modules/inetOrgPerson.inc:461 -#: ../help/help.inc:234 -msgid "Unix workstations" -msgstr "Unix munkaállomások" - -#: ../lib/modules/inetOrgPerson.inc:51 -msgid "Unix workstations is invalid." -msgstr "A megadott Unix munkaállomás érvénytelen." - -#: ../templates/config/confmodules.php:226 -msgid "Unsolved dependency:" -msgstr "Megoldatlan függÅ‘ség:" - -#: ../templates/massBuildAccounts.php:193 -msgid "Upload accounts to LDAP" -msgstr "A témaszámok feltöltése az LDAP-ba" - -#: ../templates/masscreate.php:128 -msgid "Upload file and create accounts" -msgstr "File feltöltése és témaszámok létrehozása" - -#: ../lib/modules.inc:471 -#, php-format -msgid "Upload was stopped after errors in %s module!" -msgstr "A feltöltés leállítva a %s modulban történt hiba után!" - -#: ../templates/schema/schema.php:215 -msgid "Usage" -msgstr "Használat" - -#: ../lib/modules/sambaAccount.inc:98 -#: ../lib/modules/sambaAccount.inc:210 -#: ../lib/modules/sambaAccount.inc:325 -#: ../lib/modules/sambaAccount.inc:328 -#: ../lib/modules/sambaSamAccount.inc:140 -#: ../lib/modules/sambaSamAccount.inc:143 -#: ../lib/modules/sambaSamAccount.inc:226 -msgid "Use Unix password" -msgstr "Unix jelszó használata" - -#: ../templates/pdfedit/pdfpage.php:442 -#: ../templates/pdfedit/pdfpage.php:487 -#: ../templates/pdfedit/pdfpage.php:501 -#: ../templates/pdfedit/pdfpage.php:519 -#: ../templates/pdfedit/pdfpage.php:530 -#: ../templates/pdfedit/pdfpage.php:541 -#: ../templates/pdfedit/pdfpage.php:552 -msgid "Use default" -msgstr "Az alapértelmezett érték használata" - -#: ../help/help.inc:99 -#: ../help/help.inc:104 -msgid "Use it at your own risk and read the documentation for lamdaemon before you use it!" -msgstr "Használja saját felelÅ‘sségére és olvassa el a lamdaemon leírását a használat elÅ‘tt!" - -#: ../lib/modules/posixGroup.inc:408 -#: ../lib/modules/sambaAccount.inc:104 -#: ../lib/modules/sambaAccount.inc:218 -#: ../lib/modules/sambaAccount.inc:331 -#: ../lib/modules/sambaAccount.inc:334 -#: ../lib/modules/sambaAccount.inc:698 -#: ../lib/modules/sambaSamAccount.inc:146 -#: ../lib/modules/sambaSamAccount.inc:149 -#: ../lib/modules/sambaSamAccount.inc:234 -#: ../lib/modules/sambaSamAccount.inc:684 -#: ../lib/modules/sambaSamAccount.inc:831 -#: ../lib/modules/posixAccount.inc:327 -#: ../help/help.inc:196 -msgid "Use no password" -msgstr "Jelszó nélküli használat" - -#: ../lib/modules/sambaAccount.inc:694 -#: ../lib/modules/sambaSamAccount.inc:680 -#: ../lib/modules/sambaSamAccount.inc:825 -#: ../help/help.inc:198 -msgid "Use unix password" -msgstr "Unix jelszó használata" - -#: ../lib/modules/quota.inc:68 -#: ../lib/modules/quota.inc:292 -msgid "Used blocks" -msgstr "Használt blokkok" - -#: ../lib/modules/quota.inc:69 -msgid "Used blocks. 1000 blocks are usually 1MB" -msgstr "Használt blokkok. Ãltalában 1000 blokk számít 1 MB-nek" - -#: ../templates/schema/schema.php:274 -msgid "Used by attributes" -msgstr "Attribútumok használják" - -#: ../templates/schema/schema.php:243 -msgid "Used by object classes" -msgstr "Az ezt használó objektumosztályok" - -#: ../help/help.inc:260 -msgid "Used for calculating RIDs from UID/GID. Do not change if unsure." -msgstr "A RID-ek UID/GID-bÅ‘l történÅ‘ kiszámításához használatos. Ha bizonytalan, ne változtassa meg." - -#: ../lib/modules/quota.inc:84 -#: ../lib/modules/quota.inc:296 -msgid "Used inodes" -msgstr "Használt inode-ok" - -#: ../lib/modules/quota.inc:85 -msgid "Used inodes (files)" -msgstr "Használt inode-ok (file-ok)" - -#: ../lib/modules/sambaGroupMapping.inc:51 -msgid "User" -msgstr "Felhasználó" - -#: ../lib/lists.inc:302 -msgid "User ID" -msgstr "Felhasználó ID" - -#: ../lib/modules/sambaAccount.inc:242 -#: ../lib/modules/sambaAccount.inc:349 -#: ../lib/modules/sambaAccount.inc:710 -#: ../lib/modules/sambaSamAccount.inc:164 -#: ../lib/modules/sambaSamAccount.inc:258 -#: ../lib/modules/sambaSamAccount.inc:696 -#: ../help/help.inc:202 -msgid "User can change password" -msgstr "A felhasználó módosíthatja a jelszavát" - -#: ../lib/modules/posixAccount.inc:312 -#: ../lib/modules/inetOrgPerson.inc:224 -#: ../help/help.inc:153 -msgid "User description. If left empty sur- and give name will be used." -msgstr "A felhasználó leírása. Ha üresen hagyja, a keresztnév és vezetéknév szolgál erre." - -#: ../lib/pdf.inc:449 -msgid "User information page" -msgstr "Felhasználói információs lap" - -#: ../templates/config/confsave.php:132 -msgid "User list attributes are invalid!" -msgstr "A felhasználói lista attribútumai érvénytelenek!" - -#: ../templates/schema/schema.php:210 -msgid "User modification" -msgstr "Felhasználó módosítása" - -#: ../templates/config/confmodules.php:79 -#: ../templates/config/confmain.php:256 -#: ../lib/config.inc:371 -msgid "User modules" -msgstr "Felhasználói modulok" - -#: ../lib/modules/sambaAccount.inc:249 -#: ../lib/modules/sambaAccount.inc:351 -#: ../lib/modules/sambaAccount.inc:718 -#: ../lib/modules/sambaSamAccount.inc:166 -#: ../lib/modules/sambaSamAccount.inc:265 -#: ../lib/modules/sambaSamAccount.inc:704 -#: ../help/help.inc:204 -msgid "User must change password" -msgstr "A felhasználónak módosítania kell a jelszavát" - -#: ../templates/login.php:168 -#: ../lib/modules/account.inc:66 -#: ../lib/modules/posixAccount.inc:170 -msgid "User name" -msgstr "Felhasználónév" - -#: ../templates/profedit/profilemain.php:45 -msgid "User profiles" -msgstr "Felhasználói profilok" - -#: ../lib/modules/quota.inc:422 -msgid "User quota" -msgstr "Felhasználói kvóta" - -#: ../help/help.inc:60 -msgid "User/Group/Host suffix" -msgstr "Felhasználó/Csoport/Gazdaállomás utótag" - -#: ../templates/config/confmain.php:177 -#: ../lib/config.inc:358 -msgid "UserSuffix" -msgstr "Felhasználó utótag" - -#: ../templates/config/confsave.php:107 -msgid "UserSuffix is invalid!" -msgstr "A felhasználó utótag érvénytelen" - -#: ../lib/modules/sambaAccount.inc:834 -#: ../lib/modules/sambaSamAccount.inc:952 -#: ../lib/modules/posixAccount.inc:76 -#: ../lib/modules/posixAccount.inc:77 -#: ../lib/modules/posixAccount.inc:80 -#: ../lib/modules/posixAccount.inc:307 -#: ../lib/modules/posixAccount.inc:836 -#: ../lib/modules/posixAccount.inc:1080 -#: ../lib/lists.inc:305 -#: ../help/help.inc:144 -msgid "Username" -msgstr "Felhasználónév" - -#: ../lib/modules/posixAccount.inc:77 -#: ../lib/modules/posixAccount.inc:82 -msgid "Username contains invalid characters. Valid characters are: a-z, A-Z, 0-9 and .-_ !" -msgstr "A felhasználónév érvénytelen karaktereket tartalmaz. Érvényes karakterek: a-z, A-Z, 0-9 és .-_ !" - -#: ../lib/modules/posixAccount.inc:80 -msgid "Username in use. Selected next free username." -msgstr "Ez a felhasználónév már használatban van. A legközelebb álló, még nem használt felhasználónevet választom helyette." - -#: ../lib/modules/posixAccount.inc:308 -#: ../help/help.inc:145 -msgid "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." -msgstr "A létrehozásra kerülÅ‘ felhasználó felhasználói neve. Használható karakterek: a-z, 0-9, .-_. A Lam nem fogad el számot elsÅ‘ karakterként, mert a useradd sem fogadja el. A Lam nem engedi a nagybetűk A-Z használatát, mert ez különbözÅ‘ problémák forrása lehet. Ha a felhasználónév már használatban van, számmal lesz megtoldva. A legközelebbi, használatlan szám lesz felhasználva. Figyelem: Régebbi rendszereken problémát jelenthetnek a 8-nál több karakterbÅ‘l álló felhasználónevek. Windows-ba nem fog tudni bejelentkezni, ha a felhasználónév 16 karakternél hosszabb." - -#: ../templates/ou_edit.php:336 -#: ../templates/main_header.php:81 -#: ../lib/modules/posixAccount.inc:57 -#: ../lib/modules/posixAccount.inc:58 -#: ../lib/modules/posixAccount.inc:61 -#: ../lib/modules/posixAccount.inc:126 -#: ../help/help.inc:79 -msgid "Users" -msgstr "Felhasználók" - -#: ../help/help.inc:239 -msgid "Users also being member of the current group." -msgstr "A jelenlegi csoportba tartozó további felhasználók." - -#: ../lib/modules/posixGroup.inc:397 -msgid "Users who are member of the current group." -msgstr "A jelenlegi csoportba tartozó további felhasználók." - -#: ../lib/modules/posixGroup.inc:401 -msgid "Users who will become member of the current group. User names are separated by semicolons." -msgstr "A felhasználók, akik a jelenlegi csoport tagjai lesznek. A felhasználóneveket pontosvesszÅ‘vel kell elválasztani." - -#: ../help/help.inc:183 -msgid "Users wich are also members of group." -msgstr "A csoportba tartozó további felhasználók." - -#: ../templates/tree/creation_template.php:85 -msgid "Using template:" -msgstr "A használt sablon:" - -#: ../help/help.inc:87 -msgid "Valid users" -msgstr "Elfogadott felhasználók" - -#: ../templates/delete.php:181 -#: ../lib/modules.inc:1553 -#, php-format -msgid "Was unable to add attribtues to DN: %s." -msgstr "Nem tudtam attribútumokat adni a következõ DN-hez: %s." - -#: ../lib/modules.inc:1518 -#: ../lib/modules.inc:1527 -#, php-format -msgid "Was unable to create DN: %s." -msgstr "Nem tudtam létrehozni a következÅ‘ DN-t: %s." - -#: ../templates/tree/delete.php:109 -#: ../templates/delete.php:218 -#: ../lib/modules.inc:1511 -#, php-format -msgid "Was unable to delete DN: %s." -msgstr "Nem tudtam törölni a következÅ‘ DN-t: %s." - -#: ../templates/tree/update.php:105 -#: ../templates/tree/add_oclass.php:89 -#: ../templates/tree/add_oclass_form.php:155 -#: ../templates/delete.php:172 -#: ../lib/modules.inc:1543 -#, php-format -msgid "Was unable to modify attribtues from DN: %s." -msgstr "Nem tudtam attríbútumokat módosítani a következÅ‘ DN-bÅ‘l: %s." - -#: ../templates/delete.php:190 -#: ../lib/modules.inc:1563 -#, php-format -msgid "Was unable to remove attribtues from DN: %s." -msgstr "Nem tudtam attríbútumokat törölni a következÅ‘ DN-bÅ‘l: %s." - -#: ../help/help.inc:59 -msgid "When using ldaps:// be sure to use exactly the same IP/domain name as in your certificate!" -msgstr "Ha az ldaps://-t használja, ügyeljen, hogy ugyanazt az IP/domain nevet használja, mint ami a bizonyítványában szerepel!" - -#: ../templates/pdfedit/pdfpage.php:460 -msgid "Width" -msgstr "szélesség" - -#: ../help/help.inc:185 -msgid "Windows clients will show display name as group description." -msgstr "A Windows kliensek a képernyÅ‘nevet mutatják majd csoport-leírásként." - -#: ../help/help.inc:224 -msgid "Windows domain" -msgstr "Windows tartomány" - -#: ../lib/modules/sambaAccount.inc:379 -#: ../lib/modules/sambaSamAccount.inc:195 -msgid "Windows domain name of account." -msgstr "A csoport Windows-tartományi neve." - -#: ../help/help.inc:225 -msgid "Windows domain of host." -msgstr "A gazdaállomás Windows tartománya." - -#: ../lib/modules/sambaAccount.inc:286 -#: ../lib/modules/sambaAccount.inc:756 -#: ../lib/modules/sambaSamAccount.inc:302 -#: ../lib/modules/sambaSamAccount.inc:740 -#: ../lib/modules/sambaSamAccount.inc:960 -#: ../lib/modules/sambaGroupMapping.inc:174 -#: ../lib/modules/sambaGroupMapping.inc:300 -msgid "Windows group" -msgstr "Windows csoport" - -#: ../lib/modules/sambaAccount.inc:372 -msgid "Windows group RID" -msgstr "Windows csoport RID" - -#: ../lib/modules/sambaAccount.inc:369 -#: ../help/help.inc:232 -msgid "Windows group name" -msgstr "Windows csoportnév" - -#: ../lib/modules/sambaGroupMapping.inc:286 -msgid "Windows group type." -msgstr "Windows csoporttípus" - -#: ../lib/modules/sambaGroupMapping.inc:273 -msgid "Windows groupname" -msgstr "Windows csoportnév" - -#: ../lib/modules/sambaSamAccount.inc:184 -msgid "Windows primary group SID" -msgstr "Windows elsÅ‘dleges csoport SID" - -#: ../lib/modules/sambaGroupMapping.inc:282 -msgid "Windows-Domain name of group." -msgstr "A csoport Windows-tartományi neve." - -#: ../help/help.inc:237 -msgid "Windows-Domain of group." -msgstr "A csoport Windows-tartománya." - -#: ../help/help.inc:219 -msgid "Windows-Domain of user." -msgstr "A felhasználó Windows-tartománya." - -#: ../templates/pdfedit/pdfdelete.php:89 -#: ../templates/profedit/profiledelete.php:92 -msgid "Wrong or missing type!" -msgstr "Rossz vagy hiányzó típus!" - -#: ../templates/login.php:366 -msgid "Wrong password/user name combination. Please try again." -msgstr "Rossz jelszó/felhasználónév kombináció. Próbálja újra." - -#: ../templates/schema/schema.php:159 -#: ../templates/schema/schema.php:201 -#: ../templates/schema/schema.php:206 -#: ../templates/schema/schema.php:211 -msgid "Yes" -msgstr "Igen" - -#: ../lib/modules/posixGroup.inc:471 -#: ../lib/modules/posixAccount.inc:76 -#: ../lib/modules/posixAccount.inc:78 -msgid "You are using a capital letters. This can cause problems because windows isn't case-sensitive." -msgstr "Nagy betűket használ. Ez gondokat jelenthet, mert a Windows nem case-szenzitív." - -#: ../help/help.inc:187 -msgid "You can select a previous defined profile here. This will set all fields to the profile values." -msgstr "Itt választhat egy elÅ‘zÅ‘leg beállított profilt. Ez minden mezÅ‘t a profil értékeire állít." - -#: ../lib/modules/posixGroup.inc:462 -#: ../lib/modules/posixAccount.inc:73 -msgid "You cannot use this password options at the same time." -msgstr "Nem használhatja egyidejűleg ezeket a jelszó-lehetÅ‘ségeket." - -#: ../templates/tree/templates/creation/custom.php:106 -msgid "You did not select any object classes for this object. Please go back and do so." -msgstr "Nem választott semmilyen objektumosztályt ehhez az objektumhoz. Kérem, lépjen vissza és tegye meg." - -#: ../templates/logout.php:70 -msgid "You have been logged off from LDAP Account Manager." -msgstr "Kijelentkezett az LDAP Account Manager alkalmazásból." - -#: ../templates/tree/add_attr.php:75 -msgid "You left the attribute value blank. Please go back and try again." -msgstr "Az attribútum értékét üresen hagyta. Kérem, lépjen vissza és próbálkozzon újra." - -#: ../templates/tree/create.php:81 -#, php-format -msgid "You left the value blank for required attribute: %s." -msgstr "Ehhez a szükséges attribútumhoz tartozó értéket üresen hagyta: %s." - -#: ../templates/tree/update_confirm.php:250 -msgid "You made no changes." -msgstr "Semmit nem változtatott." - -#: ../templates/tree/add_attr_form.php:164 -msgid "Your PHP configuration has disabled file uploads. Please check php.ini before proceeding." -msgstr "Az Ön PHP beállításai nem teszik lehetÅ‘vé a file-feltöltést. Kérem, ellenÅ‘rízze a php.ini-t, mielÅ‘tt folytatja." - -#: ../templates/tree/update_confirm.php:188 -#: ../templates/tree/update_confirm.php:200 -msgid "[attribute deleted]" -msgstr "[attribútum törölve]" - -#: ../lib/modules/sambaAccount.inc:264 -#: ../lib/modules/sambaSamAccount.inc:280 -msgid "\\\\server\\homes\\smiller" -msgstr "\\\\server\\homes\\imolnar" - -#: ../lib/modules/sambaAccount.inc:270 -#: ../lib/modules/sambaSamAccount.inc:286 -msgid "\\\\server\\profiles\\smiller" -msgstr "\\\\server\\profiles\\imolnar" - -#: ../templates/tree/edit.php:488 -msgid "add value" -msgstr "érték hozzáadás" - -#: ../lib/modules/posixGroup.inc:352 -msgid "adminstrators" -msgstr "adminisztrátorok" - -#: ../templates/schema/schema.php:226 -msgid "character" -msgstr "karakter" - -#: ../templates/schema/schema.php:225 -msgid "characters" -msgstr "karakterek" - -#: ../help/help.inc:71 -msgid "dc=yourcompany,dc=com" -msgstr "dc=azöncége,dc=com" - -#: ../templates/tree/edit.php:306 -msgid "delete attribute" -msgstr "attribútum törlés" - -#: ../templates/tree/edit.php:171 -#: ../templates/tree/edit.php:173 -#: ../templates/tree/edit.php:300 -#: ../templates/tree/edit.php:302 -#: ../templates/tree/add_value_form.php:106 -#: ../templates/tree/add_value_form.php:109 -msgid "download value" -msgstr "az érték letöltése" - -#: ../lib/modules/inetOrgPerson.inc:62 -#: ../lib/modules/inetOrgPerson.inc:197 -#: ../lib/modules/inetOrgPerson.inc:267 -#: ../lib/modules/inetOrgPerson.inc:268 -#: ../lib/modules/inetOrgPerson.inc:444 -#: ../lib/modules/inetOrgPerson.inc:472 -msgid "eMail address" -msgstr "eMail cím" - -#: ../templates/tree/edit.php:385 -msgid "false" -msgstr "hamis" - -#: ../lib/modules/posixAccount.inc:193 -msgid "group01,group02" -msgstr "csoport01, csoport02" - -#: ../lib/modules/quota.inc:120 -#: ../lib/modules/quota.inc:122 -#: ../lib/modules/quota.inc:189 -#: ../lib/modules/quota.inc:191 -msgid "hours" -msgstr "órák" - -#: ../lib/tree.inc:1184 -msgid "jpegPhoto contains errors" -msgstr "a jpegPhoto hibás" - -#: ../help/help.inc:53 -msgid "ldap://localhost:389 connects to localhost using a standard LDAP connection on port 389" -msgstr "ldap://localhost:839 kapcsolódik localhost-hoz szokványos LDAP kapcsolattal a 389-es porton" - -#: ../help/help.inc:55 -msgid "ldaps://141.40.146.133 connects to 141.40.146.133 using an encrypted LDAP connection." -msgstr "ldaps://141.40.146.133 kapcsolódik a 141.40.146.133-hoz titkosított LDAP kapcsolatottal." - -#: ../lib/modules/posixAccount.inc:253 -msgid "machines" -msgstr "gépek" - -#: ../lib/modules/sambaAccount.inc:302 -#: ../lib/modules/sambaAccount.inc:312 -#: ../lib/modules/sambaSamAccount.inc:210 -#: ../lib/modules/sambaSamAccount.inc:329 -msgid "mydomain" -msgstr "tartományom" - -#: ../lib/modules/sambaSamAccount.inc:304 -msgid "mygroup" -msgstr "csoportom" - -#: ../templates/tree/templates/creation/custom.php:189 -#: ../templates/tree/templates/creation/custom.php:212 -#: ../templates/schema/schema.php:166 -#: ../templates/schema/schema.php:235 -#: ../templates/schema/schema.php:246 -#: ../templates/schema/schema.php:295 -#: ../templates/schema/schema.php:361 -#: ../templates/schema/schema.php:376 -#: ../templates/schema/schema.php:410 -#: ../templates/schema/schema.php:432 -msgid "none" -msgstr "semmi" - -#: ../templates/tree/edit.php:386 -msgid "none, remove value" -msgstr "semmi, érték törlése" - -#: ../templates/schema/schema.php:222 -msgid "not applicable" -msgstr "nem alkalmazható" - -#: ../templates/schema/schema.php:173 -#: ../templates/schema/schema.php:178 -#: ../templates/schema/schema.php:183 -#: ../templates/schema/schema.php:216 -msgid "not specified" -msgstr "nem meghatározott" - -#: ../help/help.inc:65 -msgid "ou=People,dc=yourcompany,dc=com will read and store all accounts in this subtree." -msgstr "ou=emberek,dc=az_ön_cége,dc=com minden témaszámot ezen az al-fán olvas és tárol." - -#: ../lib/modules/posixAccount.inc:239 -msgid "pc01$" -msgstr "pc01$" - -#: ../lib/modules/posixAccount.inc:260 -msgid "pc01,Room 2.34" -msgstr "pc01,Room 2.34" - -#: ../templates/tree/edit.php:238 -#: ../templates/config/confmain.php:494 -msgid "required" -msgstr "szükséges" - -#: ../templates/config/confmain.php:495 -msgid "required for Samba 3 accounts" -msgstr "Samba 3 témaszámokhoz szükséges" - -#: ../templates/pdfedit/pdfpage.php:546 -msgid "right" -msgstr "jobbra" - -#: ../lib/modules/posixGroup.inc:378 -#: ../lib/modules/sambaAccount.inc:206 -#: ../lib/modules/sambaSamAccount.inc:222 -#: ../lib/modules/posixAccount.inc:214 -msgid "secret" -msgstr "titok" - -#: ../lib/modules/posixAccount.inc:172 -#: ../lib/modules/nisMailAlias.inc:84 -msgid "smiller" -msgstr "imolnar" - -#: ../templates/tree/edit.php:431 -msgid "structural" -msgstr "struktúrális" - -#: ../templates/tree/edit.php:383 -msgid "true" -msgstr "igaz" - -#: ../lib/modules/posixGroup.inc:372 -msgid "user01,user02,user03" -msgstr "Felhasznó01, felhasználó02, felhasználó03" - -#: ../lib/modules/inetOrgPerson.inc:199 -msgid "user@company.com" -msgstr "felhasználó@cég.com" - -#: ../lib/modules/posixAccount.inc:186 -msgid "users" -msgstr "felhasználók" - diff --git a/lam/locale/it_IT/LC_MESSAGES/messages.mo b/lam/locale/it_IT/LC_MESSAGES/messages.mo deleted file mode 100644 index 0291ca5127c0475853188e9908a6eae2a1e4a41a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 83721 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 diff --git a/lam/locale/it_IT/LC_MESSAGES/messages.po b/lam/locale/it_IT/LC_MESSAGES/messages.po deleted file mode 100644 index bca1b2cb..00000000 --- a/lam/locale/it_IT/LC_MESSAGES/messages.po +++ /dev/null @@ -1,4038 +0,0 @@ -# LDAP Account Manager -# -msgid "" -msgstr "" -"Project-Id-Version: messages\n" -"Report-Msgid-Bugs-To: post@rolandgruber.de \n" -"POT-Creation-Date: 2004-01-14 17:45+0200\n" -"PO-Revision-Date: 2005-03-05 20:22+0100\n" -"Last-Translator: Massimiliano Ferrero\n" -"Language-Team: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: KBabel 1.9.1\n" - -#: ../templates/lists/listdomains.php:143 -#: ../templates/lists/listdomains.php:193 -#, php-format -msgid "%s Samba domain(s) found" -msgstr "%s dominio(i) trovato(i)" - -#: ../templates/lists/listgroups.php:164 ../templates/lists/listgroups.php:240 -#, php-format -msgid "%s group(s) found" -msgstr "%s gruppo(i) trovato(i)" - -#: ../templates/lists/listhosts.php:164 ../templates/lists/listhosts.php:224 -#, php-format -msgid "%s host(s) found" -msgstr "%s computer trovato(i)" - -#: ../templates/lists/listusers.php:198 ../templates/lists/listusers.php:274 -#, php-format -msgid "%s user(s) found" -msgstr "%s utente(i) trovato(i)" - -#: ../lib/modules/posixAccount.inc:199 -msgid "/home/smiller" -msgstr "/home/smiller" - -#: ../templates/massBuildAccounts.php:113 -msgid "A required column is missing in your CSV file." -msgstr "Nel file CVS manca una colonna obbligatoria" - -#: ../templates/ou_edit.php:95 ../templates/ou_edit.php:160 -#: ../templates/ou_edit.php:225 ../templates/ou_edit.php:290 -#: ../templates/config/confmodules.php:104 -#: ../templates/config/confmain.php:422 ../templates/pdfedit/pdfdelete.php:82 -#: ../templates/pdfedit/pdfpage.php:834 ../templates/pdfedit/pdfmain.php:144 -#: ../templates/profedit/profiledelete.php:85 -#: ../templates/profedit/profilepage.php:140 -#: ../templates/profedit/profilemain.php:157 -msgid "Abort" -msgstr "Annullare" - -#: ../lib/modules/account.inc:35 -msgid "Account" -msgstr "Account" - -#: ../templates/massBuildAccounts.php:164 ../lib/modules/ieee802device.inc:84 -#: ../lib/modules/posixGroup.inc:407 ../lib/modules/posixGroup.inc:411 -#: ../lib/modules/posixGroup.inc:412 ../lib/modules/sambaAccount.inc:48 -#: ../lib/modules/sambaAccount.inc:51 ../lib/modules/sambaAccount.inc:54 -#: ../lib/modules/sambaAccount.inc:56 ../lib/modules/sambaAccount.inc:58 -#: ../lib/modules/sambaAccount.inc:61 ../lib/modules/sambaAccount.inc:64 -#: ../lib/modules/sambaAccount.inc:65 ../lib/modules/sambaAccount.inc:66 -#: ../lib/modules/sambaAccount.inc:67 ../lib/modules/sambaAccount.inc:68 -#: ../lib/modules/sambaAccount.inc:69 ../lib/modules/sambaAccount.inc:70 -#: ../lib/modules/sambaAccount.inc:71 ../lib/modules/sambaAccount.inc:72 -#: ../lib/modules/sambaAccount.inc:73 ../lib/modules/sambaSamAccount.inc:46 -#: ../lib/modules/sambaSamAccount.inc:49 ../lib/modules/sambaSamAccount.inc:52 -#: ../lib/modules/sambaSamAccount.inc:54 ../lib/modules/sambaSamAccount.inc:57 -#: ../lib/modules/sambaSamAccount.inc:60 ../lib/modules/sambaSamAccount.inc:61 -#: ../lib/modules/sambaSamAccount.inc:62 ../lib/modules/sambaSamAccount.inc:63 -#: ../lib/modules/sambaSamAccount.inc:64 ../lib/modules/sambaSamAccount.inc:65 -#: ../lib/modules/sambaSamAccount.inc:66 ../lib/modules/sambaSamAccount.inc:67 -#: ../lib/modules/sambaSamAccount.inc:68 ../lib/modules/sambaSamAccount.inc:69 -#: ../lib/modules/sambaSamAccount.inc:70 ../lib/modules/sambaSamAccount.inc:71 -#: ../lib/modules/sambaSamAccount.inc:72 ../lib/modules/posixAccount.inc:66 -#: ../lib/modules/posixAccount.inc:70 ../lib/modules/posixAccount.inc:74 -#: ../lib/modules/posixAccount.inc:82 ../lib/modules/posixAccount.inc:83 -#: ../lib/modules/posixAccount.inc:84 ../lib/modules/posixAccount.inc:85 -#: ../lib/modules/posixAccount.inc:86 ../lib/modules/posixAccount.inc:87 -#: ../lib/modules/posixAccount.inc:88 ../lib/modules/sambaGroupMapping.inc:359 -#: ../lib/modules/sambaGroupMapping.inc:360 -#: ../lib/modules/shadowAccount.inc:40 ../lib/modules/shadowAccount.inc:42 -#: ../lib/modules/shadowAccount.inc:44 ../lib/modules/shadowAccount.inc:46 -#: ../lib/modules/shadowAccount.inc:48 ../lib/modules/shadowAccount.inc:49 -#: ../lib/modules/inetOrgPerson.inc:53 ../lib/modules/inetOrgPerson.inc:55 -#: ../lib/modules/inetOrgPerson.inc:57 ../lib/modules/inetOrgPerson.inc:59 -#: ../lib/modules/inetOrgPerson.inc:61 ../lib/modules/inetOrgPerson.inc:63 -#: ../lib/modules/inetOrgPerson.inc:65 ../lib/modules/inetOrgPerson.inc:67 -#: ../lib/modules/inetOrgPerson.inc:69 ../lib/modules/inetOrgPerson.inc:71 -#: ../lib/modules/inetOrgPerson.inc:73 ../lib/modules/inetOrgPerson.inc:74 -#: ../lib/modules/inetLocalMailRecipient.inc:120 -#: ../lib/modules/inetLocalMailRecipient.inc:122 -#: ../lib/modules/inetLocalMailRecipient.inc:124 -#: ../lib/modules/nisMailAlias.inc:99 ../lib/modules/nisMailAlias.inc:101 -#, php-format -msgid "Account %s:" -msgstr "Account %s" - -#: ../templates/masscreate.php:78 -msgid "Account creation via file upload" -msgstr "Creazione account mediante caricamento file" - -#: ../lib/modules/shadowAccount.inc:163 -msgid "Account expiration date. Format: DD-MM-YYYY" -msgstr "Data di scadenza account. Formato: GG-MM-AAAA" - -#: ../help/help.inc:173 -msgid "Account expire date. Format: DD-MM-YYYY" -msgstr "Data di scadenza account. Formato: GG-MM-AAAA" - -#: ../lib/modules/shadowAccount.inc:340 -msgid "Account inactive" -msgstr "Account inattivo" - -#: ../lib/modules/sambaAccount.inc:116 ../lib/modules/sambaAccount.inc:234 -#: ../lib/modules/sambaAccount.inc:343 ../lib/modules/sambaAccount.inc:346 -#: ../lib/modules/sambaAccount.inc:746 ../lib/modules/sambaSamAccount.inc:158 -#: ../lib/modules/sambaSamAccount.inc:161 -#: ../lib/modules/sambaSamAccount.inc:250 -#: ../lib/modules/sambaSamAccount.inc:730 -#: ../lib/modules/sambaSamAccount.inc:883 ../help/help.inc:198 -msgid "Account is deactivated" -msgstr "Account disabilitato" - -#: ../templates/config/confmain.php:215 ../help/help.inc:106 -msgid "Account modules" -msgstr "Moduli account" - -#: ../templates/delete.php:89 -msgid "Account name:" -msgstr "Nome account:" - -#: ../lib/modules.inc:753 -msgid "Account was created successfully." -msgstr "Account creato correttamente." - -#: ../lib/modules.inc:756 -msgid "Account was modified successfully." -msgstr "Account modificato correttamente." - -#: ../templates/pdfedit/pdfpage.php:725 ../lib/modules/ieee802device.inc:155 -#: ../lib/modules/inetLocalMailRecipient.inc:219 -#: ../lib/modules/nisMailAlias.inc:184 -msgid "Add" -msgstr "Aggiungi" - -#: ../templates/pdfedit/pdfpage.php:713 -msgid "Add after" -msgstr "Aggiungi dopo" - -#: ../templates/config/profmanage.php:172 ../help/help.inc:108 -msgid "Add profile" -msgstr "Aggiungere profilo" - -#: ../templates/pdfedit/pdfpage.php:699 -msgid "Add section or static text" -msgstr "Aggiungere sezione o testo statico" - -#: ../lib/modules/posixAccount.inc:191 ../lib/modules/posixAccount.inc:333 -#: ../lib/modules/posixAccount.inc:834 ../lib/modules/posixAccount.inc:896 -#: ../lib/modules/posixAccount.inc:928 ../lib/modules/posixAccount.inc:999 -#: ../help/help.inc:140 -msgid "Additional groups" -msgstr "Gruppi aggiuntivi" - -#: ../templates/massDoUpload.php:98 -msgid "Additional tasks for module:" -msgstr "Task aggiuntivi per il modulo:" - -#: ../lib/modules/sambaAccount.inc:607 ../lib/modules/sambaAccount.inc:802 -#: ../lib/modules/sambaAccount.inc:805 ../lib/modules/sambaSamAccount.inc:583 -#: ../lib/modules/sambaSamAccount.inc:788 -#: ../lib/modules/sambaSamAccount.inc:791 -msgid "Administrator" -msgstr "Amministratore" - -#: ../lib/modules/posixGroup.inc:303 -msgid "Administrators group" -msgstr "Gruppo degli amministratori" - -#: ../templates/domain.php:146 ../help/help.inc:251 -msgid "Algorithmic RID Base" -msgstr "Base RID algoritmica" - -#: ../templates/domain.php:252 -msgid "Algorithmic RID base is not a number!" -msgstr "La base RID algoritmica non è un numero!" - -#: ../lib/modules/nisMailAlias.inc:60 ../lib/modules/nisMailAlias.inc:75 -#: ../lib/modules/nisMailAlias.inc:169 ../lib/modules/nisMailAlias.inc:308 -msgid "Alias name" -msgstr "Nome alias" - -#: ../templates/schema/schema.php:232 -msgid "Aliases" -msgstr "Alias" - -#: ../templates/initsuff.php:155 -msgid "All changes were successful." -msgstr "Tutte le modifiche sono state effettuate correttamente." - -#: ../lib/lists.inc:296 -msgid "Allowed hosts" -msgstr "Computer accettati" - -#: ../lib/modules/sambaAccount.inc:852 ../lib/modules/sambaAccount.inc:853 -#: ../lib/modules/sambaSamAccount.inc:838 -#: ../lib/modules/sambaSamAccount.inc:839 -msgid "Allowed workstations" -msgstr "Computer accettati" - -#: ../templates/lists/listusers.php:305 -msgid "Apply" -msgstr "Applica" - -#: ../lib/cache.inc:101 ../lib/cache.inc:160 -msgid "Attribute not defined in LDAP." -msgstr "Attributo non definito in LDAP" - -#: ../templates/schema/schema.php:75 ../templates/schema/schema.php:76 -msgid "Attribute types" -msgstr "Tipi di attributo" - -#: ../templates/config/confmain.php:292 ../lib/config.inc:338 -msgid "Attributes in Group List" -msgstr "Attributi nella lista dei gruppi" - -#: ../templates/config/confmain.php:298 ../lib/config.inc:339 -msgid "Attributes in Host List" -msgstr "Attributi nella lista dei computer" - -#: ../templates/config/confmain.php:286 ../lib/config.inc:337 -msgid "Attributes in User List" -msgstr "Attributi nella lista degli utenti" - -#: ../templates/pdfedit/pdfpage.php:852 -msgid "Available PDF fields" -msgstr "Campi PDF disponibili" - -#: ../lib/modules/posixAccount.inc:902 -msgid "Available groups" -msgstr "Gruppi disponibili" - -#: ../templates/config/confmodules.php:193 -msgid "Available modules" -msgstr "Moduli disponibili" - -#: ../lib/modules/posixGroup.inc:199 -msgid "Available users" -msgstr "Utenti disponibili" - -#: ../lib/modules/sambaAccount.inc:858 ../lib/modules/sambaSamAccount.inc:844 -msgid "Available workstations" -msgstr "Computer disponibili" - -#: ../lib/modules/posixGroup.inc:203 ../lib/modules/sambaAccount.inc:862 -#: ../lib/modules/sambaSamAccount.inc:848 ../lib/modules/posixAccount.inc:906 -msgid "Back" -msgstr "Indietro" - -#: ../templates/config/confsave.php:248 ../templates/config/conflogin.php:147 -#: ../templates/logout.php:71 -msgid "Back to Login" -msgstr "Torna al login" - -#: ../templates/ou_edit.php:309 ../templates/ou_edit.php:313 -msgid "Back to OU-Editor" -msgstr "Torna all'editor delle OU" - -#: ../templates/pdfedit/pdfdelete.php:61 ../templates/pdfedit/pdfdelete.php:69 -#: ../templates/pdfedit/pdfdelete.php:90 -msgid "Back to PDF Editor" -msgstr "Torna all'editor del PDF" - -#: ../templates/profedit/profilecreate.php:115 -#: ../templates/profedit/profiledelete.php:63 -#: ../templates/profedit/profiledelete.php:71 -#: ../templates/profedit/profiledelete.php:93 -msgid "Back to Profile Editor" -msgstr "Torna all'editor dei profili" - -#: ../lib/modules.inc:766 -msgid "Back to account list" -msgstr "Torna alla lista degli account" - -#: ../templates/domain.php:290 ../templates/domain.php:317 -msgid "Back to domain list" -msgstr "Torna alla lista dei domini" - -#: ../templates/lists/userlink.php:65 -msgid "Back to group list" -msgstr "Torna alla lista dei gruppi" - -#: ../templates/delete.php:239 -msgid "Back to list" -msgstr "Torna alla lista" - -#: ../templates/config/confsave.php:92 ../templates/config/confsave.php:97 -#: ../templates/config/confsave.php:102 ../templates/config/confsave.php:107 -#: ../templates/config/confsave.php:112 ../templates/config/confsave.php:117 -#: ../templates/config/confsave.php:122 ../templates/config/confsave.php:127 -#: ../templates/config/confsave.php:132 ../templates/config/confsave.php:137 -#: ../templates/config/confsave.php:142 ../templates/config/confsave.php:148 -#: ../templates/config/confsave.php:154 ../templates/config/confsave.php:160 -#: ../templates/config/confsave.php:166 ../templates/config/confsave.php:172 -#: ../templates/config/confsave.php:178 ../templates/config/confsave.php:225 -msgid "Back to preferences..." -msgstr "Torna alle preferenze..." - -#: ../templates/config/profmanage.php:382 -msgid "Back to profile login" -msgstr "Torna al login del profilo" - -#: ../templates/config/confmodules.php:108 ../help/help.inc:122 -msgid "Base module" -msgstr "Modulo base" - -#: ../templates/pdfedit/pdfpage.php:577 -msgid "Beginning" -msgstr "Inizio" - -#: ../lib/modules/quota.inc:31 -msgid "Block hard quota" -msgstr "Hard quota di blocco" - -#: ../lib/modules/quota.inc:31 -msgid "" -"Block hard quota contains invalid characters. Only natural numbers are " -"allowed." -msgstr "La hard quota di blocco contiene dei caratteri non validi. Sono accettati solo numeri naturali." - -#: ../lib/modules/quota.inc:34 -msgid "Block quota" -msgstr "Quota di blocco" - -#: ../lib/modules/quota.inc:30 -msgid "Block soft quota" -msgstr "Soft quota di blocco" - -#: ../lib/modules/quota.inc:30 -msgid "" -"Block soft quota contains invalid characters. Only natural numbers are " -"allowed." -msgstr "La soft quota di blocco contiene dei caratteri non validi. Sono accettati solo numeri naturali." - -#: ../lib/modules/quota.inc:34 -msgid "Block soft quota must be smaller than block hard quota." -msgstr "La soft quota deve essere più piccola della hard quota." - -#: ../templates/pdfedit/pdfpage.php:524 -msgid "Bottom" -msgstr "Fine" - -#: ../lib/modules/sambaGroupMapping.inc:55 -msgid "Builtin Group" -msgstr "Gruppi predefiniti" - -#: ../templates/masscreate.php:127 -msgid "CSV file:" -msgstr "File CVS" - -#: ../templates/config/confmain.php:198 ../lib/config.inc:332 -#: ../help/help.inc:102 -msgid "Cache timeout" -msgstr "Timeout della cache" - -#: ../templates/config/confsave.php:96 -msgid "Cache timeout is invalid!" -msgstr "Il timeout della cache non è valido!" - -#: ../lib/modules/posixGroup.inc:334 ../lib/modules/sambaAccount.inc:358 -#: ../lib/modules/sambaAccount.inc:361 ../lib/modules/sambaAccount.inc:364 -#: ../lib/modules/sambaAccount.inc:367 ../lib/modules/sambaAccount.inc:379 -#: ../lib/modules/sambaSamAccount.inc:173 -#: ../lib/modules/sambaSamAccount.inc:176 -#: ../lib/modules/sambaSamAccount.inc:179 -#: ../lib/modules/sambaSamAccount.inc:182 ../lib/modules/posixAccount.inc:334 -#: ../lib/modules/sambaGroupMapping.inc:280 -#: ../lib/modules/shadowAccount.inc:147 ../lib/modules/shadowAccount.inc:151 -#: ../lib/modules/shadowAccount.inc:155 ../lib/modules/shadowAccount.inc:159 -#: ../help/help.inc:141 ../help/help.inc:165 ../help/help.inc:167 -#: ../help/help.inc:169 ../help/help.inc:171 ../help/help.inc:203 -#: ../help/help.inc:205 ../help/help.inc:207 ../help/help.inc:209 -#: ../help/help.inc:211 ../help/help.inc:217 ../help/help.inc:227 -#: ../help/help.inc:229 ../help/help.inc:231 -msgid "Can be left empty." -msgstr "Può essere lasciato vuoto." - -#: ../templates/domain.php:188 ../templates/domain.php:219 -#: ../templates/delete.php:105 ../templates/initsuff.php:188 -msgid "Cancel" -msgstr "Annulla" - -#: ../templates/login.php:339 ../templates/login.php:344 -msgid "Cannot connect to specified LDAP-Server. Please try again." -msgstr "Impossibile collegarsi al server LDAP specificato. Ritentare." - -#: ../lib/config.inc:323 ../lib/config.inc:895 -msgid "Cannot open config file!" -msgstr "Impossibile aprire il file di configurazione!" - -#: ../templates/pdfedit/pdfpage.php:605 ../templates/pdfedit/pdfpage.php:611 -msgid "Change" -msgstr "Modifica" - -#: ../lib/modules/posixGroup.inc:155 -msgid "Change GID number of users and hosts" -msgstr "Modifica il GID di utenti e computer" - -#: ../templates/login.php:284 -msgid "Change Profile" -msgstr "Modifica il profilo" - -#: ../templates/lists/listhosts.php:243 ../templates/lists/listgroups.php:259 -#: ../templates/lists/listdomains.php:212 ../templates/lists/listusers.php:293 -msgid "Change Suffix" -msgstr "Modifica il suffisso" - -#: ../templates/config/profmanage.php:319 ../help/help.inc:116 -msgid "Change default profile" -msgstr "Modifica il profilo predefinito" - -#: ../templates/config/profmanage.php:339 ../help/help.inc:118 -msgid "Change master password" -msgstr "Modifica la password principale" - -#: ../help/help.inc:100 -msgid "Change password" -msgstr "Modifica la password" - -#: ../lib/baseModule.inc:540 -#, php-format -msgid "Changed value %s because only numeric values are allowed." -msgstr "Modificato il valore %s perché sono accettati solo valori numerici." - -#: ../lib/baseModule.inc:557 -msgid "Changed value because only ASCII characters are allowed." -msgstr "Modificato il valore perchè sono accettati solo caratteri ASCII." - -#: ../lib/config.inc:88 -msgid "Click here if you are not directed to the next page." -msgstr "Selezionare qui se non si è ridiretti alla pagina seguente." - -#: ../templates/schema/schema.php:205 -msgid "Collective" -msgstr "Collettivo" - -#: ../templates/masscreate.php:135 -msgid "Columns:" -msgstr "Colonne:" - -#: ../lib/modules/sambaAccount.inc:367 ../lib/modules/sambaSamAccount.inc:182 -msgid "" -"Comma separated list of Samba workstations the user is allowed to login. " -"Empty means every workstation." -msgstr "" -"Lista separata da virgole di computer Samba sui quali l'utente si può collegare. " -"Se vuota si può collegare su tutti i computer." - -#: ../help/help.inc:227 -msgid "Comma separated list of unix workstations the user is allowed to login." -msgstr "Lista separata da virgole di computer unix sui quali l'utente si può collegare. " - -#: ../lib/modules/inetOrgPerson.inc:123 -msgid "Common name" -msgstr "Nome" - -#: ../templates/login.php:119 -msgid "Configuration Login" -msgstr "Login di configurazione" - -#: ../templates/login.php:266 -msgid "Configuration profile" -msgstr "Profilo di configurazione" - -#: ../help/help.inc:46 ../help/help.inc:48 ../help/help.inc:60 -#: ../help/help.inc:66 ../help/help.inc:81 ../help/help.inc:86 -#: ../help/help.inc:88 ../help/help.inc:90 ../help/help.inc:95 -#: ../help/help.inc:100 ../help/help.inc:102 ../help/help.inc:104 -#: ../help/help.inc:106 ../help/help.inc:122 -msgid "Configuration wizard" -msgstr "Configrazione assistita" - -#: ../templates/config/confmodules.php:234 -msgid "Conflicting module:" -msgstr "Modulo in conflitto:" - -#: ../templates/config/profmanage.php:99 -msgid "Could not rename file!" -msgstr "Impossibile rinominare il file!" - -#: ../templates/initsuff.php:187 -msgid "Create" -msgstr "Crea" - -#: ../lib/modules.inc:746 -msgid "Create Account" -msgstr "Crea l'account" - -#: ../lib/modules.inc:764 -msgid "Create PDF file" -msgstr "Crea il file PDF" - -#: ../templates/lists/listgroups.php:277 -msgid "Create PDF for all groups" -msgstr "Crea il file PDF per tutti i gruppi" - -#: ../templates/lists/listhosts.php:262 -msgid "Create PDF for all hosts" -msgstr "Crea il file PDF per tutti i computer" - -#: ../templates/lists/listusers.php:325 -msgid "Create PDF for all users" -msgstr "Crea il file PDF per tutti gli utenti" - -#: ../templates/lists/listgroups.php:275 -msgid "Create PDF for selected group(s)" -msgstr "Crea il file PDF per i gruppi selezionati" - -#: ../templates/lists/listhosts.php:260 -msgid "Create PDF for selected host(s)" -msgstr "Crea il file PDF per i computer selezionati" - -#: ../templates/lists/listusers.php:323 -msgid "Create PDF for selected user(s)" -msgstr "Crea il file PDF per gli utenti selezionati" - -#: ../templates/pdfedit/pdfmain.php:109 -msgid "Create a new PDF structure for scope: " -msgstr "Crea una nuova struttura PDF per l'ambito:" - -#: ../templates/profedit/profilemain.php:119 -msgid "Create a new profile" -msgstr "Crea un nuovo profilo" - -#: ../lib/modules.inc:762 -msgid "Create another account" -msgstr "Crea un altro account" - -#: ../templates/masscreate.php:99 -msgid "Create group accounts" -msgstr "Crea un gruppo" - -#: ../lib/modules/posixAccount.inc:841 -msgid "Create home directory" -msgstr "Crea la home directory" - -#: ../templates/masscreate.php:102 -msgid "Create host accounts" -msgstr "Crea un account computer" - -#: ../lib/modules.inc:661 -msgid "Create new Account" -msgstr "Crea un nuovo account" - -#: ../templates/masscreate.php:96 -msgid "Create user accounts" -msgstr "Crea account utente" - -#: ../templates/config/profmanage.php:84 -msgid "Created new profile." -msgstr "Crea un nuovo profilo." - -#: ../templates/tools.php:70 -msgid "Creates accounts by uploading a CSV formated file." -msgstr "Crea account caricando un file in formato CVS." - -#: ../templates/delete.php:90 ../lib/modules.inc:1476 -msgid "DN" -msgstr "DN" - -#: ../templates/masscreate.php:138 -msgid "DN settings" -msgstr "Impostazioni DN" - -#: ../templates/masscreate.php:142 ../help/help.inc:131 -msgid "DN suffix" -msgstr "Suffisso DN" - -#: ../templates/massBuildAccounts.php:164 -msgid "Data field for RDN is empty!" -msgstr "Il campo RDN è vuoto!" - -#: ../lib/modules/sambaAccount.inc:350 ../lib/modules/sambaSamAccount.inc:165 -#: ../help/help.inc:195 -msgid "Date after the user is able to change his password. Format: DD-MM-YYYY" -msgstr "Data dopo la quale l'utente può cambiare la sua password. Formato: GG-MM-AAAA" - -#: ../lib/modules/sambaAccount.inc:352 ../lib/modules/sambaSamAccount.inc:167 -#: ../help/help.inc:197 -msgid "Date after the user must change his password. Format: DD-MM-YYYY" -msgstr "Data dopo la quale l'utente deve cambiare la sua password. Formato: GG-MM-AAAA" - -#: ../lib/modules/shadowAccount.inc:147 ../help/help.inc:165 -msgid "" -"Days before password is to expire that user is warned of pending password " -"expiration. If set value must be 0<." -msgstr "Giorni prima della scadenza della password per cui l'utente riceve un avvertimento di scadenza. Se impostato deve essere 0<." - -#: ../templates/config/confmain.php:328 ../lib/config.inc:341 -#: ../help/help.inc:88 -msgid "Default language" -msgstr "Linguaggio predefinito" - -#: ../templates/masscreate.php:147 ../templates/masscreate.php:302 -msgid "Default value" -msgstr "Valore predefinito" - -#: ../templates/domain.php:218 ../templates/delete.php:104 -msgid "Delete" -msgstr "Cancella" - -#: ../templates/delete.php:75 ../templates/delete.php:122 -msgid "Delete Account" -msgstr "Cancella il(gli) account" - -#: ../templates/lists/listdomains.php:219 -msgid "Delete Domain(s)" -msgstr "Cancella il(i) dominio(i)" - -#: ../templates/lists/listgroups.php:266 -msgid "Delete Group(s)" -msgstr "Cancella il(i) gruppo(i)" - -#: ../templates/lists/listhosts.php:251 -msgid "Delete Host(s)" -msgstr "Cancella il(i) gruppo(i)" - -#: ../templates/pdfedit/pdfdelete.php:48 ../templates/pdfedit/pdfmain.php:133 -msgid "Delete PDF structure" -msgstr "Cancella la struttura PDF" - -#: ../templates/domain.php:209 -msgid "Delete domain(s)" -msgstr "Cancella il(i) dominio(i)" - -#: ../lib/modules/posixAccount.inc:873 -msgid "Delete home directory" -msgstr "Cancella la home directory" - -#: ../templates/pdfedit/pdfdelete.php:68 -#: ../templates/profedit/profiledelete.php:70 -msgid "Delete operation canceled." -msgstr "Operazione di cancellazione annullata" - -#: ../templates/ou_edit.php:357 ../templates/ou_edit.php:390 -#: ../templates/ou_edit.php:423 ../templates/ou_edit.php:456 -#: ../help/help.inc:237 -msgid "Delete organizational unit" -msgstr "Cancella l'unità organizzativa" - -#: ../templates/config/profmanage.php:248 -#: ../templates/profedit/profiledelete.php:52 -#: ../templates/profedit/profilemain.php:145 ../help/help.inc:112 -msgid "Delete profile" -msgstr "Cancella il profilo" - -#: ../templates/lists/listusers.php:314 -msgid "Delete user(s)" -msgstr "Cancella il(gli) utente(i)" - -#: ../lib/modules/sambaGroupMapping.inc:56 -msgid "Deleted Account" -msgstr "Account cancellato" - -#: ../templates/delete.php:225 -#, php-format -msgid "Deleted DN: %s" -msgstr "Cancellato DN: %s" - -#: ../templates/pdfedit/pdfdelete.php:59 -msgid "Deleted PDF structure:" -msgstr "Cancellata la struttura PDF:" - -#: ../templates/profedit/profiledelete.php:62 -msgid "Deleted profile:" -msgstr "Cancellato il profilo:" - -#: ../templates/delete.php:129 -msgid "Deleting. Please stand by ..." -msgstr "Cancellazione in corso. Per favore attendere..." - -#: ../templates/schema/schema.php:95 ../templates/schema/schema.php:149 -#: ../templates/schema/schema.php:352 ../lib/modules/account.inc:73 -#: ../lib/modules/account.inc:157 ../lib/modules/account.inc:174 -#: ../lib/modules/posixGroup.inc:131 ../lib/modules/posixGroup.inc:329 -#: ../lib/modules/posixGroup.inc:371 ../lib/modules/sambaAccount.inc:883 -#: ../lib/modules/sambaSamAccount.inc:999 ../lib/modules/posixAccount.inc:270 -#: ../lib/modules/sambaGroupMapping.inc:301 -#: ../lib/modules/shadowAccount.inc:342 ../lib/modules/inetOrgPerson.inc:143 -#: ../lib/modules/inetOrgPerson.inc:401 ../lib/modules/inetOrgPerson.inc:469 -#: ../lib/lists.inc:302 -msgid "Description" -msgstr "Descrizione" - -#: ../lib/modules/sambaAccount.inc:198 ../lib/modules/sambaAccount.inc:319 -#: ../lib/modules/sambaAccount.inc:875 ../lib/modules/sambaSamAccount.inc:134 -#: ../lib/modules/sambaSamAccount.inc:214 -#: ../lib/modules/sambaSamAccount.inc:991 -#: ../lib/modules/sambaGroupMapping.inc:159 -#: ../lib/modules/sambaGroupMapping.inc:267 -#: ../lib/modules/sambaGroupMapping.inc:299 ../help/help.inc:176 -msgid "Display name" -msgstr "Nome visualizzato" - -#: ../lib/modules.inc:471 -msgid "" -"Displayed account numbers start at \"0\". Add 2 to get the row in your " -"spreadsheet." -msgstr "I numeri degli account visualizzati iniziano da \"0\". Aggiungere 2 per ottenere la riga del foglio di calcolo." - -#: ../templates/domain.php:210 -msgid "Do you really want to delete domain(s):" -msgstr "Volete davvero cancellare il(i) dominio(i):" - -#: ../templates/ou_edit.php:87 ../templates/ou_edit.php:152 -#: ../templates/ou_edit.php:217 ../templates/ou_edit.php:282 -msgid "Do you really want to delete this OU?" -msgstr "Volete davvero cancellare questa OU?" - -#: ../templates/pdfedit/pdfdelete.php:77 -msgid "Do you really want to delete this PDF structure?" -msgstr "Volete davvero cancellare questa struttura PDF?" - -#: ../templates/profedit/profiledelete.php:80 -msgid "Do you really want to delete this profile?" -msgstr "Volete davvero cancellare questo profilo?" - -#: ../templates/delete.php:84 -msgid "Do you really want to remove the following accounts?" -msgstr "Volete davvero rimuovere i seguenti account?" - -#: ../lib/modules/sambaAccount.inc:155 ../lib/modules/sambaAccount.inc:300 -#: ../lib/modules/sambaAccount.inc:310 ../lib/modules/sambaAccount.inc:378 -#: ../lib/modules/sambaAccount.inc:817 ../lib/modules/sambaAccount.inc:826 -#: ../lib/modules/sambaAccount.inc:882 ../lib/modules/sambaSamAccount.inc:194 -#: ../lib/modules/sambaSamAccount.inc:207 -#: ../lib/modules/sambaSamAccount.inc:326 -#: ../lib/modules/sambaSamAccount.inc:803 -#: ../lib/modules/sambaSamAccount.inc:811 -#: ../lib/modules/sambaSamAccount.inc:926 -#: ../lib/modules/sambaSamAccount.inc:939 -#: ../lib/modules/sambaSamAccount.inc:998 -#: ../lib/modules/sambaGroupMapping.inc:53 -#: ../lib/modules/sambaGroupMapping.inc:187 -#: ../lib/modules/sambaGroupMapping.inc:279 -#: ../lib/modules/sambaGroupMapping.inc:321 ../help/help.inc:210 -#: ../help/help.inc:228 -msgid "Domain" -msgstr "Dominio" - -#: ../lib/modules/sambaAccount.inc:33 ../lib/modules/sambaAccount.inc:295 -#: ../lib/modules/sambaSamAccount.inc:33 -#: ../lib/modules/sambaGroupMapping.inc:40 -#: ../lib/modules/sambaGroupMapping.inc:253 -msgid "Domain Admins" -msgstr "Amministratori di dominio" - -#: ../lib/modules/sambaAccount.inc:35 ../lib/modules/sambaSamAccount.inc:34 -#: ../lib/modules/sambaGroupMapping.inc:45 -msgid "Domain Certificate Admins" -msgstr "Amministratori di dominio certificati" - -#: ../lib/modules/sambaAccount.inc:34 ../lib/modules/sambaAccount.inc:568 -#: ../lib/modules/sambaSamAccount.inc:34 -#: ../lib/modules/sambaSamAccount.inc:544 -#: ../lib/modules/sambaGroupMapping.inc:43 -msgid "Domain Computers" -msgstr "Computer del dominio" - -#: ../lib/modules/sambaAccount.inc:35 ../lib/modules/sambaSamAccount.inc:34 -#: ../lib/modules/sambaGroupMapping.inc:44 -msgid "Domain Controllers" -msgstr "Controllori di dominio" - -#: ../lib/modules/sambaAccount.inc:36 ../lib/modules/sambaSamAccount.inc:35 -#: ../lib/modules/sambaGroupMapping.inc:47 -msgid "Domain Enterprise Admins" -msgstr "Amministratori di dominio enterprise" - -#: ../lib/modules/sambaGroupMapping.inc:52 -#: ../lib/modules/sambaGroupMapping.inc:179 -msgid "Domain Group" -msgstr "Gruppi del dominio" - -#: ../lib/modules/sambaAccount.inc:34 ../lib/modules/sambaSamAccount.inc:33 -#: ../lib/modules/sambaGroupMapping.inc:42 -msgid "Domain Guests" -msgstr "Ospiti del dominio" - -#: ../lib/modules/sambaAccount.inc:37 ../lib/modules/sambaSamAccount.inc:35 -#: ../lib/modules/sambaGroupMapping.inc:48 -msgid "Domain Policy Admins" -msgstr "Amministratori delle policy del dominio" - -#: ../templates/lists/listdomains.php:101 ../templates/domain.php:104 -#: ../help/help.inc:243 -msgid "Domain SID" -msgstr "SID del dominio" - -#: ../lib/modules/sambaAccount.inc:36 ../lib/modules/sambaSamAccount.inc:35 -#: ../lib/modules/sambaGroupMapping.inc:46 -msgid "Domain Schema Admins" -msgstr "Amministratori dello schema del dominio" - -#: ../templates/domain.php:83 -msgid "Domain Settings" -msgstr "Impostazioni del dominio" - -#: ../lib/modules/sambaAccount.inc:33 ../lib/modules/sambaSamAccount.inc:33 -#: ../lib/modules/sambaGroupMapping.inc:41 -msgid "Domain Users" -msgstr "Utenti del dominio" - -#: ../lib/modules/sambaGroupMapping.inc:247 -msgid "Domain administrators" -msgstr "Amministratori del dominio" - -#: ../templates/domain.php:313 -msgid "Domain deleted successfully." -msgstr "Dominio cancellato correttamente." - -#: ../templates/domain.php:269 -msgid "Domain has been modified." -msgstr "Il dominio è stato modificato." - -#: ../templates/lists/listdomains.php:100 ../templates/domain.php:88 -#: ../lib/modules/sambaAccount.inc:57 ../help/help.inc:239 -msgid "Domain name" -msgstr "Nome del dominio" - -#: ../lib/modules/sambaAccount.inc:57 ../lib/modules/sambaAccount.inc:58 -msgid "" -"Domain name contains invalid characters. Valid characters are: a-z, A-Z, 0-9 " -"and -." -msgstr "Il nome del dominio contiene dei caratteri non validi. I caratteri ammessi sono: a-z, A-Z, 0-9 e -." - -#: ../templates/domain.php:242 -msgid "Domain name is invalid!" -msgstr "Il nome del dominio non è valido!" - -#: ../templates/config/confmain.php:188 ../lib/config.inc:336 -msgid "DomainSuffix" -msgstr "Suffisso del dominio" - -#: ../templates/config/confsave.php:121 -msgid "DomainSuffix is invalid!" -msgstr "Il suffisso del dominio non è valido!" - -#: ../templates/ou_edit.php:438 -msgid "Domains" -msgstr "Domini" - -#: ../templates/pdfedit/pdfpage.php:581 -msgid "Down" -msgstr "Giù" - -#: ../templates/masscreate.php:261 -msgid "Download sample CSV file" -msgstr "Scarica un file CVS di esempio" - -#: ../lib/modules/sambaAccount.inc:355 ../lib/modules/sambaSamAccount.inc:170 -msgid "Drive letter assigned on windows workstations as homedirectory." -msgstr "Lettera di disco assegnata sui computer windows come home directory." - -#: ../help/help.inc:201 -msgid "Driveletter assigned on windows workstations as homedirectory." -msgstr "Lettera di disco assegnata sui computer windows come home directory." - -#: ../lib/lists.inc:301 -msgid "E-Mail" -msgstr "E-Mail" - -#: ../templates/lists/listhosts.php:191 ../templates/lists/listgroups.php:191 -#: ../templates/lists/listdomains.php:173 ../templates/lists/listusers.php:241 -msgid "Edit" -msgstr "Modifica" - -#: ../templates/pdfedit/pdfmain.php:121 -msgid "Edit PDF structure" -msgstr "Modifica la struttura PDF" - -#: ../lib/modules/posixGroup.inc:135 ../lib/modules/posixAccount.inc:835 -msgid "Edit groups" -msgstr "Modifica i gruppi" - -#: ../templates/config/confmain.php:223 -msgid "Edit modules" -msgstr "Modifica i moduli" - -#: ../templates/profedit/profilemain.php:132 -msgid "Edit profile" -msgstr "Modifica il profilo" - -#: ../lib/modules/sambaAccount.inc:782 ../lib/modules/sambaSamAccount.inc:766 -msgid "Edit workstations" -msgstr "Modifica i computer" - -#: ../lib/modules/inetOrgPerson.inc:72 ../lib/modules/inetOrgPerson.inc:101 -#: ../lib/modules/inetOrgPerson.inc:155 ../lib/modules/inetOrgPerson.inc:239 -#: ../lib/modules/inetOrgPerson.inc:425 ../lib/modules/inetOrgPerson.inc:474 -msgid "Employee type" -msgstr "Tipo di dipendente" - -#: ../lib/modules/inetOrgPerson.inc:240 -msgid "Employee type: Contractor, Employee, Intern, Temp, External, ..." -msgstr "Tipo di dipendente: a contratto, a tempo indeterminato, consulente, ..." - -#: ../templates/login.php:312 -msgid "Empty Password submitted. Try again." -msgstr "è stata inserita una password vuota. Prova di nuovo." - -#: ../templates/login.php:151 -msgid "Enter Username and Password for Account" -msgstr "Inserire il nome utente e la password per l'account" - -#: ../templates/schema/schema.php:172 -msgid "Equality" -msgstr "Uguaglianza" - -#: ../templates/delete.php:231 -#, php-format -msgid "Error while deleting DN: %s" -msgstr "Errore cancellando il DN: %s" - -#: ../help/help.inc:123 -msgid "" -"Every account type needs exactly one base module. This module provides a " -"structural object class." -msgstr "Ogni tipo di account ha bisogno di un solo modulo base. Questo modulo fornisce una classe oggetto strutturale." - -#: ../help/help.inc:69 ../help/help.inc:84 -msgid "Example" -msgstr "Esempio" - -#: ../templates/masscreate.php:146 ../templates/masscreate.php:159 -#: ../templates/masscreate.php:298 -msgid "Example value" -msgstr "Valore di esempio" - -#: ../help/help.inc:51 ../help/help.inc:63 -msgid "Examples" -msgstr "Esempi" - -#: ../help/help.inc:180 -msgid "Expand suffix with primary groupname" -msgstr "Espandi il suffisso con il nome del gruppo primario" - -#: ../lib/modules/shadowAccount.inc:93 ../lib/modules/shadowAccount.inc:162 -#: ../lib/modules/shadowAccount.inc:194 ../lib/modules/shadowAccount.inc:317 -msgid "Expiration date" -msgstr "Data di scadenza" - -#: ../help/help.inc:172 -msgid "Expire date" -msgstr "Data di scadenza" - -#: ../templates/domain.php:287 -msgid "Failed to add domain!" -msgstr "Inserimento del dominio non riuscito!" - -#: ../templates/initsuff.php:149 -msgid "Failed to create entry!" -msgstr "Inserimento non riuscito!" - -#: ../templates/domain.php:270 -msgid "Failed to modify domain!" -msgstr "Modifica del dominio non riuscita!" - -#: ../lib/modules/inetOrgPerson.inc:60 ../lib/modules/inetOrgPerson.inc:191 -#: ../lib/modules/inetOrgPerson.inc:263 ../lib/modules/inetOrgPerson.inc:264 -#: ../lib/modules/inetOrgPerson.inc:449 ../lib/modules/inetOrgPerson.inc:480 -msgid "Fax number" -msgstr "Numero di fax" - -#: ../templates/tools.php:69 -msgid "File upload" -msgstr "Caricamento file" - -#: ../lib/modules/sambaAccount.inc:364 ../lib/modules/sambaSamAccount.inc:179 -#: ../help/help.inc:203 -msgid "" -"Filename and -path relative to netlogon-share which should be executed on " -"logon. $user and $group are replaced with user- and groupname." -msgstr "Nome file e percorso relativi alla convisione netlogon che dovrebbe essere eseguito al logon. $user e $group vengono sostituiti dal nome utente e gruppo." - -#: ../lib/lists.inc:211 -msgid "Filter" -msgstr "Filtro" - -#: ../lib/modules/inetOrgPerson.inc:52 ../lib/modules/inetOrgPerson.inc:130 -#: ../lib/modules/inetOrgPerson.inc:231 ../lib/modules/inetOrgPerson.inc:417 -#: ../lib/modules/inetOrgPerson.inc:472 ../lib/lists.inc:297 -#: ../help/help.inc:186 -msgid "First name" -msgstr "Nome" - -#: ../lib/modules/inetOrgPerson.inc:52 ../lib/modules/inetOrgPerson.inc:53 -msgid "First name contains invalid characters!" -msgstr "Il nome contiene dei caratteri non validi!" - -#: ../lib/modules/inetOrgPerson.inc:232 ../help/help.inc:187 -msgid "First name of user. Only letters, - and spaces are allowed." -msgstr "Nome dell'utente. Solo ammesse solo lettere, - e spazi." - -#: ../lib/modules/posixGroup.inc:128 ../lib/modules/posixGroup.inc:295 -#: ../lib/modules/posixGroup.inc:325 ../lib/modules/posixGroup.inc:350 -#: ../lib/modules/posixGroup.inc:369 ../lib/modules/posixGroup.inc:400 -#: ../lib/modules/posixAccount.inc:41 ../lib/modules/posixAccount.inc:996 -#: ../lib/modules/sambaGroupMapping.inc:297 ../lib/lists.inc:294 -#: ../lib/lists.inc:314 ../lib/lists.inc:333 ../help/help.inc:152 -msgid "GID number" -msgstr "GID" - -#: ../lib/modules/posixGroup.inc:400 -msgid "" -"GID number has changed. Please select checkbox to change GID number of users " -"and hosts." -msgstr "Il GID è cambiato. Selezionare la checkbox per cambiare il GID degli utenti e dei computer." - -#: ../lib/modules/posixAccount.inc:41 -#, php-format -msgid "" -"GID number has changed. To keep file ownership you have to run the following " -"command as root: 'find / -gid %s -uid %s -exec chgrp %s {} \\;'" -msgstr "Il GID è cambiato. Per mantenere la proprietà dei file dovete eseguire il seguente comando come root: find / -gid %s -uid %s -exec chgrp %s {} \\;'" - -#: ../lib/modules/posixGroup.inc:407 -msgid "GID number has to be a numeric value!" -msgstr "Il GID deve essere un valore numerico!" - -#: ../lib/modules/posixGroup.inc:251 -msgid "GID ranges for Unix groups" -msgstr "Gamma dei GID per i gruppi unix" - -#: ../lib/modules/account.inc:48 ../lib/modules/posixAccount.inc:226 -#: ../lib/modules/posixAccount.inc:258 ../lib/modules/posixAccount.inc:311 -#: ../lib/modules/posixAccount.inc:343 ../lib/modules/posixAccount.inc:824 -#: ../lib/modules/posixAccount.inc:997 ../lib/modules/inetOrgPerson.inc:223 -#: ../lib/modules/inetOrgPerson.inc:273 ../help/help.inc:144 -#: ../help/help.inc:154 ../help/help.inc:162 -msgid "Gecos" -msgstr "Gecos" - -#: ../lib/modules/posixGroup.inc:139 ../lib/modules/posixAccount.inc:847 -msgid "Generate password" -msgstr "Genera una password" - -#: ../templates/schema/schema.php:134 ../templates/schema/schema.php:271 -#: ../templates/schema/schema.php:302 ../templates/schema/schema.php:327 -msgid "Go" -msgstr "Avanti" - -#: ../lib/modules/quota.inc:80 ../lib/modules/quota.inc:295 -msgid "Grace block period" -msgstr "Periodo di grazia per il blocco" - -#: ../lib/modules/quota.inc:81 -msgid "Grace block period. Most filesystems use a fixed maximum value of 7 days." -msgstr "Periodo di grazia per il blocco. Molti filesystem usano un valore fisso massimo di 7 giorni." - -#: ../lib/modules/quota.inc:97 -msgid "" -"Grace inode (files) period. Most filesystems use a fixed maximum value of 7 " -"days." -msgstr "Periodo di grazia per gli inode (file). Molti filesystem usano un valore fisso massimo di 7 giorni." - -#: ../lib/modules/quota.inc:96 ../lib/modules/quota.inc:299 -msgid "Grace inode period" -msgstr "Periodo di grazia per gli inode" - -#: ../lib/modules/posixGroup.inc:301 ../lib/lists.inc:317 -msgid "Group description" -msgstr "Descrizione del gruppo" - -#: ../lib/modules/posixGroup.inc:330 ../help/help.inc:155 -msgid "Group description. If left empty group name will be used." -msgstr "Descrizione del gruppo. Se lasciata vuota sarà utilizzato il nome del gruppo." - -#: ../lib/pdf.inc:454 -msgid "Group information page" -msgstr "Pagina delle informazioni sul gruppo" - -#: ../templates/config/confsave.php:131 -msgid "Group list attributes are invalid!" -msgstr "La lista degli attributi del gruppo non è valida!" - -#: ../lib/lists.inc:316 -msgid "Group member DNs" -msgstr "DN dei membri del gruppo" - -#: ../lib/modules/posixGroup.inc:134 ../lib/modules/posixGroup.inc:193 -#: ../lib/modules/posixGroup.inc:307 ../lib/modules/posixGroup.inc:333 -#: ../lib/modules/posixGroup.inc:337 ../lib/modules/posixGroup.inc:370 -#: ../lib/lists.inc:315 ../help/help.inc:174 ../help/help.inc:230 -msgid "Group members" -msgstr "Membri del gruppo" - -#: ../templates/config/confmodules.php:80 ../templates/config/confmain.php:220 -#: ../lib/config.inc:346 -msgid "Group modules" -msgstr "Moduli del gruppo" - -#: ../lib/modules/posixGroup.inc:287 ../lib/lists.inc:313 -msgid "Group name" -msgstr "Nome del gruppo" - -#: ../lib/modules/posixGroup.inc:322 ../help/help.inc:151 -msgid "" -"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." -msgstr "Nome del gruppo del gruppo che deve essere creato. I caratteri ammessi sono a-z, 0-9, -_. Lam non ammette un numero come primo carattere perché anche groupadd non lo permette. Lam non ammette lettere maiuscole A-Z perché possono causare diversi problemi. Se il nome del gruppo è già utilizzato verrà espanso come numero. Sarà utilizzato il prossimo numero libero." - -#: ../lib/modules/posixGroup.inc:313 ../lib/modules/posixGroup.inc:341 -msgid "Group password" -msgstr "Password di gruppo" - -#: ../templates/profedit/profilemain.php:46 -msgid "Group profiles" -msgstr "Profili del gruppo" - -#: ../help/help.inc:182 -msgid "Group suffix" -msgstr "Suffisso dei gruppi" - -#: ../lib/modules/sambaGroupMapping.inc:184 -msgid "Group type" -msgstr "Tipo del gruppo" - -#: ../templates/config/confmain.php:176 ../lib/config.inc:334 -msgid "GroupSuffix" -msgstr "Suffisso del gruppo" - -#: ../templates/config/confsave.php:111 -msgid "GroupSuffix is invalid!" -msgstr "Il suffisso del gruppo non è valido!" - -#: ../lib/modules/posixGroup.inc:125 ../lib/modules/posixGroup.inc:321 -#: ../lib/modules/posixGroup.inc:368 ../lib/modules/posixGroup.inc:408 -#: ../lib/modules/posixGroup.inc:409 ../lib/modules/posixGroup.inc:410 -#: ../help/help.inc:150 -msgid "Groupname" -msgstr "Nome del gruppo" - -#: ../lib/modules/posixGroup.inc:410 ../lib/modules/posixGroup.inc:411 -msgid "" -"Groupname contains invalid characters. Valid characters are: a-z, A-Z, 0-9 " -"and .-_ !" -msgstr "Il nome del gruppo contiene dei caratteri non validi. I caratteri ammessi sono: a-z, A-Z, 0-9 e .-_ !" - -#: ../lib/modules/posixGroup.inc:409 -msgid "Groupname in use. Selected next free groupname." -msgstr "Il nome del gruppo è già stato utilizzato. Selezionato il prossimo nome libero." - -#: ../templates/ou_edit.php:372 ../templates/main_header.php:80 -#: ../help/help.inc:76 -msgid "Groups" -msgstr "Gruppi" - -#: ../lib/modules/sambaAccount.inc:613 ../lib/modules/sambaAccount.inc:807 -#: ../lib/modules/sambaAccount.inc:810 ../lib/modules/sambaSamAccount.inc:589 -#: ../lib/modules/sambaSamAccount.inc:793 -#: ../lib/modules/sambaSamAccount.inc:796 -msgid "Guest" -msgstr "Ospite" - -#: ../lib/modules/quota.inc:422 -msgid "Hard block" -msgstr "Blocco hard" - -#: ../lib/modules/quota.inc:76 ../lib/modules/quota.inc:77 -#: ../lib/modules/quota.inc:294 ../lib/modules/quota.inc:351 -msgid "Hard block limit" -msgstr "Limite di blocco hard" - -#: ../lib/modules/quota.inc:422 -msgid "Hard inode" -msgstr "Hard inode" - -#: ../lib/modules/quota.inc:93 -msgid "Hard inode (files) limit" -msgstr "Limite hard degli inode (file)" - -#: ../lib/modules/quota.inc:92 ../lib/modules/quota.inc:298 -#: ../lib/modules/quota.inc:353 -msgid "Hard inode limit" -msgstr "Limite hard degli inode" - -#: ../templates/pdfedit/pdfpage.php:495 -msgid "Headline" -msgstr "Testata" - -#: ../templates/pdfedit/pdfpage.php:468 -msgid "Height" -msgstr "Altezza" - -#: ../templates/ou_edit.php:352 ../templates/ou_edit.php:365 -#: ../templates/ou_edit.php:385 ../templates/ou_edit.php:398 -#: ../templates/ou_edit.php:418 ../templates/ou_edit.php:431 -#: ../templates/ou_edit.php:451 ../templates/ou_edit.php:464 -#: ../templates/domain.php:96 ../templates/domain.php:112 -#: ../templates/domain.php:123 ../templates/domain.php:131 -#: ../templates/domain.php:139 ../templates/domain.php:151 -#: ../templates/domain.php:169 ../templates/masscreate.php:149 -#: ../templates/masscreate.php:161 ../templates/masscreate.php:306 -#: ../templates/config/profmanage.php:180 -#: ../templates/config/profmanage.php:227 -#: ../templates/config/profmanage.php:252 -#: ../templates/config/profmanage.php:281 -#: ../templates/config/profmanage.php:324 -#: ../templates/config/profmanage.php:347 -#: ../templates/config/profmanage.php:375 ../templates/config/confmain.php:162 -#: ../templates/config/confmain.php:172 ../templates/config/confmain.php:178 -#: ../templates/config/confmain.php:184 ../templates/config/confmain.php:190 -#: ../templates/config/confmain.php:208 ../templates/config/confmain.php:224 -#: ../templates/config/confmain.php:288 ../templates/config/confmain.php:294 -#: ../templates/config/confmain.php:300 ../templates/config/confmain.php:317 -#: ../templates/config/confmain.php:358 ../templates/config/confmain.php:373 -#: ../templates/config/confmain.php:378 ../templates/config/confmain.php:392 -#: ../templates/config/confmain.php:402 ../templates/config/confmain.php:468 -#: ../templates/config/conflogin.php:126 ../templates/pdfedit/pdfpage.php:811 -#: ../templates/profedit/profilepage.php:90 -#: ../templates/profedit/profilepage.php:129 -#: ../templates/profedit/profilepage.php:166 ../lib/modules.inc:869 -msgid "Help" -msgstr "Aiuto" - -#: ../templates/tools.php:91 -msgid "Here you can browse LDAP object classes and attributes." -msgstr "Qui è possibile esaminare le classi degli oggetti e gli attributi di LDAP." - -#: ../templates/masscreate.php:83 -msgid "Here you can create multiple accounts by providing a CSV file." -msgstr "Qui è possibile creare più account fornendo un file CSV." - -#: ../lib/lists.inc:218 -msgid "Here you can input small filters (e.g. 'value' or 'v*')." -msgstr "Qui possono essere inseriti piccoli filtri (es. 'valore' o 'v*')." - -#: ../templates/tools.php:54 -msgid "Here you can manage your account profiles." -msgstr "Qui è possibile gestire i profili degli account." - -#: ../help/help.inc:107 -msgid "Here you can select which plugins you want to use for account management." -msgstr "Qui è possibile selezionare quali plugin volete utilizzare per la gestione degli account." - -#: ../lib/modules/posixAccount.inc:334 ../help/help.inc:141 -msgid "Hold the CTRL-key to (de)select multiple groups." -msgstr "Tenere premuto il tasto CTRL per (de)selezionare più gruppi." - -#: ../lib/modules/posixAccount.inc:36 ../lib/modules/posixAccount.inc:64 -#: ../lib/modules/posixAccount.inc:65 ../lib/modules/posixAccount.inc:197 -#: ../lib/modules/posixAccount.inc:319 ../lib/modules/posixAccount.inc:714 -#: ../lib/modules/posixAccount.inc:837 ../lib/modules/posixAccount.inc:933 -#: ../lib/modules/posixAccount.inc:1000 ../lib/lists.inc:299 -#: ../help/help.inc:142 -msgid "Home directory" -msgstr "Home directory" - -#: ../lib/modules/posixAccount.inc:36 -#, php-format -msgid "" -"Home directory changed. To keep home directory you have to run the following " -"command as root: 'mv %s %s'" -msgstr "La home directory è cambiata. Per conservare la home directory è necessario eseguire il seguente comando come root: 'mv %s %s'" - -#: ../lib/modules/sambaAccount.inc:124 ../lib/modules/sambaAccount.inc:256 -#: ../lib/modules/sambaAccount.inc:354 ../lib/modules/sambaAccount.inc:769 -#: ../lib/modules/sambaAccount.inc:878 ../lib/modules/sambaSamAccount.inc:169 -#: ../lib/modules/sambaSamAccount.inc:272 -#: ../lib/modules/sambaSamAccount.inc:753 -#: ../lib/modules/sambaSamAccount.inc:891 -#: ../lib/modules/sambaSamAccount.inc:994 ../help/help.inc:200 -msgid "Home drive" -msgstr "Lettera del disco home" - -#: ../lib/modules/sambaAccount.inc:46 ../lib/modules/sambaAccount.inc:47 -#: ../lib/modules/sambaAccount.inc:130 ../lib/modules/sambaAccount.inc:262 -#: ../lib/modules/sambaAccount.inc:357 ../lib/modules/sambaAccount.inc:772 -#: ../lib/modules/sambaAccount.inc:877 ../lib/modules/sambaSamAccount.inc:44 -#: ../lib/modules/sambaSamAccount.inc:45 -#: ../lib/modules/sambaSamAccount.inc:172 -#: ../lib/modules/sambaSamAccount.inc:278 -#: ../lib/modules/sambaSamAccount.inc:756 -#: ../lib/modules/sambaSamAccount.inc:897 -#: ../lib/modules/sambaSamAccount.inc:993 ../help/help.inc:208 -msgid "Home path" -msgstr "Percorso della home" - -#: ../lib/modules/sambaAccount.inc:46 ../lib/modules/sambaSamAccount.inc:44 -#: ../lib/modules/sambaSamAccount.inc:46 -msgid "Home path is invalid." -msgstr "Il percorso della home non è valido." - -#: ../lib/modules/posixAccount.inc:64 ../lib/modules/posixAccount.inc:66 -msgid "Homedirectory contains invalid characters." -msgstr "La home directory contiene dei caratteri non validi." - -#: ../lib/lists.inc:331 -msgid "Host description" -msgstr "Descrizione del computer" - -#: ../lib/modules/account.inc:49 ../lib/modules/posixAccount.inc:344 -#: ../lib/modules/inetOrgPerson.inc:274 ../help/help.inc:163 -msgid "Host description. If left empty host name will be used." -msgstr "Descrizione del computer. Se lasciata vuota sarà utilizzato il nome del computer." - -#: ../lib/modules/account.inc:58 -msgid "Host list" -msgstr "Lista dei computer" - -#: ../templates/config/confsave.php:136 -msgid "Host list attributes are invalid!" -msgstr "Gli attributi della lista dei computer non sono validi!" - -#: ../templates/config/confmodules.php:81 ../templates/config/confmain.php:221 -#: ../lib/config.inc:347 -msgid "Host modules" -msgstr "Moduli dei computer" - -#: ../lib/modules/posixAccount.inc:237 ../lib/modules/posixAccount.inc:339 -#: ../lib/lists.inc:329 ../help/help.inc:156 -msgid "Host name" -msgstr "Nome del computer" - -#: ../lib/modules/posixAccount.inc:340 ../help/help.inc:157 -msgid "" -"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." -msgstr "Nome del computer per il computer che deve essere creato. I caratteri ammessi sono: a-z,0-9, .-_$. Lam non ammette un numero come primo carattere perché anche useradd non lo permette. Lam non ammette lettere maiuscole A-Z perché possono causare diversi problemi. I nomi dei computer terminano sempre con $. Se l'ultimo carattere non è $ verrà aggiunto. Se il nome del computer è già utilizzato verrà espanso come numero. Sarà utilizzato il prossimo numero libero." - -#: ../templates/profedit/profilemain.php:47 -msgid "Host profiles" -msgstr "Profili dei computer" - -#: ../lib/lists.inc:328 -msgid "Host username" -msgstr "Utenti del computer" - -#: ../templates/config/confmain.php:182 ../lib/config.inc:335 -msgid "HostSuffix" -msgstr "Suffisso dei computer" - -#: ../templates/config/confsave.php:116 -msgid "HostSuffix is invalid!" -msgstr "Il suffisso dei computer non è valido!" - -#: ../lib/modules/posixAccount.inc:78 ../lib/modules/posixAccount.inc:79 -#: ../lib/modules/posixAccount.inc:81 -msgid "Hostname" -msgstr "Nome del computer" - -#: ../lib/modules/posixAccount.inc:83 -msgid "" -"Hostname contains invalid characters. Valid characters are: a-z, A-Z, 0-9 " -"and .-_ !" -msgstr "Il nome del computer contiene dei caratteri non validi. I caratteri ammessi sono: a-z, A-Z, 0-9 e .-_ !" - -#: ../lib/modules/posixAccount.inc:79 -msgid "" -"Hostname contains invalid characters. Valid characters are: a-z, A-Z, 0-9 " -"and .-_ ! Hostname must end with $ !" -msgstr "Il nome del computer contiene dei caratteri non validi. I caratteri ammessi sono: a-z, A-Z, 0-9 e .-_ ! Il nome del computer deve terminare con $ !" - -#: ../lib/modules/posixAccount.inc:81 -msgid "Hostname in use. Selected next free hostname." -msgstr "Il nome del computer è già stato utilizzato. Selezionato il prossimo nome libero." - -#: ../templates/main_header.php:83 ../lib/modules/posixAccount.inc:59 -#: ../lib/modules/posixAccount.inc:60 ../lib/modules/posixAccount.inc:62 -#: ../lib/modules/posixAccount.inc:135 ../help/help.inc:79 -msgid "Hosts" -msgstr "Computer" - -#: ../lib/modules/posixGroup.inc:403 ../lib/modules/posixGroup.inc:534 -#: ../lib/modules/posixAccount.inc:69 ../lib/modules/posixAccount.inc:660 -msgid "ID is already in use" -msgstr "L'ID è già stato utilizzato" - -#: ../lib/modules/posixGroup.inc:401 ../lib/modules/posixGroup.inc:402 -#: ../lib/modules/posixGroup.inc:403 ../lib/modules/posixGroup.inc:530 -#: ../lib/modules/posixGroup.inc:534 ../lib/modules/posixAccount.inc:67 -#: ../lib/modules/posixAccount.inc:68 ../lib/modules/posixAccount.inc:69 -#: ../lib/modules/posixAccount.inc:656 ../lib/modules/posixAccount.inc:660 -msgid "ID-Number" -msgstr "ID" - -#: ../templates/masscreate.php:145 ../templates/masscreate.php:157 -#: ../templates/masscreate.php:290 -msgid "Identifier" -msgstr "Identificativo" - -#: ../help/help.inc:183 -msgid "" -"If a not yet existing group is defined in csv-file, a new group in the " -"selected group suffix will be created." -msgstr "Se nel file CSV viene definito un gruppo ancora non esistente, verrà creato un nuovo gruppo nel suffisso di gruppo selezionato." - -#: ../help/help.inc:215 -msgid "" -"If a not yet existing group is defined in csv-file, a new group with the " -"selected group profile will be created." -msgstr "Se nel file CSV viene definito un gruppo ancora non esistente, verrà creato un nuovo gruppo con il profilo di gruppo selezionato." - -#: ../lib/modules/sambaAccount.inc:326 ../lib/modules/sambaSamAccount.inc:141 -msgid "If checked Unix password will also be used as Samba password." -msgstr "Se selezionato la password unix sarà utilizzata anche come password Samba." - -#: ../lib/modules/sambaAccount.inc:344 ../lib/modules/sambaSamAccount.inc:159 -#: ../help/help.inc:199 -msgid "If checked account will be deactivated. (Setting D-Flag)" -msgstr "Se selezionato l'account sarà disabilitato. (Viene impostato il flag D)" - -#: ../lib/modules/posixGroup.inc:346 ../lib/modules/sambaAccount.inc:332 -#: ../lib/modules/sambaSamAccount.inc:147 ../lib/modules/posixAccount.inc:325 -#: ../help/help.inc:189 -msgid "If checked no password will be used." -msgstr "Se selezionato non sarà utilizzata nessuna password." - -#: ../lib/modules/sambaAccount.inc:338 ../lib/modules/sambaSamAccount.inc:153 -#: ../help/help.inc:193 -msgid "If checked password does not expire. (Setting X-Flag)" -msgstr "Se selezionato la password non ha una data di scadenza (Viene impostato il flag X)" - -#: ../help/help.inc:191 -msgid "If checked unix password will also be used as samba password." -msgstr "Se selezionato la password unix sarà utilizzata anche come password samba." - -#: ../lib/modules/posixGroup.inc:326 ../help/help.inc:153 -msgid "" -"If empty GID number will be generated automaticly depending on your " -"configuration settings." -msgstr "Se lasciato vuoto il GID sarà generato automaticamente a seconda delle vostre impostazioni di configurazione." - -#: ../lib/modules/posixAccount.inc:303 ../help/help.inc:139 -#: ../help/help.inc:159 -msgid "If empty UID number will be generated automaticly." -msgstr "Se lasciato vuoto il UID sarà generato automaticamente." - -#: ../help/help.inc:181 -msgid "" -"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." -msgstr "Se selezionato gli utenti saranno aggiunti con le OU espanse con il loro gruppo primario. Es. se un utente è nel gruppo admin il suffisso dell'utente sarà ou=admin,+suffisso utente." - -#: ../lib/modules/sambaAccount.inc:329 ../lib/modules/sambaSamAccount.inc:144 -msgid "If set to \"true\" Unix password will also be used as Samba password." -msgstr "Se impostato a \"true\" la password Unix sarà utilizzata anche come password Samba." - -#: ../lib/modules/sambaAccount.inc:347 ../lib/modules/sambaSamAccount.inc:162 -msgid "If set to \"true\" account will be deactivated. (Setting D-Flag)" -msgstr "Se impostato a \"true\" l'account sarà disabilitato. (Viene impostato il flag D)" - -#: ../lib/modules/sambaAccount.inc:335 ../lib/modules/sambaSamAccount.inc:150 -msgid "If set to \"true\" no password will be used." -msgstr "Se impostato a \"true\" non sarà utilizzata nessuna password." - -#: ../lib/modules/sambaAccount.inc:341 ../lib/modules/sambaSamAccount.inc:156 -msgid "If set to \"true\" password does not expire. (Setting X-Flag)" -msgstr "Se impostato a \"true\" la password non ha una data di scadenza (Viene impostato il flag X)" - -#: ../lib/modules/sambaSamAccount.inc:189 -msgid "If you leave this empty LAM will use: uidNumber*2 + sambaAlgorithmicRidBase." -msgstr "Se lasciato vuoto LAM utilizzerà: uidNumber*2 + sambaAlgorithmicRidBase." - -#: ../help/help.inc:101 -msgid "If you want to change the current preferences password, please enter it here." -msgstr "Se desiderate cambiare la password corrente per le preferenze, inserirla qui." - -#: ../help/help.inc:119 -msgid "" -"If you want to change your master configuration password, please enter it " -"here." -msgstr "Se desiderate cambiare la password principale di configurazione, inserirla qui." - -#: ../lib/modules/sambaAccount.inc:376 -msgid "" -"If you want to create domain administrators or other special users use this " -"option." -msgstr "Se desiderate creare degli amministratori di dominio o altri utenti speciali utilizzate questa opzione." - -#: ../lib/modules/sambaAccount.inc:370 -#: ../lib/modules/sambaGroupMapping.inc:272 ../help/help.inc:225 -msgid "If you want to use a well known RID you can selcet a well known group." -msgstr "Se volete utilizzate un RID noto potete selezionare un gruppo noto." - -#: ../templates/schema/schema.php:402 ../templates/schema/schema.php:423 -msgid "Inherited from" -msgstr "Ereditato da" - -#: ../templates/schema/schema.php:163 ../templates/schema/schema.php:359 -msgid "Inherits from" -msgstr "Eredita da" - -#: ../lib/modules/quota.inc:33 -msgid "Inode hard quota" -msgstr "Hard quota degli inode" - -#: ../lib/modules/quota.inc:33 -msgid "" -"Inode hard quota contains invalid characters. Only natural numbers are " -"allowed." -msgstr "La hard quota degli inode contiene dei caratteri non validi. Sono amessi solo numeri naturali." - -#: ../lib/modules/quota.inc:35 -msgid "Inode quota" -msgstr "Quota degli inode" - -#: ../lib/modules/quota.inc:32 -msgid "Inode soft quota" -msgstr "Soft quota degli inode" - -#: ../lib/modules/quota.inc:32 -msgid "" -"Inode soft quota contains invalid characters. Only natural numbers are " -"allowed." -msgstr "La soft quota degli inode contiene dei caratteri non validi. Sono ammessi solo numeri naturali." - -#: ../lib/modules/quota.inc:35 -msgid "Inode soft quota must be smaller than inode hard quota." -msgstr "La soft quota degli inode deve essere più piccola della hard quota degli inode." - -#: ../lib/modules/sambaAccount.inc:47 ../lib/modules/sambaAccount.inc:48 -#: ../lib/modules/sambaSamAccount.inc:45 -msgid "Inserted user- or groupname in HomePath." -msgstr "Inserito il nome dell'utente o del gruppo nel percorso della home." - -#: ../lib/modules/sambaAccount.inc:53 -msgid "Inserted user- or groupname in logon script." -msgstr "Inserito il nome dell'utente o del gruppo nello script di logon." - -#: ../lib/modules/sambaAccount.inc:50 ../lib/modules/sambaAccount.inc:51 -#: ../lib/modules/sambaSamAccount.inc:48 -msgid "Inserted user- or groupname in profilepath." -msgstr "Inserito il nome dell'utente o del gruppo nel percorso del profilo." - -#: ../lib/modules/sambaSamAccount.inc:51 -msgid "Inserted user- or groupname in scriptpath." -msgstr "Inserito il nome dell'utente o del gruppo nel percorso dell script." - -#: ../lib/modules/sambaGroupMapping.inc:57 -msgid "Invalid Account" -msgstr "Account non valido" - -#: ../lib/modules/posixGroup.inc:148 ../lib/modules/posixAccount.inc:856 -msgid "Invalid password" -msgstr "Password non valida" - -#: ../lib/status.inc:61 -msgid "Invalid/Missing Message type" -msgstr "Tipo di messaggio non valido o mancante" - -#: ../lib/modules/posixGroup.inc:401 ../lib/modules/posixAccount.inc:68 -msgid "" -"It is possible that this ID-number is reused. This can cause several " -"problems because files with old permissions might still exist. To avoid this " -"warning set maxUID to a higher value." -msgstr "è possibile che questo ID venga riutilizzato. Questo può causare diversi problemi perchè potrebbero esistere ancora dei file i vecchi permessi. Per evitare questo impostare maxUID ad un valore più alto." - -#: ../lib/modules/inetOrgPerson.inc:70 ../lib/modules/inetOrgPerson.inc:97 -#: ../lib/modules/inetOrgPerson.inc:149 ../lib/modules/inetOrgPerson.inc:227 -#: ../lib/modules/inetOrgPerson.inc:413 ../lib/modules/inetOrgPerson.inc:471 -msgid "Job title" -msgstr "Titolo di lavoro" - -#: ../lib/modules/inetOrgPerson.inc:228 -msgid "Job title of user: President, department manager, ..." -msgstr "Titolo di lavoro dell'utente: presidente, direttore di dipartimento, ..." - -#: ../templates/schema/schema.php:261 -msgid "Jump to a matching rule" -msgstr "Vai ad una regola corrispondente" - -#: ../templates/schema/schema.php:120 -msgid "Jump to an attribute type" -msgstr "Vai ad un tipo di attributo" - -#: ../templates/schema/schema.php:314 ../templates/schema/schema.php:364 -#: ../templates/schema/schema.php:379 -msgid "Jump to an object class" -msgstr "Vai ad una classe di oggetti" - -#: ../lib/status.inc:60 -msgid "LAM Internal Error" -msgstr "Errore interno di LAM" - -#: ../templates/massBuildAccounts.php:188 -msgid "LAM has checked your input and is now ready to create the accounts." -msgstr "LAM ha controllato i vostri dati ed è ora pronto per creare gli account." - -#: ../lib/modules/posixGroup.inc:355 ../lib/modules/posixAccount.inc:299 -msgid "" -"LAM supports CRYPT, SHA, SSHA, MD5 and SMD5 to generate the hash value of " -"passwords. 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." -msgstr "LAM supporta CRYPT, SHA, SSHA, MD5 e SMD5 per generare i valori has delle password. SSHA e CRYPT sono i più comuni ma CRYPT non supporta password più lunghe di 8 caratteri. Non raccomandiamo di utilizzare password in chiaro." - -#: ../templates/massDoUpload.php:82 -#, php-format -msgid "LAM was unable to create account %s! An LDAP error occured." -msgstr "LAM non è stato in grado di creare l'account %s! Si è verificato un errore LDAP." - -#: ../lib/modules/sambaGroupMapping.inc:359 -msgid "LAM was unable to find a Samba 3 domain with this name!" -msgstr "LAM non è riuscito a trovare un dominio Samba 3 con questo nome!" - -#: ../lib/modules/sambaSamAccount.inc:70 -msgid "LAM was unable to find a domain with this name!" -msgstr "LAM non è riuscito a trovare un dominio con questo nome!" - -#: ../lib/modules/posixAccount.inc:84 -msgid "LAM was unable to find a group with this name!" -msgstr "LAM non è riuscito a trovare un gruppo con questo nome!" - -#: ../lib/modules/posixAccount.inc:1276 -#, php-format -msgid "LAM was unable to modify group memberships for group: %s" -msgstr "LAM non è riuscito a modificare l'appartenenza al gruppo per il gruppo: %s" - -#: ../templates/config/confmodules.php:67 ../templates/config/confsave.php:74 -#: ../templates/config/confmain.php:145 -msgid "LDAP Account Manager Configuration" -msgstr "Configurazione di LDAP Account Manager" - -#: ../templates/config/confmain.php:281 -msgid "LDAP List settings" -msgstr "Impostazioni lista LDAP" - -#: ../templates/lists/listhosts.php:134 ../templates/lists/listgroups.php:134 -#: ../templates/lists/listdomains.php:130 ../templates/lists/listusers.php:163 -msgid "LDAP Search failed! Please check your preferences." -msgstr "Ricerca LDAP fallita! Per favore controllate le vostre preferenze." - -#: ../templates/login.php:354 -msgid "LDAP error, server says:" -msgstr "Errore LDAP, il server ha risposto:" - -#: ../lib/modules.inc:758 -msgid "LDAP operation successful." -msgstr "Operazione LDAP completata con successo." - -#: ../templates/login.php:258 -msgid "LDAP server" -msgstr "Server LDAP" - -#: ../templates/lists/listhosts.php:121 ../templates/lists/listgroups.php:121 -#: ../templates/lists/listdomains.php:119 ../templates/lists/listusers.php:149 -msgid "LDAP sizelimit exceeded, not all entries are shown." -msgstr "Limite di dimensione LDAP raggiunto, non tutti i risultati saranno visualizzati." - -#: ../templates/profedit/profilepage.php:85 -#: ../templates/profedit/profilepage.php:86 -msgid "LDAP suffix" -msgstr "Suffisso LDAP" - -#: ../templates/massDoUpload.php:117 -msgid "LDAP upload has finished" -msgstr "Caricamento LDAP terminato" - -#: ../templates/massDoUpload.php:66 -msgid "LDAP upload in progress. Please wait." -msgstr "Caricamento LDAP in corso. Per favore attendere." - -#: ../templates/config/confsave.php:147 -msgid "Language is not defined!" -msgstr "Linguaggio non definito!" - -#: ../templates/config/confmain.php:323 -msgid "Language settings" -msgstr "Impostazioni linguaggio" - -#: ../lib/modules/inetOrgPerson.inc:54 ../lib/modules/inetOrgPerson.inc:136 -#: ../lib/modules/inetOrgPerson.inc:235 ../lib/modules/inetOrgPerson.inc:421 -#: ../lib/modules/inetOrgPerson.inc:473 ../lib/lists.inc:298 -#: ../help/help.inc:184 -msgid "Last name" -msgstr "Cognome" - -#: ../lib/modules/inetOrgPerson.inc:54 ../lib/modules/inetOrgPerson.inc:55 -msgid "Last name contains invalid characters!" -msgstr "Il cognome contiene dei caratteri non validi!" - -#: ../lib/modules/inetOrgPerson.inc:236 ../help/help.inc:185 -msgid "Last name of user. Only letters, - and spaces are allowed." -msgstr "Nome dell'utente. Sono accettati solo lettere, - e spazi." - -#: ../lib/modules/shadowAccount.inc:338 -msgid "Last password change" -msgstr "Ultimo cambiamento password" - -#: ../templates/pdfedit/pdfpage.php:535 -msgid "Left" -msgstr "Sinistra" - -#: ../help/help.inc:66 -msgid "List attributes" -msgstr "Lista attributi" - -#: ../help/help.inc:207 -msgid "" -"List of Samba workstations the user is allowed to login. Empty means every " -"workstation." -msgstr "Lista dei computer samba nei quali l'utente può eseguire il login. Vuota significa qualunque computer." - -#: ../templates/config/confsave.php:101 -msgid "List of admin users is empty or invalid!" -msgstr "La lista degli utenti amministratori è vuota o non valida!" - -#: ../templates/config/confmain.php:390 ../lib/config.inc:344 -msgid "List of valid users" -msgstr "Lista degli utenti validi" - -#: ../lib/modules.inc:737 ../lib/modules.inc:740 ../help/help.inc:178 -msgid "Load profile" -msgstr "Carica il profilo" - -#: ../lib/modules/sambaGroupMapping.inc:54 -msgid "Local Group" -msgstr "Gruppo locale" - -#: ../lib/modules/inetLocalMailRecipient.inc:60 -#: ../lib/modules/inetLocalMailRecipient.inc:210 -msgid "Local address" -msgstr "Indirizzo locale" - -#: ../lib/modules/inetLocalMailRecipient.inc:64 -#: ../lib/modules/inetLocalMailRecipient.inc:97 -#: ../lib/modules/inetLocalMailRecipient.inc:376 -msgid "Local address list" -msgstr "Lista indirizzi locali" - -#: ../lib/modules/posixGroup.inc:151 ../lib/modules/posixAccount.inc:218 -#: ../lib/modules/posixAccount.inc:859 ../lib/modules/posixAccount.inc:945 -msgid "Lock password" -msgstr "Blocca la password" - -#: ../templates/login.php:233 ../templates/config/conflogin.php:68 -#: ../help/help.inc:46 -msgid "Login" -msgstr "Login" - -#: ../lib/modules/posixAccount.inc:204 ../lib/modules/posixAccount.inc:329 -#: ../lib/modules/posixAccount.inc:863 ../lib/modules/posixAccount.inc:937 -#: ../lib/modules/posixAccount.inc:1002 ../lib/lists.inc:300 -#: ../help/help.inc:146 -msgid "Login shell" -msgstr "Shell di login" - -#: ../templates/pdfedit/pdfpage.php:434 -msgid "Logo" -msgstr "Logo" - -#: ../lib/modules/sambaSamAccount.inc:197 -#: ../lib/modules/sambaSamAccount.inc:316 -msgid "Logon hours" -msgstr "Ore di logon" - -#: ../lib/modules/sambaAccount.inc:52 ../lib/modules/sambaAccount.inc:53 -#: ../lib/modules/sambaAccount.inc:142 ../lib/modules/sambaAccount.inc:274 -#: ../lib/modules/sambaAccount.inc:363 ../lib/modules/sambaAccount.inc:778 -#: ../lib/modules/sambaAccount.inc:879 ../lib/modules/sambaSamAccount.inc:178 -#: ../lib/modules/sambaSamAccount.inc:290 -#: ../lib/modules/sambaSamAccount.inc:762 -#: ../lib/modules/sambaSamAccount.inc:909 -#: ../lib/modules/sambaSamAccount.inc:995 -msgid "Logon script" -msgstr "Script di logon" - -#: ../lib/modules/sambaAccount.inc:52 ../lib/modules/sambaAccount.inc:54 -#: ../lib/modules/sambaSamAccount.inc:52 -msgid "Logon script is invalid!" -msgstr "Lo script di logon non è valido!" - -#: ../templates/main_header.php:65 ../templates/logout.php:60 -msgid "Logout" -msgstr "Scollegarsi" - -#: ../lib/modules/ieee802device.inc:50 ../lib/modules/ieee802device.inc:56 -#: ../lib/modules/ieee802device.inc:67 ../lib/modules/ieee802device.inc:146 -msgid "MAC address" -msgstr "Indirizzo MAC" - -#: ../lib/modules/ieee802device.inc:60 ../lib/modules/ieee802device.inc:259 -msgid "MAC address list" -msgstr "Lista di indirizzi MAC" - -#: ../lib/modules/nisMailAlias.inc:54 -msgid "Mail aliases" -msgstr "Alias mail" - -#: ../lib/modules/inetLocalMailRecipient.inc:50 -msgid "Mail routing" -msgstr "Instradamento mail" - -#: ../lib/modules/inetLocalMailRecipient.inc:68 -#: ../lib/modules/inetLocalMailRecipient.inc:74 -#: ../lib/modules/inetLocalMailRecipient.inc:103 -#: ../lib/modules/inetLocalMailRecipient.inc:204 -#: ../lib/modules/inetLocalMailRecipient.inc:379 -msgid "Mail server" -msgstr "Server di mail" - -#: ../lib/modules/nisMailAlias.inc:61 -msgid "Mails to this name are forwarded to the recipients." -msgstr "Le mail a questo nome vengono inoltrate ai destinatari." - -#: ../lib/modules.inc:681 ../lib/modules.inc:698 -msgid "Main" -msgstr "Principale" - -#: ../templates/config/conflogin.php:134 -msgid "Manage profiles" -msgstr "Gestione profili" - -#: ../templates/tools.php:77 -msgid "Manages OU objects in your LDAP tree." -msgstr "Gestisce gli oggetti OU nel vostro albero LDAP." - -#: ../templates/tools.php:62 -msgid "Manages Samba 3 domain accounts." -msgstr "Gestisce gli account di dominio Samba 3." - -#: ../templates/pdfedit/pdfpage.php:508 -msgid "Margin" -msgstr "Margine" - -#: ../templates/config/profmanage.php:368 -msgid "Master Password:" -msgstr "Password principale:" - -#: ../help/help.inc:120 -msgid "Master password" -msgstr "Password principale" - -#: ../templates/config/profmanage.php:68 -msgid "Master password is wrong!" -msgstr "La password principale è sbagliata!" - -#: ../templates/config/profmanage.php:128 -msgid "Master passwords are different or empty!" -msgstr "Le password principali sono diverse o vuote!" - -#: ../templates/schema/schema.php:274 -msgid "Matching rule OID" -msgstr "Regola corrispondente OID" - -#: ../templates/schema/schema.php:83 ../templates/schema/schema.php:84 -msgid "Matching rules" -msgstr "Regole corrispondenti" - -#: ../templates/config/confsave.php:141 -msgid "Max list entries is invalid!" -msgstr "Il numero massimo di valori nella lista non è valido!" - -#: ../templates/pdfedit/pdfpage.php:479 -msgid "Maximize with correct ratio" -msgstr "Massimizza con la scala corretta" - -#: ../lib/modules/posixGroup.inc:237 ../lib/modules/posixGroup.inc:405 -#: ../lib/modules/posixGroup.inc:406 -msgid "Maximum GID number" -msgstr "GID massimo" - -#: ../lib/modules/posixGroup.inc:254 -msgid "Maximum GID number for Unix groups" -msgstr "GID massimo per i gruppi Unix" - -#: ../lib/modules/posixGroup.inc:405 -msgid "Maximum GID number is invalid or empty!" -msgstr "Il GID massimo non è valido o vuoto!" - -#: ../lib/modules/posixGroup.inc:406 -msgid "Maximum GID number must be greater than minimum GID number!" -msgstr "Il GID massimo deve essere più grande del minimo!" - -#: ../lib/modules/posixAccount.inc:58 ../lib/modules/posixAccount.inc:60 -#: ../lib/modules/posixAccount.inc:61 ../lib/modules/posixAccount.inc:62 -#: ../lib/modules/posixAccount.inc:129 ../lib/modules/posixAccount.inc:138 -msgid "Maximum UID number" -msgstr "UID massimo" - -#: ../lib/modules/posixAccount.inc:159 -msgid "Maximum UID number for Unix accounts (hosts)" -msgstr "UID massimo per account Unix (computer)" - -#: ../lib/modules/posixAccount.inc:157 -msgid "Maximum UID number for Unix accounts (users)" -msgstr "UID massimo per account Unix (utenti)" - -#: ../lib/modules/posixAccount.inc:58 ../lib/modules/posixAccount.inc:60 -msgid "Maximum UID number is invalid!" -msgstr "Lo UID massimo non è valido!" - -#: ../lib/modules/posixAccount.inc:61 ../lib/modules/posixAccount.inc:62 -msgid "Maximum UID number must be greater than minimum UID number!" -msgstr "Lo UID massimo deve essere più grande del minimo!" - -#: ../templates/schema/schema.php:220 -msgid "Maximum length" -msgstr "Lunghezza massima" - -#: ../templates/config/confmain.php:307 ../lib/config.inc:340 -#: ../help/help.inc:86 -msgid "Maximum list entries" -msgstr "Numero massimo di valori nella lista" - -#: ../lib/modules/shadowAccount.inc:88 ../lib/modules/shadowAccount.inc:158 -#: ../lib/modules/shadowAccount.inc:188 ../lib/modules/shadowAccount.inc:310 -#: ../help/help.inc:168 -msgid "Maximum password age" -msgstr "Scadenza password massima" - -#: ../lib/modules/inetOrgPerson.inc:138 -msgid "Miller" -msgstr "Miller" - -#: ../lib/modules/posixGroup.inc:234 ../lib/modules/posixGroup.inc:404 -msgid "Minimum GID number" -msgstr "GID minimo" - -#: ../lib/modules/posixGroup.inc:253 -msgid "Minimum GID number for Unix groups" -msgstr "GID minimo per gruppi unix" - -#: ../lib/modules/posixGroup.inc:404 -msgid "Minimum GID number is invalid or empty!" -msgstr "Il GID minimo non è valido o vuoto!" - -#: ../lib/modules/posixAccount.inc:57 ../lib/modules/posixAccount.inc:59 -#: ../lib/modules/posixAccount.inc:126 ../lib/modules/posixAccount.inc:135 -msgid "Minimum UID number" -msgstr "UID minimo" - -#: ../lib/modules/posixAccount.inc:158 -msgid "Minimum UID number for Unix accounts (hosts)" -msgstr "UID minimo per account Unix (computer)" - -#: ../lib/modules/posixAccount.inc:156 -msgid "Minimum UID number for Unix accounts (users)" -msgstr "UID minimo per account Unix (utenti)" - -#: ../lib/modules/posixAccount.inc:57 ../lib/modules/posixAccount.inc:59 -msgid "Minimum UID number is invalid!" -msgstr "Lo UID minimo non è valido!" - -#: ../lib/modules/shadowAccount.inc:83 ../lib/modules/shadowAccount.inc:154 -#: ../lib/modules/shadowAccount.inc:182 ../lib/modules/shadowAccount.inc:307 -#: ../help/help.inc:170 -msgid "Minimum password age" -msgstr "Scadenza password minima" - -#: ../lib/modules/inetOrgPerson.inc:58 ../lib/modules/inetOrgPerson.inc:185 -#: ../lib/modules/inetOrgPerson.inc:259 ../lib/modules/inetOrgPerson.inc:260 -#: ../lib/modules/inetOrgPerson.inc:445 ../lib/modules/inetOrgPerson.inc:479 -msgid "Mobile number" -msgstr "Numero di cellulare" - -#: ../lib/modules.inc:660 ../lib/modules.inc:745 -msgid "Modify Account" -msgstr "Modifica l'account" - -#: ../templates/config/confmodules.php:75 -msgid "Module selection" -msgstr "Selezione modulo" - -#: ../lib/config.inc:348 -msgid "Module settings" -msgstr "Impostazioni modulo" - -#: ../lib/modules/quota.inc:64 ../lib/modules/quota.inc:291 -#: ../lib/modules/quota.inc:349 ../lib/modules/quota.inc:422 -msgid "Mountpoint" -msgstr "Punto di mount" - -#: ../lib/modules/quota.inc:65 -msgid "Mountpoint of device with enabled quotas." -msgstr "Punto di mount del device con le quota abilitate" - -#: ../lib/modules/inetOrgPerson.inc:175 -msgid "Mycity" -msgstr "Miacittà" - -#: ../lib/modules/inetOrgPerson.inc:163 -msgid "Mystreetname 42" -msgstr "Mioindirizzo 42" - -#: ../templates/schema/schema.php:274 ../templates/pdfedit/pdfdelete.php:56 -#: ../templates/pdfedit/pdfdelete.php:59 ../templates/pdfedit/pdfdelete.php:78 -msgid "Name" -msgstr "Nome" - -#: ../help/help.inc:130 -msgid "" -"Name under which the profile will be saved. If a profile with the same name " -"exists, it will be overwritten." -msgstr "Nome con il quale il profilo sarà salvato. Se esiste già un profilo con lo stesso nome sarà sovrascritto." - -#: ../templates/lists/listdomains.php:218 -msgid "New Domain" -msgstr "Nuovo dominio" - -#: ../templates/lists/listgroups.php:264 -msgid "New Group" -msgstr "Nuovo gruppo" - -#: ../templates/lists/listhosts.php:249 -msgid "New Host" -msgstr "Nuovo computer" - -#: ../lib/modules/ieee802device.inc:153 -msgid "New MAC address" -msgstr "Nuovo indirizzo MAC" - -#: ../templates/ou_edit.php:52 ../templates/ou_edit.php:117 -#: ../templates/ou_edit.php:182 ../templates/ou_edit.php:247 -msgid "New OU created successfully." -msgstr "Nuova OU creata correttamente." - -#: ../templates/config/confmain.php:399 -msgid "New Password" -msgstr "Nuova password" - -#: ../templates/config/profmanage.php:135 -msgid "New default profile set successfully." -msgstr "Nuovo profilo predefinito impostato correttamente." - -#: ../lib/modules/inetLocalMailRecipient.inc:217 -msgid "New local address" -msgstr "Nuovo indirizzo locale" - -#: ../templates/config/profmanage.php:343 -msgid "New master password" -msgstr "Nuova password principale" - -#: ../templates/config/profmanage.php:126 -msgid "New master password set successfully." -msgstr "Nuova password principale impostata correttamente." - -#: ../templates/ou_edit.php:344 ../templates/ou_edit.php:377 -#: ../templates/ou_edit.php:410 ../templates/ou_edit.php:443 -#: ../help/help.inc:235 -msgid "New organizational unit" -msgstr "Nuova unità organizzativa" - -#: ../templates/config/profmanage.php:116 -msgid "New password set successfully." -msgstr "Nuova password impostata correttamente." - -#: ../lib/modules/nisMailAlias.inc:182 -msgid "New recipient" -msgstr "Nuovo destinatario" - -#: ../templates/lists/listusers.php:312 -msgid "New user" -msgstr "Nuovo utente" - -#: ../templates/domain.php:135 ../help/help.inc:249 -msgid "Next Group RID" -msgstr "Prossimo RID gruppi" - -#: ../templates/domain.php:119 ../help/help.inc:245 -msgid "Next RID" -msgstr "Prossimo RID" - -#: ../templates/domain.php:249 -msgid "Next RID is not a number!" -msgstr "Il prossimo RID non è un numero!" - -#: ../help/help.inc:246 -msgid "Next RID to use when creating accounts." -msgstr "Prossimo RID da utilizzare per la creazione di account." - -#: ../help/help.inc:250 -msgid "Next RID to use when creating groups." -msgstr "Prossimo RID da utilizzare per la creazione di gruppi." - -#: ../help/help.inc:248 -msgid "Next RID to use when creating user accounts." -msgstr "Prossimo RID da utilizzare per la creazione di account utente." - -#: ../templates/domain.php:127 ../help/help.inc:247 -msgid "Next User RID" -msgstr "Prossimo RID utenti" - -#: ../templates/domain.php:251 -msgid "Next group RID is not a number!" -msgstr "Il prossimo RID gruppi non è un numero!" - -#: ../templates/domain.php:250 -msgid "Next user RID is not a number!" -msgstr "Il prossimo RID utenti non è un numero!" - -#: ../templates/schema/schema.php:159 ../templates/schema/schema.php:201 -#: ../templates/schema/schema.php:206 ../templates/schema/schema.php:211 -msgid "No" -msgstr "No" - -#: ../templates/lists/listdomains.php:124 -#: ../templates/lists/listdomains.php:130 -#: ../templates/lists/listdomains.php:134 -msgid "No Samba domains found!" -msgstr "Nessun dominio Samba trovato!" - -#: ../templates/initsuff.php:161 -msgid "No changes were made." -msgstr "Non è stata effettuata alcuna modifica." - -#: ../templates/config/conflogin.php:93 -msgid "No configuration profiles found. Please create one." -msgstr "Non è stato trovato nessun profilo di configurazione. Per favore crearne uno." - -#: ../templates/schema/schema.php:150 -msgid "No description" -msgstr "Nessuna descrizione" - -#: ../lib/modules/posixGroup.inc:402 ../lib/modules/posixAccount.inc:67 -msgid "No free ID-Number!" -msgstr "Non ci sono ID liberi!" - -#: ../lib/modules/posixAccount.inc:362 -msgid "No groups found in ldap." -msgstr "Non è stato trovato nessun gruppo in LDAP." - -#: ../templates/lists/listgroups.php:134 ../templates/lists/listgroups.php:140 -msgid "No groups found!" -msgstr "Non è stato trovato nessun gruppo!" - -#: ../templates/lists/listhosts.php:134 ../templates/lists/listhosts.php:140 -msgid "No hosts found!" -msgstr "Non è stato trovato nessun computer!" - -#: ../templates/pdfedit/pdfpage.php:409 -msgid "No logo" -msgstr "Nessun Logo" - -#: ../templates/config/confmodules.php:250 -msgid "No or more than one base module selected!" -msgstr "Non può essere selezionato più di un modulo base!" - -#: ../templates/config/confmain.php:96 -msgid "No password was entered!" -msgstr "Non è stata inserita nessuna password!" - -#: ../templates/pdfedit/pdfpage.php:73 -msgid "No section text specified" -msgstr "Non è stato inserito nessun testo di sezione" - -#: ../templates/pdfedit/pdfpage.php:77 -msgid "No static text specified" -msgstr "Non è stato inserito nessun testo statico" - -#: ../templates/schema/schema.php:443 -#, php-format -msgid "No such schema item: \"%s\"" -msgstr "Il seguente oggetto non è presente nello schema: \"%s\"" - -#: ../templates/lists/listusers.php:164 ../templates/lists/listusers.php:170 -msgid "No users found!" -msgstr "Non è stato trovato nessun utente!" - -#: ../help/help.inc:57 -msgid "Note" -msgstr "Nota" - -#: ../lib/modules/shadowAccount.inc:151 ../help/help.inc:167 -msgid "Number of days a user can login even his password has expired. -1=always." -msgstr "Numero di giorni per i quali un utente può collegarsi dopo la scadenza della password: -1 = sempre." - -#: ../lib/modules/shadowAccount.inc:155 ../help/help.inc:171 -msgid "" -"Number of days a user has to wait until he\\'s allowed to change his " -"password again. If set value must be 0<." -msgstr "Numoro di giorni per i quali un utente deve attendere prima di poter cambiare nuovamente la sua password. Se impostato il valore deve essere 0<" - -#: ../lib/modules/shadowAccount.inc:159 ../help/help.inc:169 -msgid "" -"Number of days after a user has to change his password again. If set value " -"must be 0<." -msgstr "Numero di giorni dopo i quali un utente deve cambiare la password di nuovo. Se impostato il valore deve essere 0<" - -#: ../templates/schema/schema.php:153 ../templates/schema/schema.php:350 -msgid "OID" -msgstr "OID" - -#: ../templates/ou_edit.php:58 ../templates/ou_edit.php:123 -#: ../templates/ou_edit.php:188 ../templates/ou_edit.php:253 -msgid "OU already exists!" -msgstr "La OU esiste già!" - -#: ../templates/ou_edit.php:69 ../templates/ou_edit.php:134 -#: ../templates/ou_edit.php:199 ../templates/ou_edit.php:264 -msgid "OU deleted successfully." -msgstr "OU cancellata correttamente!" - -#: ../templates/tools.php:76 -msgid "OU editor" -msgstr "Editor delle OU" - -#: ../templates/ou_edit.php:62 ../templates/ou_edit.php:127 -#: ../templates/ou_edit.php:192 ../templates/ou_edit.php:257 -msgid "OU is invalid!" -msgstr "La OU non è valida!" - -#: ../templates/ou_edit.php:99 ../templates/ou_edit.php:164 -#: ../templates/ou_edit.php:229 ../templates/ou_edit.php:294 -msgid "OU is not empty or invalid!" -msgstr "La OU non è vuota o non è valida!" - -#: ../help/help.inc:235 ../help/help.inc:237 -msgid "OU-Editor" -msgstr "Editor delle OU" - -#: ../templates/schema/schema.php:71 ../templates/schema/schema.php:72 -msgid "Object classes" -msgstr "Classi di oggetti" - -#: ../lib/cache.inc:79 ../lib/modules.inc:899 ../lib/modules.inc:937 -#: ../lib/modules.inc:1052 -#, php-format -msgid "ObjectClass %s required but not defined in LDAP." -msgstr "Classe dell'oggetto %s obbligatoria ma non definita in LDAP." - -#: ../templates/schema/schema.php:158 ../templates/schema/schema.php:289 -msgid "Obsolete" -msgstr "Obsoleto" - -#: ../templates/config/conflogin.php:123 ../templates/config/conflogin.php:124 -msgid "Ok" -msgstr "Ok" - -#: ../templates/schema/schema.php:390 -msgid "Optional attributes" -msgstr "Attributi opzionali" - -#: ../templates/schema/schema.php:177 -msgid "Ordering" -msgstr "Ordinamento" - -#: ../templates/tools.php:83 -msgid "PDF editor" -msgstr "Editor PDF" - -#: ../templates/lists/listhosts.php:254 ../templates/lists/listgroups.php:269 -#: ../templates/lists/listusers.php:317 ../templates/pdfedit/pdfpage.php:573 -msgid "PDF structure" -msgstr "Struttura PDF" - -#: ../templates/pdfedit/pdfmain.php:101 -msgid "PDF structures" -msgstr "Strutture PDF" - -#: ../templates/pdfedit/pdfpage.php:61 -msgid "PDF-structure name not valid" -msgstr "Nome della struttura PDF non valido" - -#: ../templates/pdfedit/pdfpage.php:429 -msgid "Page settings" -msgstr "Impostazioni pagina" - -#: ../templates/schema/schema.php:372 -msgid "Parent to" -msgstr "Padre di" - -#: ../templates/login.php:181 ../lib/modules/posixGroup.inc:137 -#: ../lib/modules/posixGroup.inc:397 ../lib/modules/posixGroup.inc:398 -#: ../lib/modules/posixGroup.inc:399 ../lib/modules/sambaAccount.inc:59 -#: ../lib/modules/sambaAccount.inc:60 ../lib/modules/sambaAccount.inc:204 -#: ../lib/modules/sambaSamAccount.inc:55 ../lib/modules/sambaSamAccount.inc:56 -#: ../lib/modules/sambaSamAccount.inc:220 ../lib/modules/posixAccount.inc:71 -#: ../lib/modules/posixAccount.inc:72 ../lib/modules/posixAccount.inc:73 -#: ../lib/modules/posixAccount.inc:212 ../lib/modules/posixAccount.inc:845 -#: ../lib/modules/posixAccount.inc:1001 -msgid "Password" -msgstr "Password" - -#: ../templates/config/confsave.php:240 -msgid "Password changed!" -msgstr "Password modificata!" - -#: ../lib/modules/posixGroup.inc:398 ../lib/modules/sambaAccount.inc:60 -#: ../lib/modules/sambaAccount.inc:61 ../lib/modules/sambaSamAccount.inc:56 -#: ../lib/modules/sambaSamAccount.inc:57 ../lib/modules/posixAccount.inc:72 -#: ../lib/modules/posixAccount.inc:74 -msgid "" -"Password contains invalid characters. Valid characters are: a-z, A-Z, 0-9 " -"and #*,.;:_-+!$%&/|?{[()]}= !" -msgstr "La password contiene dei caratteri non validi. I caratteri validi sono: a-z, A-Z, 0-9 e #*,.;:_-+!$%&/|?{[()]}= !" - -#: ../lib/modules/sambaAccount.inc:110 ../lib/modules/sambaAccount.inc:226 -#: ../lib/modules/sambaAccount.inc:337 ../lib/modules/sambaAccount.inc:340 -#: ../lib/modules/sambaAccount.inc:743 ../lib/modules/sambaSamAccount.inc:152 -#: ../lib/modules/sambaSamAccount.inc:155 -#: ../lib/modules/sambaSamAccount.inc:242 -#: ../lib/modules/sambaSamAccount.inc:727 -#: ../lib/modules/sambaSamAccount.inc:877 ../help/help.inc:192 -msgid "Password does not expire" -msgstr "La password non scade" - -#: ../lib/modules/shadowAccount.inc:43 ../lib/modules/shadowAccount.inc:78 -#: ../lib/modules/shadowAccount.inc:150 ../lib/modules/shadowAccount.inc:176 -#: ../lib/modules/shadowAccount.inc:304 ../lib/modules/shadowAccount.inc:341 -msgid "Password expiration" -msgstr "Scadenza password" - -#: ../lib/modules/shadowAccount.inc:43 ../lib/modules/shadowAccount.inc:44 -msgid "Password expiration must be are natural number or -1." -msgstr "La scadenza password deve essere un numero naturale o -1" - -#: ../help/help.inc:166 -msgid "Password expire" -msgstr "La password scade" - -#: ../lib/modules/posixGroup.inc:241 ../lib/modules/posixGroup.inc:354 -#: ../lib/modules/posixAccount.inc:144 ../lib/modules/posixAccount.inc:298 -msgid "Password hash type" -msgstr "Tipo di codifica della password" - -#: ../lib/modules/posixAccount.inc:160 -msgid "Password hash type for Unix accounts" -msgstr "Tipo di codifica della password per gli account Unix" - -#: ../lib/modules/posixGroup.inc:255 -msgid "Password hash type for Unix groups" -msgstr "Tipo di codifica della password per i gruppi Unix" - -#: ../lib/modules/shadowAccount.inc:41 ../lib/modules/shadowAccount.inc:47 -msgid "Password maxage" -msgstr "Età massima della password" - -#: ../lib/modules/shadowAccount.inc:41 ../lib/modules/shadowAccount.inc:42 -msgid "Password maximum age must be are natural number." -msgstr "L'età massima della password deve essere un numero naturale." - -#: ../lib/modules/shadowAccount.inc:47 ../lib/modules/shadowAccount.inc:48 -msgid "Password maximum age must be bigger as password minimum age." -msgstr "L'età massima della password deve essere più grande dell'età minima." - -#: ../lib/modules/shadowAccount.inc:39 -msgid "Password minage" -msgstr "Età minima della password" - -#: ../lib/modules/shadowAccount.inc:39 ../lib/modules/shadowAccount.inc:40 -msgid "Password minimum age must be are natural number." -msgstr "L'età minima della password deve essere un numero naturale." - -#: ../help/help.inc:164 -msgid "Password warn" -msgstr "Avvertimento password" - -#: ../lib/modules/shadowAccount.inc:45 ../lib/modules/shadowAccount.inc:73 -#: ../lib/modules/shadowAccount.inc:146 ../lib/modules/shadowAccount.inc:170 -#: ../lib/modules/shadowAccount.inc:301 ../lib/modules/shadowAccount.inc:339 -msgid "Password warning" -msgstr "Avvertimento password" - -#: ../lib/modules/shadowAccount.inc:45 ../lib/modules/shadowAccount.inc:46 -msgid "Password warning must be are natural number." -msgstr "L'avvertimento password deve essere un numero naturale." - -#: ../templates/config/confsave.php:234 -msgid "Passwords are different!" -msgstr "Le password sono diverse!" - -#: ../lib/modules/sambaAccount.inc:361 ../lib/modules/sambaSamAccount.inc:176 -#: ../help/help.inc:205 -msgid "" -"Path of the user profile. Can be a local absolute path or a UNC-path (\\" -"\\server\\share). $user and $group are replaced with user- and groupname." -msgstr "Percorso del profilo utente. Può essere un percorso locale assoluto o un percorso UNC (\\server\\share). $user e $group vengono sostituiti con il nome dell'utente e del gruppo." - -#: ../templates/config/confmain.php:375 ../lib/config.inc:342 -msgid "Path to external script" -msgstr "Percorso per lo script esterno" - -#: ../lib/modules/inetOrgPerson.inc:87 -msgid "Personal" -msgstr "Personale" - -#: ../templates/delete.php:81 -msgid "Please confirm:" -msgstr "Per favore confermare:" - -#: ../lib/modules/sambaSamAccount.inc:60 -msgid "Please enter a RID number or the name of a special account!" -msgstr "Per favore inserire un RID o il nome di un account speciale!" - -#: ../lib/modules/sambaAccount.inc:55 ../lib/modules/sambaAccount.inc:56 -#: ../lib/modules/sambaSamAccount.inc:53 ../lib/modules/sambaSamAccount.inc:54 -msgid "Please enter a comma separated list of host names!" -msgstr "Per favore inserire una lista di computer separati da virgola!" - -#: ../lib/modules/inetOrgPerson.inc:74 -msgid "Please enter a valid common name!" -msgstr "Per favore inserire un nome valido!" - -#: ../lib/modules/sambaAccount.inc:69 ../lib/modules/sambaAccount.inc:70 -#: ../lib/modules/sambaSamAccount.inc:67 ../lib/modules/sambaSamAccount.inc:68 -msgid "Please enter a valid date in format DD-MM-YYYY." -msgstr "Per favore inserire una data valida nel formato GG-MM-AAAA." - -#: ../lib/modules/sambaAccount.inc:64 ../lib/modules/sambaSamAccount.inc:62 -msgid "Please enter a valid display name!" -msgstr "Per favore inserire un nome visualizzato valido!" - -#: ../lib/modules/sambaAccount.inc:71 ../lib/modules/sambaSamAccount.inc:69 -msgid "Please enter a valid drive letter." -msgstr "Per favore inserire una lettera di disco valida." - -#: ../lib/modules/inetOrgPerson.inc:62 ../lib/modules/inetOrgPerson.inc:63 -msgid "Please enter a valid eMail address!" -msgstr "Per favore inserire un indirizzo eMail valido!" - -#: ../lib/modules/inetOrgPerson.inc:72 ../lib/modules/inetOrgPerson.inc:73 -msgid "Please enter a valid employee type!" -msgstr "Per favore inserire un tipo di dipendente valido!" - -#: ../lib/modules/inetOrgPerson.inc:60 ../lib/modules/inetOrgPerson.inc:61 -msgid "Please enter a valid fax number!" -msgstr "Per favore inserire un numero di fax valido!" - -#: ../lib/modules/sambaAccount.inc:72 -msgid "Please enter a valid group RID." -msgstr "Per favore inserire un RID di gruppo valido." - -#: ../lib/modules/sambaSamAccount.inc:72 -msgid "Please enter a valid group name!" -msgstr "Per favore inserire un nome di gruppo valido!" - -#: ../lib/modules/inetOrgPerson.inc:70 ../lib/modules/inetOrgPerson.inc:71 -msgid "Please enter a valid job title!" -msgstr "Per favore inserire un titolo di lavoro valido!" - -#: ../lib/modules/inetOrgPerson.inc:58 ../lib/modules/inetOrgPerson.inc:59 -msgid "Please enter a valid mobile number!" -msgstr "Per favore inserire un numero di cellulare valido!" - -#: ../lib/modules/inetOrgPerson.inc:66 ../lib/modules/inetOrgPerson.inc:67 -msgid "Please enter a valid postal address!" -msgstr "Per favore inserire un indirizzo postale valido!" - -#: ../lib/modules/inetOrgPerson.inc:68 ../lib/modules/inetOrgPerson.inc:69 -msgid "Please enter a valid postal code!" -msgstr "Per favore inserire un CAP valido!" - -#: ../lib/modules/sambaAccount.inc:73 -msgid "Please enter a valid special user name." -msgstr "Per favore inserire un nome di utente speciale valido." - -#: ../lib/modules/inetOrgPerson.inc:64 ../lib/modules/inetOrgPerson.inc:65 -msgid "Please enter a valid street name!" -msgstr "Per favore inserire un indirizzo valido!" - -#: ../lib/modules/inetOrgPerson.inc:56 ../lib/modules/inetOrgPerson.inc:57 -msgid "Please enter a valid telephone number!" -msgstr "Per favore inserire un numero di telefono valido!" - -#: ../lib/modules/posixGroup.inc:530 ../lib/modules/posixAccount.inc:656 -#, php-format -msgid "Please enter a value between %s and %s!" -msgstr "Per favore inserire un valore compreso tra %s e %s!" - -#: ../templates/config/conflogin.php:87 -msgid "Please enter password to change preferences:" -msgstr "Per favore inserire la password per chambiare le impostazioni:" - -#: ../help/help.inc:47 -msgid "" -"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\"." -msgstr "Per favore inserire la password di configurazione. Questa NON è la password LDAP. Viene immagazzinata nel file .conf. Se questa è la prima volta che vi collegate inserire \"lam\"." - -#: ../help/help.inc:121 -msgid "" -"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\"." -msgstr "Per favore inserire la password principale. Questa NON è la password LDAP. Viene immagazzinata nel file config.cfg. Se questa è la prima volta che vi collegate inserire \"lam\"." - -#: ../help/help.inc:109 -msgid "" -"Please enter the name of the new profile and the password to change its " -"settings. Profile names may contain letters, numbers and -/_." -msgstr "Per favore inserire il nome del nuovo profilo e la password per cambiare le sue impostazioni. I nomi dei profili possono contenere lettere, numeri e -/_." - -#: ../help/help.inc:111 -msgid "" -"Please enter the new name of the profile. The name may contain letters, " -"numbers and -/_." -msgstr "Per favore inserire il nuovo nome del profilo. Il nome può contenere lettere, numeri e -/_." - -#: ../lib/modules/posixGroup.inc:397 ../lib/modules/sambaAccount.inc:59 -#: ../lib/modules/sambaSamAccount.inc:55 ../lib/modules/posixAccount.inc:71 -msgid "Please enter the same password in both password-fields." -msgstr "Per favore inserire la stessa password in entrambi i campi password." - -#: ../templates/masscreate.php:120 -msgid "" -"Please provide a CSV formated file with your account data. The cells in the " -"first row must be filled with the column identifiers. The following rows " -"represent one account for each row." -msgstr "Per favore fornire un file in formato CSV con i dati dei vostri account. Le celle della prima riga devono contenere gli identificatori di colonna. Le righe seguenti rappresentano un account per riga." - -#: ../lib/status.inc:62 -msgid "" -"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." -msgstr "Per favore segnalare questo errore al Bug Tracker all'indirizzo {link=http://lam.sf.net}Team di sviluppo LDAP Account Manager{endlink}. Il numero dell'errore è {bold}0001: Tipo di messaggio non valido/mancante.{endbold} Grazie." - -#: ../lib/modules.inc:676 -msgid "Please select page:" -msgstr "Per favore selezionare una pagina:" - -#: ../templates/masscreate.php:89 -msgid "Please select your account type:" -msgstr "Per favore selezionare il vostro tipo di account:" - -#: ../lib/modules.inc:716 -#, php-format -msgid "Please set up all required attributes on page: %s" -msgstr "Per favore impostare tutti gli attributi obbligatori nella pagina: %s" - -#: ../templates/config/profmanage.php:148 -msgid "Please set up your master configuration file (config/config.cfg) first!" -msgstr "Per favore prima impostare il vostro file di configurazione principale (config/config.cfg)!" - -#: ../templates/pdfedit/pdfpage.php:708 -msgid "Position" -msgstr "Posizione" - -#: ../help/help.inc:221 -msgid "Position in ldap-tree where the group should be created." -msgstr "Posizione nell'albero ldap dove il gruppo dovrebbe essere creato." - -#: ../help/help.inc:223 -msgid "Position in ldap-tree where the host should be created." -msgstr "Posizione nell'albero ldap dove il computer dovrebbe essere creato." - -#: ../help/help.inc:219 -msgid "Position in ldap-tree where the user should be created." -msgstr "Posizione nell'albero ldap dove l'utente dovrebbe essere creato." - -#: ../templates/masscreate.php:158 ../templates/masscreate.php:294 -#: ../lib/modules/sambaGroupMapping.inc:360 -msgid "Possible values" -msgstr "Valori possibili" - -#: ../lib/modules/inetOrgPerson.inc:66 ../lib/modules/inetOrgPerson.inc:173 -#: ../lib/modules/inetOrgPerson.inc:251 ../lib/modules/inetOrgPerson.inc:437 -#: ../lib/modules/inetOrgPerson.inc:477 -msgid "Postal address" -msgstr "Indirizzo postale" - -#: ../lib/modules/inetOrgPerson.inc:252 -msgid "Postal address, city" -msgstr "Indirizzo postale, città" - -#: ../lib/modules/inetOrgPerson.inc:68 ../lib/modules/inetOrgPerson.inc:167 -#: ../lib/modules/inetOrgPerson.inc:247 ../lib/modules/inetOrgPerson.inc:248 -#: ../lib/modules/inetOrgPerson.inc:433 ../lib/modules/inetOrgPerson.inc:476 -msgid "Postal code" -msgstr "CAP" - -#: ../help/help.inc:71 -msgid "Predefined values" -msgstr "Valori predefiniti" - -#: ../lib/modules/inetOrgPerson.inc:151 -msgid "President" -msgstr "Presidente" - -#: ../lib/modules/posixGroup.inc:115 ../lib/modules/posixAccount.inc:184 -#: ../lib/modules/posixAccount.inc:251 ../lib/modules/posixAccount.inc:315 -#: ../lib/modules/posixAccount.inc:347 ../lib/modules/posixAccount.inc:828 -#: ../lib/modules/posixAccount.inc:924 ../lib/modules/posixAccount.inc:952 -#: ../lib/modules/posixAccount.inc:998 ../help/help.inc:148 -#: ../help/help.inc:160 -msgid "Primary group" -msgstr "Gruppo primario" - -#: ../templates/config/profmanage.php:106 -msgid "Profile deleted." -msgstr "Profilo cancellato." - -#: ../templates/tools.php:53 -msgid "Profile editor" -msgstr "Editor dei profili" - -#: ../templates/config/profmanage.php:50 -#: ../templates/config/profmanage.php:161 ../help/help.inc:108 -#: ../help/help.inc:110 ../help/help.inc:112 ../help/help.inc:114 -#: ../help/help.inc:116 ../help/help.inc:118 ../help/help.inc:120 -msgid "Profile management" -msgstr "Gestione dei profili" - -#: ../templates/config/profmanage.php:176 -#: ../templates/config/profmanage.php:223 -#: ../templates/profedit/profilepage.php:126 ../help/help.inc:129 -msgid "Profile name" -msgstr "Nome del profilo" - -#: ../templates/config/profmanage.php:90 -#: ../templates/config/profmanage.php:101 -msgid "Profile name is invalid!" -msgstr "Il nome del profilo non è valido!" - -#: ../templates/config/profmanage.php:187 -#: ../templates/config/profmanage.php:277 -msgid "Profile password" -msgstr "Password del profilo" - -#: ../templates/config/profmanage.php:88 -#: ../templates/config/profmanage.php:118 -msgid "Profile passwords are different or empty!" -msgstr "Le password del profilo sono diverse o vuote!" - -#: ../lib/modules/sambaAccount.inc:49 ../lib/modules/sambaAccount.inc:50 -#: ../lib/modules/sambaAccount.inc:136 ../lib/modules/sambaAccount.inc:268 -#: ../lib/modules/sambaAccount.inc:360 ../lib/modules/sambaAccount.inc:775 -#: ../lib/modules/sambaAccount.inc:880 ../lib/modules/sambaSamAccount.inc:47 -#: ../lib/modules/sambaSamAccount.inc:48 -#: ../lib/modules/sambaSamAccount.inc:175 -#: ../lib/modules/sambaSamAccount.inc:284 -#: ../lib/modules/sambaSamAccount.inc:759 -#: ../lib/modules/sambaSamAccount.inc:903 -#: ../lib/modules/sambaSamAccount.inc:996 ../help/help.inc:204 -msgid "Profile path" -msgstr "Percorso del profilo" - -#: ../lib/modules/sambaAccount.inc:49 ../lib/modules/sambaSamAccount.inc:47 -#: ../lib/modules/sambaSamAccount.inc:49 -msgid "Profile path is invalid!" -msgstr "Il percorso del profilo non è valido!" - -#: ../templates/profedit/profilecreate.php:112 -msgid "Profile was saved." -msgstr "Il profilo è stato salvato." - -#: ../lib/modules/quota.inc:48 -msgid "Quota" -msgstr "Quota" - -#: ../templates/masscreate.php:154 ../help/help.inc:127 -msgid "RDN identifier" -msgstr "Identificatore RDN" - -#: ../lib/lists.inc:330 -msgid "RID (Windows UID)" -msgstr "RID (Windows UID)" - -#: ../lib/modules/nisMailAlias.inc:64 ../lib/modules/nisMailAlias.inc:175 -msgid "Recipient" -msgstr "Destinatario" - -#: ../lib/modules/nisMailAlias.inc:68 ../lib/modules/nisMailAlias.inc:82 -#: ../lib/modules/nisMailAlias.inc:311 -msgid "Recipient list" -msgstr "Lista dei destinatari" - -#: ../templates/config/confmain.php:405 -msgid "Reenter Password" -msgstr "Reinserire la password" - -#: ../templates/config/profmanage.php:354 -msgid "Reenter new master password" -msgstr "Reinserire la nuova password principale" - -#: ../templates/config/profmanage.php:196 -#: ../templates/config/profmanage.php:288 -msgid "Reenter profile password" -msgstr "Reinserire la password del profilo" - -#: ../lib/lists.inc:151 -msgid "Refresh" -msgstr "Aggiorna" - -#: ../templates/pdfedit/pdfpage.php:581 ../lib/modules/ieee802device.inc:148 -#: ../lib/modules/inetLocalMailRecipient.inc:212 -#: ../lib/modules/nisMailAlias.inc:177 -msgid "Remove" -msgstr "Rimuovi" - -#: ../templates/config/profmanage.php:219 ../help/help.inc:110 -msgid "Rename profile" -msgstr "Rinomina il profilo" - -#: ../templates/config/profmanage.php:97 -msgid "Renamed profile." -msgstr "Profilo rinominato." - -#: ../lib/modules/posixGroup.inc:142 ../lib/modules/sambaAccount.inc:732 -#: ../lib/modules/sambaSamAccount.inc:716 ../lib/modules/posixAccount.inc:850 -msgid "Repeat password" -msgstr "Ripetere la password" - -#: ../lib/modules/posixAccount.inc:65 ../lib/modules/posixAccount.inc:714 -msgid "Replaced $user or $group in homedir." -msgstr "Sostituito $user o $group nella homedir." - -#: ../templates/schema/schema.php:389 -msgid "Required attributes" -msgstr "Attributi obbligatori" - -#: ../templates/domain.php:187 ../templates/config/confmain.php:420 -#: ../templates/profedit/profilepage.php:138 -msgid "Reset" -msgstr "Azzera" - -#: ../lib/modules.inc:693 -msgid "Reset changes" -msgstr "Azzera i cambiamenti" - -#: ../lib/modules/sambaAccount.inc:822 ../lib/modules/sambaSamAccount.inc:808 -msgid "Reset password" -msgstr "Azzera la password" - -#: ../lib/modules/inetLocalMailRecipient.inc:56 -#: ../lib/modules/inetLocalMailRecipient.inc:91 -#: ../lib/modules/inetLocalMailRecipient.inc:199 -#: ../lib/modules/inetLocalMailRecipient.inc:373 -msgid "Routing address" -msgstr "Indirizzo di instradamento" - -#: ../lib/modules/sambaAccount.inc:91 -msgid "Samba 2" -msgstr "Samba 2" - -#: ../lib/modules/sambaSamAccount.inc:89 -#: ../lib/modules/sambaGroupMapping.inc:218 -msgid "Samba 3" -msgstr "Samba 3" - -#: ../templates/domain.php:244 -msgid "Samba 3 domain SID is invalid!" -msgstr "Il SID di dominio Samba 3 non è valido!" - -#: ../templates/tools.php:61 -msgid "Samba 3 domains" -msgstr "Domini Samba 3" - -#: ../templates/ou_edit.php:405 -msgid "Samba Hosts" -msgstr "Computer Samba" - -#: ../lib/modules/sambaSamAccount.inc:187 -#: ../lib/modules/sambaSamAccount.inc:191 -#: ../lib/modules/sambaSamAccount.inc:309 -#: ../lib/modules/sambaSamAccount.inc:333 -msgid "Samba RID" -msgstr "RID Samba" - -#: ../lib/modules/sambaGroupMapping.inc:251 -#: ../lib/modules/sambaGroupMapping.inc:275 -msgid "Samba RID number" -msgstr "RID Samba" - -#: ../lib/modules/sambaGroupMapping.inc:245 -msgid "Samba display name" -msgstr "Nome visualizzato Samba" - -#: ../lib/modules/sambaGroupMapping.inc:237 -msgid "Samba domain name" -msgstr "Nome di dominio Samba" - -#: ../lib/modules/sambaGroupMapping.inc:257 -#: ../lib/modules/sambaGroupMapping.inc:283 -#: ../lib/modules/sambaGroupMapping.inc:300 -msgid "Samba group type" -msgstr "Tipo di gruppo Samba" - -#: ../lib/modules/sambaAccount.inc:322 ../lib/modules/sambaAccount.inc:730 -#: ../lib/modules/sambaSamAccount.inc:137 -#: ../lib/modules/sambaSamAccount.inc:714 -msgid "Samba password" -msgstr "Password Samba" - -#: ../lib/modules/sambaAccount.inc:55 ../lib/modules/sambaAccount.inc:148 -#: ../lib/modules/sambaAccount.inc:280 ../lib/modules/sambaAccount.inc:366 -#: ../lib/modules/sambaAccount.inc:781 ../lib/modules/sambaAccount.inc:881 -#: ../lib/modules/sambaSamAccount.inc:53 -#: ../lib/modules/sambaSamAccount.inc:181 -#: ../lib/modules/sambaSamAccount.inc:296 -#: ../lib/modules/sambaSamAccount.inc:765 -#: ../lib/modules/sambaSamAccount.inc:915 -#: ../lib/modules/sambaSamAccount.inc:997 ../help/help.inc:206 -msgid "Samba workstations" -msgstr "Computer Samba" - -#: ../lib/pdf.inc:457 -msgid "Samba-Host information page" -msgstr "Pagina di informazioni sui computer Samba" - -#: ../templates/pdfedit/pdfpage.php:831 -#: ../templates/profedit/profilepage.php:136 -msgid "Save" -msgstr "Salva" - -#: ../help/help.inc:212 -msgid "Save profile" -msgstr "Salva il profilo" - -#: ../templates/config/confsave.php:171 -msgid "Saving group modules failed!" -msgstr "Il salvataggio dei moduli gruppo è fallito!" - -#: ../templates/config/confsave.php:177 -msgid "Saving host modules failed!" -msgstr "Il salvataggio dei moduli computer è fallito!" - -#: ../templates/config/confsave.php:165 -msgid "Saving user modules failed!" -msgstr "Il salvataggio dei moduli utente è fallito!" - -#: ../templates/tools.php:90 -msgid "Schema browser" -msgstr "Esplorazione dello schema" - -#: ../templates/pdfedit/pdfdelete.php:56 ../templates/pdfedit/pdfdelete.php:59 -#: ../templates/pdfedit/pdfdelete.php:78 -msgid "Scope" -msgstr "Ambito" - -#: ../lib/modules/sambaSamAccount.inc:50 ../lib/modules/sambaSamAccount.inc:51 -#: ../help/help.inc:90 ../help/help.inc:202 -msgid "Script path" -msgstr "Percorso dello script" - -#: ../templates/config/confsave.php:153 ../lib/modules/sambaSamAccount.inc:50 -msgid "Script path is invalid!" -msgstr "Il percorso dello script non è valido!" - -#: ../help/help.inc:95 -msgid "Script server" -msgstr "Server per lo script" - -#: ../templates/config/confsave.php:159 -msgid "Script server is invalid!" -msgstr "Il server per lo script non è valido!" - -#: ../templates/config/confmain.php:366 -msgid "Script settings" -msgstr "Impostazioni dello script" - -#: ../templates/pdfedit/pdfpage.php:740 -msgid "Section" -msgstr "Sezione" - -#: ../templates/config/confmain.php:386 -msgid "Security settings" -msgstr "Impostazioni di sicurezza" - -#: ../templates/lists/listhosts.php:121 ../templates/lists/listgroups.php:121 -#: ../templates/lists/listdomains.php:119 ../templates/lists/listusers.php:149 -msgid "See README.openldap.txt to solve this problem." -msgstr "Leggere README.openldap.txt per risolvere questo problema." - -#: ../templates/help.php:112 -msgid "See also" -msgstr "Leggere anche" - -#: ../templates/lists/listhosts.php:215 ../templates/lists/listgroups.php:232 -#: ../templates/lists/listusers.php:266 -msgid "Select all" -msgstr "Seleziona tutti" - -#: ../help/help.inc:214 -msgid "Select group profile" -msgstr "Seleziona il profilo di gruppo" - -#: ../lib/modules/posixAccount.inc:897 -msgid "Selected groups" -msgstr "Gruppi selezionati" - -#: ../templates/config/confmodules.php:165 -msgid "Selected modules" -msgstr "Moduli selezionati" - -#: ../lib/modules/posixGroup.inc:194 -msgid "Selected users" -msgstr "Utenti selezionati" - -#: ../templates/config/confsave.php:91 -msgid "Server Address is empty!" -msgstr "L'indirizzo del server è vuoto!" - -#: ../templates/config/confmain.php:158 ../lib/config.inc:331 -#: ../help/help.inc:48 -msgid "Server address" -msgstr "Indirizzo del server" - -#: ../templates/config/confmain.php:370 ../lib/config.inc:343 -msgid "Server of external script" -msgstr "Server per lo script externo" - -#: ../templates/config/confmain.php:155 -msgid "Server settings" -msgstr "Impostazioni del server" - -#: ../lib/modules/posixGroup.inc:145 ../lib/modules/posixAccount.inc:853 -#: ../lib/modules/posixAccount.inc:941 -msgid "Set no password" -msgstr "Non impostare la password" - -#: ../templates/config/profmanage.php:273 ../help/help.inc:114 -msgid "Set profile password" -msgstr "Imposta la password di profilo" - -#: ../lib/modules/posixGroup.inc:342 -msgid "Sets the group password." -msgstr "Imposta la password di gruppo." - -#: ../lib/modules/shadowAccount.inc:62 -msgid "Shadow" -msgstr "Shadow" - -#: ../templates/massBuildAccounts.php:196 -msgid "Show LDIF file" -msgstr "Visualizza il file LDIF" - -#: ../templates/schema/schema.php:200 -msgid "Single valued" -msgstr "Valore singolo" - -#: ../templates/pdfedit/pdfpage.php:455 -msgid "Size" -msgstr "Dimensione" - -#: ../lib/modules/quota.inc:422 -msgid "Soft block" -msgstr "Blocco soft" - -#: ../lib/modules/quota.inc:72 ../lib/modules/quota.inc:293 -#: ../lib/modules/quota.inc:350 -msgid "Soft block limit" -msgstr "Limite di blocco soft" - -#: ../lib/modules/quota.inc:73 -msgid "Soft block limit." -msgstr "Limite di blocco soft." - -#: ../lib/modules/quota.inc:422 -msgid "Soft inode" -msgstr "inode soft" - -#: ../lib/modules/quota.inc:89 -msgid "Soft inode (files) limit." -msgstr "Limite soft degli inode (file)." - -#: ../lib/modules/quota.inc:88 ../lib/modules/quota.inc:297 -#: ../lib/modules/quota.inc:352 -msgid "Soft inode limit" -msgstr "Limite soft degli inode" - -#: ../lib/modules.inc:715 -msgid "Some required information is missing" -msgstr "Mancano alcune informazioni obbligatorie" - -#: ../templates/help.php:144 -#, php-format -msgid "" -"Sorry this help id ({bold}%s{endbold}) is not available for this module " -"({bold}%s{endbold})." -msgstr "Spiacente questo id di aiuto ({bold}%s{endbold}) non è disponibile per questo modulo ({bold}%s{endbold})." - -#: ../templates/help.php:157 -#, php-format -msgid "Sorry this help number ({bold}%d{endbold}) is not available." -msgstr "Spiacente questo numero di aiuto ({bold}%d{endbold}) non è disponibile." - -#: ../lib/modules/sambaGroupMapping.inc:358 -msgid "Special Group" -msgstr "Gruppo speciale" - -#: ../lib/modules/sambaAccount.inc:62 ../lib/modules/sambaAccount.inc:63 -#: ../lib/modules/sambaAccount.inc:293 ../lib/modules/sambaAccount.inc:375 -#: ../lib/modules/sambaAccount.inc:813 ../lib/modules/sambaSamAccount.inc:58 -#: ../lib/modules/sambaSamAccount.inc:59 -#: ../lib/modules/sambaSamAccount.inc:799 -msgid "Special user" -msgstr "Utente speciale" - -#: ../templates/pdfedit/pdfpage.php:645 ../templates/pdfedit/pdfpage.php:651 -#: ../templates/pdfedit/pdfpage.php:777 -msgid "Static text" -msgstr "Testo statico" - -#: ../lib/modules/inetOrgPerson.inc:132 -msgid "Steve" -msgstr "Steve" - -#: ../lib/modules/sambaAccount.inc:200 ../lib/modules/sambaSamAccount.inc:216 -#: ../lib/modules/inetOrgPerson.inc:125 -msgid "Steve Miller" -msgstr "Steve Miller" - -#: ../lib/modules/posixAccount.inc:228 -msgid "Steve Miller,Room 2.14,123-123-1234,123-123-1234" -msgstr "Steve Miller,Stanza 2.14,123-123-1234,123-123-1234" - -#: ../lib/modules/inetOrgPerson.inc:64 ../lib/modules/inetOrgPerson.inc:161 -#: ../lib/modules/inetOrgPerson.inc:243 ../lib/modules/inetOrgPerson.inc:244 -#: ../lib/modules/inetOrgPerson.inc:429 ../lib/modules/inetOrgPerson.inc:475 -msgid "Street" -msgstr "Strada" - -#: ../templates/pdfedit/pdfpage.php:805 -msgid "Structure name" -msgstr "Nome della struttura" - -#: ../templates/ou_edit.php:94 ../templates/ou_edit.php:159 -#: ../templates/ou_edit.php:224 ../templates/ou_edit.php:289 -#: ../templates/ou_edit.php:470 ../templates/domain.php:186 -#: ../templates/config/profmanage.php:373 -#: ../templates/config/confmodules.php:98 -#: ../templates/config/confmodules.php:101 -#: ../templates/config/confmain.php:418 ../templates/pdfedit/pdfdelete.php:81 -#: ../templates/pdfedit/pdfpage.php:797 ../templates/pdfedit/pdfmain.php:143 -#: ../templates/profedit/profiledelete.php:84 -#: ../templates/profedit/profilemain.php:156 -msgid "Submit" -msgstr "Applica" - -#: ../templates/pdfedit/pdfpage.php:445 ../templates/pdfedit/pdfpage.php:490 -msgid "Submit page settings" -msgstr "Applica le impostazioni della pagina" - -#: ../templates/schema/schema.php:182 -msgid "Substring Rule" -msgstr "Regola per la sottostringa" - -#: ../templates/lists/listhosts.php:236 ../templates/lists/listgroups.php:252 -#: ../templates/lists/listdomains.php:205 ../templates/lists/listusers.php:286 -#: ../templates/domain.php:159 ../lib/modules.inc:728 ../help/help.inc:218 -#: ../help/help.inc:220 ../help/help.inc:222 ../help/help.inc:241 -msgid "Suffix" -msgstr "Suffisso" - -#: ../templates/schema/schema.php:187 -msgid "Syntax" -msgstr "Sintassi" - -#: ../templates/schema/schema.php:95 -msgid "Syntax OID" -msgstr "OID di sintassi" - -#: ../templates/schema/schema.php:79 ../templates/schema/schema.php:80 -msgid "Syntaxes" -msgstr "Sintassi" - -#: ../lib/modules/inetOrgPerson.inc:56 ../lib/modules/inetOrgPerson.inc:179 -#: ../lib/modules/inetOrgPerson.inc:255 ../lib/modules/inetOrgPerson.inc:256 -#: ../lib/modules/inetOrgPerson.inc:441 ../lib/modules/inetOrgPerson.inc:478 -msgid "Telephone number" -msgstr "Numero di telefono" - -#: ../lib/modules/inetOrgPerson.inc:157 -msgid "Temp" -msgstr "Temporaneo" - -#: ../lib/modules/inetOrgPerson.inc:145 -msgid "Temp, contract until december" -msgstr "Temporaneo, contratto fino a dicembre" - -#: ../help/help.inc:104 -msgid "Text for user PDF" -msgstr "Testo per gli utenti PDF" - -#: ../lib/modules/posixAccount.inc:316 ../help/help.inc:149 -msgid "The Primary Group the user should be member of." -msgstr "Il gruppo primario del quale l'utente dovrebbe fare parte." - -#: ../lib/modules/posixAccount.inc:348 ../help/help.inc:161 -msgid "The Primary group the host should be member of." -msgstr "Il gruppo primario del quale il computer dovrebbe fare parte." - -#: ../help/help.inc:244 -msgid "The SID of your Samba server. Get it with \"net getlocalsid\"." -msgstr "Il SID del vostro server Samba. Ricavarlo con il comando \"net getlocalsid\"." - -#: ../lib/modules/posixAccount.inc:63 -msgid "" -"The UID ranges for users and hosts overlap! This is a problem because LAM " -"uses the highest UID in use + 1 for new accounts. Please set the minimum UID " -"to equal values or use independent ranges." -msgstr "Gli intervalli di UID degli utenti e dei computer si sivrappongono! Questo è un problema perchè LAM utilizza l'UID più alto in uso + 1 per i nuovi account. Per favore impostare L'UID minimo allo stesso valore o utilizzare intervalli indipendenti." - -#: ../help/help.inc:242 -msgid "The domain entry will be saved under this suffix." -msgstr "Il dominio sarà salvato con questo suffisso." - -#: ../lib/modules/shadowAccount.inc:49 -msgid "The expiration date is invalid." -msgstr "La data di scadenza non è valida." - -#: ../templates/config/confsave.php:246 -msgid "The following settings were saved to profile:" -msgstr "Le seguenti impostazioni sono state salvate nel profilo:" - -#: ../templates/initsuff.php:178 -msgid "The following suffix(es) are missing in LDAP. LAM can create them for you." -msgstr "I seguenti suffissi non sono presenti in LDAP. LAM può crearli per voi." - -#: ../lib/modules/sambaSamAccount.inc:71 -msgid "The format of the logon hours field is invalid!" -msgstr "Il formato del campo ore di logon non è valido!" - -#: ../templates/pdfedit/pdfpage.php:73 -msgid "The headline for a new section must contain at least one character." -msgstr "La riga di intestazione per una nuova sezione deve contenere almeno un carattere." - -#: ../templates/pdfedit/pdfpage.php:61 -msgid "" -"The name for that PDF-structure you submitted is not valid. A valid name " -"must constist at least of one of the following characters 'a-z','A-Z','0-" -"9','_','-','.'." -msgstr "Il nome per la struttura PDF che avete inserito non è valido. Un nome valido deve contenere almeno uno dei caratteri seguenti 'a-z','A-Z','0-9','_','-','.'." - -#: ../help/help.inc:240 -msgid "The name of your Windows domain or workgroup." -msgstr "Il nome del vostro dominio o gruppo di lavoro Windows." - -#: ../help/help.inc:132 -msgid "The new account will be saved under this LDAP suffix." -msgstr "Il nuovo account sarà salvato con questo suffisso LDAP." - -#: ../templates/config/confmain.php:109 -msgid "The password is invalid! Please try again." -msgstr "La password non è valida. Per favore riprovare." - -#: ../templates/pdfedit/pdfpage.php:77 -msgid "The static text must contain at least one character." -msgstr "Il testo statico deve contenere almeno un carattere." - -#: ../lib/modules/posixGroup.inc:115 -msgid "There are still users who have this group as their primary group." -msgstr "Ci sono ancora degli utenti che hanno questo gruppo come gruppo primario." - -#: ../lib/modules/sambaAccount.inc:62 ../lib/modules/sambaSamAccount.inc:58 -msgid "There can be only one administrator per domain." -msgstr "Ci può essere un solo amministratore per dominio." - -#: ../lib/modules/sambaGroupMapping.inc:358 -#, php-format -msgid "There can be only one group %s." -msgstr "Ci può essere un solo gruppo %s." - -#: ../lib/modules/sambaAccount.inc:63 ../lib/modules/sambaSamAccount.inc:59 -msgid "There can be only one guest per domain." -msgstr "Ci può essere un solo ospite per dominio." - -#: ../templates/massDoUpload.php:119 -msgid "There were errors while uploading:" -msgstr "Si sono verificati degli errori durante il caricamento:" - -#: ../lib/modules/posixGroup.inc:351 -msgid "" -"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." -msgstr "Questi sono i numeri minimi e massimi da utilizzare per gli ID di gruppo quando vengono creati nuovi account di gruppo. I nuovi account di gruppo riceveranno il numero più alto in uso più uno." - -#: ../lib/modules/posixAccount.inc:295 -msgid "" -"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." -msgstr "Questi sono i numeri minimi e massimi da utilizzare per gli ID computer quando vengono creati nuovi account per computer Samba. L'intervallo dovrebbe essere diverso da quello degli utenti. I nuovi account computer riceveranno il numero più alto in uso più uno." - -#: ../lib/modules/posixAccount.inc:291 -msgid "" -"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." -msgstr "Questi sono i numeri minimi e massimi da utilizzare per gli ID utente quando vengono creati nuovi account utente. L'intervallo dovrebbe essere diverso da quello dei computer. I nuovi account utente riceveranno il numero più alto in uso più uno." - -#: ../lib/modules/posixAccount.inc:85 -msgid "This GID number is invalid! Please provide either a number or a group name." -msgstr "Questo GID non è valido! Per favore inserire un numero o un nome di gruppo." - -#: ../templates/domain.php:247 -msgid "This Samba 3 domain is already present!" -msgstr "Questo dominio Samba 3 è già presente!" - -#: ../help/help.inc:115 -msgid "This changes the password of the selected profile." -msgstr "Questo cambia la password del profilo selezionato." - -#: ../help/help.inc:117 -msgid "This changes the profile which is selected by default at login." -msgstr "Questo cambia la password del profilo che viene selezionato in modo predefinito al login." - -#: ../templates/massBuildAccounts.php:148 -msgid "This column is defined to include unique entries but duplicates were found:" -msgstr "Questa colonna è definita in modo da avere valori univoci ma sono stati trovati dei duplicati:" - -#: ../help/help.inc:89 -msgid "" -"This defines the language of the login window and sets this language as the " -"default language. Users can change the language at login." -msgstr "Questo stabilisce il linguaggio della maschera di login e lo imposta come linguaggio predefinito. L'utente può cambiare il linguaggio al login." - -#: ../lib/pdf.inc:514 -msgid "This document was automatically created by LDAP Account Manager" -msgstr "Questo documento è stato creato in modo automatico da LDAP Account Manager" - -#: ../lib/modules/posixAccount.inc:86 -msgid "This gecos value is invalid!" -msgstr "Il valore del gecos non è valido!" - -#: ../lib/modules/ieee802device.inc:61 -msgid "This is a comma separated list of MAC addresses." -msgstr "Questa è una lista di indirizzi MAC separati da virgole." - -#: ../lib/modules/nisMailAlias.inc:69 -msgid "This is a comma separated list of recipients." -msgstr "Questa è una lista di destinatari separati da virgole." - -#: ../lib/modules/inetLocalMailRecipient.inc:65 -msgid "This is a comma separated list of the users public email addresses." -msgstr "Questa è una lista di email pubbliche degli utenti separate da virgole." - -#: ../help/help.inc:82 -msgid "" -"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." -msgstr "Questa è una lista di valori DN validi di tutti gli utenti che possono effettuare il login a LDAP Account Manager. I nomi degli utenti devono essere separati da punti e virgole." - -#: ../templates/masscreate.php:209 -msgid "" -"This is an example how it would look in your spreadsheet program before you " -"convert to CSV:" -msgstr "Queso è un esempio di come dovrebbe essere nel vostro folgio di calcolo prima della conversione in CSV:" - -#: ../lib/modules/sambaSamAccount.inc:61 -msgid "This is not a valid RID number!" -msgstr "Questo non è un RID valido!" - -#: ../lib/modules/sambaGroupMapping.inc:360 -msgid "This is not a valid Samba 3 group type!" -msgstr "Questo non è un tipo di gruppo Samba 3 valido!" - -#: ../lib/modules/inetLocalMailRecipient.inc:61 -msgid "This is one of the users public email addresses." -msgstr "Questo è uno degli indirizzi email pubblici degli utenti." - -#: ../lib/modules/nisMailAlias.inc:65 -msgid "This is one recipient for this alias." -msgstr "Questo è uno dei destinatari per questo alias." - -#: ../lib/modules/ieee802device.inc:57 -msgid "" -"This is the MAC address of the network card of the device (e.g. 00:01:02:DE:" -"EF:18)." -msgstr "Questo è l'indirizzo MAC della scheda di rete del dispositivo (es. 00:01:02:DE:EF:18)." - -#: ../lib/modules/sambaAccount.inc:373 -msgid "This is the RID of the user's primary Windows group." -msgstr "Questo è il RID del gruppo Windows primario dell'utente." - -#: ../lib/modules/sambaSamAccount.inc:185 -msgid "This is the SID of the user's primary Windows group." -msgstr "Questo è il SID del gruppo Windows primario dell'utente." - -#: ../help/help.inc:91 -msgid "" -"This is the absolute path to an external script for setting quotas and " -"creating home directories." -msgstr "Questo è il percorso assoluto allo script esterno per impostare le quota e creare le cartelle home." - -#: ../lib/modules/sambaAccount.inc:323 ../lib/modules/sambaSamAccount.inc:138 -msgid "This is the account's Windows password." -msgstr "Questa è la password dell'account Windows." - -#: ../lib/modules/sambaAccount.inc:320 ../lib/modules/sambaSamAccount.inc:135 -msgid "This is the account's full name on Windows systems." -msgstr "Questo è il nome completo dell'account sui sistemi Windows." - -#: ../lib/modules/sambaGroupMapping.inc:268 -msgid "This is the group name which will be shown in Windows." -msgstr "Questo è il nome del gruppo che sarà visualizzato in Windows." - -#: ../help/help.inc:128 -msgid "" -"This is the identifier for the relative DN value. It must be one of the " -"given allowed LDAP attributes (e.g. user accounts usually use \"uid\" while " -"groups use \"cn\")." -msgstr "Questo è l'identificatore per il valore DN relativo. Deve essere uno degli attributi LDAP ammessi (es. gli user account di solito usano \"uid\" mentre i gruppi usano \"cn\")." - -#: ../help/help.inc:67 -msgid "" -"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." -msgstr "Questa è la lista degli attributi da visualizzare nella lista degli utenti/gruppi/computer. I valori possono essere valori predefiniti, \"#attributo\", o valori individuali , \"attributo:descrizione\". Valori multipli sono separati da punti e virgole." - -#: ../lib/modules/inetLocalMailRecipient.inc:69 -msgid "This is the mail server for the user." -msgstr "Questo è il server di mail per l'utente." - -#: ../help/help.inc:87 -msgid "" -"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." -msgstr "Questo è il numero di righe da visualizzare nella lista degli utenti/gruppi/computer. Se vengono trovati più valori la lista sarà divisa in più pagine." - -#: ../lib/modules/sambaGroupMapping.inc:276 -msgid "" -"This is the relative ID (similar to UID on Unix) for Windows accounts. If " -"you leave this empty LAM will calculate the RID from the UID. This can be " -"either a number or the name of a special group:" -msgstr "Questo è l'ID relativo (simile allo UID su Unix) per gli account Windows. Se lo lasciate vuoto LAM calcolerà il RID a partire dallo UID. Può essere un numero o il nome di un gruppo speciale:" - -#: ../lib/modules/sambaSamAccount.inc:188 -msgid "" -"This is the relative ID number for your Windows account. You can either " -"enter a number or one of these special accounts: " -msgstr "Questo è l'ID relativo per il vostro account Windows. Potete inserire un numero o uno di questi account speciali: " - -#: ../lib/modules/sambaSamAccount.inc:192 -msgid "" -"This is the relative ID number for your host account. If you leave this " -"empty LAM will use: uidNumber*2 + sambaAlgorithmicRidBase." -msgstr "Questo è l'ID relativo per il vostro account computer. Se lo lasciate vuoto LAM utilizzerà: uidNumber*2 + sambaAlgorithmicRidBase." - -#: ../help/help.inc:49 -msgid "" -"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." -msgstr "Questo è l'indirizzo del server per il vostro server LDAP. Utilizzare ldap:// per connessioni LDAP standard e ldaps:// per connessioni crittografate (richiede i certificati del server). Il valore della porta è opzionale." - -#: ../help/help.inc:96 -msgid "" -"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." -msgstr "Questo è il server dove lo script lamdaemon è immagazzinato. LDAP Account Manager effettuerà una connessione SSH con il server con lo username e la password fornite al login." - -#: ../help/help.inc:61 -msgid "" -"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." -msgstr "Questo è il suffisso dell'albero LDAP a partire dal quale cercare utenti/gruppi/computer. Solo i valori in questi sottoalberi saranno visualizzati nella lista degli utenti/gruppi/computer. Quando viene creato un nuovo account questo sarà il DN dove viene salvato." - -#: ../lib/modules/inetLocalMailRecipient.inc:57 -msgid "This is the target email address for the user's mails." -msgstr "Questo è l'indirizzo email di destinazione per le mail dell'utente." - -#: ../help/help.inc:103 -msgid "" -"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." -msgstr "Questo è il numero di minuti per il quale LAM memorizza in cache le ricerche LDAP. Tempi più brevi daranno un maggiore carico a LDAP ma faranno diminuire la possibilità che i cambiamenti non siano rilevati." - -#: ../lib/modules/posixAccount.inc:87 -msgid "This login shell is invalid!" -msgstr "La shell di login non è valida!" - -#: ../templates/schema/schema.php:356 -msgid "This object class is obsolete." -msgstr "Questa classe oggetto è obsoleta." - -#: ../lib/modules/sambaSamAccount.inc:198 -msgid "" -"This option defines the allowed logon hours for this account. The format is " -"the same as for the LDAP attribute. The 24*7 hours are represented as 168 " -"bit which are saved as 21 hex (21*8 = 168) values. The first bit represents " -"Sunday 0:00 - 0:59 in GMT." -msgstr "Questa opzione definisce le ore di logon permesse per questo account. Il formato è lo stesso dell'attributo LDAP. Le 24*7 ore sono rappresentate da 168 bit che vengono salvati con 21 cifre esadecimali (21*8 = 168). I primi bit rappresentano Domenica 0:00 - 0:59 GMT." - -#: ../help/help.inc:105 -msgid "This text will appear on top of every user PDF file." -msgstr "Questo testo apparirà all'inizio di ogni file PDF degli utenti." - -#: ../templates/tools.php:84 -msgid "This tool allows you to customize the PDF pages." -msgstr "Questo strumento vi permette di personalizzare le pagine PDF." - -#: ../templates/lists/userlink.php:63 -msgid "This user was not found!" -msgstr "Questo utente non è stato trovato!" - -#: ../lib/modules/sambaAccount.inc:65 ../lib/modules/sambaAccount.inc:66 -#: ../lib/modules/sambaAccount.inc:67 ../lib/modules/sambaAccount.inc:68 -#: ../lib/modules/sambaSamAccount.inc:63 ../lib/modules/sambaSamAccount.inc:64 -#: ../lib/modules/sambaSamAccount.inc:65 ../lib/modules/sambaSamAccount.inc:66 -msgid "This value can only be \\\"true\\\" or \\\"false\\\"!" -msgstr "Questo valore può essere solo \\\"true\\\" o \\\"false\\\"!" - -#: ../lib/modules/posixAccount.inc:88 -msgid "This value can only be \\\"true\\\" or \\\"false\\\"." -msgstr "Questo valore può essere solo \\\"true\\\" o \\\"false\\\"." - -#: ../lib/modules/posixGroup.inc:412 -msgid "This value must be a list of user names separated by semicolons." -msgstr "Questo valore deve essere una lista di nomi utente separati da punti e virgole." - -#: ../help/help.inc:236 -msgid "This will create a new organizational unit under the selected one." -msgstr "Questo creerà una nuova unità organizzativa dentro quella selezionata." - -#: ../help/help.inc:238 -msgid "This will delete the selected organizational unit. The OU has to be empty." -msgstr "Questo cancellerà l'unità organizzativa selezionata. La OU deve essere vuota." - -#: ../help/help.inc:113 -msgid "This will delete the selected profile." -msgstr "Questo cancellerà il profilo selezionato " - -#: ../help/help.inc:213 -msgid "" -"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 -_." -msgstr "Questo genererà un profilo a partire dall'account corrente. I valori salvati sono quelli dell'editor dei profili. I nomi di profilo possono contenere le lettere a-z, 0-9 e -_." - -#: ../lib/modules/posixAccount.inc:330 ../help/help.inc:147 -msgid "" -"To disable login use /bin/false. List of shells is read from lam/config/" -"shells" -msgstr "Per disabilitare il login utilizzare /bin/false. La lista delle shell viene letta da lam/config/shells" - -#: ../templates/main_header.php:58 -msgid "Tools" -msgstr "Strumenti" - -#: ../templates/pdfedit/pdfpage.php:513 -msgid "Top" -msgstr "Inizio" - -#: ../templates/lists/listusers.php:300 -msgid "Translate GID number to group name" -msgstr "Traduci i GID in nomi di gruppo" - -#: ../templates/schema/schema.php:354 -msgid "Type" -msgstr "Tipo" - -#: ../lib/modules/posixAccount.inc:75 -msgid "UID" -msgstr "UID" - -#: ../lib/modules/posixAccount.inc:75 -msgid "UID has changed. Do you want to change home directory?" -msgstr "L'UID è cambiato. Volete cambiare la home directory?" - -#: ../lib/modules/posixAccount.inc:70 -msgid "" -"UID must be a number. It has to be inside the UID range which is defined in " -"your configuration profile." -msgstr "L'UID deve essere un numero. Deve essere nell'intervallo di UID che è definito nel vostro profilo di configurazione." - -#: ../lib/modules/posixAccount.inc:46 ../lib/modules/posixAccount.inc:178 -#: ../lib/modules/posixAccount.inc:245 ../lib/modules/posixAccount.inc:290 -#: ../lib/modules/posixAccount.inc:294 ../lib/modules/posixAccount.inc:302 -#: ../lib/modules/posixAccount.inc:820 ../lib/modules/posixAccount.inc:995 -#: ../lib/lists.inc:293 ../lib/lists.inc:332 ../help/help.inc:138 -#: ../help/help.inc:158 -msgid "UID number" -msgstr "UID" - -#: ../lib/modules/posixAccount.inc:46 -#, php-format -msgid "" -"UID number has changed. To keep file ownership you have to run the following " -"command as root: 'find / -uid %s -exec chown %s {} \\;'" -msgstr "L'UID è cambiato. Per mantenere la proprietà dei file dovete eseguire il seguente comando come root: 'find / -uid %s -exec chown %s {} \\;'" - -#: ../lib/modules/posixAccount.inc:63 ../lib/modules/posixAccount.inc:154 -msgid "UID ranges for Unix accounts" -msgstr "Intervalli di UID per gli account Unix" - -#: ../lib/modules/sambaAccount.inc:358 ../lib/modules/sambaSamAccount.inc:173 -#: ../help/help.inc:209 -msgid "" -"UNC-path (\\\\server\\share) of homedirectory. $user and $group are replaced " -"with user- and groupname." -msgstr "Percorso UNC (\\\\server\\share) della home directory. $user e $group vengono sostituiti dal nome utente e gruppo." - -#: ../templates/pdfedit/pdfpage.php:581 -msgid "UP" -msgstr "SU" - -#: ../templates/ou_edit.php:55 ../templates/ou_edit.php:120 -#: ../templates/ou_edit.php:185 ../templates/ou_edit.php:250 -msgid "Unable to create new OU!" -msgstr "Non è stato possibile creare la nuova OU!" - -#: ../templates/config/profmanage.php:86 -msgid "Unable to create new profile!" -msgstr "Non è stato possibile creare il nuovo profilo!" - -#: ../templates/ou_edit.php:72 ../templates/ou_edit.php:137 -#: ../templates/ou_edit.php:202 ../templates/ou_edit.php:267 -msgid "Unable to delete OU!" -msgstr "Non è stato possibile cancellare la OU!" - -#: ../templates/pdfedit/pdfdelete.php:56 -msgid "Unable to delete PDF structure!" -msgstr "Non è stato possibile cancellare la struttura PDF!" - -#: ../templates/domain.php:314 -msgid "Unable to delete domain!" -msgstr "Non è stato possibile cancellare il dominio!" - -#: ../templates/config/profmanage.php:108 -#: ../templates/profedit/profiledelete.php:60 -msgid "Unable to delete profile!" -msgstr "Non è stato possibile cancellare il profilo!" - -#: ../lib/modules/posixAccount.inc:1293 -msgid "Unable to find group in LDAP." -msgstr "Non è stato possibile trovare il gruppo in LDAP." - -#: ../templates/login.php:100 ../templates/config/confmain.php:355 -msgid "" -"Unable to load available languages. Setting English as default language. For " -"further instructions please contact the Admin of this site." -msgstr "Non è stato possibile caricare i linguaggi disponibili. Sarà impostato l'inglese come linguaggio predefinito. Per avere ulteriori informazioni contattare l'amministratore del sito." - -#: ../lib/profiles.inc:91 ../lib/profiles.inc:95 -msgid "Unable to load profile!" -msgstr "Non è stato possibile caricare il profilo!" - -#: ../templates/schema/schema.php:99 ../templates/schema/schema.php:117 -#: ../templates/schema/schema.php:278 ../templates/schema/schema.php:312 -msgid "Unable to retrieve schema!" -msgstr "Non è stato possibile leggere lo schema!" - -#: ../templates/profedit/profilecreate.php:114 -msgid "Unable to save profile!" -msgstr "Non è stato possibile salvare il profilo!" - -#: ../lib/modules/posixGroup.inc:226 ../lib/modules/posixAccount.inc:112 -msgid "Unix" -msgstr "Unix" - -#: ../lib/modules/inetOrgPerson.inc:51 ../lib/modules/inetOrgPerson.inc:408 -#: ../lib/modules/inetOrgPerson.inc:470 ../help/help.inc:226 -msgid "Unix workstations" -msgstr "Computer Unix" - -#: ../lib/modules/inetOrgPerson.inc:51 -msgid "Unix workstations is invalid." -msgstr "Il computer unix non è valido." - -#: ../templates/config/confmodules.php:222 -msgid "Unsolved dependency:" -msgstr "Dipendenza irrisolta:" - -#: ../templates/massBuildAccounts.php:193 -msgid "Upload accounts to LDAP" -msgstr "Carica gli account su LDAP" - -#: ../templates/masscreate.php:128 -msgid "Upload file and create accounts" -msgstr "Carica il file e crea gli account" - -#: ../lib/modules.inc:472 -#, php-format -msgid "Upload was stopped after errors in %s module!" -msgstr "Il caricamento è stato fermato dopo che si sono verificati degli errori nel modulo %s!" - -#: ../templates/schema/schema.php:215 -msgid "Usage" -msgstr "Uso" - -#: ../lib/modules/sambaAccount.inc:98 ../lib/modules/sambaAccount.inc:210 -#: ../lib/modules/sambaAccount.inc:325 ../lib/modules/sambaAccount.inc:328 -#: ../lib/modules/sambaSamAccount.inc:140 -#: ../lib/modules/sambaSamAccount.inc:143 -#: ../lib/modules/sambaSamAccount.inc:226 -msgid "Use Unix password" -msgstr "Utilizza la password Unix" - -#: ../templates/pdfedit/pdfpage.php:442 ../templates/pdfedit/pdfpage.php:487 -#: ../templates/pdfedit/pdfpage.php:501 ../templates/pdfedit/pdfpage.php:519 -#: ../templates/pdfedit/pdfpage.php:530 ../templates/pdfedit/pdfpage.php:541 -#: ../templates/pdfedit/pdfpage.php:552 -msgid "Use default" -msgstr "Utilizza il valore predefinito" - -#: ../help/help.inc:93 ../help/help.inc:98 -msgid "" -"Use it at your own risk and read the documentation for lamdaemon before you " -"use it!" -msgstr "Utilizzatelo a vostro rischio e pericolo e leggete la documentazione su lamdaemon prima di utilizzarlo!" - -#: ../lib/modules/posixGroup.inc:345 ../lib/modules/sambaAccount.inc:104 -#: ../lib/modules/sambaAccount.inc:218 ../lib/modules/sambaAccount.inc:331 -#: ../lib/modules/sambaAccount.inc:334 ../lib/modules/sambaAccount.inc:740 -#: ../lib/modules/sambaSamAccount.inc:146 -#: ../lib/modules/sambaSamAccount.inc:149 -#: ../lib/modules/sambaSamAccount.inc:234 -#: ../lib/modules/sambaSamAccount.inc:724 -#: ../lib/modules/sambaSamAccount.inc:871 ../lib/modules/posixAccount.inc:324 -#: ../help/help.inc:188 -msgid "Use no password" -msgstr "Non utilizzare alcuna password" - -#: ../lib/modules/sambaAccount.inc:736 ../lib/modules/sambaSamAccount.inc:720 -#: ../lib/modules/sambaSamAccount.inc:865 ../help/help.inc:190 -msgid "Use unix password" -msgstr "Utilizza la password Unix" - -#: ../lib/modules/quota.inc:68 ../lib/modules/quota.inc:292 -msgid "Used blocks" -msgstr "Blocchi utilizzati" - -#: ../lib/modules/quota.inc:69 -msgid "Used blocks. 1000 blocks are usually 1MB" -msgstr "Blocchi utilizzati. 1000 blocchi di solito sono 1MB" - -#: ../templates/schema/schema.php:274 -msgid "Used by attributes" -msgstr "Utilizzato dagli attributi" - -#: ../templates/schema/schema.php:243 -msgid "Used by object classes" -msgstr "Utilizzato dalle classi oggetto" - -#: ../help/help.inc:252 -msgid "Used for calculating RIDs from UID/GID. Do not change if unsure." -msgstr "Utilizzato per calcolare i RID a partire dagli UID/GID. Non modificare se non si è sicuri." - -#: ../lib/modules/quota.inc:84 ../lib/modules/quota.inc:296 -msgid "Used inodes" -msgstr "inode utilizzati" - -#: ../lib/modules/quota.inc:85 -msgid "Used inodes (files)" -msgstr "inode utilizzati (file)" - -#: ../lib/modules/sambaGroupMapping.inc:51 -msgid "User" -msgstr "Utente" - -#: ../lib/lists.inc:292 -msgid "User ID" -msgstr "ID utente" - -#: ../lib/modules/sambaAccount.inc:242 ../lib/modules/sambaAccount.inc:349 -#: ../lib/modules/sambaAccount.inc:752 ../lib/modules/sambaSamAccount.inc:164 -#: ../lib/modules/sambaSamAccount.inc:258 -#: ../lib/modules/sambaSamAccount.inc:736 ../help/help.inc:194 -msgid "User can change password" -msgstr "L'utente può cambiare la sua password" - -#: ../lib/modules/posixAccount.inc:312 ../lib/modules/inetOrgPerson.inc:224 -#: ../help/help.inc:145 -msgid "User description. If left empty sur- and give name will be used." -msgstr "Descrizione dell'utente. Se lasciata vuota saranno utilizzati il cognome e il nome." - -#: ../lib/pdf.inc:451 -msgid "User information page" -msgstr "Pagina di informazioni sull'utente" - -#: ../templates/config/confsave.php:126 -msgid "User list attributes are invalid!" -msgstr "Gli attributi della lista utenti non sono validi!" - -#: ../templates/schema/schema.php:210 -msgid "User modification" -msgstr "Modifiche all'utente" - -#: ../templates/config/confmodules.php:79 ../templates/config/confmain.php:219 -#: ../lib/config.inc:345 -msgid "User modules" -msgstr "Moduli utente" - -#: ../lib/modules/sambaAccount.inc:249 ../lib/modules/sambaAccount.inc:351 -#: ../lib/modules/sambaAccount.inc:760 ../lib/modules/sambaSamAccount.inc:166 -#: ../lib/modules/sambaSamAccount.inc:265 -#: ../lib/modules/sambaSamAccount.inc:744 ../help/help.inc:196 -msgid "User must change password" -msgstr "L'utente deve cambiare la sua password" - -#: ../lib/modules/account.inc:66 ../lib/modules/posixAccount.inc:170 -msgid "User name" -msgstr "Nome utente" - -#: ../templates/profedit/profilemain.php:45 -msgid "User profiles" -msgstr "Profili utente" - -#: ../lib/modules/quota.inc:422 -msgid "User quota" -msgstr "Quota utente" - -#: ../help/help.inc:60 -msgid "User/Group/Host suffix" -msgstr "Suffissi utente/gruppo/computer" - -#: ../templates/config/confmain.php:170 ../lib/config.inc:333 -msgid "UserSuffix" -msgstr "UserSuffix" - -#: ../templates/config/confsave.php:106 -msgid "UserSuffix is invalid!" -msgstr "Lo UserSuffix non è valido!" - -#: ../templates/login.php:160 ../lib/modules/sambaAccount.inc:876 -#: ../lib/modules/sambaSamAccount.inc:992 ../lib/modules/posixAccount.inc:76 -#: ../lib/modules/posixAccount.inc:77 ../lib/modules/posixAccount.inc:80 -#: ../lib/modules/posixAccount.inc:307 ../lib/modules/posixAccount.inc:817 -#: ../lib/modules/posixAccount.inc:994 ../lib/lists.inc:295 -#: ../help/help.inc:136 -msgid "Username" -msgstr "Nome utente" - -#: ../lib/modules/posixAccount.inc:77 ../lib/modules/posixAccount.inc:82 -msgid "" -"Username contains invalid characters. Valid characters are: a-z, A-Z, 0-9 " -"and .-_ !" -msgstr "Il nome utente contiene dei caratteri non validi. I caratteri validi sono: a-z, A-Z, 0-9 e .-_ !" - -#: ../lib/modules/posixAccount.inc:80 -msgid "Username in use. Selected next free username." -msgstr "Nome utente già utilizzato. Selezionato il prossimo nome utente libero." - -#: ../lib/modules/posixAccount.inc:308 ../help/help.inc:137 -msgid "" -"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." -msgstr "Nome utente dell'utente che deve essere creato. I caratteri ammessi sono: a-z,0-9, .-_. Lam non ammette un numero come primo carattere perché anche useradd non lo permette. Lam non ammette lettere maiuscole A-Z perché possono causare diversi problemi. Se il nome utente è già stato utilizzato sarà completato con un numero. Verrà utilizzato il prossimo numero libero. Attenzione: i sistemi più vecchi hanno problemi con nomi utente più lunghi di 8 caratteri. Non è possibile effettuare la login a Windows se il nome utente è più lungo di 16 caratteri." - -#: ../templates/ou_edit.php:339 ../templates/main_header.php:77 -#: ../lib/modules/posixAccount.inc:57 ../lib/modules/posixAccount.inc:58 -#: ../lib/modules/posixAccount.inc:61 ../lib/modules/posixAccount.inc:126 -#: ../help/help.inc:73 -msgid "Users" -msgstr "Utenti" - -#: ../help/help.inc:231 -msgid "Users also being member of the current group." -msgstr "Utenti che sono anche membri del gruppo corrente." - -#: ../lib/modules/posixGroup.inc:334 -msgid "Users who are member of the current group." -msgstr "Utenti membri del gruppo corrente." - -#: ../lib/modules/posixGroup.inc:338 -msgid "" -"Users who will become member of the current group. User names are separated " -"by semicolons." -msgstr "Utenti che diventeranno membri del gruppo corrente. I nomi degli utenti devono essere separati da punti e virgole." - -#: ../help/help.inc:175 -msgid "Users wich are also members of group." -msgstr "Utenti che sono anche membri del gruppo." - -#: ../help/help.inc:81 -msgid "Valid users" -msgstr "Utenti validi" - -#: ../templates/delete.php:185 ../lib/modules.inc:1424 -#, php-format -msgid "Was unable to add attribtues to DN: %s." -msgstr "Non è stato possibile aggiungere l'attributo al DN: %s." - -#: ../lib/modules.inc:1389 ../lib/modules.inc:1398 -#, php-format -msgid "Was unable to create DN: %s." -msgstr "Non è stato possibile creare il DN: %s." - -#: ../lib/modules.inc:1382 -#, php-format -msgid "Was unable to delete DN: %s." -msgstr "Non è stato possibile cancellare il DN: %s." - -#: ../templates/delete.php:175 ../lib/modules.inc:1414 -#, php-format -msgid "Was unable to modify attribtues from DN: %s." -msgstr "Non è stato possibile modificare gli attributi del DN: %s." - -#: ../templates/delete.php:195 ../templates/delete.php:219 -#: ../lib/modules.inc:1434 -#, php-format -msgid "Was unable to remove attribtues from DN: %s." -msgstr "Non è stato possibile rimuovere gli attributi del DN: %s." - -#: ../help/help.inc:59 -msgid "" -"When using ldaps:// be sure to use exactly the same IP/domain name as in " -"your certificate!" -msgstr "Quando su utilizza ldaps:// assicurarsi di usare lo stesso IP/nome di dominio del vostro certificato!" - -#: ../templates/pdfedit/pdfpage.php:460 -msgid "Width" -msgstr "Larghezza" - -#: ../help/help.inc:177 -msgid "Windows clients will show display name as group description." -msgstr "I client Windows mostreranno il nome visualizzato come descrizione del gruppo." - -#: ../help/help.inc:216 -msgid "Windows domain" -msgstr "Dominio Windows" - -#: ../lib/modules/sambaAccount.inc:379 ../lib/modules/sambaSamAccount.inc:195 -msgid "Windows domain name of account." -msgstr "Nome dell'account per il dominio Windows." - -#: ../help/help.inc:217 -msgid "Windows domain of host." -msgstr "Dominio Windows del computer." - -#: ../lib/modules/sambaAccount.inc:286 ../lib/modules/sambaAccount.inc:796 -#: ../lib/modules/sambaSamAccount.inc:302 -#: ../lib/modules/sambaSamAccount.inc:780 -#: ../lib/modules/sambaSamAccount.inc:1000 -#: ../lib/modules/sambaGroupMapping.inc:174 -#: ../lib/modules/sambaGroupMapping.inc:298 -msgid "Windows group" -msgstr "Gruppo Windows" - -#: ../lib/modules/sambaAccount.inc:372 -msgid "Windows group RID" -msgstr "RID del gruppo Windows" - -#: ../lib/modules/sambaAccount.inc:369 ../help/help.inc:224 -msgid "Windows group name" -msgstr "Nome del gruppo Windows" - -#: ../lib/modules/sambaGroupMapping.inc:284 -msgid "Windows group type." -msgstr "Tipo del gruppo Windows" - -#: ../lib/modules/sambaGroupMapping.inc:271 -msgid "Windows groupname" -msgstr "Nome del gruppo Windows" - -#: ../lib/modules/sambaSamAccount.inc:184 -msgid "Windows primary group SID" -msgstr "SID del gruppo primario Windows" - -#: ../lib/modules/sambaGroupMapping.inc:280 -msgid "Windows-Domain name of group." -msgstr "Nome del gruppo per il dominio Windows." - -#: ../help/help.inc:229 -msgid "Windows-Domain of group." -msgstr "Dominio Windows del gruppo." - -#: ../help/help.inc:211 -msgid "Windows-Domain of user." -msgstr "Dominio Windows dell'utente." - -#: ../templates/login.php:349 -msgid "Wrong Password/Username combination. Try again." -msgstr "Utente o password sbagliati. Ritentare." - -#: ../templates/pdfedit/pdfdelete.php:89 -#: ../templates/profedit/profiledelete.php:92 -msgid "Wrong or missing type!" -msgstr "Tipo mancante o sbagliato!" - -#: ../templates/schema/schema.php:159 ../templates/schema/schema.php:201 -#: ../templates/schema/schema.php:206 ../templates/schema/schema.php:211 -msgid "Yes" -msgstr "Si" - -#: ../lib/modules/posixGroup.inc:408 ../lib/modules/posixAccount.inc:76 -#: ../lib/modules/posixAccount.inc:78 -msgid "" -"You are using a capital letters. This can cause problems because windows " -"isn't case-sensitive." -msgstr "State utilizzando lettere maiuscole. Questo può creare problemi perchè Windows non è sensibile alle maiuscole." - -#: ../help/help.inc:179 -msgid "" -"You can select a previous defined profile here. This will set all fields to " -"the profile values." -msgstr "Potete selezionare qui un profilo definito in precedenza. Questo imposterà tutti i campi al valore del profilo." - -#: ../lib/modules/posixGroup.inc:399 ../lib/modules/posixAccount.inc:73 -msgid "You cannot use this password options at the same time." -msgstr "Non potete utilizzare queste opzioni per la password contemporaneamente." - -#: ../templates/logout.php:70 -msgid "You have been logged off from LDAP Account Manager." -msgstr "Siete stati scollegati da LDAP Account Manager." - -#: ../templates/login.php:204 -msgid "Your Language" -msgstr "Il vostro linguaggio" - -#: ../lib/modules/sambaAccount.inc:264 ../lib/modules/sambaSamAccount.inc:280 -msgid "\\\\server\\homes\\smiller" -msgstr "\\\\server\\homes\\smiller" - -#: ../lib/modules/sambaAccount.inc:270 ../lib/modules/sambaSamAccount.inc:286 -msgid "\\\\server\\profiles\\smiller" -msgstr "\\\\server\\profiles\\smiller" - -#: ../lib/modules/posixGroup.inc:289 -msgid "adminstrators" -msgstr "amministratori" - -#: ../templates/schema/schema.php:226 -msgid "character" -msgstr "carattere" - -#: ../templates/schema/schema.php:225 -msgid "characters" -msgstr "caratteri" - -#: ../lib/modules/inetOrgPerson.inc:62 ../lib/modules/inetOrgPerson.inc:197 -#: ../lib/modules/inetOrgPerson.inc:267 ../lib/modules/inetOrgPerson.inc:268 -#: ../lib/modules/inetOrgPerson.inc:453 ../lib/modules/inetOrgPerson.inc:481 -msgid "eMail address" -msgstr "Indirizzo eMail" - -#: ../lib/modules/posixAccount.inc:193 -msgid "group01,group02" -msgstr "gruppo01,gruppo02" - -#: ../lib/modules/quota.inc:120 ../lib/modules/quota.inc:122 -#: ../lib/modules/quota.inc:189 ../lib/modules/quota.inc:191 -msgid "hours" -msgstr "ore" - -#: ../help/help.inc:53 -msgid "" -"ldap://localhost:389 connects to localhost using a standard LDAP connection " -"on port 389" -msgstr "ldap://localhost:389 si connette a localhost utilizzando una connessione LDAP standard sulla porta 389" - -#: ../help/help.inc:55 -msgid "" -"ldaps://141.40.146.133 connects to 141.40.146.133 using an encrypted LDAP " -"connection." -msgstr "ldaps://141.40.146.133 si connette a 141.40.146.133 utilizzando una connessione LDAP crittografata" - -#: ../lib/modules/posixAccount.inc:253 -msgid "machines" -msgstr "computer" - -#: ../lib/modules/sambaAccount.inc:302 ../lib/modules/sambaAccount.inc:312 -#: ../lib/modules/sambaSamAccount.inc:210 -#: ../lib/modules/sambaSamAccount.inc:329 -msgid "mydomain" -msgstr "miodominio" - -#: ../lib/modules/sambaSamAccount.inc:304 -msgid "mygroup" -msgstr "miogruppo" - -#: ../templates/schema/schema.php:166 ../templates/schema/schema.php:235 -#: ../templates/schema/schema.php:246 ../templates/schema/schema.php:295 -#: ../templates/schema/schema.php:361 ../templates/schema/schema.php:376 -#: ../templates/schema/schema.php:410 ../templates/schema/schema.php:432 -msgid "none" -msgstr "nessuno" - -#: ../templates/schema/schema.php:222 -msgid "not applicable" -msgstr "non applicabile" - -#: ../templates/schema/schema.php:173 ../templates/schema/schema.php:178 -#: ../templates/schema/schema.php:183 ../templates/schema/schema.php:216 -msgid "not specified" -msgstr "non specificato" - -#: ../help/help.inc:65 -msgid "" -"ou=People,dc=yourcompany,dc=com will read and store all accounts in this " -"subtree." -msgstr "ou=People,dc=yourcompany,dc=com farà si che tutti gli account vengano letti e scritti in questo sottoalbero." - -#: ../lib/modules/posixAccount.inc:239 -msgid "pc01$" -msgstr "pc01$" - -#: ../lib/modules/posixAccount.inc:260 -msgid "pc01,Room 2.34" -msgstr "pc01,Stanza 2.34" - -#: ../templates/config/confmain.php:431 -msgid "required" -msgstr "obbligatorio" - -#: ../templates/config/confmain.php:433 -msgid "required for Samba 3 accounts" -msgstr "obbligatorio per gli account Samba 3" - -#: ../templates/config/confmain.php:432 -msgid "required for Samba accounts" -msgstr "obbligatorio per gli account Samba" - -#: ../templates/pdfedit/pdfpage.php:546 -msgid "right" -msgstr "destra" - -#: ../lib/modules/posixGroup.inc:315 ../lib/modules/sambaAccount.inc:206 -#: ../lib/modules/sambaSamAccount.inc:222 ../lib/modules/posixAccount.inc:214 -msgid "secret" -msgstr "segreto" - -#: ../lib/modules/posixAccount.inc:172 ../lib/modules/nisMailAlias.inc:84 -msgid "smiller" -msgstr "smiller" - -#: ../lib/modules/posixGroup.inc:309 -msgid "user01,user02,user03" -msgstr "utente01,utente02,utente03" - -#: ../lib/modules/inetOrgPerson.inc:199 -msgid "user@company.com" -msgstr "user@company.com" - -#: ../lib/modules/posixAccount.inc:186 -msgid "users" -msgstr "utenti" - diff --git a/lam/locale/ja_JP/LC_MESSAGES/messages.mo b/lam/locale/ja_JP/LC_MESSAGES/messages.mo deleted file mode 100644 index cf634b72df013a2ae61fd2da8129180ffb1ffe29..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 99419 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 qF\n" -"Language-Team: Japanese \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -#: ../lib/modules/posixAccount.inc:320 -msgid "$user and $group are replaced with username or primary groupname." -msgstr "$user 㨠$group ã¯ãƒ¦ãƒ¼ã‚¶åã¨ãƒ—ライマリグループåã«ç½®ãæ›ãˆã‚‰ã‚Œã¾ã™ã€‚" - -#: ../templates/lists/listdomains.php:145 -#: ../templates/lists/listdomains.php:195 -#, php-format -msgid "%s Samba domain(s) found" -msgstr "%s個ã®SambaドメインãŒè¦‹ã¤ã‹ã‚Šã¾ã—ãŸ" - -#: ../templates/lists/listgroups.php:148 ../templates/lists/listgroups.php:224 -#, php-format -msgid "%s group(s) found" -msgstr "%s個ã®ã‚°ãƒ«ãƒ¼ãƒ—ãŒè¦‹ã¤ã‹ã‚Šã¾ã—ãŸ" - -#: ../templates/lists/listhosts.php:148 ../templates/lists/listhosts.php:208 -#, php-format -msgid "%s host(s) found" -msgstr "%s個ã®Samba ホストãŒè¦‹ã¤ã‹ã‚Šã¾ã—ãŸ" - -#: ../templates/lists/listusers.php:179 ../templates/lists/listusers.php:254 -#, php-format -msgid "%s user(s) found" -msgstr "%såã®ãƒ¦ãƒ¼ã‚¶ãŒè¦‹ã¤ã‹ã‚Šã¾ã—ãŸ" - -#: ../templates/tree/templates/creation/custom.php:63 -msgid "(example: cn=MyNewPerson)" -msgstr "(例: cn=MyNewPerson)" - -#: ../templates/tree/templates/creation/new_ou_template.php:60 -msgid "(hint: do not include \"ou=\")" -msgstr "(ヒント: \"ou=\"ã‚’å«ã‚ãªã„ã§ãã ã•ã„)" - -#: ../templates/tree/add_attr_form.php:135 -msgid "(no new attributes available for this entry)" -msgstr "(ã“ã®ã‚¨ãƒ³ãƒˆãƒªã«å¯¾ã—ã¦æœ‰åŠ¹ãªæ–°ã—ã„属性ã¯ã‚ã‚Šã¾ã›ã‚“)" - -#: ../templates/tree/add_attr_form.php:173 -msgid "(no new binary attributes available for this entry)" -msgstr "(ã“ã®ã‚¨ãƒ³ãƒˆãƒªã«å¯¾ã—ã¦æœ‰åŠ¹ãªæ–°ã—ã„ãƒã‚¤ãƒŠãƒªå±žæ€§ã¯ã‚ã‚Šã¾ã›ã‚“)" - -#: ../lib/modules/posixAccount.inc:199 -msgid "/home/smiller" -msgstr "" - -#: ../templates/massBuildAccounts.php:113 -msgid "A required column is missing in your CSV file." -msgstr "CSVファイル中ã®å¿…須カラムãŒä¸è¶³ã—ã¦ã„ã¾ã™ã€‚" - -#: ../templates/ou_edit.php:95 ../templates/ou_edit.php:160 -#: ../templates/ou_edit.php:225 ../templates/ou_edit.php:290 -#: ../templates/config/confmodules.php:104 -#: ../templates/config/confmain.php:485 ../templates/pdfedit/pdfdelete.php:82 -#: ../templates/pdfedit/pdfpage.php:834 ../templates/pdfedit/pdfmain.php:144 -#: ../templates/profedit/profiledelete.php:85 -#: ../templates/profedit/profilepage.php:164 -#: ../templates/profedit/profilemain.php:157 -msgid "Abort" -msgstr "中止" - -#: ../lib/modules/account.inc:35 -msgid "Account" -msgstr "アカウント" - -#: ../templates/massBuildAccounts.php:164 ../lib/modules/ieee802device.inc:84 -#: ../lib/modules/posixGroup.inc:470 ../lib/modules/posixGroup.inc:474 -#: ../lib/modules/posixGroup.inc:475 ../lib/modules/sambaAccount.inc:48 -#: ../lib/modules/sambaAccount.inc:51 ../lib/modules/sambaAccount.inc:54 -#: ../lib/modules/sambaAccount.inc:56 ../lib/modules/sambaAccount.inc:58 -#: ../lib/modules/sambaAccount.inc:61 ../lib/modules/sambaAccount.inc:64 -#: ../lib/modules/sambaAccount.inc:65 ../lib/modules/sambaAccount.inc:66 -#: ../lib/modules/sambaAccount.inc:67 ../lib/modules/sambaAccount.inc:68 -#: ../lib/modules/sambaAccount.inc:69 ../lib/modules/sambaAccount.inc:70 -#: ../lib/modules/sambaAccount.inc:71 ../lib/modules/sambaAccount.inc:72 -#: ../lib/modules/sambaAccount.inc:73 ../lib/modules/sambaSamAccount.inc:46 -#: ../lib/modules/sambaSamAccount.inc:49 ../lib/modules/sambaSamAccount.inc:52 -#: ../lib/modules/sambaSamAccount.inc:54 ../lib/modules/sambaSamAccount.inc:57 -#: ../lib/modules/sambaSamAccount.inc:60 ../lib/modules/sambaSamAccount.inc:61 -#: ../lib/modules/sambaSamAccount.inc:62 ../lib/modules/sambaSamAccount.inc:63 -#: ../lib/modules/sambaSamAccount.inc:64 ../lib/modules/sambaSamAccount.inc:65 -#: ../lib/modules/sambaSamAccount.inc:66 ../lib/modules/sambaSamAccount.inc:67 -#: ../lib/modules/sambaSamAccount.inc:68 ../lib/modules/sambaSamAccount.inc:69 -#: ../lib/modules/sambaSamAccount.inc:70 ../lib/modules/sambaSamAccount.inc:71 -#: ../lib/modules/sambaSamAccount.inc:72 ../lib/modules/posixAccount.inc:66 -#: ../lib/modules/posixAccount.inc:70 ../lib/modules/posixAccount.inc:74 -#: ../lib/modules/posixAccount.inc:82 ../lib/modules/posixAccount.inc:83 -#: ../lib/modules/posixAccount.inc:84 ../lib/modules/posixAccount.inc:85 -#: ../lib/modules/posixAccount.inc:86 ../lib/modules/posixAccount.inc:87 -#: ../lib/modules/posixAccount.inc:88 ../lib/modules/sambaGroupMapping.inc:352 -#: ../lib/modules/sambaGroupMapping.inc:353 -#: ../lib/modules/shadowAccount.inc:40 ../lib/modules/shadowAccount.inc:42 -#: ../lib/modules/shadowAccount.inc:44 ../lib/modules/shadowAccount.inc:46 -#: ../lib/modules/shadowAccount.inc:48 ../lib/modules/shadowAccount.inc:49 -#: ../lib/modules/inetOrgPerson.inc:53 ../lib/modules/inetOrgPerson.inc:55 -#: ../lib/modules/inetOrgPerson.inc:57 ../lib/modules/inetOrgPerson.inc:59 -#: ../lib/modules/inetOrgPerson.inc:61 ../lib/modules/inetOrgPerson.inc:63 -#: ../lib/modules/inetOrgPerson.inc:65 ../lib/modules/inetOrgPerson.inc:67 -#: ../lib/modules/inetOrgPerson.inc:69 ../lib/modules/inetOrgPerson.inc:71 -#: ../lib/modules/inetOrgPerson.inc:73 ../lib/modules/inetOrgPerson.inc:74 -#: ../lib/modules/inetLocalMailRecipient.inc:120 -#: ../lib/modules/inetLocalMailRecipient.inc:122 -#: ../lib/modules/inetLocalMailRecipient.inc:124 -#: ../lib/modules/nisMailAlias.inc:99 ../lib/modules/nisMailAlias.inc:101 -#, php-format -msgid "Account %s:" -msgstr "アカウント %s" - -#: ../templates/masscreate.php:78 -msgid "Account creation via file upload" -msgstr "ファイルアップロードã«ã‚ˆã‚‹ã‚¢ã‚«ã‚¦ãƒ³ãƒˆä½œæˆ" - -#: ../lib/modules/shadowAccount.inc:163 -msgid "Account expiration date. Format: DD-MM-YYYY" -msgstr "アカウント有効期é™ã€‚å½¢å¼ã¯: DD-MM-YYYY" - -#: ../help/help.inc:181 -msgid "Account expire date. Format: DD-MM-YYYY" -msgstr "アカウント有効期é™ã€‚å½¢å¼ã¯: DD-MM-YYYY" - -#: ../lib/modules/shadowAccount.inc:340 -msgid "Account inactive" -msgstr "アカウントãŒç„¡åŠ¹ã§ã™" - -#: ../lib/modules/sambaAccount.inc:116 ../lib/modules/sambaAccount.inc:234 -#: ../lib/modules/sambaAccount.inc:343 ../lib/modules/sambaAccount.inc:346 -#: ../lib/modules/sambaAccount.inc:704 ../lib/modules/sambaSamAccount.inc:158 -#: ../lib/modules/sambaSamAccount.inc:161 -#: ../lib/modules/sambaSamAccount.inc:250 -#: ../lib/modules/sambaSamAccount.inc:690 -#: ../lib/modules/sambaSamAccount.inc:843 ../help/help.inc:206 -msgid "Account is deactivated" -msgstr "無効ãªã‚¢ã‚«ã‚¦ãƒ³ãƒˆ" - -#: ../help/help.inc:130 -msgid "Account lists - Filters" -msgstr "アカウント一覧 - フィルター" - -#: ../templates/config/confmain.php:252 ../help/help.inc:112 -msgid "Account modules" -msgstr "アカウントモジュール" - -#: ../templates/delete.php:85 -msgid "Account name:" -msgstr "アカウントå:" - -#: ../lib/modules.inc:940 -msgid "Account was created successfully." -msgstr "アカウントãŒä½œæˆã•ã‚Œã¾ã—ãŸã€‚" - -#: ../lib/modules.inc:943 -msgid "Account was modified successfully." -msgstr "アカウントãŒå¤‰æ›´ã•ã‚Œã¾ã—ãŸã€‚" - -#: ../templates/tree/add_value_form.php:156 -#: ../templates/tree/add_value_form.php:181 -#: ../templates/tree/add_oclass_form.php:137 -#: ../templates/tree/add_attr_form.php:129 -#: ../templates/tree/add_attr_form.php:161 -#: ../templates/pdfedit/pdfpage.php:725 ../lib/modules/ieee802device.inc:153 -#: ../lib/modules/inetLocalMailRecipient.inc:215 -#: ../lib/modules/nisMailAlias.inc:181 -msgid "Add" -msgstr "追加" - -#: ../templates/pdfedit/pdfpage.php:713 -msgid "Add after" -msgstr "後ã‚ã«è¿½åŠ " - -#: ../templates/tree/edit.php:123 ../templates/tree/add_value_form.php:94 -#: ../templates/tree/add_attr_form.php:71 -#: ../templates/tree/add_attr_form.php:108 -#, php-format -msgid "Add new attribute" -msgstr "æ–°ã—ã„属性ã®è¿½åŠ " - -#: ../templates/tree/add_attr_form.php:141 -msgid "Add new binary attribute" -msgstr "æ–°ã—ã„ãƒã‚¤ãƒŠãƒªå±žæ€§ã®è¿½åŠ " - -#: ../templates/config/profmanage.php:172 ../help/help.inc:114 -msgid "Add profile" -msgstr "プロファイル追加" - -#: ../templates/pdfedit/pdfpage.php:699 -msgid "Add section or static text" -msgstr "セクションã¾ãŸé™çš„テキストを追加" - -#: ../templates/tree/add_value.php:93 -msgid "Adding attribute failed!" -msgstr "属性ã®è¿½åŠ ã«å¤±æ•—ã—ã¾ã—ãŸ!" - -#: ../lib/modules/posixAccount.inc:191 ../lib/modules/posixAccount.inc:336 -#: ../lib/modules/posixAccount.inc:856 ../lib/modules/posixAccount.inc:944 -#: ../lib/modules/posixAccount.inc:1008 ../lib/modules/posixAccount.inc:1085 -#: ../help/help.inc:148 -msgid "Additional groups" -msgstr "追加ã®ã‚°ãƒ«ãƒ¼ãƒ—" - -#: ../templates/massDoUpload.php:98 -msgid "Additional tasks for module:" -msgstr "モジュールã«å¯¾ã™ã‚‹è¿½åŠ ã‚¿ã‚¹ã‚¯:" - -#: ../lib/modules/sambaSamAccount.inc:545 -#: ../lib/modules/sambaSamAccount.inc:748 -#: ../lib/modules/sambaSamAccount.inc:751 -msgid "Administrator" -msgstr "管ç†è€…" - -#: ../lib/modules/posixGroup.inc:366 -msgid "Administrators group" -msgstr "管ç†è€…グループ" - -#: ../templates/domain.php:171 ../help/help.inc:259 -msgid "Algorithmic RID Base" -msgstr "アルゴリズム的ãªRIDベース" - -#: ../templates/domain.php:287 -msgid "Algorithmic RID base is not a number!" -msgstr "アルゴリズム的ãªRIDベースãŒæ•°å­—ã§ã‚ã‚Šã¾ã›ã‚“!" - -#: ../lib/modules/nisMailAlias.inc:60 ../lib/modules/nisMailAlias.inc:75 -#: ../lib/modules/nisMailAlias.inc:166 ../lib/modules/nisMailAlias.inc:305 -msgid "Alias name" -msgstr "別å" - -#: ../templates/schema/schema.php:232 -msgid "Aliases" -msgstr "別å" - -#: ../templates/initsuff.php:155 -msgid "All changes were successful." -msgstr "ã™ã¹ã¦ã®å¤‰æ›´ãŒæˆåŠŸã—ã¾ã—ãŸã€‚" - -#: ../lib/lists.inc:306 -msgid "Allowed hosts" -msgstr "許å¯ã•ã‚ŒãŸãƒ›ã‚¹ãƒˆ" - -#: ../lib/modules/sambaAccount.inc:810 ../lib/modules/sambaAccount.inc:811 -#: ../lib/modules/sambaSamAccount.inc:798 -#: ../lib/modules/sambaSamAccount.inc:799 -msgid "Allowed workstations" -msgstr "許å¯ã•ã‚ŒãŸãƒ¯ãƒ¼ã‚¯ã‚¹ãƒ†ãƒ¼ã‚·ãƒ§ãƒ³" - -#: ../templates/tree/edit.php:135 -#, php-format -msgid "An attribute (%s) was modified and is highlighted below." -msgstr "属性(%s)ãŒå¤‰æ›´ã•ã‚Œã€ãƒã‚¤ãƒ©ã‚¤ãƒˆè¡¨ç¤ºã•ã‚Œã¦ã„ã¾ã™ã€‚" - -#: ../templates/lists/listusers.php:274 -msgid "Apply" -msgstr "é©ç”¨" - -#: ../templates/tree/delete_form.php:148 -msgid "Are you sure you want to permanently delete this object?" -msgstr "本当ã«ã“ã®ã‚ªãƒ–ジェクトを削除ã—ã¾ã™ã‹?" - -#: ../templates/tree/update_confirm.php:148 -msgid "Attribute" -msgstr "属性" - -#: ../templates/schema/schema.php:75 ../templates/schema/schema.php:76 -msgid "Attribute types" -msgstr "属性タイプ" - -#: ../templates/config/confmain.php:323 ../lib/config.inc:364 -msgid "Attributes in Group List" -msgstr "グループリスト中ã®å±žæ€§" - -#: ../templates/config/confmain.php:333 ../lib/config.inc:365 -msgid "Attributes in Host List" -msgstr "ホストリスト中ã®å±žæ€§" - -#: ../templates/config/confmain.php:313 ../lib/config.inc:363 -msgid "Attributes in User List" -msgstr "ユーザリスト中ã®å±žæ€§" - -#: ../templates/pdfedit/pdfpage.php:852 -msgid "Available PDF fields" -msgstr "有効ãªPDFフィールド" - -#: ../lib/modules/posixAccount.inc:956 -msgid "Available groups" -msgstr "有効ãªã‚°ãƒ«ãƒ¼ãƒ—" - -#: ../templates/config/confmodules.php:197 -msgid "Available modules" -msgstr "有効ãªãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«" - -#: ../lib/modules/posixGroup.inc:238 -msgid "Available users" -msgstr "有効ãªãƒ¦ãƒ¼ã‚¶" - -#: ../lib/modules/sambaAccount.inc:816 ../lib/modules/sambaSamAccount.inc:804 -msgid "Available workstations" -msgstr "有効ãªãƒ¯ãƒ¼ã‚¯ã‚¹ãƒ†ãƒ¼ã‚·ãƒ§ãƒ³" - -#: ../templates/tree/update_confirm.php:251 ../lib/modules/posixGroup.inc:244 -#: ../lib/modules/posixGroup.inc:268 ../lib/modules/sambaAccount.inc:820 -#: ../lib/modules/sambaSamAccount.inc:808 ../lib/modules/posixAccount.inc:962 -#: ../lib/modules/posixAccount.inc:988 -msgid "Back" -msgstr "戻る" - -#: ../templates/config/confsave.php:254 ../templates/config/conflogin.php:151 -#: ../templates/logout.php:71 -msgid "Back to Login" -msgstr "ログインã«æˆ»ã‚‹" - -#: ../templates/ou_edit.php:309 ../templates/ou_edit.php:313 -msgid "Back to OU-Editor" -msgstr "OU-エディタã«æˆ»ã‚‹" - -#: ../templates/pdfedit/pdfdelete.php:61 ../templates/pdfedit/pdfdelete.php:69 -#: ../templates/pdfedit/pdfdelete.php:90 -msgid "Back to PDF Editor" -msgstr "PDFエディタã«æˆ»ã‚‹" - -#: ../templates/profedit/profilecreate.php:115 -#: ../templates/profedit/profiledelete.php:63 -#: ../templates/profedit/profiledelete.php:71 -#: ../templates/profedit/profiledelete.php:93 -msgid "Back to Profile Editor" -msgstr "プロファイルエディタã«æˆ»ã‚‹" - -#: ../lib/modules.inc:953 -msgid "Back to account list" -msgstr "アカウント一覧ã«æˆ»ã‚‹" - -#: ../templates/domain.php:325 ../templates/domain.php:352 -msgid "Back to domain list" -msgstr "ドメイン一覧ã«æˆ»ã‚‹" - -#: ../templates/lists/userlink.php:65 -msgid "Back to group list" -msgstr "グループ一覧ã«æˆ»ã‚‹" - -#: ../templates/delete.php:236 -msgid "Back to list" -msgstr "一覧ã«æˆ»ã‚‹" - -#: ../templates/config/confsave.php:93 ../templates/config/confsave.php:98 -#: ../templates/config/confsave.php:103 ../templates/config/confsave.php:108 -#: ../templates/config/confsave.php:113 ../templates/config/confsave.php:118 -#: ../templates/config/confsave.php:123 ../templates/config/confsave.php:128 -#: ../templates/config/confsave.php:133 ../templates/config/confsave.php:138 -#: ../templates/config/confsave.php:143 ../templates/config/confsave.php:148 -#: ../templates/config/confsave.php:154 ../templates/config/confsave.php:160 -#: ../templates/config/confsave.php:166 ../templates/config/confsave.php:172 -#: ../templates/config/confsave.php:178 ../templates/config/confsave.php:184 -#: ../templates/config/confsave.php:231 -msgid "Back to preferences..." -msgstr "プリファレンスã«æˆ»ã‚‹..." - -#: ../templates/config/profmanage.php:417 -msgid "Back to profile login" -msgstr "プロファイルログインã«æˆ»ã‚‹" - -#: ../templates/config/confmodules.php:108 ../help/help.inc:128 -msgid "Base module" -msgstr "ベースモジュール" - -#: ../templates/pdfedit/pdfpage.php:577 -msgid "Beginning" -msgstr "先頭" - -#: ../templates/tree/edit.php:168 ../templates/tree/edit.php:297 -msgid "Binary value" -msgstr "ãƒã‚¤ãƒŠãƒªå€¤" - -#: ../lib/modules/quota.inc:31 -msgid "Block hard quota" -msgstr "ブロック・ãƒãƒ¼ãƒ‰ã‚¯ã‚ªãƒ¼ã‚¿" - -#: ../lib/modules/quota.inc:31 -msgid "" -"Block hard quota contains invalid characters. Only natural numbers are " -"allowed." -msgstr "" -"ブロック・ãƒãƒ¼ãƒ‰ã‚¯ã‚©ãƒ¼ã‚¿ã«ä¸æ­£ãªæ–‡å­—ãŒå«ã¾ã‚Œã¦ã„ã¾ã™ã€‚自然数ã®ã¿ãŒæœ‰åŠ¹ã§ã™ã€‚" - -#: ../lib/modules/quota.inc:34 -msgid "Block quota" -msgstr "ブロック・クオータ" - -#: ../lib/modules/quota.inc:30 -msgid "Block soft quota" -msgstr "ブロック・ソフトクオータ" - -#: ../lib/modules/quota.inc:30 -msgid "" -"Block soft quota contains invalid characters. Only natural numbers are " -"allowed." -msgstr "" -"ブロック・ソフトクオータã«ä¸æ­£ãªæ–‡å­—ãŒå«ã¾ã‚Œã¦ã„ã¾ã™ã€‚自然数ã®ã¿ãŒæœ‰åŠ¹ã§ã™ã€‚" - -#: ../lib/modules/quota.inc:34 -msgid "Block soft quota must be smaller than block hard quota." -msgstr "" -"ブロック・ソフトクオータã¯ãƒ–ロック・ãƒãƒ¼ãƒ‰ã‚¯ã‚ªãƒ¼ã‚¿ã‚ˆã‚Šå°ã•ããªãã¦ã¯ãªã‚Šã¾ã›" -"ん。" - -#: ../templates/pdfedit/pdfpage.php:524 -msgid "Bottom" -msgstr "末尾" - -#: ../lib/modules/sambaGroupMapping.inc:55 -msgid "Builtin Group" -msgstr "既定ã®ã‚°ãƒ«ãƒ¼ãƒ—" - -#: ../templates/masscreate.php:127 -msgid "CSV file:" -msgstr "CSVファイル:" - -#: ../templates/config/confmain.php:231 ../lib/config.inc:357 -#: ../help/help.inc:108 -msgid "Cache timeout" -msgstr "キャッシュ有効時間" - -#: ../templates/config/confsave.php:97 -msgid "Cache timeout is invalid!" -msgstr "キャッシュ有効時間ãŒæ­£ã—ãã‚ã‚Šã¾ã›ã‚“。" - -#: ../lib/modules/posixGroup.inc:397 ../lib/modules/sambaAccount.inc:358 -#: ../lib/modules/sambaAccount.inc:361 ../lib/modules/sambaAccount.inc:364 -#: ../lib/modules/sambaAccount.inc:367 ../lib/modules/sambaAccount.inc:379 -#: ../lib/modules/sambaSamAccount.inc:173 -#: ../lib/modules/sambaSamAccount.inc:176 -#: ../lib/modules/sambaSamAccount.inc:179 -#: ../lib/modules/sambaSamAccount.inc:182 ../lib/modules/posixAccount.inc:337 -#: ../lib/modules/sambaGroupMapping.inc:282 -#: ../lib/modules/shadowAccount.inc:147 ../lib/modules/shadowAccount.inc:151 -#: ../lib/modules/shadowAccount.inc:155 ../lib/modules/shadowAccount.inc:159 -#: ../help/help.inc:149 ../help/help.inc:173 ../help/help.inc:175 -#: ../help/help.inc:177 ../help/help.inc:179 ../help/help.inc:211 -#: ../help/help.inc:213 ../help/help.inc:215 ../help/help.inc:217 -#: ../help/help.inc:219 ../help/help.inc:225 ../help/help.inc:235 -#: ../help/help.inc:237 ../help/help.inc:239 -msgid "Can be left empty." -msgstr "çœç•¥å¯" - -#: ../templates/tree/update_confirm.php:237 -#: ../templates/tree/delete_form.php:118 ../templates/tree/delete_form.php:167 -#: ../templates/domain.php:223 ../templates/domain.php:254 -#: ../templates/delete.php:104 ../templates/initsuff.php:188 -msgid "Cancel" -msgstr "中止" - -#: ../templates/login.php:356 ../templates/login.php:361 -msgid "Cannot connect to specified LDAP server. Please try again." -msgstr "指定ã•ã‚ŒãŸLDAPサーãƒã«æŽ¥ç¶šã§ãã¾ã›ã‚“。å†è©¦è¡Œã—ã¦ãã ã•ã„。" - -#: ../lib/config.inc:348 ../lib/config.inc:883 -msgid "Cannot open config file!" -msgstr "configファイルをオープンã§ãã¾ã›ã‚“!" - -#: ../templates/pdfedit/pdfpage.php:605 ../templates/pdfedit/pdfpage.php:611 -msgid "Change" -msgstr "変更" - -#: ../lib/modules/posixGroup.inc:188 -msgid "Change GID number of users and hosts" -msgstr "ユーザã¨ãƒ›ã‚¹ãƒˆã®GID番å·ã‚’変更" - -#: ../templates/config/profmanage.php:339 ../help/help.inc:122 -msgid "Change default profile" -msgstr "デフォルト・プロファイルã®å¤‰æ›´" - -#: ../templates/config/profmanage.php:364 ../help/help.inc:124 -msgid "Change master password" -msgstr "マスタパスワードã®å¤‰æ›´" - -#: ../lib/modules/posixGroup.inc:170 ../lib/modules/posixAccount.inc:884 -#: ../help/help.inc:106 -msgid "Change password" -msgstr "パスワードã®å¤‰æ›´" - -#: ../templates/login.php:292 -msgid "Change profile" -msgstr "プロファイルã®å¤‰æ›´" - -#: ../lib/lists.inc:356 -msgid "Change suffix" -msgstr "サフィックスã®å¤‰æ›´" - -#: ../lib/baseModule.inc:538 -#, php-format -msgid "Changed value %s because only numeric values are allowed." -msgstr "数値ã ã‘ãŒæœ‰åŠ¹ãªãŸã‚ã€%s ã®å€¤ã‚’変更ã—ã¾ã—ãŸã€‚" - -#: ../lib/baseModule.inc:555 -msgid "Changed value because only ASCII characters are allowed." -msgstr "ASCII文字ã ã‘ãŒæœ‰åŠ¹ãªãŸã‚ã€%s ã®å€¤ã‚’変更ã—ã¾ã—ãŸã€‚" - -#: ../templates/tree/create_form.php:75 -msgid "Choose a template" -msgstr "テンプレートをé¸æŠž" - -#: ../templates/tree/create.php:165 ../lib/config.inc:108 -msgid "Click here if you are not directed to the next page." -msgstr "自動的ã«æ¬¡ãƒšãƒ¼ã‚¸ã«ã‚¸ãƒ£ãƒ³ãƒ—ã—ãªã„å ´åˆã¯ã“ã“をクリックã—ã¦ãã ã•ã„。" - -#: ../templates/schema/schema.php:205 -msgid "Collective" -msgstr "集åˆå±žæ€§" - -#: ../templates/masscreate.php:135 -msgid "Columns:" -msgstr "カラム:" - -#: ../lib/modules/sambaAccount.inc:367 ../lib/modules/sambaSamAccount.inc:182 -msgid "" -"Comma separated list of Samba workstations the user is allowed to login. " -"Empty means every workstation." -msgstr "" -"ユーザãŒãƒ­ã‚°ã‚¤ãƒ³ã§ãã‚‹Sambaワークステーションã®ã‚³ãƒ³ãƒžåŒºåˆ‡ã‚Šãƒªã‚¹ãƒˆã€‚空入力ã¯ã™" -"ã¹ã¦ã®ãƒ¯ãƒ¼ã‚¯ã‚¹ãƒ†ãƒ¼ã‚·ãƒ§ãƒ³ã‚’æ„味ã—ã¾ã™ã€‚" - -#: ../help/help.inc:235 -msgid "Comma separated list of unix workstations the user is allowed to login." -msgstr "" -"ユーザãŒãƒ­ã‚°ã‚¤ãƒ³ã™ã‚‹äº‹ã‚’許å¯ã•ã‚ŒãŸunixワークステーショãŠã‚«ãƒ³ãƒžåŒºåˆ‡ã‚Šãƒªã‚¹ãƒˆã€‚" - -#: ../templates/tree/update_confirm.php:230 -msgid "Commit" -msgstr "æ›´æ–°" - -#: ../lib/modules/inetOrgPerson.inc:123 -msgid "Common name" -msgstr "æ°å(common name)" - -#: ../templates/login.php:130 -msgid "Configuration login" -msgstr "構æˆè¨­å®šãƒ­ã‚°ã‚¤ãƒ³" - -#: ../templates/login.php:274 -msgid "Configuration profile" -msgstr "構æˆãƒ—ロファイル" - -#: ../help/help.inc:46 ../help/help.inc:48 ../help/help.inc:60 -#: ../help/help.inc:66 ../help/help.inc:72 ../help/help.inc:87 -#: ../help/help.inc:92 ../help/help.inc:94 ../help/help.inc:96 -#: ../help/help.inc:101 ../help/help.inc:106 ../help/help.inc:108 -#: ../help/help.inc:110 ../help/help.inc:112 ../help/help.inc:128 -msgid "Configuration wizard" -msgstr "構æˆè¨­å®šã‚¦ã‚£ã‚¶ãƒ¼ãƒ‰" - -#: ../templates/config/confmodules.php:238 -msgid "Conflicting module:" -msgstr "競åˆã™ã‚‹ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«" - -#: ../templates/tree/templates/creation/custom.php:66 -#: ../templates/tree/templates/creation/new_ou_template.php:105 -msgid "Container" -msgstr "コンテナ" - -#: ../templates/tree/templates/creation/new_ou_template.php:64 -msgid "Container DN" -msgstr "コンテナã®DN" - -#: ../templates/tree/delete_attr.php:78 -msgid "Could not perform ldap_modify operation." -msgstr "ldap_modifyオペレーションを実行ã§ãã¾ã›ã‚“。" - -#: ../templates/config/profmanage.php:99 -msgid "Could not rename file!" -msgstr "ファイルåを変更ã§ãã¾ã›ã‚“!" - -#: ../templates/tree/templates/creation/custom.php:234 -#: ../templates/tree/templates/creation/new_ou_template.php:107 -#: ../templates/initsuff.php:187 -msgid "Create" -msgstr "作æˆ" - -#: ../lib/modules.inc:993 -msgid "Create Account" -msgstr "アカウント作æˆ" - -#: ../templates/tree/creation_template.php:84 -#: ../templates/tree/create_form.php:74 -msgid "Create Object" -msgstr "オブジェクト作æˆ" - -#: ../lib/modules.inc:952 -msgid "Create PDF file" -msgstr "PDFファイル作æˆ" - -#: ../templates/lists/listgroups.php:249 -msgid "Create PDF for all groups" -msgstr "全グループã®PDFファイル作æˆ" - -#: ../templates/lists/listhosts.php:234 -msgid "Create PDF for all hosts" -msgstr "全ホストã®PDFファイル作æˆ" - -#: ../templates/lists/listusers.php:294 -msgid "Create PDF for all users" -msgstr "全ユーザã®PDFファイル作æˆ" - -#: ../templates/lists/listgroups.php:247 -msgid "Create PDF for selected group(s)" -msgstr "é¸æŠžã•ã‚ŒãŸã‚°ãƒ«ãƒ¼ãƒ—ã®PDFファイル作æˆ" - -#: ../templates/lists/listhosts.php:232 -msgid "Create PDF for selected host(s)" -msgstr "é¸æŠžã•ã‚ŒãŸãƒ›ã‚¹ãƒˆã®PDFファイル作æˆ" - -#: ../templates/lists/listusers.php:292 -msgid "Create PDF for selected user(s)" -msgstr "é¸æŠžã•ã‚ŒãŸãƒ¦ãƒ¼ã‚¶ã®PDFファイル作æˆ" - -#: ../templates/pdfedit/pdfmain.php:109 -msgid "Create a new PDF structure for scope: " -msgstr "スコープã«å¯¾ã™ã‚‹æ–°ã—ã„PDF構æˆã‚’作æˆ:" - -#: ../templates/profedit/profilemain.php:119 -msgid "Create a new profile" -msgstr "æ–°ã—ã„プロファイルã®ä½œæˆ" - -#: ../lib/modules.inc:951 -msgid "Create another account" -msgstr "ä»–ã®ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã‚’作æˆ" - -#: ../templates/masscreate.php:99 -msgid "Create group accounts" -msgstr "グループアカウントを作æˆ" - -#: ../lib/modules/posixAccount.inc:865 -msgid "Create home directory" -msgstr "ホームディレクトリを作æˆ" - -#: ../templates/masscreate.php:102 -msgid "Create host accounts" -msgstr "ホストアカウントを作æˆ" - -#: ../lib/modules.inc:855 -msgid "Create new Account" -msgstr "æ–°ã—ã„アカウントを作æˆ" - -#: ../templates/tree/edit.php:121 ../templates/tree/tree.php:185 -#: ../templates/tree/tree.php:187 ../templates/tree/tree.php:188 -#: ../lib/tree.inc:66 ../lib/tree.inc:67 ../lib/tree.inc:129 -#: ../lib/tree.inc:131 ../lib/tree.inc:132 -msgid "Create new entry" -msgstr "æ–°ã—ã„エントリを作æˆ" - -#: ../templates/masscreate.php:96 -msgid "Create user accounts" -msgstr "ユーザアカウントを作æˆ" - -#: ../templates/config/profmanage.php:84 -msgid "Created new profile." -msgstr "æ–°ã—ã„プロファイルãŒä½œæˆã•ã‚Œã¾ã—ãŸã€‚" - -#: ../templates/tools.php:70 -msgid "Creates accounts by uploading a CSV formated file." -msgstr "CSVファイルをアップロードã™ã‚‹äº‹ã«ã‚ˆã£ã¦ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã‚’作æˆã—ã¾ã™ã€‚" - -#: ../templates/tree/add_value_form.php:100 -msgid "Current list of values for attribute:" -msgstr "属性ã«å¯¾ã™ã‚‹ç¾åœ¨ã®å€¤ã®ãƒªã‚¹ãƒˆ:" - -#: ../templates/tree/templates/templates.inc:51 -msgid "Custom" -msgstr "カスタム" - -#: ../templates/tree/edit.php:91 ../templates/tree/add_value_form.php:98 -#: ../templates/tree/add_oclass_form.php:117 -#: ../templates/tree/update_confirm.php:75 -#: ../templates/tree/add_attr_form.php:72 ../templates/tree/delete_form.php:76 -#: ../templates/tree/delete_form.php:150 ../templates/delete.php:86 -#: ../lib/modules.inc:1605 -msgid "DN" -msgstr "" - -#: ../templates/masscreate.php:138 -msgid "DN settings" -msgstr "DN設定" - -#: ../templates/masscreate.php:142 ../help/help.inc:139 -msgid "DN suffix" -msgstr "DNサフィックス" - -#: ../templates/tree/templates/creation/custom.php:96 -#: ../templates/massBuildAccounts.php:164 -msgid "Data field for RDN is empty!" -msgstr "RDNã®ãƒ‡ãƒ¼ã‚¿ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ãŒç©ºã§ã™!" - -#: ../lib/modules/sambaAccount.inc:350 ../lib/modules/sambaSamAccount.inc:165 -#: ../help/help.inc:203 -msgid "Date after the user is able to change his password. Format: DD-MM-YYYY" -msgstr "ユーザã«ã‚ˆã‚‹ãƒ‘スワード変更ã®ç¦æ­¢ãŒè§£ã‹ã‚Œã‚‹æ—¥ä»˜ã€‚å½¢å¼ã¯: DD-MM-YYYY" - -#: ../lib/modules/sambaAccount.inc:352 ../lib/modules/sambaSamAccount.inc:167 -#: ../help/help.inc:205 -msgid "Date after the user must change his password. Format: DD-MM-YYYY" -msgstr "ユーザãŒãƒ‘スワードを変更ã—ãªã‘ã‚Œã°ãªã‚‰ãªããªã‚‹æ—¥ä»˜ã€‚å½¢å¼ã¯: DD-MM-YYYY" - -#: ../lib/modules/shadowAccount.inc:147 ../help/help.inc:173 -msgid "" -"Days before password is to expire that user is warned of pending password " -"expiration. If set value must be 0<." -msgstr "" -"パスワードãŒæœŸé™åˆ‡ã‚Œã«ãªã‚‹å‰ã«ãƒ¦ãƒ¼ã‚¶ã¸ãƒ‘スワード期é™åˆ‡ã‚Œã®çŒ¶äºˆæœŸé–“ã§ã‚る旨を" -"警告ã™ã‚‹æ—¥æ•°ã€‚ã‚‚ã—ã‚‚ãã®å€¤ã‚’設定ã™ã‚‹ãªã‚‰0より大ãããªã‘ã‚Œã°ãªã‚‰ãªã„。" - -#: ../templates/config/confmain.php:371 ../lib/config.inc:367 -#: ../help/help.inc:94 -msgid "Default language" -msgstr "è¦å®šã®è¨€èªž" - -#: ../templates/masscreate.php:151 ../templates/masscreate.php:308 -msgid "Default value" -msgstr "既定値" - -#: ../templates/tree/edit.php:113 ../templates/tree/delete_form.php:158 -#: ../templates/domain.php:253 ../templates/delete.php:103 -#: ../lib/tree.inc:1185 -msgid "Delete" -msgstr "削除" - -#: ../templates/tree/delete_form.php:75 -#, php-format -msgid "Delete %s" -msgstr "%s を削除" - -#: ../templates/delete.php:71 ../templates/delete.php:120 -msgid "Delete Account" -msgstr "アカウント削除" - -#: ../templates/lists/listdomains.php:209 -msgid "Delete Domain(s)" -msgstr "ドメインã®å‰Šé™¤" - -#: ../templates/lists/listgroups.php:238 -msgid "Delete Group(s)" -msgstr "グループã®å‰Šé™¤" - -#: ../templates/lists/listhosts.php:223 -msgid "Delete Host(s)" -msgstr "ホストã®å‰Šé™¤" - -#: ../templates/pdfedit/pdfdelete.php:48 ../templates/pdfedit/pdfmain.php:133 -msgid "Delete PDF structure" -msgstr "PDF構æˆã®å‰Šé™¤" - -#: ../templates/tree/delete_form.php:110 -#, php-format -msgid "Delete all %s objects" -msgstr "å…¨ã¦ã® %s オブジェクトを削除" - -#: ../templates/domain.php:244 -msgid "Delete domain(s)" -msgstr "ドメインを削除" - -#: ../lib/modules/posixAccount.inc:913 -msgid "Delete home directory" -msgstr "ホームディレクトリを削除" - -#: ../templates/pdfedit/pdfdelete.php:68 -#: ../templates/profedit/profiledelete.php:70 -msgid "Delete operation canceled." -msgstr "削除æ“作ãŒã‚­ãƒ£ãƒ³ã‚»ãƒ«ã•ã‚Œã¾ã—ãŸã€‚" - -#: ../templates/ou_edit.php:354 ../templates/ou_edit.php:391 -#: ../templates/ou_edit.php:428 ../templates/ou_edit.php:465 -#: ../help/help.inc:245 -msgid "Delete organizational unit" -msgstr "organizational unitを削除" - -#: ../templates/config/profmanage.php:258 -#: ../templates/profedit/profiledelete.php:52 -#: ../templates/profedit/profilemain.php:145 ../help/help.inc:118 -msgid "Delete profile" -msgstr "プロファイルを削除" - -#: ../templates/lists/listusers.php:283 -msgid "Delete user(s)" -msgstr "ユーザを削除" - -#: ../lib/modules/sambaGroupMapping.inc:56 -msgid "Deleted Account" -msgstr "削除ã•ã‚ŒãŸã‚¢ã‚«ã‚¦ãƒ³ãƒˆ" - -#: ../templates/delete.php:225 -#, php-format -msgid "Deleted DN: %s" -msgstr "削除ã•ã‚ŒãŸDN: %s" - -#: ../templates/pdfedit/pdfdelete.php:59 -msgid "Deleted PDF structure:" -msgstr "削除ã—ãŸPDF構æˆ:" - -#: ../templates/profedit/profiledelete.php:62 -msgid "Deleted profile:" -msgstr "削除ã—ãŸãƒ—ロファイル:" - -#: ../templates/tree/rdelete.php:70 ../templates/tree/rdelete.php:132 -#: ../templates/tree/rdelete.php:144 -#, php-format -msgid "Deleting %s" -msgstr "%s を削除ã—ã¦ã„ã¾ã™" - -#: ../templates/delete.php:127 -msgid "Deleting. Please stand by ..." -msgstr "削除中ã§ã™ã€‚ãŠå¾…ã¡ãã ã•ã„ ..." - -#: ../templates/tree/add_value_form.php:185 ../templates/schema/schema.php:95 -#: ../templates/schema/schema.php:149 ../templates/schema/schema.php:352 -#: ../lib/modules/account.inc:73 ../lib/modules/account.inc:149 -#: ../lib/modules/account.inc:166 ../lib/modules/posixGroup.inc:148 -#: ../lib/modules/posixGroup.inc:392 ../lib/modules/posixGroup.inc:434 -#: ../lib/modules/sambaAccount.inc:841 ../lib/modules/sambaSamAccount.inc:959 -#: ../lib/modules/posixAccount.inc:270 -#: ../lib/modules/sambaGroupMapping.inc:303 -#: ../lib/modules/shadowAccount.inc:342 ../lib/modules/inetOrgPerson.inc:143 -#: ../lib/modules/inetOrgPerson.inc:392 ../lib/modules/inetOrgPerson.inc:460 -#: ../lib/lists.inc:312 -msgid "Description" -msgstr "説明" - -#: ../lib/modules/sambaAccount.inc:198 ../lib/modules/sambaAccount.inc:319 -#: ../lib/modules/sambaAccount.inc:833 ../lib/modules/sambaSamAccount.inc:134 -#: ../lib/modules/sambaSamAccount.inc:214 -#: ../lib/modules/sambaSamAccount.inc:951 -#: ../lib/modules/sambaGroupMapping.inc:159 -#: ../lib/modules/sambaGroupMapping.inc:269 -#: ../lib/modules/sambaGroupMapping.inc:301 ../help/help.inc:184 -msgid "Display name" -msgstr "表示å" - -#: ../lib/modules.inc:470 -msgid "" -"Displayed account numbers start at \"0\". Add 2 to get the row in your " -"spreadsheet." -msgstr "" -"表示ã•ã‚Œã¦ã„るアカウント番å·ã¯\"0\"ã‹ã‚‰å§‹ã¾ã£ã¦ã„ã¾ã™ã€‚表計算シート上ã®è¡Œç•ªå·" -"を求ã‚ãŸã„å ´åˆã¯ã€2を足ã—ã¦ãã ã•ã„。" - -#: ../templates/domain.php:245 -msgid "Do you really want to delete domain(s):" -msgstr "本当ã«ãƒ‰ãƒ¡ã‚¤ãƒ³ã‚’削除ã—ã¾ã™ã‹?" - -#: ../templates/ou_edit.php:87 ../templates/ou_edit.php:152 -#: ../templates/ou_edit.php:217 ../templates/ou_edit.php:282 -msgid "Do you really want to delete this OU?" -msgstr "本当ã«ã“ã®OUを削除ã—ã¾ã™ã‹?" - -#: ../templates/pdfedit/pdfdelete.php:77 -msgid "Do you really want to delete this PDF structure?" -msgstr "本当ã«ã“ã®PDF構æˆã‚’削除ã—ã¾ã™ã‹?" - -#: ../templates/profedit/profiledelete.php:80 -msgid "Do you really want to delete this profile?" -msgstr "本当ã«ã“ã®ãƒ—ロファイルを削除ã—ã¾ã™ã‹?" - -#: ../templates/delete.php:80 -msgid "Do you really want to remove the following accounts?" -msgstr "本当ã«ã“ã®ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã‚’削除ã—ã¾ã™ã‹?" - -#: ../templates/tree/update_confirm.php:142 -msgid "Do you want to make these changes?" -msgstr "ã“れらã®å¤‰æ›´ã‚’è¡Œãªã„ã¾ã™ã‹?" - -#: ../lib/modules/sambaAccount.inc:155 ../lib/modules/sambaAccount.inc:300 -#: ../lib/modules/sambaAccount.inc:310 ../lib/modules/sambaAccount.inc:378 -#: ../lib/modules/sambaAccount.inc:775 ../lib/modules/sambaAccount.inc:784 -#: ../lib/modules/sambaAccount.inc:840 ../lib/modules/sambaSamAccount.inc:194 -#: ../lib/modules/sambaSamAccount.inc:207 -#: ../lib/modules/sambaSamAccount.inc:326 -#: ../lib/modules/sambaSamAccount.inc:763 -#: ../lib/modules/sambaSamAccount.inc:771 -#: ../lib/modules/sambaSamAccount.inc:886 -#: ../lib/modules/sambaSamAccount.inc:899 -#: ../lib/modules/sambaSamAccount.inc:958 -#: ../lib/modules/sambaGroupMapping.inc:53 -#: ../lib/modules/sambaGroupMapping.inc:187 -#: ../lib/modules/sambaGroupMapping.inc:281 -#: ../lib/modules/sambaGroupMapping.inc:323 ../help/help.inc:218 -#: ../help/help.inc:236 -msgid "Domain" -msgstr "ドメイン" - -#: ../lib/modules/sambaAccount.inc:33 ../lib/modules/sambaAccount.inc:295 -#: ../lib/modules/sambaSamAccount.inc:33 -#: ../lib/modules/sambaGroupMapping.inc:40 -#: ../lib/modules/sambaGroupMapping.inc:254 -msgid "Domain Admins" -msgstr "ドメイン管ç†è€…(Domain Admins)" - -#: ../lib/modules/sambaAccount.inc:35 ../lib/modules/sambaSamAccount.inc:34 -#: ../lib/modules/sambaGroupMapping.inc:45 -msgid "Domain Certificate Admins" -msgstr "ドメイン証明書管ç†è€…(Domain Certificate Admins)" - -#: ../lib/modules/sambaAccount.inc:34 ../lib/modules/sambaAccount.inc:519 -#: ../lib/modules/sambaSamAccount.inc:34 -#: ../lib/modules/sambaSamAccount.inc:484 -#: ../lib/modules/sambaGroupMapping.inc:43 -msgid "Domain Computers" -msgstr "ドメインコンピュータ(Domain Computers)" - -#: ../lib/modules/sambaAccount.inc:35 ../lib/modules/sambaSamAccount.inc:34 -#: ../lib/modules/sambaGroupMapping.inc:44 -msgid "Domain Controllers" -msgstr "ドメインコントローラ(Domain Controllers)" - -#: ../lib/modules/sambaAccount.inc:36 ../lib/modules/sambaSamAccount.inc:35 -#: ../lib/modules/sambaGroupMapping.inc:47 -msgid "Domain Enterprise Admins" -msgstr "ドメインエンタープライズ管ç†è€…(Domain Enterprise Admins)" - -#: ../lib/modules/sambaGroupMapping.inc:52 -#: ../lib/modules/sambaGroupMapping.inc:179 -msgid "Domain Group" -msgstr "ドメイングループ(Domain Group)" - -#: ../lib/modules/sambaAccount.inc:34 ../lib/modules/sambaSamAccount.inc:33 -#: ../lib/modules/sambaGroupMapping.inc:42 -msgid "Domain Guests" -msgstr "ドメインゲスト(Domain Guests)" - -#: ../lib/modules/sambaAccount.inc:37 ../lib/modules/sambaSamAccount.inc:35 -#: ../lib/modules/sambaGroupMapping.inc:48 -msgid "Domain Policy Admins" -msgstr "ドメインãƒãƒªã‚·ãƒ¼ç®¡ç†è€…(Domain Policy Admins)" - -#: ../templates/lists/listdomains.php:100 ../templates/domain.php:109 -#: ../help/help.inc:251 -msgid "Domain SID" -msgstr "ドメインã®SID" - -#: ../lib/modules/sambaAccount.inc:36 ../lib/modules/sambaSamAccount.inc:35 -#: ../lib/modules/sambaGroupMapping.inc:46 -msgid "Domain Schema Admins" -msgstr "ドメインスキーマ管ç†è€…(Domain Schema Admins)" - -#: ../templates/domain.php:83 -msgid "Domain Settings" -msgstr "ドメインã®è¨­å®š" - -#: ../lib/modules/sambaAccount.inc:33 ../lib/modules/sambaSamAccount.inc:33 -#: ../lib/modules/sambaSamAccount.inc:1202 -#: ../lib/modules/sambaGroupMapping.inc:41 -msgid "Domain Users" -msgstr "ドメインユーザ(Domain Users)" - -#: ../lib/modules/sambaGroupMapping.inc:248 -msgid "Domain administrators" -msgstr "ドメイン管ç†è€…(Domain administrator)" - -#: ../templates/domain.php:348 -msgid "Domain deleted successfully." -msgstr "ドメインã®å‰Šé™¤ã«æˆåŠŸã—ã¾ã—ãŸã€‚" - -#: ../templates/domain.php:304 -msgid "Domain has been modified." -msgstr "ドメインãŒå¤‰æ›´ã•ã‚Œã¾ã—ãŸã€‚" - -#: ../templates/lists/listdomains.php:99 ../templates/domain.php:88 -#: ../lib/modules/sambaAccount.inc:57 ../help/help.inc:247 -msgid "Domain name" -msgstr "ドメインå" - -#: ../lib/modules/sambaAccount.inc:57 ../lib/modules/sambaAccount.inc:58 -msgid "" -"Domain name contains invalid characters. Valid characters are: a-z, A-Z, 0-9 " -"and -." -msgstr "" -"ドメインåã«ä¸æ­£ãªæ–‡å­—ãŒå«ã¾ã‚Œã¦ã„ã¾ã™ã€‚有効ãªæ–‡å­—ã¯: a-z, A-Z, 0-9 㨠-ã§" -"ã™ã€‚" - -#: ../templates/domain.php:277 -msgid "Domain name is invalid!" -msgstr "ドメインåãŒæ­£ã—ãã‚ã‚Šã¾ã›ã‚“!" - -#: ../templates/config/confmain.php:207 ../lib/config.inc:361 -msgid "DomainSuffix" -msgstr "ドメインサフィックス" - -#: ../templates/config/confsave.php:122 -msgid "DomainSuffix is invalid!" -msgstr "ドメインサフィックスãŒæ­£ã—ãã‚ã‚Šã¾ã›ã‚“!" - -#: ../templates/ou_edit.php:447 -msgid "Domains" -msgstr "ドメイン" - -#: ../templates/pdfedit/pdfpage.php:581 -msgid "Down" -msgstr "下ã¸" - -#: ../templates/masscreate.php:263 -msgid "Download sample CSV file" -msgstr "サンプルCSVファイルをダウンロード" - -#: ../lib/modules/sambaAccount.inc:355 ../lib/modules/sambaSamAccount.inc:170 -msgid "Drive letter assigned on windows workstations as homedirectory." -msgstr "" -"Windows ワークステーションã®ãƒ›ãƒ¼ãƒ ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã¨ã—ã¦å‰²ã‚Šå½“ã¦ã‚‰ã‚ŒãŸãƒ‰ãƒ©ã‚¤ãƒ–æ–‡" -"字。" - -#: ../help/help.inc:209 -msgid "Driveletter assigned on windows workstations as homedirectory." -msgstr "" -"Windowsワークステーションã®ãƒ›ãƒ¼ãƒ ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã«å‰²ã‚Šå½“ã¦ã‚‰ã‚ŒãŸãƒ‰ãƒ©ã‚¤ãƒ–文字。" - -#: ../lib/lists.inc:311 -msgid "E-Mail" -msgstr "é›»å­ãƒ¡ãƒ¼ãƒ«" - -#: ../templates/lists/listhosts.php:175 ../templates/lists/listgroups.php:175 -#: ../templates/lists/listdomains.php:175 ../templates/lists/listusers.php:221 -msgid "Edit" -msgstr "編集" - -#: ../templates/pdfedit/pdfmain.php:121 -msgid "Edit PDF structure" -msgstr "PDF構æˆã®ç·¨é›†" - -#: ../lib/modules/posixAccount.inc:857 -msgid "Edit groups" -msgstr "グループã®ç·¨é›†" - -#: ../lib/modules/posixGroup.inc:153 -msgid "Edit members" -msgstr "メンãƒãƒ¼ã®ç·¨é›†" - -#: ../templates/config/confmain.php:260 -msgid "Edit modules" -msgstr "モジュールã®ç·¨é›†" - -#: ../templates/profedit/profilemain.php:132 -msgid "Edit profile" -msgstr "プロファイルã®ç·¨é›†" - -#: ../lib/modules/sambaAccount.inc:740 ../lib/modules/sambaSamAccount.inc:726 -msgid "Edit workstations" -msgstr "ワークステーションã®ç·¨é›†??" - -#: ../lib/modules/inetOrgPerson.inc:72 ../lib/modules/inetOrgPerson.inc:101 -#: ../lib/modules/inetOrgPerson.inc:155 ../lib/modules/inetOrgPerson.inc:239 -#: ../lib/modules/inetOrgPerson.inc:416 ../lib/modules/inetOrgPerson.inc:465 -msgid "Employee type" -msgstr "雇用形態" - -#: ../lib/modules/inetOrgPerson.inc:240 -msgid "Employee type: Contractor, Employee, Intern, Temp, External, ..." -msgstr "雇用形態: 正社員ã€å®Ÿç¿’生ã€è‡¨æ™‚雇用ã€æ´¾é£ã€..." - -#: ../templates/login.php:329 -msgid "Empty password submitted. Please try again." -msgstr "パスワードãŒç©ºã§ã™ã€‚ã‚„ã‚Šç›´ã—ã¦ãã ã•ã„。" - -#: ../templates/tree/download_binary_attr.php:70 -msgid "Encountered an error while performing search." -msgstr "検索実行中ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚" - -#: ../templates/tree/add_value_form.php:136 -msgid "Enter the value you would like to add:" -msgstr "追加ã—ãŸã„値を入力ã—ã¦ãã ã•ã„:" - -#: ../templates/tree/rdelete.php:114 -#, php-format -msgid "Entry %s and sub-tree deleted successfully." -msgstr "エントリ %s ã¨ã‚µãƒ–ツリーã¯å‰Šé™¤ã•ã‚Œã¾ã—ãŸã€‚" - -#: ../templates/tree/delete.php:103 -#, php-format -msgid "Entry %s deleted successfully." -msgstr "エントリ %s ã¯å‰Šé™¤ã•ã‚Œã¾ã—ãŸã€‚" - -#: ../templates/schema/schema.php:172 -msgid "Equality" -msgstr "ç…§åˆè¦å‰‡" - -#: ../templates/delete.php:230 -#, php-format -msgid "Error while deleting DN: %s" -msgstr "DN: %s ã®å‰Šé™¤ä¸­ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚" - -#: ../help/help.inc:129 -msgid "" -"Every account type needs exactly one base module. This module provides a " -"structural object class." -msgstr "" -"å…¨ã¦ã®ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã‚¿ã‚¤ãƒ—ã«ã¯ãŸã ä¸€ã¤ã®ãƒ™ãƒ¼ã‚¹ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ãŒå¿…è¦ã§ã™ã€‚ã“ã®ãƒ¢ã‚¸ãƒ¥ãƒ¼" -"ルã¯æ§‹é€ åž‹ã®ã‚ªãƒ–ジェクトクラスをæä¾›ã—ã¾ã™ã€‚" - -#: ../help/help.inc:69 ../help/help.inc:75 ../help/help.inc:90 -msgid "Example" -msgstr "例" - -#: ../templates/masscreate.php:150 ../templates/masscreate.php:164 -#: ../templates/masscreate.php:304 -msgid "Example value" -msgstr "例" - -#: ../help/help.inc:51 ../help/help.inc:63 -msgid "Examples" -msgstr "例" - -#: ../help/help.inc:188 -msgid "Expand suffix with primary groupname" -msgstr "プライマリグループåã§ã‚µãƒ•ã‚£ãƒƒã‚¯ã‚¹ã‚’補完" - -#: ../lib/modules/shadowAccount.inc:93 ../lib/modules/shadowAccount.inc:162 -#: ../lib/modules/shadowAccount.inc:194 ../lib/modules/shadowAccount.inc:317 -msgid "Expiration date" -msgstr "有効期é™" - -#: ../help/help.inc:180 -msgid "Expire date" -msgstr "有効期é™" - -#: ../templates/domain.php:322 -msgid "Failed to add domain!" -msgstr "ドメイン追加ã«å¤±æ•—ã—ã¾ã—ãŸ!" - -#: ../templates/tree/add_attr.php:128 -msgid "Failed to add the attribute." -msgstr "属性ã®è¿½åŠ ã«å¤±æ•—ã—ã¾ã—ãŸ!" - -#: ../templates/initsuff.php:149 -msgid "Failed to create entry!" -msgstr "エントリ作æˆã«å¤±æ•—ã—ã¾ã—ãŸ!" - -#: ../templates/tree/rdelete.php:117 ../templates/tree/rdelete.php:138 -#: ../templates/tree/rdelete.php:150 -#, php-format -msgid "Failed to delete entry %s" -msgstr "エントリ %s ã®å‰Šé™¤ã«å¤±æ•—ã—ã¾ã—ãŸ!" - -#: ../templates/domain.php:305 -msgid "Failed to modify domain!" -msgstr "ドメイン変更ã«å¤±æ•—ã—ã¾ã—ãŸ!" - -#: ../lib/modules/inetOrgPerson.inc:60 ../lib/modules/inetOrgPerson.inc:191 -#: ../lib/modules/inetOrgPerson.inc:263 ../lib/modules/inetOrgPerson.inc:264 -#: ../lib/modules/inetOrgPerson.inc:440 ../lib/modules/inetOrgPerson.inc:471 -msgid "Fax number" -msgstr "ファクス番å·" - -#: ../templates/tools.php:69 -msgid "File upload" -msgstr "ファイルã®ã‚¢ãƒƒãƒ—ロード" - -#: ../templates/tree/add_attr.php:91 -msgid "File upload failed!" -msgstr "ファイルã®ã‚¢ãƒƒãƒ—ロードã«å¤±æ•—ã—ã¾ã—ãŸ!" - -#: ../lib/modules/sambaAccount.inc:364 ../lib/modules/sambaSamAccount.inc:179 -#: ../help/help.inc:211 -msgid "" -"Filename and -path relative to netlogon-share which should be executed on " -"logon. $user and $group are replaced with user- and groupname." -msgstr "" -"ログオンã®æ™‚ã«å®Ÿè¡Œã•ã‚Œã‚‹ã€ãƒãƒƒãƒˆãƒ­ã‚°ã‚ªãƒ³å…±æœ‰ã¸ã®ç›¸å¯¾çš„ãªãƒ‘スã¨ãƒ•ã‚¡ã‚¤ãƒ«å。 " -"$user 㨠$group ã¯ãƒ¦ãƒ¼ã‚¶ã¨ã‚°ãƒ«ãƒ¼ãƒ—åã«ç½®ãæ›ãˆã‚‰ã‚Œã¾ã™ã€‚" - -#: ../lib/lists.inc:217 -msgid "Filter" -msgstr "フィルタ" - -#: ../lib/modules/inetOrgPerson.inc:52 ../lib/modules/inetOrgPerson.inc:130 -#: ../lib/modules/inetOrgPerson.inc:231 ../lib/modules/inetOrgPerson.inc:408 -#: ../lib/modules/inetOrgPerson.inc:463 ../lib/lists.inc:307 -#: ../help/help.inc:194 -msgid "First name" -msgstr "(姓ã§ãªã„)å" - -#: ../lib/modules/inetOrgPerson.inc:52 ../lib/modules/inetOrgPerson.inc:53 -msgid "First name contains invalid characters!" -msgstr "(姓ã§ãªã„)åå‰ã«ä¸æ­£ãªæ–‡å­—ãŒã‚ã‚‹" - -#: ../lib/modules/inetOrgPerson.inc:232 ../help/help.inc:195 -msgid "First name of user. Only letters, - and spaces are allowed." -msgstr "ユーザã®(姓ã§ãªã„)åå‰ã€‚アルファベット, _- ã¨ç©ºç™½ã®ã¿æœ‰åŠ¹." - -#: ../lib/modules/posixGroup.inc:144 ../lib/modules/posixGroup.inc:358 -#: ../lib/modules/posixGroup.inc:388 ../lib/modules/posixGroup.inc:413 -#: ../lib/modules/posixGroup.inc:432 ../lib/modules/posixGroup.inc:463 -#: ../lib/modules/posixAccount.inc:41 ../lib/modules/posixAccount.inc:1082 -#: ../lib/modules/sambaGroupMapping.inc:299 ../lib/lists.inc:304 -#: ../lib/lists.inc:318 ../lib/lists.inc:331 ../help/help.inc:160 -msgid "GID number" -msgstr "GID番å·" - -#: ../lib/modules/posixGroup.inc:463 -msgid "" -"GID number has changed. Please select checkbox to change GID number of users " -"and hosts." -msgstr "" -"GID番å·ãŒå¤‰æ›´ã•ã‚Œã¾ã—ãŸã€‚ユーザã¨ãƒ›ã‚¹ãƒˆã®GID番å·ã‚’変更ã™ã‚‹å ´åˆã¯ã€ãƒã‚§ãƒƒã‚¯" -"ボックスをé¸æŠžã—ã¦ãã ã•ã„。" - -#: ../lib/modules/posixAccount.inc:41 -#, php-format -msgid "" -"GID number has changed. To keep file ownership you have to run the following " -"command as root: 'find / -gid %s -uid %s -exec chgrp %s {} \\;'" -msgstr "" -"GID番å·ãŒå¤‰æ›´ã•ã‚Œã¾ã—ãŸã€‚ファイルã®æ‰€æœ‰è€…属性を維æŒã™ã‚‹ãŸã‚ã«ã€root権é™ã§ä»¥ä¸‹" -"ã®ã‚³ãƒžãƒ³ãƒ‰ã‚’実行ã—ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“: 'find / -gid %s -uid %s -exec chgrp %s " -"{} \\;'" - -#: ../lib/modules/posixGroup.inc:470 -msgid "GID number has to be a numeric value!" -msgstr "GID番å·ã¯æ•°å€¤ã§ãªãã¦ã¯ãªã‚Šã¾ã›ã‚“。" - -#: ../lib/modules/posixGroup.inc:314 -msgid "GID ranges for Unix groups" -msgstr "unixグループã®GID範囲" - -#: ../lib/modules/account.inc:48 ../lib/modules/posixAccount.inc:226 -#: ../lib/modules/posixAccount.inc:258 ../lib/modules/posixAccount.inc:311 -#: ../lib/modules/posixAccount.inc:346 ../lib/modules/posixAccount.inc:845 -#: ../lib/modules/posixAccount.inc:1083 ../lib/modules/inetOrgPerson.inc:223 -#: ../lib/modules/inetOrgPerson.inc:273 ../help/help.inc:152 -#: ../help/help.inc:162 ../help/help.inc:170 -msgid "Gecos" -msgstr "" - -#: ../lib/modules/posixGroup.inc:159 ../lib/modules/posixAccount.inc:873 -msgid "Generate password" -msgstr "パスワードã®ä½œæˆ" - -#: ../templates/schema/schema.php:134 ../templates/schema/schema.php:271 -#: ../templates/schema/schema.php:302 ../templates/schema/schema.php:327 -msgid "Go" -msgstr "" - -#: ../lib/modules/quota.inc:80 ../lib/modules/quota.inc:295 -msgid "Grace block period" -msgstr "ブロック猶予期間" - -#: ../lib/modules/quota.inc:81 -msgid "" -"Grace block period. Most filesystems use a fixed maximum value of 7 days." -msgstr "" -"ブロッククオータã®çŒ¶äºˆæœŸé–“。 ã»ã¨ã‚“ã©ã®ãƒ•ã‚¡ã‚¤ãƒ«ã‚·ã‚¹ãƒ†ãƒ ã¯ã€æœ€å¤§å€¤ã§ã‚ã‚‹7日間" -"を固定値ã¨ã—ã¦ä½¿ç”¨ã—ã¾ã™ã€‚" - -#: ../lib/modules/quota.inc:97 -msgid "" -"Grace inode (files) period. Most filesystems use a fixed maximum value of 7 " -"days." -msgstr "" -"iノード(ファイル)クオータã®çŒ¶äºˆæœŸé–“。 ã»ã¨ã‚“ã©ã®ãƒ•ã‚¡ã‚¤ãƒ«ã‚·ã‚¹ãƒ†ãƒ ã¯ã€æœ€å¤§å€¤ã§" -"ã‚ã‚‹7日間を固定値ã¨ã—ã¦ä½¿ç”¨ã—ã¾ã™ã€‚" - -#: ../lib/modules/quota.inc:96 ../lib/modules/quota.inc:299 -msgid "Grace inode period" -msgstr "iノードクオータã®çŒ¶äºˆæœŸé–“" - -#: ../lib/modules/posixGroup.inc:364 ../lib/lists.inc:321 -msgid "Group description" -msgstr "グループã®èª¬æ˜Ž" - -#: ../lib/modules/posixGroup.inc:393 ../help/help.inc:163 -msgid "Group description. If left empty group name will be used." -msgstr "グループã®èª¬æ˜Žã€‚ã‚‚ã—も空ãªã‚‰ã°ã€ã‚°ãƒ«ãƒ¼ãƒ—åãŒä½¿ã‚ã‚Œã¾ã™ã€‚" - -#: ../lib/pdf.inc:452 -msgid "Group information page" -msgstr "グループ情報ページ" - -#: ../templates/config/confsave.php:137 -msgid "Group list attributes are invalid!" -msgstr "グループリストã®å±žæ€§ãŒæ­£ã—ãã‚ã‚Šã¾ã›ã‚“!" - -#: ../lib/lists.inc:320 -msgid "Group member DNs" -msgstr "グループメンãƒã®DN" - -#: ../lib/modules/posixGroup.inc:152 ../lib/modules/posixGroup.inc:226 -#: ../lib/modules/posixGroup.inc:370 ../lib/modules/posixGroup.inc:396 -#: ../lib/modules/posixGroup.inc:400 ../lib/modules/posixGroup.inc:433 -#: ../lib/lists.inc:319 ../help/help.inc:182 ../help/help.inc:238 -msgid "Group members" -msgstr "グループメンãƒ" - -#: ../templates/config/confmodules.php:80 ../templates/config/confmain.php:257 -#: ../lib/config.inc:372 -msgid "Group modules" -msgstr "グループモジュール" - -#: ../lib/modules/posixGroup.inc:350 ../lib/lists.inc:317 -msgid "Group name" -msgstr "グループå" - -#: ../lib/modules/posixGroup.inc:385 ../help/help.inc:159 -msgid "" -"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." -msgstr "" -"作æˆã—よã†ã¨ã—ã¦ã„るグループã®ã‚°ãƒ«ãƒ¼ãƒ—å。有効ãªæ–‡å­—ã¯: a-z,0-9, .-_ ã§ã™ã€‚" -"groupaddコマンドã§è¨±ã•ã‚Œã¦ã„ãªã„ãŸã‚ã€å…ˆé ­ã®æ–‡å­—ã¨ã—ã¦æ•°å­—ã¯ä½¿ãˆã¾ã›ã‚“。大文" -"å­—ã®A-Zã¯ã€ã„ãã¤ã‹ã®å•é¡Œã‚’引ãèµ·ã“ã™äº‹ãŒã‚ã‚‹ãŸã‚使ãˆã¾ã›ã‚“。\n" -"ã‚‚ã—もグループåãŒæ—¢ã«ä½¿ã‚ã‚Œã¦ã„ãŸãªã‚‰ã°ã€ã‚°ãƒ«ãƒ¼ãƒ—åã«ç•ªå·ãŒä»˜åŠ ã•ã‚Œã¾ã™ã€‚ã“" -"ã®å ´åˆã€æ¬¡ã®ç©ºã番å·ãŒä½¿ã‚ã‚Œã¾ã™ã€‚" - -#: ../lib/modules/posixGroup.inc:376 ../lib/modules/posixGroup.inc:404 -msgid "Group password" -msgstr "グループパスワード" - -#: ../templates/profedit/profilemain.php:46 -msgid "Group profiles" -msgstr "グループã®ãƒ—ロファイル" - -#: ../help/help.inc:190 -msgid "Group suffix" -msgstr "グループサフィックス" - -#: ../lib/modules/sambaGroupMapping.inc:184 -msgid "Group type" -msgstr "グループã®ã‚¿ã‚¤ãƒ—" - -#: ../templates/config/confmain.php:187 ../lib/config.inc:359 -msgid "GroupSuffix" -msgstr "グループサフィックス" - -#: ../templates/config/confsave.php:112 -msgid "GroupSuffix is invalid!" -msgstr "グループサフィックスãŒæ­£ã—ãã‚ã‚Šã¾ã›ã‚“!" - -#: ../lib/modules/posixGroup.inc:140 ../lib/modules/posixGroup.inc:384 -#: ../lib/modules/posixGroup.inc:431 ../lib/modules/posixGroup.inc:471 -#: ../lib/modules/posixGroup.inc:472 ../lib/modules/posixGroup.inc:473 -#: ../help/help.inc:158 -msgid "Groupname" -msgstr "グループå" - -#: ../lib/modules/posixGroup.inc:473 ../lib/modules/posixGroup.inc:474 -msgid "" -"Groupname contains invalid characters. Valid characters are: a-z, A-Z, 0-9 " -"and .-_ !" -msgstr "" -"グループåã«ä¸æ­£ãªæ–‡å­—ãŒå«ã¾ã‚Œã¦ã„ã¾ã™ã€‚有効ãªæ–‡å­—ã¯: a-z, A-Z, 0-9, .-_ ã§" -"ã™!" - -#: ../lib/modules/posixGroup.inc:472 -msgid "Groupname in use. Selected next free groupname." -msgstr "グループåãŒæ—¢ã«ä½¿ã‚ã‚Œã¦ã„ã¾ã™ã€‚次ã®æœªä½¿ç”¨ã‚°ãƒ«ãƒ¼ãƒ—åãŒé¸æŠžã•ã‚Œã¾ã—ãŸã€‚" - -#: ../templates/ou_edit.php:373 ../templates/main_header.php:84 -#: ../help/help.inc:82 -msgid "Groups" -msgstr "グループ" - -#: ../lib/modules/sambaSamAccount.inc:551 -#: ../lib/modules/sambaSamAccount.inc:753 -#: ../lib/modules/sambaSamAccount.inc:756 -msgid "Guest" -msgstr "ゲスト" - -#: ../lib/modules/quota.inc:422 -msgid "Hard block" -msgstr "ãƒãƒ¼ãƒ‰block" - -#: ../lib/modules/quota.inc:76 ../lib/modules/quota.inc:77 -#: ../lib/modules/quota.inc:294 ../lib/modules/quota.inc:351 -msgid "Hard block limit" -msgstr "ãƒãƒ¼ãƒ‰ãƒ–ロック制é™" - -#: ../lib/modules/quota.inc:422 -msgid "Hard inode" -msgstr "ãƒãƒ¼ãƒ‰inode" - -#: ../lib/modules/quota.inc:93 -msgid "Hard inode (files) limit" -msgstr "ãƒãƒ¼ãƒ‰inode(ファイル)制é™" - -#: ../lib/modules/quota.inc:92 ../lib/modules/quota.inc:298 -#: ../lib/modules/quota.inc:353 -msgid "Hard inode limit" -msgstr "ãƒãƒ¼ãƒ‰inode制é™" - -#: ../templates/pdfedit/pdfpage.php:495 -msgid "Headline" -msgstr "見出ã—" - -#: ../templates/pdfedit/pdfpage.php:468 -msgid "Height" -msgstr "高ã•" - -#: ../templates/ou_edit.php:349 ../templates/ou_edit.php:362 -#: ../templates/ou_edit.php:386 ../templates/ou_edit.php:399 -#: ../templates/ou_edit.php:423 ../templates/ou_edit.php:436 -#: ../templates/ou_edit.php:460 ../templates/ou_edit.php:473 -#: ../templates/domain.php:99 ../templates/domain.php:120 -#: ../templates/domain.php:136 ../templates/domain.php:149 -#: ../templates/domain.php:162 ../templates/domain.php:179 -#: ../templates/domain.php:202 ../templates/masscreate.php:145 -#: ../templates/masscreate.php:158 ../templates/masscreate.php:291 -#: ../templates/config/profmanage.php:183 -#: ../templates/config/profmanage.php:235 -#: ../templates/config/profmanage.php:265 -#: ../templates/config/profmanage.php:299 -#: ../templates/config/profmanage.php:347 -#: ../templates/config/profmanage.php:375 -#: ../templates/config/profmanage.php:408 -#: ../templates/config/confmodules.php:111 -#: ../templates/config/confmain.php:167 ../templates/config/confmain.php:181 -#: ../templates/config/confmain.php:191 ../templates/config/confmain.php:201 -#: ../templates/config/confmain.php:211 ../templates/config/confmain.php:221 -#: ../templates/config/confmain.php:243 ../templates/config/confmain.php:262 -#: ../templates/config/confmain.php:317 ../templates/config/confmain.php:327 -#: ../templates/config/confmain.php:337 ../templates/config/confmain.php:358 -#: ../templates/config/confmain.php:403 ../templates/config/confmain.php:422 -#: ../templates/config/confmain.php:431 ../templates/config/confmain.php:449 -#: ../templates/config/confmain.php:463 ../templates/config/conflogin.php:127 -#: ../templates/pdfedit/pdfpage.php:811 -#: ../templates/profedit/profilepage.php:106 -#: ../templates/profedit/profilepage.php:126 -#: ../templates/profedit/profilepage.php:157 ../lib/lists.inc:213 -#: ../lib/modules.inc:651 -msgid "Help" -msgstr "ヘルプ" - -#: ../templates/tools.php:91 -msgid "Here you can browse LDAP object classes and attributes." -msgstr "ã“ã“ã§ã¯ã€LDAPオブジェクトã®ã‚¯ãƒ©ã‚¹ã¨å±žæ€§ã‚’ブラウズã§ãã¾ã™ã€‚" - -#: ../templates/masscreate.php:83 -msgid "Here you can create multiple accounts by providing a CSV file." -msgstr "" -"ã“ã“ã§ã¯ã€CSVファイルを与ãˆã‚‹äº‹ã«ã‚ˆã£ã¦ã€è¤‡æ•°ã®ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã‚’作æˆã§ãã¾ã™ã€‚" - -#: ../help/help.inc:131 -msgid "" -"Here you can input small filter expressions (e.g. 'value' or 'v*'). LAM will " -"filter case-insensitive." -msgstr "ã“ã“ã«ã¯ã€ç°¡å˜ãªãƒ•ã‚£ãƒ«ã‚¿(例 'value'ã¾ãŸã¯'v*')を入力ã§ãã¾ã™ã€‚大文字ã¨å°æ–‡å­—ã¯åŒºåˆ¥ã•ã‚Œã¾ã™ã€‚" - -#: ../templates/tools.php:54 -msgid "Here you can manage your account profiles." -msgstr "ã“ã“ã§ã€ã‚ãªãŸã®ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã®ãƒ—ロファイルを管ç†ã§ãã¾ã™ã€‚" - -#: ../help/help.inc:113 -msgid "" -"Here you can select which plugins you want to use for account management." -msgstr "ã“ã“ã§ã¯ã€ã‚¢ã‚«ã‚¦ãƒ³ãƒˆç®¡ç†ã«ä½¿ç”¨ã™ã‚‹ãƒ—ラグインをé¸æŠžã§ãã¾ã™ã€‚" - -#: ../templates/tree/edit.php:103 -msgid "Hide internal attributes" -msgstr "内部属性を隠ã™" - -#: ../templates/tree/edit.php:117 -msgid "Hint: To delete an attribute, empty the text field and click save." -msgstr "" -"ヒント: 属性を削除ã™ã‚‹ã«ã¯ã€ãƒ†ã‚­ã‚¹ãƒˆãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã‚’空ã«ã—ã¦ä¿å­˜ã—ã¦ãã ã•ã„。" - -#: ../lib/modules/posixAccount.inc:337 ../help/help.inc:149 -msgid "Hold the CTRL-key to (de)select multiple groups." -msgstr "" -"複数ã®ã‚°ãƒ«ãƒ¼ãƒ—ã‚’é¸æŠž(解除)ã™ã‚‹å ´åˆã¯ã€CTRLキーを押ã—ãªãŒã‚‰æ“作ã—ã¦ãã ã•ã„。" - -#: ../lib/modules/posixAccount.inc:36 ../lib/modules/posixAccount.inc:64 -#: ../lib/modules/posixAccount.inc:65 ../lib/modules/posixAccount.inc:197 -#: ../lib/modules/posixAccount.inc:319 ../lib/modules/posixAccount.inc:709 -#: ../lib/modules/posixAccount.inc:860 ../lib/modules/posixAccount.inc:1013 -#: ../lib/modules/posixAccount.inc:1086 ../lib/lists.inc:309 -#: ../help/help.inc:150 -msgid "Home directory" -msgstr "ホームディレクトリ" - -#: ../lib/modules/posixAccount.inc:36 -#, php-format -msgid "" -"Home directory changed. To keep home directory you have to run the following " -"command as root: 'mv %s %s'" -msgstr "" -"ホームディレクトリãŒå¤‰æ›´ã•ã‚Œã¾ã—ãŸã€‚ホームディレクトリを維æŒã™ã‚‹ãŸã‚ã«ã€root" -"権é™ã§ä»¥ä¸‹ã®ã‚³ãƒžãƒ³ãƒ‰ã‚’実行ã—ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“: 'mv %s %s'" - -#: ../lib/modules/sambaAccount.inc:124 ../lib/modules/sambaAccount.inc:256 -#: ../lib/modules/sambaAccount.inc:354 ../lib/modules/sambaAccount.inc:727 -#: ../lib/modules/sambaAccount.inc:836 ../lib/modules/sambaSamAccount.inc:169 -#: ../lib/modules/sambaSamAccount.inc:272 -#: ../lib/modules/sambaSamAccount.inc:713 -#: ../lib/modules/sambaSamAccount.inc:851 -#: ../lib/modules/sambaSamAccount.inc:954 ../help/help.inc:208 -msgid "Home drive" -msgstr "ホームドライブ" - -#: ../lib/modules/sambaAccount.inc:46 ../lib/modules/sambaAccount.inc:47 -#: ../lib/modules/sambaAccount.inc:130 ../lib/modules/sambaAccount.inc:262 -#: ../lib/modules/sambaAccount.inc:357 ../lib/modules/sambaAccount.inc:730 -#: ../lib/modules/sambaAccount.inc:835 ../lib/modules/sambaSamAccount.inc:44 -#: ../lib/modules/sambaSamAccount.inc:45 -#: ../lib/modules/sambaSamAccount.inc:172 -#: ../lib/modules/sambaSamAccount.inc:278 -#: ../lib/modules/sambaSamAccount.inc:716 -#: ../lib/modules/sambaSamAccount.inc:857 -#: ../lib/modules/sambaSamAccount.inc:953 ../help/help.inc:216 -msgid "Home path" -msgstr "ホームパス" - -#: ../lib/modules/sambaAccount.inc:46 ../lib/modules/sambaSamAccount.inc:44 -#: ../lib/modules/sambaSamAccount.inc:46 -msgid "Home path is invalid." -msgstr "ホームパスãŒæ­£ã—ãã‚ã‚Šã¾ã›ã‚“。" - -#: ../lib/modules/posixAccount.inc:64 ../lib/modules/posixAccount.inc:66 -msgid "Homedirectory contains invalid characters." -msgstr "ホームディレクトリãŒä¸æ­£ãªæ–‡å­—ã‚’å«ã‚“ã§ã„ã¾ã™ã€‚" - -#: ../lib/lists.inc:329 -msgid "Host description" -msgstr "ホストã®èª¬æ˜Ž" - -#: ../lib/modules/account.inc:49 ../lib/modules/posixAccount.inc:347 -#: ../lib/modules/inetOrgPerson.inc:274 ../help/help.inc:171 -msgid "Host description. If left empty host name will be used." -msgstr "ホストã®èª¬æ˜Žã€‚ã‚‚ã—も空ãªã‚‰ã°ã€ãƒ›ã‚¹ãƒˆåãŒä½¿ã‚ã‚Œã¾ã™ã€‚" - -#: ../lib/modules/account.inc:58 -msgid "Host list" -msgstr "ホスト一覧" - -#: ../templates/config/confsave.php:142 -msgid "Host list attributes are invalid!" -msgstr "ホスト一覧ã®å±žæ€§ãŒæ­£ã—ãã‚ã‚Šã¾ã›ã‚“!" - -#: ../templates/config/confmodules.php:81 ../templates/config/confmain.php:258 -#: ../lib/config.inc:373 -msgid "Host modules" -msgstr "ホストモジュール" - -#: ../lib/modules/posixAccount.inc:237 ../lib/modules/posixAccount.inc:342 -#: ../lib/lists.inc:327 ../help/help.inc:164 -msgid "Host name" -msgstr "ホストå" - -#: ../lib/modules/posixAccount.inc:343 ../help/help.inc:165 -msgid "" -"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." -msgstr "" -"作æˆã—よã†ã¨ã—ã¦ã„るホストã®ãƒ›ã‚¹ãƒˆå。有効ãªæ–‡å­—ã¯: a-z, 0-9, .-_$ ã§ã™ã€‚" -"useraddコマンドã§è¨±ã•ã‚Œã¦ã—ãªã„ãŸã‚ã€å…ˆé ­æ–‡å­—ã«æ•°å­—ã¯ä½¿ãˆã¾ã›ã‚“。大文字ã®A-Z" -"ã¯ã€ã„ãã¤ã‹ã®å•é¡Œã‚’引ãèµ·ã“ã™äº‹ãŒã‚ã‚‹ãŸã‚使ãˆã¾ã›ã‚“。ホストåã®æœ«å°¾ã¯å¿…ãš $ " -"ã«ãªã‚Šã¾ã™ã€‚ã‚‚ã—も最後ã®æ–‡å­—㌠$ ã§ãªã‘ã‚Œã°è¿½åŠ ã•ã‚Œã¾ã™ã€‚\n" -"ã‚‚ã—もホストåãŒã™ã§ã«ä½¿ã‚ã‚Œã¦ã„ã‚Œã°ã€ãƒ›ã‚¹ãƒˆåã«ç•ªå·ãŒä»˜åŠ ã•ã‚Œã¾ã™ã€‚ã“ã®å ´" -"åˆã€æ¬¡ã®ç©ºã番å·ãŒä½¿ã‚ã‚Œã¾ã™ã€‚" - -#: ../templates/profedit/profilemain.php:47 -msgid "Host profiles" -msgstr "ホストプロファイル" - -#: ../lib/lists.inc:326 -msgid "Host username" -msgstr "ホストユーザå" - -#: ../templates/config/confmain.php:197 ../lib/config.inc:360 -msgid "HostSuffix" -msgstr "ホストサフィックス" - -#: ../templates/config/confsave.php:117 -msgid "HostSuffix is invalid!" -msgstr "ホストサフィックスãŒæ­£ã—ãã‚ã‚Šã¾ã›ã‚“!" - -#: ../lib/modules/posixAccount.inc:78 ../lib/modules/posixAccount.inc:79 -#: ../lib/modules/posixAccount.inc:81 -msgid "Hostname" -msgstr "ホストå" - -#: ../lib/modules/posixAccount.inc:83 -msgid "" -"Hostname contains invalid characters. Valid characters are: a-z, A-Z, 0-9 " -"and .-_ !" -msgstr "" -"ホストåã«ä¸æ­£ãªæ–‡å­—ãŒå«ã¾ã‚Œã¦ã„ã¾ã™ã€‚有効ãªæ–‡å­—ã¯: a-z, A-Z, 0-9, .-_ ã§ã™ã€‚" - -#: ../lib/modules/posixAccount.inc:79 -msgid "" -"Hostname contains invalid characters. Valid characters are: a-z, A-Z, 0-9 " -"and .-_ ! Hostname must end with $ !" -msgstr "" -"ホストåã«ä¸æ­£ãªæ–‡å­—ãŒå«ã¾ã‚Œã¦ã„ã¾ã™ã€‚有効ãªæ–‡å­—ã¯: a-z, A-Z, 0-9, .-_ ã§ã™ã€‚" -"ホストåã®æœ«å°¾ã¯$ã§ãªãã¦ã¯ãªã‚Šã¾ã›ã‚“。" - -#: ../lib/modules/posixAccount.inc:81 -msgid "Hostname in use. Selected next free hostname." -msgstr "ホストåãŒã™ã§ã«ä½¿ã‚ã‚Œã¦ã„ã¾ã™ã€‚次ã®æœªä½¿ç”¨ãƒ›ã‚¹ãƒˆåãŒé¸æŠžã•ã‚Œã¾ã—ãŸã€‚" - -#: ../templates/main_header.php:87 ../lib/modules/posixAccount.inc:59 -#: ../lib/modules/posixAccount.inc:60 ../lib/modules/posixAccount.inc:62 -#: ../lib/modules/posixAccount.inc:135 ../help/help.inc:85 -msgid "Hosts" -msgstr "ホスト" - -#: ../lib/modules/posixGroup.inc:466 ../lib/modules/posixGroup.inc:581 -#: ../lib/modules/posixAccount.inc:69 ../lib/modules/posixAccount.inc:655 -msgid "ID is already in use" -msgstr "ID ã¯ã™ã§ã«ä½¿ç”¨ã•ã‚Œã¦ã„ã¾ã™" - -#: ../lib/modules/posixGroup.inc:464 ../lib/modules/posixGroup.inc:465 -#: ../lib/modules/posixGroup.inc:466 ../lib/modules/posixGroup.inc:577 -#: ../lib/modules/posixGroup.inc:581 ../lib/modules/posixAccount.inc:67 -#: ../lib/modules/posixAccount.inc:68 ../lib/modules/posixAccount.inc:69 -#: ../lib/modules/posixAccount.inc:651 ../lib/modules/posixAccount.inc:655 -msgid "ID-Number" -msgstr "ID番å·" - -#: ../templates/masscreate.php:149 ../templates/masscreate.php:162 -#: ../templates/masscreate.php:296 -msgid "Identifier" -msgstr "識別å­" - -#: ../help/help.inc:191 -msgid "" -"If a not yet existing group is defined in csv-file, a new group in the " -"selected group suffix will be created." -msgstr "" -"ã‚‚ã—ã‚‚ã€csvファイル中ã«å®šç¾©ã•ã‚Œã¦ã„るグループãŒã¾ã å­˜åœ¨ã—ã¦ã„ãªã‘ã‚Œã°ã€é¸æŠžã•" -"ã‚ŒãŸã‚°ãƒ«ãƒ¼ãƒ—サフィックス中ã«æ–°ã—ã„グループãŒä½œæˆã•ã‚Œã¾ã™ã€‚" - -#: ../help/help.inc:223 -msgid "" -"If a not yet existing group is defined in csv-file, a new group with the " -"selected group profile will be created." -msgstr "" -"ã‚‚ã—ã‚‚ã€csvファイル中ã«å®šç¾©ã•ã‚Œã¦ã„るグループãŒã¾ã å­˜åœ¨ã•ã‚Œã¦ã„ãªã‘ã‚Œã°ã€é¸æŠž" -"ã•ã‚ŒãŸã‚°ãƒ«ãƒ¼ãƒ—プロファイルã§æ–°ã—ã„グループãŒä½œæˆã•ã‚Œã¾ã™ã€‚" - -#: ../lib/modules/sambaAccount.inc:326 ../lib/modules/sambaSamAccount.inc:141 -msgid "If checked Unix password will also be used as Samba password." -msgstr "ãƒã‚§ãƒƒã‚¯ã—ãŸå ´åˆã€unixパスワードãŒSambaパスワードã¨ã—ã¦ã‚‚使ã‚ã‚Œã¾ã™ã€‚" - -#: ../lib/modules/sambaAccount.inc:344 ../lib/modules/sambaSamAccount.inc:159 -#: ../help/help.inc:207 -msgid "If checked account will be deactivated. (Setting D-Flag)" -msgstr "" -"ãƒã‚§ãƒƒã‚¯ã—ãŸå ´åˆã€(D-フラグをセットã™ã‚‹ã“ã¨ã§)アカウントã¯ç„¡åŠ¹åŒ–ã•ã‚Œã¾ã™ã€‚" - -#: ../lib/modules/posixGroup.inc:409 ../lib/modules/sambaAccount.inc:332 -#: ../lib/modules/sambaSamAccount.inc:147 ../lib/modules/posixAccount.inc:328 -#: ../help/help.inc:197 -msgid "If checked no password will be used." -msgstr "ãƒã‚§ãƒƒã‚¯ã—ãŸå ´åˆã€ãƒ‘スワードã¯ä½¿ã‚ã‚Œã¾ã›ã‚“。" - -#: ../lib/modules/sambaAccount.inc:338 ../lib/modules/sambaSamAccount.inc:153 -#: ../help/help.inc:201 -msgid "If checked password does not expire. (Setting X-Flag)" -msgstr "ãƒã‚§ãƒƒã‚¯ã—ãŸå ´åˆã€ãƒ‘スワードã¯ç„¡æœŸé™ã«ãªã‚Šã¾ã™ã€‚(X-フラグをセット)" - -#: ../help/help.inc:199 -msgid "If checked unix password will also be used as samba password." -msgstr "ãƒã‚§ãƒƒã‚¯ã—ãŸå ´åˆã€unixパスワードãŒSambaパスワードã¨ã—ã¦ã‚‚使ã‚ã‚Œã¾ã™ã€‚" - -#: ../lib/modules/posixGroup.inc:389 ../help/help.inc:161 -msgid "" -"If empty GID number will be generated automaticly depending on your " -"configuration settings." -msgstr "未記入ã®å ´åˆã€è¨­å®šå†…容ã«å¾“ã£ã¦GID番å·ãŒè‡ªå‹•çš„ã«ç”Ÿæˆã•ã‚Œã¾ã™ã€‚" - -#: ../lib/modules/posixAccount.inc:303 ../help/help.inc:147 -#: ../help/help.inc:167 -msgid "If empty UID number will be generated automaticly." -msgstr "未記入ã®å ´åˆã€UID番å·ãŒè‡ªå‹•çš„ã«ç”Ÿæˆã•ã‚Œã¾ã™ã€‚" - -#: ../help/help.inc:189 -msgid "" -"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." -msgstr "" -"é¸æŠžã—ãŸå ´åˆã€ãƒ¦ãƒ¼ã‚¶ã¯ãã®ãƒ—ライマリグループã§æ‹¡å¼µã•ã‚ŒãŸOUã‚’ã‚‚ã£ã¦è¿½åŠ ã•ã‚Œã¾" -"ã™ã€‚例ãˆã°ã€ãƒ¦ãƒ¼ã‚¶ãŒ group admin ã«æ‰€å±žã—ã¦ã„ã‚‹å ´åˆã€ãƒ¦ãƒ¼ã‚¶ã®ã‚µãƒ•ã‚£ãƒƒã‚¯ã‚¹ã¯ " -"ou=admin,+ユーザã®ã‚µãƒ•ã‚£ãƒƒã‚¯ã‚¹ã«ãªã‚Šã¾ã™ã€‚" - -#: ../lib/modules/sambaAccount.inc:329 ../lib/modules/sambaSamAccount.inc:144 -msgid "If set to \"true\" Unix password will also be used as Samba password." -msgstr "" -"\"true\"ã«ã‚»ãƒƒãƒˆã—ãŸå ´åˆã€unixパスワードãŒSambaパスワードã¨ã—ã¦ã‚‚使ã‚ã‚Œã¾ã™ã€‚" - -#: ../lib/modules/sambaAccount.inc:347 ../lib/modules/sambaSamAccount.inc:162 -msgid "If set to \"true\" account will be deactivated. (Setting D-Flag)" -msgstr "" -"\"true\"ã«ã‚»ãƒƒãƒˆã—ãŸå ´åˆã€ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã¯ç„¡åŠ¹ã«ãªã‚Šã¾ã™ã€‚(D-フラグをセット)" - -#: ../lib/modules/sambaAccount.inc:335 ../lib/modules/sambaSamAccount.inc:150 -msgid "If set to \"true\" no password will be used." -msgstr "\"true\"ã«ã‚»ãƒƒãƒˆã—ãŸå ´åˆã€ãƒ‘スワードã¯ä½¿ã‚ã‚Œã¾ã›ã‚“。" - -#: ../lib/modules/sambaAccount.inc:341 ../lib/modules/sambaSamAccount.inc:156 -msgid "If set to \"true\" password does not expire. (Setting X-Flag)" -msgstr "" -"\"true\"ã«ã‚»ãƒƒãƒˆã—ãŸå ´åˆã€ãƒ‘スワードã¯ç„¡æœŸé™ã«ãªã‚Šã¾ã™ã€‚(X-フラグをセット)" - -#: ../lib/modules/sambaSamAccount.inc:189 -msgid "" -"If you leave this empty LAM will use: uidNumber*2 + sambaAlgorithmicRidBase." -msgstr "" -"未入力ã®å ´åˆã¯ã€LAM㯠uidNumber*2 + sambaAlgorithmicRidBase を使用ã—ã¾ã™ã€‚" - -#: ../help/help.inc:107 -msgid "" -"If you want to change the current preferences password, please enter it here." -msgstr "" -"ç¾åœ¨ã®ãƒ—リファレンスã®ãƒ‘スワードを変更ã—ãŸã„å ´åˆã¯ã€ã“ã“ã«å…¥åŠ›ã—ã¦ãã ã•ã„。" - -#: ../help/help.inc:125 -msgid "" -"If you want to change your master configuration password, please enter it " -"here." -msgstr "マスタ構æˆãƒ‘スワードを変更ã—ãŸã„å ´åˆã¯ã€ã“ã“ã«å…¥åŠ›ã—ã¦ãã ã•ã„。" - -#: ../lib/modules/sambaAccount.inc:376 -msgid "" -"If you want to create domain administrators or other special users use this " -"option." -msgstr "" -"ドメイン管ç†è€…ã‚„ãã®ä»–ã®ç‰¹æ®Šã‚¢ã‚«ã‚¦ãƒ³ãƒˆã‚’作æˆã—ãŸã„å ´åˆã¯ã€ã“ã®ã‚ªãƒ—ションを使" -"用ã—ã¦ãã ã•ã„。" - -#: ../lib/modules/sambaAccount.inc:370 -#: ../lib/modules/sambaGroupMapping.inc:274 ../help/help.inc:233 -msgid "If you want to use a well known RID you can selcet a well known group." -msgstr "" -"ã‚‚ã—ã‚‚ã€ã‚ˆã知られã¦ã„ã‚‹RID(well known RID)を使ã„ãŸã„ã®ã§ã‚ã‚Œã°ã€ã‚ˆã知られãŸ" -"グループをé¸æŠžã§ãã¾ã™ã€‚" - -#: ../templates/schema/schema.php:402 ../templates/schema/schema.php:423 -msgid "Inherited from" -msgstr "継承元" - -#: ../templates/schema/schema.php:163 ../templates/schema/schema.php:359 -msgid "Inherits from" -msgstr "継承元" - -#: ../lib/modules/quota.inc:33 -msgid "Inode hard quota" -msgstr "Inode ãƒãƒ¼ãƒ‰quota" - -#: ../lib/modules/quota.inc:33 -msgid "" -"Inode hard quota contains invalid characters. Only natural numbers are " -"allowed." -msgstr "" -"Inodeãƒãƒ¼ãƒ‰ã‚¯ã‚ªãƒ¼ã‚¿ã«ä¸æ­£ãªæ–‡å­—ãŒå«ã¾ã‚Œã¦ã„ã¾ã™ã€‚自然数ã®ã¿ãŒæœ‰åŠ¹ã§ã™ã€‚" - -#: ../lib/modules/quota.inc:35 -msgid "Inode quota" -msgstr "Inodeクオータ" - -#: ../lib/modules/quota.inc:32 -msgid "Inode soft quota" -msgstr "Inodeソフトquota" - -#: ../lib/modules/quota.inc:32 -msgid "" -"Inode soft quota contains invalid characters. Only natural numbers are " -"allowed." -msgstr "Inode ソフトクオータã«ä¸æ­£ãªæ–‡å­—ãŒå«ã¾ã‚Œã¦ã„ã¾ã™ã€‚自然数ã®ã¿æœ‰åŠ¹ã§ã™ã€‚" - -#: ../lib/modules/quota.inc:35 -msgid "Inode soft quota must be smaller than inode hard quota." -msgstr "" -"iノード・ソフトクオータã¯iノード・ãƒãƒ¼ãƒ‰ã‚¯ã‚ªãƒ¼ã‚¿<よりå°ã•ããªãã¦ã¯ãªã‚Šã¾ã›" -"ん。" - -#: ../lib/modules/sambaAccount.inc:47 ../lib/modules/sambaAccount.inc:48 -#: ../lib/modules/sambaSamAccount.inc:45 -msgid "Inserted user- or groupname in HomePath." -msgstr "ホームパスåã«ãƒ¦ãƒ¼ã‚¶åˆã¯ã‚°ãƒ«ãƒ¼ãƒ—åを挿入ã—ã¾ã—ãŸã€‚" - -#: ../lib/modules/sambaAccount.inc:53 -msgid "Inserted user- or groupname in logon script." -msgstr "ログオンスクリプトパスã«ãƒ¦ãƒ¼ã‚¶åˆã¯ã‚°ãƒ«ãƒ¼ãƒ—åを挿入ã—ã¾ã—ãŸã€‚" - -#: ../lib/modules/sambaAccount.inc:50 ../lib/modules/sambaAccount.inc:51 -#: ../lib/modules/sambaSamAccount.inc:48 -msgid "Inserted user- or groupname in profilepath." -msgstr "プロファイルパスã«ãƒ¦ãƒ¼ã‚¶åˆã¯ã‚°ãƒ«ãƒ¼ãƒ—åを挿入ã—ã¾ã—ãŸã€‚" - -#: ../lib/modules/sambaSamAccount.inc:51 -msgid "Inserted user- or groupname in scriptpath." -msgstr "スクリプトパスã«ãƒ¦ãƒ¼ã‚¶åˆã¯ã‚°ãƒ«ãƒ¼ãƒ—åを挿入ã—ã¾ã—ãŸã€‚" - -#: ../lib/modules/sambaGroupMapping.inc:57 -msgid "Invalid Account" -msgstr "無効ãªã‚¢ã‚«ã‚¦ãƒ³ãƒˆã§ã™" - -#: ../lib/modules/posixGroup.inc:177 ../lib/modules/posixAccount.inc:891 -msgid "Invalid password" -msgstr "無効ãªãƒ‘スワードã§ã™" - -#: ../lib/status.inc:61 -msgid "Invalid/Missing Message type" -msgstr "ä¸æ­£ãª/é–“é•ã£ãŸãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚¿ã‚¤ãƒ—" - -#: ../lib/modules/posixGroup.inc:464 ../lib/modules/posixAccount.inc:68 -msgid "" -"It is possible that this ID-number is reused. This can cause several " -"problems because files with old permissions might still exist. To avoid this " -"warning set maxUID to a higher value." -msgstr "" -"ID番å·ã‚’å†åˆ©ç”¨ã™ã‚‹ã“ã¨ã¯å¯èƒ½ã§ã™ã€‚å¤ã„パーミッションをæŒã£ãŸãƒ•ã‚¡ã‚¤ãƒ«ãŒã¾ã å­˜" -"在ã™ã‚‹ã‹ã‚‚知れãªã„ãŸã‚ã€ã“ã‚Œã¯ã„ãã¤ã‹ã®å•é¡Œã‚’引ãèµ·ã“ã™ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“。ã“ã®" -"警告を防ãã«ã¯ã€maxUIDをより大ããªå€¤ã«è¨­å®šã—ã¦ãã ã•ã„。" - -#: ../lib/modules/inetOrgPerson.inc:70 ../lib/modules/inetOrgPerson.inc:97 -#: ../lib/modules/inetOrgPerson.inc:149 ../lib/modules/inetOrgPerson.inc:227 -#: ../lib/modules/inetOrgPerson.inc:404 ../lib/modules/inetOrgPerson.inc:462 -msgid "Job title" -msgstr "å½¹è·" - -#: ../lib/modules/inetOrgPerson.inc:228 -msgid "Job title of user: President, department manager, ..." -msgstr "ユーザã®å½¹è·: 社長ã€éƒ¨é•·ã€..." - -#: ../templates/schema/schema.php:261 -msgid "Jump to a matching rule" -msgstr "ç…§åˆè¦å‰‡ã¸ã‚¸ãƒ£ãƒ³ãƒ—" - -#: ../templates/schema/schema.php:120 -msgid "Jump to an attribute type" -msgstr "属性タイプã¸ã‚¸ãƒ£ãƒ³ãƒ—" - -#: ../templates/schema/schema.php:314 ../templates/schema/schema.php:364 -#: ../templates/schema/schema.php:379 -msgid "Jump to an object class" -msgstr "オブジェクトクラスã¸ã‚¸ãƒ£ãƒ³ãƒ—" - -#: ../lib/status.inc:60 -msgid "LAM Internal Error" -msgstr "LAM 内部エラー" - -#: ../templates/tree/delete_form.php:99 -#, php-format -msgid "" -"LAM can recursively delete this entry and all of its children. See below for " -"a list of all the entries that this action will delete. Do you want to do " -"this?" -msgstr "" -"LAMã¯ã“ã®ã‚¨ãƒ³ãƒˆãƒªãŠã‚ˆã³å…¨ã¦ã®å­ã‚’å†å¸°çš„ã«å‰Šé™¤ã—ã¾ã™ã€‚ã“ã®æ“作ãŒå‰Šé™¤ã™ã‚‹å…¨ã¦ã®" -"エントリã®ãƒªã‚¹ãƒˆã¯ä¸‹ã«è¡¨ç¤ºã•ã‚Œã¦ã„ã¾ã™ã€‚実行ã—ã¦ã‚‚よã‚ã—ã„ã§ã™ã‹?" - -#: ../templates/massBuildAccounts.php:188 -msgid "LAM has checked your input and is now ready to create the accounts." -msgstr "" -"LAMã¯å…¥åŠ›å†…容をãƒã‚§ãƒƒã‚¯ã—ã¾ã—ãŸã€‚アカウントを作æˆã™ã‚‹æº–å‚™ãŒã§ãã¾ã—ãŸã€‚" - -#: ../lib/modules/posixGroup.inc:418 ../lib/modules/posixAccount.inc:299 -msgid "" -"LAM supports CRYPT, SHA, SSHA, MD5 and SMD5 to generate the hash value of " -"passwords. 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." -msgstr "" -"LAMã¯ãƒ¦ãƒ¼ã‚¶ã®ãƒ‘スワードã®ãƒãƒƒã‚·ãƒ¥å€¤ã‚’生æˆã™ã‚‹ãŸã‚ã«ã€CRYPTã€SHAã€SSHAã€MD5ã¨" -"SMD5をサãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã™ã€‚SSHAã¨CRYPTãŒæœ€ã‚‚一般的ã§ã™ãŒã€CRYPTã¯8文字より長ã„" -"パスワードをサãƒãƒ¼ãƒˆã—ã¾ã›ã‚“。平文ã®ãƒ‘スワードを使ã†ã“ã¨ã¯æŽ¨å¥¨ã„ãŸã—ã¾ã›ã‚“。" - -#: ../templates/tree/create.php:180 ../templates/massDoUpload.php:82 -#, php-format -msgid "LAM was unable to create account %s! An LDAP error occured." -msgstr "LAMã¯ã‚¢ã‚«ã‚¦ãƒ³ãƒˆ %s を作æˆã§ãã¾ã›ã‚“ã§ã—ãŸ! LDAPエラーãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚" - -#: ../lib/modules/sambaGroupMapping.inc:352 -msgid "LAM was unable to find a Samba 3 domain with this name!" -msgstr "LAMã¯ã€ã“ã®åå‰ã®Samba 3ドメインを見ã¤ã‘られã¾ã›ã‚“ã§ã—ãŸã€‚" - -#: ../lib/modules/sambaSamAccount.inc:70 -msgid "LAM was unable to find a domain with this name!" -msgstr "LAMã¯ã€ã“ã®åå‰ã®ãƒ‰ãƒ¡ã‚¤ãƒ³ã‚’見ã¤ã‘られã¾ã›ã‚“ã§ã—ãŸã€‚" - -#: ../lib/modules/posixAccount.inc:84 -msgid "LAM was unable to find a group with this name!" -msgstr "LAMã¯ã€ã“ã®åå‰ã®ã‚°ãƒ«ãƒ¼ãƒ—を見ã¤ã‘られã¾ã›ã‚“ã§ã—ãŸã€‚" - -#: ../lib/modules/posixAccount.inc:1381 -#, php-format -msgid "LAM was unable to modify group memberships for group: %s" -msgstr "LAMã¯ã‚°ãƒ«ãƒ¼ãƒ— %s ã®ã‚°ãƒ«ãƒ¼ãƒ—メンãƒãƒ¼ã‚·ãƒƒãƒ—を変更ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚" - -#: ../templates/profedit/profilepage.php:87 -msgid "LDAP" -msgstr "" - -#: ../templates/config/confmodules.php:67 ../templates/config/confsave.php:75 -#: ../templates/config/confmain.php:148 -msgid "LDAP Account Manager Configuration" -msgstr "LDAP アカウントマãƒãƒ¼ã‚¸ãƒ£æ§‹æˆ" - -#: ../templates/config/confmain.php:308 -msgid "LDAP List settings" -msgstr "LDAP リスト設定" - -#: ../templates/lists/listhosts.php:119 ../templates/lists/listgroups.php:119 -#: ../templates/lists/listdomains.php:132 ../templates/lists/listusers.php:147 -msgid "LDAP Search failed! Please check your preferences." -msgstr "LDAP検索ã«å¤±æ•—ã—ã¾ã—ãŸ! プリファレンスを確èªã—ã¦ãã ã•ã„。" - -#: ../templates/login.php:371 -msgid "LDAP error, server says:" -msgstr "LDAP エラーã€ã‚µãƒ¼ãƒã‹ã‚‰ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸:" - -#: ../lib/modules.inc:946 -msgid "LDAP operation successful." -msgstr "LDAPæ“作ãŒå®Œäº†ã—ã¾ã—ãŸã€‚" - -#: ../templates/login.php:266 -msgid "LDAP server" -msgstr "LDAPサーãƒ" - -#: ../templates/lists/listhosts.php:104 ../templates/lists/listgroups.php:104 -#: ../templates/lists/listdomains.php:121 ../templates/lists/listusers.php:131 -msgid "LDAP sizelimit exceeded, not all entries are shown." -msgstr "LDAPã®ã‚µã‚¤ã‚ºåˆ¶é™ã‚’越ãˆã¾ã—ãŸã€‚一部ã®ã‚¨ãƒ³ãƒˆãƒªã®ã¿ã‚’表示ã—ã¾ã™ã€‚" - -#: ../templates/profedit/profilepage.php:91 -msgid "LDAP suffix" -msgstr "LDAPサフィックス" - -#: ../templates/massDoUpload.php:117 -msgid "LDAP upload has finished" -msgstr "LDAPアップロードãŒå®Œäº†ã—ã¾ã—ãŸã€‚" - -#: ../templates/massDoUpload.php:66 -msgid "LDAP upload in progress. Please wait." -msgstr "LDAPアップロード中ã§ã™ã€‚ãŠå¾…ã¡ãã ã•ã„。" - -#: ../templates/login.php:212 -msgid "Language" -msgstr "言語" - -#: ../templates/config/confsave.php:153 -msgid "Language is not defined!" -msgstr "言語ãŒæœªå®šã•ã‚Œã¦ã„ã¾ã›ã‚“!" - -#: ../templates/config/confmain.php:366 -msgid "Language settings" -msgstr "言語ã®è¨­å®š" - -#: ../lib/modules/inetOrgPerson.inc:54 ../lib/modules/inetOrgPerson.inc:136 -#: ../lib/modules/inetOrgPerson.inc:235 ../lib/modules/inetOrgPerson.inc:412 -#: ../lib/modules/inetOrgPerson.inc:464 ../lib/lists.inc:308 -#: ../help/help.inc:192 -msgid "Last name" -msgstr "姓" - -#: ../lib/modules/inetOrgPerson.inc:54 ../lib/modules/inetOrgPerson.inc:55 -msgid "Last name contains invalid characters!" -msgstr "姓ã«ä¸æ­£ãªæ–‡å­—ãŒå«ã¾ã‚Œã¦ã„ã¾ã™!" - -#: ../lib/modules/inetOrgPerson.inc:236 ../help/help.inc:193 -msgid "Last name of user. Only letters, - and spaces are allowed." -msgstr "ユーザã®å§“。アルファベットã€_ - ã¨ç©ºç™½ã®ã¿ãŒä½¿ç”¨ã§ãã¾ã™ã€‚" - -#: ../lib/modules/shadowAccount.inc:338 -msgid "Last password change" -msgstr "パスワード最終変更時刻" - -#: ../templates/pdfedit/pdfpage.php:535 -msgid "Left" -msgstr "å·¦" - -#: ../help/help.inc:72 -msgid "List attributes" -msgstr "属性ã®ä¸€è¦§" - -#: ../help/help.inc:215 -msgid "" -"List of Samba workstations the user is allowed to login. Empty means every " -"workstation." -msgstr "" -"ユーザãŒãƒ­ã‚°ã‚¤ãƒ³ã§ãã‚‹Sambaワークステーションã®ãƒªã‚¹ãƒˆã€‚未記入ã¯ã™ã¹ã¦ã®ãƒ¯ãƒ¼ã‚¯" -"ステーションをæ„味ã—ã¾ã™ã€‚" - -#: ../templates/config/confsave.php:102 -msgid "List of admin users is empty or invalid!" -msgstr "管ç†è€…(admin users)ã®ãƒªã‚¹ãƒˆãŒç©ºã¾ãŸã¯æ­£ã—ãã‚ã‚Šã¾ã›ã‚“!" - -#: ../templates/tree/delete_form.php:129 -msgid "List of entries to be deleted:" -msgstr "削除ã•ã‚Œã‚‹ã‚¨ãƒ³ãƒˆãƒª:" - -#: ../templates/config/confmain.php:445 ../lib/config.inc:370 -msgid "List of valid users" -msgstr "有効ãªãƒ¦ãƒ¼ã‚¶ã®ãƒªã‚¹ãƒˆ" - -#: ../lib/modules.inc:984 ../lib/modules.inc:987 ../help/help.inc:186 -msgid "Load profile" -msgstr "プロファイルã®ãƒ­ãƒ¼ãƒ‰" - -#: ../lib/modules/sambaGroupMapping.inc:54 -msgid "Local Group" -msgstr "ローカルグループ" - -#: ../lib/modules/inetLocalMailRecipient.inc:60 -#: ../lib/modules/inetLocalMailRecipient.inc:206 -msgid "Local address" -msgstr "ローカルアドレス" - -#: ../lib/modules/inetLocalMailRecipient.inc:64 -#: ../lib/modules/inetLocalMailRecipient.inc:97 -#: ../lib/modules/inetLocalMailRecipient.inc:372 -msgid "Local address list" -msgstr "ローカルアドレス一覧" - -#: ../lib/modules/posixGroup.inc:182 ../lib/modules/posixAccount.inc:218 -#: ../lib/modules/posixAccount.inc:896 ../lib/modules/posixAccount.inc:1025 -msgid "Lock password" -msgstr "パスワードã®ãƒ­ãƒƒã‚¯" - -#: ../templates/login.php:241 ../templates/config/conflogin.php:68 -#: ../help/help.inc:46 -msgid "Login" -msgstr "ログイン" - -#: ../lib/modules/posixAccount.inc:204 ../lib/modules/posixAccount.inc:332 -#: ../lib/modules/posixAccount.inc:902 ../lib/modules/posixAccount.inc:1017 -#: ../lib/modules/posixAccount.inc:1088 ../lib/lists.inc:310 -#: ../help/help.inc:154 -msgid "Login shell" -msgstr "ログインシェル" - -#: ../templates/pdfedit/pdfpage.php:434 -msgid "Logo" -msgstr "ロゴ" - -#: ../lib/modules/sambaSamAccount.inc:197 -#: ../lib/modules/sambaSamAccount.inc:316 -msgid "Logon hours" -msgstr "ログオン時間" - -#: ../lib/modules/sambaAccount.inc:52 ../lib/modules/sambaAccount.inc:53 -#: ../lib/modules/sambaAccount.inc:142 ../lib/modules/sambaAccount.inc:274 -#: ../lib/modules/sambaAccount.inc:363 ../lib/modules/sambaAccount.inc:736 -#: ../lib/modules/sambaAccount.inc:837 ../lib/modules/sambaSamAccount.inc:178 -#: ../lib/modules/sambaSamAccount.inc:290 -#: ../lib/modules/sambaSamAccount.inc:722 -#: ../lib/modules/sambaSamAccount.inc:869 -#: ../lib/modules/sambaSamAccount.inc:955 -msgid "Logon script" -msgstr "ログオンスクリプト" - -#: ../lib/modules/sambaAccount.inc:52 ../lib/modules/sambaAccount.inc:54 -#: ../lib/modules/sambaSamAccount.inc:52 -msgid "Logon script is invalid!" -msgstr "ログオンスクリプトãŒæ­£ã—ãã‚ã‚Šã¾ã›ã‚“!" - -#: ../templates/main_header.php:66 ../templates/logout.php:60 -msgid "Logout" -msgstr "ログアウト" - -#: ../lib/modules/ieee802device.inc:50 ../lib/modules/ieee802device.inc:56 -#: ../lib/modules/ieee802device.inc:67 ../lib/modules/ieee802device.inc:144 -msgid "MAC address" -msgstr "MACアドレス" - -#: ../lib/modules/ieee802device.inc:60 ../lib/modules/ieee802device.inc:257 -msgid "MAC address list" -msgstr "MACアドレス一覧" - -#: ../lib/modules/nisMailAlias.inc:54 -msgid "Mail aliases" -msgstr "é›»å­ãƒ¡ãƒ¼ãƒ« エイリアス" - -#: ../lib/modules/inetLocalMailRecipient.inc:50 -msgid "Mail routing" -msgstr "メール転é€" - -#: ../lib/modules/inetLocalMailRecipient.inc:68 -#: ../lib/modules/inetLocalMailRecipient.inc:74 -#: ../lib/modules/inetLocalMailRecipient.inc:103 -#: ../lib/modules/inetLocalMailRecipient.inc:200 -#: ../lib/modules/inetLocalMailRecipient.inc:375 -msgid "Mail server" -msgstr "メールサーãƒ" - -#: ../lib/modules/nisMailAlias.inc:61 -msgid "Mails to this name are forwarded to the recipients." -msgstr "ã“ã®åå‰ã¸ã®ãƒ¡ãƒ¼ãƒ«ã¯å—信者ã«è»¢é€ã•ã‚Œã¾ã™ã€‚" - -#: ../lib/modules.inc:901 ../lib/modules.inc:926 -msgid "Main" -msgstr "メイン" - -#: ../templates/config/conflogin.php:138 -msgid "Manage profiles" -msgstr "プロファイルã®æ“作" - -#: ../templates/tools.php:77 -msgid "Manages OU objects in your LDAP tree." -msgstr "LDAPツリーã®OUオブジェクトを管ç†ã—ã¾ã™ã€‚" - -#: ../templates/tools.php:62 -msgid "Manages Samba 3 domain accounts." -msgstr "Samba 3アカウントを管ç†ã—ã¾ã™ã€‚" - -#: ../templates/pdfedit/pdfpage.php:508 -msgid "Margin" -msgstr "余白" - -#: ../templates/config/profmanage.php:398 -msgid "Master Password:" -msgstr "マスタパスワード:" - -#: ../help/help.inc:126 -msgid "Master password" -msgstr "マスタパスワード" - -#: ../templates/config/profmanage.php:68 -msgid "Master password is wrong!" -msgstr "マスタパスワードãŒæ­£ã—ãã‚ã‚Šã¾ã›ã‚“!" - -#: ../templates/config/profmanage.php:128 -msgid "Master passwords are different or empty!" -msgstr "マスタパスワードãŒç•°ãªã£ã¦ã„ã‚‹ã‹ã€ã¾ãŸã¯ç©ºã§ã™!" - -#: ../templates/schema/schema.php:274 -msgid "Matching rule OID" -msgstr "ç…§åˆè¦å‰‡ã®OID" - -#: ../templates/schema/schema.php:83 ../templates/schema/schema.php:84 -msgid "Matching rules" -msgstr "ç…§åˆè¦å‰‡" - -#: ../templates/config/confsave.php:147 -msgid "Max list entries is invalid!" -msgstr "リストエントリã®æœ€å¤§æ•°ãŒæ­£ã—ãã‚ã‚Šã¾ã›ã‚“!" - -#: ../templates/pdfedit/pdfpage.php:479 -msgid "Maximize with correct ratio" -msgstr "縦横比を維æŒã—ãŸã¾ã¾æœ€å¤§åŒ–" - -#: ../lib/modules/posixGroup.inc:300 ../lib/modules/posixGroup.inc:468 -#: ../lib/modules/posixGroup.inc:469 -msgid "Maximum GID number" -msgstr "GID番å·ã®æœ€å¤§å€¤" - -#: ../lib/modules/posixGroup.inc:317 -msgid "Maximum GID number for Unix groups" -msgstr "unixグループã«å¯¾ã™ã‚‹GID番å·ã®æœ€å¤§å€¤" - -#: ../lib/modules/posixGroup.inc:468 -msgid "Maximum GID number is invalid or empty!" -msgstr "GID番å·ã®æœ€å¤§å€¤ãŒä¸æ­£ã¾ãŸã¯æœªå…¥åŠ›ã§ã™!" - -#: ../lib/modules/posixGroup.inc:469 -msgid "Maximum GID number must be greater than minimum GID number!" -msgstr "GID番å·ã®æœ€å¤§å€¤ã¯æœ€å°å€¤ã‚ˆã‚Šã‚‚大ãããªãã¦ã¯ãªã‚Šã¾ã›ã‚“。" - -#: ../lib/modules/posixAccount.inc:58 ../lib/modules/posixAccount.inc:60 -#: ../lib/modules/posixAccount.inc:61 ../lib/modules/posixAccount.inc:62 -#: ../lib/modules/posixAccount.inc:129 ../lib/modules/posixAccount.inc:138 -msgid "Maximum UID number" -msgstr "UID番å·ã®æœ€å¤§å€¤" - -#: ../lib/modules/posixAccount.inc:159 -msgid "Maximum UID number for Unix accounts (hosts)" -msgstr "ホストnounixアカウントã«å¯¾ã™ã‚‹UID番å·ã®æœ€å¤§å€¤ã€‚" - -#: ../lib/modules/posixAccount.inc:157 -msgid "Maximum UID number for Unix accounts (users)" -msgstr "ユーザã®unixアカウントã«å¯¾ã™ã‚‹UID番å·ã®æœ€å¤§å€¤ã€‚" - -#: ../lib/modules/posixAccount.inc:58 ../lib/modules/posixAccount.inc:60 -msgid "Maximum UID number is invalid!" -msgstr "UID番å·ã®æœ€å¤§å€¤ãŒä¸æ­£ã§ã™!" - -#: ../lib/modules/posixAccount.inc:61 ../lib/modules/posixAccount.inc:62 -msgid "Maximum UID number must be greater than minimum UID number!" -msgstr "UID番å·ã®æœ€å¤§å€¤ã¯æœ€å°å€¤ã‚ˆã‚Šã‚‚大ãããªãã¦ã¯ãªã‚Šã¾ã›ã‚“!" - -#: ../templates/tree/add_attr_form.php:166 -#, php-format -msgid "Maximum file size: %s" -msgstr "最大ファイルサイズ: %s" - -#: ../templates/tree/add_value_form.php:193 ../templates/schema/schema.php:220 -msgid "Maximum length" -msgstr "最大長" - -#: ../templates/config/confmain.php:346 ../lib/config.inc:366 -#: ../help/help.inc:92 -msgid "Maximum list entries" -msgstr "リストエントリã®æœ€å¤§æ•°" - -#: ../lib/modules/shadowAccount.inc:88 ../lib/modules/shadowAccount.inc:158 -#: ../lib/modules/shadowAccount.inc:188 ../lib/modules/shadowAccount.inc:310 -#: ../help/help.inc:176 -msgid "Maximum password age" -msgstr "パスワード期é™(age)ã®æœ€å¤§å€¤" - -#: ../lib/modules/inetOrgPerson.inc:138 -msgid "Miller" -msgstr "ミラー" - -#: ../lib/modules/posixGroup.inc:297 ../lib/modules/posixGroup.inc:467 -msgid "Minimum GID number" -msgstr "GID番å·ã®æœ€å°å€¤" - -#: ../lib/modules/posixGroup.inc:316 -msgid "Minimum GID number for Unix groups" -msgstr "unixグループã«å¯¾ã™ã‚‹GID番å·ã®æœ€å°å€¤" - -#: ../lib/modules/posixGroup.inc:467 -msgid "Minimum GID number is invalid or empty!" -msgstr "GID番å·ã®æœ€å°å€¤ãŒä¸æ­£ã¾ãŸã¯ç©ºã§ã™!" - -#: ../lib/modules/posixAccount.inc:57 ../lib/modules/posixAccount.inc:59 -#: ../lib/modules/posixAccount.inc:126 ../lib/modules/posixAccount.inc:135 -msgid "Minimum UID number" -msgstr "UID番å·ã®æœ€å°å€¤" - -#: ../lib/modules/posixAccount.inc:158 -msgid "Minimum UID number for Unix accounts (hosts)" -msgstr "unixアカウント(ホスト)ã«å¯¾ã™ã‚‹UID番å·ã®æœ€å°å€¤" - -#: ../lib/modules/posixAccount.inc:156 -msgid "Minimum UID number for Unix accounts (users)" -msgstr "unixアカウント(ユーザ)ã«å¯¾ã™ã‚‹UID番å·ã®æœ€å°å€¤" - -#: ../lib/modules/posixAccount.inc:57 ../lib/modules/posixAccount.inc:59 -msgid "Minimum UID number is invalid!" -msgstr "UID番å·ã®æœ€å°å€¤ãŒä¸æ­£ã§ã™!" - -#: ../lib/modules/shadowAccount.inc:83 ../lib/modules/shadowAccount.inc:154 -#: ../lib/modules/shadowAccount.inc:182 ../lib/modules/shadowAccount.inc:307 -#: ../help/help.inc:178 -msgid "Minimum password age" -msgstr "パスワード期é™(age)ã®æœ€å°å€¤" - -#: ../lib/modules/inetOrgPerson.inc:58 ../lib/modules/inetOrgPerson.inc:185 -#: ../lib/modules/inetOrgPerson.inc:259 ../lib/modules/inetOrgPerson.inc:260 -#: ../lib/modules/inetOrgPerson.inc:436 ../lib/modules/inetOrgPerson.inc:470 -msgid "Mobile number" -msgstr "æºå¸¯é›»è©±ç•ªå·" - -#: ../lib/modules.inc:854 ../lib/modules.inc:992 -msgid "Modify Account" -msgstr "アカウント変更" - -#: ../templates/config/confmodules.php:75 -msgid "Module selection" -msgstr "モジュールé¸æŠž" - -#: ../lib/config.inc:374 -msgid "Module settings" -msgstr "モジュール設定" - -#: ../lib/modules/quota.inc:64 ../lib/modules/quota.inc:291 -#: ../lib/modules/quota.inc:349 ../lib/modules/quota.inc:422 -msgid "Mountpoint" -msgstr "マウントãƒã‚¤ãƒ³ãƒˆ" - -#: ../lib/modules/quota.inc:65 -msgid "Mountpoint of device with enabled quotas." -msgstr "quotaãŒæœ‰åŠ¹ã«ãªã£ãŸãƒ‡ãƒã‚¤ã‚¹ã®ãƒžã‚¦ãƒ³ãƒˆãƒã‚¤ãƒ³ãƒˆã€‚" - -#: ../lib/modules/inetOrgPerson.inc:175 -msgid "Mycity" -msgstr "ãŠã‚‰ãŒå¸‚" - -#: ../lib/modules/inetOrgPerson.inc:163 -msgid "Mystreetname 42" -msgstr "ãŠã‚‰ãŒç”º42番地" - -#: ../templates/tree/templates/creation/new_ou_template.php:59 -#: ../templates/tree/templates/creation/new_ou_template.php:104 -#: ../templates/schema/schema.php:274 ../templates/pdfedit/pdfdelete.php:56 -#: ../templates/pdfedit/pdfdelete.php:59 ../templates/pdfedit/pdfdelete.php:78 -msgid "Name" -msgstr "åå‰" - -#: ../help/help.inc:138 -msgid "" -"Name under which the profile will be saved. If a profile with the same name " -"exists, it will be overwritten." -msgstr "" -"プロファイルãŒã‚»ãƒ¼ãƒ–ã•ã‚Œã‚‹åå‰ã€‚ã‚‚ã—ã‚‚åŒã˜åå‰ã®ãƒ—ロファイルãŒã‚ã‚‹å ´åˆã¯ä¸Šæ›¸" -"ãã•ã‚Œã¾ã™ã€‚" - -#: ../templates/lists/listdomains.php:208 -msgid "New Domain" -msgstr "æ–°ã—ã„ドメイン" - -#: ../templates/lists/listgroups.php:236 -msgid "New Group" -msgstr "æ–°ã—ã„グループ" - -#: ../templates/lists/listhosts.php:221 -msgid "New Host" -msgstr "æ–°ã—ã„ホスト" - -#: ../lib/modules/ieee802device.inc:151 -msgid "New MAC address" -msgstr "æ–°ã—ã„MACアドレス" - -#: ../templates/ou_edit.php:52 ../templates/ou_edit.php:117 -#: ../templates/ou_edit.php:182 ../templates/ou_edit.php:247 -msgid "New OU created successfully." -msgstr "æ–°ã—ã„ OU ãŒä½œæˆã•ã‚Œã¾ã—ãŸã€‚" - -#: ../templates/config/confmain.php:458 -msgid "New Password" -msgstr "æ–°ã—ã„パスワード" - -#: ../templates/config/profmanage.php:135 -msgid "New default profile set successfully." -msgstr "æ–°ã—ã„プロファイル既定値ãŒæ­£ã—ã設定ã•ã‚Œã¾ã—ãŸã€‚" - -#: ../lib/modules/inetLocalMailRecipient.inc:213 -msgid "New local address" -msgstr "æ–°ã—ã„ローカルアドレス" - -#: ../templates/config/profmanage.php:368 -msgid "New master password" -msgstr "æ–°ã—ã„マスタパスワード" - -#: ../templates/config/profmanage.php:126 -msgid "New master password set successfully." -msgstr "æ–°ã—ã„マスタパスワードãŒæ­£ã—ã設定ã•ã‚Œã¾ã—ãŸã€‚" - -#: ../templates/tree/templates/creation/new_ou_template.php:47 -#: ../templates/ou_edit.php:341 ../templates/ou_edit.php:378 -#: ../templates/ou_edit.php:415 ../templates/ou_edit.php:452 -#: ../help/help.inc:243 -msgid "New organizational unit" -msgstr "æ–°ã—ã„ organizational unit" - -#: ../templates/config/profmanage.php:116 -msgid "New password set successfully." -msgstr "æ–°ã—ã„パスワードãŒæ­£ã—ã設定ã•ã‚Œã¾ã—ãŸã€‚" - -#: ../lib/modules/nisMailAlias.inc:179 -msgid "New recipient" -msgstr "æ–°ã—ã„å—信者" - -#: ../templates/tree/add_oclass_form.php:127 -msgid "New required attributes:" -msgstr "æ–°ã—ã„必須属性" - -#: ../templates/lists/listusers.php:281 -msgid "New user" -msgstr "æ–°ã—ã„ユーザ" - -#: ../templates/tree/update_confirm.php:150 -msgid "New value" -msgstr "æ–°ã—ã„値" - -#: ../templates/tree/create_form.php:137 -#: ../templates/tree/templates/creation/custom.php:86 -#: ../templates/tree/templates/creation/new_ou_template.php:69 -msgid "Next" -msgstr "次" - -#: ../templates/domain.php:155 ../help/help.inc:257 -msgid "Next Group RID" -msgstr "次ã®ã‚°ãƒ«ãƒ¼ãƒ—RID" - -#: ../templates/domain.php:129 ../help/help.inc:253 -msgid "Next RID" -msgstr "次ã®RID" - -#: ../templates/domain.php:284 -msgid "Next RID is not a number!" -msgstr "次ã®RIDãŒæ•°å­—ã§ã¯ã‚ã‚Šã¾ã›ã‚“!" - -#: ../help/help.inc:254 -msgid "Next RID to use when creating accounts." -msgstr "アカウント作æˆæ™‚ã«ä½¿ã‚れる次ã®RID。" - -#: ../help/help.inc:258 -msgid "Next RID to use when creating groups." -msgstr "グループ作æˆæ™‚ã«ä½¿ã‚れる次ã®RID。" - -#: ../help/help.inc:256 -msgid "Next RID to use when creating user accounts." -msgstr "ユーザアカウントを作æˆã™ã‚‹ã¨ãã«ä½¿ã‚れる次ã®RID。" - -#: ../templates/domain.php:142 ../help/help.inc:255 -msgid "Next User RID" -msgstr "次ã®ãƒ¦ãƒ¼ã‚¶RID" - -#: ../templates/domain.php:286 -msgid "Next group RID is not a number!" -msgstr "次ã®ã‚°ãƒ«ãƒ¼ãƒ—RIDãŒç•ªå·ã§ã¯ã‚ã‚Šã‚ã›ã‚“!" - -#: ../templates/domain.php:285 -msgid "Next user RID is not a number!" -msgstr "次ã®ãƒ¦ãƒ¼ã‚¶RIDãŒç•ªå·ã§ã¯ã‚ã‚Šã¾ã›ã‚“!" - -#: ../templates/schema/schema.php:159 ../templates/schema/schema.php:201 -#: ../templates/schema/schema.php:206 ../templates/schema/schema.php:211 -msgid "No" -msgstr "ã„ã„ãˆ" - -#: ../templates/lists/listdomains.php:126 -#: ../templates/lists/listdomains.php:132 -#: ../templates/lists/listdomains.php:136 -msgid "No Samba domains found!" -msgstr "SambaドメインãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“!" - -#: ../lib/modules/posixAccount.inc:366 ../lib/modules/posixAccount.inc:597 -#: ../lib/modules/posixAccount.inc:830 -msgid "No Unix groups found in LDAP! Please create one first." -msgstr "unixグループãŒLDAPã«å­˜åœ¨ã—ã¾ã›ã‚“。最åˆã«ä¸€å€‹ä½œæˆã—ã¦ãã ã•ã„。" - -#: ../templates/initsuff.php:161 -msgid "No changes were made." -msgstr "変更ã•ã‚Œã¾ã›ã‚“ã§ã—ãŸã€‚" - -#: ../templates/config/conflogin.php:93 -msgid "No configuration profiles found. Please create one." -msgstr "設定プロファイルãŒã‚ã‚Šã¾ã›ã‚“。一ä¸ä½œæˆã—ã¦ãã ã•ã„。" - -#: ../templates/schema/schema.php:150 -msgid "No description" -msgstr "説明ãªã—" - -#: ../lib/modules/posixGroup.inc:465 ../lib/modules/posixAccount.inc:67 -msgid "No free ID-Number!" -msgstr "空ã„ã¦ã„ã‚‹ID番å·ãŒã‚ã‚Šã¾ã›ã‚“!" - -#: ../templates/lists/listgroups.php:119 ../templates/lists/listgroups.php:125 -msgid "No groups found!" -msgstr "グループãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“!" - -#: ../templates/lists/listhosts.php:119 ../templates/lists/listhosts.php:125 -msgid "No hosts found!" -msgstr "ホストãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“!" - -#: ../templates/tree/edit.php:185 -msgid "No internal attributes" -msgstr "内部属性ãªã—" - -#: ../templates/pdfedit/pdfpage.php:409 -msgid "No logo" -msgstr "ロゴãŒã‚ã‚Šã¾ã›ã‚“" - -#: ../templates/config/confmodules.php:254 -msgid "No or more than one base module selected!" -msgstr "ベースモジュールãŒé¸æŠžã•ã‚Œã¦ã„ãªã„ã‹ã€ã¾ãŸã¯è¤‡æ•°ãŒé¸æŠžã•ã‚Œã¦ã„ã¾ã™!" - -#: ../templates/config/confmain.php:97 -msgid "No password was entered!" -msgstr "パスワードãŒå…¥åŠ›ã•ã‚Œã¦ã„ã¾ã›ã‚“!" - -#: ../templates/pdfedit/pdfpage.php:73 -msgid "No section text specified" -msgstr "セクションテキストãŒæŒ‡å®šã•ã‚Œã¦ã„ã¾ã›ã‚“!" - -#: ../templates/pdfedit/pdfpage.php:77 -msgid "No static text specified" -msgstr "é™çš„テキストãŒæŒ‡å®šã•ã‚Œã¦ã„ã¾ã›ã‚“!" - -#: ../templates/tree/edit.php:80 -msgid "No such entry!" -msgstr "ãã®ã‚ˆã†ãªã‚¨ãƒ³ãƒˆãƒªã¯ã‚ã‚Šã¾ã›ã‚“!" - -#: ../templates/schema/schema.php:443 -#, php-format -msgid "No such schema item: \"%s\"" -msgstr "ãã®ã‚ˆã†ãªã‚¹ã‚­ãƒ¼ãƒžã‚¢ã‚¤ãƒ†ãƒ ã¯ã‚ã‚Šã¾ã›ã‚“: \"%s\"" - -#: ../templates/lists/listusers.php:148 ../templates/lists/listusers.php:154 -msgid "No users found!" -msgstr "ユーザãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“!" - -#: ../help/help.inc:57 -msgid "Note" -msgstr "注" - -#: ../templates/tree/add_value_form.php:114 -msgid "" -"Note: You will get an \"inappropriate matching\" error if you have not setup " -"an EQUALITY rule on your LDAP server for this attribute." -msgstr "" -"注æ„: ã“ã®å±žæ€§ã«å¯¾ã™ã‚‹ã‚ãªãŸã®LDAPサーãƒä¸Šã«ãŠã‘る比較ルールをセットã—ãªã„å ´" -"åˆã€\"inappropriate matching\"エラーをå—ã‘å–ã‚‹ã§ã—ょã†ã€‚" - -#: ../lib/modules/shadowAccount.inc:151 ../help/help.inc:175 -msgid "" -"Number of days a user can login even his password has expired. -1=always." -msgstr "パスワードãŒæœŸé™åˆ‡ã‚Œã«ãªã£ã¦ã‚‚ユーザãŒãƒ­ã‚°ã‚¤ãƒ³ã§ãる日数。-1ã¯ç„¡æœŸé™ã€‚" - -#: ../lib/modules/shadowAccount.inc:155 ../help/help.inc:179 -msgid "" -"Number of days a user has to wait until he\\'s allowed to change his " -"password again. If set value must be 0<." -msgstr "" -"å†åº¦ãƒ‘スワードを変更ã§ãã‚‹ã¾ã§å¾…ãŸãªã‘ã‚Œã°ãªã‚‰ãªã„日数。設定ã™ã‚‹ãªã‚‰ã°0より大" -"ãããªã‘ã‚Œã°ãªã‚‰ãªã„。" - -#: ../lib/modules/shadowAccount.inc:159 ../help/help.inc:177 -msgid "" -"Number of days after a user has to change his password again. If set value " -"must be 0<." -msgstr "" -"å†åº¦ãƒ‘スワードを変更ã—ãªã‘ã‚Œã°ãªã‚‰ãªããªã‚‹æ—¥æ•°ã€‚設定ã™ã‚‹ãªã‚‰ã°0より大ãããªã‘" -"ã‚Œã°ãªã‚‰ãªã„。" - -#: ../templates/schema/schema.php:153 ../templates/schema/schema.php:350 -msgid "OID" -msgstr "" - -#: ../templates/ou_edit.php:58 ../templates/ou_edit.php:123 -#: ../templates/ou_edit.php:188 ../templates/ou_edit.php:253 -msgid "OU already exists!" -msgstr "OU ã¯ã™ã§ã«å­˜åœ¨ã—ã¦ã„ã¾ã™!" - -#: ../templates/ou_edit.php:69 ../templates/ou_edit.php:134 -#: ../templates/ou_edit.php:199 ../templates/ou_edit.php:264 -msgid "OU deleted successfully." -msgstr "OU ã¯æ­£ã—ã削除ã•ã‚Œã¾ã—ãŸã€‚" - -#: ../templates/tools.php:76 -msgid "OU editor" -msgstr "OUエディタ" - -#: ../templates/ou_edit.php:62 ../templates/ou_edit.php:127 -#: ../templates/ou_edit.php:192 ../templates/ou_edit.php:257 -msgid "OU is invalid!" -msgstr "OU ãŒæ­£ã—ãã‚ã‚Šã¾ã›ã‚“!" - -#: ../templates/ou_edit.php:99 ../templates/ou_edit.php:164 -#: ../templates/ou_edit.php:229 ../templates/ou_edit.php:294 -msgid "OU is not empty or invalid!" -msgstr "OU ãŒç©ºç™½ã§ãªã„ã‹ä¸æ­£!" - -#: ../help/help.inc:243 ../help/help.inc:245 -msgid "OU-Editor" -msgstr "OUエディタ" - -#: ../templates/tree/templates/creation/custom.php:70 -#: ../templates/schema/schema.php:71 ../templates/schema/schema.php:72 -msgid "Object classes" -msgstr "オブジェクトクラス" - -#: ../lib/modules.inc:1021 ../lib/modules.inc:1059 ../lib/modules.inc:1174 -#, php-format -msgid "ObjectClass %s required but not defined in LDAP." -msgstr "必須オブジェクトクラス %s ãŒLDAPã«å®šç¾©ã•ã‚Œã¦ã„ã¾ã›ã‚“。" - -#: ../templates/schema/schema.php:158 ../templates/schema/schema.php:289 -msgid "Obsolete" -msgstr "" - -#: ../templates/config/conflogin.php:123 ../templates/config/conflogin.php:124 -msgid "Ok" -msgstr "" - -#: ../templates/tree/update_confirm.php:149 -msgid "Old value" -msgstr "å¤ã„値" - -#: ../templates/tree/templates/creation/custom.php:209 -#: ../templates/schema/schema.php:390 -msgid "Optional attributes" -msgstr "ä»»æ„属性" - -#: ../templates/tree/templates/creation/custom.php:225 -msgid "Optional binary attributes" -msgstr "ä»»æ„ãƒã‚¤ãƒŠãƒªå±žæ€§" - -#: ../templates/schema/schema.php:177 -msgid "Ordering" -msgstr "並ã¹æ›¿ãˆ" - -#: ../templates/tree/templates/templates.inc:46 -msgid "Organizational unit" -msgstr "" - -#: ../templates/tools.php:83 -msgid "PDF editor" -msgstr "PDFエディタ" - -#: ../templates/lists/listhosts.php:226 ../templates/lists/listgroups.php:241 -#: ../templates/lists/listusers.php:286 ../templates/pdfedit/pdfpage.php:573 -msgid "PDF structure" -msgstr "PDF構æˆ" - -#: ../templates/pdfedit/pdfmain.php:101 -msgid "PDF structures" -msgstr "PDF構æˆ" - -#: ../templates/pdfedit/pdfpage.php:61 -msgid "PDF-structure name not valid" -msgstr "PDF構æˆåãŒæ­£ã—ãã‚ã‚Šã¾ã›ã‚“" - -#: ../templates/pdfedit/pdfpage.php:429 -msgid "Page settings" -msgstr "ページ設定" - -#: ../templates/schema/schema.php:372 -msgid "Parent to" -msgstr "派生先" - -#: ../templates/login.php:189 ../lib/modules/posixGroup.inc:157 -#: ../lib/modules/posixGroup.inc:169 ../lib/modules/posixGroup.inc:258 -#: ../lib/modules/posixGroup.inc:460 ../lib/modules/posixGroup.inc:461 -#: ../lib/modules/posixGroup.inc:462 ../lib/modules/sambaAccount.inc:59 -#: ../lib/modules/sambaAccount.inc:60 ../lib/modules/sambaAccount.inc:204 -#: ../lib/modules/sambaSamAccount.inc:55 ../lib/modules/sambaSamAccount.inc:56 -#: ../lib/modules/sambaSamAccount.inc:220 ../lib/modules/posixAccount.inc:71 -#: ../lib/modules/posixAccount.inc:72 ../lib/modules/posixAccount.inc:73 -#: ../lib/modules/posixAccount.inc:212 ../lib/modules/posixAccount.inc:323 -#: ../lib/modules/posixAccount.inc:871 ../lib/modules/posixAccount.inc:883 -#: ../lib/modules/posixAccount.inc:976 ../lib/modules/posixAccount.inc:1087 -msgid "Password" -msgstr "パスワード" - -#: ../templates/config/confsave.php:246 -msgid "Password changed!" -msgstr "パスワードãŒå¤‰æ›´ã•ã‚Œã¾ã—ãŸ!" - -#: ../lib/modules/posixGroup.inc:461 ../lib/modules/sambaAccount.inc:60 -#: ../lib/modules/sambaAccount.inc:61 ../lib/modules/sambaSamAccount.inc:56 -#: ../lib/modules/sambaSamAccount.inc:57 ../lib/modules/posixAccount.inc:72 -#: ../lib/modules/posixAccount.inc:74 -msgid "" -"Password contains invalid characters. Valid characters are: a-z, A-Z, 0-9 " -"and #*,.;:_-+!$%&/|?{[()]}= !" -msgstr "" -"パスワードã«ä¸æ­£ãªæ–‡å­—ãŒå«ã¾ã‚Œã¦ã„ã¾ã™ã€‚有効ãªæ–‡å­—ã¯: a-z, A-Z, 0-9, #*,.;:_-" -"+!$%&/|?{[()]}= ! ã§ã™ã€‚" - -#: ../lib/modules/sambaAccount.inc:110 ../lib/modules/sambaAccount.inc:226 -#: ../lib/modules/sambaAccount.inc:337 ../lib/modules/sambaAccount.inc:340 -#: ../lib/modules/sambaAccount.inc:701 ../lib/modules/sambaSamAccount.inc:152 -#: ../lib/modules/sambaSamAccount.inc:155 -#: ../lib/modules/sambaSamAccount.inc:242 -#: ../lib/modules/sambaSamAccount.inc:687 -#: ../lib/modules/sambaSamAccount.inc:837 ../help/help.inc:200 -msgid "Password does not expire" -msgstr "無期é™ã®ãƒ‘スワード" - -#: ../lib/modules/shadowAccount.inc:43 ../lib/modules/shadowAccount.inc:78 -#: ../lib/modules/shadowAccount.inc:150 ../lib/modules/shadowAccount.inc:176 -#: ../lib/modules/shadowAccount.inc:304 ../lib/modules/shadowAccount.inc:341 -msgid "Password expiration" -msgstr "パスワード有効期é™" - -#: ../lib/modules/shadowAccount.inc:43 ../lib/modules/shadowAccount.inc:44 -msgid "Password expiration must be are natural number or -1." -msgstr "パスワード有効期é™ã¯è‡ªç„¶æ•°ã¾ãŸã¯-1ã§ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“。" - -#: ../help/help.inc:174 -msgid "Password expire" -msgstr "パスワード有効期é™" - -#: ../lib/modules/posixGroup.inc:304 ../lib/modules/posixGroup.inc:417 -#: ../lib/modules/posixAccount.inc:144 ../lib/modules/posixAccount.inc:298 -msgid "Password hash type" -msgstr "パスワードãƒãƒƒã‚·ãƒ¥å½¢å¼" - -#: ../lib/modules/posixAccount.inc:160 -msgid "Password hash type for Unix accounts" -msgstr "unixアカウントã«å¯¾ã™ã‚‹ãƒ‘スワードãƒãƒƒã‚·ãƒ¥å½¢å¼" - -#: ../lib/modules/posixGroup.inc:318 -msgid "Password hash type for Unix groups" -msgstr "unixグループã«å¯¾ã™ã‚‹ãƒ‘スワードãƒãƒƒã‚·ãƒ¥å½¢å¼" - -#: ../lib/modules/shadowAccount.inc:41 ../lib/modules/shadowAccount.inc:47 -msgid "Password maxage" -msgstr "パスワード寿命ã®æœ€å¤§å€¤" - -#: ../lib/modules/shadowAccount.inc:41 ../lib/modules/shadowAccount.inc:42 -msgid "Password maximum age must be are natural number." -msgstr "パスワード寿命ã®æœ€å¤§å€¤ã¯è‡ªç„¶æ•°ã§ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“。" - -#: ../lib/modules/shadowAccount.inc:47 ../lib/modules/shadowAccount.inc:48 -msgid "Password maximum age must be bigger as password minimum age." -msgstr "パスワード寿命ã®æœ€å¤§å€¤ã¯æœ€å°å€¤ã‚ˆã‚Šå¤§ãããªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“。" - -#: ../lib/modules/shadowAccount.inc:39 -msgid "Password minage" -msgstr "パスワード寿命ã®æœ€å°å€¤" - -#: ../lib/modules/shadowAccount.inc:39 ../lib/modules/shadowAccount.inc:40 -msgid "Password minimum age must be are natural number." -msgstr "パスワード寿命ã®æœ€å°å€¤ã¯è‡ªç„¶æ•°ã§ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“。" - -#: ../help/help.inc:172 -msgid "Password warn" -msgstr "パスワード警告" - -#: ../lib/modules/shadowAccount.inc:45 ../lib/modules/shadowAccount.inc:73 -#: ../lib/modules/shadowAccount.inc:146 ../lib/modules/shadowAccount.inc:170 -#: ../lib/modules/shadowAccount.inc:301 ../lib/modules/shadowAccount.inc:339 -msgid "Password warning" -msgstr "パスワード警告" - -#: ../lib/modules/shadowAccount.inc:45 ../lib/modules/shadowAccount.inc:46 -msgid "Password warning must be are natural number." -msgstr "パスワード警告期é™ã¯è‡ªç„¶æ•°ã§ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“。" - -#: ../templates/config/confsave.php:240 -msgid "Passwords are different!" -msgstr "パスワードãŒç•°ãªã£ã¦ã„ã¾ã™!" - -#: ../lib/modules/sambaAccount.inc:361 ../lib/modules/sambaSamAccount.inc:176 -#: ../help/help.inc:213 -msgid "" -"Path of the user profile. Can be a local absolute path or a UNC-path (\\" -"\\server\\share). $user and $group are replaced with user- and groupname." -msgstr "" -"ユーザプロファイルã®ãƒ‘ス。ローカル絶対パスã€ã¾ãŸã¯ã€UNCパス(\\\\サーãƒ\\å…±" -"有)。 $use 㨠$group ã¯ãƒ¦ãƒ¼ã‚¶ã¨ã‚°ãƒ«ãƒ¼ãƒ—ã«ç½®ãæ›ãˆã‚‰ã‚Œã¾ã™ã€‚" - -#: ../templates/config/confmain.php:426 ../lib/config.inc:368 -msgid "Path to external script" -msgstr "外部スクリプトã®ãƒ‘ス" - -#: ../templates/tree/delete_form.php:80 -msgid "Permanently delete all children, too?" -msgstr "å…¨ã¦ã®å­ã‚‚削除ã—ã¾ã™ã‹?" - -#: ../lib/modules/inetOrgPerson.inc:87 -msgid "Personal" -msgstr "" - -#: ../templates/delete.php:77 -msgid "Please confirm:" -msgstr "確èªã—ã¦ãã ã•ã„:" - -#: ../lib/modules/sambaSamAccount.inc:60 -msgid "Please enter a RID number or the name of a special account!" -msgstr "特殊アカウントã®RID番å·ã¾ãŸã¯åå‰ã‚’入力ã—ã¦ãã ã•ã„。" - -#: ../lib/modules/sambaAccount.inc:55 ../lib/modules/sambaAccount.inc:56 -#: ../lib/modules/sambaSamAccount.inc:53 ../lib/modules/sambaSamAccount.inc:54 -msgid "Please enter a comma separated list of host names!" -msgstr "カンマã§åŒºåˆ‡ã‚‰ã‚ŒãŸãƒ›ã‚¹ãƒˆåを入力ã—ã¦ãã ã•ã„!" - -#: ../lib/modules/inetOrgPerson.inc:74 -msgid "Please enter a valid common name!" -msgstr "æ­£ã—ã„æ°åを入力ã—ã¦ãã ã•ã„!" - -#: ../lib/modules/sambaAccount.inc:69 ../lib/modules/sambaAccount.inc:70 -#: ../lib/modules/sambaSamAccount.inc:67 ../lib/modules/sambaSamAccount.inc:68 -msgid "Please enter a valid date in format DD-MM-YYYY." -msgstr "æ­£ã—ã„日付をDD-MM-YYYYã®å½¢å¼ã§å…¥åŠ›ã—ã¦ãã ã•ã„!" - -#: ../lib/modules/sambaAccount.inc:64 ../lib/modules/sambaSamAccount.inc:62 -msgid "Please enter a valid display name!" -msgstr "æ­£ã—ã„表示å(display name)を入力ã—ã¦ãã ã•ã„!" - -#: ../lib/modules/sambaAccount.inc:71 ../lib/modules/sambaSamAccount.inc:69 -msgid "Please enter a valid drive letter." -msgstr "æ­£ã—ã„ドライブ文字を入力ã—ã¦ãã ã•ã„!" - -#: ../lib/modules/inetOrgPerson.inc:62 ../lib/modules/inetOrgPerson.inc:63 -msgid "Please enter a valid eMail address!" -msgstr "æ­£ã—ã„é›»å­ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’入力ã—ã¦ãã ã•ã„!" - -#: ../lib/modules/inetOrgPerson.inc:72 ../lib/modules/inetOrgPerson.inc:73 -msgid "Please enter a valid employee type!" -msgstr "æ­£ã—ã„雇用形態を入力ã—ã¦ãã ã•ã„!" - -#: ../lib/modules/inetOrgPerson.inc:60 ../lib/modules/inetOrgPerson.inc:61 -msgid "Please enter a valid fax number!" -msgstr "æ­£ã—ã„ファクス番å·ã‚’入力ã—ã¦ãã ã•ã„!" - -#: ../lib/modules/sambaAccount.inc:72 -msgid "Please enter a valid group RID." -msgstr "æ­£ã—ã„グループRIDを入力ã—ã¦ãã ã•ã„!" - -#: ../lib/modules/sambaSamAccount.inc:72 -msgid "Please enter a valid group name!" -msgstr "æ­£ã—ã„グループåを入力ã—ã¦ãã ã•ã„!" - -#: ../lib/modules/inetOrgPerson.inc:70 ../lib/modules/inetOrgPerson.inc:71 -msgid "Please enter a valid job title!" -msgstr "æ­£ã—ã„å½¹è·ã‚’入力ã—ã¦ãã ã•ã„!" - -#: ../lib/modules/inetOrgPerson.inc:58 ../lib/modules/inetOrgPerson.inc:59 -msgid "Please enter a valid mobile number!" -msgstr "æ­£ã—ã„æºå¸¯é›»è©±ç•ªå·ã‚’入力ã—ã¦ãã ã•ã„!" - -#: ../lib/modules/inetOrgPerson.inc:66 ../lib/modules/inetOrgPerson.inc:67 -msgid "Please enter a valid postal address!" -msgstr "æ­£ã—ã„ä½æ‰€ã‚’入力ã—ã¦ãã ã•ã„!" - -#: ../lib/modules/inetOrgPerson.inc:68 ../lib/modules/inetOrgPerson.inc:69 -msgid "Please enter a valid postal code!" -msgstr "æ­£ã—ã„郵便番å·ã‚’入力ã—ã¦ãã ã•ã„!" - -#: ../lib/modules/sambaAccount.inc:73 -msgid "Please enter a valid special user name." -msgstr "æ­£ã—ã„特殊ユーザå(special user name)を入力ã—ã¦ãã ã•ã„!" - -#: ../lib/modules/inetOrgPerson.inc:64 ../lib/modules/inetOrgPerson.inc:65 -msgid "Please enter a valid street name!" -msgstr "æ­£ã—ã„町å(street name)を入力ã—ã¦ãã ã•ã„!" - -#: ../lib/modules/inetOrgPerson.inc:56 ../lib/modules/inetOrgPerson.inc:57 -msgid "Please enter a valid telephone number!" -msgstr "æ­£ã—ã„電話番å·ã‚’入力ã—ã¦ãã ã•ã„!" - -#: ../lib/modules/posixGroup.inc:577 ../lib/modules/posixAccount.inc:651 -#, php-format -msgid "Please enter a value between %s and %s!" -msgstr "%s 㨠%s ã®é–“ã®å€¤ã‚’入力ã—ã¦ãã ã•ã„!" - -#: ../templates/config/conflogin.php:87 -msgid "Please enter password to change preferences:" -msgstr "プリファレンスを変更ã™ã‚‹ãŸã‚ã®ãƒ‘スワードを入力ã—ã¦ãã ã•ã„:" - -#: ../help/help.inc:47 -msgid "" -"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\"." -msgstr "" -"構æˆãƒ‘スワードを入力。ã“ã‚Œã¯LDAPパスワードã¨ã¯ç•°ãªã‚Šã¾ã™ã€‚ã“れ㯠.confファイ" -"ルã«è¨˜éŒ²ã•ã‚Œã¾ã™ã€‚ã‚‚ã—ã‚‚ã“ã‚ŒãŒæœ€åˆã®ãƒ­ã‚°ã‚¤ãƒ³ãªã‚‰ã°ã€\"lam\" ã¨å…¥åŠ›ã—ã¦ãã ã•" -"ã„。" - -#: ../help/help.inc:127 -msgid "" -"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\"." -msgstr "" -"マスタ構æˆãƒ‘スワードを入力ã—ã¦ãã ã•ã„。ã“ã‚Œã¯LDAPパスワードã§ã¯ã‚ã‚Šã¾ã›ã‚“。" -"ã“ã‚Œã¯config.cfgファイルã«ä¿å­˜ã•ã‚Œã¾ã™ã€‚ã‚‚ã—ã‚‚ã“ã‚ŒãŒæœ€åˆã®ãƒ­ã‚°ã‚¤ãƒ³ãªã‚‰ã°ã€ " -"\"lam\" ã¨å…¥åŠ›ã—ã¦ãã ã•ã„。" - -#: ../help/help.inc:115 -msgid "" -"Please enter the name of the new profile and the password to change its " -"settings. Profile names may contain letters, numbers and -/_." -msgstr "" -"ãã®è¨­å®šã‚’変更ã™ã‚‹ãŸã‚ã®æ–°ã—ã„プロファイルåã¨ãƒ‘スワードを入力。プロファイル" -"åã«ã¯ã‚¢ãƒ«ãƒ•ã‚¡ãƒ™ãƒƒãƒˆã€æ•°å­—㨠-/_ ãŒä½¿ç”¨ã§ãã¾ã™ã€‚" - -#: ../help/help.inc:117 -msgid "" -"Please enter the new name of the profile. The name may contain letters, " -"numbers and -/_." -msgstr "" -"æ–°ã—ã„プロファイルåを入力。åå‰ã«ã¯ã‚¢ãƒ«ãƒ•ã‚¡ãƒ™ãƒƒãƒˆã€æ•°å­—㨠-/_ ãŒä½¿ç”¨ã§ãã¾" -"ã™ã€‚" - -#: ../lib/modules/posixAccount.inc:324 -msgid "Please enter the password which you want to set for this account." -msgstr "ã“ã®ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã«å¯¾ã™ã‚‹ãƒ‘スワードを入力ã—ã¦ãã ã•ã„。" - -#: ../lib/modules/posixGroup.inc:460 ../lib/modules/sambaAccount.inc:59 -#: ../lib/modules/sambaSamAccount.inc:55 ../lib/modules/posixAccount.inc:71 -msgid "Please enter the same password in both password-fields." -msgstr "2ã¤ã®ãƒ‘スワードフィールドã«åŒã˜ãƒ‘スワードを入力ã—ã¦ãã ã•ã„。" - -#: ../templates/masscreate.php:120 -msgid "" -"Please provide a CSV formated file with your account data. The cells in the " -"first row must be filled with the column identifiers. The following rows " -"represent one account for each row." -msgstr "" -"アカウント情報ã®CSVå½¢å¼ãƒ•ã‚¡ã‚¤ãƒ«ã‚’与ãˆã¦ãã ã•ã„。先頭行ã®ã‚»ãƒ«ã«ã¯ã€ã‚«ãƒ©ãƒ è­˜åˆ¥" -"å­ãŒè¨˜å…¥ã•ã‚Œã¦ã„ãªãã¦ã¯ãªã‚Šã¾ã›ã‚“。後ã«ç¶šãè¡Œã¯ã€å„々ã®è¡ŒãŒä¸€ã¤ã®ã‚¢ã‚«ã‚¦ãƒ³ãƒˆ" -"ã«ãªã‚Šã¾ã™ã€‚" - -#: ../lib/status.inc:62 -msgid "" -"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." -msgstr "" -"ã“ã®ã‚¨ãƒ©ãƒ¼ã‚’ãƒã‚°ãƒˆãƒ©ãƒƒã‚«ãƒ¼ {link=http://lam.sf.net}LDAP Account Manager 開発" -"ãƒãƒ¼ãƒ {endlink}ã«ãƒ¬ãƒãƒ¼ãƒˆã—ã¦ãã ã•ã„。エラー番å·ã¯ {bold}0001: Invalid/" -"Missing Message type.{endbold} ã§ã™ã€‚ã”å”力ã«æ„Ÿè¬ã—ã¾ã™ã€‚" - -#: ../lib/modules.inc:896 -msgid "Please select page:" -msgstr "ページをé¸æŠž:" - -#: ../templates/masscreate.php:89 -msgid "Please select your account type:" -msgstr "アカウントタイプをé¸æŠžã—ã¦ãã ã•ã„:" - -#: ../templates/login.php:162 -msgid "Please select your user name and enter your password to log in" -msgstr "ユーザåã‚’é¸ã‚“ã§ã‹ã‚‰ãƒ‘スワードを入力ã—ã¦ãƒ­ã‚°ã‚¤ãƒ³ã—ã¦ãã ã•ã„。" - -#: ../lib/modules.inc:887 -#, php-format -msgid "Please set up all required attributes on page: %s" -msgstr "ページ %s ã®å¿…須属性を全ã¦è¨­å®šã—ã¦ãã ã•ã„。" - -#: ../templates/config/profmanage.php:148 -msgid "Please set up your master configuration file (config/config.cfg) first!" -msgstr "最åˆã«ã€ãƒžã‚¹ã‚¿ãƒ¼è¨­å®šãƒ•ã‚¡ã‚¤ãƒ«(config/config.cfg)を設定ã—ã¦ãã ã•ã„!" - -#: ../templates/pdfedit/pdfpage.php:708 -msgid "Position" -msgstr "ä½ç½®" - -#: ../help/help.inc:229 -msgid "Position in ldap-tree where the group should be created." -msgstr "グループを作æˆã™ã¹ãLDAPツリーã®ä½ç½®ã€‚" - -#: ../help/help.inc:231 -msgid "Position in ldap-tree where the host should be created." -msgstr "ホストを作æˆã™ã¹ãLDAPツリーã®ä½ç½®ã€‚" - -#: ../help/help.inc:227 -msgid "Position in ldap-tree where the user should be created." -msgstr "ユーザを作æˆã™ã¹ãLDAPツリーã®ä½ç½®ã€‚" - -#: ../templates/masscreate.php:163 ../templates/masscreate.php:300 -#: ../lib/modules/sambaGroupMapping.inc:353 -msgid "Possible values" -msgstr "候補ã¨ãªã‚‹å€¤" - -#: ../lib/modules/inetOrgPerson.inc:66 ../lib/modules/inetOrgPerson.inc:173 -#: ../lib/modules/inetOrgPerson.inc:251 ../lib/modules/inetOrgPerson.inc:428 -#: ../lib/modules/inetOrgPerson.inc:468 -msgid "Postal address" -msgstr "ä½æ‰€" - -#: ../lib/modules/inetOrgPerson.inc:252 -msgid "Postal address, city" -msgstr "ä½æ‰€ã€åŒºå¸‚町æ‘" - -#: ../lib/modules/inetOrgPerson.inc:68 ../lib/modules/inetOrgPerson.inc:167 -#: ../lib/modules/inetOrgPerson.inc:247 ../lib/modules/inetOrgPerson.inc:248 -#: ../lib/modules/inetOrgPerson.inc:424 ../lib/modules/inetOrgPerson.inc:467 -msgid "Postal code" -msgstr "郵便番å·" - -#: ../help/help.inc:77 -msgid "Predefined values" -msgstr "ã‚らã‹ã˜ã‚定義ã•ã‚ŒãŸå€¤" - -#: ../lib/modules/inetOrgPerson.inc:151 -msgid "President" -msgstr "社長" - -#: ../lib/modules/posixGroup.inc:129 ../lib/modules/posixAccount.inc:184 -#: ../lib/modules/posixAccount.inc:251 ../lib/modules/posixAccount.inc:315 -#: ../lib/modules/posixAccount.inc:350 ../lib/modules/posixAccount.inc:850 -#: ../lib/modules/posixAccount.inc:1004 ../lib/modules/posixAccount.inc:1032 -#: ../lib/modules/posixAccount.inc:1084 ../help/help.inc:156 -#: ../help/help.inc:168 -msgid "Primary group" -msgstr "プライマリグループ" - -#: ../templates/config/profmanage.php:106 -msgid "Profile deleted." -msgstr "プロファイルãŒå‰Šé™¤ã•ã‚Œã¾ã—ãŸã€‚" - -#: ../templates/tools.php:53 -msgid "Profile editor" -msgstr "プロファイルエディタ" - -#: ../templates/config/profmanage.php:50 -#: ../templates/config/profmanage.php:161 ../help/help.inc:114 -#: ../help/help.inc:116 ../help/help.inc:118 ../help/help.inc:120 -#: ../help/help.inc:122 ../help/help.inc:124 ../help/help.inc:126 -msgid "Profile management" -msgstr "プロファイル管ç†" - -#: ../templates/config/profmanage.php:176 -#: ../templates/config/profmanage.php:228 -#: ../templates/profedit/profilepage.php:152 ../help/help.inc:137 -msgid "Profile name" -msgstr "プロファイルå" - -#: ../templates/config/profmanage.php:90 -#: ../templates/config/profmanage.php:101 -msgid "Profile name is invalid!" -msgstr "プロファイルåãŒæ­£ã—ãã‚ã‚Šã¾ã›ã‚“!" - -#: ../templates/config/profmanage.php:192 -#: ../templates/config/profmanage.php:292 -msgid "Profile password" -msgstr "プロファイルパスワード" - -#: ../templates/config/profmanage.php:88 -#: ../templates/config/profmanage.php:118 -msgid "Profile passwords are different or empty!" -msgstr "プロファイルパスワードãŒç•°ãªã‚‹ã‹ã€ã¾ãŸã¯æœªå…¥åŠ›ã§ã™!" - -#: ../lib/modules/sambaAccount.inc:49 ../lib/modules/sambaAccount.inc:50 -#: ../lib/modules/sambaAccount.inc:136 ../lib/modules/sambaAccount.inc:268 -#: ../lib/modules/sambaAccount.inc:360 ../lib/modules/sambaAccount.inc:733 -#: ../lib/modules/sambaAccount.inc:838 ../lib/modules/sambaSamAccount.inc:47 -#: ../lib/modules/sambaSamAccount.inc:48 -#: ../lib/modules/sambaSamAccount.inc:175 -#: ../lib/modules/sambaSamAccount.inc:284 -#: ../lib/modules/sambaSamAccount.inc:719 -#: ../lib/modules/sambaSamAccount.inc:863 -#: ../lib/modules/sambaSamAccount.inc:956 ../help/help.inc:212 -msgid "Profile path" -msgstr "プロファイルパス" - -#: ../lib/modules/sambaAccount.inc:49 ../lib/modules/sambaSamAccount.inc:47 -#: ../lib/modules/sambaSamAccount.inc:49 -msgid "Profile path is invalid!" -msgstr "プロファイルパスãŒæ­£ã—ãã‚ã‚Šã¾ã›ã‚“!" - -#: ../templates/profedit/profilecreate.php:112 -msgid "Profile was saved." -msgstr "プロファイルãŒã‚»ãƒ¼ãƒ–ã•ã‚Œã¾ã—ãŸã€‚" - -#: ../lib/modules/quota.inc:48 -msgid "Quota" -msgstr "クオータ" - -#: ../templates/tree/templates/creation/custom.php:62 -msgid "RDN" -msgstr "" - -#: ../templates/masscreate.php:155 ../templates/profedit/profilepage.php:111 -#: ../lib/modules.inc:976 ../help/help.inc:135 -msgid "RDN identifier" -msgstr "RDN識別å­" - -#: ../lib/lists.inc:328 -msgid "RID (Windows UID)" -msgstr "RID (Windows UID)" - -#: ../templates/tree/templates/creation/new_ou_template.php:99 -msgid "Really create this new OU?" -msgstr "ã“ã®OUã‚’æ–°è¦ä½œæˆã—ã¾ã™ã‹?" - -#: ../templates/tree/edit.php:519 -msgid "Really delete attribute?" -msgstr "ã“ã®å±žæ€§ã‚’削除ã—ã¾ã™ã‹?" - -#: ../lib/modules/nisMailAlias.inc:64 ../lib/modules/nisMailAlias.inc:172 -msgid "Recipient" -msgstr "å—信者" - -#: ../lib/modules/nisMailAlias.inc:68 ../lib/modules/nisMailAlias.inc:82 -#: ../lib/modules/nisMailAlias.inc:308 -msgid "Recipient list" -msgstr "å—信者リスト" - -#: ../templates/tree/rdelete.php:71 -msgid "Recursive delete progress" -msgstr "å†å¸°çš„ãªå‰Šé™¤ä¸­" - -#: ../templates/config/confmain.php:468 -msgid "Reenter Password" -msgstr "パスワードå†å…¥åŠ›" - -#: ../templates/config/profmanage.php:384 -msgid "Reenter new master password" -msgstr "æ–°ã—ã„マスタパスワードをå†å…¥åŠ›" - -#: ../templates/config/profmanage.php:201 -#: ../templates/config/profmanage.php:308 -msgid "Reenter profile password" -msgstr "プロファイルパスワードをå†å…¥åŠ›" - -#: ../templates/tree/edit.php:100 ../lib/tree.inc:64 ../lib/tree.inc:65 -#: ../lib/lists.inc:150 -msgid "Refresh" -msgstr "リフレッシュ" - -#: ../templates/tree/templates/creation/custom.php:62 -msgid "Relative distinguished name" -msgstr "相対識別å" - -#: ../templates/pdfedit/pdfpage.php:581 ../lib/modules/ieee802device.inc:146 -#: ../lib/modules/inetLocalMailRecipient.inc:208 -#: ../lib/modules/nisMailAlias.inc:174 -msgid "Remove" -msgstr "削除" - -#: ../templates/config/profmanage.php:224 ../help/help.inc:116 -msgid "Rename profile" -msgstr "プロファイルå変更" - -#: ../templates/config/profmanage.php:97 -msgid "Renamed profile." -msgstr "プロファイルåãŒå¤‰æ›´ã•ã‚Œã¾ã—ãŸã€‚" - -#: ../lib/modules/posixGroup.inc:163 ../lib/modules/posixGroup.inc:262 -#: ../lib/modules/sambaAccount.inc:690 ../lib/modules/sambaSamAccount.inc:676 -#: ../lib/modules/posixAccount.inc:877 ../lib/modules/posixAccount.inc:982 -msgid "Repeat password" -msgstr "パスワードå†å…¥åŠ›" - -#: ../lib/modules/posixAccount.inc:65 ../lib/modules/posixAccount.inc:709 -msgid "Replaced $user or $group in homedir." -msgstr "$user ã¾ãŸã¯ $group をホームディレクトリã«ç½®ãæ›ãˆã¾ã—ãŸã€‚" - -#: ../templates/tree/edit.php:238 -#, php-format -msgid "Required attribute for objectClass(es) %s" -msgstr "オブジェクトクラス %s ã«å¯¾ã™ã‚‹å¿…須属性" - -#: ../templates/tree/templates/creation/custom.php:187 -#: ../templates/schema/schema.php:389 -msgid "Required attributes" -msgstr "必須属性" - -#: ../templates/domain.php:222 ../templates/config/confmain.php:483 -#: ../templates/profedit/profilepage.php:162 -msgid "Reset" -msgstr "リセット" - -#: ../lib/modules.inc:918 -msgid "Reset changes" -msgstr "変更をリセット" - -#: ../lib/modules/sambaAccount.inc:780 ../lib/modules/sambaSamAccount.inc:768 -msgid "Reset password" -msgstr "パスワードをリセット" - -#: ../lib/modules/inetLocalMailRecipient.inc:56 -#: ../lib/modules/inetLocalMailRecipient.inc:91 -#: ../lib/modules/inetLocalMailRecipient.inc:195 -#: ../lib/modules/inetLocalMailRecipient.inc:369 -msgid "Routing address" -msgstr "転é€ã‚¢ãƒ‰ãƒ¬ã‚¹" - -#: ../lib/modules/sambaAccount.inc:91 -msgid "Samba 2" -msgstr "Samba 2" - -#: ../lib/modules/sambaSamAccount.inc:89 -#: ../lib/modules/sambaGroupMapping.inc:218 -msgid "Samba 3" -msgstr "Samba 3" - -#: ../templates/domain.php:279 -msgid "Samba 3 domain SID is invalid!" -msgstr "Samba 3 ドメインã®SIDãŒä¸æ­£ã§ã™!" - -#: ../templates/tools.php:61 -msgid "Samba 3 domains" -msgstr "Samba 3 ドメイン" - -#: ../templates/ou_edit.php:410 -msgid "Samba Hosts" -msgstr "Samba ホスト" - -#: ../lib/modules/sambaSamAccount.inc:187 -#: ../lib/modules/sambaSamAccount.inc:191 -#: ../lib/modules/sambaSamAccount.inc:309 -#: ../lib/modules/sambaSamAccount.inc:333 -msgid "Samba RID" -msgstr "Samba RID" - -#: ../lib/modules/sambaGroupMapping.inc:252 -#: ../lib/modules/sambaGroupMapping.inc:277 -msgid "Samba RID number" -msgstr "Samba RID番å·" - -#: ../lib/modules/sambaGroupMapping.inc:246 -msgid "Samba display name" -msgstr "Samba表示å" - -#: ../lib/modules/sambaGroupMapping.inc:238 -msgid "Samba domain name" -msgstr "Sambaドメインå" - -#: ../lib/modules/sambaGroupMapping.inc:258 -#: ../lib/modules/sambaGroupMapping.inc:285 -#: ../lib/modules/sambaGroupMapping.inc:302 -msgid "Samba group type" -msgstr "Sambaグループタイプ" - -#: ../lib/modules/sambaAccount.inc:322 ../lib/modules/sambaAccount.inc:687 -#: ../lib/modules/sambaSamAccount.inc:137 -#: ../lib/modules/sambaSamAccount.inc:674 -msgid "Samba password" -msgstr "Sambaパスワード" - -#: ../lib/modules/sambaAccount.inc:55 ../lib/modules/sambaAccount.inc:148 -#: ../lib/modules/sambaAccount.inc:280 ../lib/modules/sambaAccount.inc:366 -#: ../lib/modules/sambaAccount.inc:739 ../lib/modules/sambaAccount.inc:839 -#: ../lib/modules/sambaSamAccount.inc:53 -#: ../lib/modules/sambaSamAccount.inc:181 -#: ../lib/modules/sambaSamAccount.inc:296 -#: ../lib/modules/sambaSamAccount.inc:725 -#: ../lib/modules/sambaSamAccount.inc:875 -#: ../lib/modules/sambaSamAccount.inc:957 ../help/help.inc:214 -msgid "Samba workstations" -msgstr "Samba ワークステーション" - -#: ../lib/pdf.inc:455 -msgid "Samba-Host information page" -msgstr "Sambaホスト情報ページ" - -#: ../templates/tree/edit.php:506 ../templates/pdfedit/pdfpage.php:831 -#: ../templates/profedit/profilepage.php:160 -msgid "Save" -msgstr "ä¿å­˜" - -#: ../help/help.inc:220 -msgid "Save profile" -msgstr "プロファイルをä¿å­˜" - -#: ../templates/config/confsave.php:177 -msgid "Saving group modules failed!" -msgstr "グループモジュールã®ä¿å­˜ã«å¤±æ•—ã—ã¾ã—ãŸ!" - -#: ../templates/config/confsave.php:183 -msgid "Saving host modules failed!" -msgstr "ホストモジュールã®ä¿å­˜ã«å¤±æ•—ã—ã¾ã—ãŸ!" - -#: ../templates/config/confsave.php:171 -msgid "Saving user modules failed!" -msgstr "ユーザモジュールã®ä¿å­˜ã«å¤±æ•—ã—ã¾ã—ãŸ!" - -#: ../templates/tools.php:90 -msgid "Schema browser" -msgstr "スキーマブラウザ" - -#: ../templates/pdfedit/pdfdelete.php:56 ../templates/pdfedit/pdfdelete.php:59 -#: ../templates/pdfedit/pdfdelete.php:78 -msgid "Scope" -msgstr "スコープ" - -#: ../lib/modules/sambaSamAccount.inc:50 ../lib/modules/sambaSamAccount.inc:51 -#: ../help/help.inc:96 ../help/help.inc:210 -msgid "Script path" -msgstr "スクリプトパス" - -#: ../templates/config/confsave.php:159 ../lib/modules/sambaSamAccount.inc:50 -msgid "Script path is invalid!" -msgstr "スクリプトパスãŒæ­£ã—ãã‚ã‚Šã¾ã›ã‚“!" - -#: ../help/help.inc:101 -msgid "Script server" -msgstr "スクリプトサーãƒ" - -#: ../templates/config/confsave.php:165 -msgid "Script server is invalid!" -msgstr "スクリプトサーãƒãŒæ­£ã—ãã‚ã‚Šã¾ã›ã‚“!" - -#: ../templates/config/confmain.php:413 -msgid "Script settings" -msgstr "スクリプト設定" - -#: ../templates/pdfedit/pdfpage.php:740 -msgid "Section" -msgstr "セクション" - -#: ../templates/config/confmain.php:441 -msgid "Security settings" -msgstr "セキュリティ設定" - -#: ../templates/lists/listhosts.php:104 ../templates/lists/listgroups.php:104 -#: ../templates/lists/listdomains.php:121 ../templates/lists/listusers.php:131 -msgid "See README.openldap.txt to solve this problem." -msgstr "ã“ã®å•é¡Œã‚’解決ã™ã‚‹ã«ã¯ã€README.openldap.txtã‚’å‚ç…§ã—ã¦ãã ã•ã„。" - -#: ../templates/help.php:112 -msgid "See also" -msgstr "å‚ç…§" - -#: ../templates/tree/create_form.php:76 -msgid "Select a template for the creation process" -msgstr "生æˆå‡¦ç†ã«å¯¾ã™ã‚‹ãƒ†ãƒ³ãƒ—レートをé¸ã‚“ã§ãã ã•ã„" - -#: ../templates/lists/listhosts.php:199 ../templates/lists/listgroups.php:216 -#: ../templates/lists/listusers.php:246 -msgid "Select all" -msgstr "ã™ã¹ã¦ã‚’é¸æŠž" - -#: ../help/help.inc:222 -msgid "Select group profile" -msgstr "グループプロファイルã®é¸æŠž" - -#: ../lib/modules/posixAccount.inc:946 -msgid "Selected groups" -msgstr "é¸æŠžã•ã‚ŒãŸã‚°ãƒ«ãƒ¼ãƒ—" - -#: ../templates/config/confmodules.php:169 -msgid "Selected modules" -msgstr "é¸æŠžã•ã‚ŒãŸãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«" - -#: ../lib/modules/posixGroup.inc:228 -msgid "Selected users" -msgstr "é¸æŠžã•ã‚ŒãŸãƒ¦ãƒ¼ã‚¶" - -#: ../templates/config/confsave.php:92 -msgid "Server Address is empty!" -msgstr "サーãƒã‚¢ãƒ‰ãƒ¬ã‚¹ãŒæœªå…¥åŠ›ã§ã™!" - -#: ../templates/config/confmain.php:161 ../lib/config.inc:356 -#: ../help/help.inc:48 -msgid "Server address" -msgstr "サーãƒã‚¢ãƒ‰ãƒ¬ã‚¹" - -#: ../templates/config/confmain.php:417 ../lib/config.inc:369 -msgid "Server of external script" -msgstr "外部スクリプトã®ã‚µãƒ¼ãƒ" - -#: ../templates/config/confmain.php:158 -msgid "Server settings" -msgstr "サーãƒè¨­å®š" - -#: ../lib/modules/posixGroup.inc:173 ../lib/modules/posixAccount.inc:887 -#: ../lib/modules/posixAccount.inc:1021 -msgid "Set no password" -msgstr "パスワードãªã—" - -#: ../templates/config/profmanage.php:288 ../help/help.inc:120 -msgid "Set profile password" -msgstr "プロファイルパスワード設定" - -#: ../lib/modules/posixGroup.inc:405 -msgid "Sets the group password." -msgstr "グループパスワードを設定" - -#: ../lib/modules/shadowAccount.inc:62 -msgid "Shadow" -msgstr "" - -#: ../templates/massBuildAccounts.php:196 -msgid "Show LDIF file" -msgstr "LDIFファイルを表示" - -#: ../templates/tree/edit.php:106 -msgid "Show internal attributes" -msgstr "内部属性を表示ã™ã‚‹" - -#: ../templates/schema/schema.php:200 -msgid "Single valued" -msgstr "å˜ä¸€ã®å€¤" - -#: ../templates/pdfedit/pdfpage.php:455 -msgid "Size" -msgstr "サイズ" - -#: ../lib/modules/quota.inc:422 -msgid "Soft block" -msgstr "ソフトブロック" - -#: ../lib/modules/quota.inc:72 ../lib/modules/quota.inc:293 -#: ../lib/modules/quota.inc:350 -msgid "Soft block limit" -msgstr "ソフトブロック制é™" - -#: ../lib/modules/quota.inc:73 -msgid "Soft block limit." -msgstr "ソフトブロック制é™" - -#: ../lib/modules/quota.inc:422 -msgid "Soft inode" -msgstr "ソフトinode" - -#: ../lib/modules/quota.inc:89 -msgid "Soft inode (files) limit." -msgstr "ソフトinode(ファイル)制é™ã€‚" - -#: ../lib/modules/quota.inc:88 ../lib/modules/quota.inc:297 -#: ../lib/modules/quota.inc:352 -msgid "Soft inode limit" -msgstr "ソフトinode制é™" - -#: ../templates/tree/edit.php:133 -#, php-format -msgid "Some attributes (%s) were modified and are highlighted below." -msgstr "ã„ãã¤ã‹ã®å±žæ€§(%s)ã¯å¤‰æ›´ã•ã‚Œã€ãƒã‚¤ãƒ©ã‚¤ãƒˆè¡¨ç¤ºã•ã‚Œã¦ã„ã¾ã™ã€‚" - -#: ../lib/modules.inc:886 -msgid "Some required information is missing" -msgstr "必須項目ãŒæº€ãŸã•ã‚Œã¦ã„ã¾ã›ã‚“。" - -#: ../templates/help.php:144 -#, php-format -msgid "" -"Sorry this help id ({bold}%s{endbold}) is not available for this module " -"({bold}%s{endbold})." -msgstr "" -"ã“ã®ãƒ˜ãƒ«ãƒ—ID({bold}%s{endbold})ã¯ã€ã“ã®ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«({bold}%s{endbold})ã§ã¯ç„¡åŠ¹" -"ã§ã™ã€‚" - -#: ../templates/help.php:157 -#, php-format -msgid "Sorry this help number ({bold}%d{endbold}) is not available." -msgstr "ã“ã®ãƒ˜ãƒ«ãƒ—番å·({bold}%d{endbold})ã¯ç„¡åŠ¹ã§ã™ã€‚" - -#: ../lib/modules/sambaAccount.inc:62 ../lib/modules/sambaAccount.inc:63 -#: ../lib/modules/sambaAccount.inc:293 ../lib/modules/sambaAccount.inc:375 -#: ../lib/modules/sambaAccount.inc:771 ../lib/modules/sambaSamAccount.inc:58 -#: ../lib/modules/sambaSamAccount.inc:59 -#: ../lib/modules/sambaSamAccount.inc:759 -msgid "Special user" -msgstr "特殊ユーザ" - -#: ../templates/pdfedit/pdfpage.php:645 ../templates/pdfedit/pdfpage.php:651 -#: ../templates/pdfedit/pdfpage.php:777 -msgid "Static text" -msgstr "é™çš„テキスト" - -#: ../templates/tree/templates/creation/custom.php:54 -msgid "Step 1 of 2: Name and object class(es)" -msgstr "Step 1 of 2: åå‰ã¨ã‚ªãƒ–ジェクトクラス" - -#: ../templates/tree/templates/creation/custom.php:177 -msgid "Step 2 of 2: Specify attributes and values" -msgstr "Step 2 of 2: 属性ã¨å€¤ã®è¨˜å…¥" - -#: ../lib/modules/inetOrgPerson.inc:132 -msgid "Steve" -msgstr "スティーブ" - -#: ../lib/modules/sambaAccount.inc:200 ../lib/modules/sambaSamAccount.inc:216 -#: ../lib/modules/inetOrgPerson.inc:125 -msgid "Steve Miller" -msgstr "スティーブ ミラー" - -#: ../lib/modules/posixAccount.inc:228 -msgid "Steve Miller,Room 2.14,123-123-1234,123-123-1234" -msgstr "スティーブ ミラー, 2-14å·å®¤, 123-123-1234,123-123-1234" - -#: ../lib/modules/inetOrgPerson.inc:64 ../lib/modules/inetOrgPerson.inc:161 -#: ../lib/modules/inetOrgPerson.inc:243 ../lib/modules/inetOrgPerson.inc:244 -#: ../lib/modules/inetOrgPerson.inc:420 ../lib/modules/inetOrgPerson.inc:466 -msgid "Street" -msgstr "町å" - -#: ../templates/pdfedit/pdfpage.php:805 -msgid "Structure name" -msgstr "構æˆå" - -#: ../templates/ou_edit.php:94 ../templates/ou_edit.php:159 -#: ../templates/ou_edit.php:224 ../templates/ou_edit.php:289 -#: ../templates/ou_edit.php:480 ../templates/domain.php:221 -#: ../templates/config/profmanage.php:403 -#: ../templates/config/confmodules.php:98 -#: ../templates/config/confmodules.php:101 -#: ../templates/config/confmain.php:481 ../templates/pdfedit/pdfdelete.php:81 -#: ../templates/pdfedit/pdfpage.php:797 ../templates/pdfedit/pdfmain.php:143 -#: ../templates/profedit/profiledelete.php:84 -#: ../templates/profedit/profilemain.php:156 ../lib/modules/posixGroup.inc:267 -#: ../lib/modules/posixAccount.inc:987 -msgid "Submit" -msgstr "æ›´æ–°(Submit)" - -#: ../templates/pdfedit/pdfpage.php:445 ../templates/pdfedit/pdfpage.php:490 -msgid "Submit page settings" -msgstr "ページ設定を更新" - -#: ../templates/schema/schema.php:182 -msgid "Substring Rule" -msgstr "" - -#: ../templates/tree/rdelete.php:135 ../templates/tree/rdelete.php:147 -msgid "Success" -msgstr "æˆåŠŸ" - -#: ../templates/domain.php:189 ../lib/lists.inc:349 ../lib/modules.inc:963 -#: ../help/help.inc:226 ../help/help.inc:228 ../help/help.inc:230 -#: ../help/help.inc:249 -msgid "Suffix" -msgstr "サフィックス" - -#: ../templates/tree/add_value_form.php:189 ../templates/schema/schema.php:187 -msgid "Syntax" -msgstr "" - -#: ../templates/schema/schema.php:95 -msgid "Syntax OID" -msgstr "" - -#: ../templates/schema/schema.php:79 ../templates/schema/schema.php:80 -msgid "Syntaxes" -msgstr "" - -#: ../lib/modules/inetOrgPerson.inc:56 ../lib/modules/inetOrgPerson.inc:179 -#: ../lib/modules/inetOrgPerson.inc:255 ../lib/modules/inetOrgPerson.inc:256 -#: ../lib/modules/inetOrgPerson.inc:432 ../lib/modules/inetOrgPerson.inc:469 -msgid "Telephone number" -msgstr "電話番å·" - -#: ../lib/modules/inetOrgPerson.inc:157 -msgid "Temp" -msgstr "臨時雇用" - -#: ../lib/modules/inetOrgPerson.inc:145 -msgid "Temp, contract until december" -msgstr "臨時雇用ã€12月ã¾ã§ã®å¥‘ç´„" - -#: ../templates/tree/create_form.php:82 -msgid "Template" -msgstr "テンプレート" - -#: ../help/help.inc:110 -msgid "Text for user PDF" -msgstr "ユーザPDFã®ãŸã‚ã®ãƒ†ã‚­ã‚¹ãƒˆ" - -#: ../lib/modules/posixAccount.inc:316 ../help/help.inc:157 -msgid "The Primary Group the user should be member of." -msgstr "ユーザãŒãƒ¡ãƒ³ãƒã§ãªã‘ã‚Œã°ãªã‚‰ãªã„プライマリグループ。" - -#: ../lib/modules/posixAccount.inc:351 ../help/help.inc:169 -msgid "The Primary group the host should be member of." -msgstr "ホストãŒãƒ¡ãƒ³ãƒã§ãªã‘ã‚Œã°ãªã‚‰ãªã„プライマリグループ。" - -#: ../help/help.inc:252 -msgid "The SID of your Samba server. Get it with \"net getlocalsid\"." -msgstr "Sambaサーãƒã®SID。 \"net getlocalsid\" ã§å–å¾—ã—ã¦ãã ã•ã„。" - -#: ../lib/modules/posixAccount.inc:63 -msgid "" -"The UID ranges for users and hosts overlap! This is a problem because LAM " -"uses the highest UID in use + 1 for new accounts. Please set the minimum UID " -"to equal values or use independent ranges." -msgstr "" -"ユーザã¨ãƒ›ã‚¹ãƒˆã®UID範囲ãŒé‡è¤‡ã—ã¦ã„ã¾ã™! LAMã¯ä½¿ç”¨æ¸ˆã¿UIDã®æœ€å¤§å€¤ +1 を割り当" -"ã¦ã‚‹ãŸã‚ã€ã“ã‚Œã¯å•é¡Œã§ã™ã€‚UIDã®æœ€å°å€¤ã‚’é©åˆ‡ã«å¤‰æ›´ã™ã‚‹ã‹ã€ç‹¬ç«‹ã—ãŸç¯„囲を指定ã—" -"ã¦ãã ã•ã„。" - -#: ../templates/tree/templates/creation/custom.php:99 -#, php-format -msgid "The container you specified (%s) does not exist. Please try again." -msgstr "指定ã•ã‚ŒãŸã‚³ãƒ³ãƒ†ãƒŠ(%s)ãŒå­˜åœ¨ã—ã¾ã›ã‚“。å†è©¦è¡Œã—ã¦ãã ã•ã„。" - -#: ../help/help.inc:250 -msgid "The domain entry will be saved under this suffix." -msgstr "ã“ã®ã‚µãƒ•ã‚£ãƒƒã‚¯ã‚¹ä¸‹ã§ãƒ‰ãƒ¡ã‚¤ãƒ³ã‚¨ãƒ³ãƒˆãƒªãŒä¿å­˜ã•ã‚Œã¾ã—ãŸã€‚" - -#: ../lib/modules/shadowAccount.inc:49 -msgid "The expiration date is invalid." -msgstr "有効期é™ãŒæ­£ã—ãã‚ã‚Šã¾ã›ã‚“。" - -#: ../templates/config/confsave.php:252 -msgid "The following settings were saved to profile:" -msgstr "以下ã®è¨­å®šã¯ãƒ—ロファイルã«ä¿å­˜ã•ã‚Œã¾ã™:" - -#: ../templates/initsuff.php:178 -msgid "" -"The following suffix(es) are missing in LDAP. LAM can create them for you." -msgstr "以下ã®ã‚µãƒ•ã‚£ãƒƒã‚¯ã‚¹ã¯LDAPã«ã‚ã‚Šã¾ã›ã‚“。LAM ã¯ã“れらを作æˆã§ãã¾ã™ã€‚" - -#: ../lib/modules/sambaSamAccount.inc:71 -msgid "The format of the logon hours field is invalid!" -msgstr "ログオン時間フィールドã®å½¢å¼ãŒæ­£ã—ãã‚ã‚Šã¾ã›ã‚“!" - -#: ../templates/pdfedit/pdfpage.php:73 -msgid "The headline for a new section must contain at least one character." -msgstr "æ–°ã—ã„セクションã®è¦‹å‡ºã—ã¯ã€å°‘ãªãã¨ã‚‚一文字以上ã§ãªãã¦ã¯ãªã‚Šã¾ã›ã‚“。" - -#: ../templates/pdfedit/pdfpage.php:61 -msgid "" -"The name for that PDF-structure you submitted is not valid. A valid name " -"must constist at least of one of the following characters 'a-z','A-Z','0-" -"9','_','-','.'." -msgstr "" -"指定ã•ã‚ŒãŸPDF構æˆã®åå‰ãŒæ­£ã—ãã‚ã‚Šã¾ã›ã‚“。正ã—ã„åå‰ã¯ä¸€æ–‡å­—以上ã®é•·ã•ã§ã€ä½¿" -"用å¯èƒ½ãªæ–‡å­—㯠'a-z', 'A-Z', '0-9' '_', '-', '.' ã§ã™ã€‚" - -#: ../help/help.inc:248 -msgid "The name of your Windows domain or workgroup." -msgstr "Windowsã®ãƒ‰ãƒ¡ã‚¤ãƒ³åˆã¯ãƒ¯ãƒ¼ã‚¯ã‚°ãƒ«ãƒ¼ãƒ—å。" - -#: ../help/help.inc:140 -msgid "The new account will be saved under this LDAP suffix." -msgstr "æ–°ã—ã„アカウントã¯LDAPサフィックスã®ä¸‹ã«ä½œæˆã•ã‚Œã¾ã™ã€‚" - -#: ../templates/config/confmain.php:110 -msgid "The password is invalid! Please try again." -msgstr "パスワードãŒæ­£ã—ãã‚ã‚Šã¾ã›ã‚“! ã‚„ã‚Šç›´ã—ã¦ãã ã•ã„。" - -#: ../templates/pdfedit/pdfpage.php:77 -msgid "The static text must contain at least one character." -msgstr "é™çš„テキストã¯å°‘ãªãã¨ã‚‚一文字以上ã§ãªã‘ã‚Œã°ãªãªã‚Šã¾ã›ã‚“。" - -#: ../templates/tree/add_oclass_form.php:118 -msgid "There are new required attributes which need to be set." -msgstr "設定ã™ã¹ãæ–°ã—ã„必須属性ãŒã‚ã‚Šã¾ã™ã€‚" - -#: ../lib/modules/posixGroup.inc:129 -msgid "There are still users who have this group as their primary group." -msgstr "ã“ã®ã‚°ãƒ«ãƒ¼ãƒ—をプライマリグループã¨ã™ã‚‹ãƒ¦ãƒ¼ã‚¶ãŒã¾ã å­˜åœ¨ã—ã¾ã™ã€‚" - -#: ../lib/modules/sambaAccount.inc:62 ../lib/modules/sambaSamAccount.inc:58 -msgid "There can be only one administrator per domain." -msgstr "管ç†è€…ã¯ã€ãƒ‰ãƒ¡ã‚¤ãƒ³æ¯Žã«ä¸€ã¤ã ã‘存在å¯èƒ½ã§ã™ã€‚" - -#: ../lib/modules/sambaGroupMapping.inc:351 -msgid "There can be only one group of this type." -msgstr "ã“ã®ã‚¿ã‚¤ãƒ—ã®ã‚°ãƒ«ãƒ¼ãƒ—を一ã¤ã ã‘指定ã§ãã¾ã™ã€‚" - -#: ../lib/modules/sambaAccount.inc:63 ../lib/modules/sambaSamAccount.inc:59 -msgid "There can be only one guest per domain." -msgstr "ドメイン毎ã«ã‚²ã‚¹ãƒˆã‚¢ã‚«ã‚¦ãƒ³ãƒˆã‚’一個ã ã‘指定ã§ãã¾ã™ã€‚" - -#: ../templates/massDoUpload.php:119 -msgid "There were errors while uploading:" -msgstr "アップロードã®éš›ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚" - -#: ../lib/modules/posixGroup.inc:414 -msgid "" -"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." -msgstr "" -"æ–°ã—ã„グループアカウントを作æˆã™ã‚‹éš›ã«ä½¿ã‚れるグループIDã®æœ€å°å€¤ã¨æœ€å¤§å€¤ã€‚æ–°" -"ã—ã„グループアカウントã«ã¯ã€ä½¿ç”¨ä¸­ã®ç•ªå·ã®æœ€å¤§å€¤+1ãŒå¸¸ã«å‰²ã‚Šå½“ã¦ã‚‰ã‚Œã¾ã™ã€‚" - -#: ../lib/modules/posixAccount.inc:295 -msgid "" -"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." -msgstr "" -"æ–°ã—ã„Sambaホストアカウントを作æˆã™ã‚‹éš›ã«ä½¿ã‚れるマシンIDã®æœ€å°å€¤ã¨æœ€å¤§å€¤ã€‚範" -"囲ã¯ãƒ¦ãƒ¼ã‚¶ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã®ã‚‚ã®ã¨ç•°ãªã‚‹ã‚ˆã†ã«ã—ãªãã¦ã¯ãªã‚Šã¾ã›ã‚“。新ã—ã„ホストア" -"カウントã«ã¯ã€ä½¿ç”¨ä¸­ã®ç•ªå·ã®æœ€å¤§å€¤+1ãŒå¸¸ã«å‰²ã‚Šå½“ã¦ã‚‰ã‚Œã¾ã™ã€‚" - -#: ../lib/modules/posixAccount.inc:291 -msgid "" -"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." -msgstr "" -"æ–°ã—ã„ユーザアカウントを作æˆã™ã‚‹éš›ã«ä½¿ã‚れるユーザIDã®æœ€å°å€¤ã¨æœ€å¤§å€¤ã€‚範囲ã¯" -"マシンアカウントã®ã‚‚ã®ã¨ã¯ç•°ãªã‚‹ã‚ˆã†ã«ã—ãªãã¦ã¯ãªã‚Šã¾ã›ã‚“。新ã—ã„ユーザアカ" -"ウントã«ã¯ã€ä½¿ç”¨ä¸­ã®ç•ªå·ã®æœ€å¤§å€¤+1ãŒå¸¸ã«å‰²ã‚Šã‚ã¦ã‚‰ã‚Œã¾ã™ã€‚" - -#: ../lib/modules/posixAccount.inc:85 -msgid "" -"This GID number is invalid! Please provide either a number or a group name." -msgstr "" -"ã“ã®GID番å·ã¯æ­£ã—ãã‚ã‚Šã¾ã›ã‚“。別ãªç•ªå·ã‚’指定ã™ã‚‹ã‹ã€ã‚°ãƒ«ãƒ¼ãƒ—åを記入ã—ã¦ãã " -"ã•ã„。" - -#: ../templates/domain.php:282 -msgid "This Samba 3 domain is already present!" -msgstr "ã“ã®Samba 3 ドメインã¯ã™ã§ã«å­˜åœ¨ã—ã¦ã„ã¾ã™!" - -#: ../help/help.inc:121 -msgid "This changes the password of the selected profile." -msgstr "é¸æŠžã•ã‚ŒãŸãƒ—ロファイルã®ãƒ‘スワードを変更ã—ã¾ã™ã€‚" - -#: ../help/help.inc:123 -msgid "This changes the profile which is selected by default at login." -msgstr "ログイン時ã«ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã§é¸æŠžã•ã‚Œã‚‹ãƒ—ロファイルを変更ã—ã¾ã™ã€‚" - -#: ../templates/massBuildAccounts.php:148 -msgid "" -"This column is defined to include unique entries but duplicates were found:" -msgstr "" -"ユニークãªã‚¨ãƒ³ãƒˆãƒªã‚’å«ã‚€ã‚‚ã®ã¨ã—ã¦å®šç¾©ã•ã‚Œã¦ã„るカラムã§é‡è¤‡ãŒã¿ã¤ã‹ã‚Šã¾ã—ãŸ:" - -#: ../help/help.inc:95 -msgid "" -"This defines the language of the login window and sets this language as the " -"default language. Users can change the language at login." -msgstr "" -"ログインウィンドウã®è¨€èªžã‚’定義ã—ã€ã“ã®è¨€èªžã‚’既定値ã®è¨€èªžã¨ã—ã¦è¨­å®šã—ã¾ã™ã€‚" -"ユーザã¯ãƒ­ã‚°ã‚¤ãƒ³æ™‚ã«è¨€èªžã‚’変更ã§ãã¾ã™ã€‚" - -#: ../lib/pdf.inc:511 -msgid "This document was automatically created by LDAP Account Manager" -msgstr "ã“ã®æ–‡æ›¸ã¯LDAP Account Managerã«ã‚ˆã£ã¦è‡ªå‹•çš„ã«ç”Ÿæˆã•ã‚Œã¾ã—ãŸã€‚" - -#: ../templates/tree/edit.php:202 -msgid "This entry has no attributes" -msgstr "ã“ã®ã‚¨ãƒ³ãƒˆãƒªã¯å±žæ€§ã‚’æŒã£ã¦ã„ã¾ã›ã‚“。" - -#: ../templates/tree/delete_form.php:95 -#, php-format -msgid "This entry is the root of a sub-tree containing %s entries." -msgstr "ã“ã®ã‚¨ãƒ³ãƒˆãƒªã¯ %s エントリをå«ã‚€ã‚µãƒ–ツリーã®ãƒ«ãƒ¼ãƒˆã§ã™ã€‚" - -#: ../lib/modules/posixAccount.inc:86 -msgid "This gecos value is invalid!" -msgstr "gecosã®å€¤ãŒæ­£ã—ãã‚ã‚Šã¾ã›ã‚“!" - -#: ../lib/modules/ieee802device.inc:61 -msgid "This is a comma separated list of MAC addresses." -msgstr "カンマã§åŒºåˆ‡ã‚‰ã‚ŒãŸMACアドレスã®ãƒªã‚¹ãƒˆã€‚" - -#: ../lib/modules/nisMailAlias.inc:69 -msgid "This is a comma separated list of recipients." -msgstr "カンマã§åŒºåˆ‡ã‚‰ã‚ŒãŸå—信者ã®ãƒªã‚¹ãƒˆã€‚" - -#: ../lib/modules/inetLocalMailRecipient.inc:65 -msgid "This is a comma separated list of the users public email addresses." -msgstr "ユーザã®å…¬é–‹ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ã®ã‚«ãƒ³ãƒžã§åŒºåˆ‡ã‚‰ã‚ŒãŸãƒªã‚¹ãƒˆã€‚" - -#: ../help/help.inc:88 -msgid "" -"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." -msgstr "" -"LDAP Account Manager ã«ãƒ­ã‚°ã‚¤ãƒ³å¯èƒ½ãªã™ã¹ã¦ã®ãƒ¦ãƒ¼ã‚¶ã®æœ‰åŠ¹ãªDNエントリã®ä¸€è¦§ã§" -"ã™ã€‚ユーザåã¯ã‚»ãƒŸã‚³ãƒ­ãƒ³ã«ã‚ˆã£ã¦åŒºåˆ‡ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚" - -#: ../templates/masscreate.php:211 -msgid "" -"This is an example how it would look in your spreadsheet program before you " -"convert to CSV:" -msgstr "" -"CSVã«å¤‰æ›ã™ã‚‹å‰ã«ã€ã‚ãªãŸã®è¡¨è¨ˆç®—プログラムã§ã©ã®ã‚ˆã†ã«è¦‹ãˆã‚‹ã‹ã®ä¾‹ã§ã™ã€‚" - -#: ../lib/modules/sambaSamAccount.inc:61 -msgid "This is not a valid RID number!" -msgstr "無効ãªRID番å·ã§ã™!" - -#: ../lib/modules/sambaGroupMapping.inc:353 -msgid "This is not a valid Samba 3 group type!" -msgstr "ä¸æ­£ãªSamba 3グループタイプã§ã™!" - -#: ../lib/modules/inetLocalMailRecipient.inc:61 -msgid "This is one of the users public email addresses." -msgstr "ユーザã®å…¬é–‹ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ã®ä¸€ã¤ã€‚" - -#: ../lib/modules/nisMailAlias.inc:65 -msgid "This is one recipient for this alias." -msgstr "ã“ã®åˆ¥åã«å¯¾ã™ã‚‹1åã®å—信者。" - -#: ../lib/modules/ieee802device.inc:57 -msgid "" -"This is the MAC address of the network card of the device (e.g. 00:01:02:DE:" -"EF:18)." -msgstr "ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ã‚«ãƒ¼ãƒ‰ãƒ‡ãƒã‚¤ã‚¹ã®MACアドレスã§ã™(例 0:01:02:DE:EF:18)。" - -#: ../lib/modules/sambaAccount.inc:373 -msgid "This is the RID of the user's primary Windows group." -msgstr "ユーザã®ãƒ—ライマリWindowsグループã®RIDã§ã™ã€‚" - -#: ../lib/modules/sambaSamAccount.inc:185 -msgid "This is the SID of the user's primary Windows group." -msgstr "ユーザã®ãƒ—ライマリWindowsグループã®SIDã§ã™ã€‚" - -#: ../help/help.inc:97 -msgid "" -"This is the absolute path to an external script for setting quotas and " -"creating home directories." -msgstr "" -"ホームディレクトリを作æˆã—ã€quotaを設定ã™ã‚‹ãŸã‚ã®å¤–部スクリプトã®çµ¶å¯¾ãƒ‘スã§" -"ã™ã€‚" - -#: ../lib/modules/sambaAccount.inc:323 ../lib/modules/sambaSamAccount.inc:138 -msgid "This is the account's Windows password." -msgstr "アカウントã®Windowsパスワードã§ã™ã€‚" - -#: ../lib/modules/sambaAccount.inc:320 ../lib/modules/sambaSamAccount.inc:135 -msgid "This is the account's full name on Windows systems." -msgstr "アカウントã®Windowsシステム上ã®ãƒ•ãƒ«ãƒãƒ¼ãƒ ã§ã™ã€‚" - -#: ../lib/modules/sambaGroupMapping.inc:270 -msgid "This is the group name which will be shown in Windows." -msgstr "Windows上ã§è¡¨ç¤ºã•ã‚Œã‚‹ã‚°ãƒ«ãƒ¼ãƒ—åã§ã™ã€‚" - -#: ../help/help.inc:136 -msgid "" -"This is the identifier for the relative DN value. It must be one of the " -"given allowed LDAP attributes (e.g. user accounts usually use \"uid\" while " -"groups use \"cn\")." -msgstr "" -"相対DN(RDN)ã«å¯¾ã™ã‚‹è­˜åˆ¥å­ã§ã™ã€‚有効ãªLDAP属性ã¨ã—ã¦ä¸Žãˆã‚‰ã‚ŒãŸã‚‚ã®ã®ä¸€ã¤ã§ãªã" -"ã¦ã¯ãªã‚Šã¾ã›ã‚“(例ãˆã°ã€ãƒ¦ãƒ¼ã‚¶ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã§ã¯é€šå¸¸\"uid\"を使用ã—ã€ã‚°ãƒ«ãƒ¼ãƒ—ã§ã¯" -"\"cn\"を使用ã—ã¾ã™)。" - -#: ../help/help.inc:73 -msgid "" -"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." -msgstr "" -"ã“ã‚Œã¯ã€ãƒ¦ãƒ¼ã‚¶/グループ/ホスト一覧ã«è¡¨ç¤ºã™ã‚‹å±žæ€§ã®ãƒªã‚¹ãƒˆã§ã™ã€‚エントリã¯æ—¢å®š" -"ã®å®šç¾©å€¤ã€\"#属性\" ã€ã¾ãŸã¯ç‰¹å®šã®å€¤ã€\"属性:説明\" ã®ã„ãšã‚Œã‹ã«ã§ãã¾ã™ã€‚ã„" -"ãã¤ã‹ã®ã‚¨ãƒ³ãƒˆãƒªã¯ã€ã‚»ãƒŸã‚³ãƒ­ãƒ³ã«ã‚ˆã£ã¦åŒºåˆ‡ã‚‰ã‚Œã¾ã™ã€‚" - -#: ../lib/modules/inetLocalMailRecipient.inc:69 -msgid "This is the mail server for the user." -msgstr "ユーザã«å¯¾ã™ã‚‹ãƒ¡ãƒ¼ãƒ«ã‚µãƒ¼ãƒã€‚" - -#: ../help/help.inc:93 -msgid "" -"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." -msgstr "" -"ユーザ/グループ/ホスト一覧ã«è¡¨ç¤ºã™ã‚‹è¡Œæ•°ã§ã™ã€‚ã‚‚ã—もより多ãã®ã‚¨ãƒ³ãƒˆãƒªãŒã‚ã‚‹" -"ãªã‚‰ã°ã€ãƒªã‚¹ãƒˆã¯è¤‡æ•°ã®ãƒšãƒ¼ã‚¸ã«åˆ†å‰²ã•ã‚Œã¾ã™ã€‚" - -#: ../lib/modules/sambaGroupMapping.inc:278 -msgid "" -"This is the relative ID (similar to UID on Unix) for Windows accounts. If " -"you leave this empty LAM will calculate the RID from the UID. This can be " -"either a number or the name of a special group:" -msgstr "" -"Windowsアカウントã«å¯¾ã™ã‚‹ç›¸å¯¾ID(unixã«ãŠã‘ã‚‹UIDã®ã‚ˆã†ãªã‚‚ã®)ã§ã™ã€‚未入力ã®å ´" -"åˆã€LAMã¯UIDã‹ã‚‰RIDを算出ã—ã¾ã™ã€‚数値ã¾ãŸã¯ç‰¹æ®Šã‚°ãƒ«ãƒ¼ãƒ—åã®ã©ã¡ã‚‰ã‹ã‚’指定ã§ã" -"ã¾ã™ã€‚" - -#: ../lib/modules/sambaSamAccount.inc:188 -msgid "" -"This is the relative ID number for your Windows account. You can either " -"enter a number or one of these special accounts: " -msgstr "" -"ã‚ãªãŸã®Windowsアカウントã«å¯¾ã™ã‚‹ç›¸å¯¾ID番å·ã§ã™ã€‚æ•°å­—ã¾ãŸã¯ã“れらã®ç‰¹æ®Šã‚¢ã‚«ã‚¦" -"ントã®ã©ã‚Œã‹ä¸€ã¤ã‚’指定ã§ãã¾ã™: " - -#: ../lib/modules/sambaSamAccount.inc:192 -msgid "" -"This is the relative ID number for your host account. If you leave this " -"empty LAM will use: uidNumber*2 + sambaAlgorithmicRidBase." -msgstr "" -"ã‚ãªãŸã®ãƒ›ã‚¹ãƒˆã‚¢ã‚«ã‚¦ãƒ³ãƒˆã«å¯¾ã™ã‚‹ç›¸å¯¾ID番å·ã§ã™ã€‚未入力ã®å ´åˆã€LAM㯠" -"uidNumber*2 + sambaAlgorithmicRidBase を使用ã—ã¾ã™ã€‚" - -#: ../help/help.inc:49 -msgid "" -"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." -msgstr "" -"ã“ã‚Œã¯LDAPサーãƒã®ã‚¢ãƒ‰ãƒ¬ã‚¹ã§ã™ã€‚ldap:// を標準的ãªLDAP接続ã«ã€ldaps:// ã‚’æš—å·" -"化ã•ã‚ŒãŸ(サーãƒèªè¨¼ãŒå¿…è¦)接続ã«ä½¿ç”¨ã—ã¦ãã ã•ã„。ãƒãƒ¼ãƒˆç•ªå·ã¯çœç•¥ã§ãã¾ã™ã€‚" - -#: ../help/help.inc:102 -msgid "" -"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." -msgstr "" -"ã“ã‚Œã¯ldapdaemonスクリプトãŒæ ¼ç´ã•ã‚Œã‚‹ã‚µãƒ¼ãƒã§ã™ã€‚LDAP Account Managerã¯ã€ãƒ­" -"グイン時ã«æä¾›ã•ã‚Œã‚‹ãƒ¦ãƒ¼ã‚¶åã¨ãƒ‘スワードã§ã‚µãƒ¼ãƒã«SSH接続を行ãªã„ã¾ã™ã€‚" - -#: ../help/help.inc:67 -msgid "This is the suffix for the LDAP tree viewer." -msgstr "LDAPツリービューアã«å¯¾ã™ã‚‹ã‚µãƒ•ã‚£ãƒƒã‚¯ã‚¹ã€‚" - -#: ../help/help.inc:61 -msgid "" -"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." -msgstr "" -"ã“ã‚Œã¯ã€ãƒ¦ãƒ¼ã‚¶/グループ/ホストエントリを検索ã™ã‚‹éš›ã®å§‹ç‚¹ã¨ãªã‚‹LDAPツリーã®ã‚µ" -"フィックスã§ã™ã€‚ã“ã®ã‚µãƒ–ツリー中ã®ã‚¨ãƒ³ãƒˆãƒªã®ã¿ãŒã€ãƒ¦ãƒ¼ã‚¶/グループ/ホスト一覧" -"ã«è¡¨ç¤ºã•ã‚Œã¾ã™ã€‚æ–°ã—ã„アカウントを作æˆã™ã‚‹ã¨ãã¯ã€ã“ã®DNãŒä¿å­˜å…ˆã¨ãªã‚Šã¾ã™ã€‚" - -#: ../lib/modules/inetLocalMailRecipient.inc:57 -msgid "This is the target email address for the user's mails." -msgstr "ユーザã®ãƒ¡ãƒ¼ãƒ«ã®æœ€çµ‚çš„ãªãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹" - -#: ../help/help.inc:109 -msgid "" -"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." -msgstr "" -"ã“ã‚Œã¯ã€LAMãŒLDAP検索çµæžœã‚’キャッシュã—ã¦ãŠã時間を分ã§è¡¨ã—ãŸã‚‚ã®ã§ã™ã€‚時間を" -"短ã‹ãã™ã‚‹ã¨ã€LDAPã«è² è·ã‚’ã‹ã‘る代ã‚ã‚Šã«ã€å¤‰æ›´ãŒèªè­˜ã§ããªããªã‚‹å¯èƒ½æ€§ã‚’減ら" -"ã—ã¾ã™ã€‚" - -#: ../lib/modules/posixAccount.inc:87 -msgid "This login shell is invalid!" -msgstr "ログインシェルãŒæ­£ã—ãã‚ã‚Šã¾ã›ã‚“!" - -#: ../templates/schema/schema.php:356 -msgid "This object class is obsolete." -msgstr "ã“ã®ã‚ªãƒ–ジェクトクラスã¯æ—§å¼ã§ã™ã€‚" - -#: ../lib/modules/sambaSamAccount.inc:198 -msgid "" -"This option defines the allowed logon hours for this account. The format is " -"the same as for the LDAP attribute. The 24*7 hours are represented as 168 " -"bit which are saved as 21 hex (21*8 = 168) values. The first bit represents " -"Sunday 0:00 - 0:59 in GMT." -msgstr "" -"ã“ã®ã‚ªãƒ—ションã¯ãƒ­ã‚°ã‚ªãƒ³è¨±å¯æ™‚間を定義ã—ã¾ã™ã€‚書å¼ã¯LDAP属性ã¨åŒã˜ã§ã™ã€‚24*7" -"時間ãŒ168ビットã«å†™å½±ã•ã‚Œã€21æ¡ã®16進数(21*8=168)ã®å€¤ã¨ã—ã¦ä¿å­˜ã•ã‚Œã¾ã™ã€‚先頭" -"ã®1ビットã¯ã‚°ãƒªãƒ‹ãƒƒã‚¸æ¨™æº–時ã§æ—¥æ›œã®0:00 - 0:59ã‚’æ„味ã—ã¾ã™ã€‚" - -#: ../help/help.inc:111 -msgid "This text will appear on top of every user PDF file." -msgstr "ã“ã®ãƒ†ã‚­ã‚¹ãƒˆã¯ã€å„ユーザã®PDFファイルã®å…ˆé ­ã«è¡¨ç¤ºã•ã‚Œã¾ã™ã€‚" - -#: ../templates/tools.php:84 -msgid "This tool allows you to customize the PDF pages." -msgstr "ã“ã®ãƒ„ールã§ã€ã‚ãªãŸã®PDFページをカスタマイズã™ã‚‹äº‹ãŒã§ãã¾ã™ã€‚" - -#: ../templates/lists/userlink.php:63 -msgid "This user was not found!" -msgstr "ユーザãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“!" - -#: ../lib/modules/sambaAccount.inc:65 ../lib/modules/sambaAccount.inc:66 -#: ../lib/modules/sambaAccount.inc:67 ../lib/modules/sambaAccount.inc:68 -#: ../lib/modules/sambaSamAccount.inc:63 ../lib/modules/sambaSamAccount.inc:64 -#: ../lib/modules/sambaSamAccount.inc:65 ../lib/modules/sambaSamAccount.inc:66 -msgid "This value can only be \\\"true\\\" or \\\"false\\\"!" -msgstr "ã“ã®å€¤ã¯ã€\"true\"ã¾ãŸã¯\"false\"ã®ã„ãšã‚Œã‹ã§ãªãã¦ã¯ãªã‚Šã¾ã›ã‚“。" - -#: ../lib/modules/posixAccount.inc:88 -msgid "This value can only be \\\"true\\\" or \\\"false\\\"." -msgstr "ã“ã®å€¤ã¯ã€\"true\"ã¾ãŸã¯\"false\"ã®ã„ãšã‚Œã‹ã§ãªãã¦ã¯ãªã‚Šã¾ã›ã‚“。" - -#: ../lib/modules/posixGroup.inc:475 -msgid "This value must be a list of user names separated by semicolons." -msgstr "ã“ã®å€¤ã¯ã‚»ãƒŸã‚³ãƒ­ãƒ³ã§åŒºåˆ‡ã‚‰ã‚ŒãŸãƒ¦ãƒ¼ã‚¶åã§ãªãã¦ã¯ãªã‚Šã¾ã›ã‚“。" - -#: ../help/help.inc:244 -msgid "This will create a new organizational unit under the selected one." -msgstr "é¸æŠžã•ã‚ŒãŸä½ç½®ã®ä¸‹ã«æ–°ã—ã„ organizational unit を作æˆã—ã¾ã™ã€‚" - -#: ../help/help.inc:246 -msgid "" -"This will delete the selected organizational unit. The OU has to be empty." -msgstr "" -"é¸æŠžã•ã‚ŒãŸ organizational unitを削除ã—ã¾ã™ã€‚OUã¯ç©ºã§ãªãã¦ã¯ãªã‚Šã¾ã›ã‚“。" - -#: ../help/help.inc:119 -msgid "This will delete the selected profile." -msgstr "é¸æŠžã•ã‚ŒãŸãƒ—ロファイルを削除ã—ã¾ã™ã€‚" - -#: ../help/help.inc:221 -msgid "" -"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 -_." -msgstr "" -"ç¾åœ¨ã®ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã®ãƒ—ロファイルを作æˆã—ã¾ã™ã€‚ä¿å­˜ã•ã‚ŒãŸå€¤ã¯ã€ãƒ—ロファイルエ" -"ディタã®ã‚‚ã®ã¨åŒæ§˜ã«ãªã‚Šã¾ã™ã€‚プロファイルå㯠a-z, 0-9 㨠-_ ã‚’å«ã‚€ã“ã¨ãŒã§" -"ãã¾ã™ã€‚" - -#: ../lib/modules/posixAccount.inc:333 ../help/help.inc:155 -msgid "" -"To disable login use /bin/false. List of shells is read from lam/config/" -"shells" -msgstr "" -"ログインをç¦æ­¢ã™ã‚‹ãŸã‚ã«ã¯/bin/falseを使ã£ã¦ãã ã•ã„。シェルã®ä¸€è¦§ã¯ lam/" -"config/shells ã‹ã‚‰èª­ã¿è¾¼ã¾ã‚Œã¾ã™ã€‚" - -#: ../templates/main_header.php:59 -msgid "Tools" -msgstr "ツール" - -#: ../templates/pdfedit/pdfpage.php:513 -msgid "Top" -msgstr "先頭" - -#: ../templates/lists/listusers.php:269 -msgid "Translate GID number to group name" -msgstr "GID番å·ã‚’グループåã«å¤‰æ›" - -#: ../help/help.inc:66 -msgid "Tree suffix" -msgstr "ツリーサフィックス" - -#: ../templates/main_header.php:78 -msgid "Tree view" -msgstr "ツリービュー" - -#: ../templates/config/confmain.php:217 ../lib/config.inc:362 -msgid "TreeSuffix" -msgstr "ツリーサフィックス" - -#: ../templates/config/confsave.php:127 -msgid "TreeSuffix is invalid!" -msgstr "ツリーサフィックスãŒæ­£ã—ãã‚ã‚Šã¾ã›ã‚“!" - -#: ../templates/schema/schema.php:354 -msgid "Type" -msgstr "" - -#: ../lib/modules/posixAccount.inc:75 -msgid "UID" -msgstr "UID" - -#: ../lib/modules/posixAccount.inc:75 -msgid "UID has changed. Do you want to change home directory?" -msgstr "UIDãŒå¤‰æ›´ã•ã‚Œã¾ã—ãŸã€‚ホームディレクトリを変更ã—ã¾ã™ã‹?" - -#: ../lib/modules/posixAccount.inc:70 -msgid "" -"UID must be a number. It has to be inside the UID range which is defined in " -"your configuration profile." -msgstr "UIDã¯æ•°å€¤ã§ã€è¨­å®šãƒ•ã‚¡ã‚¤ãƒ«ã§å®šç¾©ã•ã‚ŒãŸUIDã®ç¯„囲内ã§ãªãã¦ã¯ãªã‚Šã¾ã›ã‚“。" - -#: ../lib/modules/posixAccount.inc:46 ../lib/modules/posixAccount.inc:178 -#: ../lib/modules/posixAccount.inc:245 ../lib/modules/posixAccount.inc:290 -#: ../lib/modules/posixAccount.inc:294 ../lib/modules/posixAccount.inc:302 -#: ../lib/modules/posixAccount.inc:840 ../lib/modules/posixAccount.inc:1081 -#: ../lib/lists.inc:303 ../lib/lists.inc:330 ../help/help.inc:146 -#: ../help/help.inc:166 -msgid "UID number" -msgstr "UID番å·" - -#: ../lib/modules/posixAccount.inc:46 -#, php-format -msgid "" -"UID number has changed. To keep file ownership you have to run the following " -"command as root: 'find / -uid %s -exec chown %s {} \\;'" -msgstr "" -"UID番å·ãŒå¤‰æ›´ã•ã‚Œã¾ã—ãŸã€‚存在ã™ã‚‹ãƒ•ã‚¡ã‚¤ãƒ«ã®æ‰€æœ‰è€…属性を維æŒã™ã‚‹ãŸã‚ã«ã€ä»¥ä¸‹ã®" -"コマンドをroot権é™ã§å®Ÿè¡Œã™å¿…è¦ãŒã‚ã‚Šã¾ã™: 'find / -uid %s -exec chown %s {} " -"\\;'" - -#: ../lib/modules/posixAccount.inc:63 ../lib/modules/posixAccount.inc:154 -msgid "UID ranges for Unix accounts" -msgstr "unixアカウントã«å¯¾ã™ã‚‹UIDã®ç¯„囲" - -#: ../lib/modules/sambaAccount.inc:358 ../lib/modules/sambaSamAccount.inc:173 -#: ../help/help.inc:217 -msgid "" -"UNC-path (\\\\server\\share) of homedirectory. $user and $group are replaced " -"with user- and groupname." -msgstr "" -"ホームディレクトリã®UNCパス (\\\\サーãƒ\\共有)。$user 㨠$group ã¯ãƒ¦ãƒ¼ã‚¶åã¨" -"グループåã«ç½®æ›ã•ã‚Œã¾ã™ã€‚" - -#: ../templates/pdfedit/pdfpage.php:581 -msgid "UP" -msgstr "" - -#: ../templates/ou_edit.php:55 ../templates/ou_edit.php:120 -#: ../templates/ou_edit.php:185 ../templates/ou_edit.php:250 -msgid "Unable to create new OU!" -msgstr "æ–°ã—ã„OUを作æˆã§ãã¾ã›ã‚“!" - -#: ../templates/config/profmanage.php:86 -msgid "Unable to create new profile!" -msgstr "æ–°ã—ã„プロファイルを作æˆã§ãã¾ã›ã‚“!" - -#: ../templates/ou_edit.php:72 ../templates/ou_edit.php:137 -#: ../templates/ou_edit.php:202 ../templates/ou_edit.php:267 -msgid "Unable to delete OU!" -msgstr "OUを削除ã§ãã¾ã›ã‚“!" - -#: ../templates/pdfedit/pdfdelete.php:56 -msgid "Unable to delete PDF structure!" -msgstr "PDF構æˆã‚’削除ã§ãã¾ã›ã‚“!" - -#: ../templates/domain.php:349 -msgid "Unable to delete domain!" -msgstr "ドメインを削除ã§ãã¾ã›ã‚“!" - -#: ../templates/config/profmanage.php:108 -#: ../templates/profedit/profiledelete.php:60 -msgid "Unable to delete profile!" -msgstr "プロファイルを削除ã§ãã¾ã›ã‚“!" - -#: ../lib/modules/posixAccount.inc:1398 -msgid "Unable to find group in LDAP." -msgstr "LDAP内ã«ã‚°ãƒ«ãƒ¼ãƒ—ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。" - -#: ../templates/config/confmain.php:398 -msgid "" -"Unable to load available languages. Setting English as default language. For " -"further instructions please contact the Admin of this site." -msgstr "" -"有効ãªè¨€èªžã‚’ロードã§ãã¾ã›ã‚“。英語を既定値ã®è¨€èªžã¨ã—ã¾ã™ã€‚より詳ã—ã„説明ã¯ã€" -"ã“ã®ã‚µã‚¤ãƒˆã®ç®¡ç†è€…ã«é€£çµ¡ã—ã¦ãã ã•ã„。" - -#: ../templates/login.php:100 -msgid "" -"Unable to load available languages. Setting English as default language. For " -"further instructions please contact the admin of this site." -msgstr "" -"有効ãªè¨€èªžã‚’ロードã§ãã¾ã›ã‚“。英語を既定値ã®è¨€èªžã¨ã—ã¾ã™ã€‚より詳ã—ã„説明ã¯ã€" -"ã“ã®ã‚µã‚¤ãƒˆã®ç®¡ç†è€…ã«é€£çµ¡ã—ã¦ãã ã•ã„。" - -#: ../lib/profiles.inc:91 ../lib/profiles.inc:95 -msgid "Unable to load profile!" -msgstr "プロファイルをロードã§ãã¾ã›ã‚“!" - -#: ../templates/schema/schema.php:99 ../templates/schema/schema.php:117 -#: ../templates/schema/schema.php:278 ../templates/schema/schema.php:312 -msgid "Unable to retrieve schema!" -msgstr "スキーマをå–å¾—ã§ãã¾ã›ã‚“!" - -#: ../templates/profedit/profilecreate.php:114 -msgid "Unable to save profile!" -msgstr "プロファイルをä¿å­˜ã§ãã¾ã›ã‚“!" - -#: ../lib/modules/posixGroup.inc:289 ../lib/modules/posixAccount.inc:112 -msgid "Unix" -msgstr "unix" - -#: ../lib/modules/inetOrgPerson.inc:51 ../lib/modules/inetOrgPerson.inc:399 -#: ../lib/modules/inetOrgPerson.inc:461 ../help/help.inc:234 -msgid "Unix workstations" -msgstr "unixワークステーション" - -#: ../lib/modules/inetOrgPerson.inc:51 -msgid "Unix workstations is invalid." -msgstr "unixワークステーションãŒæ­£ã—ãã‚ã‚Šã¾ã›ã‚“。" - -#: ../templates/config/confmodules.php:226 -msgid "Unsolved dependency:" -msgstr "ä¾å­˜é–¢ä¿‚ãŒè§£æ±ºã§ãã¾ã›ã‚“ã§ã—ãŸ:" - -#: ../templates/massBuildAccounts.php:193 -msgid "Upload accounts to LDAP" -msgstr "アカウントをLDAPã«ã‚¢ãƒƒãƒ—ロード" - -#: ../templates/masscreate.php:128 -msgid "Upload file and create accounts" -msgstr "ファイルをアップロードã—ã¦ã€ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã‚’作æˆã—ã¾ã™ã€‚" - -#: ../lib/modules.inc:471 -#, php-format -msgid "Upload was stopped after errors in %s module!" -msgstr "%s モジュールã§ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ãŸãŸã‚ã€ã‚¢ãƒ—ロードを中止ã—ã¾ã—ãŸã€‚" - -#: ../templates/schema/schema.php:215 -msgid "Usage" -msgstr "使用方法" - -#: ../lib/modules/sambaAccount.inc:98 ../lib/modules/sambaAccount.inc:210 -#: ../lib/modules/sambaAccount.inc:325 ../lib/modules/sambaAccount.inc:328 -#: ../lib/modules/sambaSamAccount.inc:140 -#: ../lib/modules/sambaSamAccount.inc:143 -#: ../lib/modules/sambaSamAccount.inc:226 -msgid "Use Unix password" -msgstr "unixパスワードを使用" - -#: ../templates/pdfedit/pdfpage.php:442 ../templates/pdfedit/pdfpage.php:487 -#: ../templates/pdfedit/pdfpage.php:501 ../templates/pdfedit/pdfpage.php:519 -#: ../templates/pdfedit/pdfpage.php:530 ../templates/pdfedit/pdfpage.php:541 -#: ../templates/pdfedit/pdfpage.php:552 -msgid "Use default" -msgstr "デフォルト値を使用" - -#: ../help/help.inc:99 ../help/help.inc:104 -msgid "" -"Use it at your own risk and read the documentation for lamdaemon before you " -"use it!" -msgstr "使ã†å‰ã«lamdaemonã®ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆã‚’読ã¿ã€ã‚ãªãŸã®è²¬ä»»ã§ä½¿ã†ã“ã¨" - -#: ../lib/modules/posixGroup.inc:408 ../lib/modules/sambaAccount.inc:104 -#: ../lib/modules/sambaAccount.inc:218 ../lib/modules/sambaAccount.inc:331 -#: ../lib/modules/sambaAccount.inc:334 ../lib/modules/sambaAccount.inc:698 -#: ../lib/modules/sambaSamAccount.inc:146 -#: ../lib/modules/sambaSamAccount.inc:149 -#: ../lib/modules/sambaSamAccount.inc:234 -#: ../lib/modules/sambaSamAccount.inc:684 -#: ../lib/modules/sambaSamAccount.inc:831 ../lib/modules/posixAccount.inc:327 -#: ../help/help.inc:196 -msgid "Use no password" -msgstr "パスワードãªã—" - -#: ../lib/modules/sambaAccount.inc:694 ../lib/modules/sambaSamAccount.inc:680 -#: ../lib/modules/sambaSamAccount.inc:825 ../help/help.inc:198 -msgid "Use unix password" -msgstr "unixパスワードを使ã†" - -#: ../lib/modules/quota.inc:68 ../lib/modules/quota.inc:292 -msgid "Used blocks" -msgstr "使用ã—ãŸãƒ–ロック" - -#: ../lib/modules/quota.inc:69 -msgid "Used blocks. 1000 blocks are usually 1MB" -msgstr "使用ã—ãŸãƒ–ロック。1000ブロックã¯é€šå¸¸1MB." - -#: ../templates/schema/schema.php:274 -msgid "Used by attributes" -msgstr "使用ã•ã‚Œã¦ã„る属性" - -#: ../templates/schema/schema.php:243 -msgid "Used by object classes" -msgstr "使用ã•ã‚Œã¦ã„るオブジェクトクラス" - -#: ../help/help.inc:260 -msgid "Used for calculating RIDs from UID/GID. Do not change if unsure." -msgstr "" -"RIDs ã‚’ UID/GID ã‹ã‚‰è¨ˆç®—ã™ã‚‹ãŸã‚ã«ä½¿ç”¨ã—ã¾ã™ã€‚自信ãŒãªã„ãªã‚‰å¤‰æ›´ã—ãªã„ã“ã¨ã€‚" - -#: ../lib/modules/quota.inc:84 ../lib/modules/quota.inc:296 -msgid "Used inodes" -msgstr "使用ã—ãŸinode" - -#: ../lib/modules/quota.inc:85 -msgid "Used inodes (files)" -msgstr "使用ã—ãŸinode(ファイル)" - -#: ../lib/modules/sambaGroupMapping.inc:51 -msgid "User" -msgstr "ユーザ" - -#: ../lib/lists.inc:302 -msgid "User ID" -msgstr "ユーザ ID" - -#: ../lib/modules/sambaAccount.inc:242 ../lib/modules/sambaAccount.inc:349 -#: ../lib/modules/sambaAccount.inc:710 ../lib/modules/sambaSamAccount.inc:164 -#: ../lib/modules/sambaSamAccount.inc:258 -#: ../lib/modules/sambaSamAccount.inc:696 ../help/help.inc:202 -msgid "User can change password" -msgstr "ユーザã¯ãƒ‘スワードを変更å¯èƒ½" - -#: ../lib/modules/posixAccount.inc:312 ../lib/modules/inetOrgPerson.inc:224 -#: ../help/help.inc:153 -msgid "User description. If left empty sur- and give name will be used." -msgstr "ユーザã®èª¬æ˜Žã€‚ã‚‚ã—も空ãªã‚‰ã°ã€å§“(surname)ã¨å(given)ãŒä½¿ã‚ã‚Œã¾ã™ã€‚" - -#: ../lib/pdf.inc:449 -msgid "User information page" -msgstr "ユーザ情報ページ" - -#: ../templates/config/confsave.php:132 -msgid "User list attributes are invalid!" -msgstr "ユーザ一覧属性ãŒæ­£ã—ãã‚ã‚Šã¾ã›ã‚“!" - -#: ../templates/schema/schema.php:210 -msgid "User modification" -msgstr "ユーザã«ã‚ˆã‚‹å¤‰æ›´" - -#: ../templates/config/confmodules.php:79 ../templates/config/confmain.php:256 -#: ../lib/config.inc:371 -msgid "User modules" -msgstr "ユーザモジュール" - -#: ../lib/modules/sambaAccount.inc:249 ../lib/modules/sambaAccount.inc:351 -#: ../lib/modules/sambaAccount.inc:718 ../lib/modules/sambaSamAccount.inc:166 -#: ../lib/modules/sambaSamAccount.inc:265 -#: ../lib/modules/sambaSamAccount.inc:704 ../help/help.inc:204 -msgid "User must change password" -msgstr "ユーザã¯ãƒ‘スワード変更ãŒå¿…è¦" - -#: ../templates/login.php:168 ../lib/modules/account.inc:66 -#: ../lib/modules/posixAccount.inc:170 -msgid "User name" -msgstr "ユーザå" - -#: ../templates/profedit/profilemain.php:45 -msgid "User profiles" -msgstr "ユーザ プロファイル" - -#: ../lib/modules/quota.inc:422 -msgid "User quota" -msgstr "ユーザ クオータ" - -#: ../help/help.inc:60 -msgid "User/Group/Host suffix" -msgstr "ユーザ/グループ/ホスト サフィックス" - -#: ../templates/config/confmain.php:177 ../lib/config.inc:358 -msgid "UserSuffix" -msgstr "ユーザ サフィックス" - -#: ../templates/config/confsave.php:107 -msgid "UserSuffix is invalid!" -msgstr "ユーザサフィックスãŒæ­£ã—ãã‚ã‚Šã¾ã›ã‚“!" - -#: ../lib/modules/sambaAccount.inc:834 ../lib/modules/sambaSamAccount.inc:952 -#: ../lib/modules/posixAccount.inc:76 ../lib/modules/posixAccount.inc:77 -#: ../lib/modules/posixAccount.inc:80 ../lib/modules/posixAccount.inc:307 -#: ../lib/modules/posixAccount.inc:836 ../lib/modules/posixAccount.inc:1080 -#: ../lib/lists.inc:305 ../help/help.inc:144 -msgid "Username" -msgstr "ユーザå" - -#: ../lib/modules/posixAccount.inc:77 ../lib/modules/posixAccount.inc:82 -msgid "" -"Username contains invalid characters. Valid characters are: a-z, A-Z, 0-9 " -"and .-_ !" -msgstr "" -"ユーザåã«ä¸æ­£ãªæ–‡å­—ãŒå«ã¾ã‚Œã¦ã„ã¾ã™ã€‚有効ãªæ–‡å­—ã¯: a-z, A-Z, 0-9, .-_ ã§ã™!" - -#: ../lib/modules/posixAccount.inc:80 -msgid "Username in use. Selected next free username." -msgstr "使用中ã®ãƒ¦ãƒ¼ã‚¶åã§ã™ã€‚次ã®ç©ºãユーザåãŒé¸æŠžã•ã‚Œã¾ã—ãŸã€‚" - -#: ../lib/modules/posixAccount.inc:308 ../help/help.inc:145 -msgid "" -"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." -msgstr "" -"作æˆã—よã†ã¨ã—ã¦ã„るユーザã®ãƒ¦ãƒ¼ã‚¶å。有効ãªæ–‡å­—ã¯: a-z, 0-9 㨠.-_ã§ã™ã€‚" -"useraddコマンドã§è¨±ã•ã‚Œã¦ã„ãªã„ãŸã‚ã€å…ˆé ­æ–‡å­—ã«æ•°å­—ã¯ä½¿ç”¨ã§ãã¾ã›ã‚“。大文字 " -"A-Zã¯ã€ã„ãã¤ã‹ã®å•é¡Œã‚’引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚ã‚‹ãŸã‚使用ã§ãã¾ã›ã‚“。ユーザåãŒæ—¢" -"ã«ä½¿ã‚ã‚Œã¦ã„ãŸãªã‚‰ã°ã€ãƒ¦ãƒ¼ã‚¶åã«ç•ªå·ãŒä»˜åŠ ã•ã‚Œã¾ã™ã€‚ã“ã®å ´åˆã€æ¬¡ã®ç©ºã番å·ãŒ" -"使ã‚ã‚Œã¾ã™ã€‚警告: å¤ã„システムã§ã¯ã€8文字より長ã„ユーザåã§å•é¡ŒãŒç™ºç”Ÿã—ã¾ã™ã€‚" -"16文字より長ã„ユーザåã§ã¯Windowsã«ã¯ãƒ­ã‚°ã‚ªãƒ³ã§ãã¾ã›ã‚“。" - -#: ../templates/ou_edit.php:336 ../templates/main_header.php:81 -#: ../lib/modules/posixAccount.inc:57 ../lib/modules/posixAccount.inc:58 -#: ../lib/modules/posixAccount.inc:61 ../lib/modules/posixAccount.inc:126 -#: ../help/help.inc:79 -msgid "Users" -msgstr "ユーザ" - -#: ../help/help.inc:239 -msgid "Users also being member of the current group." -msgstr "ã“ã®ã‚°ãƒ«ãƒ¼ãƒ—ã®ãƒ¡ãƒ³ãƒãƒ¼ã¨ãªã£ã¦ã„るユーザ。" - -#: ../lib/modules/posixGroup.inc:397 -msgid "Users who are member of the current group." -msgstr "ã“ã®ã‚°ãƒ«ãƒ¼ãƒ—ã«å±žã™ã‚‹ãƒ¦ãƒ¼ã‚¶ã€‚" - -#: ../lib/modules/posixGroup.inc:401 -msgid "" -"Users who will become member of the current group. User names are separated " -"by semicolons." -msgstr "" -"ã“ã®ã‚°ãƒ«ãƒ¼ãƒ—ã®ãƒ¡ãƒ³ãƒãƒ¼ã¨ãªã‚‹ãƒ¦ãƒ¼ã‚¶ã€‚ユーザåã¯ã‚»ãƒŸã‚³ãƒ­ãƒ³ã«ã‚ˆã£ã¦åŒºåˆ‡ã‚‰ã‚Œã¾" -"ã™ã€‚" - -#: ../help/help.inc:183 -msgid "Users wich are also members of group." -msgstr "グループã®ãƒ¡ãƒ³ãƒãƒ¼ã¨ãªã£ã¦ã„ã‚‹ä»–ã®ãƒ¦ãƒ¼ã‚¶ã€‚" - -#: ../templates/tree/creation_template.php:85 -msgid "Using template:" -msgstr "テンプレートを使用:" - -#: ../help/help.inc:87 -msgid "Valid users" -msgstr "有効ãªãƒ¦ãƒ¼ã‚¶" - -#: ../templates/delete.php:181 ../lib/modules.inc:1553 -#, php-format -msgid "Was unable to add attribtues to DN: %s." -msgstr "DN %s ã«å±žæ€§ã‚’追加ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚" - -#: ../lib/modules.inc:1518 ../lib/modules.inc:1527 -#, php-format -msgid "Was unable to create DN: %s." -msgstr "DN %s を作æˆã§ãã¾ã›ã‚“ã§ã—ãŸã€‚" - -#: ../templates/tree/delete.php:109 ../templates/delete.php:218 -#: ../lib/modules.inc:1511 -#, php-format -msgid "Was unable to delete DN: %s." -msgstr "DN %s を削除ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚" - -#: ../templates/tree/update.php:105 ../templates/tree/add_oclass.php:89 -#: ../templates/tree/add_oclass_form.php:155 ../templates/delete.php:172 -#: ../lib/modules.inc:1543 -#, php-format -msgid "Was unable to modify attribtues from DN: %s." -msgstr "DN %s ã®å±žæ€§ã‚’変更ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚" - -#: ../templates/delete.php:190 ../lib/modules.inc:1563 -#, php-format -msgid "Was unable to remove attribtues from DN: %s." -msgstr "DN %s ã®å±žæ€§ã‚’削除ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚" - -#: ../help/help.inc:59 -msgid "" -"When using ldaps:// be sure to use exactly the same IP/domain name as in " -"your certificate!" -msgstr "" -"ldaps:// を使ã†æ™‚ã¯ã€è¨¼æ˜Žæ›¸ã®IP/ドメインåã¨æ­£ç¢ºã«ä¸€è‡´ã™ã‚‹ã‚‚ã®ã‚’使用ã—ã¦ãã " -"ã•ã„。" - -#: ../templates/pdfedit/pdfpage.php:460 -msgid "Width" -msgstr "å¹…" - -#: ../help/help.inc:185 -msgid "Windows clients will show display name as group description." -msgstr "Windowsクライアントã¯ã‚°ãƒ«ãƒ¼ãƒ—ã®èª¬æ˜Žã¨ã—ã¦åå‰ã‚’表示ã—ã¾ã™ã€‚" - -#: ../help/help.inc:224 -msgid "Windows domain" -msgstr "Windowsドメイン" - -#: ../lib/modules/sambaAccount.inc:379 ../lib/modules/sambaSamAccount.inc:195 -msgid "Windows domain name of account." -msgstr "アカウントã®Windowsドメインå" - -#: ../help/help.inc:225 -msgid "Windows domain of host." -msgstr "ホストã®Windowsドメイン" - -#: ../lib/modules/sambaAccount.inc:286 ../lib/modules/sambaAccount.inc:756 -#: ../lib/modules/sambaSamAccount.inc:302 -#: ../lib/modules/sambaSamAccount.inc:740 -#: ../lib/modules/sambaSamAccount.inc:960 -#: ../lib/modules/sambaGroupMapping.inc:174 -#: ../lib/modules/sambaGroupMapping.inc:300 -msgid "Windows group" -msgstr "Windowsグループ" - -#: ../lib/modules/sambaAccount.inc:372 -msgid "Windows group RID" -msgstr "WindowsグループRID" - -#: ../lib/modules/sambaAccount.inc:369 ../help/help.inc:232 -msgid "Windows group name" -msgstr "Windowsグループå" - -#: ../lib/modules/sambaGroupMapping.inc:286 -msgid "Windows group type." -msgstr "Windowsグループタイプ" - -#: ../lib/modules/sambaGroupMapping.inc:273 -msgid "Windows groupname" -msgstr "Windowsグループå" - -#: ../lib/modules/sambaSamAccount.inc:184 -msgid "Windows primary group SID" -msgstr "WindowsプライマリグループSID" - -#: ../lib/modules/sambaGroupMapping.inc:282 -msgid "Windows-Domain name of group." -msgstr "グループã®Windowsドメインå。" - -#: ../help/help.inc:237 -msgid "Windows-Domain of group." -msgstr "グループã®Windowsドメイン。" - -#: ../help/help.inc:219 -msgid "Windows-Domain of user." -msgstr "ユーザã®Windowsドメイン。" - -#: ../templates/pdfedit/pdfdelete.php:89 -#: ../templates/profedit/profiledelete.php:92 -msgid "Wrong or missing type!" -msgstr "タイプãŒé–“é•ã£ã¦ã„ã‚‹ã‹ã€ã¾ãŸã¯æŠœã‘ã¦ã„ã¾ã™!" - -#: ../templates/login.php:366 -msgid "Wrong password/user name combination. Please try again." -msgstr "誤ã£ãŸãƒ‘スワード/ユーザåã®çµ„ã¿åˆã‚ã›ã§ã™ã€‚ã‚„ã‚Šç›´ã—ã¦ãã ã•ã„。" - -#: ../templates/schema/schema.php:159 ../templates/schema/schema.php:201 -#: ../templates/schema/schema.php:206 ../templates/schema/schema.php:211 -msgid "Yes" -msgstr "ã¯ã„" - -#: ../lib/modules/posixGroup.inc:471 ../lib/modules/posixAccount.inc:76 -#: ../lib/modules/posixAccount.inc:78 -msgid "" -"You are using a capital letters. This can cause problems because windows " -"isn't case-sensitive." -msgstr "" -"大文字ãŒä½¿ã‚ã‚Œã¦ã„ã¾ã™ã€‚Windowsã¯å¤§æ–‡å­—ã¨å°æ–‡å­—を区別ã—ãªã„ãŸã‚ã€ã“ã‚ŒãŒåŽŸå› ã§" -"å•é¡ŒãŒç™ºç”Ÿã™ã‚‹å ´åˆãŒã‚ã‚Šã¾ã™ã€‚" - -#: ../help/help.inc:187 -msgid "" -"You can select a previous defined profile here. This will set all fields to " -"the profile values." -msgstr "" -"ã“ã“ã§ã€ä»¥å‰ã«å®šç¾©ã—ãŸãƒ—ロファイルをé¸æŠžã§ãã¾ã™ã€‚ã“ã‚Œã¯ã™ã¹ã¦ã®ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã‚’" -"プロファイルã®å€¤ã«è¨­å®šã—ã¾ã™ã€‚" - -#: ../lib/modules/posixGroup.inc:462 ../lib/modules/posixAccount.inc:73 -msgid "You cannot use this password options at the same time." -msgstr "ã“ã®ãƒ‘スワードオプションã¯åŒæ™‚ã«æŒ‡å®šã§ãã¾ã›ã‚“。" - -#: ../templates/tree/templates/creation/custom.php:106 -msgid "" -"You did not select any object classes for this object. Please go back and do " -"so." -msgstr "" -"ã“ã®ã‚ªãƒ–ジェクトã«å¯¾ã™ã‚‹ã‚ªãƒ–ジェクトクラスãŒé¸æŠžã•ã‚Œã¦ã„ã¾ã›ã‚“。å‰ã«æˆ»ã£ã¦é¸" -"択ã—ã¦ãã ã•ã„。" - -#: ../templates/logout.php:70 -msgid "You have been logged off from LDAP Account Manager." -msgstr "LDAP Account Managerã‹ã‚‰ãƒ­ã‚°ã‚ªãƒ•ã—ã¾ã—ãŸã€‚" - -#: ../templates/tree/add_attr.php:75 -msgid "You left the attribute value blank. Please go back and try again." -msgstr "属性値ãŒæœªå…¥åŠ›ã§ã™ã€‚å‰ã«æˆ»ã£ã¦å…¥åŠ›ã—ã¦ãã ã•ã„。" - -#: ../templates/tree/create.php:81 -#, php-format -msgid "You left the value blank for required attribute: %s." -msgstr "必須属性 %s ãŒè¨˜å…¥ã•ã‚Œã¦ã„ã¾ã›ã‚“。" - -#: ../templates/tree/update_confirm.php:250 -msgid "You made no changes." -msgstr "変更ã•ã‚Œã¾ã›ã‚“ã§ã—ãŸã€‚" - -#: ../templates/tree/add_attr_form.php:164 -msgid "" -"Your PHP configuration has disabled file uploads. Please check php.ini " -"before proceeding." -msgstr "" -"PHP設定ã«ã‚ˆã£ã¦ãƒ•ã‚¡ã‚¤ãƒ«ã‚¢ãƒƒãƒ—ロードãŒç¦æ­¢ã•ã‚Œã¦ã„ã¾ã™ã€‚実行å‰ã« php.ini を確" -"èªã—ã¦ãã ã•ã„。" - -#: ../templates/tree/update_confirm.php:188 -#: ../templates/tree/update_confirm.php:200 -msgid "[attribute deleted]" -msgstr "[削除ã•ã‚ŒãŸå±žæ€§]" - -#: ../lib/modules/sambaAccount.inc:264 ../lib/modules/sambaSamAccount.inc:280 -msgid "\\\\server\\homes\\smiller" -msgstr "" - -#: ../lib/modules/sambaAccount.inc:270 ../lib/modules/sambaSamAccount.inc:286 -msgid "\\\\server\\profiles\\smiller" -msgstr "" - -#: ../templates/tree/edit.php:488 -msgid "add value" -msgstr "値ã®è¿½åŠ " - -#: ../lib/modules/posixGroup.inc:352 -msgid "adminstrators" -msgstr "" - -#: ../templates/schema/schema.php:226 -msgid "character" -msgstr "文字" - -#: ../templates/schema/schema.php:225 -msgid "characters" -msgstr "文字" - -#: ../help/help.inc:71 -msgid "dc=yourcompany,dc=com" -msgstr "" - -#: ../templates/tree/edit.php:306 -msgid "delete attribute" -msgstr "属性ã®å‰Šé™¤" - -#: ../templates/tree/edit.php:171 ../templates/tree/edit.php:173 -#: ../templates/tree/edit.php:300 ../templates/tree/edit.php:302 -#: ../templates/tree/add_value_form.php:106 -#: ../templates/tree/add_value_form.php:109 -msgid "download value" -msgstr "ダウンロード" - -#: ../lib/modules/inetOrgPerson.inc:62 ../lib/modules/inetOrgPerson.inc:197 -#: ../lib/modules/inetOrgPerson.inc:267 ../lib/modules/inetOrgPerson.inc:268 -#: ../lib/modules/inetOrgPerson.inc:444 ../lib/modules/inetOrgPerson.inc:472 -msgid "eMail address" -msgstr "é›»å­ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹" - -#: ../templates/tree/edit.php:385 -msgid "false" -msgstr "" - -#: ../lib/modules/posixAccount.inc:193 -msgid "group01,group02" -msgstr "" - -#: ../lib/modules/quota.inc:120 ../lib/modules/quota.inc:122 -#: ../lib/modules/quota.inc:189 ../lib/modules/quota.inc:191 -msgid "hours" -msgstr "時間" - -#: ../lib/tree.inc:1184 -msgid "jpegPhoto contains errors" -msgstr "jpegPhoto ã«ã‚¨ãƒ©ãƒ¼ãŒã‚ã‚Šã¾ã™" - -#: ../help/help.inc:53 -msgid "" -"ldap://localhost:389 connects to localhost using a standard LDAP connection " -"on port 389" -msgstr "" -"ldaps://localhost:389 ã¯ã€localhostã®ãƒãƒ¼ãƒˆ389ã¸æ¨™æº–çš„ãªLDAP接続を行ãªã„ã¾" -"ã™ã€‚" - -#: ../help/help.inc:55 -msgid "" -"ldaps://141.40.146.133 connects to 141.40.146.133 using an encrypted LDAP " -"connection." -msgstr "" -"ldaps://141.40.146.133 ã¯ã€141.40.146.133 ã¸æš—å·åŒ–ã•ã‚ŒãŸLDAP接続を行ãªã„ã¾" -"ã™ã€‚" - -#: ../lib/modules/posixAccount.inc:253 -msgid "machines" -msgstr "マシン" - -#: ../lib/modules/sambaAccount.inc:302 ../lib/modules/sambaAccount.inc:312 -#: ../lib/modules/sambaSamAccount.inc:210 -#: ../lib/modules/sambaSamAccount.inc:329 -msgid "mydomain" -msgstr "マイドメイン" - -#: ../lib/modules/sambaSamAccount.inc:304 -msgid "mygroup" -msgstr "マイグループ" - -#: ../templates/tree/templates/creation/custom.php:189 -#: ../templates/tree/templates/creation/custom.php:212 -#: ../templates/schema/schema.php:166 ../templates/schema/schema.php:235 -#: ../templates/schema/schema.php:246 ../templates/schema/schema.php:295 -#: ../templates/schema/schema.php:361 ../templates/schema/schema.php:376 -#: ../templates/schema/schema.php:410 ../templates/schema/schema.php:432 -msgid "none" -msgstr "ãªã—" - -#: ../templates/tree/edit.php:386 -msgid "none, remove value" -msgstr "ãªã—, 値を削除" - -#: ../templates/schema/schema.php:222 -msgid "not applicable" -msgstr "é©ç”¨å¯¾è±¡å¤–" - -#: ../templates/schema/schema.php:173 ../templates/schema/schema.php:178 -#: ../templates/schema/schema.php:183 ../templates/schema/schema.php:216 -msgid "not specified" -msgstr "未入力" - -#: ../help/help.inc:65 -msgid "" -"ou=People,dc=yourcompany,dc=com will read and store all accounts in this " -"subtree." -msgstr "" -"ou=People,dc=yourcompany,dc=com ã¯ã€ã“ã®ã‚µãƒ–ツリーã®ã™ã¹ã¦ã®ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã‚’読ã¿" -"書ãã—ã¾ã™ã€‚" - -#: ../lib/modules/posixAccount.inc:239 -msgid "pc01$" -msgstr "" - -#: ../lib/modules/posixAccount.inc:260 -msgid "pc01,Room 2.34" -msgstr "" - -#: ../templates/tree/edit.php:238 ../templates/config/confmain.php:494 -msgid "required" -msgstr "å¿…é ˆ" - -#: ../templates/config/confmain.php:495 -msgid "required for Samba 3 accounts" -msgstr "Samba 3アカウントã«ãŠã„ã¦å¿…é ˆ" - -#: ../templates/pdfedit/pdfpage.php:546 -msgid "right" -msgstr "å³" - -#: ../lib/modules/posixGroup.inc:378 ../lib/modules/sambaAccount.inc:206 -#: ../lib/modules/sambaSamAccount.inc:222 ../lib/modules/posixAccount.inc:214 -msgid "secret" -msgstr "" - -#: ../lib/modules/posixAccount.inc:172 ../lib/modules/nisMailAlias.inc:84 -msgid "smiller" -msgstr "" - -#: ../templates/tree/edit.php:431 -msgid "structural" -msgstr "構造型" - -#: ../templates/tree/edit.php:383 -msgid "true" -msgstr "" - -#: ../lib/modules/posixGroup.inc:372 -msgid "user01,user02,user03" -msgstr "" - -#: ../lib/modules/inetOrgPerson.inc:199 -msgid "user@company.com" -msgstr "" - -#: ../lib/modules/posixAccount.inc:186 -msgid "users" -msgstr "ユーザ" - -#~ msgid "Attribute not defined in LDAP." -#~ msgstr "属性ãŒLDAPã«å®šç¾©ã•ã‚Œã¦ã„ã¾ã›ã‚“。" - -#~ msgid "Enter Username and Password for Account" -#~ msgstr "アカウントã«å¯¾ã™ã‚‹ãƒ¦ãƒ¼ã‚¶åã¨ãƒ‘スワードを入力" - -#~ msgid "No groups found in ldap." -#~ msgstr "LDAPã«ã‚°ãƒ«ãƒ¼ãƒ—ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。" - -#~ msgid "Available group modules" -#~ msgstr "有効ãªã‚°ãƒ«ãƒ¼ãƒ—モジュール" - -#~ msgid "Available user modules" -#~ msgstr "有効ãªãƒ¦ãƒ¼ã‚¶ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«" - -#~ msgid "Delete User Profile" -#~ msgstr "ユーザプロファイルã®å‰Šé™¤" - -#~ msgid "New profile created." -#~ msgstr "æ–°ã—ã„プロファイルãŒä½œæˆã•ã‚Œã¾ã—ãŸã€‚" - -#~ msgid "No Samba Hosts found!" -#~ msgstr "SambaホストãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“!" - -#~ msgid "No profilename given." -#~ msgstr "プロファイルåãŒä¸Žãˆã‚‰ã‚Œã¦ã„ã¾ã›ã‚“。" - -#~ msgid "Selected group modules" -#~ msgstr "é¸æŠžã•ã‚ŒãŸã‚°ãƒ«ãƒ¼ãƒ—モジュール" - -#~ msgid "Selected user modules" -#~ msgstr "é¸æŠžã•ã‚ŒãŸãƒ¦ãƒ¼ã‚¶ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«" - -#~ msgid "Special Group" -#~ msgstr "特殊グループ" - -#~ msgid "Up" -#~ msgstr "上" - -#~ msgid "User list" -#~ msgstr "ユーザ一覧" - -#~ msgid "Wrong profilename given." -#~ msgstr "é–“é•ã£ãŸãƒ—ロファイルåãŒä¸Žãˆã‚‰ã‚Œã¾ã—ãŸã€‚" - -#~ msgid "required for Samba accounts" -#~ msgstr "Sambaアカウントã«ãŠã„ã¦å¿…é ˆ" diff --git a/lam/po/make_all b/lam/po/make_all deleted file mode 100755 index 2b935597..00000000 --- a/lam/po/make_all +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/bash -./make_po_ca -tar -czf messages.po_ca.tar.gz messages.po -./make_po_es -tar -czf messages.po_es.tar.gz messages.po -./make_po_fr -tar -czf messages.po_fr.tar.gz messages.po -./make_po_hu -tar -czf messages.po_hu.tar.gz messages.po -./make_po_it -tar -czf messages.po_it.tar.gz messages.po -./make_po_jp -tar -czf messages.po_jp.tar.gz messages.po - diff --git a/lam/po/make_mo b/lam/po/make_mo deleted file mode 100755 index 560b55d5..00000000 --- a/lam/po/make_mo +++ /dev/null @@ -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 -c --statistics messages.po -o messages.mo diff --git a/lam/po/make_po b/lam/po/make_po deleted file mode 100755 index 2b592ac4..00000000 --- a/lam/po/make_po +++ /dev/null @@ -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 {} \; diff --git a/lam/po/make_po_ca b/lam/po/make_po_ca deleted file mode 100755 index 2c6e8b30..00000000 --- a/lam/po/make_po_ca +++ /dev/null @@ -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 is run after make_po to merge the existing German translations to messages.po - -./make_po -msgmerge -v ../locale/ca_ES/LC_MESSAGES/messages.po messages.po -o messages.po \ No newline at end of file diff --git a/lam/po/make_po_de b/lam/po/make_po_de deleted file mode 100755 index 3d78ae9e..00000000 --- a/lam/po/make_po_de +++ /dev/null @@ -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 is run after make_po to merge the existing German translations to messages.po - -./make_po -msgmerge -v ../locale/de_DE/LC_MESSAGES/messages.po messages.po -o messages.po \ No newline at end of file diff --git a/lam/po/make_po_es b/lam/po/make_po_es deleted file mode 100755 index ab55f7d6..00000000 --- a/lam/po/make_po_es +++ /dev/null @@ -1,10 +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 to update the existing Spanish translations in messages.po - -./make_po -msgmerge -v ../locale/es_ES/LC_MESSAGES/messages.po messages.po -o messages.po diff --git a/lam/po/make_po_fr b/lam/po/make_po_fr deleted file mode 100755 index 77cfbf6f..00000000 --- a/lam/po/make_po_fr +++ /dev/null @@ -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 is run after make_po to merge the existing German translations to messages.po - -./make_po -msgmerge -v ../locale/fr_FR/LC_MESSAGES/messages.po messages.po -o messages.po diff --git a/lam/po/make_po_hu b/lam/po/make_po_hu deleted file mode 100755 index ae710928..00000000 --- a/lam/po/make_po_hu +++ /dev/null @@ -1,10 +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 - -./make_po -msgmerge -v ../locale/hu_HU/LC_MESSAGES/messages.po messages.po -o messages.po diff --git a/lam/po/make_po_it b/lam/po/make_po_it deleted file mode 100755 index 5db63544..00000000 --- a/lam/po/make_po_it +++ /dev/null @@ -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 is run after make_po to merge the existing German translations to messages.po - -./make_po -msgmerge -v ../locale/it_IT/LC_MESSAGES/messages.po messages.po -o messages.po \ No newline at end of file diff --git a/lam/po/make_po_jp b/lam/po/make_po_jp deleted file mode 100755 index bf60018f..00000000 --- a/lam/po/make_po_jp +++ /dev/null @@ -1,10 +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 - -./make_po -msgmerge -v ../locale/ja_JP/LC_MESSAGES/messages.po messages.po -o messages.po diff --git a/lam/po/messages.header b/lam/po/messages.header deleted file mode 100644 index da4ac099..00000000 --- a/lam/po/messages.header +++ /dev/null @@ -1,16 +0,0 @@ -# -# LDAP Account Manager -# - -msgid "" -msgstr "" -"Project-Id-Version: LAM 0.5\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 \n" -"Language-Team: German \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - diff --git a/lam/sess/.htaccess b/lam/sess/.htaccess deleted file mode 100644 index 11c59d17..00000000 --- a/lam/sess/.htaccess +++ /dev/null @@ -1,4 +0,0 @@ - - Order allow,deny - Deny from all - diff --git a/lam/session-vars.txt b/lam/session-vars.txt deleted file mode 100644 index e4c83a47..00000000 --- a/lam/session-vars.txt +++ /dev/null @@ -1,119 +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 - - -masscreate: -- mass_accounts: verschlüsseltes, serialisiertes Array mit Accounts -- mass_dn: DN der Accounts -- mass_counter: aktuelle Position im Account-Array -- mass_errors: Fehlermeldungen beim Upload -- mass_csv: CSV-Datei als Vorlage für Upload -- mass_failed: Liste der Accounts, die nicht erzeugt werden konnten -- mass_postActions: temporäre Daten für den Upload -- mass_data: Eingabedaten -- mass_ids: Tabelle Spaltenname => Spaltennummer -- mass_scope: Account-Typ - -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_sufftree: 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_filename: Dateiname des Profils -- config_types: Hash Array mit Typen (text, select, ...) der verarbeiteten Optionen -- config_scopes: Accounttypen für Module - - -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. - - -profilepage.php/profilecreate.php -- profile_types: Hash Array mit Typen (text, select, ...) der verarbeiteten Optionen - - - - diff --git a/lam/style/500_layout.css b/lam/style/500_layout.css deleted file mode 100644 index 50e588c1..00000000 --- a/lam/style/500_layout.css +++ /dev/null @@ -1,910 +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; -} - -a img { - border: 0px; -} - -form { } -input { -font-weight:bold; -background-color:#CCCCFF; -} -button { -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.usernav-activepage { - color:red; -} - -/* style of navigation bar */ -td.usernav { - color:#AAAAAA; -} - -table.usernav { - background-color:#fff2a3; - border-width:1px; - border-style:solid; - border-color:#9b8523; -} - -td.usernav-text { - color:green; - font-family:Verdana,sans-serif; - font-size:12px; -} - -/* style of active column */ -th.userlist-sort { - 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 { - background-color:#d6e3ff; -} - -fieldset.groupedit legend { - color:blue; -} - -fieldset.groupedit fieldset { - background-color:#d6e3ff; -} - -fieldset.groupedit fieldset fieldset { - background-color:#d6e3ff; -} - -fieldset.groupedit select { - background-color:#a8c3ff; -} - - -/** - * table style for hostedit.php - * - */ - -fieldset.hostedit { - background-color:#ffe2dd; -} - -fieldset.hostedit legend { - color:blue; -} - -fieldset.hostedit fieldset { - background-color:#ffe2dd; -} - -fieldset.hostedit fieldset fieldset { - background-color:#ffe2dd; -} - -fieldset.hostedit select { - background-color:#ffc4ba; -} - - -/** - * table style for useredit.php - * - */ - -fieldset.useredit { - background-color:#fff2a3; -} - -fieldset.useredit legend { - color:blue; -} - -fieldset.useredit fieldset { - background-color:#fff2a3; -} - -fieldset.useredit fieldset fieldset { - background-color:#fff2a3; -} - -fieldset.useredit select { - background-color:#fffde2; -} - - -/* schema browser */ - -table.schema_oclasses { - border-left: 1px solid black; - border-right: 1px solid black; - border-bottom: 1px solid black; - border-top: 0; - margin-bottom: 10px; - background-color: #eee; -} - -table.schema_oclasses td { - vertical-align: top; - text-align: left; - padding-left: 5px; -} - -table.schema_attr th { - background-color: #016; - padding: 5px; - color: white; - font-weight: bold; - font-size: 125%; -} - -table.schema_attr td { - padding: 5px; - vertical-align: top; -} - -table.schema_attr tr.even { - background-color: #eee; -} - -table.schema_attr tr.odd { - background-color: #ccc; -} - -table.schema_attr tr.highlight{ - background-color: #bcd; - font-weight: Bold; -} - -ul.schema { - margin: 5px; - margin-left: 0px; - padding-left: 20px; -} - -ul.schema li { - margin-left: 0px; - padding-left: 0px; -} - -ul.schema li small { - font-size: 75%; - color: #777; -} - -ul.schema li small a { - color: #77c; -} - -h4.schema_oclass { - background: #016; - padding: 5px; - margin: 0px; - margin-top: 8px; - font-weight: normal; - border: 1px solid black; - font-size: 140%; - color: white; -} - -h4.schema_oclass_sub { - background: #dde; - border: 1px solid black; - border-top: 0px; - font-weight: normal; - margin: 0px; - padding: 2px; - padding-left: 5px; - font-size: 80%; -} - -table.tree tr.login td { -} - -table.tree td.links { - padding: 0px; - font-size: 10px; - padding-left: 12px; - font-size: 10px; -} - -table.tree td.links a { - font-size: 10px; -} - -table.tree { - border: 0px; -} - -table.tree img { - border: 0px; -} - -table.tree td { - padding: 2px; - border: 0px solid black; -} - -table.tree tr { -} - -table.tree tr.server td.icon { - width: 14px; -} - -table.tree tr.server td { - padding-top: 15px; - padding-bottom: 0px; - vertical-align: top; - font-size: 20px; - text-align: left; -} - -table.tree td.icon { - text-align: center; - padding: 0px; - width: 14px; - font-size: 1px; -} - -table.tree td.rdn { - width: 500px; -} - -table.tree td.rdn a { - text-decoration: none; - color: black; -} - -table.tree td.rdn a:hover { - text-decoration: none; - color: blue; -} - -table.tree td.create { -} - -table.tree td.create a { - text-decoration: none; - color: black; -} - -table.tree td.create a:hover { - text-decoration: none; - color: blue; -} - - -table.tree td.spacer { - width: 22px; -} - -table.tree td.expander { - text-align: center; - width: 22px; - max-width: 22px; - min-width: 22px; -} - -table.tree td span.count { - color: gray; - font-size: 85%; -} - -h3.tree_title { - text-align: center; - margin: 0px; - padding: 10px; - color: white; - background-color: #018; - border: 1px solid black; - font-weight: normal; - font-size: 150%; -} - -h3.tree_subtitle { - text-align: center; - margin: 0px; - margin-bottom: 15px; - font-size: 75%; - color: white; - border-bottom: 1px solid black; - border-left: 1px solid black; - border-right: 1px solid black; - background: #018; - padding: 4px; - font-weight: normal; -} - -table.tree_edit_dn { - border-collapse: collapse; - border-spacing: 0px; - empty-cells: show; - width: 500px; -} - -table.tree_edit_dn input { - margin: 1px; -} - -table.tree_edit_dn input.val { - font-size: 14px; - width: 350px; - font-family: arial, helvetica, sans-serif; - background-color: white; -} - -table.tree_edit_dn textarea.val { - font-size: 14px; - width: 350px; - font-family: arial, helvetica, sans-serif; - background-color: white; -} - -table.tree_edit_dn tr td { - padding: 4px; - padding-right: 0px; -} - -table.tree_edit_dn tr td.attr { - background-color: #eee; - vertical-align: top; -} - -table.tree_edit_dn tr td.heading { - border-top: 3px solid #ccc; - font-weight: bold; -} - -table.tree_edit_dn tr td.attr_note { - text-align: right; - background-color: #eee; -} - -table.tree_edit_dn tr td.attr a { - text-decoration: none; - color: black; -} - -table.tree_edit_dn tr td.attr a:hover { - text-decoration: underline; - color: #016; -} - -table.tree_edit_dn tr td.val { - text-align: left; - vertical-align: middle; - padding-bottom: 10px; - padding-left: 80px; -} - - -/** When an attr is updated, it is highlighted to indicate such */ -table.tree_edit_dn tr.updated_attr td.attr { - border-top: 1px dashed green; - border-left: 1px dashed green; - background-color: #ded; -} - -table.tree_edit_dn tr.updated_attr td.attr_note { - border-top: 1px dashed green; - border-right: 1px dashed green; - background-color: #ded; -} - -/** An extra row that sits at the bottom of recently modified attrs to encase them in dashes */ -table.tree_edit_dn tr.updated_attr td.bottom { - border-top: 1px dashed green; -} - -/** Formatting for the value cell when it is the attribute that has been recently modified */ -table.tree_edit_dn tr.updated_attr td.val { - border-left: 1px dashed green; - border-right: 1px dashed green; -} - -/* Neede to prevent sub-tables (like the one in which jpegPhotos are displayed) - * from drawing borders as well. */ -table.tree_edit_dn tr.updated_attr td table td { - border: 0px; -} - -table.tree_edit_dn tr.updated_attr a { -} - -table.tree_edit_dn tr.mod_dn { - background: #def; -} - -table.tree_edit_dn tr.row1 { - background: #eee; -} - -table.tree_edit_dn tr.row2 { - background: #ccc; -} - -form.tree_edit_dn { - margin: 0px; - padding: 0px; -} - -table.tree_edit_dn_menu { - font-size: 75%; -} - -table.tree_edit_dn_menu td.icon { - width: 16px; - text-align: center; -} - -span.tree_hint { - font-size: small; - font-weight: normal; - color: #888; -} - -table.tree_confirm th { - background-color: #016; - padding: 5px; - color: white; - font-weight: normal; -} - -table.tree_confirm tr td { - padding: 4px; -} - -table.tree_confirm tr.spacer { - background-color: #ddd; -} - -table.tree_confirm tr.even { - background-color: #ccc; -} - -table.tree_confirm tr.odd { - background-color: #eee; -} - -table.tree_confirm tr td.heading { - text-align: right; - font-size: 75%; -} - -table.tree_confirm td.icon { - text-align: center; -} - -table.tree_delete_confirm { - width: 76%; - background-color: #ddf; - padding: 20px; - text-align: left; -} - -table.tree_create { - font-size: 75%; -} - -table.tree_create td.heading { - vertical-align: top; - padding: 10px; -} - -table.export_form { - font-size: 75%; - width: 400px; - border-spacing: 10px; - border-collapse: separate; -} - -table.export_form tr td { - text-align: left; - vertical-align: top; - padding: 4px; -} - - diff --git a/lam/templates/account/edit.php b/lam/templates/account/edit.php deleted file mode 100644 index 69af4554..00000000 --- a/lam/templates/account/edit.php +++ /dev/null @@ -1,73 +0,0 @@ -load_account($DN); - } -else if (count($_POST)==0) { - $type = str_replace("\'", '', $_GET['type']); - if ($_GET['type'] == $type) $type = str_replace("'", '',$_GET['type']); - $_SESSION['account'] = new accountContainer($type, 'account'); - $_SESSION['account']->new_account(); - } -$_SESSION['account']->continue_main($_POST); - -?> diff --git a/lam/templates/config/conflogin.php b/lam/templates/config/conflogin.php deleted file mode 100644 index 82a23c27..00000000 --- a/lam/templates/config/conflogin.php +++ /dev/null @@ -1,166 +0,0 @@ - - - - <?php - echo _("Login"); - ?> - - - - - \n"; - echo "\n"; - echo "\n"; - ?> -

- LDAP Account Manager -

-


- -
- - - - - - - - - - -\n"; - echo "\n"; - echo "\n"; - echo "\n"; - echo "\n"; - echo "\n"; - echo "\n"; - echo "\n"; - } -?> - - - - - - - - - - - - - - -
 
" . $message . "
 
- 0) { - echo "\n"; - } - else echo "\n"; - if (sizeof($files) > 0) echo "\n"; - else echo "\n"; - if (sizeof($files) > 0) echo "\n"; - else echo "\n"; - // help link - echo " "; - echo "\"""; - echo "\n"; - ?> -
 
- -
-
- -






- - -

- -

- - - diff --git a/lam/templates/config/confmain.php b/lam/templates/config/confmain.php deleted file mode 100644 index 1e20d4fc..00000000 --- a/lam/templates/config/confmain.php +++ /dev/null @@ -1,514 +0,0 @@ -get_Passwd()) == $passwd)) { - $message = _("The password is invalid! Please try again."); - /** go back to login if password is invalid */ - require('conflogin.php'); - exit; -} - -// check if user comes from modules page -if (isset($_GET["modulesback"])) { - // load config values from session - $conf->set_ServerURL($_SESSION['conf_serverurl']); - $conf->set_cacheTimeout($_SESSION['conf_cachetimeout']); - $conf->set_Adminstring($_SESSION['conf_admins']); - $conf->set_Suffix('user', $_SESSION['conf_suffusers']); - $conf->set_Suffix('group', $_SESSION['conf_suffgroups']); - $conf->set_Suffix('host', $_SESSION['conf_suffhosts']); - $conf->set_Suffix('domain', $_SESSION['conf_suffdomains']); - $conf->set_Suffix('tree', $_SESSION['conf_sufftree']); - $conf->set_listAttributes($_SESSION['conf_usrlstattr'], 'user'); - $conf->set_listAttributes($_SESSION['conf_grplstattr'], 'group'); - $conf->set_listAttributes($_SESSION['conf_hstlstattr'], 'host'); - $conf->set_MaxListEntries($_SESSION['conf_maxlistentries']); - $conf->set_defaultLanguage($_SESSION['conf_lang']); - $conf->set_scriptpath($_SESSION['conf_scriptpath']); - $conf->set_scriptserver($_SESSION['conf_scriptserver']); - // check if modules were edited - if ($_GET["moduleschanged"] == "true") { - $conf->set_AccountModules($_SESSION['conf_usermodules'], 'user'); - $conf->set_AccountModules($_SESSION['conf_groupmodules'], 'group'); - $conf->set_AccountModules($_SESSION['conf_hostmodules'], 'host'); - } -} - -// index for tab order -$tabindex = 1; -$tabindexLink = 1000; - -echo $_SESSION['header']; - -echo ("" . _("LDAP Account Manager Configuration") . "\n"); -echo ("\n"); -echo ("\n"); -echo ("\n"); -echo ("

". - "\"LDAP

\n
\n

\n"); - -// display formular -echo ("
\n"); - -echo ("
" . _("Server settings") . ""); -echo (""); -// serverURL -echo ("". - "\n"); -echo "\n"; -$tabindex++; - -// new line -echo (""); - -// user suffix -echo ("". - "\n"); -echo "\n"; -$tabindex++; -// group suffix -echo ("". - "\n"); -echo "\n"; -$tabindex++; -// host suffix -echo ("". - "\n"); -echo "\n"; -$tabindex++; -// domain suffix -echo ("". - "\n"); -echo "\n"; -$tabindex++; -// tree suffix -echo ("". - "\n"); -echo "\n"; -$tabindex++; - -// new line -echo (""); - -// LDAP cache timeout -echo ("". - "\n"); -$tabindex++; -echo "\n"; - -echo ("
" . _("Server address") . " *: ". - "get_ServerURL() . "\">". - ""; -echo ""; -echo "\"""; -echo "\n"; -echo "
 
". - _("UserSuffix") . ": get_Suffix('user') . "\">"; -echo ""; -echo "\"""; -echo "\n"; -echo "
". - _("GroupSuffix") . ": get_Suffix('group') . "\">"; -echo ""; -echo "\"""; -echo "\n"; -echo "
". - _("HostSuffix") . ": get_Suffix('host') . "\">"; -echo ""; -echo "\"""; -echo "\n"; -echo "
". - _("DomainSuffix") . " **: get_Suffix('domain') . "\">"; -echo ""; -echo "\"""; -echo "\n"; -echo "
". - _("TreeSuffix") . ": get_Suffix('tree') . "\">"; -echo ""; -echo "\"""; -echo "\n"; -echo "
 
". - _("Cache timeout") . ": "; -echo ""; -echo "\"""; -echo "\n"; -echo "
"); -echo ("
"); - -echo ("

"); - -echo ("
" . _("Account modules") . ""); -echo (""); - -// Account modules -echo "\n"; -echo "\n"; -echo "\n"; -echo "\n"; -echo "\n"; -$tabindex++; - -echo ("
" . _("User modules") . ": " . implode(", ", $conf->get_AccountModules('user')) . "
" . _("Group modules") . ": " . implode(", ", $conf->get_AccountModules('group')) . "
" . _("Host modules") . ": " . implode(", ", $conf->get_AccountModules('host')) . "
 
  "; -echo ""; -echo "\"""; -echo "\n"; -echo "
"); -echo ("
"); - -echo ("

"); - - -// module settings - -// get list of scopes of modules -$scopes = array(); -$mods = $conf->get_AccountModules('user'); -for ($i = 0; $i < sizeof($mods); $i++) $scopes[$mods[$i]][] = 'user'; -$mods = $conf->get_AccountModules('group'); -for ($i = 0; $i < sizeof($mods); $i++) $scopes[$mods[$i]][] = 'group'; -$mods = $conf->get_AccountModules('host'); -for ($i = 0; $i < sizeof($mods); $i++) $scopes[$mods[$i]][] = 'host'; - -// get module options -$options = getConfigOptions($scopes); -// get current setting -$old_options = $conf->get_moduleSettings(); -// get module descriptions -$moduleDescriptions = getConfigDescriptions(); - -// save scopes -$_SESSION['config_scopes'] = $scopes; - -// display module boxes -$modules = array_keys($options); -$_SESSION['config_types'] = array(); -for ($i = 0; $i < sizeof($modules); $i++) { - if (sizeof($options[$modules[$i]]) < 1) continue; - echo "
\n"; - echo "" . $moduleDescriptions['legend'][$modules[$i]] . "\n"; - $configTypes = parseHtml($modules[$i], $options[$modules[$i]], $old_options, true, $tabindex, $tabindexLink, 'config'); - $_SESSION['config_types'] = array_merge($configTypes, $_SESSION['config_types']); - echo "
\n"; - echo "
"; -} - - -echo ("
" . _("LDAP List settings") . "\n"); -echo ("\n"); - -// user list attributes -echo ("". - ""); -echo "\n"; -$tabindex++; -// group list attributes -echo ("". - ""); -echo "\n"; -$tabindex++; -// host list attributes -echo ("". - ""); -echo "\n"; -$tabindex++; - -echo ("\n"); - -// maximum list entries -echo ("". - "\n"); -$tabindex++; -echo "\n"; - -echo ("
". - _("Attributes in User List") . " *:get_listAttributes('user') . "\">"; -echo ""; -echo "\"""; -echo "\n"; -echo "
". - _("Attributes in Group List") . " *:get_listAttributes('group') . "\">"; -echo ""; -echo "\"""; -echo "\n"; -echo "
". - _("Attributes in Host List") . " **:get_listAttributes('host') . "\">"; -echo ""; -echo "\"""; -echo "\n"; -echo "
 
". - _("Maximum list entries") . " : "; -echo ""; -echo "\"""; -echo "\n"; -echo "
\n"); -echo ("
\n"); -echo ("

\n"); - -echo ("
" . _("Language settings") . "\n"); -echo ("\n"); - -// language -echo (""); -echo ("\n"); -echo "\n"; - -echo ("
" . _("Default language") . ":\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 ("\n"); -$tabindex++; -} -else -{ - echo _("Unable to load available languages. Setting English as default language. For further instructions please contact the Admin of this site."); -} -echo (""; -echo ""; -echo "\"""; -echo "\n"; -echo "
\n"); -echo ("
\n"); - -echo ("

\n"); - -// script settings -echo ("
" . _("Script settings") . "\n"); -echo ("\n"); - -echo ("". - "\n"); -$tabindex++; -echo "\n"; -echo ("". - "\n"); -$tabindex++; -echo "\n"; - -echo ("
". - _("Server of external script") . ": get_scriptServer() . "\">"; -echo ""; -echo "\"""; -echo "\n"; -echo "
". - _("Path to external script") . ": get_scriptPath() . "\">"; -echo ""; -echo "\"""; -echo "\n"; -echo "
\n"); -echo ("
\n"); - -echo ("

\n"); - -// security setings -echo ("
" . _("Security settings") . "\n"); -echo ("\n"); -// admin list -echo ("". - "\n"); -echo "\n"; -$tabindex++; - -echo ("\n"); - -// new password -echo ("". - "\n"); -$tabindex++; -echo "\n"; -// reenter password -echo ("". - "\n"); -$tabindex++; -echo ("
". - _("List of valid users") . " *: get_Adminstring() . "\">"; -echo ""; -echo "\"""; -echo "\n"; -echo "
 
". - _("New Password") . ": "; -echo ""; -echo "\"""; -echo "\n"; -echo "
". - _("Reenter Password") . ":
\n"); -echo ("
\n"); -echo ("

\n"); - - -// buttons -echo ("\n"); - -echo ""; -echo "\n"); - -echo ("
";
-	echo "";
-	$tabindex++;
-	echo "";
-	$tabindex++;
-	echo "
\n"); - -echo ("

"); - -echo ("

* = ". _("required") . "

"); -echo ("

** = ". _("required for Samba 3 accounts") . "

"); - -// password for configuration -echo ("

\n"); - -// config file -echo ("

\n"); - -// modules -echo ("

get_AccountModules('user')) . "\">

\n"); -echo ("

get_AccountModules('group')) . "\">

\n"); -echo ("

get_AccountModules('host')) . "\">

\n"); - -echo ("
\n"); -echo ("\n"); -echo ("\n"); - - -?> - diff --git a/lam/templates/config/confmodules.php b/lam/templates/config/confmodules.php deleted file mode 100644 index b439cbc0..00000000 --- a/lam/templates/config/confmodules.php +++ /dev/null @@ -1,271 +0,0 @@ -get_Passwd()) { - /** go back to login if password is invalid */ - require('conflogin.php'); - exit; -} - -// user pressed submit/abort button -if ($_POST['submit']) { - //selection ok, back to other settings - metarefresh('confmain.php?modulesback=true&moduleschanged=true'); -} -elseif ($_POST['abort']) { - // no changes - metarefresh('confmain.php?modulesback=true'); -} - -echo $_SESSION['header']; - -echo "" . _("LDAP Account Manager Configuration") . "\n"; -echo "\n"; -echo "\n"; - -echo ("

". - "\"LDAP



\n"); - -echo ("
\n"); -echo "

" . _("Module selection") . "

"; - - -$account_list = array( - array('user', _('User modules')), - array('group', _('Group modules')), - array('host', _('Host modules')) -); - -$allDependenciesOk = true; - -for ($i = 0; $i < sizeof($account_list); $i++) { - $ret = config_showAccountModules($account_list[$i][0], $account_list[$i][1]); - if (!$ret) { - $allDependenciesOk = false; - } -} - - -// submit buttons -echo "

\n"; - // disable button if there are conflicts/depends - if ($allDependenciesOk) { - echo "\n"; - } - else { - echo "\n"; - } - echo " "; - echo "\n"; -echo "

\n"; - -echo "



\n"; -echo "(*) " . _("Base module"); -// help link -echo " "; -echo "\"""; -echo "\n"; -echo "

\n"; - -echo "
\n"; -echo "\n"; -echo "\n"; - - -/** -* Displays the module selection boxes and checks if dependencies are fulfilled. -* -* @param string $scope account type -* @param string $title title for module selection (e.g. "User modules") -* @return boolean true if all dependencies are ok -*/ -function config_showAccountModules($scope, $title) { - // account modules - $selected_temp = $_SESSION['conf_' . $scope . 'modules']; - $available = array(); - $available = getAvailableModules($scope); - $selected = array(); - // only use available modules as selected - for ($i = 0; $i < sizeof($selected_temp); $i++) { - if (in_array($selected_temp[$i], $available)) $selected[] = $selected_temp[$i]; - } - $no_conflicts = true; - $no_depends = true; - $no_missing_basemodule = true; - - // remove modules from selection - if ($_POST[$scope . '_selected'] && ($_POST[$scope . '_remove'])) { - $new_selected = array(); - for ($i = 0; $i < sizeof($selected); $i++) { - if (! in_array($selected[$i], $_POST[$scope . '_selected'])) $new_selected[] = $selected[$i]; - } - $selected = $new_selected; - $_SESSION['conf_' . $scope . 'modules'] = $selected; - } - - // add modules to selection - elseif ($_POST[$scope . '_available'] && ($_POST[$scope . '_add'])) { - $new_selected = $selected; - for ($i = 0; $i < sizeof($_POST[$scope . '_available']); $i++) { - if (! in_array($_POST[$scope . '_available'][$i], $selected)) $new_selected[] = $_POST[$scope . '_available'][$i]; - } - $selected = $new_selected; - $_SESSION['conf_' . $scope . 'modules'] = $selected; - } - - // show account modules - echo "
" . $title . "\n"; - echo "\n"; - // select boxes - echo "\n"; - echo "\n"; - echo "\n"; - echo "\n"; - echo "\n"; - echo "\n"; - echo "\n"; - echo "
\n"; - echo "
\n"; - echo "" . _("Selected modules") . "\n"; - echo "\n"; - echo "
\n"; - echo "
\n"; - echo "

"; - echo ""; - echo "
"; - echo ""; - echo "

\n"; - echo "
\n"; - echo "
\n"; - echo "" . _("Available modules") . "\n"; - echo "\n"; - echo "
\n"; - echo "
\n"; - - // check dependencies - $depends = check_module_depends($selected, getModulesDependencies($scope)); - if ($depends != false) { - $no_depends = false; - echo "

\n"; - for ($i = 0; $i < sizeof($depends); $i++) { - echo "" . _("Unsolved dependency:") . " " . $depends[$i][0] . " (" . - $depends[$i][1] . ")" . "
\n"; - } - echo "

\n"; - } - - // check conflicts - $conflicts = check_module_conflicts($selected, getModulesDependencies($scope)); - if ($conflicts != false) { - $no_conflicts = false; - echo "

\n"; - for ($i = 0; $i < sizeof($conflicts); $i++) { - echo "" . _("Conflicting module:") . " " . $conflicts[$i][0] . " (" . - $conflicts[$i][1] . ")" . "
\n"; - } - echo "

\n"; - } - - // check for base module - $baseCount = 0; - for ($i = 0; $i < sizeof($selected); $i++) { - if (is_base_module($selected[$i], $scope)) { - $baseCount++; - } - } - if ($baseCount != 1) { - $no_missing_basemodule = false; - echo "

\n"; - echo "" . _("No or more than one base module selected!") . "
\n"; - echo "

\n"; - } - - echo "

\n"; - - echo "

\n"; - - return ($no_conflicts & $no_depends & $no_missing_basemodule); - -} - - -?> - - - - diff --git a/lam/templates/config/confsave.php b/lam/templates/config/confsave.php deleted file mode 100644 index 9740f24f..00000000 --- a/lam/templates/config/confsave.php +++ /dev/null @@ -1,282 +0,0 @@ -get_Passwd()) { - /** go back to login if password is invalid */ - require('conflogin.php'); - exit; -} - -echo $_SESSION['header']; - -echo "" . _("LDAP Account Manager Configuration") . "\n"; -echo "\n"; -echo "\n"; - -echo ("

". - "\"LDAP




"); - -// 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_ServerURL($serverurl)) { - echo ("" . _("Server Address is empty!") . ""); - echo ("\n


" . _("Back to preferences...") . ""); - exit; -} -if (!$conf->set_cacheTimeout($cachetimeout)) { - echo ("" . _("Cache timeout is invalid!") . ""); - echo ("\n


" . _("Back to preferences...") . ""); - exit; -} -if (!$conf->set_Adminstring($admins)) { - echo ("" . _("List of admin users is empty or invalid!") . ""); - echo ("\n


" . _("Back to preferences...") . ""); - exit; -} -if (!$conf->set_Suffix('user', $suffusers)) { - echo ("" . _("UserSuffix is invalid!") . ""); - echo ("\n


" . _("Back to preferences...") . ""); - exit; -} -if (!$conf->set_Suffix('group', $suffgroups)) { - echo ("" . _("GroupSuffix is invalid!") . ""); - echo ("\n


" . _("Back to preferences...") . ""); - exit; -} -if (!$conf->set_Suffix('host', $suffhosts)) { - echo ("" . _("HostSuffix is invalid!") . ""); - echo ("\n


" . _("Back to preferences...") . ""); - exit; -} -if (!$conf->set_Suffix('domain', $suffdomains)) { - echo ("" . _("DomainSuffix is invalid!") . ""); - echo ("\n


" . _("Back to preferences...") . ""); - exit; -} -if (!$conf->set_Suffix("tree", $sufftree)) { - echo ("" . _("TreeSuffix is invalid!") . ""); - echo ("\n


" . _("Back to preferences...") . ""); - exit; -} -if (!$conf->set_listAttributes($usrlstattr, 'user')) { - echo ("" . _("User list attributes are invalid!") . ""); - echo ("\n


" . _("Back to preferences...") . ""); - exit; -} -if (!$conf->set_listAttributes($grplstattr, 'group')) { - echo ("" . _("Group list attributes are invalid!") . ""); - echo ("\n


" . _("Back to preferences...") . ""); - exit; -} -if (!$conf->set_listAttributes($hstlstattr, 'host')) { - echo ("" . _("Host list attributes are invalid!") . ""); - echo ("\n


" . _("Back to preferences...") . ""); - exit; -} -if (!$conf->set_MaxListEntries($maxlistentries)) { - echo ("" . _("Max list entries is invalid!") . ""); - echo ("\n


" . _("Back to preferences...") . ""); - exit; -} - -if (!$conf->set_defaultLanguage($lang)) { - echo ("" . _("Language is not defined!") . ""); - echo ("\n


" . _("Back to preferences...") . ""); - exit; -} - -if (!$conf->set_scriptpath($scriptpath)) { - echo ("" . _("Script path is invalid!") . ""); - echo ("\n


" . _("Back to preferences...") . ""); - exit; -} - -if (!$conf->set_scriptserver($scriptserver)) { - echo ("" . _("Script server is invalid!") . ""); - echo ("\n


" . _("Back to preferences...") . ""); - exit; -} - -if (! $conf->set_AccountModules($_SESSION['conf_usermodules'], 'user')) { - echo ("" . _("Saving user modules failed!") . ""); - echo ("\n


" . _("Back to preferences...") . ""); - exit; -} - -if (! $conf->set_AccountModules($_SESSION['conf_groupmodules'], 'group')) { - echo ("" . _("Saving group modules failed!") . ""); - echo ("\n


" . _("Back to preferences...") . ""); - exit; -} - -if (! $conf->set_AccountModules($_SESSION['conf_hostmodules'], 'host')) { - echo ("" . _("Saving host modules failed!") . ""); - echo ("\n


" . _("Back to preferences...") . ""); - exit; -} - -// check module options -// create option array to check and save -$options = array(); -$opt_keys = array_keys($_SESSION['config_types']); -foreach ($opt_keys as $element) { - // text fields - if ($_SESSION['config_types'][$element] == "text") { - $options[$element] = array($_SESSION['config_moduleSettings'][$element]); - } - // checkboxes - elseif ($_SESSION['config_types'][$element] == "checkbox") { - if ($_SESSION['config_moduleSettings'][$element] == "on") $options[$element] = array('true'); - else $options[$element] = array('false'); - } - // dropdownbox - elseif ($_SESSION['config_types'][$element] == "select") { - $options[$element] = array($_SESSION['config_moduleSettings'][$element]); - } - // multiselect - elseif ($_SESSION['config_types'][$element] == "multiselect") { - $options[$element] = $_SESSION['config_moduleSettings'][$element]; // value is already an array - } -} - -// remove double slashes if magic quotes are on -if (get_magic_quotes_gpc() == 1) { - foreach ($opt_keys as $element) { - if (is_string($options[$element][0])) $options[$element][0] = stripslashes($options[$element][0]); - } -} - -// check options -$errors = checkConfigOptions($_SESSION['config_scopes'], $options); -// print error messages if any -if (sizeof($errors) > 0) { - for ($i = 0; $i < sizeof($errors); $i++) { - if (sizeof($errors[$i]) > 3) { // messages with additional variables - StatusMessage($errors[$i][0], $errors[$i][1], $errors[$i][2], $errors[$i][3]); - } - else { - StatusMessage($errors[$i][0], $errors[$i][1], $errors[$i][2]); - } - } - echo ("\n


" . _("Back to preferences...") . ""); - exit; -} -// save module setting -$conf->set_moduleSettings($options); - -// check if password was changed -if ($passwd1) { - if ($passwd1 != $passwd2) { - echo ("" . _("Passwords are different!") . ""); - exit; - } - // set new password - if ($passwd1 != "") { - $conf->set_Passwd($passwd1); - echo ("" . _("Password changed!") . "

"); - } -} - -// save settings and display new settings -$conf->save(); -echo ("" . _("The following settings were saved to profile:") . " " . $filename . "

"); -$conf->printconf(); -echo ("




" . _("Back to Login") . ""); - -echo(""); - -// 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_sufftree']); -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_filename']); -unset($_SESSION['conf_usermodules']); -unset($_SESSION['conf_groupmodules']); -unset($_SESSION['conf_hostmodules']); - -?> diff --git a/lam/templates/config/profmanage.php b/lam/templates/config/profmanage.php deleted file mode 100644 index fd2c5579..00000000 --- a/lam/templates/config/profmanage.php +++ /dev/null @@ -1,422 +0,0 @@ - - - - <?php - echo _("Profile management"); - ?> - - - - -

- LDAP Account Manager -

-

- -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; -} - - -// check if config.cfg is valid -if (!isset($cfg->default) && !isset($cfg->password)) { - StatusMessage("ERROR", _("Please set up your master configuration file (config/config.cfg) first!"), ""); - echo "\n\n"; - die(); -} - -?> - -
- -
- - -
-
- -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - -   - "; - echo "\"""; - echo "\n"; - ?> -
   - - -
   - - -
 
- - - - - - - - - -   - "; - echo "\"""; - echo "\n"; - ?> -
 
- - - - - - -   - "; - echo "\"""; - echo "\n"; - ?> -
 
- - - - - - - - - -   - "; - echo "\"""; - echo "\n"; - ?> -
   - - -  
 
 
- - - - - - -    - "; - echo "\"""; - echo "\n"; - ?> -
 
- - - - - - - - -   - "; - echo "\"""; - echo "\n"; - ?> -
   - - -  
-

-
-

 

- - - - - -   - -   - "> -   - "; - echo "\"""; - echo "\n"; - ?> - -
-


- - -

- -

- - - - diff --git a/lam/templates/delete.php b/lam/templates/delete.php deleted file mode 100644 index 3d283338..00000000 --- a/lam/templates/delete.php +++ /dev/null @@ -1,244 +0,0 @@ -"; - echo _("Delete Account"); - echo "\n"; - echo "\n"; - echo "\n"; - echo "
\n"; - echo "
"; - echo _('Please confirm:'); - echo "\n"; - echo "\n"; - echo "" . _("Do you really want to remove the following accounts?") . ""; - echo "

\n"; - echo "\n\n"; - echo "\n"; - echo "\n"; - } - echo "
"; - for ($i=0; $i\n"; - echo "" . _("Account name:") . " $users[$i]" . _('DN') . ": " . $_SESSION['delete_dn'][$i] . "
\n"; - echo "
\n"; - // Print delete rows from modules - echo "\n
"; - $modules = $_SESSION['config']->get_AccountModules($_GET['type']); - $values = array(); - $tabindex = 100; - $tabindexLink = 1000; - foreach ($modules as $module) { - $module = new $module($_GET['type']); - parseHtml(get_class($module), $module->display_html_delete($_POST), $values, true, $tabindex, $tabindexLink, $_GET['type']); - } - echo "
\n"; - echo "
\n"; - echo " \n"; - echo "\n"; - echo "
\n"; - echo "
\n"; - echo "\n"; - echo "\n"; -} - -if ($_POST['cancel']) { - if (isset($_SESSION['delete_dn'])) unset($_SESSION['delete_dn']); - metaRefresh("lists/list" . $_POST['type'] . "s.php"); -} - -if ($_POST['delete']) { - // Show HTML Page - echo $_SESSION['header']; - echo ""; - echo _("Delete Account"); - echo "\n"; - echo "\n"; - echo "\n"; - echo "
\n"; - echo "\n"; - echo "
"; - echo _('Deleting. Please stand by ...'); - echo "\n"; - - // Delete dns - for ($m=0; $mload_account($_SESSION['delete_dn'][$m]); - // get commands and changes of each attribute - $module = array_keys ($_SESSION['account']->module); - $attributes = array(); - $errors = array(); - // load attributes - foreach ($module as $singlemodule) { - // load changes - $temp = $_SESSION['account']->module[$singlemodule]->delete_attributes($_POST); - if (is_array($temp)) { - // merge changes - $DNs = array_keys($temp); - // *** fixme don't include references - $attributes = array_merge_recursive($temp, $attributes); - for ($i=0; $iserver(), $DNs[$i], $attributes[$DNs[$i]]['modify']); - if (!$success) { - $errors[] = array ('ERROR', sprintf(_('Was unable to modify attribtues from DN: %s.'), $DNs[$i]), ldap_error($_SESSION['ldap']->server())); - $stopprocessing = true; - } - else $_SESSION['cache']->update_cache($DNs[$i], 'modify', $attributes[$DNs[$i]]['modify']); - } - // add attributes - if (isset($attributes[$DNs[$i]]['add']) && !$stopprocessing) { - $success = @ldap_mod_add($_SESSION['ldap']->server(), $DNs[$i], $attributes[$DNs[$i]]['add']); - if (!$success) { - $errors[] = array ('ERROR', sprintf(_('Was unable to add attribtues to DN: %s.'), $DNs[$i]), ldap_error($_SESSION['ldap']->server())); - $stopprocessing = true; - } - else $_SESSION['cache']->update_cache($DNs[$i], 'add', $attributes[$DNs[$i]]['add']); - } - // removce attributes - if (isset($attributes[$DNs[$i]]['remove']) && !$stopprocessing) { - $success = @ldap_mod_del($_SESSION['ldap']->server(), $DNs[$i], $attributes[$DNs[$i]]['remove']); - if (!$success) { - $errors[] = array ('ERROR', sprintf(_('Was unable to remove attribtues from DN: %s.'), $DNs[$i]), ldap_error($_SESSION['ldap']->server())); - $stopprocessing = true; - } - else $_SESSION['cache']->update_cache($DNs[$i], 'remove', $attributes[$DNs[$i]]['remove']); - } - } - } - if (!$stopprocessing) { - foreach ($attributes as $DN) { - if (is_array($DN['lamdaemon']['command'])) $result = lamdaemon($DN['lamdaemon']['command']); - if (!is_array($result)) continue; - // check for error somewhere in lamdaemon - foreach ($result as $singleresult) { - if (is_array($singleresult)) { - if ($singleresult[0] == 'ERROR') { - $stopprocessing = true; - $temparray[0] = $singleresult[0]; - $temparray[1] = $singleresult[1]; - $temparray[2] = $singleresult[2]; - $errors[] = $temparray; - } - } - } - } - } - if (!$stopprocessing) { - $success = @ldap_delete($_SESSION['ldap']->server(), $_SESSION['delete_dn'][$m]); - if (!$success) { - $errors[] = array ('ERROR', sprintf(_('Was unable to delete DN: %s.'), $_SESSION['delete_dn'][$m]), ldap_error($_SESSION['ldap']->server())); - $stopprocessing = true; - } - else - $_SESSION['cache']->update_cache($_SESSION['delete_dn'][$m], 'delete_dn'); - } - if (!$stopprocessing) { - echo sprintf(_('Deleted DN: %s'), $_SESSION['delete_dn'][$m]) . "
\n"; - foreach ($errors as $error) StatusMessage($error[0], $error[1], $error[2]); - echo "
\n"; - } - else { - echo sprintf(_('Error while deleting DN: %s'), $_SESSION['delete_dn'][$m]) . "
\n"; - foreach ($errors as $error) StatusMessage($error[0], $error[1], $error[2]); - echo "
\n"; - } - } - echo "
\n"; - echo "
\n"; - echo "
\n"; - echo "
\n"; - echo "\n"; - echo "\n"; - -} - -?> diff --git a/lam/templates/domain.php b/lam/templates/domain.php deleted file mode 100644 index 2e217d9a..00000000 --- a/lam/templates/domain.php +++ /dev/null @@ -1,357 +0,0 @@ -get_Suffix('domain')); - // get possible suffixes - $domsuff = $_SESSION['ldap']->search_units($_SESSION['config']->get_Suffix('domain')); - if ($_GET['action'] == "edit") { - // remove "\'" - $_GET['DN'] = str_replace("\\", "", $_GET['DN']); - $_GET['DN'] = str_replace("'", "", $_GET['DN']); - // load attributes from domain - for ($i = 0; $i < sizeof($domlist); $i++) { - if ($domlist[$i]->dn == $_GET['DN']) { - $domain = $domlist[$i]; - break; - } - } - // get suffix - $tmp_arr = explode(",", $domain->dn); - array_shift($tmp_arr); - $domain_suffix = implode(",", $tmp_arr); - } - else { - $domain = new samba3domain(); - $domain_suffix = $_SESSION['config']->get_Suffix('domain'); - } - // display page - echo $_SESSION['header']; - echo "Domain Management\n"; - echo "\n"; - echo "\n"; - echo "\n"; - // print message, if needed - if ($_SESSION['domain_message']) StatusMessage("INFO", $_SESSION['domain_message'], ""); - // print fieldset - echo "
\n"; - echo "

 

\n"; - echo "
\n"; - echo "" . _("Domain Settings") . "\n"; - echo "\n"; - // domain name - echo "\n"; - echo "\n"; - echo "\n"; - echo ("\n"); - echo "\n"; - echo "\n"; - echo "\n"; - echo "\n"; - // domain SID - echo "\n"; - echo "\n"; - echo "\n"; - echo "\n"; - echo "\n"; - echo "\n"; - echo "\n"; - echo "\n"; - // next RID - echo "\n"; - echo "\n"; - echo "\n"; - echo "\n"; - echo "\n"; - // next user RID - echo "\n"; - echo "\n"; - echo "\n"; - echo "\n"; - echo "\n"; - // next group RID - echo "\n"; - echo "\n"; - echo "\n"; - echo "\n"; - echo "\n"; - echo "\n"; - echo "\n"; - echo "\n"; - // algorithmic RID base - echo "\n"; - echo "\n"; - echo "\n"; - echo "\n"; - echo "\n"; - echo "\n"; - echo "\n"; - echo "\n"; - // domain suffix - echo "\n"; - echo "\n"; - echo "\n"; - echo "\n"; - echo "\n"; - echo "\n"; - echo "\n"; - echo "\n"; - echo "
\n"; - echo "" . _("Domain name") . ":\n"; - echo "\n"; - if ($_GET['action'] == "edit") { - echo $domain->name . "\n"; - } - else echo "\n"; - echo ""); - // help link - echo ""; - echo "\"""; - echo "\n"; - echo ("
  
\n"; - echo "" . _("Domain SID") . ": \n"; - echo "\n"; - if ($_GET['action'] == "edit") { - echo $domain->SID . "\n"; - } - else echo "\n"; - echo ""; - // help link - echo ""; - echo "\"""; - echo "\n"; - echo "
  
" . _("Next RID") . ": \n"; - echo "nextRID . "\">\n"; - echo ""; - // help link - echo ""; - echo "\"""; - echo "\n"; - echo "
" . _("Next User RID") . ": \n"; - echo "nextUserRID . "\">\n"; - echo ""; - // help link - echo ""; - echo "\"""; - echo "\n"; - echo "
" . _("Next Group RID") . ": \n"; - echo "nextGroupRID . "\">\n"; - echo ""; - // help link - echo ""; - echo "\"""; - echo "\n"; - echo "
  
" . _("Algorithmic RID Base") . ": \n"; - if ($_GET['action'] == "edit") echo $domain->RIDbase . "\n"; - else echo "RIDbase . "\">\n"; - echo ""; - // help link - echo ""; - echo "\"""; - echo "\n"; - echo "
  
\n"; - echo "" . _("Suffix") . ": \n"; - echo "\n"; - echo ""; - echo ""; - // help link - echo ""; - echo "\"""; - echo "\n"; - echo "
  
\n"; - echo "
\n"; - // post DN and old RID values - echo "dn . "\">"; - echo "nextRID . "\">"; - echo "nextUserRID . "\">"; - echo "nextGroupRID . "\">"; - // edit or add operation - if ($_GET['action'] == "edit") echo ""; - else echo ""; - echo "

 

\n"; - echo "

\n"; - echo "\n"; - echo "\n"; - echo "\n"; - echo "

\n"; - echo "
\n"; - echo "\n"; - echo "\n"; -} - - -// delete domain, ask if sure -elseif ($_GET['action'] == "delete") { - // remove "\'" and make array - $DNs = str_replace("\\", "", $_GET['DN']); - $DNs = str_replace("'", "", $DNs); - $DNs = explode(";", $DNs); - // display page - echo $_SESSION['header']; - echo "Domain Management\n"; - echo "\n"; - echo "\n"; - echo "\n"; - echo "

 

\n"; - echo "
" . _("Delete domain(s)") . "\n"; - echo "

" . _("Do you really want to delete domain(s):") . "

\n"; - echo "

 

\n"; - for ($i = 0; $i < sizeof($DNs); $i++) { - echo "

" . $DNs[$i] . "

\n"; - } - echo "

 

\n"; - echo "
\n"; - echo "\n"; - echo "\n"; - echo "\n"; - echo "
\n"; - echo "
\n"; - echo "\n"; - echo "\n"; -} - - -// save domain -elseif ($_POST['sub_save']) { - echo $_SESSION['header']; - echo "Domain Management\n"; - echo "\n"; - echo "\n"; - echo "\n"; - // check input - if ($_POST['add']) { // check for existing domains - $suffix = $_SESSION['config']->get_Suffix('domain'); - $server = $_SESSION['ldap']->server; - $filter = "(|(sambasid=" . $_POST['dom_SID'] . ")(sambadomainname=" . $_POST['dom_name'] . "))"; - $sr = @ldap_search($server, $suffix, $filter, array()); - $info = @ldap_get_entries($_SESSION["ldap"]->server, $sr); - } - if ($_POST['add'] && !eregi("^[a-z0-9_\\-]+$", $_POST['dom_name'])) StatusMessage("ERROR", "", _("Domain name is invalid!")); - elseif ($_POST['add'] && !eregi("^S-[0-9]-[0-9]-[0-9]{2,2}-[0-9]*-[0-9]*-[0-9]*$", $_POST['dom_SID'])) { - StatusMessage("ERROR", "", _("Samba 3 domain SID is invalid!")); - } - elseif ($_POST['add'] && ($info["count"] > 0)) { - StatusMessage("ERROR", "", _("This Samba 3 domain is already present!")); - } - elseif ($_POST['dom_nextRID'] && !is_numeric($_POST['dom_nextRID'])) StatusMessage("ERROR", "", _("Next RID is not a number!")); - elseif ($_POST['dom_nextUserRID'] && !is_numeric($_POST['dom_nextUserRID'])) StatusMessage("ERROR", "", _("Next user RID is not a number!")); - elseif ($_POST['dom_nextGroupRID'] && !is_numeric($_POST['dom_nextGroupRID'])) StatusMessage("ERROR", "", _("Next group RID is not a number!")); - elseif ($_POST['add'] && !is_numeric($_POST['dom_RIDbase'])) StatusMessage("ERROR", "", _("Algorithmic RID base is not a number!")); - // edit entry - elseif ($_POST['edit'] == "yes") { - $success = true; - // change attributes - $attr = array(); - if ($_POST['dom_nextRID'] != $_POST['dom_oldnextRID']) $attr['sambaNextRid'] = $_POST['dom_nextRID']; - if ($_POST['dom_nextUserRID'] != $_POST['dom_oldnextUserRID']) $attr['sambaNextUserRid'] = $_POST['dom_nextUserRID']; - if ($_POST['dom_nextGroupRID'] != $_POST['dom_oldnextGroupRID']) $attr['sambaNextGroupRid'] = $_POST['dom_nextGroupRID']; - if (sizeof($attr) > 0) $success = ldap_modify($_SESSION['ldap']->server(), $_POST['dom_DN'], $attr); - // change suffix - $RDN = explode(",", $_POST['dom_DN']); - $RDN = $RDN[0]; - $newDN = $RDN . "," . $_POST['dom_suffix']; - if ($_POST['dom_DN'] != $newDN) { - $success = ldap_rename($_SESSION['ldap']->server(), $_POST['dom_DN'], $RDN, $_POST['dom_suffix'], true); - } - if ($success) StatusMessage("INFO", _("Domain has been modified."), $_POST['dom_DN']); - else StatusMessage("ERROR", "", _("Failed to modify domain!")); - } - // add entry - else { - $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['ldap']->server(), $DN, $attr)) { - StatusMessage("INFO", "Domain has been created.", $DN); - } - else StatusMessage("ERROR", "", _("Failed to add domain!") . "\n
" . ldap_error($_SESSION['ldap']->server())); - } - echo "

 

\n"; - echo "

" . _("Back to domain list") . "

\n"; - echo "\n"; - echo "\n"; -} - - -// back to list -elseif ($_POST['sub_back']) { - metaRefresh("lists/listdomains.php"); -} - - -// delete domain, user was sure -elseif ($_POST['sub_delete']) { - $DNs = explode(";", $_POST['delDN']); - // display page - echo $_SESSION['header']; - echo "Domain Management\n"; - echo "\n"; - echo "\n"; - echo "\n"; - // delete DNs - for ($i = 0; $i < sizeof($DNs); $i++) { - if (ldap_delete($_SESSION['ldap']->server(), $DNs[$i])) StatusMessage("INFO", _("Domain deleted successfully."), $DNs[$i]); - else StatusMessage("ERROR", _("Unable to delete domain!"), $DNs[$i]); - } - echo "

 

\n"; - echo "

" . _("Back to domain list") . "

\n"; - echo "\n"; - echo "\n"; -} - -?> diff --git a/lam/templates/help.php b/lam/templates/help.php deleted file mode 100644 index b95ceb75..00000000 --- a/lam/templates/help.php +++ /dev/null @@ -1,183 +0,0 @@ - - LDAP Account Manager Help Center - - - - - - -" . $helpEntry['Headline'] . "

\n"; - $format = "

" . $helpEntry['Text'] . "

\n"; - array_unshift($helpVariables,$format); - call_user_func_array("printf",$helpVariables); - if(is_array($helpArray['SeeAlso'])) { - while($current = current($helpEntry["SeeAlso"])) - { - echo '

' . (( isset($current['link'])) ? '' : '') . _('See also') . ': ' . $current['text'] . (( isset($current['link'])) ? '' : '') . '

\n'; - next($helpEntry["SeeAlso"]); - } - } - echoHTMLFoot(); - } -} - -/* If no help number was submitted print error message */ -if(!isset($_GET['HelpNumber'])) -{ - $errorMessage = "Sorry no help number submitted."; - echoHTMLHead(); - statusMessage("ERROR","",$errorMessage); - echoHTMLFoot(); - exit; -} - -$helpEntry = array(); - -if(isset($_GET['module'])) { - include_once("../lib/modules.inc"); - if(isset($_GET['scope'])) { - $helpEntry = getHelp($_GET['module'],$_GET['HelpNumber'],$_GET['scope']); - } - else { - $helpEntry = getHelp($_GET['module'],$_GET['HelpNumber']); - } - if(!$helpEntry) { - $variables = array(); - array_push($variables,$_GET['HelpNumber']); - array_push($variables,$_GET['module']); - $errorMessage = _("Sorry this help id ({bold}%s{endbold}) is not available for this module ({bold}%s{endbold})."); - echoHTMLHead(); - statusMessage("ERROR","",$errorMessage,$variables); - echoHTMLFoot(); - exit; - } -} -else { - /* If submitted help number is not in help/help.inc print error message */ - if(!array_key_exists($_GET['HelpNumber'],$helpArray)) - { - $variables = array(); - array_push($variables,$_GET['HelpNumber']); - $errorMessage = _("Sorry this help number ({bold}%d{endbold}) is not available."); - echoHTMLHead(); - statusMessage("ERROR","",$errorMessage,$variables); - echoHTMLFoot(); - exit; - } - else { - $helpEntry = $helpArray[$_GET['HelpNumber']]; - } -} - -$i = 1; -$moreVariables = true; -$helpVariables = array(); -while($moreVariables) { - if(isset($_GET['var' . $i])) { - array_push($helpVariables,$_GET['var' . $i]); - $i++; - } - else { - $moreVariables = false; - } -} - -displayHelp($helpEntry,$helpVariables); - -?> \ No newline at end of file diff --git a/lam/templates/initsuff.php b/lam/templates/initsuff.php deleted file mode 100644 index b7919a8f..00000000 --- a/lam/templates/initsuff.php +++ /dev/null @@ -1,191 +0,0 @@ -server, $new_suff[$i], "", array()); - $res = @ldap_get_entries($_SESSION['ldap']->server, $info); - if ($res) continue; - $suff = $new_suff[$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['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['ldap']->server(), $dn, $attr)) { - // check if we have to add parent entries - if (ldap_errno($_SESSION['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['ldap']->server, $subsuffs[$k], "", array()); - $res = @ldap_get_entries($_SESSION['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['ldap']->server(), $dn, $attr)) { - $fail[] = $suff; - $error[] = ldap_error($_SESSION['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['ldap']->server(), $dn, $attr)) { - $fail[] = $suff; - $error[] = ldap_error($_SESSION['ldap']->server()); - break; - } - } - } - } - } - else { - $fail[] = $suff; - $error[] = ldap_error($_SESSION['ldap']->server()); - } - } - } - } - } - echo $_SESSION['header']; - echo "initsuff\n"; - echo "\n"; - echo "\n\n"; - // print error/success messages - if ($_POST['add_suff']) { - if (sizeof($fail) > 0) { - // print error messages - for ($i = 0; $i < sizeof($fail); $i++) { - StatusMessage("ERROR", _("Failed to create entry!") . "
" . $error[$i], $fail[$i]); - } - echo "\n"; - } - else { - // print success message - StatusMessage("INFO", "", _("All changes were successful.")); - echo "\n"; - } - } - else { - // no suffixes were created - StatusMessage("INFO", "", _("No changes were made.")); - echo "\n"; - } - exit; -} - -// first show of page -$new_suff = $_GET['suffs']; -$new_suff = str_replace("\\", "", $new_suff); -$new_suff = str_replace("'", "", $new_suff); -$new_suff = explode(";", $new_suff); - -echo $_SESSION['header']; -echo "initsuff\n"; -echo "\n"; -echo "\n"; - echo "

 

\n"; - echo "

" . _("The following suffix(es) are missing in LDAP. LAM can create them for you.") . "

\n"; - echo "

 

\n"; - // print missing suffixes - for ($i = 0; $i < sizeof($new_suff); $i++) { - echo "

" . $new_suff[$i] . "

\n"; - } - echo "

 

\n"; - echo "
\n"; - echo "\n"; - echo ""; - echo ""; - echo "
\n"; -echo "\n"; -?> diff --git a/lam/templates/lists/listdomains.php b/lam/templates/lists/listdomains.php deleted file mode 100644 index adea722a..00000000 --- a/lam/templates/lists/listdomains.php +++ /dev/null @@ -1,222 +0,0 @@ -listdomains\n"; -echo "\n"; -echo "\n"; - -listPrintJavaScript(); - -// get current page -if (isset($_GET["page"])) $page = $_GET["page"]; -else $page = 1; - -// take maximum count of domain entries shown on one page out of session -if ($_SESSION["config"]->get_MaxListEntries() <= 0) - $max_page_entries = 10; // default setting, if not yet set -else - $max_page_entries = $_SESSION["config"]->get_MaxListEntries(); - - -// generate attribute and description tables -$attr_array = array(); // list of LDAP attributes to show -$desc_array = array(); // list of descriptions for the attributes -$attr_array[] = "sambaDomainName"; -$attr_array[] = "sambaSID"; -$attr_array[] = "dn"; -$desc_array[] = strtoupper(_("Domain name")); -$desc_array[] = strtoupper(_("Domain SID")); -$desc_array[] = "DN"; - -if (isset($_GET["sort"])) $sort = $_GET["sort"]; -else $sort = strtolower($attr_array[0]); - -// check search suffix -if (isset($_POST['suffix'])) $suffix = $_POST['suffix']; // new suffix selected via combobox -elseif (isset($_SESSION[$scope . '_suffix'])) $suffix = $_SESSION[$scope . '_suffix']; // old suffix from session -else $suffix = $_SESSION["config"]->get_Suffix($scope); // default suffix - -$refresh = true; -if (isset($_GET['norefresh'])) $refresh = false; -if (isset($_POST['refresh'])) $refresh = true; - -if ($refresh) { - // configure search filter - $filter = "(objectClass=sambaDomain)"; - $attrs = $attr_array; - $sr = @ldap_search($_SESSION["ldap"]->server(), $suffix, $filter, $attrs); - if (ldap_errno($_SESSION["ldap"]->server()) == 4) { - StatusMessage("WARN", _("LDAP sizelimit exceeded, not all entries are shown."), _("See README.openldap.txt to solve this problem.")); - } - if ($sr) { - $info = ldap_get_entries($_SESSION["ldap"]->server, $sr); - ldap_free_result($sr); - if ($info["count"] == 0) StatusMessage("WARN", "", _("No Samba domains found!")); - // delete first array entry which is "count" - unset($info['count']); - // sort rows by sort column ($sort) - $info = listSort($sort, $attr_array, $info); - } - else StatusMessage("ERROR", _("LDAP Search failed! Please check your preferences."), _("No Samba domains found!")); -} -// use search result from session -else { - if (sizeof($info) == 0) StatusMessage("WARN", "", _("No Samba domains found!")); - // sort rows by sort column ($sort) - if ($info) $info = listSort($sort, $attr_array, $info); -} - -echo ("
\n"); - -// draw navigation bar if domain accounts were found -if (sizeof($info) > 0) { -listDrawNavigationBar(sizeof($info), $max_page_entries, $page, $sort, '', "domain", _("%s Samba domain(s) found")); -echo ("
\n"); -} - -// print domain table header -echo "\n"; -echo ""; -// table header -for ($k = 0; $k < sizeof($desc_array); $k++) { - if (strtolower($attr_array[$k]) == $sort) { - echo ""; - } - else echo ""; -} -echo "\n"; - -// calculate which rows to show -$table_begin = ($page - 1) * $max_page_entries; -if (($page * $max_page_entries) > sizeof($info)) $table_end = sizeof($info); -else $table_end = ($page * $max_page_entries); - -// print domain list -for ($i = $table_begin; $i < $table_end; $i++) { - echo("" . - " " . - " "); - for ($k = 0; $k < sizeof($attr_array); $k++) { - echo (""); - } - echo("\n"); -} -echo ("
" . $desc_array[$k] . "" . $desc_array[$k] . "
" . _("Edit") . ""); - // print all attribute entries seperated by "; " - if (sizeof($info[$i][strtolower($attr_array[$k])]) > 0) { - // delete first array entry which is "count" - if (is_array($info[$i][strtolower($attr_array[$k])])) unset($info[$i][strtolower($attr_array[$k])]['count']); - if (is_array($info[$i][strtolower($attr_array[$k])])) echo implode("; ", $info[$i][strtolower($attr_array[$k])]); - else echo $info[$i][strtolower($attr_array[$k])]; - } - echo ("
"); - -echo ("
"); - -// draw navigation bar if domain accounts were found -if (sizeof($info) > 0) { -listDrawNavigationBar(sizeof($info), $max_page_entries, $page, $sort, '', "domain", _("%s Samba domain(s) found")); -echo ("
\n"); -} - -if ($refresh) { - // generate list of possible suffixes - $units = $_SESSION['ldap']->search_units($_SESSION["config"]->get_Suffix($scope)); -} - -// print combobox with possible sub-DNs -listShowOUSelection($units, $suffix); - -echo ("

\n"); -echo ("\n"); -if (sizeof($info) > 0) echo ("\n"); -echo ("

\n"); - -echo ("
\n"); -echo "\n"; - - - -// save variables to session -$_SESSION[$scope . 'info'] = $info; -$_SESSION[$scope . '_units'] = $units; -$_SESSION[$scope . '_suffix'] = $suffix; - -?> diff --git a/lam/templates/lists/listgroups.php b/lam/templates/lists/listgroups.php deleted file mode 100644 index d241d28e..00000000 --- a/lam/templates/lists/listgroups.php +++ /dev/null @@ -1,261 +0,0 @@ -listgroups\n"; -echo "\n"; -echo "\n"; - -listPrintJavaScript(); - -// generate attribute-description table -$temp_array = listGetAttributeDescriptionList($scope); -$attr_array = array_keys($temp_array); // list of LDAP attributes to show -$desc_array = array_values($temp_array); // list of descriptions for the attributes - -// get current page -if (isset($_GET["page"])) $page = $_GET["page"]; -else $page = 1; - -// take maximum count of group entries shown on one page out of session -if ($_SESSION["config"]->get_MaxListEntries() <= 0) - $max_page_entries = 10; // default setting, if not yet set -else - $max_page_entries = $_SESSION["config"]->get_MaxListEntries(); - -// get sorting column -if (isset($_GET["sort"])) $sort = $_GET["sort"]; -else $sort = strtolower($attr_array[0]); - -// check search suffix -if ($_POST['suffix']) $suffix = $_POST['suffix']; // new suffix selected via combobox -elseif ($_SESSION[$scope . '_suffix']) $suffix = $_SESSION[$scope . '_suffix']; // old suffix from session -else $suffix = $_SESSION["config"]->get_Suffix($scope); // default suffix - -$refresh = true; -if (isset($_GET['norefresh'])) $refresh = false; -if (isset($_POST['refresh'])) $refresh = true; - -if ($refresh) { - // configure search filter - $module_filter = get_ldap_filter($scope); // basic filter is provided by modules - $filter = "(&" . $module_filter . ")"; - $attrs = $attr_array; - $sr = @ldap_search($_SESSION["ldap"]->server(), $suffix, $filter, $attrs); - if (ldap_errno($_SESSION["ldap"]->server()) == 4) { - StatusMessage("WARN", _("LDAP sizelimit exceeded, not all entries are shown."), _("See README.openldap.txt to solve this problem.")); - } - if ($sr) { - $info = ldap_get_entries($_SESSION["ldap"]->server, $sr); - ldap_free_result($sr); - // delete first array entry which is "count" - unset($info['count']); - // save position in original $info - for ($i = 0; $i < sizeof($info); $i++) $info[$i]['LAM_ID'] = $i; - // save results - $_SESSION[$scope . 'info'] = $info; - } - else { - $info = array(); - $_SESSION[$scope . 'info'] = array(); - StatusMessage("ERROR", _("LDAP Search failed! Please check your preferences."), _("No groups found!")); - } -} - -$filter = listBuildFilter($attr_array); -$info = listFilterAccounts($info, $filter); -if (sizeof($info) == 0) StatusMessage("WARN", "", _("No groups found!")); -// sort rows by sort column ($sort) -if ($info) { - $info = listSort($sort, $attr_array, $info); -} - -// build filter URL -$searchFilter = array(); -$filterAttributes = array_keys($filter); -for ($i = 0; $i < sizeof($filterAttributes); $i++) { - $searchFilter[] = "filter" . $filterAttributes[$i] . "=" . $filter[$filterAttributes[$i]]['original']; -} -if (sizeof($searchFilter) > 0) { - $searchFilter = "&" . implode("&", $searchFilter); -} -else { - $searchFilter = ""; -} - -echo ("
\n"); - -// draw navigation bar if group accounts were found -if (sizeof($info) > 0) { -listDrawNavigationBar(sizeof($info), $max_page_entries, $page, $sort, $searchFilter, $scope, _("%s group(s) found")); -echo ("
"); -} - -// account table head -listPrintTableHeader($scope, $searchFilter, $desc_array, $attr_array, $_POST, $sort); - -// calculate which rows to show -$table_begin = ($page - 1) * $max_page_entries; -if (($page * $max_page_entries) > sizeof($info)) $table_end = sizeof($info); -else $table_end = ($page * $max_page_entries); - -if (sizeof($info) > 0) { - // print group list - for ($i = $table_begin; $i < $table_end; $i++) { - echo("\n"); - if (isset($_GET['selectall'])) { - echo " \n"; - } - else { - echo " \n"; - } - echo (" " . _("Edit") . "\n"); - for ($k = 0; $k < sizeof($attr_array); $k++) { - echo (""); - // print all attribute entries seperated by "; " - $attrName = strtolower($attr_array[$k]); - if (isset($info[$i][$attrName]) && sizeof($info[$i][$attrName]) > 0) { - // delete first array entry which is "count" - if (is_array($info[$i][$attrName])) unset($info[$i][$attrName]['count']); - // generate links for group members - if ($attrName == "memberuid") { - // sort array - sort($info[$i][$attrName]); - // make a link for each member of the group - $linklist = array(); - for ($d = 0; $d < sizeof($info[$i][$attrName]); $d++) { - $user = $info[$i][$attrName][$d]; // user name - $linklist[$d] = "" . $user . ""; - } - echo implode("; ", $linklist); - } - // print all other attributes - else { - if (is_array($info[$i][$attrName])) { - // delete "count" entry - unset($info[$i][$attrName]['count']); - // sort array - sort($info[$i][$attrName]); - echo implode("; ", $info[$i][$attrName]); - } - else echo $info[$i][$attrName]; - } - } - echo ("\n"); - } - echo("\n"); - } - // display select all link - $colspan = sizeof($attr_array) + 1; - echo "\n"; - echo "\"select\n"; - echo " " . - "" . _("Select all") . "\n"; - echo "\n"; -} -echo (""); -echo ("
"); - -// draw navigation bar if group accounts were found -if (sizeof($info) > 0) { -listDrawNavigationBar(sizeof($info), $max_page_entries, $page, $sort, $searchFilter, $scope, _("%s group(s) found")); -echo ("
\n"); -} - -if ($refresh) { - // generate list of possible suffixes - $units = $_SESSION['ldap']->search_units($_SESSION["config"]->get_Suffix($scope)); -} - -// print combobox with possible sub-DNs -listShowOUSelection($units, $suffix); - -echo ("\n"); -if (sizeof($info) > 0) { - echo ("\n"); - echo ("


\n"); - echo "
PDF\n"; - echo ("" . _('PDF structure') . ":      \n"; - echo ("\n"); - echo " "; - echo ("\n"); - echo "
"; -} - -echo ("
\n"); -echo "\n"; - -// save variables to session -$_SESSION[$scope . '_units'] = $units; -$_SESSION[$scope . '_suffix'] = $suffix; - -?> diff --git a/lam/templates/lists/listhosts.php b/lam/templates/lists/listhosts.php deleted file mode 100644 index c740068b..00000000 --- a/lam/templates/lists/listhosts.php +++ /dev/null @@ -1,246 +0,0 @@ -listhosts\n"; -echo "\n"; -echo "\n"; - -listPrintJavaScript(); - -// generate attribute-description table -$temp_array = listGetAttributeDescriptionList($scope); -$attr_array = array_keys($temp_array); // list of LDAP attributes to show -$desc_array = array_values($temp_array); // list of descriptions for the attributes - -// get current page -if (isset($_GET["page"])) $page = $_GET["page"]; -else $page = 1; - -// take maximum count of host entries shown on one page out of session -if ($_SESSION["config"]->get_MaxListEntries() <= 0) - $max_page_entries = 10; // default setting, if not yet set -else - $max_page_entries = $_SESSION["config"]->get_MaxListEntries(); - -// get sorting column -if (isset($_GET["sort"])) $sort = $_GET["sort"]; -else $sort = strtolower($attr_array[0]); - -// check search suffix -if ($_POST['suffix']) $suffix = $_POST['suffix']; // new suffix selected via combobox -elseif ($_SESSION[$scope . '_suffix']) $suffix = $_SESSION[$scope . '_suffix']; // old suffix from session -else $suffix = $_SESSION["config"]->get_Suffix($scope); // default suffix - -$refresh = true; -if (isset($_GET['norefresh'])) $refresh = false; -if (isset($_POST['refresh'])) $refresh = true; - -if ($refresh) { - // configure search filter - $module_filter = get_ldap_filter("host"); // basic filter is provided by modules - $filter = "(&" . $module_filter . ")"; - $attrs = $attr_array; - $sr = @ldap_search($_SESSION["ldap"]->server(), $suffix, $filter, $attrs); - if (ldap_errno($_SESSION["ldap"]->server()) == 4) { - StatusMessage("WARN", _("LDAP sizelimit exceeded, not all entries are shown."), _("See README.openldap.txt to solve this problem.")); - } - if ($sr) { - $info = ldap_get_entries($_SESSION["ldap"]->server, $sr); - ldap_free_result($sr); - // delete first array entry which is "count" - unset($info['count']); - // save position in original $info - for ($i = 0; $i < sizeof($info); $i++) $info[$i]['LAM_ID'] = $i; - // save results - $_SESSION[$scope . 'info'] = $info; - } - else { - $info = array(); - $_SESSION[$scope . 'info'] = array(); - StatusMessage("ERROR", _("LDAP Search failed! Please check your preferences."), _("No hosts found!")); - } -} - -$filter = listBuildFilter($attr_array); -$info = listFilterAccounts($info, $filter); -if (sizeof($info) == 0) StatusMessage("WARN", "", _("No hosts found!")); -// sort rows by sort column ($sort) -if ($info) { - $info = listSort($sort, $attr_array, $info); -} - -// build filter URL -$searchFilter = array(); -$filterAttributes = array_keys($filter); -for ($i = 0; $i < sizeof($filterAttributes); $i++) { - $searchFilter[] = "filter" . $filterAttributes[$i] . "=" . $filter[$filterAttributes[$i]]['original']; -} -if (sizeof($searchFilter) > 0) { - $searchFilter = "&" . implode("&", $searchFilter); -} -else { - $searchFilter = ""; -} - -echo ("
\n"); - -// draw navigation bar if host accounts were found -if (sizeof($info) > 0) { -listDrawNavigationBar(sizeof($info), $max_page_entries, $page, $sort, $searchFilter, "host", _("%s host(s) found")); -echo ("
\n"); -} - -// account table head -listPrintTableHeader("host", $searchFilter, $desc_array, $attr_array, $_POST, $sort); - -// calculate which rows to show -$table_begin = ($page - 1) * $max_page_entries; -if (($page * $max_page_entries) > sizeof($info)) $table_end = sizeof($info); -else $table_end = ($page * $max_page_entries); - -if (sizeof($info) > 0) { - // print host list - for ($i = $table_begin; $i < $table_end; $i++) { - echo("\n"); - if (isset($_GET['selectall'])) { - echo " \n"; - } - else { - echo " \n"; - } - echo (" " . _("Edit") . "\n"); - for ($k = 0; $k < sizeof($attr_array); $k++) { - echo (""); - // print all attribute entries seperated by "; " - $attrName = strtolower($attr_array[$k]); - if (isset($info[$i][$attrName]) && sizeof($info[$i][$attrName]) > 0) { - // delete "count" entry - unset($info[$i][$attrName]['count']); - if (is_array($info[$i][$attrName])) { - // sort array - sort($info[$i][$attrName]); - echo implode("; ", $info[$i][$attrName]); - } - else echo $info[$i][$attrName]; - } - echo ("\n"); - } - echo("\n"); - } - // display select all link - $colspan = sizeof($attr_array) + 1; - echo "\n"; - echo "\"select\n"; - echo " " . - "" . _("Select all") . "\n"; - echo "\n"; -} -echo (""); - -echo ("
"); - -// draw navigation bar if host accounts were found -if (sizeof($info) > 0) { -listDrawNavigationBar(sizeof($info), $max_page_entries, $page, $sort, $searchFilter, "host", _("%s host(s) found")); -echo ("
\n"); -} - -if ($refresh) { - // generate list of possible suffixes - $units = $_SESSION['ldap']->search_units($_SESSION["config"]->get_Suffix($scope)); -} - -// print combobox with possible sub-DNs -listShowOUSelection($units, $suffix); - -// add/delete/PDF buttons -echo ("\n"); -if (sizeof($info) > 0) { - echo ("\n"); - echo ("


\n"); - echo "
PDF\n"; - echo ("" . _('PDF structure') . ":      \n"; - echo ("\n"); - echo " "; - echo ("\n"); - echo "
"; -} - -echo ("
\n"); -echo "\n"; - -// save variables to session -$_SESSION[$scope . '_units'] = $units; -$_SESSION[$scope . '_suffix'] = $suffix; - -?> diff --git a/lam/templates/lists/listusers.php b/lam/templates/lists/listusers.php deleted file mode 100644 index 650176f9..00000000 --- a/lam/templates/lists/listusers.php +++ /dev/null @@ -1,309 +0,0 @@ -get_Suffix('group'); - $filter = "objectClass=posixGroup"; - $attrs = array("cn", "gidNumber"); - $sr = @ldap_search($_SESSION["ldap"]->server(), $grp_suffix, $filter, $attrs); - if ($sr) { - $info = @ldap_get_entries($_SESSION["ldap"]->server(), $sr); - unset($info['count']); // delete count entry - for ($i = 0; $i < sizeof($info); $i++) { - $trans_primary_hash[$info[$i]['gidnumber'][0]] = $info[$i]['cn'][0]; - } - $_SESSION['trans_primary_hash'] = $trans_primary_hash; - } -} - - -if (isset($_SESSION[$scope . 'info'])) $info = $_SESSION[$scope . 'info']; -if (isset($_SESSION[$scope . '_units'])) $units = $_SESSION[$scope . '_units']; - -listDoPost($scope); - -echo $_SESSION['header']; - -echo "listusers\n"; -echo "\n"; -echo "\n"; - -listPrintJavaScript(); - -// get current page -if (isset($_GET["page"])) $page = $_GET["page"]; -else $page = 1; - -// take maximum count of user entries shown on one page out of session -if ($_SESSION["config"]->get_MaxListEntries() <= 0) { - $max_page_entries = 10; // default setting, if not yet set -} -else $max_page_entries = $_SESSION["config"]->get_MaxListEntries(); - -// generate attribute-description table -$temp_array = listGetAttributeDescriptionList($scope); -$attr_array = array_keys($temp_array); // list of LDAP attributes to show -$desc_array = array_values($temp_array); // list of descriptions for the attributes - -if (isset($_GET["sort"])) $sort = $_GET["sort"]; -else $sort = strtolower($attr_array[0]); - -// check search suffix -if (isset($_POST['suffix'])) $suffix = $_POST['suffix']; // new suffix selected via combobox -elseif (isset($_SESSION[$scope . '_suffix'])) $suffix = $_SESSION[$scope . '_suffix']; // old suffix from session -else $suffix = $_SESSION["config"]->get_Suffix($scope); // default suffix - - -// configure search filter for LDAP -$module_filter = get_ldap_filter($scope); // basic filter is provided by modules -$filter = "(&" . $module_filter . ")"; - -if ($refresh) { - $attrs = $attr_array; - $sr = @ldap_search($_SESSION["ldap"]->server(), $suffix, $filter, $attrs); - if (ldap_errno($_SESSION["ldap"]->server()) == 4) { - StatusMessage("WARN", _("LDAP sizelimit exceeded, not all entries are shown."), _("See README.openldap.txt to solve this problem.")); - } - if ($sr) { - $info = ldap_get_entries ($_SESSION["ldap"]->server, $sr); - ldap_free_result ($sr); - // delete first array entry which is "count" - unset($info['count']); - // save position in original $info - for ($i = 0; $i < sizeof($info); $i++) $info[$i]['LAM_ID'] = $i; - // save results - $_SESSION[$scope . 'info'] = $info; - } - else { - $_SESSION[$scope . 'info'] = array(); - $info = array(); - StatusMessage("ERROR", - _("LDAP Search failed! Please check your preferences."), - _("No users found!")); - } -} - -$filter = listBuildFilter($attr_array); -$info = listFilterAccounts($info, $filter); -if (sizeof($info) == 0) StatusMessage("WARN", "", _("No users found!")); -// sort rows by sort column ($sort) -if ($info) { - $info = listSort($sort, $attr_array, $info); -} - -// build filter URL -$searchFilter = array(); -$filterAttributes = array_keys($filter); -for ($i = 0; $i < sizeof($filterAttributes); $i++) { - $searchFilter[] = "filter" . $filterAttributes[$i] . "=" . $filter[$filterAttributes[$i]]['original']; -} -if (sizeof($searchFilter) > 0) { - $searchFilter = "&" . implode("&", $searchFilter); -} -else { - $searchFilter = ""; -} - -echo ("
\n"); - -// display table only if users exist in LDAP -if (sizeof($info) != 0) { - // create navigation bar on top of user table - listDrawNavigationBar(sizeof($info), $max_page_entries, $page, $sort, - $searchFilter . "&trans_primary=" . $trans_primary, $scope, _("%s user(s) found")); - echo ("
"); -} - -// account table head -listPrintTableHeader($scope, $searchFilter . "&trans_primary=" . $trans_primary, $desc_array, $attr_array, $_POST, $sort); - -// calculate which rows to show -$table_begin = ($page - 1) * $max_page_entries; -if (($page * $max_page_entries) > sizeof($info)) $table_end = sizeof($info); -else $table_end = ($page * $max_page_entries); - -if (sizeof($info) != 0) { - // translate GIDs and resort array if selected - if ($trans_primary == "on") { - // translate GIDs - for ($i = 0; $i < sizeof($info); $i++) { - if (isset($trans_primary_hash[$info[$i]['gidnumber'][0]])) { - $info[$i]['gidnumber'][0] = $trans_primary_hash[$info[$i]['gidnumber'][0]]; - } - } - // resort if needed - if ($sort == "gidnumber") { - $info = listSort($sort, $attr_array, $info); - } - } - // print user list - for ($i = $table_begin; $i < $table_end; $i++) { - echo("\n"); - // checkboxes if selectall = "yes" - if (isset($_GET['selectall'])) { - echo "\n\n\n"; - } - else { - echo "\n\n\n"; - } - echo ("\n" . - _("Edit") . "\n\n"); - for ($k = 0; $k < sizeof($attr_array); $k++) { - echo ("\n"); - // print attribute values - $attrName = strtolower($attr_array[$k]); - if (isset($info[$i][$attrName]) && sizeof($info[$i][$attrName]) > 0) { - if (is_array($info[$i][$attrName])) { - // delete first array entry which is "count" - unset($info[$i][$attrName]['count']); - // sort array - sort($info[$i][$attrName]); - // print all attribute entries seperated by "; " - echo implode("; ", $info[$i][$attrName]) . "\n"; - } - else echo $info[$i][$attrName] . "\n"; - } - echo ("\n"); - } - echo("\n"); - } - // display select all link - $colspan = sizeof($attr_array) + 1; - echo "\n"; - echo "\"select\n"; - echo " " . - "" . _("Select all") . "\n"; - echo "\n"; -} -echo ("\n"); - -echo ("
"); -if (sizeof($info) != 0) { - listDrawNavigationBar(sizeof($info), $max_page_entries, $page, $sort, - $searchFilter . "&trans_primary=" . $trans_primary, $scope, _("%s user(s) found")); - echo ("
"); -} - -if ($refresh) { - // generate list of possible suffixes - $units = $_SESSION['ldap']->search_units($_SESSION["config"]->get_Suffix($scope)); -} - -// print combobox with possible sub-DNs -listShowOUSelection($units, $suffix); - -// show translate GID to group name box if there is a column with gidnumber -if (in_array("gidnumber", $attr_array)) { - echo "

\n"; - echo "" . _("Translate GID number to group name") . ": "; - if ($trans_primary == "on") { - echo ""; - } - else echo ""; - echo ("  "); - echo "

\n"; -} - -echo ("

 

\n"); - -// new/delete/PDF buttons -echo ("\n"); -if (sizeof($info) != 0) { - echo ("\n"); - echo ("


\n"); - echo "
PDF\n"; - echo ("" . _('PDF structure') . ":      \n"; - echo ("\n"); - echo " "; - echo ("\n"); - echo "
"; -} - -echo ("

 

\n"); - -echo ("
\n"); -echo "\n"; - - -// save variables to session -$_SESSION[$scope . '_units'] = $units; -$_SESSION[$scope . '_suffix'] = $suffix; - -?> diff --git a/lam/templates/lists/userlink.php b/lam/templates/lists/userlink.php deleted file mode 100644 index 0f9bd681..00000000 --- a/lam/templates/lists/userlink.php +++ /dev/null @@ -1,90 +0,0 @@ -userlink\n"; - echo "\n"; - echo "\n"; - StatusMessage("ERROR", "", _("This user was not found!") . " (" . $user . ")"); - echo "

 

"; - echo "

" . _("Back to group list") . "

"; - echo ("\n"); -} - - -/** -* Searches LDAP for a specific user name (uid attribute) and returns its DN entry -* -* @param string $name user name -* @return string DN -*/ -function search_username($name) { - $filter = "(uid=$name)"; - $attrs = array(); - $sr = @ldap_search($_SESSION['ldap']->server, $_SESSION['config']->get_Suffix('user'), $filter, $attrs); - if ($sr) { - $info = ldap_get_entries($_SESSION['ldap']->server, $sr); - // return only first DN entry - $ret = $info[0]["dn"]; - ldap_free_result($sr); - return $ret; - } - else return ""; -} - -?> diff --git a/lam/templates/login.php b/lam/templates/login.php deleted file mode 100644 index 6f7bceeb..00000000 --- a/lam/templates/login.php +++ /dev/null @@ -1,381 +0,0 @@ -get_defaultLanguage(); - - $current_language = explode(":",$_SESSION['language']); - $_SESSION['header'] = "\n"; - $_SESSION['header'] .= "\n\n"; - $_SESSION['header'] .= "\n\n"; - $_SESSION['header'] .= "\n"; - $_SESSION['header'] .= "\n "; - - // loading available languages from language.conf file - $languagefile = "../config/language"; - if(is_file($languagefile) == True) - { - $file = fopen($languagefile, "r"); - $i = 0; - while(!feof($file)) - { - $line = fgets($file, 1024); - if($line == "" || $line == "\n" || $line[0] == "#") continue; // ignore comment and empty lines - $value = explode(":", $line); - $languages[$i]["link"] = $value[0] . ":" . $value[1]; - $languages[$i]["descr"] = $value[2]; - if(rtrim($line) == $_SESSION["language"]) - { - $languages[$i]["default"] = "YES"; - } - else - { - $languages[$i]["default"] = "NO"; - } - $i++; - } - fclose($file); - } - - $profiles = getConfigProfiles(); - - setlanguage(); // setting correct language - - echo $_SESSION["header"]; - ?> - LDAP Account Manager -Login- - - - - \n"; - echo "\n"; - echo "\n"; - ?> -

- LDAP Account Manager -

- - - - -
- -
-


- 4.3."); - echo "

"; - } - // check if PHP has LDAP support - if (! function_exists('ldap_search')) { - StatusMessage("ERROR", "Your PHP has no LDAP support!", "Please install the LDAP extension for PHP."); - echo "

"; - } - // check if PHP has gettext support - if (! function_exists('gettext')) { - StatusMessage("ERROR", "Your PHP has no gettext support!", "Please install gettext for PHP."); - echo "

"; - } - ?> - - - - - - - - -
- Logo - -
- - - - - - - - - - - - - - - - - - - - - - -
- -
- -    - -
- -    - -
- -    - -
- - " tabindex="3"> -
- " . $error_message . ""; - } - ?> -
-
-
-
- - - - - - - - - - - -
-
- - - get_ServerURL(); ?> -
- file; - } - ?> - - - - - " tabindex="5"> -
-
-
-

- - -

- - " . LAMVersion() . "   "; - ?> - -
- - -connect($_POST['username'],$_POST['passwd']); // Connect to LDAP server for verifing username/password - - if($result === 0) // Username/password correct. Do some configuration and load main frame. - { - $_SESSION['loggedIn'] = true; - $_SESSION['language'] = $_POST['language']; // Write selected language in session - $current_language = explode(":",$_SESSION['language']); - $_SESSION['header'] = "\n"; - $_SESSION['header'] .= "\n\n"; - $_SESSION['header'] .= "\n\n"; - $_SESSION['header'] .= "\n"; - $_SESSION['header'] .= "\n "; - - include("./main.php"); // Load main frame - } - else - { - if ($result === False) - { - $error_message = _("Cannot connect to specified LDAP server. Please try again."); - display_LoginPage($_SESSION['config']); // connection failed - } - elseif ($result == 81) - { - $error_message = _("Cannot connect to specified LDAP server. Please try again."); - display_LoginPage($_SESSION['config']); // connection failed - } - elseif ($result == 49) - { - $error_message = _("Wrong password/user name combination. Please try again."); - display_LoginPage($_SESSION['config']); // Username/password invalid. Return to login page. - } - else - { - $error_message = _("LDAP error, server says:") . "\n
($result) " . ldap_err2str($result); - display_LoginPage($_SESSION['config']); // other errors - } - } - } -} -// Reload loginpage after a profile change -elseif($_POST['profileChange']) { - $_SESSION['config'] = new Config($_POST['profile']); // Recreate the config object with the submited - display_LoginPage($_SESSION['config']); // Load login page -} -// Load login page -else -{ - $_SESSION['loggedIn'] = false; - $default_Config = new CfgMain(); - $default_Profile = $default_Config->default; - $_SESSION["config"] = new Config($default_Profile); // Create new Config object - - display_LoginPage($_SESSION["config"]); // Load Login page -} -?> diff --git a/lam/templates/logout.php b/lam/templates/logout.php deleted file mode 100644 index 123f9996..00000000 --- a/lam/templates/logout.php +++ /dev/null @@ -1,73 +0,0 @@ -destroy(); - -setlanguage(); - -echo $_SESSION['header']; - -// destroy session -session_destroy(); -unset($_SESSION); - -// print logout message -?> - - - <?php echo _("Logout"); ?> - - - - -

- LDAP Account Manager -

-
-
-

-




- - diff --git a/lam/templates/main.php b/lam/templates/main.php deleted file mode 100644 index 87694ce6..00000000 --- a/lam/templates/main.php +++ /dev/null @@ -1,98 +0,0 @@ -get_Suffix('user') && ($conf->get_Suffix('user') != "")) { - $startPage = "./lists/listusers.php"; - $info = @ldap_search($_SESSION['ldap']->server, $conf->get_Suffix('user'), "", array()); - $res = @ldap_get_entries($_SESSION['ldap']->server, $info); - if (!$res && !in_array($conf->get_Suffix('user'), $new_suffs)) $new_suffs[] = $conf->get_Suffix('user'); -} -if ($conf->get_Suffix('group') && ($conf->get_Suffix('group') != "")) { - if ($startPage == "") { - $startPage = "./lists/listgroups.php"; - } - $info = @ldap_search($_SESSION['ldap']->server, $conf->get_Suffix('group'), "", array()); - $res = @ldap_get_entries($_SESSION['ldap']->server, $info); - if (!$res && !in_array($conf->get_Suffix('group'), $new_suffs)) $new_suffs[] = $conf->get_Suffix('group'); -} -if ($conf->get_Suffix('host') && ($conf->get_Suffix('host') != "")) { - if ($startPage == "") { - $startPage = "./lists/listhosts.php"; - } - $info = @ldap_search($_SESSION['ldap']->server, $conf->get_Suffix('host'), "", array()); - $res = @ldap_get_entries($_SESSION['ldap']->server, $info); - if (!$res && !in_array($conf->get_Suffix('host'), $new_suffs)) $new_suffs[] = $conf->get_Suffix('host'); -} -if ($conf->get_Suffix('domain') && ($conf->get_Suffix('domain') != "")) { - $info = @ldap_search($_SESSION['ldap']->server, $conf->get_Suffix('domain'), "", array()); - $res = @ldap_get_entries($_SESSION['ldap']->server, $info); - if (!$res && !in_array($conf->get_Suffix('domain'), $new_suffs)) $new_suffs[] = $conf->get_Suffix('domain'); -} - -// get encoding -$lang = explode(":",$_SESSION['language']); -$lang = $lang[1]; - -echo "\n"; -echo "\n"; -echo "\n"; -echo "\n"; -echo "\n"; -echo "\n"; -echo "\n"; -echo ("LDAP Account Manager\n"); -echo (""); -echo ("\n"); -echo ("\n"); -echo ("\n"); -// display page to add suffixes, if needed -if (sizeof($new_suffs) > 0) echo ("\n"); -else echo ("\n"); -echo ("\n"); -echo ("This page requires a browser that can show frames!\n"); -echo ("\n"); -echo ("\n"); -echo ("\n"); - -?> diff --git a/lam/templates/main_header.php b/lam/templates/main_header.php deleted file mode 100644 index 492e35e6..00000000 --- a/lam/templates/main_header.php +++ /dev/null @@ -1,94 +0,0 @@ -get_Suffix('user') != "") $lists++; -if ($_SESSION['config']->get_Suffix('group') != "") $lists++; -if ($_SESSION['config']->get_Suffix('host') != "") $lists++; -if ($_SESSION['config']->get_Suffix('tree') != "") $lists++; - -?> - - - - - - - - - - \n"; - ?> - LDAP Account Manager - - - - -  \n"; - ?> - - - - get_Suffix('tree') != "") { - echo '' . "\n"; - } - if ($_SESSION['config']->get_Suffix('user') != "") { - echo '' . "\n"; - } - if ($_SESSION['config']->get_Suffix('group') != "") { - echo '' . "\n"; - } - if ($_SESSION['config']->get_Suffix('host') != "") { - echo '' . "\n"; - } - ?> - - -
-   -  
 ' . _("Tree view") . ' ' . _("Users") . ' ' . _("Groups") . ' ' . _("Hosts") . '
- - diff --git a/lam/templates/massBuildAccounts.php b/lam/templates/massBuildAccounts.php deleted file mode 100644 index 0c8b3e57..00000000 --- a/lam/templates/massBuildAccounts.php +++ /dev/null @@ -1,211 +0,0 @@ -decrypt($_SESSION['mass_accounts'])); - for ($i = 0; $i < sizeof($accounts); $i++) { - echo "DN: " . $accounts[$i]['dn'] . "\n"; - unset($accounts[$i]['dn']); - $keys = array_keys($accounts[$i]); - for ($k = 0; $k < sizeof($keys); $k++) { - if (is_array($accounts[$i][$keys[$k]])) { - for ($x = 0; $x < sizeof($accounts[$i][$keys[$k]]); $x++) { - echo $keys[$k] . ": " . $accounts[$i][$keys[$k]][$x] . "\n"; - } - } - else { - echo $keys[$k] . ": " . $accounts[$i][$keys[$k]] . "\n"; - } - } - echo "\n"; - } - exit; -} - -echo $_SESSION['header']; -echo "account upload\n"; -echo "\n"; -echo "\n"; -echo "\n"; - -if ($_FILES['inputfile'] && ($_FILES['inputfile']['size'] > 0)) { - // check if input file is well formated - $data = array(); // input values without first row - $ids = array(); // => - // get input fields from modules - $columns = getUploadColumns($_POST['scope']); - // read input file - $handle = fopen ($_FILES['inputfile']['tmp_name'], "r"); - if (($head = fgetcsv($handle, 2000)) !== false ) { // head row - for ($i = 0; $i < sizeof($head); $i++) { - $ids[$head[$i]] = $i; - } - } - while (($line = fgetcsv($handle, 2000)) !== false ) { // account rows - $data[] = $line; - } - - $errors = array(); - - // check if all required columns are present - $checkcolumns = array(); - $columns = call_user_func_array('array_merge', $columns); - for ($i = 0; $i < sizeof($columns); $i++) { - if (isset($columns[$i]['required']) && ($columns[$i]['required'] == true)) { - if (isset($ids[$columns[$i]['name']])) $checkcolumns[] = $ids[$columns[$i]['name']]; - else $errors[] = array(_("A required column is missing in your CSV file."), $columns[$i]['name']); - } - } - - // check if all required attributes are given - $invalidColumns = array(); - $id_names = array_keys($ids); - for ($i = 0; $i < sizeof($checkcolumns); $i++) { - for ($r = 0; $r < sizeof($data); $r++) { - if ($data[$r][$checkcolumns[$i]] == "") { - $invalidColumns[] = $id_names[$checkcolumns[$i]]; - break; - } - } - } - for ($i = 0; $i < sizeof($data); $i++) { - if ($data[$i][$ids['dn_rdn']] == "") { - $invalidColumns[] = 'dn_rdn'; - break; - } - } - for ($i = 0; $i < sizeof($invalidColumns); $i++) { - $errors[] = array(_("One or more values of the required column \"$invalidColumns[$i]\" are missing."), ""); - } - - // check if values in unique columns are correct - for ($i = 0; $i < sizeof($columns); $i++) { - if ($columns[$i]['unique'] == true) { - $colNumber = $ids[$columns[$i]['name']]; - $values_given = array(); - for ($r = 0; $r < sizeof($data); $r++) { - $values_given[] = $data[$r][$colNumber]; - } - $values_unique = array_unique($values_given); - if (sizeof($values_given) != sizeof($values_unique)) { - $errors[] = array(_("This column is defined to include unique entries but duplicates were found:"), $columns[$i]['name']); - } - } - } - - // if input data is invalid just display error messages (max 50) - if (sizeof($errors) > 0) { - for ($i = 0; $i < sizeof($errors); $i++) StatusMessage("ERROR", $errors[$i][0], $errors[$i][1]); - } - - // let modules build accounts - else { - $accounts = buildUploadAccounts($_POST['scope'], $data, $ids); - if ($accounts != false) { - // set DN - for ($i = 0; $i < sizeof($accounts); $i++) { - // check against list of possible RDN attributes - if (!in_array($data[$i][$ids['dn_rdn']], getRDNAttributes($_POST['scope']))) { - $errors[] = array(_('Account %s:') . ' dn_rdn' . $accounts[$i][$data[$i][$ids['dn_rdn']]], _("Invalid RDN attribute!"), array($i)); - } - else { - $account_dn = $data[$i][$ids['dn_rdn']] . "=" . $accounts[$i][$data[$i][$ids['dn_rdn']]] . ","; - if ($data[$i][$ids['dn_suffix']] == "") $account_dn = $account_dn . $_SESSION['config']->get_Suffix($_POST['scope']); - else $account_dn = $account_dn . $data[$i][$ids['dn_suffix']]; - $accounts[$i]['dn'] = $account_dn; - } - } - // print errors if DN could not be built - if (sizeof($errors) > 0) { - for ($i = 0; $i < sizeof($errors); $i++) StatusMessage("ERROR", $errors[$i][0], $errors[$i][1], $errors[$i][2]); - } - else { - // store accounts in session - $_SESSION['mass_accounts'] = $_SESSION['ldap']->encrypt(serialize($accounts)); - $_SESSION['mass_counter'] = 0; - $_SESSION['mass_errors'] = array(); - $_SESSION['mass_failed'] = array(); - $_SESSION['mass_postActions'] = array(); - $_SESSION['mass_data'] = $_SESSION['ldap']->encrypt(serialize($data)); - $_SESSION['mass_ids'] = $ids; - $_SESSION['mass_scope'] = $_POST['scope']; - // show links for upload and LDIF export - echo "

" . _("LAM has checked your input and is now ready to create the accounts.") . "

\n"; - echo "

 

\n"; - echo "

\n"; - echo "\n"; - echo "\n"; - echo "\n"; - echo "
\n"; - echo "" . _("Upload accounts to LDAP") . ""; - echo "\n"; - echo "" . _("Show LDIF file") . ""; - echo "
\n"; - echo "

\n"; - } - } - } -} - -echo "\n"; -echo "\n"; - - -?> \ No newline at end of file diff --git a/lam/templates/massDoUpload.php b/lam/templates/massDoUpload.php deleted file mode 100644 index bf8d968f..00000000 --- a/lam/templates/massDoUpload.php +++ /dev/null @@ -1,129 +0,0 @@ -account upload\n"; -echo "\n"; - -// create accounts -$accounts = unserialize($_SESSION['ldap']->decrypt($_SESSION['mass_accounts'])); -if (($_SESSION['mass_counter'] < sizeof($accounts)) || !isset($_SESSION['mass_postActions']['finished'])) { - $startTime = time(); - $maxTime = get_cfg_var('max_execution_time') - 5; - if ($maxTime > 60) $maxTime = 60; - $refreshTime = $maxTime + 7; - echo "\n"; - echo "\n\n"; - echo "

" . _("LDAP upload in progress. Please wait.") . "

\n"; - echo "\n"; - echo ""; - echo "\n"; - echo "
  
"; - flush(); // send HTML to browser - // add accounts to LDAP - while (($_SESSION['mass_counter'] < sizeof($accounts)) && (($startTime + $maxTime) > time())) { - // create accounts as long as max_execution_time is not near - $attrs = $accounts[$_SESSION['mass_counter']]; - $dn = $attrs['dn']; - unset($attrs['dn']); - $success = @ldap_add($_SESSION['ldap']->server, $dn, $attrs); - if (!$success) { - $errorMessage = array( - "ERROR", - _("LAM was unable to create account %s! An LDAP error occured."), - ldap_errno($_SESSION[ldap]->server) . ": " . ldap_error($_SESSION[ldap]->server), - array($_SESSION['mass_counter'])); - $_SESSION['mass_errors'][] = $errorMessage; - $_SESSION['mass_failed'][] = $_SESSION['mass_counter']; - } - $_SESSION['mass_counter']++; - } - // do post upload actions - if ($_SESSION['mass_counter'] >= sizeof($accounts)) { - $data = unserialize($_SESSION['ldap']->decrypt($_SESSION['mass_data'])); - $return = doUploadPostActions($_SESSION['mass_scope'], $data, $_SESSION['mass_ids'], $_SESSION['mass_failed']); - if ($return['status'] == 'finished') { - $_SESSION['mass_postActions']['finished'] = true; - } - for ($i = 0; $i < sizeof($return['errors']); $i++) $_SESSION['mass_errors'][] = $return['errors'][$i]; - echo "

" . _("Additional tasks for module:") . ' ' . $return['module'] . "

\n"; - echo "\n"; - echo ""; - echo "\n"; - echo "
  
"; - flush(); - while (!isset($_SESSION['mass_postActions']['finished']) && (($startTime + $maxTime) > time())) { - $return = doUploadPostActions($_SESSION['mass_scope'], $data, $_SESSION['mass_ids'], $_SESSION['mass_failed']); - if ($return['status'] == 'finished') { - $_SESSION['mass_postActions']['finished'] = true; - } - for ($i = 0; $i < sizeof($return['errors']); $i++) $_SESSION['mass_errors'][] = $return['errors'][$i]; - } - } - echo ""; -} -// all accounts have been created -else { - echo "\n\n"; - echo "

" . _("LDAP upload has finished") . "

\n"; - if (sizeof($_SESSION['mass_errors']) > 0) { - echo "

" . _("There were errors while uploading:") . "

\n"; - for ($i = 0; $i < sizeof($_SESSION['mass_errors']); $i++) { - call_user_func_array('StatusMessage', $_SESSION['mass_errors'][$i]); - } - } - echo ""; -} - - -?> \ No newline at end of file diff --git a/lam/templates/masscreate.php b/lam/templates/masscreate.php deleted file mode 100644 index df61049c..00000000 --- a/lam/templates/masscreate.php +++ /dev/null @@ -1,316 +0,0 @@ -account upload\n"; -echo "\n"; -echo "\n"; -echo "\n"; - -// check if account specific page should be shown -if (isset($_POST['user'])) showMainPage('user'); -elseif (isset($_POST['group'])) showMainPage('group'); -elseif (isset($_POST['host'])) showMainPage('host'); -// show start page -else { - echo "

" . _("Account creation via file upload") . "

\n"; - echo "

 

\n"; - echo "

 

\n"; - - echo "

\n"; - echo _("Here you can create multiple accounts by providing a CSV file."); - echo "

\n"; - - echo "

 

\n"; - - echo "

\n"; - echo _("Please select your account type:"); - echo "

\n"; - - echo "
\n"; - echo "\n"; - echo "\n"; - echo "\n"; - echo "\n"; - echo "\n"; - echo "\n"; - echo "
\n"; - echo "\n"; - echo "\n"; - echo "\n"; - echo "\n"; - echo "\n"; - echo "
\n"; - echo "
\n"; - - echo "\n"; - echo "\n"; -} - - -/** -* Displays the acount type specific main page of the upload. -* -* @param string $scope account type -*/ -function showMainPage($scope) { - echo "

\n"; - echo _("Please provide a CSV formated file with your account data. The cells in the first row must be filled with the column identifiers. The following rows represent one account for each row."); - echo "

\n"; - - echo "

 

\n"; - - echo "
\n"; - echo "

\n"; - echo "" . _("CSV file:") . "   "; - echo "\n"; - echo "\n"; - echo "

\n"; - echo "
\n"; - - echo "

 

\n"; - - echo "

" . _("Columns:") . "

\n"; - - // DN options - echo "
\n" . _("DN settings") . "\n"; - echo "\n"; - echo "\n"; - echo "\n"; - echo "\n"; - echo "\n"; - echo "
\n"; - echo "" . _("DN suffix") . "\n"; - // help link - echo " "; - echo "\"""; - echo "\n"; - echo "
\n"; - echo "
    \n"; - echo "
  • " . _("Identifier") . ": " . "dn_suffix
  • \n"; - echo "
  • " . _("Example value") . ": " . "ou=accounts,dc=yourdomain,dc=org
  • \n"; - echo "
  • " . _("Default value") . ": " . $_SESSION['config']->get_Suffix($scope) . "
  • \n"; - echo "
\n"; - echo "
\n"; - echo "" . _("RDN identifier") . "\n"; - // help link - echo " "; - echo "\"""; - echo "\n"; - echo "
\n"; - echo "
    \n"; - echo "
  • " . _("Identifier") . ": " . "dn_rdn
  • \n"; - echo "
  • " . _("Possible values") . ": " . implode(", ", getRDNAttributes($scope)) . "
  • \n"; - echo "
  • " . _("Example value") . ": " . "uid
  • \n"; - echo "
\n"; - echo "
\n"; - echo "
\n"; - - // get input fields from modules - $columns = getUploadColumns($scope); - - // print input fields - $modules = array_keys($columns); - for ($m = 0; $m < sizeof($modules); $m++) { - if (sizeof($columns[$modules[$m]]) < 1) continue; - echo "
\n" . getModuleAlias($modules[$m], $scope) . "\n"; - echo "\n"; - for ($i = 0; $i < sizeof($columns[$modules[$m]]); $i++) { - echo "\n"; - echo "\n"; - $i++; - if ($i < sizeof($columns[$modules[$m]])) { - echo "\n"; - $i++; - if ($i < sizeof($columns[$modules[$m]])) { - echo "\n"; - } - else echo ""; // empty cell if no more fields - } - else echo ""; // empty cell if no more fields - echo "\n"; - } - echo "
\n"; - showColumnData($modules[$m], $columns[$modules[$m]][$i], $scope); - echo "\n"; - showColumnData($modules[$m], $columns[$modules[$m]][$i], $scope); - echo "\n"; - showColumnData($modules[$m], $columns[$modules[$m]][$i], $scope); - echo "
\n"; - echo "
"; - } - - echo "

 

\n"; - - // print table example and build sample CSV - $sampleCSV = ""; - $sampleCSV_head = array(); - $sampleCSV_row = array(); - echo "" . _("This is an example how it would look in your spreadsheet program before you convert to CSV:") . "

\n"; - - echo "\n"; - echo "\n"; - // DN attributes - $sampleCSV_head[] = "\"dn_suffix\""; - $sampleCSV_head[] = "\"dn_rdn\""; - echo "\n"; - echo "\n"; - // module attributes - for ($m = 0; $m < sizeof($modules); $m++) { - if (sizeof($columns[$modules[$m]]) < 1) continue; - for ($i = 0; $i < sizeof($columns[$modules[$m]]); $i++) { - $sampleCSV_head[] = "\"" . $columns[$modules[$m]][$i]['name'] . "\""; - echo "\n"; - } - } - echo "\n"; - echo "\n"; - // DN attributes - $sampleCSV_row[] = "\"" . $_SESSION['config']->get_Suffix($scope) . "\""; - $sampleCSV_row[] = "\"" . array_shift(getRDNAttributes($scope)) . "\""; - echo "\n"; - echo "\n"; - // module attributes - for ($m = 0; $m < sizeof($modules); $m++) { - if (sizeof($columns[$modules[$m]]) < 1) continue; - for ($i = 0; $i < sizeof($columns[$modules[$m]]); $i++) { - $sampleCSV_row[] = "\"" . $columns[$modules[$m]][$i]['example'] . "\""; - echo "\n"; - } - } - echo "\n"; - echo "
\n"; - echo "dn_suffix"; - echo "\n"; - echo "dn_rdn"; - echo "\n"; - echo $columns[$modules[$m]][$i]['name']; - echo "
\n"; - echo $_SESSION['config']->get_Suffix($scope); - echo "\n"; - echo array_shift(getRDNAttributes($scope)); - echo "\n"; - echo $columns[$modules[$m]][$i]['example']; - echo "
\n"; - $sampleCSV = implode(",", $sampleCSV_head) . "\n" . implode(",", $sampleCSV_row) . "\n"; - $_SESSION['mass_csv'] = $sampleCSV; - - // link to CSV sample - echo "

\n"; - echo "

\n"; - echo "" . _("Download sample CSV file") . "\n"; - echo "

\n"; - echo "

\n"; - - echo "\n"; - echo "\n"; - die; -} - -/** -* Prints the properties of one input field. -* -* @param string $module account module name -* @param array $data field data from modules -* @param string $scope account type -*/ -function showColumnData($module, $data, $scope) { - if (isset($data['required']) && ($data['required'] == true)) { - echo "\n"; - echo $data['description']; - echo "\n"; - } - else { - echo "\n"; - echo $data['description']; - echo "\n"; - } - // help link - echo " "; - echo "\"""; - echo "\n"; - echo "
\n"; - echo "

    \n"; - echo "
  • \n"; - echo "" . _("Identifier") . ": " . $data['name'] . "\n"; - echo "
  • \n"; - if (isset($data['values'])) { - echo "
  • \n"; - echo "" . _("Possible values") . ": " . $data['values'] . "\n"; - echo "
  • \n"; - } - echo "
  • \n"; - echo "" . _("Example value") . ": " . $data['example'] . "\n"; - echo "
  • \n"; - if (isset($data['default'])) { - echo "
  • \n"; - echo "" . _("Default value") . ": " . $data['default'] . "\n"; - echo "
  • \n"; - } - - echo "
\n"; -} - -?> diff --git a/lam/templates/ou_edit.php b/lam/templates/ou_edit.php deleted file mode 100644 index 549ba761..00000000 --- a/lam/templates/ou_edit.php +++ /dev/null @@ -1,491 +0,0 @@ -search_units($_POST['usersuff_n']))) { - // add new ou - $ou = array(); - $ou['objectClass'] = "organizationalunit"; - $ou['ou'] = $_POST['newsuff_u']; - $ret = @ldap_add($_SESSION['ldap']->server(), $new_dn, $ou); - if ($ret) { - $message = _("New OU created successfully."); - } - else { - $error = _("Unable to create new OU!"); - } - } - else $error = _("OU already exists!"); - } - // show errormessage if ou is invalid - else { - $error = _("OU is invalid!") . " " . $_POST['newsuff_u']; - } - } - // delete ou, user was sure - elseif (($_POST['type'] == "del_usr") && ($_POST['sure'])) { - $ret = @ldap_delete($_SESSION['ldap']->server(), $_POST['usersuff_d']); - if ($ret) { - $message = _("OU deleted successfully."); - } - else { - $error = _("Unable to delete OU!"); - } - } - // do not delete ou - elseif (($_POST['type'] == "del_usr") && ($_POST['abort'])) { - display_main(); - exit; - } - // ask if user is sure to delete - elseif ($_POST['type'] == "del_usr") { - // check for sub entries - $sr = @ldap_list($_SESSION['ldap']->server(), $_POST['usersuff_d'], "ObjectClass=*", array("")); - $info = @ldap_get_entries($_SESSION['ldap']->server(), $sr); - if ($sr && $info['count'] == 0) { - $text = "
\n" . - "

" . _("Do you really want to delete this OU?") . " " . "\n" . - "
\n

" . $_POST['usersuff_d'] . "

\n" . - "
\n" . - "
\n" . - "\n" . - "\n" . - "\n" . - "\n" . - "\n" . - "
"; - } - else { - $error = _("OU is not empty or invalid!"); - } - } - - // group operations - // new group ou - if ($_POST['type'] == "new_grp") { - // create ou if valid - if (eregi("^[a-z0-9 _\\-]+$", $_POST['newsuff_g'])) { - // check if ou already exists - $new_dn = "ou=" . $_POST['newsuff_g'] . "," . $_POST['groupsuff_n']; - if (!in_array(strtolower($new_dn), $_SESSION['ldap']->search_units($_POST['groupsuff_n']))) { - // add new ou - $ou = array(); - $ou['objectClass'] = "organizationalunit"; - $ou['ou'] = $_POST['newsuff_g']; - $ret = @ldap_add($_SESSION['ldap']->server(), $new_dn, $ou); - if ($ret) { - $message = _("New OU created successfully."); - } - else { - $error = _("Unable to create new OU!"); - } - } - else $error = _("OU already exists!"); - } - // show errormessage if ou is invalid - else { - $error = _("OU is invalid!") . " " . $_POST['newsuff_g']; - } - } - // delete ou, user was sure - elseif (($_POST['type'] == "del_grp") && ($_POST['sure'])) { - $ret = @ldap_delete($_SESSION['ldap']->server(), $_POST['groupsuff_d']); - if ($ret) { - $message = _("OU deleted successfully."); - } - else { - $error = _("Unable to delete OU!"); - } - } - // do not delete ou - elseif (($_POST['type'] == "del_grp") && ($_POST['abort'])) { - display_main(); - exit; - } - // ask if user is sure to delete - elseif ($_POST['type'] == "del_grp") { - // check for sub entries - $sr = @ldap_list($_SESSION['ldap']->server(), $_POST['groupsuff_d'], "ObjectClass=*", array("")); - $info = @ldap_get_entries($_SESSION['ldap']->server(), $sr); - if ($sr && $info['count'] == 0) { - $text = "
\n" . - "

" . _("Do you really want to delete this OU?") . " " . "\n" . - "
\n

" . $_POST['groupsuff_d'] . "

\n" . - "
\n" . - "
\n" . - "\n" . - "\n" . - "\n" . - "\n" . - "\n" . - "
"; - } - else { - $error = _("OU is not empty or invalid!"); - } - } - - // host operations - // new host ou - if ($_POST['type'] == "new_hst") { - // create ou if valid - if (eregi("^[a-z0-9 _\\-]+$", $_POST['newsuff_h'])) { - // check if ou already exists - $new_dn = "ou=" . $_POST['newsuff_h'] . "," . $_POST['hostsuff_n']; - if (!in_array(strtolower($new_dn), $_SESSION['ldap']->search_units($_POST['hostsuff_n']))) { - // add new ou - $ou = array(); - $ou['objectClass'] = "organizationalunit"; - $ou['ou'] = $_POST['newsuff_h']; - $ret = @ldap_add($_SESSION['ldap']->server(), $new_dn, $ou); - if ($ret) { - $message = _("New OU created successfully."); - } - else { - $error = _("Unable to create new OU!"); - } - } - else $error = _("OU already exists!"); - } - // show errormessage if ou is invalid - else { - $error = _("OU is invalid!") . " " . $_POST['newsuff_h']; - } - } - // delete ou, user was sure - elseif (($_POST['type'] == "del_hst") && ($_POST['sure'])) { - $ret = @ldap_delete($_SESSION['ldap']->server(), $_POST['hostsuff_d']); - if ($ret) { - $message = _("OU deleted successfully."); - } - else { - $error = _("Unable to delete OU!"); - } - } - // do not delete ou - elseif (($_POST['type'] == "del_hst") && ($_POST['abort'])) { - display_main(); - exit; - } - // ask if user is sure to delete - elseif ($_POST['type'] == "del_hst") { - // check for sub entries - $sr = @ldap_list($_SESSION['ldap']->server(), $_POST['hostsuff_d'], "ObjectClass=*", array("")); - $info = @ldap_get_entries($_SESSION['ldap']->server(), $sr); - if ($sr && $info['count'] == 0) { - $text = "
\n" . - "

" . _("Do you really want to delete this OU?") . " " . "\n" . - "
\n

" . $_POST['hostsuff_d'] . "

\n" . - "
\n" . - "
\n" . - "\n" . - "\n" . - "\n" . - "\n" . - "\n" . - "
"; - } - else { - $error = _("OU is not empty or invalid!"); - } - } - - // domain operations - // new domain ou - if ($_POST['type'] == "new_dom") { - // create ou if valid - if (eregi("^[a-z0-9 _\\-]+$", $_POST['newsuff_d'])) { - // check if ou already exists - $new_dn = "ou=" . $_POST['newsuff_d'] . "," . $_POST['domsuff_n']; - if (!in_array(strtolower($new_dn), $_SESSION['ldap']->search_units($_POST['domsuff_n']))) { - // add new ou - $ou = array(); - $ou['objectClass'] = "organizationalunit"; - $ou['ou'] = $_POST['newsuff_d']; - $ret = @ldap_add($_SESSION['ldap']->server(), $new_dn, $ou); - if ($ret) { - $message = _("New OU created successfully."); - } - else { - $error = _("Unable to create new OU!"); - } - } - else $error = _("OU already exists!"); - } - // show errormessage if ou is invalid - else { - $error = _("OU is invalid!") . " " . $_POST['newsuff_d']; - } - } - // delete ou, user was sure - elseif (($_POST['type'] == "del_dom") && ($_POST['sure'])) { - $ret = @ldap_delete($_SESSION['ldap']->server(), $_POST['domsuff_d']); - if ($ret) { - $message = _("OU deleted successfully."); - } - else { - $error = _("Unable to delete OU!"); - } - } - // do not delete ou - elseif (($_POST['type'] == "del_dom") && ($_POST['abort'])) { - display_main(); - exit; - } - // ask if user is sure to delete - elseif ($_POST['type'] == "del_dom") { - // check for sub entries - $sr = @ldap_list($_SESSION['ldap']->server(), $_POST['domsuff_d'], "ObjectClass=*", array("")); - $info = @ldap_get_entries($_SESSION['ldap']->server(), $sr); - if ($sr && $info['count'] == 0) { - $text = "
\n" . - "

" . _("Do you really want to delete this OU?") . " " . "\n" . - "
\n

" . $_POST['domsuff_d'] . "

\n" . - "
\n" . - "
\n" . - "\n" . - "\n" . - "\n" . - "\n" . - "\n" . - "
"; - } - else { - $error = _("OU is not empty or invalid!"); - } - } - - // print header - echo $_SESSION['header']; - echo ("OU-Editor\n"); - echo ("\n"); - echo ("\n"); - echo ("\n"); - // display messages - if ($error || $message || $text) { - if ($text) echo $text; - elseif ($error) { - StatusMessage("ERROR", "", $error); - echo ("
" . _("Back to OU-Editor") . "\n"); - } - else { - StatusMessage("INFO", "", $message); - echo ("
" . _("Back to OU-Editor") . "\n"); - } - } - -echo ("\n"); -exit; -} -else display_main(); - -function display_main() { - // display main page - echo $_SESSION['header']; - echo ("OU-Editor\n"); - echo ("\n"); - echo ("\n"); - echo ("\n"); - echo ("
\n"); - echo ("
\n"); - - // user OUs - if ($_SESSION["config"]->get_Suffix('user') != "") { - // generate lists of possible suffixes - $usr_units = $_SESSION['ldap']->search_units($_SESSION["config"]->get_Suffix('user')); - echo ("
" . _("Users") . "\n"); - echo ("\n"); - // new OU - echo ("\n"); - echo ("\n"); - echo ("\n"); - echo ("\n"); - echo ("\n"); - echo ("\n"); - echo ("\n"); - // delete OU - echo ("\n"); - echo ("\n"); - echo ("\n"); - echo ("\n"); - echo ("\n"); - echo ("\n"); - echo ("\n"); - echo ("
" . _("New organizational unit") . ": \n"); - echo ("". _("Help") ."
" . _("Delete organizational unit") . ": \n"); - echo (" ". _("Help") ."
\n"); - echo ("
\n"); - echo ("
\n"); - } - - // group OUs - if ($_SESSION["config"]->get_Suffix('group') != "") { - // generate lists of possible suffixes - $grp_units = $_SESSION['ldap']->search_units($_SESSION["config"]->get_Suffix('group')); - echo ("
" . _("Groups") . "\n"); - echo ("\n"); - // new OU - echo ("\n"); - echo ("\n"); - echo ("\n"); - echo ("\n"); - echo ("\n"); - echo ("\n"); - echo ("\n"); - // delete OU - echo ("\n"); - echo ("\n"); - echo ("\n"); - echo ("\n"); - echo ("\n"); - echo ("\n"); - echo ("\n"); - echo ("
" . _("New organizational unit") . ": \n"); - echo ("". _("Help") ."
" . _("Delete organizational unit") . ": \n"); - echo (" ". _("Help") ."
\n"); - echo ("
\n"); - echo ("
\n"); - } - - // host OUs - if ($_SESSION["config"]->get_Suffix('host') != "") { - // generate lists of possible suffixes - $hst_units = $_SESSION['ldap']->search_units($_SESSION["config"]->get_Suffix('host')); - echo ("
" . _("Samba Hosts") . "\n"); - echo ("\n"); - // new OU - echo ("\n"); - echo ("\n"); - echo ("\n"); - echo ("\n"); - echo ("\n"); - echo ("\n"); - echo ("\n"); - // delete OU - echo ("\n"); - echo ("\n"); - echo ("\n"); - echo ("\n"); - echo ("\n"); - echo ("\n"); - echo ("\n"); - echo ("
" . _("New organizational unit") . ": \n"); - echo ("". _("Help") ."
" . _("Delete organizational unit") . ": \n"); - echo (" ". _("Help") ."
\n"); - echo ("
\n"); - echo ("
\n"); - } - - // domain OUs - if ($_SESSION["config"]->get_Suffix('domain') != "") { - // generate lists of possible suffixes - $dom_units = $_SESSION['ldap']->search_units($_SESSION["config"]->get_Suffix('domain')); - echo ("
" . _("Domains") . "\n"); - echo ("\n"); - // new OU - echo ("\n"); - echo ("\n"); - echo ("\n"); - echo ("\n"); - echo ("\n"); - echo ("\n"); - echo ("\n"); - // delete OU - echo ("\n"); - echo ("\n"); - echo ("\n"); - echo ("\n"); - echo ("\n"); - echo ("\n"); - echo ("\n"); - echo ("
" . _("New organizational unit") . ": \n"); - echo ("". _("Help") ."
" . _("Delete organizational unit") . ": \n"); - echo (" ". _("Help") ."
\n"); - echo ("
\n"); - echo ("
\n"); - } - - echo (""); - echo ("
\n"); - echo ("\n"); -} diff --git a/lam/templates/pdfedit/pdfdelete.php b/lam/templates/pdfedit/pdfdelete.php deleted file mode 100644 index 7f544592..00000000 --- a/lam/templates/pdfedit/pdfdelete.php +++ /dev/null @@ -1,91 +0,0 @@ -server()) { - metaRefresh("../login.php"); - exit; -} - -// print standard header -echo $_SESSION['header']; -echo ("" . _("Delete PDF structure") . "\n"); -echo "\n"; -echo ("\n\n


\n"); - -// check if admin has submited delete operation -if ($_POST['submit']) { - // delete user profile - if(!deletePDFStructureDefinition($_POST['type'],$_POST['delete'])) { - StatusMessage('ERROR', '', _('Unable to delete PDF structure!') . ' ' . _('Scope') . ': ' . $_POST['type'] . ' ' . _('Name') . ': ' . $_POST['delete']); - } - else { - StatusMessage('INFO', '', _('Deleted PDF structure:') . ' ' . _('Scope') . ': ' . $_POST['type'] . ' ' . _('Name') . ': ' . $_POST['delete']); - } - echo ("
" . _("Back to PDF Editor") . ""); - echo ("\n"); - exit; -} - -// check if admin has aborted delete operation -if ($_POST['abort']) { - StatusMessage("INFO", "", _("Delete operation canceled.")); - echo ("
" . _("Back to PDF Editor") . ""); - echo ("\n"); - exit; -} - -// check if right type was given -$type = $_GET['type']; -if (($type == "user") || ($type == "host") || ($type == "group")) { - echo ("

" . _("Do you really want to delete this PDF structure?") . " "); - echo (_('Scope') . ': ' . $_GET['type'] . ' ' . _('Name') . ': ' . $_GET['delete'] . "

\n"); - echo ("
\n"); - echo ("

\n"); - echo ("\n"); - echo ("\n"); - echo (""); - echo (""); - echo ("

\n"); -} -else{ - // no valid pdf type - StatusMessage("ERROR", "", _("Wrong or missing type!") . " " . $type); - echo ("" . _("Back to PDF Editor") . ""); -} diff --git a/lam/templates/pdfedit/pdfmain.php b/lam/templates/pdfedit/pdfmain.php deleted file mode 100644 index 86d9244f..00000000 --- a/lam/templates/pdfedit/pdfmain.php +++ /dev/null @@ -1,158 +0,0 @@ -server()) { - metaRefresh("../login.php"); - exit; -} - -// check if user has pressed submit or abort button -if ($_POST['forward'] == "yes") { - // on abort go back to main page - if ($_POST['abort']) { - metaRefresh("../lists/listusers.php"); - } - // on submit forward to other pdf structure pages - else if($_POST['submit']) { - if($_POST['pdf'] == 'new') { - metaRefresh('pdfpage.php?type=' . $_POST['scope']); - } - else if($_POST['pdf'] == 'edit') { - $edit = split(':',$_POST['edit']); - metaRefresh('pdfpage.php?type=' . $edit[0] . '&edit=' . $edit[1]); - } - else if($_POST['pdf'] == 'delete') { - $delete = split(':',$_POST['delete']); - metaRefresh('pdfdelete.php?type=' . $delete[0] . '&delete=' . $delete[1]); - } - } - exit; -} - -$scopes = getAvailableScopes(); - -$availableStructureDefinitions = ''; -$availableScopes = ''; - -foreach($scopes as $scope) { - $pdfStructDefs = getPDFStructureDefinitions($scope); - $availableScopes .= '\n"; - - foreach($pdfStructDefs as $pdfStructureDefinition) { - $availableStructureDefinitions .= '\n"; - } -} - -echo $_SESSION['header']; -?> - LDAP Account Manager - - - -

-
- -
- - - - - - - - - - - - - - - - - - - - - -
- -
- - - -
- - - -
-
-

- - -

- - - "> - "> -

- -
- - \ No newline at end of file diff --git a/lam/templates/pdfedit/pdfpage.php b/lam/templates/pdfedit/pdfpage.php deleted file mode 100644 index 6300f590..00000000 --- a/lam/templates/pdfedit/pdfpage.php +++ /dev/null @@ -1,789 +0,0 @@ -server()) { - metaRefresh("../login.php"); - exit; -} - -// Write $_POST variables to $_GET when form was submitted via post -if(isset($_POST['type'])) { - $_GET = $_POST; - if($_POST['pdfname'] == '') { - unset($_GET['pdfname']); - } -} - - -// Abort and go back to main pdf structure page -if(isset($_GET['abort'])) { - metarefresh('pdfmain.php'); - exit; -} - -// set new logo and headline -if ((isset($_GET['headline'])) && ($_GET['logoFile'] != $_SESSION['currentPageDefinitions']['filename'])) { - $_SESSION['currentPageDefinitions']['filename'] = $_GET['logoFile']; -} -if ((isset($_GET['headline'])) && ($_GET['headline'] != $_SESSION['currentPageDefinitions']['headline'])) { - $_SESSION['currentPageDefinitions']['headline'] = str_replace('<','',str_replace('>','',$_GET['headline'])); -} -if(isset($_POST['defaults'])) { - foreach($_POST['defaults'] as $default) { - switch($default) { - case 'logoFile': - unset($_SESSION['currentPageDefinitions']['filename']); - break; - case 'headline': - unset($_SESSION['currentPageDefinitions']['headline']); - break; - default: - break; - } - } -} - -// Check if pdfname is valid, then save current structure to file and go to -// main pdf structure page -if(isset($_GET['submit'])) { - echo $_SESSION['header']; - echo "LDAP Account Manager"; - echo ""; - echo ""; - echo ""; - if(!isset($_GET['pdfname']) || !preg_match('/[a-zA-Z0-9\-\_]+/',$_GET['pdfname'])) { - StatusMessage('ERROR', _('PDF-structure name not valid'), _('The name for that PDF-structure you submitted is not valid. A valid name must constist at least of one of the following characters \'a-z\',\'A-Z\',\'0-9\',\'_\',\'-\',\'.\'.')); - } - else { - $return = savePDFStructureDefinitions($_GET['type'],$_GET['pdfname']); - if($return == 'ok') { - StatusMessage('INFO', _("PDF structure was successfully saved."), $_GET['pdfname']); - } - elseif($return == 'no perms'){ - StatusMessage('ERROR', _("Could not save PDF profile, access denied."), $_GET['pdfname']); - } - } - echo ""; - exit; -} -// Add a new section or static text -elseif(isset($_GET['add'])) { - // Check if name for new section is specified when needed - if($_GET['section_type'] == 'text' && (!isset($_GET['section_text']) || $_GET['section_text'] == '')) { - StatusMessage('ERROR',_('No section text specified'),_('The headline for a new section must contain at least one character.')); - } - // Check if text for static text field is specified - elseif($_GET['section_type'] == 'textbox' && (!isset($_GET['text_text']) || $_GET['text_text'] == '')) { - StatusMessage('ERROR',_('No static text specified'),_('The static text must contain at least one character.')); - } - else { - // Add a new section - if(($_GET['section_type'] == 'item') || ($_GET['section_type'] == 'text')) { - $attributes = array(); - // Add a new section with user headline - if($_GET['section_type'] == 'text') { - $attributes['NAME'] = $_GET['section_text']; - } - // Add a new section with a module value headline - elseif($_GET['section_type'] == 'item') { - $attributes['NAME'] = '_' . $_GET['section_item']; - } - $entry = array(array('tag' => 'SECTION','type' => 'open','level' => '2','attributes' => $attributes),array('tag' => 'SECTION','type' => 'close','level' => '2')); - } - // Add new static text field - elseif($_GET['section_type'] == 'textbox') { - $entry = array(array('tag' => 'TEXT','type' => 'complete','level' => '2','value' => $_GET['text_text'])); - } - // Insert new field in structure - array_splice($_SESSION['currentPDFStructure'],$_GET['add_position'],0,$entry); - } -} -// Add a new value field -elseif(isset($_GET['add_field'])) { - // Get available modules - $modules = explode(',',$_GET['modules']); - $fields = array(); - // Search each module for selected values - foreach($modules as $module) { - if(isset($_GET[$module])) { - foreach($_GET[$module] as $field) { - // Create ne value entry - $fields[] = array('tag' => 'ENTRY','type' => 'complete','level' => '3','attributes' => array('NAME' => $module . '_' . $field)); - } - } - } - if(count($fields) > 0) { - $pos = 0; - // Find begin section to insert into - while($pos < $_GET['section']) { - next($_SESSION['currentPDFStructure']); - $pos++; - } - $current = next($_SESSION['currentPDFStructure']); - $pos++; - // End of section to insert into - while($current && $current['tag'] != 'SECTION' && $current['type'] != 'close') { - $current = next($_SESSION['currentPDFStructure']); - $pos++; - } - // Insert new entry before closing section tag - array_splice($_SESSION['currentPDFStructure'],$pos,0,$fields); - } -} -// Change section headline -elseif(isset($_GET['change'])) { - $alter = explode('_',$_GET['change']); - $newvalue = $_GET['section_' . $alter[0]]; - if($alter[1] == 'item') { - $newvalue = '_' . $newvalue; - } - $_SESSION['currentPDFStructure'][$alter[0]]['attributes']['NAME'] = $newvalue; -} -// Remove section, static text or value entry from structure -elseif(isset($_GET['remove'])) { - $start = 0; - // Find element to remove - while($start < $_GET['remove']) { - next($_SESSION['currentPDFStructure']); - $start++; - } - $remove = current($_SESSION['currentPDFStructure']); - // We have a section to remove - if($remove['tag'] == "SECTION") { - $end = $start; - $current = next($_SESSION['currentPDFStructure']); - $end++; - // Find end of section to remove - while($current && $current['tag'] != 'SECTION' && $current['type'] != 'close') { - $current = next($_SESSION['currentPDFStructure']); - $end++; - } - // Remove complete section with all value entries in it from structure - array_splice($_SESSION['currentPDFStructure'],$start,$end - $start + 1); - } - // We have a value entry to remove - elseif($remove['tag'] == "ENTRY") { - array_splice($_SESSION['currentPDFStructure'],$start,1); - } - // We hava a static text to remove - elseif($remove['tag'] == "TEXT") { - array_splice($_SESSION['currentPDFStructure'],$start,1); - } -} -// Move a section, static text or value entry upwards -elseif(isset($_GET['up'])) { - $tmp = $_SESSION['currentPDFStructure'][$_GET['up']]; - $prev = $_SESSION['currentPDFStructure'][$_GET['up'] - 1]; - // We have a section or static text to move - if($tmp['tag'] == 'SECTION' || $tmp['tag'] == 'TEXT') { - $pos = 0; - $borders = array(); - $current = current($_SESSION['currentPDFStructure']); - // Add borders of sections and static text entry to array - if($current['tag'] == 'SECTION') { - $borders[$current['type']][] = $pos; - } - elseif($current['tag'] == 'TEXT') { - $borders['open'][] = $pos; - $borders['close'][] = $pos; - } - // Find all sections and statci text fields before the section or static - // text entry to move upwards - while($pos < $_GET['up']) { - $current = next($_SESSION['currentPDFStructure']); - $pos++; - if($current['tag'] == 'SECTION') { - $borders[$current['type']][] = $pos; - } - elseif($current['tag'] == 'TEXT') { - $borders['open'][] = $pos; - $borders['close'][] = $pos; - } - } - // Move only when not topmost element - if(count($borders['close']) > 0) { - // We have a section to move up - if($current['tag'] == 'SECTION') { - $current = next($_SESSION['currentPDFStructure']); - $pos++; - // Find end of section to move - while($current && $current['tag'] != 'SECTION' && $current['type'] != 'close') { - $current = next($_SESSION['currentPDFStructure']); - $pos++; - } - $borders['close'][] = $pos; - } - // Calculate the entries to move and move them - $cut_start = $borders['open'][count($borders['open']) - 1]; - $cut_count = $borders['close'][count($borders['close']) - 1] - $borders['open'][count($borders['open']) - 1] + 1; - $insert_pos = $borders['open'][count($borders['open']) - 2]; - $tomove = array_splice($_SESSION['currentPDFStructure'],$cut_start,$cut_count); - array_splice($_SESSION['currentPDFStructure'],$insert_pos,0,$tomove); - } - } - // We have a value entry to move; move it only if its not the topmost - // entry in this section - elseif($tmp['tag'] == 'ENTRY' && $prev['tag'] == 'ENTRY') { - $_SESSION['currentPDFStructure'][$_GET['up']] = $prev; - $_SESSION['currentPDFStructure'][$_GET['up'] - 1] = $tmp; - } -} -// Move a section, static text field or value entry downwards -elseif(isset($_GET['down'])) { - $tmp = $_SESSION['currentPDFStructure'][$_GET['down']]; - $next = $_SESSION['currentPDFStructure'][$_GET['down'] + 1]; - // We have a section or static text to move - if($tmp['tag'] == 'SECTION' || $tmp['tag'] == 'TEXT') { - $pos = 0; - $current = current($_SESSION['currentPDFStructure']); - // Find section or static text entry to move - while($pos < $_GET['down']) { - $current = next($_SESSION['currentPDFStructure']); - $pos++; - } - $borders = array(); - // We have a section to move - if($current['tag'] == 'SECTION'){ - $borders[$current['type']][] = $pos; - $current = next($_SESSION['currentPDFStructure']); - $pos++; - // Find end of section to move - while($current && $current['tag'] != 'SECTION' && $current['type'] != 'close') { - $current = next($_SESSION['currentPDFStructure']); - $pos++; - } - $borders['close'][] = $pos; - } - // We have a static text entry to move - elseif($current['tag'] == 'TEXT') { - $borders['open'][] = $pos; - $borders['close'][] = $pos; - } - $current = next($_SESSION['currentPDFStructure']); - $pos++; - // Find next section or static text entry in structure - if($current) { - // Next is a section - if($current['tag'] == 'SECTION') { - $borders[$current['type']][] = $pos; - $current = next($_SESSION['currentPDFStructure']); - $pos++; - // Find end of this section - while($current && $current['tag'] != 'SECTION' && $current['type'] != 'close') { - if($current['tag'] == 'SECTION') { - $borders[$current['type']][] = $pos; - } - $current = next($_SESSION['currentPDFStructure']); - $pos++; - } - } - // Next is static text entry - elseif($current['tag'] == 'TEXT') { - $borders['open'][] = $pos; - } - $borders['close'][] = $pos; - } - // Move only downwars if not bottenmost element of this structure - if(count($borders['open']) > 1) { - // Calculate entries to move and move them - $cut_start = $borders['open'][count($borders['open']) - 1]; - $cut_count = $borders['close'][count($borders['close']) - 1] - $borders['open'][count($borders['open']) - 1] + 1; - $insert_pos = $borders['open'][count($borders['open']) - 2]; - $tomove = array_splice($_SESSION['currentPDFStructure'],$cut_start,$cut_count); - array_splice($_SESSION['currentPDFStructure'],$insert_pos,0,$tomove); - } - } - // We have a value entry to move; move it only if it is not the bottmmost - // element of this section. - elseif($tmp['tag'] == 'ENTRY' && $next['tag'] == 'ENTRY') { - $_SESSION['currentPDFStructure'][$_GET['down']] = $_SESSION['currentPDFStructure'][$_GET['down'] + 1]; - $_SESSION['currentPDFStructure'][$_GET['down'] + 1] = $tmp; - } -} - -// Load PDF structure from file if it is not defined in session -if(!isset($_SESSION['currentPDFStructure'])) { - // Load structure file to be edit - if($_GET['edit']) { - $load = loadPDFStructureDefinitions($_GET['type'],$_GET['edit']); - $_SESSION['currentPDFStructure'] = $load['structure']; - $_SESSION['currentPageDefinitions'] = $load['page_definitions']; - $_GET['pdfname'] = $_GET['edit']; - } - // Load default structure file when creating a new one - else { - $load = loadPDFStructureDefinitions($_GET['type']); - $_SESSION['currentPDFStructure'] = $load['structure']; - $_SESSION['currentPageDefinitions'] = $load['page_definitions']; - } -} - -// Load available fields from modules when not set in session -if(!isset($_SESSION['availablePDFFields'])) { - $_SESSION['availablePDFFields'] = getAvailablePDFFields($_GET['type']); -} - -// Create the values for the dropdown boxes for section headline defined by -// value entries and fetch all available modules -$modules = array(); -$section_items_array = array(); -$section_items = ''; -foreach($_SESSION['availablePDFFields'] as $module => $values) { - $modules[] = $module; - foreach($values as $attribute) { - $section_items_array[] = $module . '_' . $attribute; - $section_items .= "\n"; - } -} -$modules = join(',',$modules); - -$logoFiles = getAvailableLogos(); -$logos = '\n"; -foreach($logoFiles as $logoFile) { - $logos .= "\n"; -} - -// print header -echo $_SESSION['header']; -// TODO Change enctype of form -?> - LDAP Account Manager - - - -
-
- - - - - - - - - - - - - - - - - - - - - - -
-
- - - - - - - - - - - - - - -
- : - - - - -
- : - - - - -
-
-
-
-
-
- - - - -' . _('Beginning') . "\n"; -// Print every entry in the current structure -foreach($_SESSION['currentPDFStructure'] as $key => $entry) { - // Create the up/down/remove links - $links = "\n" . - "\n" . - "\n" . - "\n" . - "\n"; - // We have a new section to start - if($entry['tag'] == "SECTION" && $entry['type'] == "open") { - $name = $entry['attributes']['NAME']; - ?> - - - - - - - ' . $section_headline . "\n"; - ?> - - - - ' . _('Static text') . "\n"; - ?> - - - - - - - - - - - - - - - - - - - - - - - -
\n" . - "\""\n\n\n" . - "\""\n\n\n" . - "\""\n
- - - - - - -    - - -
-
-
- - - -
- - - -
-
-
- - - - -
-
-

 

-
- - -
- - - - - $fields) { - ?> - - - - - - - - - - - -
- -
- - -
-
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - -
-
- - - - - - - - - - - - -
- - - : -
- - - -
-
-
-
-
-
- - - - - - - - -
- - - -
-
-
- : - - -
-
-
- -
-
-
-
- - - - - - - - - - - - - - - - - - - -
- : - - - - -
-   -
- - - - "> - - "> - -   -
-
-
- - -
- - - \ No newline at end of file diff --git a/lam/templates/profedit/profiledelete.php b/lam/templates/profedit/profiledelete.php deleted file mode 100644 index 25f88a89..00000000 --- a/lam/templates/profedit/profiledelete.php +++ /dev/null @@ -1,94 +0,0 @@ -server()) { - metaRefresh("../login.php"); - exit; -} - -// print standard header -echo $_SESSION['header']; -echo ("" . _("Delete profile") . "\n"); -echo "\n"; -echo ("\n\n


\n"); - -// check if admin has submited delete operation -if ($_POST['submit']) { - // delete profile - if (!delAccountProfile($_POST['del'], $_POST['type'])) { - StatusMessage("ERROR", _("Unable to delete profile!"), $_POST['del'] . "." . $_POST['type']); - } - else StatusMessage("INFO", _("Deleted profile:"), $_POST['del'] . "." . $_POST['type']); - echo ("
" . _("Back to Profile Editor") . ""); - echo ("\n"); - exit; -} - -// check if admin has aborted delete operation -if ($_POST['abort']) { - StatusMessage("INFO", "", _("Delete operation canceled.")); - echo ("
" . _("Back to Profile Editor") . ""); - echo ("\n"); - exit; -} - -// check if right type was given -$type = $_GET['type']; -if (($type == "user") || ($type == "host") || ($type == "group")) { - // user profile - echo ("

" . _("Do you really want to delete this profile?") . " "); - echo ($_GET['del'] . "

\n"); - echo ("
\n"); - echo ("

\n"); - echo ("\n"); - echo ("\n"); - echo (""); - echo (""); - echo ("

\n"); -} -else{ - // no valid profile type - StatusMessage("ERROR", "", _("Wrong or missing type!") . " " . $type); - echo ("" . _("Back to Profile Editor") . ""); -} diff --git a/lam/templates/profedit/profilemain.php b/lam/templates/profedit/profilemain.php deleted file mode 100644 index 25764111..00000000 --- a/lam/templates/profedit/profilemain.php +++ /dev/null @@ -1,164 +0,0 @@ - 'user', 'title' => _('User profiles'), 'profiles' => ""), - array('scope' => 'group', 'title' => _('Group profiles'), 'profiles' => ""), - array('scope' => 'host', 'title' => _('Host profiles'), 'profiles' => "") -); - -// check if user is logged in, if not go to login -if (!$_SESSION['ldap'] || !$_SESSION['ldap']->server()) { - metaRefresh("../login.php"); - exit; -} - -// check if user has pressed submit or abort button -if ($_POST['submit']) { - // on abort go back to main page - if ($_POST['abort']) { - metaRefresh("../lists/listusers.php"); - } - // on submit forward to other profile pages - elseif ($_POST['submit']) { - for ($i = 0; $i < sizeof($profileClasses); $i++) { - // create new profile - if ($_POST['profile'] == ("new" . $profileClasses[$i]['scope'])) { - metaRefresh("profilepage.php?type=" . $profileClasses[$i]['scope']); - } - // edit profile - elseif($_POST['profile'] == ("edit" . $profileClasses[$i]['scope'])) { - metaRefresh("profilepage.php?type=" . $profileClasses[$i]['scope'] . - "&edit=" . $_POST['e_' . $profileClasses[$i]['scope']]); - } - // delete profile - elseif($_POST['profile'] == ("del" . $profileClasses[$i]['scope'])) { - metaRefresh("profiledelete.php?type=" . $profileClasses[$i]['scope'] . - "&del=" . $_POST['d_' . $profileClasses[$i]['scope']]); - } - } - } - exit; -} - -// get list of profiles for each account type -for ($i = 0; $i < sizeof($profileClasses); $i++) { - $profileList = getAccountProfiles($profileClasses[$i]['scope']); - $profiles = ""; - for ($l = 0; $l < sizeof($profileList); $l++) { - $profiles = $profiles . "\n"; - } - $profileClasses[$i]['profiles'] = $profiles; -} - -echo $_SESSION['header']; - - -echo "LDAP Account Manager\n"; -echo "\n"; -echo "\n"; -echo "\n"; - -echo "

\n"; - -echo "
\n"; - -for ($i = 0; $i < sizeof($profileClasses); $i++) { - - echo "
\n"; - echo "\n"; - echo "" . $profileClasses[$i]['title'] . "\n"; - echo "\n"; - echo "\n"; - - // new profile - echo "\n"; - echo "\n"; - echo "\n"; - echo "\n"; - - // edit profile - echo "\n"; - echo "\n"; - echo "\n"; - echo "\n"; - echo "\n"; - - // delete profile - echo "\n"; - echo "\n"; - echo "\n"; - echo "\n"; - echo "\n"; - echo "
\n"; - echo "\n"; - echo "" . _("Create a new profile") . "
\n"; - echo "\n"; - echo "\n"; - echo "\n"; - echo "" . _("Edit profile") . "
\n"; - echo "\n"; - echo "\n"; - echo "\n"; - echo "" . _("Delete profile") . "
\n"; - echo "
\n"; - - echo "

\n"; - -} - - -echo "

\n"; -echo "\n"; -echo "\n"; -echo "

\n"; - -echo "
\n"; -echo "\n"; -echo "\n"; - -?> diff --git a/lam/templates/profedit/profilepage.php b/lam/templates/profedit/profilepage.php deleted file mode 100644 index 721d9fda..00000000 --- a/lam/templates/profedit/profilepage.php +++ /dev/null @@ -1,251 +0,0 @@ -server()) { - metaRefresh("../login.php"); - exit; -} - -// copy type and profile name from POST to GET -if (isset($_POST['profname'])) $_GET['edit'] = $_POST['profname']; -if (isset($_POST['accounttype'])) $_GET['type'] = $_POST['accounttype']; - -// abort button was pressed -// back to profile editor -if ($_POST['abort']) { - metaRefresh("profilemain.php"); - exit; -} - -// print header -echo $_SESSION['header']; -echo "\n\n"; -echo "
\n"; - -// save button was presed -if ($_POST['save']) { - // create option array to check and save - $options = array(); - $opt_keys = array_keys($_SESSION['profile_types']); - foreach ($opt_keys as $element) { - // text fields - if ($_SESSION['profile_types'][$element] == "text") { - $options[$element] = array($_POST[$element]); - } - // checkboxes - elseif ($_SESSION['profile_types'][$element] == "checkbox") { - if ($_POST[$element] == "on") $options[$element] = array('true'); - else $options[$element] = array('false'); - } - // dropdownbox - elseif ($_SESSION['profile_types'][$element] == "select") { - $options[$element] = array($_POST[$element]); - } - // multiselect - elseif ($_SESSION['profile_types'][$element] == "multiselect") { - $options[$element] = $_POST[$element]; // value is already an array - } - } - - // remove double slashes if magic quotes are on - if (get_magic_quotes_gpc() == 1) { - foreach ($opt_keys as $element) { - if (is_string($options[$element][0])) $options[$element][0] = stripslashes($options[$element][0]); - } - } - - // check options - $errors = checkProfileOptions($_POST['accounttype'], $options); - // print error messages if any - if (sizeof($errors) > 0) { - for ($i = 0; $i < sizeof($errors); $i++) { - if (sizeof($errors[$i]) > 3) { // messages with additional variables - StatusMessage($errors[$i][0], $errors[$i][1], $errors[$i][2], $errors[$i][3]); - } - else { - StatusMessage($errors[$i][0], $errors[$i][1], $errors[$i][2]); - } - } - echo "
\n"; - } - else { // input data is valid, save profile - // save profile - if (saveAccountProfile($options, $_POST['profname'], $_POST['accounttype'])) { - echo StatusMessage("INFO", _("Profile was saved."), $_POST['profname']); - echo ("

" . _("Back to Profile Editor") . "

"); - echo ""; - exit(); - } - else StatusMessage("ERROR", _("Unable to save profile!"), $_POST['profname']); - } -} - -// empty list of attribute types -$_SESSION['profile_types'] = array(); - -// check if account type is valid -$type = $_GET['type']; -if (!(($type == 'user') || ($type == 'group') || ($type == 'host'))) meta_refresh('profilemain.php'); - -// get module options -$options = getProfileOptions($type); - -// load old profile or POST values if needed -$old_options = array(); -if (isset($_POST['save'])) { - $postKeys = array_keys($_POST); - for ($i = 0; $i < sizeof($postKeys); $i++) { - if (!is_array($_POST[$postKeys[$i]])) { - $old_options[$postKeys[$i]] = array($_POST[$postKeys[$i]]); - } - else { - $old_options[$postKeys[$i]] = $_POST[$postKeys[$i]]; - } - } -} -elseif (isset($_GET['edit'])) { - $old_options = loadAccountProfile($_GET['edit'], $type); -} - -// display formular -echo ("
\n"); - -// suffix box -// get root suffix -$rootsuffix = $_SESSION['config']->get_Suffix($type); -// get subsuffixes -$suffixes = array(); -foreach ($_SESSION['ldap']->search_units($rootsuffix) as $suffix) { - $suffixes[] = $suffix; -} -// get RDNs -$rdns = getRDNAttributes($type); - -echo "
\n" . _("LDAP") . "\n"; - echo ""; - echo ""; - // LDAP RDN - echo ""; - echo "
"; - // LDAP suffix - echo _("LDAP suffix") . ":"; - echo ""; - echo "\n"; - echo ""; - // help link - echo " "; - echo "\"""; - echo "
\n"; - echo "
"; - echo _("RDN identifier") . ":"; - echo ""; - echo "\n"; - echo ""; - // help link - echo " "; - echo "\"""; - echo "
\n"; - echo "
"; -echo "
\n
\n"; -$_SESSION['profile_types']['ldap_suffix'] = 'select'; -$_SESSION['profile_types']['ldap_rdn'] = 'select'; - -// index for tab order (1 is LDAP suffix) -$tabindex = 2; -$tabindexLink = 1000; // links are at the end - -// display module options -$modules = array_keys($options); -for ($m = 0; $m < sizeof($modules); $m++) { - // ignore modules without options - if (sizeof($options[$modules[$m]]) < 1) continue; - echo "
\n"; - echo "" . getModuleAlias($modules[$m], $type) . "\n"; - $profileTypes = parseHtml($modules[$m], $options[$modules[$m]], $old_options, true, $tabindex, $tabindexLink, $type); - $_SESSION['profile_types'] = array_merge($profileTypes, $_SESSION['profile_types']); - echo "
\n"; - echo "
"; -} - -// profile name and submit/abort buttons -echo ("" . _("Profile name") . ": \n"); -$tabindex++; -echo ("\n"); -// help link -echo ""; -echo "\"""; -echo "

\n"; -$tabindex++; -echo ("\n"); -$tabindex++; -echo ("\n"); -$tabindex++; -echo ("\n"); -echo "\n"; - -echo ("
\n"); - -?> diff --git a/lam/templates/schema/schema.php b/lam/templates/schema/schema.php deleted file mode 100644 index d6465086..00000000 --- a/lam/templates/schema/schema.php +++ /dev/null @@ -1,446 +0,0 @@ -LDAP Account Manager\n"; -echo "\n"; -echo "\n"; - - -$view = isset( $_GET['view'] ) ? $_GET['view'] : 'objectClasses'; -$viewvalue = isset( $_GET['viewvalue'] ) ? $_GET['viewvalue'] : null; -if( trim( $viewvalue ) == "" ) - $viewvalue = null; -if( ! is_null( $viewvalue ) ) - $viewed = false; - -?> - - - -
-
- ' . _('Object classes').'' ); ?> - | - ' . _('Attribute types').'' ); ?> - | - ' . _('Syntaxes').'' ); ?> - | - ' . _('Matching rules').'' ); ?> -
-
- - - -\n"; - echo "" . _('Syntax OID') . "" . _('Description') . "\n"; - flush(); - $counter=1; - $schema_syntaxes = get_schema_syntaxes(null); - if( ! $schema_syntaxes ) StatusMessage("ERROR", _("Unable to retrieve schema!"), ""); - foreach( $schema_syntaxes as $syntax ) { - $counter++; - $oid = htmlspecialchars( $syntax->getOID() ); - $desc = htmlspecialchars( $syntax->getDescription() ); - if( $highlight_oid && $highlight_oid == $oid ) - echo ""; - else - echo ""; - echo "$oid$desc\n\n"; - } - echo "\n"; - -} elseif( $view == 'attributes' ) { - flush(); - $schema_attrs = get_schema_attributes(null); - $schema_object_classes = get_schema_objectclasses(null); - if( ! $schema_attrs || ! $schema_object_classes ) - StatusMessage("ERROR", _("Unable to retrieve schema!"), ""); - - ?> - : -
-
- -
- - - getName() ) ) { - if( ! is_null( $viewvalue ) ) - $viewed = true; - flush(); - echo "\n\n"; - $counter = 0; - - echo "\n"; - echo "\n"; - echo "\n"; - echo "\n\n"; - echo "\n"; - echo "\n"; - echo "\n"; - echo "\n\n"; - - echo "\n"; - echo '\n"; - echo "\n"; - echo "\n\n"; - - echo "\n"; - echo "\n"; - echo "\n"; - echo "\n\n"; - - echo "\n"; - echo "\n"; - echo "\n"; - echo "\n\n"; - - echo "\n"; - echo "\n"; - echo "\n"; - echo "\n\n"; - - echo "\n"; - echo "\n"; - echo "\n"; - echo "\n\n"; - - echo "\n"; - echo "\n"; - echo "\n"; - echo "\n\n"; - - echo "\n"; - echo "\n"; - echo "\n"; - echo "\n\n"; - - echo "\n"; - echo "\n"; - echo "\n"; - echo "\n\n"; - - echo "\n"; - echo "\n"; - echo "\n"; - echo "\n\n"; - - echo "\n"; - echo "\n"; - echo "\n"; - echo "\n\n"; - - echo "\n"; - echo "\n"; - echo "\n"; - echo "\n\n"; - - echo "\n"; - echo "\n"; - echo ""; - echo "\n\n"; - - echo "\n"; - echo "\n"; - echo ""; - echo "\n\n"; - - flush(); - } - } - echo "
" . $attr->getName() . "
"._('Description')."" . ( $attr->getDescription() == null ? '('._('No description').')' : $attr->getDescription() ). "
"._('OID')."" . $attr->getOID() . "
'._('Obsolete')."?" . ( $attr->getIsObsolete() ? '' . _('Yes') . '' : _('No') ) . "
"._('Inherits from').""; - if( $attr->getSupAttribute()==null ) - echo '('._('none').')'; - else - echo "getSupAttribute() ) . "\">" . $attr->getSupAttribute() . "
"._('Equality')."" . ( $attr->getEquality() == null ? '('._('not specified').')' : "getEquality()."\">".$attr->getEquality()."" ) . "
"._('Ordering')."" . ( $attr->getOrdering()==null? '('._('not specified').')' : $attr->getOrdering() ) . "
"._('Substring Rule')."" . ( $attr->getSubstr()==null? '('._('not specified').')' : $attr->getSubstr() ) . "
"._('Syntax').""; - if( null != $attr->getType() ) { - echo "getSyntaxOID() . "#" . $attr->getSyntaxOID(); - echo "\">" . $attr->getType() . " (" . $attr->getSyntaxOID() . ")"; - } else { - echo $attr->getSyntaxOID(); - } - echo "
"._('Single valued')."" . ( $attr->getIsSingleValue() ? _('Yes') : _('No') ) . "
"._('Collective')."?" . ( $attr->getIsCollective() ? _('Yes') : _('No') ) . "
"._('User modification')."" . ( $attr->getIsNoUserModification() ? _('No') : _('Yes') ) . "
"._('Usage')."" . ( $attr->getUsage() ? $attr->getUsage() : '('._('not specified').')' ) . "
"._('Maximum length').""; - if ( $attr->getMaxLength() === null ) { echo '('._('not applicable').')';} - else { - echo number_format( $attr->getMaxLength() ) ." "; - if ( $attr->getMaxLength()>1) {echo _('characters');} - else { echo _('character') ;} - } - echo "
"._('Aliases').""; - if( count( $attr->getAliases() ) == 0 ) - echo '('._('none').')'; - else - foreach( $attr->getAliases() as $alias_attr_name ) - echo "$alias_attr_name "; - echo "
"._('Used by object classes').""; - if( count( $attr->getUsedInObjectClasses() ) == 0 ) - echo '('._('none').')'; - else - foreach( $attr->getUsedInObjectClasses() as $used_in_oclass) - echo "$used_in_oclass "; - echo "
\n"; - -} elseif( $view == 'matching_rules' ) { - $schema_matching_rules = get_schema_matching_rules(null); - echo '' . _('Jump to a matching rule').'
'; - echo '
'; - echo ''; - echo ''; - echo ''; - echo '
'; - echo "\n\n\n"; - echo "\n"; - flush(); - $counter=1; - $schema_matching_rules = get_schema_matching_rules(null); - if( ! $schema_matching_rules ) StatusMessage("ERROR", _("Unable to retrieve schema!"), ""); - foreach( $schema_matching_rules as $rule ) { - $counter++; - $oid = htmlspecialchars( $rule->getOID() ); - $desc = htmlspecialchars( $rule->getName() ); - if ( $viewvalue==null || $viewvalue==($rule->getName() )) { - if( ! is_null( $viewvalue ) ) - $viewed = true; - if( null != $rule->getDescription() ) - $desc .= ' (' . $rule->getDescription() . ')'; - if( true === $rule->getIsObsolete() ) - $desc .= ' ' . _('Obsolete') . ''; - echo ""; - echo ""; - echo ""; - echo "\n"; - } - } - echo "
" . _('Matching rule OID') . "" . _('Name') . ""._('Used by attributes')."
$oid$desc"; - if( count( $rule->getUsedByAttrs() ) == 0 ) { - echo "
(" . _('none') . ")


\n"; - } else { - echo "
"; - echo ""; - echo "
\n"; - } - echo "
\n"; - -} elseif( $view == 'objectClasses' ) { - flush(); - $schema_oclasses = get_schema_objectclasses(null); - if( ! $schema_oclasses ) StatusMessage("ERROR", _("Unable to retrieve schema!"), ""); - ?> - : -
- -
- - - - $oclass ) { - foreach( $oclass->getSupClasses() as $parent_name ) { - $parent_name = $parent_name; - if( isset( $schema_oclasses[ $parent_name ] ) ) { - $schema_oclasses[ $parent_name ]->addChildObjectClass( $oclass->getName() ); - } - } - - } ?> - -
- $oclass ) { - if ( $viewvalue==null || 0 == strcasecmp( $viewvalue, $oclass->getName() ) ){ - if( ! is_null( $viewvalue ) ) - $viewed = true; - ?> - -

getName(); ?>

-

: getOID(); ?>

- getDescription() ) { ?> -

: getDescription(); ?>

- -

: getType(); ?>

- getIsObsolete() == true ) { ?> -

- - -

: getSupClasses() ) == 0 ) - echo "(" . _('none') . ")"; - else - foreach( $oclass->getSupClasses() as $i => $object_class ) { - echo '' . htmlspecialchars( $object_class ) . ''; - if( $i < count( $oclass->getSupClasses() ) - 1 ) - echo ', '; - } - ?>

- -

: getName(), 'top' ) ) - echo "(all)"; - elseif( count( $oclass->getChildObjectClasses() ) == 0 ) - echo "(" . _('none') . ")"; - else - foreach( $oclass->getChildObjectClasses() as $i => $object_class ) { - echo '' . htmlspecialchars( $object_class ) . ''; - if( $i < count( $oclass->getChildObjectClasses() ) - 1 ) - echo ', '; - } - ?>

- - - - - - - - - - -
- getMustAttrs($schema_oclasses) ) > 0 ) { - echo '"; - } else - echo "
(" . _('none') . ")
\n"; - ?> -
- getMayAttrs($schema_oclasses) ) > 0 ) { - echo '"; - } - else - echo "
(" . _('none') . ")
\n"; - ?> - -
- - - - - - - - - diff --git a/lam/templates/tools.php b/lam/templates/tools.php deleted file mode 100644 index 6a9338ef..00000000 --- a/lam/templates/tools.php +++ /dev/null @@ -1,120 +0,0 @@ -\n"; -echo "\n"; -echo ""; - -echo "\n"; - -// list of tools and descriptions -$tools = array(); -// profile editor -$tools[] = array( - "name" => _("Profile editor"), - "description" => _("Here you can manage your account profiles."), - "link" => "profedit/profilemain.php" - ); - -// Samba 3 domains -if ($_SESSION['config']->get_Suffix('domain') && ($_SESSION['config']->get_Suffix('domain') != "")) { -$tools[] = array( - "name" => _("Samba 3 domains"), - "description" => _("Manages Samba 3 domain accounts."), - "link" => "lists/listdomains.php" - ); -} - -// file upload -$tools[] = array( - "name" => _("File upload"), - "description" => _("Creates accounts by uploading a CSV formated file."), - "link" => "masscreate.php" - ); - -// OU editor -$tools[] = array( - "name" => _("OU editor"), - "description" => _("Manages OU objects in your LDAP tree."), - "link" => "ou_edit.php" - ); - -// PDF editor -$tools[] = array( - "name" => _("PDF editor"), - "description" => _("This tool allows you to customize the PDF pages."), - "link" => "pdfedit/pdfmain.php" - ); - -// schema browser -$tools[] = array( - "name" => _("Schema browser"), - "description" => _("Here you can browse LDAP object classes and attributes."), - "link" => "schema/schema.php" - ); - -echo "

 

\n"; - -// print tools table -echo "\n"; - -for ($i = 0; $i < sizeof($tools); $i++) { - echo "\n"; - echo "\n"; - echo "\n"; - echo "\n"; - echo "\n"; - echo "\n"; - echo "\n"; -} - -echo "
   
"; - echo "" . $tools[$i]['name'] . ""; - echo "

     "; - echo $tools[$i]['description']; - echo "   
\n"; - - -echo "\n"; -echo "\n"; - -?> diff --git a/lam/templates/tree/add_attr.php b/lam/templates/tree/add_attr.php deleted file mode 100644 index 0ded677b..00000000 --- a/lam/templates/tree/add_attr.php +++ /dev/null @@ -1,166 +0,0 @@ -LDAP Account Manager\n"; - echo "\n"; - echo "\n"; - StatusMessage("ERROR", _('You left the attribute value blank. Please go back and try again.'), ''); - echo ""; - exit; -} - -// special case for binary attributes (like jpegPhoto and userCertificate): -// we must go read the data from the file and override $val with the binary data -// Secondly, we must check if the ";binary" option has to be appended to the name -// of the attribute. - -if( $is_binary_val ) { - if (( 0 == $_FILES['val']['size'] ) || (! is_uploaded_file( $_FILES['val']['tmp_name'] ))) { - echo $_SESSION['header']; - echo "LDAP Account Manager\n"; - echo "\n"; - echo "\n"; - StatusMessage("ERROR", _('File upload failed!'), ''); - echo ""; - exit; - } - $file = $_FILES['val']['tmp_name']; - $f = fopen( $file, 'r' ); - $binary_data = fread( $f, filesize( $file ) ); - fclose( $f ); - $val = $binary_data; - - if( is_binary_option_required( $attr ) ) - $attr .=";binary"; -} - -// Automagically hash new userPassword attributes according to the -// chosen in config.php. -if( 0 == strcasecmp( $attr, 'userpassword' ) ) { - $val = pwd_hash($val); -} -elseif(0 == strcasecmp( $attr , 'sambalmpassword') ) { - $val = lmPassword($val); -} -elseif (0 == strcasecmp( $attr , 'sambantpassword' )) { - $val = ntPassword($val); -} - -$ds = $_SESSION['ldap']->server; -$new_entry = array( $attr => $val ); -$result = @ldap_mod_add( $ds, $dn, $new_entry ); - -if( $result ) - header( "Location: edit.php?dn=$encoded_dn&modified_attrs[]=$encoded_attr" ); -else { - echo $_SESSION['header']; - echo "LDAP Account Manager\n"; - echo "\n"; - echo "\n"; - StatusMessage("ERROR", _('Failed to add the attribute.'), ldap_error($ds)); - echo ""; - exit; -} - -// check if we need to append the ;binary option to the name -// of some binary attribute - -function is_binary_option_required( $attr ){ - - // list of the binary attributes which need the ";binary" option - $binary_attributes_with_options = array( - // Superior: Ldapv3 Syntaxes (1.3.6.1.4.1.1466.115.121.1) - '1.3.6.1.4.1.1466.115.121.1.8' => "userCertificate", - '1.3.6.1.4.1.1466.115.121.1.8' => "caCertificate", - '1.3.6.1.4.1.1466.115.121.1.10' => "crossCertificatePair", - '1.3.6.1.4.1.1466.115.121.1.9' => "certificateRevocationList", - '1.3.6.1.4.1.1466.115.121.1.9' => "authorityRevocationList", - // Superior: Netscape Ldap attributes types (2.16.840.1.113730.3.1) - '2.16.840.1.113730.3.1.40' => "userSMIMECertificate" - ); - - // quick check by attr name (short circuits the schema check if possible) - //foreach( $binary_attributes_with_options as $oid => $name ) - //if( 0 == strcasecmp( $attr, $name ) ) - //return true; - - $schema_attr = get_schema_attribute( $attr ); - if( ! $schema_attr ) - return false; - - $syntax = $schema_attr->getSyntaxOID(); - if( isset( $binary_attributes_with_options[ $syntax ] ) ) - return true; - - return false; -} - -?> diff --git a/lam/templates/tree/add_attr_form.php b/lam/templates/tree/add_attr_form.php deleted file mode 100644 index dbac2a35..00000000 --- a/lam/templates/tree/add_attr_form.php +++ /dev/null @@ -1,198 +0,0 @@ -LDAP Account Manager\n"; -echo "\n"; -echo "\n"; - -$dn = $_GET['dn']; -$encoded_dn = rawurlencode( $dn ); -$rdn = get_rdn( $dn ); -?> - - - -

-

:

- -getMustAttrNames( $schema_oclasses ), - $schema_oclass->getMayAttrNames( $schema_oclasses ), - $avail_attrs ); -} - -$avail_attrs = array_unique( $avail_attrs ); -$avail_attrs = array_filter( $avail_attrs, "not_an_attr" ); -sort( $avail_attrs ); - -$avail_binary_attrs = array(); -foreach( $avail_attrs as $i => $attr ) { - if( is_attr_binary( $attr ) ) { - $avail_binary_attrs[] = $attr; - unset( $avail_attrs[ $i ] ); - } -} - -?> - -
-
- - - - - 0 ) { ?> - -
-
-
- - - - - -
- - -
-
- -
-
- - - - - 0 ) { ?> - -
- - -
- - - - " . _('Your PHP configuration has disabled file uploads. Please check php.ini before proceeding.') . "
"; - else - echo "
" . sprintf( _('Maximum file size: %s'), ini_get( 'upload_max_filesize' ) ) . "
"; - ?> -
- - -
-
- - - - -
- - - - $values ) - if( 0 == strcasecmp( $attr, $x ) ) - return false; - return true; -} - - -?> diff --git a/lam/templates/tree/add_oclass.php b/lam/templates/tree/add_oclass.php deleted file mode 100644 index 485e4dc3..00000000 --- a/lam/templates/tree/add_oclass.php +++ /dev/null @@ -1,97 +0,0 @@ - $new_oclass ); - -if( is_array( $new_attrs ) && count( $new_attrs ) > 0 ) - foreach( $new_attrs as $attr => $val ) { - $new_entry[ $attr ] = $val; - } - -$ds = $_SESSION['ldap']->server; -$add_res = @ldap_mod_add( $ds, $dn, $new_entry ); - -if( ! $add_res ) -{ - echo $_SESSION['header']; - - echo "LDAP Account Manager\n"; - echo "\n"; - echo "\n"; - StatusMessage('ERROR', _("Was unable to modify attribtues from DN: %s."), ldap_error( $ds ), array($dn)); - echo ""; -} -else -{ - header( "Location: edit.php?dn=$encoded_dn&modified_attrs[]=objectclass" ); -} - -?> diff --git a/lam/templates/tree/add_oclass_form.php b/lam/templates/tree/add_oclass_form.php deleted file mode 100644 index 936a23fb..00000000 --- a/lam/templates/tree/add_oclass_form.php +++ /dev/null @@ -1,163 +0,0 @@ - $junk ) - $current_attrs[] = strtolower($attr); - -// grab the required attributes for the new objectClass -$oclass = get_schema_objectclass( $new_oclass ); -if( $oclass ) - $must_attrs = $oclass->getMustAttrs(); -else - $must_attrs = array(); - -// We don't want any of the attr meta-data, just the string -//foreach( $must_attrs as $i => $attr ) - //$must_attrs[$i] = $attr->getName(); - -// build a list of the attributes that this new objectClass requires, -// but that the object does not currently contain -$needed_attrs = array(); -foreach( $must_attrs as $attr ) { - $attr = get_schema_attribute( $attr->getName() ); - //echo "
"; var_dump( $attr ); echo "
"; - // First, check if one of this attr's aliases is already an attribute of this entry - foreach( $attr->getAliases() as $alias_attr_name ) - if( in_array( strtolower( $alias_attr_name ), $current_attrs ) ) - // Skip this attribute since it's already in the entry - continue; - if( in_array( strtolower($attr->getName()), $current_attrs ) ) - continue; - - // We made it this far, so the attribute needs to be added to this entry in order - // to add this objectClass - $needed_attrs[] = $attr; -} - -if( count( $needed_attrs ) > 0 ) -{ - echo $_SESSION['header']; - - echo "LDAP Account Manager\n"; - echo "\n"; - echo "\n"; - ?> - - -

-

- -
- -
- - - - - - - $attr ) { ?> - - - - -
getName()); ?>
-
-
-
-
- - - - - server; - $add_res = @ldap_mod_add( $ds, $dn, array( 'objectClass' => $new_oclass ) ); - if( ! $add_res ) { - echo $_SESSION['header']; - - echo "LDAP Account Manager\n"; - echo "\n"; - echo "\n"; - StatusMessage('ERROR', _("Was unable to modify attribtues from DN: %s."), ldap_error( $ds ), array($dn)); - echo ""; - } - else - header( "Location: edit.php?dn=$encoded_dn&modified_attrs[]=objectClass" ); - -} - -?> diff --git a/lam/templates/tree/add_value.php b/lam/templates/tree/add_value.php deleted file mode 100644 index 6f38ed04..00000000 --- a/lam/templates/tree/add_value.php +++ /dev/null @@ -1,100 +0,0 @@ -server; - -// special case for binary attributes: -// we must go read the data from the file. -if( $is_binary_val ) -{ - $file = $_FILES['new_value']['tmp_name']; - $f = fopen( $file, 'r' ); - $binary_value = fread( $f, filesize( $file ) ); - fclose( $f ); - $new_value = $binary_value; -} - -$new_entry = array( $attr => $new_value ); - -$add_result = @ldap_mod_add( $ds, $dn, $new_entry ); - -if( ! $add_result ) { - echo $_SESSION['header']; - - echo "LDAP Account Manager\n"; - echo "\n"; - echo "\n"; - StatusMessage('ERROR', _('Adding attribute failed!'), ldap_error( $ds )); - echo ""; - exit; -} - -header( "Location: edit.php?dn=$encoded_dn&modified_attrs[]=$encoded_attr" ); - -?> diff --git a/lam/templates/tree/add_value_form.php b/lam/templates/tree/add_value_form.php deleted file mode 100644 index 65e135fe..00000000 --- a/lam/templates/tree/add_value_form.php +++ /dev/null @@ -1,201 +0,0 @@ -LDAP Account Manager\n"; -echo "\n"; -echo "\n"; - -$dn = isset( $_GET['dn'] ) ? $_GET['dn'] : null; -$encoded_dn = rawurlencode( $dn ); -if( null != $dn ) { - $rdn = get_rdn( $dn ); -} else { - $rdn = null; -} -$attr = $_GET['attr']; -$encoded_attr = rawurlencode( $attr ); -$current_values = get_object_attr( $dn, $attr ); -$num_current_values = ( is_array($current_values) ? count($current_values) : 1 ); -$is_object_class = ( 0 == strcasecmp( $attr, 'objectClass' ) ) ? true : false; -$is_jpeg_photo = is_jpeg_photo( $attr ); //( 0 == strcasecmp( $attr, 'jpegPhoto' ) ) ? true : false; - -if( $is_object_class ) { - // fetch all available objectClasses and remove those from the list that are already defined in the entry - $schema_oclasses = get_schema_objectclasses(); - foreach( $current_values as $oclass ) - unset( $schema_oclasses[ strtolower( $oclass ) ] ); -} else { - $schema_attr = get_schema_attribute( $attr ); -} - -?> - - - -

- : - -

-

- :

- -" . htmlspecialchars($attr); ?>
- - -
    - -
  • )
  • - -
  • - -
- -

- -

- - - - -
    - 1 )*/ { - foreach( $current_values as $val ) { ?> - -
  • - - - - -
  • - - -
- - - - -
-
- - - -
- - - -
- - - - > - - - - - - - - - - - getMaxLength() ) - echo "maxlength=\"" . $schema_attr->getMaxLength() . "\" "; - ?>name="new_value" size="40" value="" /> - - - - -
- - getDescription() ) { ?> - : getDescription(); ?>
- - - getType() ) { ?> - : getType(); ?>
- - - getMaxLength() ) { ?> - : getMaxLength() ); ?>
- - -
- - - - - diff --git a/lam/templates/tree/collapse.php b/lam/templates/tree/collapse.php deleted file mode 100644 index b8fcae4a..00000000 --- a/lam/templates/tree/collapse.php +++ /dev/null @@ -1,75 +0,0 @@ - diff --git a/lam/templates/tree/create.php b/lam/templates/tree/create.php deleted file mode 100644 index 6ad3d7bb..00000000 --- a/lam/templates/tree/create.php +++ /dev/null @@ -1,185 +0,0 @@ - $val ) { - if( $val == '' ) { - echo $_SESSION['header']; - echo "LDAP Account Manager\n"; - echo "\n"; - echo "\n"; - - StatusMessage("ERROR", _('You left the value blank for required attribute: %s.'), '', array(htmlspecialchars($attr))); - - echo ""; - exit; - } - $new_entry[ $attr ][] = $val; - } -} - -if( isset( $attrs ) && is_array( $attrs ) ) { - foreach( $attrs as $i => $attr ) { - if( is_attr_binary( $attr ) ) { - if( isset( $_FILES['vals']['name'][$i] ) && $_FILES['vals']['name'][$i] != '' ) { - // read in the data from the file - $file = $_FILES['vals']['tmp_name'][$i]; - $f = fopen( $file, 'r' ); - $binary_data = fread( $f, filesize( $file ) ); - fclose( $f ); - $val = $binary_data; - $new_entry[ $attr ][] = $val; - } - } else { - $val = isset( $vals[$i] ) ? $vals[$i] : ''; - if( '' !== trim($val) ) - $new_entry[ $attr ][] = $val; - } - } -} - -$new_entry['objectClass'] = $object_classes; -if( ! in_array( 'top', $new_entry['objectClass'] ) ) - $new_entry['objectClass'][] = 'top'; - -foreach( $new_entry as $attr => $vals ) { - if( ! is_attr_binary( $attr ) ) - if( is_array( $vals ) ) { - foreach( $vals as $i => $v ) { - $new_entry[ $attr ][ $i ] = $v; - } - } - else { - $new_entry[ $attr ] = $vals; - } -} - -//echo "
"; var_dump( $new_dn );print_r( $new_entry ); echo "
"; - -$ds = $_SESSION['ldap']->server; - -// Check the user-defined custom call back first -$add_result = @ldap_add( $ds, $new_dn, $new_entry ); -if( $add_result ) -{ - $redirect_url = "edit.php?dn=" . rawurlencode( $new_dn ); - - if( array_key_exists( 'tree', $_SESSION ) ) - { - $tree = $_SESSION['tree']; - $tree_icons = $_SESSION['tree_icons']; - - if( isset( $tree[$container] ) ) { - $tree[$container][] = $new_dn; - sort( $tree[$container] ); - $tree_icons[$new_dn] = get_icon( $new_dn ); - } - - $_SESSION['tree'] = $tree; - $_SESSION['tree_icons'] = $tree_icons; - session_write_close(); - } - - ?> - \n"; - echo "\n"; - echo "\n"; - echo "\n"; - echo ""; - // print link if refresh does not work - echo "

\n"; - echo "" . _("Click here if you are not directed to the next page.") . "\n"; - echo "

\n"; - echo "\n"; - echo "\n"; - } - ?> - -LDAP Account Manager\n"; - echo "\n"; - echo "\n"; - - StatusMessage("ERROR", _("LAM was unable to create account %s! An LDAP error occured."), ldap_error($ds), array($new_dn)); - - echo "\n"; - } - -?> diff --git a/lam/templates/tree/create_form.php b/lam/templates/tree/create_form.php deleted file mode 100644 index 185bf10c..00000000 --- a/lam/templates/tree/create_form.php +++ /dev/null @@ -1,145 +0,0 @@ -LDAP Account Manager\n"; -echo "\n"; -echo "\n"; -?> - - - -

-

-

-
- - - - - - - - - - - -
- : - - - - - -
- - $template ) { - $i++; - // Balance the columns properly - if( ( count( $templates ) % 2 == 0 && $i == intval( $count / 2 ) ) || - ( count( $templates ) % 2 == 1 && $i == intval( $count / 2 ) + 1 ) ) - echo "
"; - // Check and see if this template should be shown in the list - $isValid = false; - if( isset($template['regexp'] ) ) { - if( @preg_match( "/".$template['regexp']."/i", $container ) ) { - $isValid = true; - } - } else { - $isValid = true; - } - - ?> - - - - - - - -
/> - -
-
-
- -
- - - diff --git a/lam/templates/tree/creation_template.php b/lam/templates/tree/creation_template.php deleted file mode 100644 index 108086b2..00000000 --- a/lam/templates/tree/creation_template.php +++ /dev/null @@ -1,96 +0,0 @@ - $template ) { - if( $template['handler'] == 'custom.php' ) { - $template = $id; - break; - } - } -} - -$template_id = $template; -$template = isset( $templates[$template] ) ? $templates[$template_id] : null; -$ds = $_SESSION['ldap']->server; - -echo $_SESSION['header']; - -echo "LDAP Account Manager\n"; -echo "\n"; -echo "\n"; - -?> - - -

-

''

- -\n"; - -?> diff --git a/lam/templates/tree/delete.php b/lam/templates/tree/delete.php deleted file mode 100644 index 73dcfb2e..00000000 --- a/lam/templates/tree/delete.php +++ /dev/null @@ -1,112 +0,0 @@ -LDAP Account Manager\n"; -echo "\n"; -echo "\n"; -echo ""; - -$dn = $_POST['dn']; -$encoded_dn = rawurlencode( $dn ); - -$ds = $_SESSION['ldap']->server; - -$del_result = @ldap_delete( $ds, $dn ); - -if( $del_result ) -{ - // kill the DN from the tree browser session variable and - // refresh the tree viewer frame (left_frame) - - if( array_key_exists( 'tree', $_SESSION ) ) - { - $tree = $_SESSION['tree']; - if( isset( $tree ) && is_array( $tree ) ) { - - // does it have children? (it shouldn't, but hey, you never know) - if( isset( $tree[$dn] ) ) - unset( $tree[$dn] ); - - // search and destroy - foreach( $tree as $tree_dn => $subtree ) - foreach( $subtree as $key => $sub_tree_dn ) - if( 0 == strcasecmp( $sub_tree_dn, $dn ) ) - unset( $tree[$tree_dn][$key] ); - $_SESSION['tree'] = $tree; - } - } - - ?> - - - -
-
-
- - "; diff --git a/lam/templates/tree/delete_attr.php b/lam/templates/tree/delete_attr.php deleted file mode 100644 index 7d2c47c8..00000000 --- a/lam/templates/tree/delete_attr.php +++ /dev/null @@ -1,83 +0,0 @@ -server; -$res = @ldap_modify( $ds, $dn, $update_array ); -if( $res ) { - $redirect_url = "edit.php?dn=$encoded_dn"; - foreach( $update_array as $attr => $junk ) { - $redirect_url .= "&modified_attrs[]=$attr"; - } - header( "Location: $redirect_url" ); -} -else { - echo $_SESSION['header']; - echo "LDAP Account Manager\n"; - echo "\n"; - echo "\n"; - StatusMessage("ERROR", _('Could not perform ldap_modify operation.'), ldap_error($ds)); - echo ""; - exit; -} - -?> diff --git a/lam/templates/tree/delete_form.php b/lam/templates/tree/delete_form.php deleted file mode 100644 index cda914dc..00000000 --- a/lam/templates/tree/delete_form.php +++ /dev/null @@ -1,183 +0,0 @@ -0 ? true : false; - -echo $_SESSION['header']; - -echo "LDAP Account Manager\n"; -echo "\n"; -echo "\n"; -?> - - - -

-

:

- - - -


- - - - - -
- -

- -
-
- -
-
- -
-
- - - - - - -
-
-
- - -
-
-
-
- - -
-
-
-

- -
-
-
- - -
- - - -
- - - -
- -
-
-:
-
- - - - - - -
-
-
- - -
- -
-
-
- - -
-
-
- -
- -
- - - - - - diff --git a/lam/templates/tree/download_binary_attr.php b/lam/templates/tree/download_binary_attr.php deleted file mode 100644 index 26b413e9..00000000 --- a/lam/templates/tree/download_binary_attr.php +++ /dev/null @@ -1,87 +0,0 @@ -server; - -$search = @ldap_read( $ds, $dn, "(objectClass=*)", array($attr)); -if( ! $search ) { - echo $_SESSION['header']; - echo "LDAP Account Manager\n"; - echo "\n"; - echo "\n"; - StatusMessage("ERROR", _('Encountered an error while performing search.'), ldap_error($ds)); - echo ""; - exit; -} -$entry = ldap_first_entry( $ds, $search ); -$attrs = ldap_get_attributes( $ds, $entry ); -$attr = ldap_first_attribute( $ds, $entry, $attrs ); -$values = ldap_get_values_len( $ds, $entry, $attr ); -$count = $values['count']; - -// Dump the binary data to the browser -header( "Content-type: octet-stream" ); -header( "Content-disposition: attachment; filename=$attr" ); -header( "Expires: Mon, 26 Jul 1997 05:00:00 GMT" ); -header( "Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT" ); -echo $values[$value_num]; - -?> diff --git a/lam/templates/tree/edit.php b/lam/templates/tree/edit.php deleted file mode 100644 index 49d8530e..00000000 --- a/lam/templates/tree/edit.php +++ /dev/null @@ -1,537 +0,0 @@ -LDAP Account Manager\n"; -echo "\n"; -echo "\n"; -?> - - -

-

:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1 ) { ?> - - - - - - $attr ) { - $modified_attrs[$i] = strtolower( $attr ); - } -} -?> - -
- -
">">
- - - -
- - - $vals ) { - $counter++; - $schema_href = "../schema/schema.php?view=attributes&viewvalue=" . real_attr_name($attr); - ?> - - - - - \n"; -} - -?> - - - - - - - - - - -\n"; - echo "
- - -
- 1 ) { for( $i=1; $i<=count($vals); $i++ ) { ?> - "> ()
- -
- \n"; - } - } ?> -
(" . _('No internal attributes') . ")
(" . _('This entry has no attributes') . ")
"; - echo ""; - die(); -} - -uksort( $attrs, 'sortAttrs' ); -foreach( $attrs as $attr => $vals ) { - - flush(); - - $schema_attr = get_schema_attribute( $attr, $dn ); - if( $schema_attr ) - $attr_syntax = $schema_attr->getSyntaxOID(); - else - $attr_syntax = null; - - if( 0 == strcasecmp( $attr, 'dn' ) ) - continue; - - // Setup the $attr_note, which will be displayed to the right of the attr name (if any) - $attr_note = ''; - - $attr_note = ""; - $attr_display = $attr; - - // is this attribute required by an objectClass? - $required_by = ''; - if( $schema_attr ) - foreach( $schema_attr->getRequiredByObjectClasses() as $required ) - if( in_array( strtolower( $required ), arrayLower( $attrs['objectClass'] ) ) ) { - $required_by .= $required . ' '; - } - if( $required_by ) { - if( trim( $attr_note ) ) - $attr_note .= ', '; - $attr_note .= "" . _('required') . " "; - } - ?> - - - - - - - - - - - - - - - - - - - - - - - - - - - \n"; - if( $is_modified_attr ) - echo ''; - continue; - } - - - /* - * Is this attribute binary? - */ - if( is_attr_binary( $attr ) ) { - $href = "download_binary_attr.php?dn=$encoded_dn&attr=$attr"; - ?> - - -
- 1 ) { for( $i=1; $i<=count($vals); $i++ ) { ?> - "> ()
- -
- - - - -
- - - - '; - continue; - } - - - /* - * Note: at this point, the attribute must be text-based (not binary or jpeg) - */ - - - /* - * Is this a userPassword attribute? - */ - if( 0 == strcasecmp( $attr, 'userpassword' ) ) { - $user_password = $vals[0]; - $enc_type = get_enc_type( $user_password ); - - ?> - - - - - - -
- - - - -
- - - - '; - continue; - } - - /* - * Is this a boolean attribute? - */ - if( is_attr_boolean( $attr) ) { - $val = $vals[0]; - ?> - - - - - - - - '; - continue; - } - - /* - * End of special case attributes (non plain text). - */ - - - /* - * This is a plain text attribute, to be displayed and edited in plain text. - */ - foreach( $vals as $i => $val ) { - - $input_name = "new_values[" . htmlspecialchars( $attr ) . "][$i]"; - // We smack an id="..." tag in here that doesn't have [][] in it to allow the - // draw_chooser_link() to identify it after the user clicks. - $input_id = "new_values_" . htmlspecialchars($attr) . "_" . $i; - - ?> - - - - - - type == 'structural') { - echo "$val (" . - _('structural') . ")
"; - ?> - - - - - - - - - - - - - - - - - - - -
- - - - getIsSingleValue() ) - { - $add_href = "add_value_form.php?dn=$encoded_dn&attr=" . rawurlencode( $attr ); - echo "\n"; - } - - ?> - - - - - - - - - $vals ) */ ?> - -
- - - - - - - - - - -
- - -
- -\n"; -?> diff --git a/lam/templates/tree/expand.php b/lam/templates/tree/expand.php deleted file mode 100644 index 1be466fd..00000000 --- a/lam/templates/tree/expand.php +++ /dev/null @@ -1,88 +0,0 @@ - diff --git a/lam/templates/tree/export.php b/lam/templates/tree/export.php deleted file mode 100644 index f8d1fcf6..00000000 --- a/lam/templates/tree/export.php +++ /dev/null @@ -1,132 +0,0 @@ -setOutputFormat($br); - -// prevent script from bailing early for long search -@set_time_limit( 0 ); - -// send the header -if( $save_as_file ) - header( "Content-type: application/download" ); -else - header( "Content-type: text/plain" ); -header( "Content-Disposition: filename=$friendly_rdn.".$exporters[$exporter_id]['extension'] ); -header( "Expires: Mon, 26 Jul 1997 05:00:00 GMT" ); -header( "Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT" ); -header( "Cache-Control: post-check=0, pre-check=0", false ); - -// and export -$exporter->export(); -?> diff --git a/lam/templates/tree/export_form.php b/lam/templates/tree/export_form.php deleted file mode 100644 index dc2119e5..00000000 --- a/lam/templates/tree/export_form.php +++ /dev/null @@ -1,190 +0,0 @@ - 'UNIX (Linux, BSD)', - 'mac' => 'Macintosh', - 'win' => 'Windows' -); - -$available_scopes = array( - 'base' => _('Base (base DN only)'), - 'one' => _('One (one level beneath base)'), - 'sub' => _('Sub (entire subtree)') -); - - -echo $_SESSION['header']; - -echo "LDAP Account Manager\n"; -echo "\n"; -echo "\n"; -?> - - -

-
-
-
- - - - - - - - - - -
-
- - - - - - - - - - - - - - - - - - - - - - -
- $desc ) { - $id = htmlspecialchars( $id ); - $desc = htmlspecialchars( $desc ); ?> - - />
- - -
 />
 
-
-
- - - -
-
- - - $exporter){?> - - /> -
- - - -
-
-
- - $desc ) { - $id = htmlspecialchars( $id ); - $desc = htmlspecialchars( $desc ); - ?> - - />
- - -
-
-
-
- -
-
-
-
- - - -LDAP Account Manager\n"; -echo "\n"; -echo "\n"; - -$dn = $_POST['dn']; -$encoded_dn = rawurlencode( $dn ); -$rdn = get_rdn( $dn ); - -$ds = $_SESSION['ldap']->server; - -echo "\n"; -echo "

" . sprintf( _('Deleting %s'), htmlspecialchars($rdn) ) . "

\n"; -echo "

" . _('Recursive delete progress') . "

"; -echo "

"; -echo "\n"; -flush(); - -// prevent script from bailing early on a long delete -@set_time_limit( 0 ); - -$del_result = pla_rdelete( $dn ); -echo "
\n"; -if( $del_result ) -{ - // kill the DN from the tree browser session variable and - // refresh the tree viewer frame (left_frame) - - if( array_key_exists( 'tree', $_SESSION ) ) - { - $tree = $_SESSION['tree']; - - // does it have children? (it shouldn't, but hey, you never know) - if( isset( $tree[$dn] ) ) - unset( $tree[$dn] ); - - // Get a tree in the session if not already gotten - initialize_session_tree(); - - // search and destroy from the tree sesssion - foreach( $tree as $tree_dn => $subtree ) - foreach( $subtree as $key => $sub_tree_dn ) - if( 0 == strcasecmp( $sub_tree_dn, $dn ) ) - unset( $tree[$tree_dn][$key] ); - } - - $_SESSION['tree'] = $tree; - - ?> - - - - ' . htmlspecialchars( $dn ) . '' ); - -} else { - StatusMessage("ERROR", _('Failed to delete entry %s'), '', array(htmlspecialchars($dn))); -} - -echo ""; - -exit; - - -function pla_rdelete( $dn ) -{ - $children = get_container_contents( $dn ); - global $ds; - $ds = $_SESSION['ldap']->server; - - if( ! is_array( $children ) || count( $children ) == 0 ) { - echo "" . sprintf( _('Deleting %s'), htmlspecialchars( $dn ) ) . "..."; - flush(); - if( @ldap_delete( $ds, $dn ) ) { - echo " " . _('Success') . "
\n"; - return true; - } else { - StatusMessage("ERROR", _('Failed to delete entry %s'), '', array(htmlspecialchars($dn))); - } - } else { - foreach( $children as $child_dn ) { - pla_rdelete( $child_dn ); - } - echo "" . sprintf( _('Deleting %s'), htmlspecialchars( $dn ) ) . "..."; - flush(); - if( @ldap_delete( $ds, $dn ) ) { - echo " " . _('Success') . "
\n"; - return true; - } else { - StatusMessage("ERROR", _('Failed to delete entry %s'), '', array(htmlspecialchars($dn))); - } - } - return false; -} diff --git a/lam/templates/tree/refresh.php b/lam/templates/tree/refresh.php deleted file mode 100644 index ff1bd023..00000000 --- a/lam/templates/tree/refresh.php +++ /dev/null @@ -1,89 +0,0 @@ -get_Suffix('tree'); -$tree_icons[ $base_dn ] = get_icon( $base_dn ); - -// get all the icons and container contents for all expanded entries -if( isset($tree) && is_array( $tree ) ) -{ - foreach( $tree as $dn => $children ) - { - $tree[$dn] = get_container_contents( $dn, 0, '(objectClass=*)' ); - if( is_array( $tree[$dn] ) ) { - foreach( $tree[$dn] as $child_dn ) - $tree_icons[$child_dn] = get_icon( $child_dn ); - sort( $tree[ $dn ] ); - } - } -} -else -{ - header( "Location: tree.php" ); -} - -$_SESSION['tree'] = $tree; -$_SESSION['tree_icons'] = $tree_icons; -session_write_close(); - -header( "Location: tree.php" ); - - -?> diff --git a/lam/templates/tree/templates/creation/custom.php b/lam/templates/tree/templates/creation/custom.php deleted file mode 100644 index 08e49039..00000000 --- a/lam/templates/tree/templates/creation/custom.php +++ /dev/null @@ -1,311 +0,0 @@ - - -

- -
- - - - - - - - - - - - - - - - - - - - - -
:
- -
-
- - "; - exit; - } - - $oclasses = isset( $_POST['object_classes'] ) ? $_POST['object_classes'] : null; - if( count( $oclasses ) == 0 ) { - StatusMessage("ERROR", _('You did not select any object classes for this object. Please go back and do so.'), ''); - echo ""; - exit; - } - $dn = trim( $container ) ? $rdn . ',' . $container : $rdn; - - // incrementally build up the all_attrs and required_attrs arrays - $schema_oclasses = get_schema_objectclasses(); - $required_attrs = array(); - $all_attrs = array(); - foreach( $oclasses as $oclass_name ) { - $oclass = get_schema_objectclass( $oclass_name ); - if( $oclass ) { - $required_attrs = array_merge( $required_attrs, - $oclass->getMustAttrNames( $schema_oclasses ) ); - $all_attrs = array_merge( $all_attrs, - $oclass->getMustAttrNames( $schema_oclasses ), - $oclass->getMayAttrNames( $schema_oclasses ) ); - } - } - - $required_attrs = array_unique( $required_attrs ); - $all_attrs = array_unique( $all_attrs ); - remove_aliases( $required_attrs); - remove_aliases( $all_attrs); - sort( $required_attrs ); - sort( $all_attrs ); - - // if for some reason "ObjectClass" ends up in the list of - // $all_attrs or $required_attrs, remove it! This is a fix - // for bug 927487 - foreach( $all_attrs as $i => $attr_name ) - if( 0 == strcasecmp( $attr_name, 'objectClass' ) ) { - unset( $all_attrs[$i] ); - $all_attrs = array_values( $all_attrs ); - break; - } - - foreach( $required_attrs as $i => $attr_name ) - if( 0 == strcasecmp( $attr_name, 'objectClass' ) ) { - unset( $required_attrs[$i] ); - $required_attrs = array_values( $required_attrs ); - break; - } - - // remove binary attributes and add them to the binary_attrs array - $binary_attrs = array(); - foreach( $all_attrs as $i => $attr_name ) { - if( is_attr_binary( $attr_name ) ) { - unset( $all_attrs[ $i ] ); - $binary_attrs[] = $attr_name; - } - } - - // If we trim any attrs out above, then we will have a gap in the index - // sequence and will get an "undefined index" error below. This prevents - // that from happening. - $all_attrs = array_values( $all_attrs ); - - // add the required attribute based on the RDN provided by the user - // (ie, if the user specifies "cn=Bob" for their RDN, make sure "cn" is - // in the list of required attributes. - $rdn_attr = trim( substr( $rdn, 0, strpos( $rdn, '=' ) ) ); - $rdn_value = trim( substr( $rdn, strpos( $rdn, '=' ) + 1 ) ); - $rdn_value = @pla_explode_dn( $rdn ); - $rdn_value = @explode( '=', $rdn_value[0], 2 ); - $rdn_value = @$rdn_value[1]; - if( in_array( $rdn_attr, $all_attrs ) && ! in_array( $rdn_attr, $required_attrs ) ) - $required_attrs[] = $rdn_attr; - ?> - -

- -
- - - - - - - - - \n"; - } else - - foreach( $required_attrs as $count => $attr ) { ?> - - - - - - - - - - - - - - - - - - - - - - 0 ) { ?> - - - - - - - - - -
(" . _('none') . ")
" - name="required_attrs[]" - value="" size="40" /> -
 
()
-
-
- -
-
- -$attr_display\n"; - } - return $attr_select_html; -} - -/** -* Returns option values. -*/ -function get_binary_attr_select_html( $binary_attrs, $highlight_attr=null ) -{ - $binary_attr_select_html = ""; - if( ! is_array( $binary_attrs ) ) - return null; - if( count( $binary_attrs ) == 0 ) - return null; - foreach( $binary_attrs as $a ) { - $attr_display = htmlspecialchars( $a ); - $binary_attr_select_html .= ""; - $attr1 = get_schema_attribute( $attr_name1 ); - if( null == $attr1 ) - continue; - if( $attr1->isAliasFor( $attr_name2 ) ) { - //echo "* Removing attribute ". $attribute_list[ $k ] . "
"; - unset( $attribute_list[ $k ] ); - } - } - } - $attribute_list = array_values( $attribute_list ); -} -?> - diff --git a/lam/templates/tree/templates/creation/new_ou_template.php b/lam/templates/tree/templates/creation/new_ou_template.php deleted file mode 100644 index 2d039c84..00000000 --- a/lam/templates/tree/templates/creation/new_ou_template.php +++ /dev/null @@ -1,111 +0,0 @@ - - -

- - - - - - - -
- - - - - - - - - - - - - - -
:
: -

-
- - -"; - exit(); - } - - ?> -
- - - - - - - - - - - -
-
-
- - - - -
-
-
- - - diff --git a/lam/templates/tree/templates/templates.inc b/lam/templates/tree/templates/templates.inc deleted file mode 100644 index 38dee423..00000000 --- a/lam/templates/tree/templates/templates.inc +++ /dev/null @@ -1,56 +0,0 @@ - _('Organizational unit'), - 'icon' => '../../graphics/ou.png', - 'handler' => 'new_ou_template.php'); - -$templates[] = array( - 'desc' => _('Custom'), - 'icon' => '../../graphics/object.png', - 'handler' => 'custom.php'); - - -?> \ No newline at end of file diff --git a/lam/templates/tree/tree.php b/lam/templates/tree/tree.php deleted file mode 100644 index 8e8d0321..00000000 --- a/lam/templates/tree/tree.php +++ /dev/null @@ -1,193 +0,0 @@ -, so if I wanted to scroll to - * dc=example,dc=com for server 3, the URL would be: - * tree.php#3_dc%3Dexample%2Cdc%3Dcom - * - * @package lists - * @subpackage tree - * @author David Smith - * @author Roland Gruber - */ - -/** tree functions */ -include_once('../../lib/tree.inc'); -/** access to configuration */ -include_once('../../lib/config.inc'); -/** LDAP functions */ -include_once('../../lib/ldap.inc'); - -// start session -session_save_path("../../sess"); -@session_start(); - -setlanguage(); - -// This allows us to display large sub-trees without running out of time. -@set_time_limit( 0 ); - -// do we not have a tree and tree icons yet? Build a new one. -initialize_session_tree(); - -// get the tree and tree icons. -$tree = $_SESSION['tree']; -$tree_icons = $_SESSION['tree_icons']; - - -echo $_SESSION['header']; - -echo "LDAP Account Manager\n"; -echo "\n"; -echo "\n"; -?> - - - - - - - -
-"; print_r( $tree ); -?> - - - - -'; - - for( $i=0; $i<=$level; $i++ ) { - echo '' . "\n"; - } - - // is this node expanded? (deciding whether to draw "+" or "-") - if( isset( $tree[$dn] ) ) { ?> - - - - - - - - - - + - - - $limit ) - $child_count = $limit . '+'; - } ?> - - - img - - - - - - () - - - - - - 10 ) - draw_create_link( $rdn, $level, $encoded_dn ); - foreach( $tree[$dn] as $dn ) - draw_tree_html( $dn, $level+1 ); - // Always draw the "create new" link at the bottom of the listing - draw_create_link( $rdn, $level, $encoded_dn ); - } -} - -function draw_create_link( $rdn, $level, $encoded_dn ) -{ - // print the "Create New object" link. - $create_html = ""; - $create_href = "create_form.php?container=$encoded_dn"; - $create_html .= ''; - for( $i=0; $i<=$level; $i++ ) { - $create_html .= ''; - } - $create_html .= ''; - $create_html .= '' . _('Create new entry') . ''; - $create_html .= '' . - _('Create new entry') . ''; - $create_html .= ''; - echo $create_html; -} - -?> diff --git a/lam/templates/tree/tree_view.php b/lam/templates/tree/tree_view.php deleted file mode 100644 index a6598329..00000000 --- a/lam/templates/tree/tree_view.php +++ /dev/null @@ -1,85 +0,0 @@ -get_Suffix('tree'); - -// init tree -if (! isset($_SESSION['tree'])) { - initialize_session_tree(); - $tree = $_SESSION['tree']; - $tree_icons = $_SESSION['tree_icons']; - $contents = get_container_contents($dn, 0, '(objectClass=*)'); - usort( $contents, 'pla_compare_dns' ); - $tree[$dn] = $contents; - - foreach( $contents as $c ) - $tree_icons[$c] = get_icon( $c ); - - $_SESSION['tree'] = $tree; - $_SESSION['tree_icons'] = $tree_icons; -} - -echo ""; -echo ""; -echo ""; -echo ""; -echo ""; -echo ""; -echo ""; -echo "LDAP Account Manager"; -echo ""; -echo ""; -echo ""; -echo ""; -echo ""; -echo "This page requires a browser that can show frames!"; -echo ""; -echo ""; - -echo ""; - -?> \ No newline at end of file diff --git a/lam/templates/tree/update.php b/lam/templates/tree/update.php deleted file mode 100644 index 48aadf0f..00000000 --- a/lam/templates/tree/update.php +++ /dev/null @@ -1,109 +0,0 @@ - ''. For example, to - * delete the 'sn' attribute from an entry, the update array would look like this: - * Array ( - * sn => '' - * ) - * - * On success, redirect to edit.php - * On failure, echo an error. - * - * @package lists - * @subpackage tree - * @author David Smith - * @author Roland Gruber - */ - -/** tree functions */ -include_once('../../lib/tree.inc'); -/** access to configuration */ -include_once('../../lib/config.inc'); -/** LDAP functions */ -include_once('../../lib/ldap.inc'); - -// start session -session_save_path("../../sess"); -@session_start(); - -setlanguage(); - -$dn = $_POST['dn']; -$encoded_dn = rawurlencode( $dn ); -$update_array = $_POST['update_array']; - -// check for delete attributes (indicated by the attribute entry appearing like this: attr => '' -foreach( $update_array as $attr => $val ) - if( ! is_array( $val ) ) - if( $val == '' ) { - $update_array[ $attr ] = array(); - } - else { - $update_array[ $attr ] = $val; - } - else { - foreach( $val as $i => $v ) { - $update_array[ $attr ][ $i ] = $v; - } - } - -$ds = $_SESSION['ldap']->server; -$res = @ldap_modify( $ds, $dn, $update_array ); -if( $res ) -{ - $redirect_url = "edit.php?dn=$encoded_dn"; - foreach( $update_array as $attr => $junk ) - $redirect_url .= "&modified_attrs[]=$attr"; - header( "Location: $redirect_url" ); -} -else -{ - echo $_SESSION['header']; - - echo "LDAP Account Manager\n"; - echo "\n"; - echo "\n"; - echo ""; - StatusMessage('ERROR', _("Was unable to modify attribtues from DN: %s."), ldap_error( $ds ), array($dn)); - echo ""; -} - -?> diff --git a/lam/templates/tree/update_confirm.php b/lam/templates/tree/update_confirm.php deleted file mode 100644 index 27399386..00000000 --- a/lam/templates/tree/update_confirm.php +++ /dev/null @@ -1,259 +0,0 @@ -LDAP Account Manager\n"; -echo "\n"; -echo "\n"; -?> - -

-

:

- $old_val ) -{ - // Did the user delete the field? - if( ! isset( $new_values[ $attr ] ) ) { - $update_array[ $attr ] = ''; - } - // did the user change the field? - elseif( $old_val != $new_values[ $attr ] ) { - - $new_val = $new_values[ $attr ]; - - // special case for userPassword attributes - if( 0 == strcasecmp( $attr, 'userPassword' ) && $new_val != '' ) { - $new_val = pwd_hash($new_val, true, $_POST['enc_type'] ); - $password_already_hashed = true; - } - // special case for samba password - else if (( 0 == strcasecmp($attr,'sambaNTPassword') || 0 == strcasecmp($attr,'sambaLMPassword')) && trim($new_val[0]) != '' ){ - if ( 0 == strcasecmp($attr,'sambaNTPassword')) { - $new_val = ntPassword($new_val[0]); - } - else { - $new_val = lmPassword($new_val[0]); - } - } - $update_array[ $attr ] = $new_val; - } -} - -// special case check for a new enc_type for userPassword (not otherwise detected) -if( isset( $_POST['enc_type'] ) && - ! isset( $password_already_hashed ) && - $_POST['enc_type'] != $_POST['old_enc_type'] && - $_POST['enc_type'] != 'clear' && - $_POST['new_values']['userpassword'] != '' ) { - - $new_password = pwd_hash( $_POST['new_values']['userpassword'], true, $_POST['enc_type'] ); - $update_array[ 'userpassword' ] = $new_password; -} - -// strip empty vals from update_array and ensure consecutive indices for each attribute -foreach( $update_array as $attr => $val ) { - if( is_array( $val ) ) { - foreach( $val as $i => $v ) - if( null == $v || 0 == strlen( $v ) ) - unset( $update_array[$attr][$i] ); - $update_array[$attr] = array_values( $update_array[$attr] ); - } -} - -// at this point, the update_array should look like this (example): -// Array ( -// cn => Array( -// [0] => 'Dave', -// [1] => 'Bob' ) -// sn => 'Smith', -// telephoneNumber => '555-1234' ) -// This array should be ready to be passed to ldap_modify() - -?> - 0 ) { ?> - -
-
- -
-
- - - - - - - - - $new_val ) { $counter++ ?> - - - - \n\n"; - } - - ?> - -
- "; - else - if( 0 == strcasecmp( $attr, 'userPassword' ) && ( is_null( get_enc_type( $old_values[ $attr ] ) ) ) ) { - echo preg_replace( '/./', '*', $old_values[ $attr ] ) . "
"; - } - else { - echo nl2br( htmlspecialchars( $old_values[ $attr ] ) ) . "
"; - } - echo "
"; - - // is this a multi-valued attribute? - if( is_array( $new_val ) ) { - foreach( $new_val as $i => $v ) { - if( $v == '' ) { - // remove it from the update array if it's empty - unset( $update_array[ $attr ][ $i ] ); - $update_array[ $attr ] = array_values( $update_array[ $attr ] ); - } else { - echo nl2br( htmlspecialchars( $v ) ) . "
"; - } - } - - // was this a multi-valued attribute deletion? If so, - // fix the $update_array to reflect that per update_confirm.php's - // expectations - if( $update_array[ $attr ] == array( 0 => '' ) || $update_array[ $attr ] == array() ) { - $update_array[ $attr ] = ''; - echo '' . _('[attribute deleted]') . ''; - } - } - else - if( $new_val != '' ) - if( 0 == strcasecmp( $attr, 'userPassword' ) && ( is_null( get_enc_type( $new_values[ $attr ] ) ) ) ) { - echo preg_replace( '/./', '*', $new_val ) . "
"; - } - else { - echo htmlspecialchars( $new_val ) . "
"; - } - else - echo '' . _('[attribute deleted]') . ''; - echo "
-
- - - - - - -
- - - - $val ) { ?> - - $v ) { ?> - - - - - - - - - - - - -
- - -
-
-
- - - - -
- -

-
- - - - - - - diff --git a/lam/tests/conf-main-test.php b/lam/tests/conf-main-test.php deleted file mode 100644 index 856f4b06..00000000 --- a/lam/tests/conf-main-test.php +++ /dev/null @@ -1,70 +0,0 @@ -"; -echo (" Current Values

"); -echo "Password: " . $conf->password . "
\n"; -echo "Default: " . $conf->default . "
\n"; -echo ("

Starting Test...

"); -// now all prferences are loaded -echo ("Loading preferences..."); -$password = $conf->password; -$default = $conf->default; -echo ("done
"); -// next we modify them and save config.cfg -echo ("Changing preferences..."); -$conf->password = "123456"; -$conf->default = "lam"; -$conf->save(); -echo ("done
"); -// at last all preferences are read from config.cfg and compared -echo ("Loading and comparing..."); -$conf = new CfgMain(); -if ($conf->password != "123456") echo ("
Saving password failed!
"); -if ($conf->default != "lam") echo ("
Saving Default failed!
"); -echo ("done
"); -// restore old values -echo ("Restoring old preferences..."); -$conf->password = $password; -$conf->default = $default; -$conf->save(); -echo ("done
"); -// finished -echo ("
Test is complete."); -echo ("

Current Config

"); -echo "Password: " . $conf->password . "
\n"; -echo "Default: " . $conf->default . "
\n"; - -?> diff --git a/lam/tests/conf-test.php b/lam/tests/conf-test.php deleted file mode 100644 index b3ddea78..00000000 --- a/lam/tests/conf-test.php +++ /dev/null @@ -1,125 +0,0 @@ -"; -echo (" Current Config

"); -$conf->printconf(); -echo ("

Starting Test...

"); -// now all preferences are loaded -echo ("Loading preferences..."); -$ServerURL = $conf->get_ServerURL(); -$cachetimeout = $conf->get_cacheTimeout(); -$Passwd = $conf->get_Passwd(); -$Adminstring = $conf->get_Adminstring(); -$Suff_users = $conf->get_Suffix('user'); -$Suff_groups = $conf->get_Suffix('group'); -$Suff_hosts = $conf->get_Suffix('host'); -$Suff_domains = $conf->get_Suffix('domain'); -$userlistAttributes = $conf->get_listAttributes('user'); -$grouplistAttributes = $conf->get_listAttributes('group'); -$hostlistAttributes = $conf->get_listAttributes('host'); -$maxlistentries = $conf->get_maxlistentries(); -$defaultlanguage = $conf->get_defaultlanguage(); -$scriptpath = $conf->get_scriptPath(); -$scriptServer = $conf->get_scriptServer(); -$moduleSettings = $conf->get_moduleSettings(); -echo ("done
"); -// next we modify them and save lam.conf -echo ("Changing preferences..."); -$conf->set_ServerURL("ldap://123.345.678.123:777"); -$conf->set_cacheTimeout("33"); -$conf->set_Passwd("123456abcde"); -$conf->set_Adminstring("uid=test,o=test,dc=org;uid=root,o=test2,c=de"); -$conf->set_Suffix('user', "ou=test,o=test,c=de"); -$conf->set_Suffix('group', "ou=testgrp,o=test,c=de"); -$conf->set_Suffix('host', "ou=testhst,o=test,c=de"); -$conf->set_Suffix('domain', "ou=testdom,o=test,c=de"); -$conf->set_listAttributes("#uid;#cn", 'user'); -$conf->set_listAttributes("#gidNumber;#cn;#memberUID", 'group'); -$conf->set_listAttributes("#cn;#uid;#description", 'host'); -$conf->set_maxlistentries("54"); -$conf->set_defaultlanguage("de_AT:iso639_de:Deutsch (Oesterreich)"); -$conf->set_scriptPath("/var/www/lam/lib/script"); -$conf->set_scriptServer("127.0.0.1"); -$conf->set_moduleSettings(array("test1" => array(11), "test2" => array("abc"), 'test3' => array(3))); -$conf->save(); -echo ("done
"); -// at last all preferences are read from lam.conf and compared -echo ("Loading and comparing..."); -$conf2 = new Config('test'); -if ($conf2->get_ServerURL() != "ldap://123.345.678.123:777") echo ("
Saving ServerURL failed!
"); -if ($conf2->get_cacheTimeout() != "33") echo ("
Saving Cache timeout failed!
"); -if ($conf2->get_Passwd() != "123456abcde") echo ("
Saving password failed!
"); -if ($conf2->get_Adminstring() != "uid=test,o=test,dc=org;uid=root,o=test2,c=de") echo ("
Saving admin string failed!
"); -if ($conf2->get_Suffix('user') != "ou=test,o=test,c=de") echo ("
Saving user suffix failed!
"); -if ($conf2->get_Suffix('group') != "ou=testgrp,o=test,c=de") echo ("
Saving group suffix failed!
"); -if ($conf2->get_Suffix('host') != "ou=testhst,o=test,c=de") echo ("
Saving host suffix failed!
"); -if ($conf2->get_Suffix('domain') != "ou=testdom,o=test,c=de") echo ("
Saving domain suffix failed!
"); -if ($conf2->get_listAttributes('user') != "#uid;#cn") echo ("
Saving userlistAttributes failed!
"); -if ($conf2->get_listAttributes('group') != "#gidNumber;#cn;#memberUID") echo ("
Saving grouplistAttributes failed!
"); -if ($conf2->get_listAttributes('host') != "#cn;#uid;#description") echo ("
Saving hostlistAttributes failed!
"); -if ($conf2->get_maxlistentries() != "54") echo ("
Saving maxlistentries failed!
"); -if ($conf2->get_defaultlanguage() != "de_AT:iso639_de:Deutsch (Oesterreich)") echo ("
Saving default language failed!
"); -if ($conf2->get_scriptPath() != "/var/www/lam/lib/script") echo ("
Saving script path failed!
"); -if ($conf2->get_scriptServer() != "127.0.0.1") echo ("
Saving script server failed!
"); -$msettings = $conf2->get_moduleSettings(); -if (($msettings['test1'][0] != 11) || ($msettings['test2'][0] != 'abc') || ($msettings['test3'][0] != '3')) echo ("
Saving module settings failed!
"); -echo ("done
"); -// restore old values -echo ("Restoring old preferences..."); -$conf2->set_ServerURL($ServerURL); -$conf2->set_cacheTimeout($cachetimeout); -$conf2->set_Passwd($Passwd); -$conf2->set_Adminstring($Adminstring); -$conf2->set_Suffix('user', $Suff_users); -$conf2->set_Suffix('group', $Suff_groups); -$conf2->set_Suffix('host', $Suff_hosts); -$conf2->set_Suffix('domain', $Suff_domains); -$conf2->set_listAttributes($userlistAttributes, 'user'); -$conf2->set_listAttributes($grouplistAttributes, 'group'); -$conf2->set_listAttributes($hostlistAttributes, 'host'); -$conf2->set_maxlistentries($maxlistentries); -$conf2->set_defaultLanguage($defaultlanguage); -$conf2->set_scriptPath($scriptpath); -$conf2->set_scriptServer($scriptServer); -$conf2->set_moduleSettings($moduleSettings); -$conf2->save(); -echo ("done
"); -// finished -echo ("
Test is complete."); -echo ("

Current Config

"); -$conf2->printconf(); - -?> diff --git a/lam/tests/lib-pdf-test.php b/lam/tests/lib-pdf-test.php deleted file mode 100644 index 03080b85..00000000 --- a/lam/tests/lib-pdf-test.php +++ /dev/null @@ -1,73 +0,0 @@ -type = "user"; -$account->general_username = "mamu1"; -$account->general_uidnumber = "501"; -$account->general_surname = "Mustermann"; -$account->general_givenname = "Max"; -$account->general_group = "tg1"; -$account->general_groupadd = array("tg2","tg3"); -$account->general_homedir = "/home/m/mamu1"; -$account->general_shell = array("/bin/bash","/bin/sh"); -$account->unix_password = "secret1"; -$account->unix_password_no = "1"; -$account->smb_flags['N'] = "1"; -array_push($accounts,$account); -$account = new Account(); -$account->type = "user"; -$account->general_username = "mamu1"; -$account->general_uidnumber = "501"; -$account->general_surname = "Mustermann"; -$account->general_givenname = "Max"; -$account->general_group = "tg1"; -$account->general_groupadd = array("tg2","tg3"); -$account->general_homedir = "/home/m/mamu1"; -$account->general_shell = array("/bin/bash"); -$account->unix_password = "secret1"; -$account->unix_password_no = "0"; -$account->smb_useunixpwd = "1"; -array_push($accounts,$account); -$account = new Account(); -$account->type = "user"; -$account->general_username = "mamu1"; -$account->general_uidnumber = "501"; -$account->general_surname = "Mustermann"; -$account->general_givenname = "Max"; -$account->general_group = "tg1"; -$account->general_groupadd = array("tg2","tg3"); -$account->general_homedir = "/home/m/mamu1"; -$account->general_shell = array("/bin/bash","/bin/sh"); -$account->unix_password = "secret1"; -$account->unix_password_no = "0"; -$account->smb_useunixpwd = "0"; -array_push($accounts,$account); - -createUserPDF($accounts); -?> diff --git a/lam/tests/module_pdf-test.php b/lam/tests/module_pdf-test.php deleted file mode 100644 index a911855f..00000000 --- a/lam/tests/module_pdf-test.php +++ /dev/null @@ -1,90 +0,0 @@ -#!/usr/bin/php -q -Test keyTest value")); -//print_r(processLine("

Test p


")); - - $entries = array("Last name" => array("Test keyTest value"),"First name" => array("

Test p

"),"User quotas" => array("User quotasMountpointSoft blockSoft inodeHard blockHard inode","/usr1010015150")); - $structure = getStructure(array("User")); - $structure = $structure['User']; - - $pdf = new LamPDF("User"); - - // Loop over each account and add a new page in the PDF file for it - // Start a new page for each account - $pdf->AddPage(); - - // Get PDF entries for the current account - //$entries = $account->get_pdfEntries($account_type); - - // Now create the PDF file acording to the structure with the submitted values - foreach($structure as $entry) { - // We have a new section to start - $name = $entry['attributes']['NAME']; - if($entry['tag'] == "SECTION" && $entry['type'] == "open") { - if(preg_match("/^\_[a-z]+/",$name)) { - $section_headline = $entries[ucwords(substr($name,1))][0]; - } - else { - $section_headline = $name; - } - $pdf->setFont("arial","B",12); - $pdf->Write(5,"- " . _($section_headline) . ":"); - $pdf->Ln(6); - } - // We have a section to end - elseif($entry['tag'] == "SECTION" && $entry['type'] == "close") { - $pdf->Ln(9); - } - // We have to include a static text. - elseif($entry['tag'] == "TEXT") { - - } - // We have to include an entry from the account - elseif($entry['tag'] == "ENTRY") { - // Get current entry - $entry = $entries[$name]; - - // Loop over all rows of this entry (most of the time this will be just one) - if($entry != null) { - foreach($entry as $line) { - // Substitue XML syntax with valid FPDF methods - $methods = processLine($line); - // Call every method - foreach($methods as $method) { - call_user_method_array ($method[0],$pdf,$method[1]); - } - } - $key = false; - } - } - } - $pdf->Close(); - $pdf->Output('/home/md/workspace/lam/tests/test.pdf','F'); -?> \ No newline at end of file diff --git a/lam/tests/status-test.php b/lam/tests/status-test.php deleted file mode 100644 index ae6a7d68..00000000 --- a/lam/tests/status-test.php +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - - diff --git a/lam/tmp/.htaccess b/lam/tmp/.htaccess deleted file mode 100644 index 5a928f6d..00000000 --- a/lam/tmp/.htaccess +++ /dev/null @@ -1 +0,0 @@ -Options -Indexes

\n"; - echo "" . _("Click here if you are not directed to the next page.") . "\n"; - echo "